From a870338e8e76da51e0db9e09af55ae74dd5a6654 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 22 Mar 2013 20:13:04 +0100 Subject: [PATCH 001/127] fixed problem with older OS X versions --- Mac/English.lproj/NewMessageWindow.xib | 170 ++++++++++++------------- Mac/NewMessageWindow.h | 1 + 2 files changed, 86 insertions(+), 85 deletions(-) diff --git a/Mac/English.lproj/NewMessageWindow.xib b/Mac/English.lproj/NewMessageWindow.xib index c1aacae..633bcf7 100644 --- a/Mac/English.lproj/NewMessageWindow.xib +++ b/Mac/English.lproj/NewMessageWindow.xib @@ -2,13 +2,13 @@ 1080 - 12C60 - 2844 - 1187.34 - 625.00 + 12D78 + 3084 + 1187.37 + 626.00 com.apple.InterfaceBuilder.CocoaPlugin - 2844 + 3084 YES @@ -99,7 +99,7 @@ {{215, 3}, {38, 17}} - + YES 68157504 @@ -158,35 +158,6 @@ NO - - - 289 - {{258, 2}, {38, 16}} - - - - _NS:9 - YES - - -2080374784 - 134217728 - ⌘↩ - - LucidaGrande-Bold - 11 - 3357 - - _NS:9 - - -2033434624 - 268435623 - - DQ - 400 - 75 - - NO - 292 @@ -216,6 +187,31 @@ NO + + + 289 + {{258, 0}, {38, 19}} + + + + _NS:9 + YES + + -2080374784 + 134217728 + ⌘↩ + + _NS:9 + + -1232846848 + 268435629 + + DQ + 400 + 75 + + NO + {299, 113} @@ -271,7 +267,11 @@ 67108864 134217728 - + + LucidaGrande-Bold + 11 + 3357 + _NS:9 -2030813184 @@ -407,14 +407,6 @@ A 100068 - - - sendPostButtonPressed: - - - - 100070 - togglePrivate: @@ -439,6 +431,14 @@ A 100083 + + + sendPostButtonPressed: + + + + 100088 + delegate @@ -496,9 +496,9 @@ A YES - + @@ -522,34 +522,6 @@ A - - 100036 - - - YES - - - - - - 100037 - - - - - 100039 - - - YES - - - - - - 100040 - - - 100041 @@ -580,18 +552,37 @@ A - 100065 - + 100081 + + + + + 100036 + YES - + - 100066 - - + 100037 + + + + + 100039 + + + YES + + + + + + 100040 + + 100074 @@ -608,9 +599,18 @@ A - 100081 - - + 100086 + + + YES + + + + + + 100087 + + @@ -631,11 +631,11 @@ A 100043.IBPluginDependency 100059.IBPluginDependency 100060.IBPluginDependency - 100065.IBPluginDependency - 100066.IBPluginDependency 100074.IBPluginDependency 100075.IBPluginDependency 100081.IBPluginDependency + 100086.IBPluginDependency + 100087.IBPluginDependency 5.IBPluginDependency 5.IBWindowTemplateEditedContentRect 6.IBPluginDependency @@ -677,7 +677,7 @@ A - 100083 + 100088 diff --git a/Mac/NewMessageWindow.h b/Mac/NewMessageWindow.h index b8893ab..fe8a5a4 100644 --- a/Mac/NewMessageWindow.h +++ b/Mac/NewMessageWindow.h @@ -35,6 +35,7 @@ @property (retain, nonatomic) NSString *imageFilePath; @property (assign) IBOutlet NSButton *togglePrivateButton; +- (IBAction)sendPostButtonPressed:(id)sender; - (IBAction)sendPost:(NSControl *)control; - (void)inReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string; - (void)withString:(NSString *)aString; From 9a1597f66e1e4eeaeb696694c8ffae29b8bf9a61 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 22 Mar 2013 20:15:34 +0100 Subject: [PATCH 002/127] version bump --- Mac/Bungloo-Info.plist | 4 ++-- Mac/Bungloo.xcodeproj/project.pbxproj | 4 ++-- Mac/publish/Appcast.xml | 10 +++++----- Mac/publish/ReleaseNotes.html | 12 ++++++++++++ 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Mac/Bungloo-Info.plist b/Mac/Bungloo-Info.plist index c72ed76..ec2af2f 100644 --- a/Mac/Bungloo-Info.plist +++ b/Mac/Bungloo-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.2.0 + 1.2.2 CFBundleSignature ???? CFBundleURLTypes @@ -57,7 +57,7 @@ CFBundleVersion - 1.2.0 + 1.2.2 LSApplicationCategoryType public.app-category.social-networking LSMinimumSystemVersion diff --git a/Mac/Bungloo.xcodeproj/project.pbxproj b/Mac/Bungloo.xcodeproj/project.pbxproj index b83b54a..42d4390 100644 --- a/Mac/Bungloo.xcodeproj/project.pbxproj +++ b/Mac/Bungloo.xcodeproj/project.pbxproj @@ -13,8 +13,8 @@ 1F132C791666CD9700E4E661 /* TB_SendTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F132C781666CD9700E4E661 /* TB_SendTemplate.png */; }; 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */; }; 1F1C80F916482A250010B409 /* WebKit in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C80F816482A250010B409 /* WebKit */; }; - 1F2D79BD165E8C6B000E8428 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F2D79BC165E8C6B000E8428 /* CoreLocation.framework */; }; 1F303BE31660752700891D71 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F303BE21660752700891D71 /* QuickLook.framework */; }; + 1F331B9C16FCCA3C0040A761 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F2D79BC165E8C6B000E8428 /* CoreLocation.framework */; }; 1F3F129E164F202000C7C983 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 1F3F129D164F202000C7C983 /* dsa_pub.pem */; }; 1F618ECA12DB5E6100E500D9 /* PostModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F618EC912DB5E6100E500D9 /* PostModel.m */; }; 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F70619E1178FBB300C85707 /* Carbon.framework */; }; @@ -103,9 +103,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1F331B9C16FCCA3C0040A761 /* CoreLocation.framework in Frameworks */, 1F303BE31660752700891D71 /* QuickLook.framework in Frameworks */, 6B68359B166015C4004F4732 /* Security.framework in Frameworks */, - 1F2D79BD165E8C6B000E8428 /* CoreLocation.framework in Frameworks */, 1FDEF722164EFE9100F927F3 /* Growl.framework in Frameworks */, 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */, 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */, diff --git a/Mac/publish/Appcast.xml b/Mac/publish/Appcast.xml index 548fc83..b7d6bfe 100755 --- a/Mac/publish/Appcast.xml +++ b/Mac/publish/Appcast.xml @@ -6,15 +6,15 @@ Most recent changes with links to updates. en - Version 1.1.0 + Version 1.2.1 10.5.0 http://jabs.nu/bungloo/download/ReleaseNotes.html - Mon, 18 Feb 2013 11:33:48 +0100 + Mon, 18 Mar 2013 11:57:03 +0100 + sparkle:dsaSignature="MC0CFAyM/L2BZe52Ox+ebZscEt0WJA01AhUAiqZ/ciqInGkXf1oHJxBLrW8nIO8=" /> diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index 4934529..ed68bb1 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -13,6 +13,18 @@ +

Bungloo 1.2.2

+ +

Fixed crash on Snow Leopard while opening new post window

+ +
+ +

Bungloo 1.2.1

+ +

Fixed problems with case sensitive file systems, thanks to ^http://ck.kennt-wayne.de

+ +
+

Bungloo 1.2.0

Inline video for YouTube and Vimeo + inline sound for SoundCloud, sadly some buttons in the widgets still don't work but you can watch the videos and hear the music :)

From 289500dead37010146c42af19931ebefcc774258 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 27 Mar 2013 09:09:03 +0100 Subject: [PATCH 003/127] version bump --- Mac/publish/Appcast.xml | 10 +++++----- Mac/publish/ReleaseNotes.html | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Mac/publish/Appcast.xml b/Mac/publish/Appcast.xml index b7d6bfe..a0104a8 100755 --- a/Mac/publish/Appcast.xml +++ b/Mac/publish/Appcast.xml @@ -6,15 +6,15 @@ Most recent changes with links to updates. en - Version 1.2.1 + Version 1.2.2 10.5.0 http://jabs.nu/bungloo/download/ReleaseNotes.html - Mon, 18 Mar 2013 11:57:03 +0100 + Fri, 22 Mar 2013 20:21:06 +0100 + sparkle:dsaSignature="MCwCFGaCOXD3xZe76sZhwjvNbUW4BvXJAhRofCc2yo+02Jm5YNwjM5p7CJlWcg==" /> diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index ed68bb1..6327a16 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -16,6 +16,7 @@

Bungloo 1.2.2

Fixed crash on Snow Leopard while opening new post window

+

Map is not shown anymore when coordinates are empty


From b9563e1ebb9110f953216616bc6b1f9fa80d9602 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 27 Mar 2013 10:22:48 +0100 Subject: [PATCH 004/127] changed mac version to 1 window --- Mac/Bungloo-Info.plist | 4 +- Mac/Controller.h | 12 ---- Mac/Controller.m | 117 ++++++++-------------------------- Mac/English.lproj/Credits.rtf | 4 +- Mac/ViewDelegate.h | 12 +--- Mac/ViewDelegate.m | 32 ++-------- WebKit/css/default.css | 2 +- WebKit/scripts/helper/Core.js | 1 - 8 files changed, 39 insertions(+), 145 deletions(-) diff --git a/Mac/Bungloo-Info.plist b/Mac/Bungloo-Info.plist index c72ed76..87a0d8c 100644 --- a/Mac/Bungloo-Info.plist +++ b/Mac/Bungloo-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.2.0 + 2.0.0 CFBundleSignature ???? CFBundleURLTypes @@ -57,7 +57,7 @@ CFBundleVersion - 1.2.0 + 2.0.0 LSApplicationCategoryType public.app-category.social-networking LSMinimumSystemVersion diff --git a/Mac/Controller.h b/Mac/Controller.h index 08fc2e2..b06e762 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -19,12 +19,6 @@ @interface Controller : NSObject { IBOutlet WebView *timelineView; IBOutlet NSWindow *timelineViewWindow; - IBOutlet WebView *mentionsView; - IBOutlet NSWindow *mentionsViewWindow; - IBOutlet WebView *conversationView; - IBOutlet NSWindow *conversationViewWindow; - WebView *profileView; - NSWindow *profileViewWindow; NSPanel *openProfileWindow; NSWindow *loginViewWindow; NSTextField *loginEntityTextField; @@ -40,12 +34,6 @@ @property (assign) IBOutlet WebView *timelineView; @property (assign) IBOutlet NSWindow *timelineViewWindow; -@property (assign) IBOutlet WebView *mentionsView; -@property (assign) IBOutlet NSWindow *mentionsViewWindow; -@property (assign) IBOutlet WebView *conversationView; -@property (assign) IBOutlet NSWindow *conversationViewWindow; -@property (assign) IBOutlet WebView *profileView; -@property (assign) IBOutlet NSWindow *profileViewWindow; @property (assign) IBOutlet NSPanel *openProfileWindow; @property (assign) IBOutlet NSWindow *loginViewWindow; diff --git a/Mac/Controller.m b/Mac/Controller.m index ed36384..0cf5147 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -17,7 +17,7 @@ @synthesize loginViewWindow; @synthesize loginEntityTextField; @synthesize loginActivityIndicator; -@synthesize timelineView, timelineViewWindow, mentionsView, mentionsViewWindow, conversationView, conversationViewWindow, profileView, profileViewWindow; +@synthesize timelineView, timelineViewWindow; @synthesize globalHotkeyMenuItem, viewDelegate; @synthesize logoLayer; @synthesize oauthView, accessToken; @@ -25,7 +25,6 @@ - (void)awakeFromNib { [timelineViewWindow setExcludedFromWindowsMenu:YES]; - [mentionsViewWindow setExcludedFromWindowsMenu:YES]; [self initHotKeys]; @@ -70,7 +69,6 @@ if (forceLogin || ![accessToken stringForKey:@"user_access_token"] || ![accessToken secret]) { [timelineViewWindow performClose:self]; - [mentionsViewWindow performClose:self]; [self.loginViewWindow makeKeyAndOrderFront:self]; [self initOauth]; } else { @@ -125,47 +123,11 @@ [timelineView setPolicyDelegate:viewDelegate]; [timelineView setUIDelegate:viewDelegate]; [[timelineView windowScriptObject] setValue:self forKey:@"controller"]; - //WebPreferences* prefs = [timelineView preferences]; - //[prefs _setLocalStorageDatabasePath:localStoragePath]; - //[prefs setLocalStorageEnabled:YES]; - - viewDelegate.mentionsView = mentionsView; - [[mentionsView mainFrame] loadHTMLString:index_string baseURL:url]; - [mentionsView setFrameLoadDelegate:viewDelegate]; - [mentionsView setPolicyDelegate:viewDelegate]; - [mentionsView setUIDelegate:viewDelegate]; - [[mentionsView windowScriptObject] setValue:self forKey:@"controller"]; - //prefs = [mentionsView preferences]; - //[prefs _setLocalStorageDatabasePath:localStoragePath]; - //[prefs setLocalStorageEnabled:YES]; - - viewDelegate.conversationView = conversationView; - [[conversationView mainFrame] loadHTMLString:index_string baseURL:url]; - [conversationView setFrameLoadDelegate:viewDelegate]; - [conversationView setPolicyDelegate:viewDelegate]; - [conversationView setUIDelegate:viewDelegate]; - [[conversationView windowScriptObject] setValue:self forKey:@"controller"]; - //prefs = [conversationView preferences]; - //[prefs _setLocalStorageDatabasePath:localStoragePath]; - //[prefs setLocalStorageEnabled:YES]; - - viewDelegate.profileView = profileView; - [[profileView mainFrame] loadHTMLString:index_string baseURL:url]; - [profileView setFrameLoadDelegate:viewDelegate]; - [profileView setPolicyDelegate:viewDelegate]; - [profileView setUIDelegate:viewDelegate]; - [[profileView windowScriptObject] setValue:self forKey:@"controller"]; - //prefs = [profileView preferences]; - //[prefs _setLocalStorageDatabasePath:localStoragePath]; - //[prefs setLocalStorageEnabled:YES]; } else { [timelineView stringByEvaluatingJavaScriptFromString:@"start('timeline')"]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"start('mentions')"]; - [conversationView stringByEvaluatingJavaScriptFromString:@"start('conversation')"]; - [profileView stringByEvaluatingJavaScriptFromString:@"start('profile')"]; } } @@ -312,7 +274,7 @@ if (range.length > 0) { - [oauthView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"bungloo_instance.requestAccessToken('%@')", aString]]; + [oauthView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"bungloo.oauth.requestAccessToken('%@')", aString]]; } else { @@ -353,7 +315,7 @@ isPrivate = @"true"; } - NSString *func = [NSString stringWithFormat:@"bungloo_instance.sendNewMessage(\"%@\", \"%@\", \"%@\", %@, %@, %@)", + NSString *func = [NSString stringWithFormat:@"bungloo.timeline.sendNewMessage(\"%@\", \"%@\", \"%@\", %@, %@, %@)", text, post.inReplyTostatusId, post.inReplyToEntity, @@ -378,17 +340,17 @@ - (void)unreadMentions:(int)count { - if (![mentionsViewWindow isVisible] && count > 0) + if (count > 0) { - [timelineViewWindow setTitle:[NSString stringWithFormat:@"Bungloo (^%i)", count]]; [[[NSApplication sharedApplication] dockTile] setBadgeLabel:[NSString stringWithFormat:@"%i", count]]; } else { - [timelineViewWindow setTitle:[NSString stringWithFormat:@"Bungloo"]]; [[[NSApplication sharedApplication] dockTile] setBadgeLabel:nil]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.unread_mentions = 0;"]; } + + NSString *script = [NSString stringWithFormat:@"bungloo.sidebar.setUnreadMentions(%i);", count]; + [timelineView stringByEvaluatingJavaScriptFromString:script]; } - (void)notificateUserAboutMention:(NSString *)text fromName:(NSString *)name withPostId:(NSString *)postId andEntity:(NSString *)entity @@ -414,35 +376,21 @@ { NSString *entity = [self.showProfileTextField stringValue]; if ([entity rangeOfString:@"."].location != NSNotFound && ([entity hasPrefix:@"http://"] || [entity hasPrefix:@"https://"])) { - NSString *func = [NSString stringWithFormat:@"bungloo_instance.showProfileForEntity('%@')", entity]; - [profileView stringByEvaluatingJavaScriptFromString:func]; - [profileViewWindow makeKeyAndOrderFront:self]; - [openProfileWindow performClose:self]; + NSString *func = [NSString stringWithFormat:@"bungloo.sidebar.onEntityProfile(); bungloo.entityProfile.showProfileForEntity('%@')", entity]; + [timelineView stringByEvaluatingJavaScriptFromString:func]; } } - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity { - NSString *fun = [NSString stringWithFormat:@"bungloo_instance.postDeleted('%@', '%@')", postId, entity]; + NSString *f = [NSString stringWithFormat:@".postDeleted('%@', '%@');", postId, entity]; + NSMutableString *fun = [NSMutableString stringWithFormat:@"bungloo.timeline%@", f]; + [fun appendFormat:@"bungloo.mentions%@", f]; + [fun appendFormat:@"bungloo.conversation%@", f]; + [fun appendFormat:@"bungloo.entityProfile%@", f]; [timelineView stringByEvaluatingJavaScriptFromString:fun]; - [mentionsView stringByEvaluatingJavaScriptFromString:fun]; - [conversationView stringByEvaluatingJavaScriptFromString:fun]; - [profileView stringByEvaluatingJavaScriptFromString:fun]; } - -/* -- (void)storeAccessToken:(NSString *)_accessToken secret:(NSString *)secret userId:(NSString *)userId andScreenName:(NSString *)screenName -{ - self.accessToken.accessToken = _accessToken; - self.accessToken.secret = secret; - self.accessToken.userId = userId; - self.accessToken.screenName = screenName; - [timelineViewWindow makeKeyAndOrderFront:self]; - - [[NSNotificationCenter defaultCenter] postNotificationName:@"authentificationSucceded" object:nil]; -}*/ - - (void)loggedIn { [loginActivityIndicator stopAnimation:self]; @@ -456,58 +404,47 @@ if ([[loginEntityTextField stringValue] length] > 0) { [[loginEntityTextField window] makeFirstResponder:nil]; [loginActivityIndicator startAnimation:self]; - [oauthView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.authenticate();"]; + [oauthView stringByEvaluatingJavaScriptFromString:@"bungloo.oauth.authenticate();"]; } } - (IBAction)logout:(id)sender { - [oauthView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.logout();"]; + [oauthView stringByEvaluatingJavaScriptFromString:@"bungloo.oauth.logout();"]; [timelineViewWindow performClose:self]; - [mentionsViewWindow performClose:self]; - [conversationViewWindow performClose:self]; - [profileViewWindow performClose:self]; [self.loginViewWindow makeKeyAndOrderFront:self]; - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.logout();"]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.logout();"]; + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.logout();"]; } // Mentions window has been visible - (void)windowDidBecomeKey:(NSNotification *)notification { - if ([notification object] == mentionsViewWindow) - { - //[self unreadMentions:0]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.setAllMentionsRead();"]; - } + } - (void)getPostUpdates:(id)sender { - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.getNewData(true)"]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.getNewData(true)"]; + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.timeline.getNewData(true)"]; + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.mentions.getNewData(true)"]; } - (IBAction)showConversationForPostId:(NSString *)postId andEntity:(NSString *)entity { - NSString *js = [NSString stringWithFormat:@"bungloo_instance.showStatus('%@', '%@');", postId, entity]; - [conversationView stringByEvaluatingJavaScriptFromString:js]; - [conversationViewWindow makeKeyAndOrderFront:self]; - [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; + NSString *js = [NSString stringWithFormat:@"bungloo.sidebar.onConversation(); bungloo.conversation.showStatus('%@', '%@');", postId, entity]; + [timelineView stringByEvaluatingJavaScriptFromString:js]; } - (IBAction)clearCache:(id)sender { - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.cache.clear()"]; + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.timeline.cache.clear()"]; } - (IBAction)showProfileForEntity:(NSString *)entity { - NSString *js = [NSString stringWithFormat:@"bungloo_instance.showProfileForEntity('%@');", entity]; - [profileView stringByEvaluatingJavaScriptFromString:js]; - [profileViewWindow makeKeyAndOrderFront:self]; + NSString *js = [NSString stringWithFormat:@"bungloo.sidebar.onEntityProfile(); bungloo.entityProfile.showProfileForEntity('%@');", entity]; + [timelineView stringByEvaluatingJavaScriptFromString:js]; } - (void)growlNotificationWasClicked:(id)clickContext @@ -518,8 +455,8 @@ [self showConversationForPostId:postId andEntity:entity]; - NSString *js = [NSString stringWithFormat:@"bungloo_instance.mentionRead('%@', '%@');", postId, entity]; - [mentionsView stringByEvaluatingJavaScriptFromString:js]; + NSString *js = [NSString stringWithFormat:@"bungloo.sidebar.onMentions(); bungloo.mentions.mentionRead('%@', '%@');", postId, entity]; + [timelineView stringByEvaluatingJavaScriptFromString:js]; } - (NSString *) applicationNameForGrowl diff --git a/Mac/English.lproj/Credits.rtf b/Mac/English.lproj/Credits.rtf index 2ee605e..e023b0c 100644 --- a/Mac/English.lproj/Credits.rtf +++ b/Mac/English.lproj/Credits.rtf @@ -1,4 +1,4 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340 +{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \viewkind0 @@ -16,7 +16,7 @@ \b Documentation: \b0 \ - http://github.com/jeena/bungloo/wiki\ + http://jabs.nu/bungloo\ \ \b With special thanks to: diff --git a/Mac/ViewDelegate.h b/Mac/ViewDelegate.h index 7e3cb80..689b094 100644 --- a/Mac/ViewDelegate.h +++ b/Mac/ViewDelegate.h @@ -11,17 +11,9 @@ #import "Constants.h" @interface ViewDelegate : NSObject { - WebView *timelineView; - WebView *mentionsView; - WebView *conversationView; - WebView *profileView; - WebView *oauthView; + WebView *timelineView; WebView *oauthView; } -@property (nonatomic, assign) WebView *timelineView; -@property (nonatomic, assign) WebView *mentionsView; -@property (nonatomic, assign) WebView *conversationView; -@property (nonatomic, assign) WebView *profileView; -@property (nonatomic, assign) WebView *oauthView; +@property (nonatomic, assign) WebView *timelineView;@property (nonatomic, assign) WebView *oauthView; @end diff --git a/Mac/ViewDelegate.m b/Mac/ViewDelegate.m index c49b7b2..c10a6ad 100644 --- a/Mac/ViewDelegate.m +++ b/Mac/ViewDelegate.m @@ -11,18 +11,15 @@ @implementation ViewDelegate -@synthesize timelineView, mentionsView, conversationView, profileView, oauthView; +@synthesize timelineView, oauthView; - (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)message { if (![message isKindOfClass:[NSDictionary class]]) return; NSString *viewName = @"TimelineView"; - if (sender == mentionsView) viewName = @"MentionsView"; - if (sender == conversationView) viewName = @"ConversationView"; if (sender == oauthView) viewName = @"OauthView"; - if (sender == profileView) viewName = @"ProfileView"; - + NSLog(@"js<%@>: %@:%@: %@", viewName, [[message objectForKey:@"sourceURL"] lastPathComponent], @@ -33,8 +30,6 @@ - (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { NSString *viewName = @"TimelineView"; - if (sender == mentionsView) viewName = @"MentionsView"; - if (sender == conversationView) viewName = @"ConversationView"; if (sender == oauthView) viewName = @"OauthView"; NSLog(@"jsa<%@>: %@", viewName, message); @@ -52,7 +47,7 @@ - (void)webView:(WebView *)sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id )listener { - NSArray *frames = [NSArray arrayWithObjects:timelineView.mainFrame, mentionsView.mainFrame, conversationView.mainFrame, oauthView.mainFrame, profileView.mainFrame, nil]; + NSArray *frames = [NSArray arrayWithObjects:timelineView.mainFrame, oauthView.mainFrame, nil]; // If it is clicked from one of the views the open default browser if ([frames indexOfObject:frame] != NSNotFound) { @@ -85,25 +80,9 @@ [oauthView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('oauth') }"]; - } else if(sender == conversationView) { - - [conversationView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('conversation') }"]; - - } else if(sender == profileView) { - - [profileView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('profile') }"]; - } else { - NSString *action = @"timeline"; - NSString *delay = @"1"; - - if (sender == mentionsView) { - action = @"mentions"; - delay = @"1000"; - } - - [sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"function HostAppGo() { start('%@') }", action]]; + [sender stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('timeline') }"]; } } @@ -126,8 +105,7 @@ } - (void)reload:(id)sender { - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.getNewData();"]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"bungloo_instance.getNewData();"]; + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.timeline.getNewData();"]; } - (NSString *)pluginURL diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 4d94b0f..4dd168c 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -236,7 +236,7 @@ li:hover .from { li:first-child:hover .from { top: auto; - bottom: -1.9em; + bottom: -1.8em; z-index: 2; -webkit-border-top-left-radius: 0; -webkit-border-top-right-radius: 0; diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 27a3f54..c3c3147 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -122,7 +122,6 @@ function(jQuery, Paths, URI, HostApp, Cache) { head.appendChild(reposted_by) - var message = document.createElement("p"); message.className = "message"; data.appendChild(message); From c05f9dea8c9326f73d0c64451cb18b131778c2c1 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 27 Mar 2013 11:37:30 +0100 Subject: [PATCH 005/127] changed version to 1.3.0 --- Linux/deploy/debian/changelog | 2 +- Linux/deploy/deploy.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Linux/deploy/debian/changelog b/Linux/deploy/debian/changelog index 2ed9a7d..c52acfb 100644 --- a/Linux/deploy/debian/changelog +++ b/Linux/deploy/debian/changelog @@ -1,4 +1,4 @@ -bungloo (2.0.0) quantal; urgency=low +bungloo (1.3.0) quantal; urgency=low [ Jeena Paradies ] * Changed to one window diff --git a/Linux/deploy/deploy.sh b/Linux/deploy/deploy.sh index 684e274..b902101 100755 --- a/Linux/deploy/deploy.sh +++ b/Linux/deploy/deploy.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION="2.0.0" +VERSION="1.3.0" DEPLOYPATH="bungloo-${VERSION}" LINUXPATH=".." SHAREDPATH="../.." From e1f04e8d6a30cd14fccd7e68ac812fe93261cf7b Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 27 Mar 2013 11:40:34 +0100 Subject: [PATCH 006/127] changed cmd-f to cmd-5 and version --- Mac/Bungloo-Info.plist | 4 +- Mac/Controller.h | 8 + Mac/Controller.m | 39 +- Mac/English.lproj/MainMenu.xib | 757 ++++++++++----------------------- Mac/publish/ReleaseNotes.html | 6 + 5 files changed, 265 insertions(+), 549 deletions(-) diff --git a/Mac/Bungloo-Info.plist b/Mac/Bungloo-Info.plist index 87a0d8c..6f11cbf 100644 --- a/Mac/Bungloo-Info.plist +++ b/Mac/Bungloo-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.0.0 + 1.3.0 CFBundleSignature ???? CFBundleURLTypes @@ -57,7 +57,7 @@ CFBundleVersion - 2.0.0 + 1.3.0 LSApplicationCategoryType public.app-category.social-networking LSMinimumSystemVersion diff --git a/Mac/Controller.h b/Mac/Controller.h index b06e762..dab9b67 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -60,7 +60,15 @@ - (void)notificateUserAboutMention:(NSString *)text fromName:(NSString *)name withPostId:(NSString *)postId andEntity:(NSString *)entity; - (void)openURL:(NSString *)url; + +- (IBAction)showTimeline:(id)sender; +- (IBAction)showMentions:(id)sender; +- (IBAction)showConversation:(id)sender; - (IBAction)showProfile:(id)sender; +- (IBAction)showSearch:(id)sender; +- (IBAction)showAbout:(id)sender; + + - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity; - (void)setString:(NSString *)string forKey:(NSString *)aKey; diff --git a/Mac/Controller.m b/Mac/Controller.m index 0cf5147..4a4c820 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -372,13 +372,42 @@ [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; } +- (IBAction)showTimeline:(id)sender +{ + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onTimeline();"]; +} + +- (IBAction)showMentions:(id)sender +{ + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onMentions();"]; +} + +- (IBAction)showConversation:(id)sender +{ + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onConversation();"]; +} + - (IBAction)showProfile:(id)sender { - NSString *entity = [self.showProfileTextField stringValue]; - if ([entity rangeOfString:@"."].location != NSNotFound && ([entity hasPrefix:@"http://"] || [entity hasPrefix:@"https://"])) { - NSString *func = [NSString stringWithFormat:@"bungloo.sidebar.onEntityProfile(); bungloo.entityProfile.showProfileForEntity('%@')", entity]; - [timelineView stringByEvaluatingJavaScriptFromString:func]; - } + if ([sender isKindOfClass:[NSMenuItem class]]) { + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onEntityProfile();"]; + } else { + NSString *entity = [self.showProfileTextField stringValue]; + if ([entity rangeOfString:@"."].location != NSNotFound && ([entity hasPrefix:@"http://"] || [entity hasPrefix:@"https://"])) { + NSString *func = [NSString stringWithFormat:@"bungloo.sidebar.onEntityProfile(); bungloo.entityProfile.showProfileForEntity('%@')", entity]; + [timelineView stringByEvaluatingJavaScriptFromString:func]; + } + } +} + +- (IBAction)showSearch:(id)sender +{ + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onSearch();"]; +} + +- (IBAction)showAbout:(id)sender +{ + [self openURL:@"http://jabs.nu/bungloo"]; } - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index 5a0bacb..77f11a0 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -2,10 +2,10 @@ 1080 - 12C60 + 12D78 3084 - 1187.34 - 625.00 + 1187.37 + 626.00 YES @@ -686,19 +686,46 @@ View YES - + - Show Toolbar - t - 1572864 + Timeline + 1 + 1048576 2147483647 - + - Customize Toolbar… - + Mentions + 2 + 1048576 + 2147483647 + + + + + + Conversation + 3 + 1048576 + 2147483647 + + + + + + Profile + 4 + 1048576 + 2147483647 + + + + + + Search + 5 1048576 2147483647 @@ -746,34 +773,6 @@ - - - Timeline - 1 - 1048576 - 2147483647 - - - - - - Mentions - 2 - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - Bring All to Front @@ -798,11 +797,10 @@ Help YES - + - Bungloo - ? - 1048576 + About Bungloo + 2147483647 @@ -891,7 +889,7 @@ - {{0, 0}, {1920, 1178}} + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} bungloo YES @@ -899,200 +897,6 @@ SUUpdater - - 15 - 2 - {{1077, 328}, {376, 581}} - 1685586944 - Mentions - NSWindow - - - - - 256 - - YES - - - 274 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - - {376, 581} - - - - - - - 12 - - YES - - YES - 12WebKitJavaEnabled - 12WebKitJavaScriptCanOpenWindowsAutomatically - 12WebKitPluginsEnabled - - - YES - - - - - - - NO - YES - - - {376, 581} - - - - - {{0, 0}, {1920, 1178}} - {10000000000000, 10000000000000} - mentions - YES - - - 15 - 2 - {{1292, 328}, {376, 581}} - 1685586944 - Conversation - NSWindow - - - - - 256 - - YES - - - 274 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - - {376, 581} - - - - - - - NO - YES - - - {376, 581} - - - - - {{0, 0}, {1920, 1178}} - {10000000000000, 10000000000000} - conversation - YES - - - 15 - 2 - {{1292, 328}, {376, 581}} - 1685586944 - Profile - NSWindow - - - - - 256 - - YES - - - 274 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - - {376, 581} - - - - - - - NO - YES - - - {376, 581} - - - - - {{0, 0}, {1920, 1178}} - {10000000000000, 10000000000000} - profile - YES - 7 2 @@ -1103,7 +907,7 @@ - + 256 YES @@ -1124,6 +928,7 @@ {{20, 20}, {146, 146}} + YES @@ -1146,6 +951,7 @@ 268 {{194, 82}, {266, 22}} + _NS:9 YES @@ -1192,6 +998,7 @@ 268 {{191, 112}, {163, 17}} + _NS:1535 YES @@ -1225,6 +1032,8 @@ 268 {{391, 46}, {75, 32}} + + _NS:9 YES @@ -1248,6 +1057,7 @@ 268 {{373, 55}, {16, 16}} + _NS:945 28938 @@ -1255,10 +1065,12 @@ {480, 186} + + _NS:20 - {{0, 0}, {1920, 1178}} + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} preferences YES @@ -1276,7 +1088,7 @@ - + 256 YES @@ -1285,6 +1097,7 @@ 268 {{17, 79}, {192, 17}} + _NS:1535 YES @@ -1305,6 +1118,7 @@ 268 {{20, 49}, {333, 22}} + _NS:9 YES @@ -1327,6 +1141,8 @@ 268 {{285, 13}, {74, 32}} + + _NS:9 YES @@ -1347,10 +1163,12 @@ {373, 116} + + _NS:21 - {{0, 0}, {1920, 1178}} + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} NO @@ -1534,22 +1352,6 @@ 357 - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - hide: @@ -1670,14 +1472,6 @@ 471 - - - showHelp: - - - - 494 - newDocument: @@ -1718,14 +1512,6 @@ 553 - - - mentionsView - - - - 562 - timelineViewWindow @@ -1734,14 +1520,6 @@ 565 - - - mentionsViewWindow - - - - 566 - globalHotkeyMenuItem @@ -1782,22 +1560,6 @@ 622 - - - conversationView - - - - 632 - - - - conversationViewWindow - - - - 633 - loginEntityTextField @@ -1806,22 +1568,6 @@ 643 - - - profileView - - - - 662 - - - - profileViewWindow - - - - 663 - login: @@ -1864,11 +1610,51 @@ - makeKeyAndOrderFront: - - + showProfile: + + - 656 + 690 + + + + showTimeline: + + + + 691 + + + + showMentions: + + + + 692 + + + + showConversation: + + + + 693 + + + + showSearch: + + + + 694 + + + + showAbout: + + + + 696 @@ -1878,22 +1664,6 @@ 543 - - - delegate - - - - 569 - - - - makeKeyAndOrderFront: - - - - 655 - makeKeyAndOrderFront: @@ -1918,22 +1688,6 @@ 619 - - - delegate - - - - 631 - - - - delegate - - - - 661 - makeKeyAndOrderFront: @@ -2283,21 +2037,14 @@ YES - - + + + + + - - 297 - - - - - 298 - - - 211 @@ -2460,15 +2207,10 @@ YES - + - - 493 - - - 533 @@ -2509,30 +2251,6 @@ - - 559 - - - YES - - - - Mentions - - - 560 - - - YES - - - - - - 561 - - - 592 @@ -2641,30 +2359,6 @@ - - 628 - - - YES - - - - Conversation - - - 629 - - - YES - - - - - - 630 - - - 644 @@ -2681,10 +2375,7 @@ YES - - - @@ -2699,55 +2390,16 @@ - - 648 - - - 649 - - 653 - - - - - 654 - - - 657 - - 658 - - - YES - - - - Profile - - - 659 - - - YES - - - - - - 660 - - - 667 @@ -2815,6 +2467,36 @@ + + 684 + + + + + 685 + + + + + 686 + + + + + 687 + + + + + 688 + + + + + 695 + + + @@ -2863,8 +2545,6 @@ 29.IBPluginDependency 295.IBPluginDependency 296.IBPluginDependency - 297.IBPluginDependency - 298.IBPluginDependency 346.IBPluginDependency 348.IBPluginDependency 349.IBPluginDependency @@ -2886,7 +2566,6 @@ 470.IBPluginDependency 491.IBPluginDependency 492.IBPluginDependency - 493.IBPluginDependency 533.IBPluginDependency 535.IBPluginDependency 535.IBWindowTemplateEditedContentRect @@ -2895,12 +2574,7 @@ 537.IBPluginDependency 541.IBPluginDependency 542.IBPluginDependency - 559.IBPluginDependency - 559.IBWindowTemplateEditedContentRect - 559.NSWindowTemplate.visibleAtLaunch 56.IBPluginDependency - 560.IBPluginDependency - 561.IBPluginDependency 57.IBPluginDependency 58.IBPluginDependency 592.IBPluginDependency @@ -2919,25 +2593,12 @@ 610.IBPluginDependency 613.IBPluginDependency 620.IBPluginDependency - 628.IBPluginDependency - 628.IBWindowTemplateEditedContentRect - 628.NSWindowTemplate.visibleAtLaunch - 629.IBPluginDependency - 630.IBPluginDependency 644.IBPluginDependency 645.IBPluginDependency 646.IBPluginDependency 647.IBPluginDependency - 648.IBPluginDependency 649.IBPluginDependency - 653.IBPluginDependency - 654.IBPluginDependency 657.IBPluginDependency - 658.IBPluginDependency - 658.IBWindowTemplateEditedContentRect - 658.NSWindowTemplate.visibleAtLaunch - 659.IBPluginDependency - 660.IBPluginDependency 667.IBPluginDependency 668.IBPluginDependency 668.NSWindowTemplate.visibleAtLaunch @@ -2948,6 +2609,12 @@ 673.IBPluginDependency 674.IBPluginDependency 675.IBPluginDependency + 684.IBPluginDependency + 685.IBPluginDependency + 686.IBPluginDependency + 687.IBPluginDependency + 688.IBPluginDependency + 695.IBPluginDependency 72.IBPluginDependency 73.IBPluginDependency 79.IBPluginDependency @@ -3022,9 +2689,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin {{202, 175}, {397, 581}} com.apple.InterfaceBuilder.CocoaPlugin @@ -3032,11 +2696,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{344, 175}, {376, 581}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3056,10 +2715,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{344, 175}, {376, 581}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3067,15 +2722,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{344, 175}, {376, 581}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3090,6 +2736,12 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -3104,7 +2756,7 @@ - 682 + 696 @@ -3119,7 +2771,16 @@ clearCache: login: logout: + openNewMessageWindow: + sendPost: + showAbout: + showConversation: + showConversationForPostId:andEntity: + showMentions: showProfile: + showProfileForEntity: + showSearch: + showTimeline: YES @@ -3127,6 +2788,15 @@ id id id + id + id + id + NSString + id + id + NSString + id + id @@ -3136,7 +2806,16 @@ clearCache: login: logout: + openNewMessageWindow: + sendPost: + showAbout: + showConversation: + showConversationForPostId:andEntity: + showMentions: showProfile: + showProfileForEntity: + showSearch: + showTimeline: YES @@ -3152,28 +2831,58 @@ logout: id + + openNewMessageWindow: + id + + + sendPost: + id + + + showAbout: + id + + + showConversation: + id + + + showConversationForPostId:andEntity: + NSString + + + showMentions: + id + showProfile: id + + showProfileForEntity: + NSString + + + showSearch: + id + + + showTimeline: + id + YES YES - conversationView - conversationViewWindow globalHotkeyMenuItem loginActivityIndicator loginEntityTextField loginViewWindow logoLayer - mentionsView - mentionsViewWindow openProfileWindow - profileView - profileViewWindow showProfileTextField timelineView timelineViewWindow @@ -3181,18 +2890,12 @@ YES - WebView - NSWindow NSMenuItem NSProgressIndicator NSTextField NSWindow NSImageView - WebView - NSWindow NSPanel - WebView - NSWindow NSTextField WebView NSWindow @@ -3203,18 +2906,12 @@ YES YES - conversationView - conversationViewWindow globalHotkeyMenuItem loginActivityIndicator loginEntityTextField loginViewWindow logoLayer - mentionsView - mentionsViewWindow openProfileWindow - profileView - profileViewWindow showProfileTextField timelineView timelineViewWindow @@ -3222,14 +2919,6 @@ YES - - conversationView - WebView - - - conversationViewWindow - NSWindow - globalHotkeyMenuItem NSMenuItem @@ -3250,26 +2939,10 @@ logoLayer NSImageView - - mentionsView - WebView - - - mentionsViewWindow - NSWindow - openProfileWindow NSPanel - - profileView - WebView - - - profileViewWindow - NSWindow - showProfileTextField NSTextField diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index 6327a16..2c60095 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -13,6 +13,12 @@ +

Bungloo 1.3.0

+ +

Changed to one window

+

Added search (skate.io)

+

Bugfixes

+

Bungloo 1.2.2

Fixed crash on Snow Leopard while opening new post window

From be5e86176ad6e62cb2df41974aad620f338df39e Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 27 Mar 2013 12:12:15 +0100 Subject: [PATCH 007/127] added line to search --- WebKit/css/default.css | 1 + 1 file changed, 1 insertion(+) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 4dd168c..aaec35b 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -418,6 +418,7 @@ iframe { form.search { text-align: center; padding: 5px 10%; + border-bottom: 1px solid #c9c9c9; } form.search input { From 8b10203ed3a84a97ff2258dd1724ec3ab51b2f7e Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 27 Mar 2013 12:12:26 +0100 Subject: [PATCH 008/127] fixed color of send button --- Mac/English.lproj/NewMessageWindow.xib | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Mac/English.lproj/NewMessageWindow.xib b/Mac/English.lproj/NewMessageWindow.xib index 633bcf7..55d5674 100644 --- a/Mac/English.lproj/NewMessageWindow.xib +++ b/Mac/English.lproj/NewMessageWindow.xib @@ -190,21 +190,29 @@ 289 - {{258, 0}, {38, 19}} + {{258, 1}, {38, 17}} - _NS:9 YES -2080374784 - 134217728 + 150994944 ⌘↩ - + + LucidaGrande-Bold + 11 + 3357 + _NS:9 - -1232846848 - 268435629 + -2038022144 + 268435623 + + LucidaGrande + 11 + 16 + DQ 400 @@ -267,11 +275,7 @@ 67108864 134217728 - - LucidaGrande-Bold - 11 - 3357 - + _NS:9 -2030813184 From bbfb78ed9acaa1dc9ef463ac1b7634abe9352a92 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 27 Mar 2013 12:31:01 +0100 Subject: [PATCH 009/127] small html fix in release notes --- Mac/publish/Appcast.xml | 10 +++++----- Mac/publish/ReleaseNotes.html | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Mac/publish/Appcast.xml b/Mac/publish/Appcast.xml index a0104a8..6a34b4c 100755 --- a/Mac/publish/Appcast.xml +++ b/Mac/publish/Appcast.xml @@ -6,15 +6,15 @@ Most recent changes with links to updates. en - Version 1.2.2 + Version 1.3.0 10.5.0 http://jabs.nu/bungloo/download/ReleaseNotes.html - Fri, 22 Mar 2013 20:21:06 +0100 + Wed, 27 Mar 2013 12:30:36 +0100 + sparkle:dsaSignature="MC4CFQCAaiajtgz8ITfl87a0zNWEgU/RUgIVAIp9JOsXNomwXHKJdemU7yEdbz6Z" /> diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index 2c60095..5a9a3c0 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -13,12 +13,14 @@ -

Bungloo 1.3.0

+

Bungloo 1.3.0

Changed to one window

Added search (skate.io)

Bugfixes

+
+

Bungloo 1.2.2

Fixed crash on Snow Leopard while opening new post window

From 36a7d8c101a6e0dd9ebdd16d339f50b9cc5bd6fa Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 27 Mar 2013 12:32:09 +0100 Subject: [PATCH 010/127] small html fix in release notes --- Mac/publish/Appcast.xml | 4 ++-- Mac/publish/ReleaseNotes.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Mac/publish/Appcast.xml b/Mac/publish/Appcast.xml index 6a34b4c..6b5ae57 100755 --- a/Mac/publish/Appcast.xml +++ b/Mac/publish/Appcast.xml @@ -9,12 +9,12 @@ Version 1.3.0 10.5.0 http://jabs.nu/bungloo/download/ReleaseNotes.html - Wed, 27 Mar 2013 12:30:36 +0100 + Wed, 27 Mar 2013 12:32:02 +0100 + sparkle:dsaSignature="MC4CFQCE4ygN5dS8V6PaWm6tYwsRSPPuPQIVAJA5XppQL3iCqMZaQ7a6AHOS+R4v" /> diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index 5a9a3c0..d28e12c 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -19,7 +19,7 @@

Added search (skate.io)

Bugfixes

-
+

Bungloo 1.2.2

From f0b8a7cdafd5be004cc1ca5ef408f77f9b950a0d Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Thu, 28 Mar 2013 00:34:29 +0100 Subject: [PATCH 011/127] changed button type to test for 10.6 --- Mac/English.lproj/NewMessageWindow.xib | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Mac/English.lproj/NewMessageWindow.xib b/Mac/English.lproj/NewMessageWindow.xib index 55d5674..14100db 100644 --- a/Mac/English.lproj/NewMessageWindow.xib +++ b/Mac/English.lproj/NewMessageWindow.xib @@ -190,7 +190,7 @@ 289 - {{258, 1}, {38, 17}} + {{258, 0}, {38, 19}} _NS:9 @@ -199,18 +199,14 @@ -2080374784 150994944 ⌘↩ - - LucidaGrande-Bold - 11 - 3357 - + _NS:9 - -2038022144 - 268435623 + -1232715776 + 268435629 LucidaGrande - 11 + 12 16 @@ -275,7 +271,11 @@ 67108864 134217728 - + + LucidaGrande-Bold + 11 + 3357 + _NS:9 -2030813184 From bafb8db06f86d727532d09b4cf60f0fe6b65599a Mon Sep 17 00:00:00 2001 From: jeena Date: Sat, 30 Mar 2013 20:19:08 +0100 Subject: [PATCH 012/127] restructuring --- Linux/{deploy => }/Makefile.exmp | 0 Linux/{deploy => }/bungloo.desktop.exmp | 0 Linux/{deploy => }/debian/changelog | 0 Linux/{deploy => }/debian/compat | 0 Linux/{deploy => }/debian/control | 0 Linux/{deploy => }/debian/copyright | 0 Linux/{deploy => }/debian/rules | 0 Linux/{deploy => }/deploy.sh | 8 ++++---- Linux/{deploy => }/setup.py.exmp | 0 {Linux => Qt}/Bungloo.py | 0 {Linux => Qt}/Helper.py | 0 {Linux => Qt}/Windows.py | 0 Windows/deploy.bat | 0 13 files changed, 4 insertions(+), 4 deletions(-) rename Linux/{deploy => }/Makefile.exmp (100%) rename Linux/{deploy => }/bungloo.desktop.exmp (100%) rename Linux/{deploy => }/debian/changelog (100%) rename Linux/{deploy => }/debian/compat (100%) rename Linux/{deploy => }/debian/control (100%) rename Linux/{deploy => }/debian/copyright (100%) rename Linux/{deploy => }/debian/rules (100%) rename Linux/{deploy => }/deploy.sh (87%) rename Linux/{deploy => }/setup.py.exmp (100%) rename {Linux => Qt}/Bungloo.py (100%) rename {Linux => Qt}/Helper.py (100%) rename {Linux => Qt}/Windows.py (100%) create mode 100644 Windows/deploy.bat diff --git a/Linux/deploy/Makefile.exmp b/Linux/Makefile.exmp similarity index 100% rename from Linux/deploy/Makefile.exmp rename to Linux/Makefile.exmp diff --git a/Linux/deploy/bungloo.desktop.exmp b/Linux/bungloo.desktop.exmp similarity index 100% rename from Linux/deploy/bungloo.desktop.exmp rename to Linux/bungloo.desktop.exmp diff --git a/Linux/deploy/debian/changelog b/Linux/debian/changelog similarity index 100% rename from Linux/deploy/debian/changelog rename to Linux/debian/changelog diff --git a/Linux/deploy/debian/compat b/Linux/debian/compat similarity index 100% rename from Linux/deploy/debian/compat rename to Linux/debian/compat diff --git a/Linux/deploy/debian/control b/Linux/debian/control similarity index 100% rename from Linux/deploy/debian/control rename to Linux/debian/control diff --git a/Linux/deploy/debian/copyright b/Linux/debian/copyright similarity index 100% rename from Linux/deploy/debian/copyright rename to Linux/debian/copyright diff --git a/Linux/deploy/debian/rules b/Linux/debian/rules similarity index 100% rename from Linux/deploy/debian/rules rename to Linux/debian/rules diff --git a/Linux/deploy/deploy.sh b/Linux/deploy.sh similarity index 87% rename from Linux/deploy/deploy.sh rename to Linux/deploy.sh index b902101..a60ebb8 100755 --- a/Linux/deploy/deploy.sh +++ b/Linux/deploy.sh @@ -2,8 +2,8 @@ VERSION="1.3.0" DEPLOYPATH="bungloo-${VERSION}" -LINUXPATH=".." -SHAREDPATH="../.." +QTPATH="../Qt" +SHAREDPATH=".." DISTPATH=dist rm -rf $DEPLOYPATH @@ -14,8 +14,8 @@ mkdir -p $DEPLOYPATH/bin mkdir -p $DEPLOYPATH/bungloo touch $DEPLOYPATH/bungloo/__init__.py -cp $LINUXPATH/Bungloo.py $DEPLOYPATH/bin/bungloo -cp $LINUXPATH/Helper.py $LINUXPATH/Windows.py $DEPLOYPATH/bungloo +cp $QTPATH/Bungloo.py $DEPLOYPATH/bin/bungloo +cp $QTPATH/Helper.py $QTPATH/Windows.py $DEPLOYPATH/bungloo cat setup.py.exmp | sed -e "s/{VERSION}/${VERSION}/g" > $DEPLOYPATH/setup.py cat Makefile.exmp | sed -e "s/{VERSION}/${VERSION}/g" > $DEPLOYPATH/Makefile cat bungloo.desktop.exmp | sed -e "s/{VERSION}/${VERSION}/g" > $DEPLOYPATH/bungloo.desktop diff --git a/Linux/deploy/setup.py.exmp b/Linux/setup.py.exmp similarity index 100% rename from Linux/deploy/setup.py.exmp rename to Linux/setup.py.exmp diff --git a/Linux/Bungloo.py b/Qt/Bungloo.py similarity index 100% rename from Linux/Bungloo.py rename to Qt/Bungloo.py diff --git a/Linux/Helper.py b/Qt/Helper.py similarity index 100% rename from Linux/Helper.py rename to Qt/Helper.py diff --git a/Linux/Windows.py b/Qt/Windows.py similarity index 100% rename from Linux/Windows.py rename to Qt/Windows.py diff --git a/Windows/deploy.bat b/Windows/deploy.bat new file mode 100644 index 0000000..e69de29 From aaa73da183ba6633923d6e3c0016f901a6adc6c5 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 30 Mar 2013 21:41:23 +0100 Subject: [PATCH 013/127] added deploy script --- Windows/deploy.ps1 | 7 +++++++ Windows/setup.py | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 Windows/deploy.ps1 create mode 100644 Windows/setup.py diff --git a/Windows/deploy.ps1 b/Windows/deploy.ps1 new file mode 100644 index 0000000..0ab56f0 --- /dev/null +++ b/Windows/deploy.ps1 @@ -0,0 +1,7 @@ + +mkdir bungloo +cp ../Qt/* bungloo +cp ../WebKit bungloo +cp ../images bungloo +cp setup.py bungloo +touch bungloo/__init__.py diff --git a/Windows/setup.py b/Windows/setup.py new file mode 100644 index 0000000..0519633 --- /dev/null +++ b/Windows/setup.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python2 + +import os +from distutils.core import setup +import py2exe + +files = [] +for dirname, dirnames, filenames in os.walk('bungloo/WebKit'): + for filename in filenames: + files += [os.path.join(dirname, filename)[8:]] + +for dirname, dirnames, filenames in os.walk('bungloo/images'): + for filename in filenames: + files += [os.path.join(dirname, filename)[8:]] + +setup( + name = "bungloo", + version = "1.3.0", + author = "Jeena Paradies", + author_email = "spam@jeenaparadies.net", + url = "http://jabs.nu/bungloo", + license = "BSD license", + packages = ['bungloo'], + package_data = {"bungloo": files}, + scripts = ["bungloo/Bungloo.py"] + ) From b6fa8a6dbb901bf42bd221e1ed63fb213333238f Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 30 Mar 2013 21:43:50 +0100 Subject: [PATCH 014/127] removed unnecessary files --- .gitignore | 3 ++- Windows/deploy.bat | 0 2 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 Windows/deploy.bat diff --git a/.gitignore b/.gitignore index 3d7cc77..ff86293 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ dsa_priv.pem *.pyc .DS_Store *~ -Linux/build/ +Linux/dist +Windows/dist diff --git a/Windows/deploy.bat b/Windows/deploy.bat deleted file mode 100644 index e69de29..0000000 From df0150fee2f260a14cb3d81579de2c619b8fd7de Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 31 Mar 2013 03:23:23 +0200 Subject: [PATCH 015/127] changed plugin path --- Qt/Helper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Qt/Helper.py b/Qt/Helper.py index c822256..ea8a36e 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -87,12 +87,12 @@ class WebViewCreator(QtWebKit.QWebView): if self.is_local: frame.evaluateJavaScript("var OS_TYPE = 'linux';") - js_plugin_path = os.path.expanduser('~/.bungloo/Plugin.js') + js_plugin_path = os.path.expanduser('~/.config/bungloo/Plugin.js') if os.access(js_plugin_path, os.R_OK): func = "setTimeout(function() { loadJsPlugin('file://localhost/" + js_plugin_path + "') }, 1000);" frame.evaluateJavaScript(func) - css_plugin_path = os.path.expanduser('~/.bungloo/Plugin.css') + css_plugin_path = os.path.expanduser('~/.config/bungloo/Plugin.css') if os.access(css_plugin_path, os.R_OK): func = "setTimeout(function() { loadCssPlugin('file://localhost/" + css_plugin_path + "') }, 1000);" frame.evaluateJavaScript(func) From fbd3505754bbb9f22582215962259924aa9f0fd6 Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 31 Mar 2013 03:25:00 +0200 Subject: [PATCH 016/127] changed plugin path --- Linux/Helper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Linux/Helper.py b/Linux/Helper.py index c822256..ea8a36e 100644 --- a/Linux/Helper.py +++ b/Linux/Helper.py @@ -87,12 +87,12 @@ class WebViewCreator(QtWebKit.QWebView): if self.is_local: frame.evaluateJavaScript("var OS_TYPE = 'linux';") - js_plugin_path = os.path.expanduser('~/.bungloo/Plugin.js') + js_plugin_path = os.path.expanduser('~/.config/bungloo/Plugin.js') if os.access(js_plugin_path, os.R_OK): func = "setTimeout(function() { loadJsPlugin('file://localhost/" + js_plugin_path + "') }, 1000);" frame.evaluateJavaScript(func) - css_plugin_path = os.path.expanduser('~/.bungloo/Plugin.css') + css_plugin_path = os.path.expanduser('~/.config/bungloo/Plugin.css') if os.access(css_plugin_path, os.R_OK): func = "setTimeout(function() { loadCssPlugin('file://localhost/" + css_plugin_path + "') }, 1000);" frame.evaluateJavaScript(func) From ce9900559d5a3f0ede0e50a888ab3804903e15d4 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 2 Apr 2013 22:10:02 +0200 Subject: [PATCH 017/127] added kind of working windows py2exe setup --- Windows/deploy.ps1 | 9 +++++---- Windows/msvcp90.dll | Bin 0 -> 569680 bytes Windows/setup.py | 20 ++++++++++++-------- images/Icon.ico | Bin 0 -> 370070 bytes 4 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 Windows/msvcp90.dll create mode 100644 images/Icon.ico diff --git a/Windows/deploy.ps1 b/Windows/deploy.ps1 index 0ab56f0..4dcff82 100644 --- a/Windows/deploy.ps1 +++ b/Windows/deploy.ps1 @@ -1,7 +1,8 @@ mkdir bungloo -cp ../Qt/* bungloo -cp ../WebKit bungloo -cp ../images bungloo -cp setup.py bungloo +Copy-Item ../Qt/* bungloo -Recurse +Copy-Item ../WebKit bungloo -Recurse +Copy-Item ../images bungloo -Recurse +Copy-Item setup.py bungloo touch bungloo/__init__.py +Copy-Item msvcp90.dll bungloo \ No newline at end of file diff --git a/Windows/msvcp90.dll b/Windows/msvcp90.dll new file mode 100644 index 0000000000000000000000000000000000000000..af6cc3da9d5dba8ba076be6e558c78307dc6cf5e GIT binary patch literal 569680 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

kLdf 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%0DBoJ#MZJrJU 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 w$~Vfl%6G~(<$GnjvP1bn*{SSO zb}M_7y~;jizw)Ef) z{!vaV|0-vcvt0NkRaO;MRW(&t4b@aF)m9zVr=F*tujWzns`=FXY5}#NT1YLd7Ez0; z7pTS5;%W)?LiHlGqiCRj%R4uKRQOm03)beTtwW4~NT1l;}UanrDR#B^})zs>0 z4Yj6PORcTeQR}K#s`b?R>Q(C1Y6G>Q+DL7zHc^|Z&D7><3$>-%N^Q*_i*2j6Q`@T@ z)Q;*k>a}Vo^*Xh)+C}ZEc2locZ&16dH>x+OH>(-yEou+7r`k*Ht@cs-s{Pdd>Hzgt z^)_{&I!GO?4pE1yx2wa{;pzx=q&iByLmjQ&sotgDt=^-KQSVjnQ}0(FP#;tuQXf_y zQ6E*us^ir0>SOBT>I8M7I!S#(ovc2oPEnsypH`=;F;)70nG=hYX~7uA>4>FNx1 zraDV~S)HxUQD0GCRp+Yn)YsJ4)i>1n>H>A4x=4LfeM?=ezOBBaE>V}N%hcuSyXp${ zJ$0q}zWRasq56^fvHFR+O8rz_t*%kms_WGC>SyZb>IU@-b))*Fx=H;?-K=g=x2j*O z->BcJ->KWw@73+<4)q6hr@Bkst?p6xs{7Ra>W}JA>d)!{^`Lr4{Y5>j{;D2PkE*|^ z$JFEM@9GKlr22>Yr}~%rw|YwbM?J0ntDaHMszQ@ASyMDs(==T(G*h!QTXQs@cAj>= zmPgC0<S}E;Pt+ZA~E31{$%4-$0 zirQsbC9Se{xpswCMXRb+)2eGVw3=Eit+rN2tE*k9)zj*0S7}#k4YY<@BdxL4L~E)w z)0%57w3b>ct+m!hYpb=>+G`!Oj@mWawOS|bI<2$TMeC|{)2`QU(7J0kYBy;&YZ=-t zS`V$K)=TTH_0jrj{j~nt0PR-oHf^9bNE@sT(S~ZbYs0kR+6Zl=HcGog8?D``-KE{F z-J^}s?$z$o?$;jB9@HMv9@ZYw9@WP36OQrPW7^}|1Z|==Nqa(@tUaks(Vo(t)~0ID zXwPcXwCA+vwHLG(wU@N%+6--`HcNY1o2|{!UeR9F=4$h_*RXvTnj_%XX)6duQ=y~;gdValtUQjQj7uJjDMfD5xVtR4CgnprZkzP{2 zSieLsrC+L-*30N+^>TW7y@FnmhafBImG#T@EA%RQRlS;CU9X|n)NARr^*VZ89tW(a z*VnJouhtvr4fRHPW4(#qRBxs?*IVc<^;UXoy^Y>hZ>P7{JLnztYxHaNPWp9vXT6Kw zRqv)>uiv0|*KgEs(r?x?^jq{EdQZKV-dpdZ_tpF9{q+I*t@>^HKz)!tSRbMf)oO9zeWX50ze69b->KiF->u)HkJ0bd@6+$sAJ8AvAJQMzAJHGx$Lizs@%m%>d)xU>eKY+^yl>#^cVG)^y&HxeWpH3e_5Zc&(UAeU)AU8 z^YqvB*Y!8_`T7EVp}t6elZRLq>u>At=u7ma`Z9gF{;s}4e@|bjzpsCwf2eL7?ck6rfz4|_Vzy72Clm4@QKtHG-(tptp>%Zzp^rQN3`Z4{u{=0rcKdJwr|Ed3_ z|E-_W|IttD|LSM-v$`-OLpBscH8evv48t@m!!{hlXPjr8Z{#uZ8u^U;MggOsQOGE4 z6fue#7Z}Bi;zkMMLgON%q;auviBZb9)F^F~G0Ga{jPgbWqoQ${QOT%mTy9)pR57X= z)r{&!4Wp(}%cyPCG3pvu8ug6&##P4EMgyav(a30QG%=bQ&5Y(o3!|mc%4lu0G1?mK zjP^zcqoZ++ajntGxX$QobTPUb-Hhvv8;tJ8jmAyJ%|?cCi_ydAY4kFB8-0wvMn9v! zF~GRhxXl=73^E2ALyV!u?Zz-;xG};QX^b-N;H#}Wjk}DyjeCqS#=XXU#{I?v#)Ev> z^RV%V@u)G@7-x((9y1;{CKwZqNyZb#WaCL=it&{3v@z9q#(374W;|y+Z@gfND3vzS@jEMZ<~USyUuFE%eROPQCNrOh&CS+ks3 z-mG9&G%qtNnU&4U%`40*W>vGAS>3E*)--FGwaq$aUGqw_o>||#%DmcaU^X-xnT^dR zW>d47+1zYlwlrIrt<5%OTeF?n-t1s@G_NtQH9MKtnVropW>>SDdA)gq+1*^GS1x`IPyz zIn{i|eAb+1K4(5}zF@v+zGO}}XP7h1S?0^;Y;%tJiutNJ*PLg*X1;E|Va_)fm}XYMzD zG=DOGHV>Ew%|qrd=3(VPzs$eQQ|3SBY4cz6jCs}+ zmSoA6VyTv9>6T%cmSx$NWBIJ}tn;lrR$eQgmES606|@Rjg{>l1QR@P$m{r^=VO?ll zWRq@JhRo}YGy4q@BHMAO8jjbkDQ>&TP+-hO9v|3rMtu|I$tDV)}>R@%WuCcDQI$76Q zovkibSF4+Ky>)}t-MZ1b$-3Ffux_z>SUs&?R&T41)z|80^|uCCw_3MZ1Fb>UU~7mq z)VkdoW(~JSSR<`b)*aSp>rU$~>u&2FYm9ZTb)R*=^?>!D^^o7i>&9@d<3#~=go7P*_V(V?|9cziT)LLdOx8Ai@SnpXYt@o`DtPib^ ztdFfvtX0;h)@o~wwboi^t+zh2KDRblUsxNhFRe}1SJq~0i?!AI+WN-&*80xcW_@pM zw{}=RSUas<)^2N$wb$Bb?YDlkezJbH4p;}RL)I_WVe41xh;`KZ%{pcsw|=)ySSPJN ztUs;4tiP>O)<4#1>tE}Pb=DHLWXrZe z>?(FuyP93yu3^`-YuUB!I(A+AO1qw2-@eMe+HPPsv>Vxt?Iw0pyP4hGZeh2yTiLDc zHg;RPo!#EETko~azi2bNN)*fe%w;!_~wdy4&({j@#Re#U;*o@PI1KX1Qa zzi7W?Pq$~-GwoUS%l2%0j{S=Lsy)}9XTN5@ZogsAw-?w8?M3#R_FML1`)&Ijdx^c& zUS==1-?dlR@7XKu_w5ht5ABcakL^$FRraU$YI}{n)?R0?w?DH#w>Q{d*cJ{+{?6WJe{XNMci2DJJMCTeZhMct*WPFEw|}&MvVXP@*az)H_AmBf z`&avjeboNVK4u@cf45KAC+$D%KkdKlzwJ}@KlW++U;B)G))tQB$d2Nuj^^l&;h2u) z*pB1)ob#OXojgunC!dqwDc}@z3OR+HB2H1~0;iZ$+$rH)=v?HKbS`!-aY{LtI;EX5 zPFbg%Q{JiIRCF$LDmj&%%bhEnDo$0Wnp54W;nZ|$IklZSPF?3pr=C;axyrfPY2Y+; z8aa)fCQehQnbX{9;k0yGIjx;GPFts))86Uebabw9u5~&&*EyY?E>2gcn{&N$gVWu) z(YeXF*~xHjae6pConB6Fr;pRu>F4x!1~|7mw>blyLC#=jh%?l=-5KT#cSblPol(vm z&S>XO=Pu`N=N@N_bFXusbHDR|^PuyP^RV-X^Qbe{8Rv|59&;XdCO8wFNzN0_Wamj| ziu087v@_Lt#(CD6<~-*-@4Vo==)B}icV;*_yy47u z7B~x?Mb4YfTh3zVZRZ_liL=yM<}7#KbyhgGK65^IHaK568=WtmP0m-&W@n4D)%n`_#`)Iy&e`UC?`(H=I6pW$on6juXOFYj z+2`zcesq3ves&Hx2c1LCFV11-SLcXx)cMUh<{Wo^cTPAboj;sEoxhyFom0*~&S~dg z=ZtgK5kAQ$`xKw*(|o$m@R>f#XZswV&v%~hd|w`4USB?6eqRA!L0=(XVP6qnQQrl= zV!qMvb~ODBZKi@BzIt1`Hp;A7dZX&?`rkh9s`) z|Nl)J-XP9V@Qz7?Q(yj0{E%KfMhqE7YpUj~DWTTW_yL3ac{M(&&}t1ER%saQgceaf z+#+cYd*ulCaEo&nyknze!Cj4Qk+_GGHzm4gwTkUQ;r2Dra*NQ(&(lgN6?5 zGrD2Bh|z54QNIKyj8~5EaC()M(KTxBWOPkBdA#!^EwBAK?#K2K{n*~CSG>o}D@WXR zxythH6YtWz^CT^=!#VE94iWv>!K+uiTjrG`Zo6D%dH0ETY2JB~mKQbobK}y~B)D*% zgV@c^S?rFD&RxAbHVW0-d#G|YysTPT8-jCFLdQlal;FC6kUrtYz`LHVNgLQ0Wo->S z^F)^%dF`s@u~fM7ct<&`7YgTZY^Ew6;x58bhG zvf!@%_1MFt+K@&u{p-=9s6t)+o5mg{STB!JOE5%H}Sekd9q-{%M4-+gct$vKySJX;l4-+gat$uWs<=rRV=ZSZoxcwMeUK)FtVB6B_ z$B2DJtu*#9!LrioM^{x&MmS*Qv#D_jPJ{ z!XE;1SZ;X7SttFH$sF6)sfBUP>vq8{mA^6VGDF7M{?&0MV;~~agyw3ZLNQ)VO`H$PST3c5t;a;=)_Ul`Nu2f0|H{i4rwx+#y(G z%F9gR`IK@P_f$?fTW*#fas8;1tqS-9#LnuJLq$&Px~VO;iJPBV3|G(pugeWD*x4vK zmlo{0sjWMS`#QB4?!HbfPp*|4Ua+&#;#^v=>$(&8@?M@a^WaNUKFj08HuIpN4Jr`_uvWOxh7wm+I!V7lYl$V*r^C{&p?x~z|w%jZ| zV!_T{^K)^*ZW@}{4gB992X_Si`5M@m@HKJPwKZW<|JTXE37#}zc#<~_O>$T9{<+Jv z=!Q%!El@)l3vKvYN@#g$KQ5YTKLef|EHl zU7w{>i;%g}1?F(@%=|CP4&IshFUk&Y)Bd-m`#+F}=kWiw?7;3aqV#mPYq9e!wFvR% zTWUEI&GpnGM3f!;KB;ADIdiq_@K*JITe|8W4TS|&;wxeO;wn02*C znl5}%YnkZ6;=ZUQOzNs;qL`5blq_BNqSi9eg~feQOPJJE%|tOHtC=ia#6>L|8|m0} zCgmUzr+etqmU8AqXMD;*B5Dw^oo|_P{@kua=obHfQH89}BN1!Bf6xz^_priMXp?Ad z@qd6%F=^z9lQ5<~VR(6Iljsz8FE0s`x{6N}Gf;f+)@z$Yr>=Y1NSM@Be4?0v;)Azg zy&jR^6K4D;e&gNKPh*!GTm=5t<%ai{*(f=eZUcHfBI4@nbMU>*|GM1p-YOd<=hAJ! zcG+0h;!W+8!(?7&LbE&NY~ia*&P$KDyk)QXxp=qA>yaVXTt5fj2mi0j4X-QNC^?tb z6|YC8Tz!2G)|LNtx#4vs8ztw`y3+nXIkSW7%70UO#JZBb3gqIt;`IofYp$Pzb>)9u zZg^eEM#;Ifu6R8{=<4fpu&(^C%MGt9*(f=e)|C$b>ALdYlpe9JWUm6bxUO_e?K4c` z?OJLvTsy`8b-CenB^xE@(z?+V)Jz`zSUIlV*UCC(Pqvvpb>zef#eC*>W9UHX_+z}6?4Ba>K-*^gt$?yM`Jt}4B z7LWfPQ8=al3-M6OBxMH*_9seEY&cPZ60;Hw>zAmh;Y7)cBT~}hdJP$TYq&huV*!DO zBK&u{0)=KK4VCIj8hC&qDru-}SJJ@429Zf4hSrrbw)}`bcBPChet5X$u9R^~@1Jt> zhxZSUu`6nv^82S)fj*;$rdYl|Woo_ePnlZh_vQh#|s>@QJLfB6C@Sa!eG z4@|)SFSX5j1Rz-5lrMJPo$C?8|J+X2n=PU{*CPkX!gr)wG|arhx;r=JjQ>$>v%c>R zc5cd7W}50Bog9bj^1yx6v1dK-y5juC&ohb0BS~cvsr!ivwv>uR)4yvp;5Pr4Jr5 zY*4uP*iBEMpE6U0n(o!-nW;j>diD9xAp?613m56?o2(}!v+kj#kTOucK*CV{Tp>ges6cY3MuDRN`iBbNxvZ z_EdCz6D5wSZ?dGJXEl;l!XG!Hz6pmRy1t1LN7Xl3($GU2{`w|MoK;`mCN(fTA-qn# z%v7Q7@;dc0Q-#X)I`xJR7#uFpHKn5$JAcYhp{|tCOPxPus9;yh=!K4ysqTU^lcrpL zs=MIfw+|bUYWw|3Q>=hLX=*(%qDQLz?@yUp@&1%4m!4|>6ExLNA(=^2sz8+nr8AlY zUMZEq7QIiycAYbtWb_?4q{oPi;3M)`+ox-IDGN(hV1bLt*WRD6_mGi22lk1dF>AGt z$=Jc4abTjHS&O{Oua@W+gZFRlT z$X|`9quk!}zc|O=*Qv$Gs%Mq>8C$r*yWT?=Q+VcgC2Hn8C_ka2m2~K1ks1% zw;^Ge*cyaChGq42ib=Xx2OIf|? zj^yzfIE}g_jgWF(JU=R?QJWNEB(G1BcRFP*SpF&CJx(b{Xxy}AU?;}68RtkANdn<*!-o2GHbNt>)VV)-KuT)}q_gG4~J^L)B z+}^#GLUwn*4d|QlY2mearV%2x*V4%x(`o5sj_tG5b9;1I(kbdW(?Ufj50RkDQpoJx zWhrD%&}B(;dvsX}^D}v;r4l4Tx22TbyW>*Io}lYe$RE{tLwIv_q8DQM_qSjbUZFnl8*&2p0N zr-L>28nwhV_R8h2ap*RPyUJc!vR{zHpeQds;hN};Tj zI*IrGCqBVkcP^UxzljVrhFb*@7m&36f){ zePZgl-CMp;K930&K5acW*lC1F&}GTXZ|vP=DP&I2Wl3{;beZRrO{ddR36h}OQp)b# zaVcd_&~+)~kLtX{myO7ti@ZwkM|Ki_%!uAD1>d0RwZRH4A#pBuUa^wSlaArP3>0Xl zzs_E{Vz+p~I(y~FPMuR2pt!a6&gWfk?>y<&JSUg*+}vLHMk54C zwih|AOTwmk&IDKE&h7TX-N0YcJ?2kf2~D#S zNn?3c!n0qqRgDy)#Z)A%4-lb+$o+j~=yq04g0*TDGsHOym${OKze>&gS)}V*!@%m~ zb(ha|uEqHXc1|L<3Os@w`hb@0Dz*x|Yx|s3l7}`zkCEhX=z~AV%6Wr>zs@>WEzYgk z>3`zo+|5iTZSc7ce)TbYM8<#-eTD`8Zejd;*|D>{YSu%LIUka^YmLWJ>8eM}Wjo^8 z2-k$mZZMCvCi~%{Ml|wKmz-DF{pf%6t=g<5BK^9z3Otb?Jb2IS93ZqIiM!T#?uT5fP3%6} zYq`lmJdYJ8M-ijWI@;l}He|Py$b~1Dqqibnyv8uHAu(lt=&gh|k_biyQV z8{?ngFR;5t>|9U6Y*!`jpk+l%e+tA7TFNmzMl9P^Nz|}xO@Y|9r4uG`^U{eFJ12V$ z>D{N-D1IB#v}O2945}OX+mGOeA#U2x^(lC?MKF^8UY`F`cXakp0{??XNs4l%jfs@e zHCR>(q1=fhVhtSFV+6nG58wH7SK4(rVL34=V+zUo&+BAL^MQ`u9}H(#QTB zDp3yB*kH-+BR25Ce{)qoB5j8_X|sOb7HDet7hAzluEVMHL`;UHEpz3FsBODswT(y{ zuVq=kh6}VT{EM<+%Up-!{~|4F2wXWL3XfM&ue7e=8gb{)(8(L9X8g4)I$g)c%`@7E z=XB;_uhTQ~VA3)oPU5KWk!O?Fx|dm0WWrF4L4Ae~@6oRhPsheTy`zsOsA#;TvE_L5 zMksScLp@p(FKKK!!PZ8vSE1a&1gW$rGHtl1A%pwenZX+{GJmv}_1qmB=A?IN13ex1 z|A|V^t@v?j?EjTsyc&CKj?%7i4&%qEapv#(;#Jvmr;>K1b6!MLy@!qr%nkpyuYrd) za(8azLi{*2_K#h>8t2B`@Ygtp@#EAubKv4tId|rUztTA`!d>sI-%gjVQYA1=W0ooZ z$se64&SDXMJZF$s4v&HxWj%$Oxa44}G>VSQ60htQsWdvADAkhPIXnsu)-6G!i4#nf zM$wU3;+37zHI-IJq)N5ys4QM(2kV!h;r>X$Wa*S1nI}~I;E{vQ;iWN`qQ}%WhnFpn z4NI`LIgB1t+nisol2kb71-R;*3zw?|70!j|F}2O%r7B5na~M6QwmH8>C8==E3y7?< z$Lm9aH+DE{TqzPRN%0cLmKF8cBYf=)W%vH{kvMT|S;3DC!38%?{$P^SS{9i)RNROG zgZkujoekD7*zvg$GftCoJA7;(rqUBRFTvdz zxo|n~SPe7Jk6Z{JTi+a95aN!UzmhqKnQYi{A$)8f z8uHulz&pS~U#kL9Jyq10 zWsPVr|NYnahx+#D#SO&BA@fh+tb7A{yN>v0Vep7+dib*hDi=F#B3m0-jDKeEW0&B3 z2=z#0nyhKhu_{?#UdBHf=&<<57)_77-bXxtFc4itpwYowy77BB^S(&@L)?}N-I)sy zb5?cZAM9AG5i^8Q;6J)$&XqvpJyJJn(lYBwBd-KalO<@DBthdQi7OoHe~%h8ZkCll z^SZ|K4OvS^c(zrIdD&mP;Dn1fl(lt^cPO}ZjXV~3kRqkmj&+VG&7CdbElKZeNp1_q z$w=QNc(5Wccf7NuTg|M}(ynIcl{g+Nv{yYt`O>UtC|~+DP4+&P*v?G)wv_l;vQxEe z4L0=)W1=p*4;B_;sHsPE!}!%clP+t zj_`PU^r~xo63rfWG>O(Wc}XJ*%G}D+7~_ zAKYc`+Soa`o~87tx2x~MW8vSN#0}%w3Rj?rLGX%{U=UoP63w>2)J^{x+Sp|!94YMv zdIbwinKXwlNwD+=F-fo-wKVwLVCV_N$h~LqVCXr(cn8Bz_PLL`p2v%KD9%Q>*N{N2 zcpKr&4~N0WZ(Q*r9}tQ?5HD8nlTf^Hp<{9C7djR!7SHB)9!e7aICrA<^;_GdX7?EFFM*{}_dc5a`Jhl>nt6kv##|xKBQ#M$;+?%leh`BgjgW+;%vIfKD-c%)`>-)i|!3rFU zv(|<3#art#?}6m-k-o@^gyQAWvnnmUQ@uUGZHzg{(X zt2FW^WO%G&Z=47Ar~ZGBy;)r~Bi_yGsFx785Srn{C6B0HR{Z*>qd?J|3C9CZJg9u3j~!LXP zj6Cxar*xfDagqkE7ZE>t3!b9wLN)YE5_#ze{&XsKMGpK4Eq_z90>vhY7btek?hsw0 z*d&pG*k<<`HlSC=zyX8&SCl3R7r&^)ks}eivPC6smQLj6=_HOE=A_j~d}WHNbE|Z! z(K?;PZPG~`{xxE7+9epl#PcSqfoaW+jI>&qkyaCVt|igNBC6W1(=~d?<9}|*?73?G zUmS-XvZ=vFZt#d6{6+7;mNa8{pI#$}g}+vh?d*7;I^v{i&qw_5COC81jb2kS{AmI| zaZM%VfWae@M$FpSM1_m)otTd2QJ>(&K`J5Biq>n4-REJd+VIFy-m)t2d;+Mu6*DcnCwFqV1x`^p~k53S(E?TK(_gJ)2&F-;irJCJi(MmPD$9a=#c8}90 z)$AUNR;t-O7OhmXdn{V1X7^mQQVrm>Xr-J#hrRE$Xr)$uii=h{!6FweuYAeY7q5Ko zEpDLlDKA8PaNH$1Xq0|F- zEMch!@L0rB58$zkr5?a@Axk}k*HV^7gdC5A*K(F>9a3D-(hC>4qpWo0$X4ST-{UPMmCJ z4lG~U%p6#{vY9!sY-KZZ{Bt!&!Gg1uO@Y@Ff4tMn^@%A*<#}yBvKutsIqG%BspcB+&P-=S=We|vb}a`DJ@N@W%gK_Qp@bIG^Li=V`)k)v&YhuT4s;2 zN-eX;(v(_ekEJQK%pOZqYME19n$igtxiop@OSUw5<#W&Q#Gi|@dD_JNgJE9v@miX^ z(nrxiL7N}ISdn{3@X7^a6QqAr$ zZmDMXSg2CX?y*#*n%!fuN;P|m%T;>eA{Q+0oXM6f@0{+LpXQ>Ka@cq~D(}o*3zv6} zs8)C_U8x4}TD(%upTpB2YXPer+Smr#*SJ|m`^-l)>$tvk^#60j5AW+HI@l;UpN3~X zyymq%?-KbyTGXReS#QJ6jYyp{It{q1Pe$eo3kDAvKD^h!hQX&Na~QsHvqr(!cIQT< zG%D(Gfphh!>!)Rn8fE>_p6H5ZC(^mAsJ};Zr=ppW(x|BCS?B6go~8)?P&V_6`i!oD zD`9l6W;fb7t+2mKa<9UHXbCFZIQCs1tuhyu#xW}ncQiAPbPGSz75gAh;If@CN$6Rh zh*Ysp%LFdq36sPN6#D>B;8GqDC^ktb(DgZA6QiC_$)$*a$4zr7SnzSv=y2IsWst;{1d2@(3UovArX@@gFHmf~14~gvpx7kw0>#!l(6op^u}MOKGWe@r!QS>7 zw!~@ThKj9vpmmXyirEPfviViV-EzMm<%5Y zJcysti+#K@c`R3fFNwV}d7knf+1PF;eWg!KSy`FVt6)~9G%FZ-xsKO;?#xdh(KQU^ zN~?;YTw99lJD4loI%a3~1)o<u%B{KLj^$B%*XVlB6?ZJpUUx-HFjoSdliN5y-81=9;n|1LLZe_cU{b%0U~0Z>0&nvL@V< z!9$@J*2EqPzpf_onCoRVu?J$dbOIe1+|yl^>tTSIij9KNg}Ubq~*t07*voV}_cDq{5OXuJ*w z-y{?Fc=%N`UWXHAk9ZAD-29O*p$RA8*JU|@ z_QzzX6TA`MH;~Qi+sQzz+Kq$BgCAABK34I4vi}ZKcEblh-J~1dW25I)d#~hPwf9P& zc`GE`IlP3X^F?kJIRxi0HMktq8XC=<%UA_4Eg3U@& z$Lvn?&`qWk<0q?5^e~3vC+V%|`gS5jPB?!-a0S zB{|>R0};yQ(U#zH>ygW|)*kt?Ggp$GSaAnEm?;|-43DozPr61Vd{ZfAKyq=e_?r{1 zmuI6~HA^s8T+z~PW%P37k>CG!(_QXAQjq1l)r(ZlK);+&NnY;n?(n+EHe(oUV{u>ubfWyIw3>f6jEB|$##8hYgn z?d`lKZqkhD)-_aOHYyt&iL@&l%$Rm%gBi0?S=N=LUv9@4%Va0D=YV9Dm%W;X7jcii zb*&5Gi;G7C!r?r6+!Zdowj~Yc**aIih)YbIh@riOM^giPghUxV8kIbwXZ5|aW^)<^ zCvMtR&Gt0%mlz&*kG^#cQ^INF4(HJfSGa`J$Q{me99#htPovyzt}9xOTkDFJgT^-J zxui~+!sbcV%+pF$9l@ zIr}OvPS6~Fo#zoT2Vd!VM9kUOda*&HpGruOBKTy1SCa6v2?)HthZJ0C z{NIu1@H^Xb_u!8Y&YvKmu z<>IvcKlZ)_POhR#zXMTGqeh4r5F~2Us1a|!-`&%bNoFSGF_Om&igr3PJ(D&)-NSTG zGGS5UE@)KHs8Qn*HLi%DfPjc7QKF)vqDBQpMU5*cBCBy>U1U-JUsc^#-CK1Z-94mt ze}6Q|B=^);r%s(Zb?VfqDnN3X3swtM+fYn0#VFP8b2Md zQ!1nbc1(vvNew1Nu|0vK&E>Ycp|ub8Ob8R4^{E=uC;MA9rjPcMlv;J#L~cr$FqN~u zOk?^41EJdp+u)~iHZmu)V#UJP7@noU@dZ3yQmKvC^@6x&DH!S*P>=r+I<$w8O-^wy zzT=U0JTktSH8&JyufJ;rxI^XS{ThO*Q{(4Bdfb+flNBtVL$ZOqUQP;-+i{D9W_cDb z-S?b_f5p4zBlOPPVsD{u{VMgw{P5~t(6N6hj?dIaS!>QK6na;a)2PK2STc{-8kTBE z1BN5z9pzfHN2_c_d3u_MFzzByO|jJc2I;Gx#TDC1jYegn)}t+^(K`tL$cjl81cP91 zaF8D9lp^|D6fi`3Y*LEodttypVS1^UD>a$ywBW5|p^GgF)=||STqT{)FRj)mdQ_kM zyh5Jzf#Ip+_KIHh_TfV)uLxsLU)jF&|d+m_^TFfB(ogsaW)zNJ$r8>P>0%v!n$?zsHcrUT?20@tY1$LaDrf_+2+vbD{q~d zD5~?GX0k^hB!%izUwL%8Jl-RmPR)a~uU@Q`rl;#WsiyER*7mLh96_Y=XRrctRrG5K zc|ZQ|Laxc4(nI)=J6~dFWvpCtVuxsh#*LNO%naq7D1(fcV@0Lbw4krfjYhyd7v4GLdgQqjNm|fTvHbrT9i7{a6 z=fE)Hyf*lU^(bD zXT_B~iEcPRvTmJ_L^mBES-+l%%S_@bp1tS9n`{9(b@ zyE&q+;%sI0{ec$B8oLL+3Uhl4EtJ$fG#`y+b!s!BpGwU;48F^?z$&*p;iEz=aG~v8 zv{KYRyLzoHh_)lUB7U0Li9M5+>T55i=)1}`Lyj%g*M`Y&slN7XxZf(RJ2@?v*S2U{ z12A@hS}xxn1Ew9M);KWlFZn=-ZCC`cxrLPsey1T9vXZG+tJbZv-j#VQ!&l(Tj`C;^+s+`Q%&q3P z*;HEci6`FCl)&z2a)e{0X1P8+R#x{sj19crl>>C=0yU47cG>p#XgpLSu(uddZG90( z_UN?sj+d&9vYj(5B6Y0s>X;fPXmf-kGBSYhDAxSqIZ(EP6zU0LTS#Ae>a6pOwP6d~ z7?VxT-WY4oYPj*{6dsU@ZT9$gC>Qt{DzL~FbbB1VYG&^^b*oqQj%Vk}c$}!#x3Wy~ zYMI;DUx9$?W^H#ARzMr#6@DbOkx=NStqwzcKs3fJoE;x!@WR<~)B`bl$b85z)jgLs zyR-$9tqcqlj8TmT-_7i_*^g3oTa`xqHuNDTLne< z6OASuYSSzu~~xsj^!(?J^8-`o2ripTsp8^;A`?sNP2vrIEYze){;D=su=mAYFNEtI$U5< zu-fjh&Yd+r&tX~AnrP&wuy9Tkai=O5BVef)tMXGYv+RB#Gq zM;=+@NiKpd(5f4~GR^TA`UwhEbM^cw+ z?AVaAE@vd7;ih%YPe3+yzcZw?ksK)RD*zQa${eS*j57Q9HEW(muFr(t$c=f>jh;&t z^F}N+R6OH+LYND*c{cV!>Wv4sC8gdS;tZ>&S*d3kJW_k&L&uieY_sS(63TMnzY~dC zUaM%&$@Ef7n|s4vt7yZO@>)fE9+h(~9ayG#tDueLinj{pQlqr|mNruL-5b$nx{kLB z=2(|}Ik|cgkJMoDPO(leH<^5aPVDVCi&d{-&eU74VJ`KXRx+msQ?Fsp?4@4A+^M*J z4ui#Qv5YZXST*;8ei3dWQ_mmE1!KjaqmYyj#qbDe$b^#f6>4kRN|RC)H*MHfA+9dP zv3?wuePYXD0laxlOsXK4Z3xNO`E)fQh)@*Ae9%Hr+Zzm>E~Sd}A6O$+aA)5sG$W@K zcpx7|4v`l7^|8E#yRJFaoNBR92x_rV*lJmWTT~{ew98MlYrVrl_UqbmLqW z0aKEVO2@xiip>k`FWN?crAD0`d7^|z!Obrlu-%|u(LxTHYL<||l0pV+da9{@Neg(= zY>Qvhs~T`GwfJJm%Dy2ZJNue&w(Azsa8Dc~qxxMsU|&>NHf}Wo%RDDZVfm;M6fdrw z!5ule?KFTjABHH^cFj%V=LYu0=wLe;^U9=j&;yP_m$e;97q#XuaeV1OYln!E_B5x1 ztVy`|=hcPcImL5md3;57h52jo9P(NFxOS#${-_pZach)4w>&BM%nFybm#cO0Wk=MX zB}31=Wf8_eA)|&%4_^zEnZ`Cb5Vz|gh1l6Hz-*fUQ}m>-Wz&XSnS>MR_=daaYCWb~ zsmP5^EMFV~;LECO+m^~|>s(KT>pRNq(v5AU>7sh|iS!PZwIXVjRr?(*LTZgU;T2wH@u&Cz!tScckROIQX`?%Kcx}T#u zQ`Yagm!t0Eu9MudLr;y+yJw7Bc5Jlj$fC5CD|T$O+PI>`w)=I~)hEl7_32&u&;M=B;2eh^pK0himOUn8^%>)>!`P4zDtarD(GPsiLGy#7D{dxeDM>p zu&6|NEi<*Ss8qKsg@?u}#ECZV^!dDL?wrCP^i{jf9{I(Mrg7p_;sJ3APH(YBYAc;Y zMf^y_z=0TJ*pVO4P)__vWy^778n=!t`9agUlIA%|1kQS0&yyUImX`>~b9rfNYzXb8 z=MB}w<(>IA@+4*D-S{`n2M8o z4yhq&v3lIX)=v4I&h3|VhS2~Q0C{hiA)I9Bg$1Yb-Z*gV1}`i)0(j%Wu`9js;0WN# z0}W*{hrZ2ikQMS+mdv`bP*F#wA+`t^vNWfS*qlRiWWD0n97#ED`k@n|b_Unloc6+b z4lRDjc&=)6OBpr|45pt0jNw#866c<-+ zud|)lk@lI+kam|O6p$P#(8SY57Jw5!-n+`o%yH@~LvPH?9M8@&IGUKQ&rFrI6Zvi0 z^Y(g-ZK*+j>^vQ}j$^xWLY|Iq|G_+xtvztYopWrv1KD9fQA)b=kh7k`>LhQSo9(u?uQ+ULpcH~@qBdpIHlACm zG|I(orP^2(myf6`7u?E^uu6G$v^>?U)ain#Jc}FqdtO79N#}yNK3N$l7I2w$WzHJ!ZSe|O zYeRKRI%$ePr5(WrlxSG-mI2vkCfOqa%gDjf6_xglnkr#hgnFE`7`(K&L@^oXdZw4O zxQhU+0Oo`c{o63vi(z(AHGEi{XbshNq-1=m?`L_!kTa{JxIg6O%7{CJ2R^W^(zZlA zV0hrf!*fTjBJqIX&WZSGAtMJv&#xV}P?|F^)R%(P^^28KGgxL&ZD}#GW}-AXSu(HV z)$|g<7d5d&@I_528QEIm6aDZWAD(hT_7<*2?U^o5;O+vNkx;7Pu|i~~(wTH*ydi!5 z1ShjuI^qbuG{c-kNDatHrM9C~#hn@EFPhg)KTc2dXvq+mtJU;fBqy@sRXn@m@ENHo z95O3}j-M{oCb;N_iidx9!XuyQEM>a6;T(;ZMr$toTF!+Zk)y~InwlquqD2@SP~<9Y z!qJ`hk)7qzcAE%GV`J0h26=#qU0F$A!BvejxyTFG#nN??3tewtfvvAZbf)o9=r0s# zjM#;)x4*znc!=oCqX-d{0)7$gbt6SKS3y1Ep|+JAZLv3-X5mrK(gWF0FJ1HrDYbUf z+zL4$Pv!)uH=N~K$RVwSI_OSZU0kfy>0O8FsU(yB!z{67LTL(*AdyWD&Zm|{v^gJ` zrYuqQ!}QByfLLUx_GJ!WS!!%Yf!W)j9fgD$q)A+z2Bm7>$-dGyZ9B>+6ht%ZZ6?8q z*^*dOPA`qMo@c#m3)V?5TLd0thEv$xEka^n+(9o}2bJq(>zK^ib+Ywxz4XkbnszAG zOX>W~X(ntnyf1$yvt48-?Q9);P@RW`ebhQEeFapmQSAZG6|RG}w$89zVf|ogI@^J_ zv_-bG^RTM6b`n^f<2wnd&+#1wr5f5{Os1Wk1eL3%XRpywFFjjisUa1%wk=pEy=)O! zo#Q*nt3Jnf7*wv8Ew)`t(kpe6QMq1v=F(9w{TN<LP{J>)dM^tLN$b;pYCKU6-P=y>M zp%%h09RXF{OJ{1}n&LdhjV*pp&>Mr5C0x)$yX}NSdRHPu##F|}m1kRIaK$3bcCLIv z5w2uVeiY7NOpRyTIr9%knA71(HKc6_Zkt%kqU5Efg}|DFU?Z^RAdrYTzj>y|!?uIi5yM($Etf;S!Xsomzlp#TQAwxd3 zu)wl0HHLKAc!qJ1jb{v|!p^es4CcU)|8XD_j~}FtGUO~I|7?vGVV>I@U;1%(A(-cm z)3gBIDA8^qn4bn3c77`2V<=pa@S-C1%J&bbK_232`x&uMGlYK8XOIvY&5Dc&R9^i8dL%pjQ zRk>uSBjyCz!EZfmH!{HP^ct=DE=gSidpSuDdZ^L0q@+e^FMFudLs>zst@>nihnE+b z3MFYfH<@x<0dgp5lQ=LwdTT!ZTkXsXt+-L4Hl zPZ^bn?9m%|=(A^|!txSX>)PU0UMgUB1oSqtliWuo8_Zne)uL|9t34?y>dv>IaAmx8 zp7pXVFs+wuiR*eBTZPQ&!psha*i2CGIY1$Y@ zs>P8^W1NvNZHnXB9b-S7+?LW2$icxm1Z9Dw4)Urd1$7pYS;$Ta)R{$zMss~`nq|E7 zxqnCxecn2#W1qJI3wN4?;Uss$re{V;gwh;-(!zT<X>Bfs*<$B`8E!N{~u(thZ@2Ic>ZPPcbDNFu9t{_Yu>7>n zfMd}@;FXK@=`mah(3$7tsr-i{1ed|mGf0qQS>0a{*Vx9Prxt5$??{w;rDb8twl>Mq zDT&$KF)^h!V%S7St*C@jSABJ!Q)zLpd8t~Qs#oxasc57#-7JgAwAy=DGPRSC=~W}K zn?7NTCzQEr^`mrJ!+Tc>>(%L8D%R-)HP`CXlf_B8j|Q^xbY-+ytxQ&M{A2|)jp;AYH3ze!WE>x7rXQ#0%pPk08dUhJS;@N5JYGLju`8RM#@?TH8oQ#|X#{E}Ao9YsK*a<|b_K&*(*pIX7fV(1(KG%9E2_(DwXl|q`v(6Fe(P%9=W7KAf;gBkAlt!JV zFpiMYRI@pfLuiFdJ%fj~*OJmY4DRi9cwSnu<)pL@Q@ibz_*rx5^@x`~ZQLONWylvC z7hCnBxY9P(Tdh~x-jd5xy_V&NCB6X&=GQ|k5=uj}*uqCnY0?kXv$NB}+v08_abQ3v zb>~1Q6|qpR!9tPyZiI%4Ef?y=@lv%>u9YUqcB2m0*^w)(!f2d*O!*(U!YWKcvDeYk zxE-G^jTV^?4RP6ZN*Ah-&Sf+YcX9K)Qgr{ z41Vpk_~;^+T1>6ASL3gjBsJ+Tg12j65hN5{ogM0Zk3I%!> z8D<<+ac%H4^ztbg?D*cM*$L`AeD!G9!MVM#uT_tjoUx)2^fo zq~o-uPUtp1tvw-aE!P(?Y;+fa>kLe>bj%+gQzS4%G+9D7L|w-o3t?+^vg_De-QAr_ zUsUYg&ZSSpb}xJMLecJJk9Q%uZfK~N)ON4@5W*r6@vgNk>^;;j=1)96j*kcBd1mVx z_QW$=*RUrZ99_encxLMw_QW$=*Ra>+BUe1Lb&d37Gh5d%D4E&1hrcc#z3haPZRS0W z%TmwNTX*p&p5wZUNAX10T|A1%OLy@op7OejNAbMZT|9~>zwY8uHUoASmy&6)%b5J% zFt*JTBHc&EW|aP9FQDb;r2-l|aaC z*J^^0+wN8eq5}Ub%z>5Bu2ljnqut&AJIm$mVWUR)k&bLYnT^ z0xP3ks{&R=ySV?!W7QF95a*JssWpI z)@;BI3rVkG&ZMN*&|xucD>cXykoH98)#Mnw>fT$3j7EZpJv4ymorTE6C#Y}`UB#m3 z#MB(gp1wXcs~-uPNYf(8)4>96>*~WP?=XH~Z`1&sE7dPA)lW-lSr%L=F3H?dS#g+_ z1J7(dQz2)7*&Sj=W6@U9+@ZoMC#vGQReJRXib)zo7*rraAQK^wbcXPV(nOPW6f$Uc zG%b?rrIOR)e>P%XU@pWKIq}q!rP-o0JUzozFA52HXgj52>TIoqcdmBo{bD4|_Vv-5 zZlNVo5~5L1XQEbW-&shFUheC6B~cYYj%Mn_KD1d}rHM#a2{U9F54quFCB1Lep8J|F zY?>-Hao1?AhdnNBKI#ieh)NrcY^Ah`U-#mrW@QH+@~%vf+f_x}Ta&!}8+bHPSc|!p z)>?cd^{Lt^tA&$>wHkjJYidpOfi_{*F-aS4^-MexV0$-L>!T%Hi>POcTB|ZdHs@8D zO#dupurlfv4CE*edeoEqt@urPVWyN7y5Z2yOa;n~FV`vLY z8$IYUHie~4o#I}+GWSCpObTl;x6(Qy{10teEu1v0)wDFUr>KT8J57EjFJUmf?<1-p+kZ5O@!IO|?LQ{P3!lCb-vrtgz? zA#2?`3iLg3UTVi>M(2%Mzu2gC183sy>;}%nMy(q-6C1T|;7n%Jx`8)|QR@oUx_1;v zjN0+@C3(wM92T3l?%_||wcW#?*vxege_~_TJ^aZ`UiWY)F??ObV7HGEixH#=4aCXo zhV|-DFU@k)H<+07sk7J()0+#6-J^(BMjNB0T2Z#qx{B@HK< zTAc>;=@U>!$QXz=R5PU$Y;#+ErctVmHHwY$lyFB&yWdDgY4D-lZzQ8M@uA;uWTn-! z0ZhA~>Nb*;)SUwzRmeiUTHi^pE9TzTA~!2(8=Ork3ER=f?`oG?DNVd-o9A*8vi(Xg zM3;b>xThPdxQvth=}ui7Hc`#swR>_ovqNiTB=*+wl)~1^NbIfUDcxEtr8c*Ax>ReB z&1Sj}#yv}*?KiY`BX_8WY`bfc7t~^i!k&@iBPwpP7EM7dCK=hQ@fZFz8=L0z%pBk4 zC90uABGb%;pbZ@qms-nAt+A~#Zr*0K?amfx=8vAAVJ~6Zm~|~--;=cz*;&C2!cJpc zMnFb56x&EA;R%f{(vwMK1Uiyt_jp26SLl@ZH^C|; zuQrJHHVbq%lNFbYOSWZ0i_&$$^lE-EDjC2hg~r3H3Ku8nq#8gJGmOS-yNozLpxZt>K6_jy7tb(Kxp+pNSkE^X|&%I zCkT&Caf0yJl=?VvH|(#%DRaZiNn!^5Fa}Z1f`sJ6}&{NIyRC}|jq_|9W zv~rU-ASo`Fn*pGD15=GkwNBhMtW)K$jFe?$>QZ@w>fFf4`1eJmX#C?MQZh^T$tvZa z6_KLxZ;D9C^w&4&;~P>k^}6^C1^VuWl#G8$L`tSV&9ROuvaF^2BO+2XgjH$(gu*^rP2GH(6C6BjmA_Fh}0NX`2w7EXclSg zN@6JpmTsM_K!lb&4rllk^e&?^|5cx@*U>$6%U8pTpgY*( zrApPxxc2Of@T~&X7o@KVLaX%vnXk|TTm1>~)#+D=?|HyF;A=CsumV5Ipw>~Tl2=KY z7@z>M@QWJwDX3dMs=dWHUTHg? z)w^;KdFo_lCS$KNfb7-F&R`)H-9gR>niNi=9o$@GazNZA=O3`YgUn&4s>5hfIH{_0 zvNO-)?!s#clkAywmP?A*SxBBmVTgw9z+hz3ZESTUnJM*E7umE$N2|}I3n(=MjyJm@ z9NHYR1k^@*alA6!Xcm#4P^1x|)+Q)6)7v|>!{~-7=rFL^%FF?@u0M|0{>_EOa(5Wr zFdrQTHe04Sfc7Tsmh6ikfwxovXTTg~(>nYd%Ex5dROaW-sB{9^W>7i-DljIUg0*&? z9k)|Pq!Y+C1JVglf$``Rth;nu8gyc#VQ0D}aFN02B=j7~#B3<4r8#s!Itp$w7ahgr zEJnwXjV^S6Zr^Tn6x?JwI*Q9#kB%dIl5|VM+-gG{SZ@iRHzRX`K6k>g856q!^t^{7 zUCB_HbOP9FL^^?KHz1utwe*@DwnK)a6TnuZ(Fshu!RQpKt7Kam$U;M5XSpS8fsyDW z^4thSGY-|#gkZ~IfNnXAi$1D*3FFlndT${MjJRbr@mn4wKS5kxGHUeDFxxVbmzVaR z6oGQqa)uUbg&afH9&?J88-~119E$J>W@DR$W;co7b2j!$9Eh}dnU*p-K3y(fScX^; zCYx5%g0)^AVJFHaw&L1PeOJRElT13Siw3p*E?H@rNNMG+rRBo3lpn3n)JVF#x+TN7 zciEOvhsK1stRv%^SS4j$*w#zaXS4mVTv*A5RDtFFv*(#x12Avnx#Wqnd+?sH%4oE> z_1ch)Pt9R_2rV-~2c@WPXN59)mhRrQ10d*GS>5uUm6gzphNg$UDr>W8IK?LIS#SIj zgqE40r!+(z<2Kxlz7 zd$QbUlqSm9=T{vQHT#@dUQ9MV^B@KW$X%Xca|i2H7}LA`=$%B#p;g9xgX+C^PF0wk z1A84(`Es=Y0^EmsMAhgIy0`K4j+UrV(fttjTOW}(1d%F8_bhDIvvP2sYXO&6)3g_+ z*X&wJ@^csQXEqEzm5J`*0ep+U+nBWWfwZYyFK9N%=mv5@;_(~U0<&ZCHM)*B8mM4~qw9F1_b7EK zZ}fhcF6E78hIT1$G%vMFc{8~OT{jlg*DSkKa_l~*Ze^~U$Eq52qcI>&>5h+IT?qX0dw{;hT!U?XsSQO22UB+S8 zk7RwmD;m2jTBd>Dy&twmrEVV?aO9CFk|u+7w7e3}k!eXKBx>ziiJ#D`q#hcV)hZe* zH9PhGdK-H}HXmWAKrbp*L&rrcmtEorx^US|1KGkVHrblnYNg5l1${4MwL29+$Z8jB z0lD}aNm-qEbA1j6zm?1G?0YMhUEJ+E%jNB3rCr_M^8!Y@v-1Uvc5(mjDwoJj;9WlK ztz33z&s(|d-fpi}YQ_a{TISW z9c>#sMlxLcK=94kG6UBS>*>;Zj+IMy(PfMNHn!^Fi-DX)?E}b7Oj0O41I)Ba;d!st zx0b3s>c3H{4F%-G;T9Qo{DexXULTX)lq9+D+Bsidzb#x++EH-E^`Mf{F4Cgq*)5F| z)AgAtl4)jpZeH`WT1{@GdSOR*%4?K}jLY^>-%*yJL$6K!-0JFFT^}3FV_$Y^rZ$RH z!MTN>8{z2OcTzgrN{u330U(cG6xSi&3Ti^mm5d=9bT~3zt(ThW=VGI|t6E0Pp*N7X z7GiWhix#W(M#ENVaUF+mBC=JYlU8cDVy1$-=B+J|P{@%kn5iISv#zvG4rL*cV>K!h zwGvGHgfpIiOp3V;!+W&OJy3$-y&4BC>7{?@7BhvRg`i;9np!AKiUbn%3f2m_1b(zW zRvz7ffr7&qOdB>Uy16X`@*I)=G)2gP$asxHOvSazi9~Id6N%O?Aq~A-Ry6=}0;gIi zf>RxO_P0YdI*mh3I*nsxok-9Y3Bt&%Zo`*$25!&&m1DR0fSNNfk%s6scgMM2K8l!_ z3CC0#B4igozy({K@|G%!SHgn&#)VW446@%VBnUl17KgoJ5=tjfEeETOQvsspYp@+2 z5*lph2LwT$gW;gTc6cyou$>ZCaG74LAd@A!%v@2QoT`>* z*@|K9rs9es^IJ#RzxQbGBo$V!E%eg#iHgsXy(`y}^`WrXI#S_SeP(O5T(sASCjw|b zgzuugE9v_U!gA|Ll~rk->kGX!#le5s-j(ZFJGaglDuVlW%dW4Lt;KnLL^pKLoWwXP zc;w6uRlt(0wVK;XX89?V~deMZo_X2jYQXEg_~JPj6b(Q6;#!eRWtE<320i|8vzdy#%xgvMUEBF1{s zUZyxq3t@&P@&JeOF5O}vsPPS#w}13F zh>cENhpLbN$m#gkf8=!h^FMMrb#1G@&LpSf9{`fm@hGbDw=<7LhI{pnHIh}D? zKQ+`^yvZhKP)hifE*~*C@fwf8fJV}Oqa5_-IGsl zgBdcOUNfwkBs`4JB1_F8u{?dSy4rbZHL}4et;S_EN-L6=GpcHor;Rp26uu6HYvzca z?$_P}(%<5ch*K18$G>UCEl&{o0AV)u|4@VICS#@6krp8{jXYam>^RK@E_*GYv&e&U zAO%eM9aI)ov;d{)_8n^eNJqv5LTl91=!gz=hNX^nXlGa=j-Xsl5_`?rG1E&IvPYLZ z!#KT5l2i5)~gNKQu4AC6qr{or(C z%e1h9$U?T#HjhTKZD=Pu*#`LF9La+uBy?7Zbd#xGzbm$xt%$3)?C5O=Jm)X_s40;Ra&f*Os7g8`_L!YJAoR zgs=dLOHOBDWpSMvMG+O2OuqUA;#gR!fA-=Husv!{v_XuP1b~sKG*nncN41EgxNa3& zF&ZD$2qG;{9u*UmH%L&PxmZSd*bp`r2m|b?F#&{$3K**0X%x5O8sf3?m^c}%V)-u4 z+OkrS*R4&7a;%>l#qw+kX^F!8H6WP2N^3FENb0DRN2AfCv=Z}YX)S;*Pn4(SAm;Dh zP$b+=*2iY5b?6Z`+|AG3L%V5*hBVQsgfiKgKT8=h6G`}~PnF4z1xus#v^fWzRU@p8 zqOi2{Xml&>HXNnpJsA?W(k=3?*4--amGQQi*NeBtycox1U)4{8~my7A;nrzKUo)vINc*2R zowfnwPUsoYYCmP7*5*WO)iOh?;?U1hL)(}tk5-TseWAmwYNPRvCbr!zcu^yCzpEiA z={)wZ=Or!aHte*rJL}W7Lnjxi--x zndEG;gUM}Sy9)2F5=m5rSP~&}p$${4*AYu9Rt^o?tOrW0aOO8`^_}uTIIF}_)f-@@ z()YDNMLkX-l{SJl6hOwDN`p?AEYVAoCFuT!jgrriaH6!NMwm(KEOkr#27Q(PYSJ4j z2>z={Y3Nt7y=fMaE=XM9t)5S)T4{7K5*l_w!A4^Ukr1h86ede#VPx?P)j4THVFgh< zA&JgZpOl18fe@nb*$+Yzy=C;;c_9g(^B^SQ(;b8)e5Qktgimr1k{C8bDi=c=q$Gw) zNJ+H$3@HUPHABdaHJ3q5q%*{vY%!4~g8@WXOikg$M6DTA>?)+nAvAzPNN%)h{hnx5 z$%tsJ)2X#;?@Zb$Wh~k$WenODdK!DGc~Z{_nU=I98%yo}VgvI$>M~!9qb0T$yYLa`Y?A(75;@fAfw-q>_pa>gqYkp5q{L9_k=VX|SxKo;G|IxeB@U-vtu@YUWy|_qjYE^365trK zkCjP=V|+*Fk$AKON9#ZIO`n)!6NMg`*1^gX#c`a;E)kEpxRyJ(M0Qelt)|{Amgy^{LNkKbr06=lCL~jvi=1k#nWzQ}$uyQt zbW=##ZM6$n%zY4kaZLc@ShU6A2%+d_Xf}=15V=i#DGHwcq;GM1s)OXGSK(B-5e=N zANVTYUiG3L@Ke2@1N;;h%HJP=L;F39A(0EK*YBl#d(}IN-$V6I;`dP8S^S;=9NO<` z{5W=iH-vUsaO?z6EI4(8CjjS;@Cad-gPyh0q9O8CzP;*2o#3Z>K^OQbF6;n*01oZ< zFp@;$K(F6R`Sz-J6u*b+oy6~*||22TLa9pMqe zEC>A>K6M8T5m@rzd#j-|dLgZT!3l}rso@sA9wVYTxAkZ-!Z~P=DRWA_(auBWI*EUEuSD956bZXDAzvAU?FJHxCjE({dh(@DEhcIQf+ zE5j!gkuv@Co)+v(neJ)f%UDv2NFkiQAh)}aO)7J-9p!1{?HM~to>Hc95seyvlofZB zD~k8ikT`bU#I?H!R}R2p30^K_k~F{oXt4>8~XH!*d@0#2VFV|Pm z%i(F7BkB+qckE%~ZhBd9X``8%nl7iG+KRh3ee;iyHrG>)D$ zD)pN60T9jSloDtoeP%0v2c==J9j9B2Jn>DGQ*uB@p|k?%A}1%v1}t2CeB5uxGsyhX zacF+e0Fqx;tB%*q){Y^vD-9q=Iid$i`sC3kq6Z#5b&gLiePeQbl0Ne}&~5#_IUGX2 zlPQw*Pp2?xXvPuKUk`cX(?6y=pMLwu8>g+H8oV~i^3Z?RtNBy~yceSNxCF^fkQx$u zwu|<&1j)Uj8Wuu=8e6++{$I*cZ*nEPh>N?miTQid;_eMm0UFzI(qh!`H!%ZYRU?b6 zaZZAEl==h)J2LXZ6AkdTFDbg{FQ1F33D-z!)sKI-SeV0 z(Oz8AI_5B-W>#Enk-fOIF%|$b|Hd01e4p;IbW=a#Jau>SCD8lhGOh8(t6$KK z-N2Th7rTM2F6~5t@#+R?35{1bFeWlyUBOqEsy(}9kvwchFCw9y*YR@(lsNhLUJ1lUK3a_3~_v38+Aem zNqo~1CD+32LI`Q7&H|!_+GQ6f4i#7?(FHS=a2>Gj& z90>Ufl^h6-iyuhdkpm%rxsn4Rf5nmmA%D@51EGF-5xu*}fsns+$$`*FQE_Rtk*wlE zXuXEXp>pd@bWWr?qb#4?iPUm2({yR9GAq1n$n?c_2`agX&Gg-J^(p^EhnBO9Zn0Yk?4cInJuVBR>Y|qscf7ok{1$HrJtsj*iNUKWJMh7k;#GS zI-aty_mHfJV?A;)IMgIBB&^HromdQAQ*+#NDsgL5fh08$_mx*XFPGN&tcti2_DW>3 z)=ZJG5?LYV_Q*;J`o|ERtdOjKUBu0ACZ9pVkY^NkhNRNvSTaw!5}y13iP+LljLR&iKuKDeru2FwLUc0fvLcS{ zkqXACCV3%YUEQYiBy$SMPUh>g>*IaYd}A*pmZmYx8m=fosYe2yp63QaN&J)?*e ziQ}gWx{c%Kxb|A3S!$N8M@ZBYBGcs(c`Ju4xBZ3EaCn-gC<`GZ9iZ9`En^iI3dq_&$6rP*KR7V zD6){sDEs#w;~CYpgMx3lts@nV)n~R=%SC&Qc-eyPI|^%bD%!h} z-bgMix1Lm4mDahw&`Y-y{g>@sxt_Ii0yZktE{k(7>cDj8|qOk$dF{YcXvw1YJL z0ksf3@mGNZr&6oK$~2m-M5fLLeQ#i-GC5L%7RlLwROTl3w>*<2}RXXG{)3fLLW zpl$R$=WguNIT>Ib6Pwc@^*0OZ$KX8J*EW$I?Q6@}gEX-~qCzdBA`8XAzP1B92VEyu zE66kP)VDkA$HcY|?r3G( zfgi+rhisCG{o{6!Ns`(eLeEWS%7=j;QMlP%KUiK(uOCeC=W2cZ;LQ<_bETUd>tuR+ z=A7twM_KHC4%NZjC{NSZ`Pxf(8*xJO?Nm6TwK7Nyz$OB&hY7fA4NsjI$15EO zPOAYlrt_UaRHH?m0n>v|or9CN)u*!Hjbb(rb`p_YfIcm1u7CF6?01qk0w>4wugo3< z*b*q2SUb!oh3qh<#w6|-9V?dc0xP**5myJuk0wkzk@ANV97*}(367-v0R=}={)mDj zDSt@8k(58C;7H0JRB$Bak19Bl@`n{1N%d0zY+u%?xA+4Kj;Pin3(mxP%h(Ij&cr&y z?AU@cvGw2rZC<0ft6H`lUl@+C?R5soXhJ>Y%!0L$?PP-Z2f(MCLVUnZ!7!3=RaRDtXFR1#3RB#8_3JR$}FnpjZ4jY7c zM%GKMW-^Cr&1CX=ab@TPDs3ebW;M+XAQyVJih#9`e(5M#x`?sddYy$Tow)Ia;Efx1 zEpq3_D~5<8^98SN*_2e*aEUxUaiL3Ez24P&6RQU1C@jBVE-m#6hplHXR~Y+;>quh_ z?mE|8^$vW02_`<;ui{JE55+^OP<^!2grj5Ro%qL>3WTcx<_U=bp0pLRHpJ~(!nn*{ zy%|uJwxmx1*1_8b%LhMRF@zkM?lRV_kz@c!ltsUHml!wm zHO3m8qquD9?F#48TJL~{PIsum24IJpYyft$(Va1K(tZNdoiTJCYLJS>v#GOH0`?8D zi;bPBOtV-k?<{UB)yAsjX*NL4E0Da-5thZ-z?pg}1*2n5SQFl0SpyJ9DuKlvSgcgb z4(D$4(JDM|CDV9vHi_k0OKNk|Y+-G(LZmj9%q*!*+P}`NlNTd3s;SSGDveH;$wpHK zG!Z#<5;++#vPN5BgaR;NL@IH1kKZ|bU|X)G!X1{}pPh`XpE36^ID zbP<4~AQ(WuBY=wt7z7q|Y*knG82AUbhI7zjb6W;b2fe7gFLAXD;J|=iaf^8HilMQg zKR-g1TDDh%E@LN5^u@D>^RpuZ?1HA&3e%XTu&84{A%DTKUf06%dR;{8RW5tu+wG6nyNR9!v?PVyrKcCK=^-AE#sxj69}jAvei48h z^ZMx^8Gw5OjKe{VZS|elE#2k23*dv(HyNA&99!ZAz@;TRL}j8@s=_1na<@^#nV8=~ za3SV55nPD*Z3Gu$ej~w!nBPipA?7y|T!{JY1Q%jG>`w1Kav|oo6kLe)7(Lxoa3SWm z66M~0kpht*qfQ|MVAu8>?0ix2rm={gYl3}8E zAzp-5SJ!C02*8bh@(wj~za#+eO`xw*GmHzS$>x{ThFCsZjfmy5)rvIhjfP0bZZe_| zcsFFF-2~)Z+Fd$odE+HVaOH7 z6k}_tY3v>ZIWLla;RItc>q5bJ#&8piXCS)T)K1NEg7FODCK##8aiTHLQbO7IfpHU$ zA1t|q{Gix{#9uWcu?d`r=5ScG#Y~5X70-)jHDvuHR2|P4cD-qf8IfRo@IoC(lkMYq z@uPhXvhf4sCLTXnb2Y5k6yvZh@I(!%mKhOgjc4;k95T|8shb){uSL;~@_ zhjkbkeE8Q_p?UEG<0KY8ICDFEAR=VGc=yvB6vl_<(nXQU-m#8qjTe#5_+Uk>Gb$^d zb#l=edj?`Qqnpm zX2+7!b~u#vd@UUvmu7yol8*e6n4+|#3%|m$hRyIVVWX@g&q5g+WnH*7moDzCG`AHo z$}4qCzQu+@aUI)qZkBMT9l|$UTKgc$L|;V&M?V+UFgZsP8pLUUW{JcIW$`)7S4()# z^3@WZYnH23BUeM~Y)7G^!}y$L+5jPrV+Z)aap?>xl3}CBqS3*Z)2*AhWp#HHwWgK`gGFnyHO8@z9Jm)6nU)DIqhCEzr3@Mg~Ku!4-#T7hCXf0?Sjq zI-N_!I-R}dig6JdatLHIjoyi-+%va+C;3|>jgL%1O<&b;7s|R0)!&6t(&E=jl?V3Dspvx}nfl=%srvO*yTxyA-8eBZP+(W#$w@^#NKg$H`U~o%B+YuYz7zSdmU$0>cJ>yX{5$r?uu8!1bYNOw zOol{lDPN889lK=6EXD647>!}DL(YPcgi!LQ3u$p!Bbk|+a%`LIyQOVBnZbL%%Czje zrENT!W80*pdfTQ;wFZX5B35HZ70-_>6@>0m$;}zk(gbETTh)LaZ#y$I2AUQ6p~S* z7p6-nzGkCv3v3&Oy)s@KEzL}9YZlA1qva{2PuCc4=V2K``=T~ho^GQ*q{Y28PFmb^ z^Q`O}67tqJHVzDc7MoxIw9^RnoQz}nNTytK(e1mu_tj%Kj8 zIcI8(ZIy9)P`y4@9^HX8AJT|4&v&3uAbG>VLIJ-MFUC&Z?~lAV>_oqF6qj+Z+QaBQ zW}&r}kW6U7oSq?6&_Z2X$&jP^9QSwe`gF9UR;h)V1q)hAVUPUCe^-R^0M zDVYwKM(K77JTiPChI1ckwhtb+1BP3F8Yt??wVnD^Z7{8xVbR98tW_`$h0UQLjpR52 z$eQFCK;9lR#4J6;Z|Thq1v*d7%1&j-8b=kMOxVy`DrqT#taT;?)>l#ldGkydYER9Q z>|MiJ7}K(QLsYesBDgn1RXQnxmxf>sN92ijZyMVI#lCV4i(dSx{(*~Ts%8AOS#C4~ z#g$VH{5CrkD6V4Ut2FvmYJpXKYKc{9kyW(JDpqK)Hjbj}N;Uj`ZnI3#R&A)%Q17Y@ zHTth3TPqWRVm}T$VbRTgAmJPK(+;qJPh(h&*QepK(ZB7amdW%ZKnG?f$~#IZPb*x* zcwM9Mx<=!1jmqO1%HtZ!;~G|k^0;QGUfmTau2ETC!&qIzSY5+dUGtjqbUjd9yLGx* z-#LmOnzLg>RQR(}tFRw%mBn`YFEcgvBSl|d8%4WV6>1Hv0*1e#Ssx4F;e-0vEd2wL z!(YbPU#jd=RsBXpg^$&$`j!1L!~S(f{fa-ef2V&=GZAlSPS1{$F5k#vOyma|9w9&M zq+uocllpJNqiE>l)1ttvb^QKk#gf?I|Zv>`esv4b2`YT%z&tlo#oQ@;uO*t z3^E(tI9_sT_K+)Gum{N4;p!Y^&OCc`%l>^69pl{B09RfMuWB9zk%76r+IQ7|;lA-_ zGOgu`gZ0K%+>dIL;igH%%S#hw#LV^k3e32hChN8GF7rp8r%lbuWZC@L!mql#F%}?# zHmNlFn#No|+y>4o8x!%s znA+gz`TKjnaKg1;J$lCB!j)Hl__hyi|48a9Cw=bbr#*MaN8kGN4LzG9F2_%vgvD%rY*JC+qiKgnLSpr;mt`t{YE_Do-@LL>~Fzg~cgJr%Ch#UyN6j#J> z8@PnuehIsdePu8!l`p{+vFi<&mjTlw5|D6dtfjAwa*nmy+Q8eRR_fFi;;q!Hjr&&W z)ylS1ug0|F(6WvvUB)cS#*Jx-tkJiuyc^@T@^rfH$bjZ`PRDI~;7M@X8X!ETb^p-X zNBVc&O_Y?^+(by(ioyCBz0}f(9Shi2?w$oM1U z2@O`2Q!+3(Oke&? zt7bVa#l2!8o5Rx-G{Zy&5&q-rW2@p$c(fwib|*j{QLB%aKvpk=qv)_ z>onxkt_Ll`?Su!-<7zU})k`j;enUh&hDm=wV-b%CkFJQ?_1FbG&=p2o4vDSrssGdo zb+^bt$8A?lWVmgKmzS+2fzBo)?YnH8Y2Rf!ruq`&u=cJQ?pAwbDeGp~ZM<8`yBK#~ zF05?54ZiiVE%L3GZ-H-*Y+Lk;wOK3c#FuqvcwoJVw6sRchO3CU=&m%gdLn zX^x$}q_Aeql5+?92R3e4a_-6vE6?4$vhQqG$3O6&IR<6^+1!q5xi*2*GUm{#E#?GG zX3DG|8f0~tG0D$Pb&_wS{qx9g{C{Eoue;yO|NSuc_jv*9_uWaJK2RWk7u17)-J9WQ zk8#+6fc5W>>fafj^?Of_#|!neRPI2S(+2G$4G;qQa^eHDHt|9xrxpZ?CY;i-XVFMcXws_f4^{Tc|&$Nx@Hf7bpu zf`6C?yk=lJPzlrm6F{p3s(~_)Yk~1V9fa3V8YK`3D1jt?MFPF}JrGzEI2C1AfMzl< z6)1sz7q}_mZ)~4&Es#cmTMsnwYaDefq14l$uH)ZJ_?HTPssU>}a2Bw%y8D38pk*td zHK+msJLYv1^%a3v;LmddGe9Hsgoh>IuoBoxYnldc>kmY8ya)?Um>_8uQSc7u^9C#JV ztwEUyT7pPz3Oo_1PXx9BEfBaG9NXI`liAszUIGJ9#s8L=a2oV)M1G`gJMjA$T0{Qp zp}enGX-RJr-Zhz%zpJ3%3mc#&buFQqHiObc;-u$7 zRN4v3Umxuo9^cwSZvE2-q_9pfv_9qS`4koThT$Q*c zaeZPWd46(BaxA$mSxrtQo5|VaMakXCi<5hjmnQcn_a*ly4ipD})L3d;s+yWgHB+;xi&DE&7pL~5 zE=}!C?Mv-X9Y`HaU6HyfbxrE})J>^dQioE9Q@5w?NZpw_lDaE(PwL*((bRpZ2T~8E zj-?(+J(_wv6-dudpOjvZUYK5#UYtH7y(GOfy)1oG`j+&e^x^dF={wSQrjMlWN-xfw zky(;inpu`vo>4N1OeWKl>B|gc)?|h<8#5!B^D|pAW0`H4YGx|a%*$AagKtMdqr^HJR%(H)U?g9LgNd+@853b7$sA=B~^=nR_!wGxud4$UKxe zmU$%eXy)-uAUi*MQg%UhVRlh=arTVtlI+s#vh4D#l8s~&*-W-4+m{{4uE`E%H)cn& z=V!NM$Fke9)$CNZnVrpEl--@ZIJ+l%X?AaRUv_`?K=xqvitJU{YqHm8Z_3`1J(NA1 zy*+zJ_Rj2)>|NP=viD|>X79^BkbNk7Ec;0I(d^^dKyH5Sq}+ns!rY?V;@lazCAp=! zWx3@!B^Svha+zFDt}i!`8_I3WjpWYHZOM)0w&kk1sa!KRo4Y8tJ9lwzPwvv(-rT<2 z{@j7w!Q2(Ot8&-muFu_+yCruhcQ|)@?vC7@xg)u|a`)u!%^l6%mwO=hQ0`dnk=&!X z$8&-F{QODz1^I>fMft_~GxAIFOY_U}%kxS;l27C_`JQ}VejvXlKa}5?AIYDe-;y88 zZ_8KnQ~73oHh)omcmCr1p8Tcxz4?9l{rLm=gZV4+SLLtCU!T7ze@p&Q{&4>G{2lo_ z^GEV`AW3K<|`*D3zUV*B4x31hO$Iisw`8M zD~b|P5=uttQTmhtWsNeVY*a>+^OY^in6gc&DpN{RnN==Qb}JVvdz4F+y~;jizj8o1 zs9d33rDTFV!8O65;Ktxc@ciJG;8<{5uo;{UUKHFNyfnBsxG%Ur_)zdz@R4A`(fVBs zn|BbF?s{0c!?18iVBL%b2cqE>P_rynFSE})g;=AJ)$1jav5x*&Z zOZ<-bo$({_d*a8aty!d6nPspnL$E1hsx_H~1vv=YaZ}=!#G%CPiF*@A6OSfNN-jt) zN-j@kl0C_xiamq|AcM z!ptI!?g$;v+DNWq^zOsBy-FRihcHU-!}!!j<^qhy2*#l?0=Ljnw@)8sx6qMA#?wi3 z{E(4D#>^Uw6f#EG=-7`DLB_&e>L_>snoo4z(Dn>8oai>u>WiVtM2Cs?-U*F;1iFf; z7S7}t{9dM~i=mrDE15oyK?jNUF}=H9xkI@}xmS5eIi@_KJgzJXE)6aVCW1sC2cU;j z(87y@d!U2+g4YBO1rG<01n&yo6TCNgU-0oDnV*-aGjjy9@%fmCr}P#OhJsMgVUKCzV=h>m~#_$N8Yqy1Whxdl}g|7%-6}~2XefXyEq3~Vd`@#=|9}Pbq z4n*chPKqpuEQ~CQERLKJSsKYidLko{ZINo^qR8&Z#Swm{zKYJz_tN=TG!rkUv+ou< z+p>9fALiCWm{r+)dNlf|WsGc$jl{Oasu(A;vAuMR+!VVdb_nC-UOGks@%izSF!L_M z7|F!f#E0S=~lRm1BD{aP9Fi(n}RCLLq@bwBu;$W8Em?}guc%;fPdfR`JAe{1$^$1v+$3O`ot!5)Fv z`e^j==z`e7*rM2Cbyix2c}a;yVwu>+*cis$Z0w@g?%2h2hT0q37u!$gsjFg#V@EJg z-6xo*GVwl)ziNC+pQl!21~aeCl;De9m|2*OXK&2DB!3S411u~9%h8?BK_3P&e~&1y zS3arym-5o!uHX&9zXVUk>fqJZS)V(zeG<4 z|DTS1KK8ZP_hUbg{Vw)!>>shG$DbR2QT$c$bi6;lAzqAck8gobSj)UQb8_~j@Y(va z?}j(_vRpR5IsexDhv07nb_W9I19w-`pij`yU zj(sflh1f4+e~kS-c3S*(@e48MKM;RXBAi%(mBMEe-%8w{_-o=>$ydN0txmo^Sx>$r zc|-Dxn6V#Arc>{RCAl>H-{}`(#NV6=!^3QzE=XRN{2JC7Ct@w}?9_`>uTG7p>ZvPJpTRod4p_3M zrcX`}rq4|er?;oCOur@*&DOKSx%cFD!+B+p6SntV99J@pb;!=dy{`d`zxrBBPmu_`EL-jul^ z^KE$bzs&q8b7J-t@X}YqKd)rpn7usviR@RizkrYZSoTS|XTzg@d9FVwMzC5WbJuTU z*T&zGcxLj2=#Oh5g`XtPNDZeNsduG*mpVJ0OTQug8LVW!o1UL}M&{(qOTgWInLlLa zLnG7KbF=4Vw`UvKUEuGn+4p6y#p>X@*@v_L$UY_a4Dfh*?!~!aE}qNh&drr_+jAE} zW_Q6?e>itS{yF&<#-%G4W{yq7e)F;!w z$UHX}&fibkbTkmygFm9mt;#a2=U*4v8F~{|?OzK0B=pPBBcY|?VECNyx#4Z${ozl9 zZwr4Td~bMJq&G4cDMsEA`C#OR$SslYMgAIjSu`G989gsL5uJ&?J^I1uC!#&cOOjts zehVwTU#7~L?V0J!=Q6iuzM9#SeOLDV*`H-^#=0Vze`o&I{C^QXjs*}~3ItvmEQSt+ zmqgEopZu3-AokSQi(-xVNOC;+v*dq)`=_LymHG=LH=B7M)^MN5T$`z9ug#6+zXRWk zL`uehai+3DX($&eAB0Zds(e-XmGWEV$-$SxqpF6#6nC^u^q>@~2~7isx5C2lnM}Bz!KM7dV7JPFMa# znMV+Vw*-em|ArBAApC{!lOk6l_OK#)V(he7G}a$`U2IqEofyGif=#+VHZOik{AKZ# z@!|Mn{O$3}<2S%(|6}|)iB}|Em-y$zCop!Nm&_%1LTA2}yg&KZ6_Dk%dE?O6!Ux`_g<_JLztg`OmKVV5z`!42ASWfJRfuE z*I~COum<{R=&{iA;A_4v{HE|nVLwiaoELdh6c};VWs@c+}XL$8m&3mfpNg6B_Q>xdXGB*)+b)XU5dC?y zlKpb_6s&f?lsh>;0Z$>YWgcR>fxxqsKL*D_o5Ft#HzV(kTpRgTBpuz1b=cnM39&O{ zY1Dg7{PD!z^qrXt@`0&&fki0ui^P4Yhtr`y+OG<_^Z&j!`DWxk8X*b68}d0WZ2~E5|1U;r+%K!W4@cnT$Z^SdjF*Cr?Ni) zk2hg`eQ)j*ta*=MjT<;PFE9(ZQ;BcrBdUNRJ&~UgBeslQd@R9JZ z!slR~e=gelSoGA`3uEWS9*dnCe_=eA_-JA+EZ;LyrPR*UJ2BFp3N6_K+p-guB@7lGWn45OXW$yR|HoFHwQl$ygj%m z^zzWJLr)4nFZ{#s{o#3$XTTG=KQb@+40!GLN9V&+cy;VevF~BtzdU|h{OS2e>+y>?@@lJ+!DMy_{-o~SUDdJy$BxBGa{$Lsy-T79DQwcXY^m9UyN>!y)kw} z?7Oj_VoiKa{73PpBwmzwRbo7GLh@zF*Cnrpg;;?(?-!|;!OHfh-;{nEeBpzL82vi^ zVEP4_muFs;S%IFt7`<{kX6YYheoOrT1tWh7+`T>fx$L*IKgvEWcM4XB%MnMJ%Uy$UHh<%~PJE6qL6d4B4#%po#vj1Kxxh7l6eKYsH+(o3#ffGnb zCh!`i7Tg0~Z;#v?KRq>+d0+NV**6fZg(uLt@+C?W>(rNEo?I0EpYZjOQ=?}_zZ1PW z_9gf*Yq6$Mk|$tI^ddwSOR0ZK{d4Ma#1DR!`gQ8RQ}Ohx(;wId$3-)A@h68=11dGA92d{*mc4zS6;KI;zLov+yZ$ymyOKL%X6R4Erq`_09*g|{FV7@^FPW5loROqdcKlYda*A0ELK53QU0b31k0GW-Ur)w zVdw*)6R}QtX?QJW_)EfjfaW?s`H zLg04%F<)7)R1nGgFg)ic1s4Rv!F7n#?GAn%7UP?t?}Z)?Jrm<66i$X;AHFjDweYv$ zE&e5(i@Y|nHByPZEAnIb*N?%Hy%cf!Cu2SHvDj6y&tL`fr`Q6_%%{im@wdUd{&f7t z_)p?zAu_)ru{u#td_Hkk;^&EfN2Kfr$=@Z*(9yRey8Ss=+y8(c`#-5A>22vtU}xS3 zJq={eL`?b>h(Yg%)jyQ^8npCA*x|ukVCV$8b~!ipj&xuP`}rA>Ey=*t33Na0H^Fdx zef+iY4C=2jyD^%tyN7}nj&OJHe!7`!R;x6rNO$HE)2xAFSeCu7a{XX95V{xfkKZ1gsa zrxJSLM8wTjX2-K{LoE7R@FAX_Tb27gk@?;e==$nQ%4NYGNcJ<~?XbgNk50$J@wM>^ z=IO7*e*ycDLWJ?Xi5n8%Ni0ZCV!z>P>?Z_Mmmre=EcE%u5qWqPWU?vqX!g$B0fKvw z;jV{W{BrQZ&`YrbeoLemdoZ)nn_U6xo79Ui#hECvLp<=U5N#M6Wkkmb$EODZLpxfg4IbP zRy7T;$s!CB$&gyWH4VXpp7 z^z_&_ux7h5{>%7V6JJhLk{?U1fiD-tcs@0=F7rQFjr|-R!CkqP`TrnzM;P9Vl|L)X z5aU~bowA2Q`@(mIcVZmACi>oJKDINq6szi|CJKq)CtiR^)1Arb)YYjC>1)#)GVjPl zvhT<$xry8}5Q%>*(8JUyhBzzbzn|_Wa}~__7PJSM>ALb1*{A&U`U* zf954vbH#FB&;2boo&P#oeR;5UPp zVMQ|@{s?B%@yJu7Z;O5<8jVe2WxXh#PTYpb-m{bGWIuX+GIe`;0PBknWo|>S*D!Xe z&$r}6>N_vRigZS~9Bbv(!572lKO1vdKJm5WaQY9K^K)2(C@0c&Of5JsT#Gy@b};_! zrd_`Tq2)V7>3iRC4deoO*Kp<@r?p zLU==W`UL8&LS%FdibL|vHrXiGsedeJ^BJX)9+_~mib-gY|M(2 z*>}Q||1@?7AHW{q3As~quf;lN8WD;Eh%5atcOrHsBKcRtBfSYTKw!&>)aRO~yi7SM zbV}&?h~aDq)v%)fNa&NH8^ceDygaf!@)4|r&V(*}GWy5pb7RY5F|1S9Bg)srD(uSG z^@ytxYtO!uWH z5Mx?_9h%QWFMfU~(X{0Nb}hf<5vuT00%lj$Ale}eaQD|VcJiuv-i%=0rL z^jHJC$)CmS{*}z#nR(e$vu9;DXN%bFoyA_$(d-|yQLMt>fnC-I5#h+f+x!=Jn+Nj0 z$^V&*?cFB^?!q4lc$x=bMIKk42Jdn*cs*vr6R@9?g7#h<`VLmkOTuR(Ui>bs0Dc`l z4SO!3$garS5No+N5<>pMdlAw7FT@#EAx66&{dNTLg+In#96viAhHuuuzQ=p8FZhG_ zkK+$wc6$Z(IksbWV^`v`#1{|;`U#>_&rP0@RFFY%LGnTxF}yALqvSu}b)Jcx{nw?o zrgo(M4L1At@NZs`PNv_OerNiJ*hz?CSMCGYIsa?sDKw5YpR{T3iGedP*0D;)D*ub& z?;}R{*Kjbh5|;K;@FBknu74K!ZR9^;i=GyJ4#w9`L^=N>dK5b`>k~I8z6y?hhB)RQ z694#r?VWpE%=y2^XQt_*3#l-YN*6-vJGW+~eLM(a;T%YX2Dp#yAQO~9Bp8SUa8JgAK=2VQ5p5D>h<1q%!*Q$>JraEssfmY( zhhy%vz;1CCYJ)$nJ64=4-X|``)jt)tVsm6DF_YL}8!eTr1QQUC%*&7*f$v|3Gi#4I z;-p2J#V5>wdX|>xMjyfje*q8ty(Jy~_W-NG=uQo+##(W$#8!4taSu$@zE+E^!mXmM z)?1}w!rlu-KZZHG8e2GYQrR-J3fv+&Y_{hTp~Pz92RP4p#3ABW_z~&sZR{iLO7;Wx z?`(I>6hWY8QaG8MW1L&agqNJRoX;F3t|_JqCuHwno*vJHC*n=VBq57EzYlVlVYUVp z{3EsxlLg^|?bt!Q5cC(C3BMC2U=wjmD2L4TM=xGzeh*dHR(lpBco=Mh(j=Z9@}Gf$O2lfNBX17ou=vts0{lVAf*nGCtM zrtKz1V1#Y zdTfS}BlJP(R*y&W{YFc|2-6|No-NKbFeXBSa2+S zEK)6s(JO0OI%EI3-?H9P5fyNuRVJ!9HBVN{&`#j`#t_r65z9esYeSD{%U;M%Wf!v_ zveh`YoKWlxZ*UlxR(!ar)OG9ertwx_O6n z8KQ!0#Qvobm0M&LgSv4Iv3*X?4~;Uk0I-oX>@hUKRq)|jPX_yo8tzajyGugT98QcSKA5KFFYq<}( zuel7=25l&!3C|85*)+`8q41$ou#MgcwK>H*k4f(l?#hZ+RH_E*`~pIf3Z%LmwQ4&S@iN zm@IHxWpI?cgiLtI5>zD8JtnCODdxOvuv+<0y)rOb)fAuA1mBnm)iVZvC4p<~0(JHT zag_+ZssuA=E$FE(OeqFXJ$p=Cj-Z8sm$ivAY$LKzGX0cyts zj;$2)L^?KR74T_Wakf}&(wmil$MM31pN76K7xcp=__1AVCPx`GA_2F;4~m%x$}k^1 zVFkt6C~#G|ESw@;t`YXm_Lw0;;JaplYq*3-vmGphF8oy&OoUM&3iIJ!)PfgO04Zn$ z@6;V6U=;k)gP{Cs!Ss>aP69rtC;FpAoP`pcffn@18sH412t9}pRm};pl_Gm{ zQO_#C&@_OJYr&3z1`5syUcUsG*eEYT{~00UpZ5k9*De0DO5PT;9RKvR)X z%!e*CAc_i93?-me$S6i&hRLO(SPTE0bk8;5om)c%0(v5t3ofM^?o$_+2@-|i3E>2| zfIx`=ADYcO2tT|Ay-_n_sewpJu(fhU7axI)&&AAB-4jn`_}sc?)@ClCNuN~qipLbM~nXeLwH zormePT38EWq!}}1r;ui@0KSU%HPb!8YX%|LBhiN@V}{Q{m(!i?E$DGHsIx%kxD*+_ z5j02vvb+IwWT!|2+=m33?g7$+%V7t)( zs)7cZf(M$;9(_*$vN#LzKS(iitsEv-8Sy7j2|U0}NRh$mASTL?!42pwX`qpez#!Qp z{sFuYFv7Wre*tLVTDS$uh`$yT-x|3b0*5FLYR6S3SkKGfQ+g*b0s7t`=eo^yWFt`;xaV8l$9!MZpC^;G1 ztR59_z&4DDu9eJjQoDn&TOs30df?T_Yci$=6ulEb#WWd2Tt23aCQ7wc5mzB%>W-~% z1eM(dm^#i;aa90;YJkX+aSZ`knvBTi!(FMxW~CjpC<|`3HFVh%bXyeV2bO?ptDv%4 z6&?(+%Lj$XwP%opuKw8A4@m0hPNg*#2ptHWO53mV$-c2$H%0 z>~sU>#ZJs2TByhN*l2m74#$CYJ_yf(j3=qp8kABC#qJ;-BgGrRIA&9IxCxt3nnVE= z*ccJ@0)-NS+M9;TdkJhpE$VKUL<==nh+HMLIu1&mja((Qx`k5e-j()Cu2vvd8{zD+ zz~hn{9R$Xf%u|v^Yz8|^_Hx~^R7EU}!N_*kTGE>;!@i{nIm%+|LZR)Eqa^=CD)c!J zhK*Dd4dB~YQ&EhAK4)X2at?%3w>}#niY`6+oQxBq&=U(z+c|?tM3l<-GRP4(02#=?m*ui=(_`bccAYM^xc8JJJ5Fr`tCsA z9q79Q|A+5@>kwQVgFz!=hFHk;8hKZg#_@xouDO7tgRlvkIZHs24AGW7d$ zVT$Vi;==Ta5#1N2`R&5&@Ut9r-2xXZ!Mp0Z+Sw2>bUi}lYaHoxS(;1?eE_0MS7gM{ z>9nHnSKXR>%)va5caUBG&X7N0dD#b@?H3)EzP#?(T$B9EBA01C?HP<;Ce=;|GBvQA zf2K;mNXe;a&9b`=rTaJZcRg=7wk`X26@8uSHU{r~GOi7E*uB|VC!_M1sopQn<06CW z25F0v%~j3smX2=s7muTJK7ShJwC8vbeQnl<;-kK6V%~XXN5{pdI3t!s{q7Iik4AXH$fKR(hC9!jZOfuXRsOQCshO)wqu1 zF!aSK=PhDaH&&JZ)bIBnT6<}R<&GHF#3iyn^Utm{D4phSkukYq>}u|kxbbq=w^utS zFqS0Ha?94bRZ54VlV>qMQQGw5+VWj0_Q-L%vF9MrRVyTccFx zREN9_4Bf6jb+yLPNhzPN?hO6s&s)p@+F4qXM3Ol0x@CuN%YAEN0C|n-boyteEFpvc z5W~qA`ZEVJH7bTzh0{Xj9C=lLZgS>Sdy`%EzO953`RxHrCekROSL)zs&}l0V9A51_ zvaPCQvNXqIlyuCpV+kJ*xTHnUCOx_GjMWf$zJE^SYlhv0D{Ct{-73m=l+Fll^|jw; zPkXWDQszyq6G}UVs-)en*FH3Q)ywC5!VYe@XP#n_zOY2N_(tLp{g3yb+zRZsDY5j^ z1KKIx>$j2bRMkvmpN-zK*>;i9(jwu8MtPOXa|0?%qih!W=bb7#mBPEyCZig;;?0dl z+xsg&J$P{NQ^)oyqwF@m@>gqeq?O z%Dg*tYcu0T;q-xwtFiGNXXAanhh}SJZQGIM=qsolD4BWDN!M-g+X|0Q9c7wV3LS$~ znnkizd$fK_Y`wd`JS29`^|m&v6Lq=UcF~sXkFIr9NI>qiQ3G32NhQ1d{KT6*T40%mzB;8+-he9{GHi+RpSB ztYcd{7N^t_np%fO_}VybzI{Z~XyR70Ro3oa6+R_Tx&rskTXTNxo&@E{eGg}?x|4Ww zd4%j9gDZZWlcyHh8>MI(yDJ!lp4VYn7+<4}3Rb_q+q>7cS(Oix z?rDDVQmSfy zFqO3x@!-Z~m_qDmHh=7d{?bPE>YP#WDS=9xG>}~$>3V8l%1&>2djI4QhxISR+)J(c z$&UMcVyaub)^qbsMZ0Dw-AgVM54-;1;NHtcKTjPoELb6M^&*)ZJ;&!k1&br~PB{J= z_j>(+)AB!9jP}es_v$gJvcL_GP33JVb0C9C$IXRGrP_jaVGqpIP=)B zu_h0%I7<08jZ~I`eA_hqWb&@r&HGs#fqln`*_?Vo;)!h{@c2?dh_Ua z>LZfgK<5zE>|J-F!@TiE_oZ1|#oCr&mL=296LiwALP! zJHLf<;*s?QH;dAJ>+UuC3)Z*mZON+0U+z9tbSu>UsD1|oYCi-j^-Fssn?pV=fb`q{ zc(eY&_UJD{K+a=ALcrlen%HbUsZreSFY(bL{%j)p*gw%8jUo(DZ_zDjFR=>@378+M zYwzZu>)?j&?o;#8Fj61gBfDUxCOMjZ z);|*8vL~ce=4yQ{NA~>Kjn;+RZyF~A66N>)#Je5W(7=soBqR!yFZ!yp;P)>#rUsuO46_pU+@2x zPU*`#N&jA~$%Vn!{!gy#PYFn=m5SB!d7C7sck^@a$jZj)%xHU=vFD<~dedW-R!eUt zL@w94`)tV3(#YT5Wwa?eI33bB6=>XMxxmN0?Zui=15?dgs_NEGPJHV%UVr7NLDmX8 z&Zw}NF}3_cUV3)jTKg7<~X|blT^yQvzkS#Sm)-=j$tl`VufLCMMSUt2Q}%>ix`GtuR-$L z`Yby-hpbLLYqoweY~^0dGbT1u-;Gh9hg+Kew9hB zQ_9n*;~o)pgl(_4P-gQ8PBtrQFrJMZhNmg};#1S)Gq6qY4+N zY3i1f#j?@Mi|I9~7iU^qzaGHObRLnG^d_>f;)Gwv{Vh8xB{|ka^rnVoo4q$gpO4zI z_e7)Dvee!F<7Q7wl~c|x%x}`7RZm}3x_~v&;Z1d`{f{MQ=*{ax<7Q2nYMZuLf9a@? z>3WV%7fx+93Vqy?P(Rp47-u-o!{yLYwn66M!AytBmPH-w)^J~%a%Qe`6g191?VL2X zlHtx#nZT4J(_3dJ1 z*h*i&kf-CAeLYCB>;cqnfrrw`=kp2S?7tkd_17&g3AFbXH+xPU;W+QvP_^1ZjowED zof3IOu4Nrv>9QqodZe|z8~@|9+8j-XWrx$Z{M@mpGNj?2q2*~>Yk7J7-qT}OFOEIG zU9|S>``!LsKcz-%I!7OP{iEhB?%Ex!RSJII7Z%k?`+IE|d@^9}Xw~Lt%H_{jKNXWQ(c$6Wi-O~Rc(I1Qdeus z+2n+o=4!!2+%v7qMK5PGCf|5F`s}?%cACi6$>sCPneXFXoi;Bt%shS4^3L$R)&>JR z^c1JebgefZVONlJ#_iq73&F7HK XJG92FSz?tM?ETiWXeQMa(P;kxWf9o$ literal 0 HcmV?d00001 diff --git a/Windows/setup.py b/Windows/setup.py index 0519633..9e5bbcb 100644 --- a/Windows/setup.py +++ b/Windows/setup.py @@ -5,22 +5,26 @@ from distutils.core import setup import py2exe files = [] -for dirname, dirnames, filenames in os.walk('bungloo/WebKit'): +for dirname, dirnames, filenames in os.walk('WebKit'): for filename in filenames: - files += [os.path.join(dirname, filename)[8:]] + print dirname, filename + files += [(dirname, os.path.join(dirname, filename))] -for dirname, dirnames, filenames in os.walk('bungloo/images'): + +for dirname, dirnames, filenames in os.walk('images'): for filename in filenames: - files += [os.path.join(dirname, filename)[8:]] + files += [(dirname, os.path.join(dirname, filename))] setup( - name = "bungloo", + name = "Bungloo", version = "1.3.0", author = "Jeena Paradies", author_email = "spam@jeenaparadies.net", url = "http://jabs.nu/bungloo", license = "BSD license", - packages = ['bungloo'], - package_data = {"bungloo": files}, - scripts = ["bungloo/Bungloo.py"] + #data_files = files, + windows = ["Bungloo.py"], + options = { + "py2exe": {"includes": ["sip", "PyQt4.QtCore", "PyQt4.QtGui", "PyQt4.QtNetwork"]} + } ) diff --git a/images/Icon.ico b/images/Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e386d9ec90cb4a54d833b2fff480cf8304e5f38d GIT binary patch literal 370070 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 M69_+nKl~H;fBdzN5dZ)H literal 0 HcmV?d00001 From 9019c95f75d1e81bb859319e38aa6dcd2fe57a82 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 3 Apr 2013 00:32:43 +0200 Subject: [PATCH 018/127] ugly workaround for ssl on windows --- Qt/Bungloo.py | 7 ++++--- Qt/Helper.py | 18 ++++++++++++++---- WebKit/scripts/helper/HostApp.js | 5 ++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 3c357f8..005f8f1 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -1,9 +1,9 @@ #!/usr/bin/env python2 import os, sys, pickle, subprocess, shutil -from PyQt4 import QtCore, QtGui, QtWebKit +from PyQt4 import QtCore, QtGui, QtWebKit, QtNetwork -RUNNING_LOCAL = os.path.basename(__file__) == "Bungloo.py" +RUNNING_LOCAL = os.path.basename(sys.argv[0]) == "Bungloo.py" if RUNNING_LOCAL: import Windows, Helper @@ -13,6 +13,7 @@ else: class Bungloo: def __init__(self): + self.app = QtGui.QApplication(sys.argv) self.new_message_windows = [] self.controller = Controller(self) @@ -30,7 +31,7 @@ class Bungloo: def resources_path(self): if RUNNING_LOCAL: - return os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) + return os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) else: return Helper.Helper.get_resource_path() diff --git a/Qt/Helper.py b/Qt/Helper.py index c822256..1bb73e4 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -10,9 +10,9 @@ import os import array class Helper: - @classmethod - def get_resource_path(cls): - return os.path.dirname(__file__) + @classmethod + def get_resource_path(cls): + return os.path.dirname(sys.argv[0]) class WebPage(QtWebKit.QWebPage): def __init__(self, parent=0, app=None): @@ -43,6 +43,8 @@ class WebViewCreator(QtWebKit.QWebView): self.customContextMenuRequested.connect(self.context_menu_requested) self.actions = [] + self.page().networkAccessManager().sslErrors.connect(lambda reply, errors: self.handleSslErrors(reply, errors)) + def copy_link(): self.page().triggerAction(QtWebKit.QWebPage.CopyLinkToClipboard) self.action_copy_link = QtGui.QAction('Copy Lin&k', self, triggered=copy_link) @@ -85,7 +87,10 @@ class WebViewCreator(QtWebKit.QWebView): def load_finished(self, ok, callback=None): frame = self.page().mainFrame() if self.is_local: - frame.evaluateJavaScript("var OS_TYPE = 'linux';") + os_type = "linux" + if os.name == "nt": + os_type = "windows" + frame.evaluateJavaScript("var OS_TYPE = '" + os_type + "';") js_plugin_path = os.path.expanduser('~/.bungloo/Plugin.js') if os.access(js_plugin_path, os.R_OK): @@ -100,6 +105,11 @@ class WebViewCreator(QtWebKit.QWebView): if callback: callback(ok) + def handleSslErrors(self, reply, errors): + if os.name == "nt": # ignore SSL errors on Windows (yes a uggly workaround, don't know how to fix it yet) + reply.ignoreSslErrors() + pass + class NetworkAccessManager(QNetworkAccessManager): diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index 50bcbe8..8fa8b3a 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -129,7 +129,10 @@ define(function() { } HostApp.osType = function() { - return OS_TYPE == "mac" ? "OS X" : "Linux"; + var os_name = "OS X"; + if (OS_TYPE == "windows") os_name = "Windows"; + if (OS_TYPE == "linux") os_name = "Linux" + return os_name; } HostApp.notificateViewsAboutDeletedPost = function(postId, entity) { From e38546cb2a4330657fa8dc8cd74a3d4441d48dab Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 3 Apr 2013 01:47:35 +0200 Subject: [PATCH 019/127] more windows py2exe fixes --- .gitignore | 2 +- Qt/Bungloo.py | 3 ++- Qt/Helper.py | 2 +- Windows/deploy.ps1 | 6 +++++- Windows/setup.py | 13 +++++++------ 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index ff86293..92c6e69 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ dsa_priv.pem .DS_Store *~ Linux/dist -Windows/dist +Windows/bungloo \ No newline at end of file diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 005f8f1..e597e95 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -4,8 +4,9 @@ import os, sys, pickle, subprocess, shutil from PyQt4 import QtCore, QtGui, QtWebKit, QtNetwork RUNNING_LOCAL = os.path.basename(sys.argv[0]) == "Bungloo.py" +RUNNING_ON_WINDOWS = os.name == "nt" -if RUNNING_LOCAL: +if RUNNING_LOCAL or RUNNING_ON_WINDOWS: import Windows, Helper else: from bungloo import Windows, Helper diff --git a/Qt/Helper.py b/Qt/Helper.py index 8938fb3..791a58d 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -5,7 +5,7 @@ from PyQt4.QtGui import * from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply from PyQt4.QtWebKit import QWebView -import os +import os, sys import array diff --git a/Windows/deploy.ps1 b/Windows/deploy.ps1 index 4dcff82..8441559 100644 --- a/Windows/deploy.ps1 +++ b/Windows/deploy.ps1 @@ -5,4 +5,8 @@ Copy-Item ../WebKit bungloo -Recurse Copy-Item ../images bungloo -Recurse Copy-Item setup.py bungloo touch bungloo/__init__.py -Copy-Item msvcp90.dll bungloo \ No newline at end of file +Copy-Item msvcp90.dll bungloo +cd bungloo +python setup.py py2exe +cd .. +rm bungloo \ No newline at end of file diff --git a/Windows/setup.py b/Windows/setup.py index 9e5bbcb..0ea0ceb 100644 --- a/Windows/setup.py +++ b/Windows/setup.py @@ -7,13 +7,11 @@ import py2exe files = [] for dirname, dirnames, filenames in os.walk('WebKit'): for filename in filenames: - print dirname, filename - files += [(dirname, os.path.join(dirname, filename))] - + files += [(dirname, [os.path.join(dirname, filename)])] for dirname, dirnames, filenames in os.walk('images'): for filename in filenames: - files += [(dirname, os.path.join(dirname, filename))] + files += [(dirname, [os.path.join(dirname, filename)])] setup( name = "Bungloo", @@ -22,9 +20,12 @@ setup( author_email = "spam@jeenaparadies.net", url = "http://jabs.nu/bungloo", license = "BSD license", - #data_files = files, + data_files = files, windows = ["Bungloo.py"], options = { - "py2exe": {"includes": ["sip", "PyQt4.QtCore", "PyQt4.QtGui", "PyQt4.QtNetwork"]} + "py2exe": { + "includes": ["sip", "ssl", "PyQt4.QtCore", "PyQt4.QtGui", "PyQt4.QtNetwork"], + "bundle_files": 2 + } } ) From a1e3816d0f8acbe50a9aa276533692b29fd7c796 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 3 Apr 2013 02:40:16 +0200 Subject: [PATCH 020/127] added installer script --- Windows/installer.iss | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Windows/installer.iss diff --git a/Windows/installer.iss b/Windows/installer.iss new file mode 100644 index 0000000..4965a11 --- /dev/null +++ b/Windows/installer.iss @@ -0,0 +1,55 @@ +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName "Bungloo" +#define MyAppVersion "1.3.0" +#define MyAppPublisher "Jabs Nu" +#define MyAppURL "http://jabs.nu/bungloo" +#define MyAppExeName "Bungloo.exe" + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. +; Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{5E44EE00-8ECE-40C8-AF6F-70397DD1DBFE} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={pf}\{#MyAppName} +DefaultGroupName={#MyAppName} +AllowNoIcons=yes +LicenseFile=C:\Users\Jeena\Documents\GitHub\Bungloo\LICENCE.txt +OutputBaseFilename=setup +SetupIconFile=C:\Users\Jeena\Documents\GitHub\Bungloo\images\Icon.ico +Compression=lzma +SolidCompression=yes + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked +Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 + +[Files] +Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\Bungloo.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\library.zip"; DestDir: "{app}"; Flags: ignoreversion +Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\python27.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\w9xpopen.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\images\*"; DestDir: "{app}\images"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\WebKit\*"; DestDir: "{app}\WebKit"; Flags: ignoreversion recursesubdirs createallsubdirs +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Icons] +Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" +Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent + From ce3a42dbee2c66f2c97b565d2d1e781afdfb16df Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 3 Apr 2013 11:18:45 +0200 Subject: [PATCH 021/127] fixed problems with tent.is and campr.me authentifications --- Qt/Bungloo.py | 4 ++++ Qt/Helper.py | 8 +++++--- Qt/Windows.py | 11 ++++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index e597e95..72d04f2 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -15,6 +15,10 @@ class Bungloo: def __init__(self): + sslConfig = QtNetwork.QSslConfiguration.defaultConfiguration() + sslConfig.setProtocol(QtNetwork.QSsl.TlsV1) + QtNetwork.QSslConfiguration.setDefaultConfiguration(sslConfig) + self.app = QtGui.QApplication(sys.argv) self.new_message_windows = [] self.controller = Controller(self) diff --git a/Qt/Helper.py b/Qt/Helper.py index 791a58d..09cd069 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -2,7 +2,7 @@ from PyQt4 import QtCore, QtGui, QtWebKit from PyQt4.QtCore import QTimer, QVariant, SIGNAL from PyQt4.QtGui import * -from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply +from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply, QSslSocket from PyQt4.QtWebKit import QWebView import os, sys @@ -107,8 +107,9 @@ class WebViewCreator(QtWebKit.QWebView): def handleSslErrors(self, reply, errors): if os.name == "nt": # ignore SSL errors on Windows (yes a uggly workaround, don't know how to fix it yet) - reply.ignoreSslErrors() - pass + for error in errors: + print error.errorString() + reply.ignoreSslErrors(errors) class NetworkAccessManager(QNetworkAccessManager): @@ -123,6 +124,7 @@ class NetworkAccessManager(QNetworkAccessManager): self.setCookieJar(old_manager.cookieJar()) self.setProxy(old_manager.proxy()) self.setProxyFactory(old_manager.proxyFactory()) + self.sslErrors.connect(lambda reply, errors: old_manager.sslErrors) def createRequest(self, operation, request, data): if request.url().scheme() != "bungloo": diff --git a/Qt/Windows.py b/Qt/Windows.py index 5fe85c3..1a1bfb3 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -1,5 +1,5 @@ from PyQt4 import QtCore, QtGui, QtWebKit -import Helper, urllib, urllib2 +import Helper, urllib, urllib2, os class Preferences: @@ -224,8 +224,10 @@ class Oauth: old_manager = self.auth_view.page().networkAccessManager() new_manager = Helper.NetworkAccessManager(old_manager, self.bungloo_callback) new_manager.authenticationRequired.connect(self.authentication_required) + new_manager.sslErrors.connect(lambda reply, errors: self.handleSslErrors(reply, errors)) self.auth_view.page().setNetworkAccessManager(new_manager) self.auth_view.show() + self.auth_view.load_url(url) return False @@ -250,6 +252,13 @@ class Oauth: if hasattr(self, "auth_view"): self.auth_view.hide() + def handleSslErrors(self, reply, errors): + if os.name == "nt": # ignore SSL errors on Windows (yes a uggly workaround, don't know how to fix it yet) + for error in errors: + print error.errorString() + reply.ignoreSslErrors(errors) + + class Login(QtGui.QDialog): def __init__(self): From be9da325c788c10c500ef239b588936beced1f2e Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 3 Apr 2013 12:06:00 +0200 Subject: [PATCH 022/127] added icons resized --- images/Icon16.png | Bin 0 -> 966 bytes images/Icon255.png | Bin 0 -> 67050 bytes images/Icon32.png | Bin 0 -> 2890 bytes images/Icon48.png | Bin 0 -> 5657 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/Icon16.png create mode 100644 images/Icon255.png create mode 100644 images/Icon32.png create mode 100644 images/Icon48.png diff --git a/images/Icon16.png b/images/Icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..765b5c847344d53f5e4f876d47e3fe9258b5e696 GIT binary patch literal 966 zcmV;%13CPOP)Va3*vMvaY>*<{OcrWu4b)?(@Av|oR;q!zZdik5S8Ml+flT2)>*FPvNwOHy7uR8Lf9Joe`p@i8x3I+rJBJf`{#T5*{;tmeY2b1;=^1 zC_+fvwzLd!t@EgpP*ZsdZh4GjS9f7ra6bWen##de#PeZN3vAHP2@@MEa~k21!hcZP9yDtW09V$o}_n$4R$ zk|GWYlCn%gan09b^IApuF2TERB|?#dFKq!@a?g>rZh-es207$NM$oR^E5qfPi&v6ThsIc`U<9o3~yAR6b^ z3e!@=6(xe+N^JDZY4%iZ#WRq=&QEnX`gNS|({bX=YfN1#pwVV$^5;XUrG)T8Fv@Ji z7c>kyGdk_n(g8IKJzG9b@&B}4a(q?^o*SGl>?J|3(ErIESXDw|b_lt=RS26=^D{)g z>o=b_OwX_Xb-;6z&Ri2alp)2nz7B8Lg>2?j-oe9OP$Q;-!2}^ad~ij^W-?<=W0y6N zj}~KilU}|e6ji0u@ot`OsXdZw4mUi#X8V(5mQ|6Mo8!j!#sPe-ZyB?5g4q?dtgPLH zxU{>*-zKM@{HjnlP`~&7xwh0CIooj7uWo1`Rv)%^s{iQLoyV1R$No?odi-kYw)ZaG zQ=-$~by74di_QM_Od#X2qNrbD_QFwDEZ|Dg^s4auty0mt(Q;>cg1PQ@ZpM|6HVG)2 oE%E@gkB#X8x_CEsAAboj0Jvvv-A}{@TL1t607*qoM6N<$f+h9S$p8QV literal 0 HcmV?d00001 diff --git a/images/Icon255.png b/images/Icon255.png new file mode 100644 index 0000000000000000000000000000000000000000..08ea0f28b4406c98d2569ef16459f710b9ff7e06 GIT binary patch literal 67050 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

3H`8XHAMYw=QkZl7UQ7oZ6a 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

x-L0I^R&myDh#G&lXyy5s)8a(hp2lsjAHS z#+2;RDcx_a=7Tjs_W!w%Y{xokZj;n>4zflqt~7-TfhTS2*zZW9b+z|*?Sb1Kl_|cjiozI^zDmHt(dPf3ZR70P!*Ki zY1^i@ZC$vhJ#+0`_5_$)1I;xHO*`A!sCLYft=}dMvrjzQe>0jt90mGgJTE(*#vA zy;zTs+UmvO_x8o2;T*JfO6OIPX&R`w;P!F=PvJch`XxE@*=UKg=i+;~S|3|ECbtEh zRvX1??PtfnMK^Aq{O-;>3|+;0Me6_hp>)r8g+S-Yv>wj~t<9%CjYti}42hD2Wi(!eVTd zS4~W$<)bDv0nGXRB5pMy^_7x`byDqo>-ciCi2#0ofUy&cqz_mAL|L;&T5Zp-&wDM6 zbpwkgR8EV&p0sN(&qlZX=BNMBj<4?io{Mva8YEm~1{qUZHdmFKC3IRe(tZd?elLpI;cy3(GDfq?lyTRK)?|2H{a-hE-}`St7>weX8j`_ze2| znYZaPvqdk6-eACNHWJb5(CGyFju%mq6+^4YGoL$@CT&YMAS3CRKFwZ}Q9gzCeh;cy zP@iVPWHU+GYcNijeZA<&$jR(cNwJj7yhW8yBtx2BM1~ZLZg_86aT%uEaW{W1oiob3a-{3Wn)TaF*;pBEiu^xSv6os>=WK`MUrE0OZq$RO1+9WB>pF07*qoM6N<$f{lNu(f|Me literal 0 HcmV?d00001 diff --git a/images/Icon48.png b/images/Icon48.png new file mode 100644 index 0000000000000000000000000000000000000000..71dbc5760b6c36e66f0b8ca612a8d32fd0bc8dce GIT binary patch literal 5657 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 literal 0 HcmV?d00001 From 30b35aaaffa3434c25d2f9db5b44fecb0878a685 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 3 Apr 2013 12:11:24 +0200 Subject: [PATCH 023/127] removed 255 icon added 248 --- images/Icon248.png | Bin 0 -> 64209 bytes images/Icon255.png | Bin 67050 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/Icon248.png delete mode 100644 images/Icon255.png diff --git a/images/Icon248.png b/images/Icon248.png new file mode 100644 index 0000000000000000000000000000000000000000..83d5450dec3d8847b0cda0037d3b85769f17bb51 GIT binary patch literal 64209 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�`eK>L#yjb`cf%w>l!=$o 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ξ*b%}9k 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 O0000V@pHMkSrL1nL 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
  • "); - li.attr("id", "post-" + repost.id) + li.attr("id", "post-" + repost.id + "-" + this.action) var a = $(""); a.attr("href", repost.entity); From 4b6815c4899cc526ccfc80bfaef26e0eb9664430 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 18:08:28 +0200 Subject: [PATCH 027/127] fixed #205 --- WebKit/scripts/helper/Core.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 00f49f2..a0f396b 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -183,6 +183,10 @@ function(jQuery, Paths, URI, HostApp, Cache) { template.remove.style.display = "none"; } + if (HostApp.stringForKey("entity") == status.entity) { + template.item.className += " own"; + } + template.reply_to.onclick = function() { var mentions = []; From c229916bad357f2c28e0d4a9d753b086cbb662e4 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 18:09:19 +0200 Subject: [PATCH 028/127] fixed #204 --- WebKit/scripts/helper/Core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index a0f396b..101c125 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -820,7 +820,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { var hash = /(^|\s)(#)(\w+)/ig; - return URI.withinString(text, callback).replace(hash, "$1$2$3"); + return URI.withinString(text, callback).replace(hash, "$1$2$3"); } Core.prototype.parseForMedia = function(text, images) { From 3e6e0fa124a0a8ac8c9bbbd67165903f6ce00fb5 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 18:42:11 +0200 Subject: [PATCH 029/127] fixed #216 --- WebKit/scripts/controller/Search.js | 2 +- WebKit/scripts/helper/Core.js | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/WebKit/scripts/controller/Search.js b/WebKit/scripts/controller/Search.js index 62b19a5..a8e23b6 100644 --- a/WebKit/scripts/controller/Search.js +++ b/WebKit/scripts/controller/Search.js @@ -23,7 +23,7 @@ function(HostApp, Core, Paths, URI) { this.form.className = this.action; this.input = document.createElement("input"); this.input.type = "search"; - this.input.placeholder = "Search ..."; + this.input.placeholder = "Search"; this.form.appendChild(this.input); var _this = this; diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 101c125..6d987ab 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -287,12 +287,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { } template.message.innerHTML = this.replaceURLWithHTMLLinks(text, entities, template.message); - - // adding show search on click hash - $(template.message).find("a.hash").click(function(e) { - bungloo.search.searchFor("#" + e.target.innerHTML); - return false; - }); + this.afterChangingTextinMessageHTML(template.message) if (status.type == "https://tent.io/types/post/photo/v0.1.0") { @@ -717,12 +712,8 @@ function(jQuery, Paths, URI, HostApp, Cache) { + "" ); - // adding show profile on click node.innerHTML = new_text; - $(node).find("a.name").click(function(e) { - HostApp.showProfileForEntity(e.target.title); - return false; - }); + _this.afterChangingTextinMessageHTML(node); // adding comma between names when there is only // a space in between. @@ -1000,6 +991,20 @@ function(jQuery, Paths, URI, HostApp, Cache) { $(images).append(''); } + Core.prototype.afterChangingTextinMessageHTML = function(message_node) { + // adding show search on click hash + $(message_node).find("a.hash").click(function(e) { + bungloo.search.searchFor(e.target.innerHTML); + return false; + }); + + // adding show profile on click + $(message_node).find("a.name").click(function(e) { + HostApp.showProfileForEntity(e.target.title); + return false; + }); + } + return Core; From cbed4eae9c883f64accf45d8e31f2aa935194a20 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 18:59:35 +0200 Subject: [PATCH 030/127] fixed 199 --- WebKit/scripts/controller/Sidebar.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 81d5599..fa5f0ad 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -40,6 +40,9 @@ function(HostApp, Paths, Cache) { document.getElementById("sidebar").appendChild(this.body); + // initial seting of the class + document.body.className = "body-timeline"; + this.setEntityAvatar(); } @@ -151,6 +154,9 @@ function(HostApp, Paths, Cache) { active_part.show(); + // Replace class + document.body.className = "body-" + active_li.className.split("-")[1]; + // Show active icon for(var li in this.menu) { if (this.menu[li] != active_part) { From 56e31b9fd65731d6dc85349e0ce741892f980f28 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 19:10:57 +0200 Subject: [PATCH 031/127] fixed #194 --- WebKit/scripts/controller/Conversation.js | 10 ++++++---- WebKit/scripts/controller/Mentions.js | 6 +++--- WebKit/scripts/controller/Profile.js | 1 + WebKit/scripts/controller/Search.js | 1 + WebKit/scripts/controller/Timeline.js | 10 ++++++---- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index b488d32..61f2888 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -14,21 +14,23 @@ function(HostApp, Core, Paths, URI) { this.action = "conversation"; + this.container = document.createElement("div"); + this.container.className = this.action; this.body = document.createElement("ol"); - this.body.className = this.action; + this.container.appendChild(this.body) - document.getElementById("content").appendChild(this.body); + document.getElementById("content").appendChild(this.container); this.hide(); } Conversation.prototype = Object.create(Core.prototype); Conversation.prototype.show = function() { - Core.prototype.show.call(this, this.body); + Core.prototype.show.call(this, this.container); } Conversation.prototype.hide = function() { - Core.prototype.hide.call(this, this.body); + Core.prototype.hide.call(this, this.container); } diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index b60de05..7b3be31 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -17,7 +17,7 @@ function(HostApp, Timeline, URI, Paths, Core) { Timeline.call(this); this.action = "mentions"; - this.body.className = this.action; + this.container.className = this.action; this.hide(); } @@ -25,11 +25,11 @@ function(HostApp, Timeline, URI, Paths, Core) { Mentions.prototype = Object.create(Timeline.prototype); Mentions.prototype.show = function() { - Core.prototype.show.call(this, this.body); + Core.prototype.show.call(this, this.container); } Mentions.prototype.hide = function() { - Core.prototype.hide.call(this, this.body); + Core.prototype.hide.call(this, this.container); } diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index b3913d3..43e7e1b 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -15,6 +15,7 @@ function(HostApp, Core, Paths, URI) { this.action = "profile"; this.container = document.createElement("div"); + this.container.className = this.action; document.getElementById("content").appendChild(this.container); this.initProfileTemplate(); diff --git a/WebKit/scripts/controller/Search.js b/WebKit/scripts/controller/Search.js index a8e23b6..caaf12c 100644 --- a/WebKit/scripts/controller/Search.js +++ b/WebKit/scripts/controller/Search.js @@ -15,6 +15,7 @@ function(HostApp, Core, Paths, URI) { this.action = "search"; this.container = document.createElement("div"); + this.container.className = this.action; document.getElementById("content").appendChild(this.container); this.body = document.createElement("ol"); diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 4888ee4..4b5e222 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -20,9 +20,11 @@ function(Core, Paths, HostApp, URI) { this.since_id_entity = null; this.since_time = 0; + this.container = document.createElement("div"); + this.container.className = this.action; this.body = document.createElement("ol"); - this.body.className = this.action; - document.getElementById("content").appendChild(this.body); + this.container.appendChild(this.body) + document.getElementById("content").appendChild(this.container); var _this = this; this.reloadIntervall = setInterval(function() { _this.getNewData() }, this.timeout); @@ -33,11 +35,11 @@ function(Core, Paths, HostApp, URI) { Timeline.prototype = Object.create(Core.prototype); Timeline.prototype.show = function() { - Core.prototype.show.call(this, this.body); + Core.prototype.show.call(this, this.container); } Timeline.prototype.hide = function() { - Core.prototype.hide.call(this, this.body); + Core.prototype.hide.call(this, this.container); } From 1cc1d1007bd33d47268e7c72c574efcda2dd83ce Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 19:19:13 +0200 Subject: [PATCH 032/127] fixed #196 --- WebKit/css/default.css | 56 ++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index aaec35b..cb42b0d 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -14,7 +14,7 @@ a { text-decoration: none; color: #00317a; outline: 0; -} +} #sidebar { position: fixed; @@ -214,37 +214,39 @@ p { font-weight: bold; } -li .from { - position: absolute; - top: -1.8em; - right: 10px; - display: none; - padding: 0.3em 0.9em; - -webkit-border-top-left-radius: 8px; - -webkit-border-top-right-radius: 8px; - -webkit-box-shadow: 0 -2px 2px rgba(0, 0, 0, 0.1); - border: 1px solid white; - border-bottom: 0; - background: #ddd; - font-size: 0.9em; -} - li:hover .from { display: block; } +li .from { + position: absolute; + right: 3.5em; + display: none; + padding: 0.3em 0.9em; + background: #ddd; + font-size: 0.9em; + top: auto; + bottom: -1.8em; + z-index: 2; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); + border: 1px solid #b9b9b9; + border-top: 0; +} -li:first-child:hover .from { - top: auto; - bottom: -1.8em; - z-index: 2; - -webkit-border-top-left-radius: 0; - -webkit-border-top-right-radius: 0; - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); - border: 1px solid #b9b9b9; - border-top: 0; +li:last-child:hover .from { + top: -1.8em; + bottom: auto; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -webkit-border-bottom-left-radius: 0px; + -webkit-border-bottom-right-radius: 0px; + -webkit-box-shadow: 0 -2px 2px rgba(0, 0, 0, 0.1); + border: 1px solid white; + border-bottom: 0; } aside { From cf4e3386e76c89606138eff9a0228a2180ede077 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 20:39:03 +0200 Subject: [PATCH 033/127] fixed #197 --- WebKit/scripts/main.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index 8d783b9..39a90ab 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -110,6 +110,14 @@ var console = { function loadJsPlugin(js_url) { if (js_url) { + + requirejs.config({ + baseUrl: 'scripts', + paths: { + plugins: js_url.replace("Plugin.js", '') + } + }); + var js_plugin = document.createElement("script"); js_plugin.type = "text/javascript"; js_plugin.src = js_url; From 3cda481255b2a871de1b05a7c05e3491fa0192a7 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 22:48:21 +0200 Subject: [PATCH 034/127] added next view shortcut to linux --- Qt/Bungloo.py | 5 ++++- Qt/Windows.py | 7 +++++++ WebKit/scripts/controller/Sidebar.js | 23 +++++++++++++++++++++++ WebKit/scripts/controller/Timeline.js | 2 +- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 72d04f2..82567d4 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -89,7 +89,10 @@ class Bungloo: self.oauth_implementation.log_out() self.timeline.hide() self.preferences.show() - self.timeline.evaluateJavaScript("bungloo.sidebar.logout()") + self.timeline.evaluateJavaScript("bungloo.sidebar.logout();") + + def next_show(self): + self.timeline.evaluateJavaScript("bungloo.sidebar.showContentForNext();") class Controller(QtCore.QObject): diff --git a/Qt/Windows.py b/Qt/Windows.py index 1a1bfb3..4d67936 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -154,12 +154,19 @@ class Timeline: searchAction.setStatusTip("Show Search") searchAction.triggered.connect(self.app.search_show) + nextAction = QtGui.QAction("&Next", self.window) + nextAction.setShortcut("Ctrl+6") + nextAction.setStatusTip("Show Next") + nextAction.triggered.connect(self.app.next_show) + windowMenu = menubar.addMenu("&View") windowMenu.addAction(timelineAction) windowMenu.addAction(mentionsAction) windowMenu.addAction(conversationAction) windowMenu.addAction(profileAction) windowMenu.addAction(searchAction) + windowMenu.addSeparator() + windowMenu.addAction(nextAction) aboutAction = QtGui.QAction("&About Bungloo", self.window) aboutAction.setStatusTip("Open about page in Webbrowser") diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index fa5f0ad..7aa04c7 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -169,6 +169,29 @@ function(HostApp, Paths, Cache) { img.src = img.src_active; } + Sidebar.prototype.showContentForNext = function() { + + var parts = [ + "timeline", + "mentions", + "conversation", + "entityProfile", + "search" + ]; + + for (var i = 0; i < parts.length; i++) { + var part = parts[i]; + var img = this.menu[part].getElementsByTagName("img")[0]; + if (img.src.endsWith(img.src_active)) { + var next = parts[(i+1)%parts.length]; + this.showContentFor(bungloo[next], this.menu[next]); + return; + } + } + + + } + Sidebar.prototype.setUnreadMentions = function(count) { this.unreadMentionsSpan.innerHTML = count == 0 ? "" : count; if (count > 0) { diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 4b5e222..19f9981 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -14,7 +14,7 @@ function(Core, Paths, HostApp, URI) { this.action = "timeline"; this.reload_blocked = false; - this.max_length = 200; + this.max_length = 20; this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; this.since_id_entity = null; From 4b62a47960aa4b4fa92e5a3fba008aa74f6ea01d Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 9 Apr 2013 23:03:13 +0200 Subject: [PATCH 035/127] added next to os x --- Mac/Controller.h | 1 + Mac/Controller.m | 5 +++ Mac/English.lproj/MainMenu.xib | 77 ++++++++++++++++------------------ 3 files changed, 42 insertions(+), 41 deletions(-) diff --git a/Mac/Controller.h b/Mac/Controller.h index dab9b67..7197357 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -67,6 +67,7 @@ - (IBAction)showProfile:(id)sender; - (IBAction)showSearch:(id)sender; - (IBAction)showAbout:(id)sender; +- (IBAction)showNext:(id)sender; - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity; diff --git a/Mac/Controller.m b/Mac/Controller.m index 4a4c820..e49ccd5 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -410,6 +410,11 @@ [self openURL:@"http://jabs.nu/bungloo"]; } +- (IBAction)showNext:(id)sender +{ + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.setContentForNext();"]; +} + - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity { NSString *f = [NSString stringWithFormat:@".postDeleted('%@', '%@');", postId, entity]; diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index 77f11a0..e26f511 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -731,6 +731,25 @@
  • 3H`8XHAMYw=QkZl7UQ7oZ6a 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 Date: Wed, 3 Apr 2013 14:05:42 +0200 Subject: [PATCH 024/127] added py2exe --- readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 72227e2..6173013 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,7 @@ Bungloo ======= -Bungloo is a slim Tent client for OS X and Linux written in mostly JavaScript. +Bungloo is a slim Tent client for OS X, Linux and Windows written in mostly JavaScript. For more info check out the Wiki page: https://github.com/jeena/Bungloo/wiki @@ -21,3 +21,4 @@ Thanks everyone in the Open Source community! Bungloo is using: - PyQt - http://wiki.python.org/moin/PyQt - Icon - http://www.fasticon.com - Linux monochrome icons - http://glyphicons.com +- py2exe - http://www.py2exe.org From 98a95c0133390584166987e07c6031451e762291 Mon Sep 17 00:00:00 2001 From: Hendrik Date: Wed, 3 Apr 2013 19:25:10 +0200 Subject: [PATCH 025/127] specify requested post and profil types (instead of "all") --- WebKit/scripts/controller/Oauth.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index e4c04cc..20cb76f 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -25,7 +25,14 @@ function(HostApp, Paths, Hmac) { "write_followers": "Be able to block people who follow you", "read_followings": "Display following list and their older posts in conversations", "write_followings": "Follow ne entities" - } + }, + "tent_profile_info_types": [ "all" ], + "tent_post_types": [ + "https://tent.io/types/post/status/v0.1.0", + "https://tent.io/types/post/photo/v0.1.0", + "https://tent.io/types/post/repost/v0.1.0", + "https://tent.io/types/post/delete/v0.1.0" + ] }; this.register_data = null; this.profile = null; @@ -104,8 +111,8 @@ function(HostApp, Paths, Hmac) { + "&redirect_uri=" + this.app_info["redirect_uris"][0] + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") + "&state=" + this.state - + "&tent_post_types=all" - + "&tent_profile_info_types=all"; + + "&tent_post_types=" + this.app_info["tent_post_types"].join(",") + + "&tent_profile_info_types=" + this.app_info["tent_profile_info_types"].join(","); HostApp.openAuthorizationURL(this.apiRoot() + auth); } From 0ea139510c1457aa027da4390cb8bdeedbf4603a Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 18:01:47 +0200 Subject: [PATCH 026/127] fixed #206 #202 --- WebKit/scripts/helper/Core.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index c3c3147..00f49f2 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -166,7 +166,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { var template = this.getTemplate(); - template.item.id = "post-" + status.id; + template.item.id = "post-" + status.id + "-" + this.action; template.item.status = status; if (HostApp.stringForKey("entity") == status.entity && typeof status.__repost == "undefined") { @@ -373,7 +373,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { Core.prototype.getRepost = function(repost, before_node) { - var post = document.getElementById("post-" + repost.content.id); + var post = document.getElementById("post-" + repost.content.id + "-" + this.action); if (post) { @@ -411,7 +411,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { $(post).find(".reposted_by").show(); var li = $("

    + + + YES + YES + + + 2147483647 + + + + + + Next View + 6 + 1048576 + 2147483647 + + +
    @@ -928,7 +947,6 @@
    {{20, 20}, {146, 146}} - YES @@ -951,7 +969,6 @@ 268 {{194, 82}, {266, 22}} - _NS:9 YES @@ -998,7 +1015,6 @@ 268 {{191, 112}, {163, 17}} - _NS:1535 YES @@ -1032,8 +1048,6 @@ 268 {{391, 46}, {75, 32}} - - _NS:9 YES @@ -1057,7 +1071,6 @@ 268 {{373, 55}, {16, 16}} - _NS:945 28938 @@ -1066,7 +1079,6 @@ {480, 186} - _NS:20 @@ -1097,7 +1109,6 @@ 268 {{17, 79}, {192, 17}} - _NS:1535 YES @@ -1118,7 +1129,6 @@ 268 {{20, 49}, {333, 22}} - _NS:9 YES @@ -1141,8 +1151,6 @@ 268 {{285, 13}, {74, 32}} - - _NS:9 YES @@ -1164,7 +1172,6 @@ {373, 116} - _NS:21
    @@ -2042,6 +2049,8 @@ + +
    @@ -2497,6 +2506,16 @@
    + + 697 + + + + + 698 + + +
    @@ -2615,6 +2634,8 @@ 687.IBPluginDependency 688.IBPluginDependency 695.IBPluginDependency + 697.IBPluginDependency + 698.IBPluginDependency 72.IBPluginDependency 73.IBPluginDependency 79.IBPluginDependency @@ -2742,6 +2763,8 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2756,7 +2779,7 @@ - 696 + 698 @@ -2771,14 +2794,10 @@ clearCache: login: logout: - openNewMessageWindow: - sendPost: showAbout: showConversation: - showConversationForPostId:andEntity: showMentions: showProfile: - showProfileForEntity: showSearch: showTimeline: @@ -2791,10 +2810,6 @@ id id id - NSString - id - id - NSString id id @@ -2806,14 +2821,10 @@ clearCache: login: logout: - openNewMessageWindow: - sendPost: showAbout: showConversation: - showConversationForPostId:andEntity: showMentions: showProfile: - showProfileForEntity: showSearch: showTimeline: @@ -2831,14 +2842,6 @@ logout: id - - openNewMessageWindow: - id - - - sendPost: - id - showAbout: id @@ -2847,10 +2850,6 @@ showConversation: id - - showConversationForPostId:andEntity: - NSString - showMentions: id @@ -2859,10 +2858,6 @@ showProfile: id - - showProfileForEntity: - NSString - showSearch: id From 3febb3b7ec457c4fde69bb5dedcdd196c6470ede Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Apr 2013 23:04:17 +0200 Subject: [PATCH 036/127] changed to Next View --- Qt/Windows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Qt/Windows.py b/Qt/Windows.py index 4d67936..6cca8f3 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -154,7 +154,7 @@ class Timeline: searchAction.setStatusTip("Show Search") searchAction.triggered.connect(self.app.search_show) - nextAction = QtGui.QAction("&Next", self.window) + nextAction = QtGui.QAction("&Next View", self.window) nextAction.setShortcut("Ctrl+6") nextAction.setStatusTip("Show Next") nextAction.triggered.connect(self.app.next_show) From 4c22917d8b2d8654c92ef9a3bcee5dab4c737f79 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 9 Apr 2013 23:12:52 +0200 Subject: [PATCH 037/127] fixed problem with show next on os x --- Mac/Controller.m | 2 +- Mac/English.lproj/MainMenu.xib | 55 +++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/Mac/Controller.m b/Mac/Controller.m index e49ccd5..9c5986e 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -412,7 +412,7 @@ - (IBAction)showNext:(id)sender { - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.setContentForNext();"]; + [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.showContentForNext();"]; } - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index e26f511..818374b 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -947,6 +947,7 @@ {{20, 20}, {146, 146}} + YES @@ -969,6 +970,7 @@ 268 {{194, 82}, {266, 22}} + _NS:9 YES @@ -1015,6 +1017,7 @@ 268 {{191, 112}, {163, 17}} + _NS:1535 YES @@ -1048,6 +1051,7 @@ 268 {{391, 46}, {75, 32}} + _NS:9 YES @@ -1071,6 +1075,7 @@ 268 {{373, 55}, {16, 16}} + _NS:945 28938 @@ -1079,6 +1084,7 @@ {480, 186} + _NS:20 @@ -1109,6 +1115,7 @@ 268 {{17, 79}, {192, 17}} + _NS:1535 YES @@ -1129,6 +1136,7 @@ 268 {{20, 49}, {333, 22}} + _NS:9 YES @@ -1151,6 +1159,7 @@ 268 {{285, 13}, {74, 32}} + _NS:9 YES @@ -1172,6 +1181,7 @@ {373, 116} + _NS:21 @@ -1663,6 +1673,14 @@ 696 + + + showNext: + + + + 700 + checkForUpdates: @@ -2779,7 +2797,7 @@ - 698 + 700 @@ -2794,10 +2812,15 @@ clearCache: login: logout: + openNewMessageWindow: + sendPost: showAbout: showConversation: + showConversationForPostId:andEntity: showMentions: + showNext: showProfile: + showProfileForEntity: showSearch: showTimeline: @@ -2810,6 +2833,11 @@ id id id + NSString + id + id + id + NSString id id @@ -2821,10 +2849,15 @@ clearCache: login: logout: + openNewMessageWindow: + sendPost: showAbout: showConversation: + showConversationForPostId:andEntity: showMentions: + showNext: showProfile: + showProfileForEntity: showSearch: showTimeline: @@ -2842,6 +2875,14 @@ logout: id + + openNewMessageWindow: + id + + + sendPost: + id + showAbout: id @@ -2850,14 +2891,26 @@ showConversation: id + + showConversationForPostId:andEntity: + NSString + showMentions: id + + showNext: + id + showProfile: id + + showProfileForEntity: + NSString + showSearch: id From b210e6ee323daa24246445c41afbaa5202cd34ee Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 10 Apr 2013 03:11:04 +0200 Subject: [PATCH 038/127] implemented scroll to load more --- WebKit/scripts/controller/Mentions.js | 14 +++-- WebKit/scripts/controller/Profile.js | 38 ++++++++--- WebKit/scripts/controller/Search.js | 90 ++++++++++++++++++--------- WebKit/scripts/controller/Sidebar.js | 17 +++++ WebKit/scripts/controller/Timeline.js | 39 +++++++++--- WebKit/scripts/main.js | 2 + 6 files changed, 150 insertions(+), 50 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 7b3be31..bc3b9dc 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -33,10 +33,12 @@ function(HostApp, Timeline, URI, Paths, Core) { } - Mentions.prototype.newStatus = function(statuses) { - - Timeline.prototype.newStatus.call(this, statuses); + Mentions.prototype.newStatus = function(statuses, append) { + Timeline.prototype.newStatus.call(this, statuses, append); + + +/* if(this.is_not_init) { this.unread_mentions += statuses.length; @@ -55,10 +57,10 @@ function(HostApp, Timeline, URI, Paths, Core) { }; } - this.is_not_init = true; + this.is_not_init = true;*/ } - Mentions.prototype.getNewData = function(add_to_search) { + Mentions.prototype.getNewData = function(add_to_search, append) { add_to_search = add_to_search || {}; @@ -66,7 +68,7 @@ function(HostApp, Timeline, URI, Paths, Core) { add_to_search["mentioned_entity"] = HostApp.stringForKey("entity"); } - Timeline.prototype.getNewData.call(this, add_to_search); + Timeline.prototype.getNewData.call(this, add_to_search, append); } Mentions.prototype.mentionRead = function(id, entity) { diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 43e7e1b..66ff432 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -178,6 +178,8 @@ function(HostApp, Core, Paths, URI) { Profile.prototype.clear = function() { this.server = null; + this.before = {id: null, entity: null, loading: false}; + this.profile_template.avatar.src = "img/default-avatar.png"; @@ -382,9 +384,11 @@ function(HostApp, Core, Paths, URI) { } - Profile.prototype.getStatuses = function(root_url) { + Profile.prototype.getStatuses = function(root_url, add_search, append) { var _this = this; + add_search = add_search || {}; + var url = URI(root_url + "/posts"); url.addSearch("limit", 20); @@ -395,29 +399,38 @@ function(HostApp, Core, Paths, URI) { ]; url.addSearch("post_types", post_types.join(",")); + for(var key in add_search) { + url.addSearch(key, add_search[key]); + } + Paths.getURL(url.toString(), "GET", function(resp) { var statuses = JSON.parse(resp.responseText); - _this.newStatus(statuses); + _this.newStatus(statuses, append); }, null, false); } - Profile.prototype.newStatus = function(statuses) { + Profile.prototype.newStatus = function(statuses, append) { + if(statuses != null && statuses.length > 0) { + + var last_status = statuses[statuses.length -1]; + this.before.id = last_status.id + this.before.entity = last_status.entity; + this.before.loading = false; + for(var i = statuses.length-1, c=0; i>=c; --i) { var status = statuses[i]; - this.since_id = status.id; - this.since_id_entity = status.entity; if (status.type == "https://tent.io/types/post/status/v0.1.0" || status.type == "https://tent.io/types/post/photo/v0.1.0") { var new_node = this.getStatusDOMElement(status); - if(this.body.childNodes.length > 0) { + if(!append && this.body.childNodes.length > 0) { if(this.body.childNodes.length > this.max_length) { @@ -433,7 +446,7 @@ function(HostApp, Core, Paths, URI) { } else if (status.type == "https://tent.io/types/post/delete/v0.1.0") { - var li = document.getElementById("post-" + status.content.id); + var li = document.getElementById("post-" + status.content.id + "-" + this.action); if (li) { this.body.removeChild(li); } @@ -446,6 +459,17 @@ function(HostApp, Core, Paths, URI) { } } + Profile.prototype.getMoreStatusPosts = function() { + if (!this.before.loading && this.before.id) { + this.before.loading = true; + var add_search = { + "before_id": this.before.id, + "before_id_entity": this.before.entity + } + this.getStatuses(this.server, add_search, true); + } + } + Profile.prototype.mention = function() { } diff --git a/WebKit/scripts/controller/Search.js b/WebKit/scripts/controller/Search.js index caaf12c..55b7d57 100644 --- a/WebKit/scripts/controller/Search.js +++ b/WebKit/scripts/controller/Search.js @@ -14,6 +14,8 @@ function(HostApp, Core, Paths, URI) { this.action = "search"; + this.offset = 0; + this.container = document.createElement("div"); this.container.className = this.action; document.getElementById("content").appendChild(this.container); @@ -27,8 +29,14 @@ function(HostApp, Core, Paths, URI) { this.input.placeholder = "Search"; this.form.appendChild(this.input); + this.before = {loading: false}; + var _this = this; - this.form.onsubmit = function() { _this.doSearch(_this.input.value); return false; }; + this.form.onsubmit = function() { + _this.offset = 0; + _this.before = {loading: false}; + _this.doSearch(_this.input.value); return false; + }; this.form.action = "#"; this.container.appendChild(this.form); @@ -49,9 +57,11 @@ function(HostApp, Core, Paths, URI) { Core.prototype.hide.call(this, this.container); } - Search.prototype.doSearch = function(query) { + Search.prototype.doSearch = function(query, add_search, append) { - this.body.innerHTML = ""; // remove old results + add_search = add_search || {}; + + if(!append) this.body.innerHTML = ""; // remove old results if (query == "") return; this.input.value = query; @@ -63,45 +73,69 @@ function(HostApp, Core, Paths, URI) { url.addSearch("api_key", api_key); url.addSearch("text", query); + for (key in add_search) { + url.addSearch(key, add_search[key]); + } + var _this = this; Paths.getURL(url.toString(), "GET", function(resp) { var results = JSON.parse(resp.responseText).results; - var statuses = []; - for (var i = 0; i < results.length; i++) { - var result = results[i].source; - var status = { - entity: result.entity, - content: { - text: result.content - }, - published_at: result.published_at, - id: result.public_id, - type: result.post_type, - version: result.post_version, - app: { - url: "http://skate.io", - name: "skate.io" - }, - mentions: [] + if (results && results.length > 0) { + + _this.before.loading = false; + + var statuses = []; + for (var i = 0; i < results.length; i++) { + var result = results[i].source; + var status = { + entity: result.entity, + content: { + text: result.content + }, + published_at: result.published_at, + id: result.public_id, + type: result.post_type, + version: result.post_version, + app: { + url: "http://skate.io", + name: "skate.io" + }, + mentions: [] + } + + statuses.push(status); } - statuses.push(status); - } + for(var i = 0; i < statuses.length; i++) { + var status = statuses[i]; + if (status.type == "https://tent.io/types/post/status/v0.1.0") { - for(var i = 0; i < statuses.length; i++) { - var status = statuses[i]; - if (status.type == "https://tent.io/types/post/status/v0.1.0") { - - var new_node = _this.getStatusDOMElement(status); - _this.body.appendChild(new_node); + var new_node = _this.getStatusDOMElement(status); + _this.body.appendChild(new_node); + } } } }, null, false); } + Search.prototype.getMoreStatusPosts = function() { + + if (!this.before.loading) { + + this.offset += 20; + + this.before.loading = true; + var add_search = { + "offset": this.offset + } + + this.doSearch(this.input.value, add_search, true); + } + } + Search.prototype.searchFor = function(query) { this.doSearch(query); bungloo.sidebar.onSearch(); diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 7aa04c7..80800f0 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -44,6 +44,7 @@ function(HostApp, Paths, Cache) { document.body.className = "body-timeline"; this.setEntityAvatar(); + this.setOnScroll(); } Sidebar.prototype.createItem = function(name, callback, src_inactive, src_active, active) { @@ -153,6 +154,7 @@ function(HostApp, Paths, Cache) { } active_part.show(); + this.active_view = active_part; // Replace class document.body.className = "body-" + active_li.className.split("-")[1]; @@ -188,8 +190,23 @@ function(HostApp, Paths, Cache) { return; } } + } + Sidebar.prototype.showContentForTimeline = function() { + this.showContentFor(bungloo.timeline, this.menu.timeline); + } + // runs get more posts when scrolling down and + // it is possible for the active view + Sidebar.prototype.setOnScroll = function() { + var _this = this; + window.onscroll = function() { + if (document.body.scrollHeight <= (document.body.scrollTop + window.outerHeight)) { + if (typeof _this.active_view["getMoreStatusPosts"] != "undefined") { + _this.active_view.getMoreStatusPosts(); + } + } + } } Sidebar.prototype.setUnreadMentions = function(count) { diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 19f9981..ff1feb4 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -20,6 +20,8 @@ function(Core, Paths, HostApp, URI) { this.since_id_entity = null; this.since_time = 0; + this.before = {id: null, entity: null, loading: false}; + this.container = document.createElement("div"); this.container.className = this.action; this.body = document.createElement("ol"); @@ -43,20 +45,28 @@ function(Core, Paths, HostApp, URI) { } - Timeline.prototype.newStatus = function(statuses) { + Timeline.prototype.newStatus = function(statuses, append) { if(statuses != null && statuses.length > 0) { + + var last_status = statuses[statuses.length -1]; + this.before.id = last_status.id + this.before.entity = last_status.entity; + this.before.loading = false; + for(var i = statuses.length-1, c=0; i>=c; --i) { var status = statuses[i]; - this.since_id = status.id; - this.since_id_entity = status.entity; + if(!append) { + this.since_id = status.id; + this.since_id_entity = status.entity; + } if (status.type == "https://tent.io/types/post/status/v0.1.0" || status.type == "https://tent.io/types/post/photo/v0.1.0") { var new_node = this.getStatusDOMElement(status); - if(this.body.childNodes.length > 0) { + if(!append && this.body.childNodes.length > 0) { if(this.body.childNodes.length > this.max_length) { @@ -76,14 +86,14 @@ function(Core, Paths, HostApp, URI) { } else if (status.type == "https://tent.io/types/post/repost/v0.1.0") { - this.getRepost(status, this.body.firstChild); + this.getRepost(status, append ? this.body.lastChild : this.body.firstChild, append); } } } } - Timeline.prototype.getNewData = function(add_to_search) { + Timeline.prototype.getNewData = function(add_to_search, append) { add_to_search = add_to_search || {}; @@ -100,7 +110,7 @@ function(Core, Paths, HostApp, URI) { url.addSearch("limit", this.max_length); - if(this.since_id) { + if(this.since_id && !append) { url.addSearch("since_id", this.since_id); url.addSearch("since_id_entity", this.since_id_entity); } @@ -116,8 +126,8 @@ function(Core, Paths, HostApp, URI) { try { - var json = JSON.parse(resp.responseText) - those.newStatus(json); + var json = JSON.parse(resp.responseText); + those.newStatus(json, append); } catch (e) { console.error(url + " JSON parse error"); @@ -136,6 +146,17 @@ function(Core, Paths, HostApp, URI) { } } + Timeline.prototype.getMoreStatusPosts = function() { + if (!this.before.loading && this.before.id) { + this.before.loading = true; + var add_search = { + "before_id": this.before.id, + "before_id_entity": this.before.entity + } + this.getNewData(add_search, true); + } + } + Timeline.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity, location, image_data_uri, is_private) { var _this = this; var callback = function(data) { _this.getNewData(); } diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index 39a90ab..a4fd86b 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -44,6 +44,8 @@ function start(view) { bungloo.conversation = new Conversation(); bungloo.search = new Search(); + bungloo.sidebar.showContentForTimeline(); + }); } From e039a1904c25db5994d1fd7f8522d76dabf2857f Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 10 Apr 2013 10:31:57 +0200 Subject: [PATCH 039/127] trying to fix cursor --- WebKit/scripts/controller/Mentions.js | 43 ++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index bc3b9dc..78f628d 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -36,13 +36,8 @@ function(HostApp, Timeline, URI, Paths, Core) { Mentions.prototype.newStatus = function(statuses, append) { Timeline.prototype.newStatus.call(this, statuses, append); - - -/* - if(this.is_not_init) { - this.unread_mentions += statuses.length; - HostApp.unreadMentions(this.unread_mentions); + if(this.is_not_init) { for (var i = 0; i < statuses.length; i++) { var status = statuses[i]; @@ -57,7 +52,7 @@ function(HostApp, Timeline, URI, Paths, Core) { }; } - this.is_not_init = true;*/ + this.is_not_init = true; } Mentions.prototype.getNewData = function(add_to_search, append) { @@ -69,6 +64,8 @@ function(HostApp, Timeline, URI, Paths, Core) { } Timeline.prototype.getNewData.call(this, add_to_search, append); + + this.getLatestMentionRead(); } Mentions.prototype.mentionRead = function(id, entity) { @@ -110,6 +107,38 @@ function(HostApp, Timeline, URI, Paths, Core) { } + Mentions.prototype.getLatestMentionRead = function() { + + var cursor_url = URI(Paths.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); + + Paths.getURL(cursor_url.toString(), "GET", function(resp) { + + var url = URI(Paths.mkApiRootPath("/posts/count")); + var post_types = [ + "https://tent.io/types/post/status/v0.1.0", + ]; + url.addSearch("post_types", post_types.join(",")); + url.addSearch("mentioned_entity", HostApp.stringForKey("entity")); + + + try { // don't crash when there is no cursor yet + var body = JSON.parse(resp.responseText); + var cursor = body["https://tent.io/types/info/cursor/v0.1.0"]["mentions"]["https://tent.io/types/post/status/v0.1.0"]; + url.addSearch("since_id", cursor.post_id); + url.addSearch("since_id_entity", cursor.post_entity); + } catch(e) { } + + var callback = function(resp) { + this.unread_mentions = parseInt(resp.responseText, 10); + HostApp.unreadMentions(this.unread_mentions); + } + + debug(url.toString()) + Paths.getURL(url.toString(), "GET", callback); // FIXME: error callback + }); + } + + return Mentions; }); \ No newline at end of file From 19c1bb2f1d586ed7a9ae8b257e8c63a1913fbfe0 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 10 Apr 2013 10:34:27 +0200 Subject: [PATCH 040/127] removed debug stuff --- WebKit/scripts/controller/Mentions.js | 1 - 1 file changed, 1 deletion(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 78f628d..7f3212d 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -133,7 +133,6 @@ function(HostApp, Timeline, URI, Paths, Core) { HostApp.unreadMentions(this.unread_mentions); } - debug(url.toString()) Paths.getURL(url.toString(), "GET", callback); // FIXME: error callback }); } From b98ec458fc8fece9dda924490c5312c97ba83ab5 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 10 Apr 2013 10:54:38 +0200 Subject: [PATCH 041/127] fixed problem with removing posts --- WebKit/scripts/helper/Core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 6d987ab..f0f93a3 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -901,7 +901,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { } Core.prototype.postDeleted = function(post_id, entity) { - var li = document.getElementById("post-" + post_id); + var li = document.getElementById("post-" + post_id + "-" + this.action); if (li) { if (li.parentNode == this.body) { this.body.removeChild(li); From 624dd9a1b9118f2d1a2f079b046bee1ba0656974 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 10 Apr 2013 17:17:09 +0200 Subject: [PATCH 042/127] fixed no notification on mention scroll --- WebKit/scripts/controller/Mentions.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 7f3212d..0cf8314 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -48,8 +48,8 @@ function(HostApp, Timeline, URI, Paths, Core) { name = profile["https://tent.io/types/info/basic/v0.1.0"].name; } - HostApp.notificateUserAboutMention(status.content.text, name || status.entity, status.id, status.entity); - }; + if(!append) HostApp.notificateUserAboutMention(status.content.text, name || status.entity, status.id, status.entity); + } } this.is_not_init = true; @@ -82,6 +82,7 @@ function(HostApp, Timeline, URI, Paths, Core) { } Mentions.prototype.updateLatestMentionRead = function() { + var status = this.body.firstChild.status; if (status && status.type == "https://tent.io/types/post/status/v0.1.0") { From be8a0c63e3343e346c2e4af9f2b846398021abf4 Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 14 Apr 2013 13:36:53 +0200 Subject: [PATCH 043/127] fixed problems with scroll to load more --- Qt/Bungloo.py | 15 ++++++++-- Qt/Windows.py | 8 +++-- WebKit/css/default.css | 15 ++++++++-- WebKit/scripts/controller/Conversation.js | 8 +++-- WebKit/scripts/controller/Profile.js | 11 ++++--- WebKit/scripts/controller/Sidebar.js | 14 +++++++-- WebKit/scripts/controller/Timeline.js | 36 ++++++++++++----------- WebKit/scripts/helper/Core.js | 18 +++++++----- WebKit/scripts/helper/HostApp.js | 8 +++++ WebKit/scripts/main.js | 13 ++++++-- 10 files changed, 101 insertions(+), 45 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 82567d4..d9d0e46 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -28,6 +28,7 @@ class Bungloo: self.preferences.show() self.oauth_implementation = Windows.Oauth(self) + self.conversation_views = [] if self.controller.stringForKey("user_access_token") != "": self.authentification_succeded() @@ -160,10 +161,10 @@ class Controller(QtCore.QObject): @QtCore.pyqtSlot(str, str, str, str) def notificateUserAboutMentionFromNameWithPostIdAndEntity(self, text, name, post_id, entity): try: - subprocess.check_output(['kdialog', '--passivepopup', name + ' mentioned you: ' + text]) + subprocess.check_output(['kdialog', '--passivepopup', (name + ' mentioned you: ' + text).replace("\"", "\\\"")]) except OSError: try: - subprocess.check_output(['notify-send', '-i', 'dialog-information', name + ' mentioned you on Tent', text]) + subprocess.check_output(['notify-send', '-i', 'dialog-information', name.replace("\"", "\\\"") + ' mentioned you on Tent', text.replace("\"", "\\\"")]) except OSError: pass @@ -221,6 +222,16 @@ class Controller(QtCore.QObject): self.app.timeline.evaluateJavaScript(func) self.app.timeline.show() + @QtCore.pyqtSlot(str, str) + def showConversationViewForPostIdandEntity(self, postId, entity): + custom_after_load = "function HostAppGo() { start('conversation-standalone', function() { bungloo.conversation.showStatus(" + custom_after_load += "'{}', '{}'".format(postId, entity) + custom_after_load += "); }) }" + + conversation = Windows.Timeline(self.app, "conversation", "Conversation", custom_after_load) + self.app.conversation_views += [conversation] + conversation.show() + @QtCore.pyqtSlot(str) def showProfileForEntity(self, entity): func = "bungloo.sidebar.onEntityProfile(); bungloo.entityProfile.showProfileForEntity('{}');".format(entity) diff --git a/Qt/Windows.py b/Qt/Windows.py index 6cca8f3..ec54c6c 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -76,10 +76,11 @@ class Preferences: class Timeline: - def __init__(self, app, action="timeline", title="Bungloo"): + def __init__(self, app, action="timeline", title="Bungloo", custom_after_load=None): self.app = app self.action = action self.title = title + self.custom_after_load = custom_after_load self.window = Helper.RestorableWindow(action, self.app) self.window.setWindowTitle(title) @@ -182,8 +183,7 @@ class Timeline: def show(self): self.window.show() - #self.window.raise_() - #QtGui.qApp.setActiveWindow(self.window) + def close(self): self.window.close() @@ -192,6 +192,8 @@ class Timeline: def load_finished(self, widget): script = "function HostAppGo() { start('" + self.action + "'); }" + if self.custom_after_load: + script = self.custom_after_load self.webView.page().mainFrame().evaluateJavaScript(script) def set_window_title(self, title): diff --git a/WebKit/css/default.css b/WebKit/css/default.css index cb42b0d..30398e3 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -7,16 +7,25 @@ html, body { body { font-family: "Lucida Grande", "Open Sans", "Ubuntu", Tahoma, sans-serif; font-size: 11px; - background: #dedede url(../img/background.png) center center no-repeat; + background: #dedede center center no-repeat; +} + +body#with-sidebar { + background-image: url(../img/background.png); } a { text-decoration: none; color: #00317a; outline: 0; -} +} #sidebar { + display: none; +} + +#with-sidebar #sidebar { + display: block; position: fixed; top: 0; left: 0; @@ -59,7 +68,7 @@ a { /*display: none;*/ } -#content { +#with-sidebar #content { margin-left: 62px; } diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index 61f2888..f4e6633 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -8,9 +8,11 @@ define([ function(HostApp, Core, Paths, URI) { - function Conversation() { + function Conversation(standalone) { Core.call(this); + + this.standalone = standalone; this.action = "conversation"; @@ -20,7 +22,7 @@ function(HostApp, Core, Paths, URI) { this.container.appendChild(this.body) document.getElementById("content").appendChild(this.container); - this.hide(); + if(!this.standalone) this.hide(); } Conversation.prototype = Object.create(Core.prototype); @@ -43,6 +45,8 @@ function(HostApp, Core, Paths, URI) { Conversation.prototype.showStatus = function(id, entity) { this.body.innerHTML = ""; + this.current_post_id = id; + this.current_entity = entity; this.append(id, entity); } diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 66ff432..fea2e33 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -417,11 +417,10 @@ function(HostApp, Core, Paths, URI) { if(statuses != null && statuses.length > 0) { - var last_status = statuses[statuses.length -1]; - this.before.id = last_status.id - this.before.entity = last_status.entity; this.before.loading = false; + if (append) statuses = statuses.reverse(); + for(var i = statuses.length-1, c=0; i>=c; --i) { var status = statuses[i]; @@ -460,11 +459,11 @@ function(HostApp, Core, Paths, URI) { } Profile.prototype.getMoreStatusPosts = function() { - if (!this.before.loading && this.before.id) { + if (!this.before.loading) { this.before.loading = true; var add_search = { - "before_id": this.before.id, - "before_id_entity": this.before.entity + "before_id": this.body.lastChild.status.id, + "before_id_entity": this.body.lastChild.status.entity } this.getStatuses(this.server, add_search, true); } diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 80800f0..5b453b8 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -20,8 +20,7 @@ function(HostApp, Paths, Cache) { this.menu.user = this.createItem("User", function() { _this.onEntity(); return false; }, "img/sidebar/user.png", "img/sidebar/user.png"); this.menu.timeline = this.createItem("Timeline", function() { _this.onTimeline(); return false; }, "img/sidebar/timeline.png", "img/sidebar/timeline_active.png", true); - this.menu.mentions = this.createItem("Mentions", function() { _this.onMentions(); return false; }, "img/sidebar/mentions.png", "img/sidebar/mentions_active.png"); - + this.menu.mentions = this.createItem("Mentions", function() { _this.onMentions(); return false; }, "img/sidebar/mentions.png", "img/sidebar/mentions_active.png"); this.menu.conversation = this.createItem("Conversation", function() { _this.onConversation(); return false; }, "img/sidebar/conversation.png", "img/sidebar/conversation_active.png"); this.menu.entityProfile = this.createItem("Profile", function() { _this.onEntityProfile(); return false; }, "img/sidebar/profile.png", "img/sidebar/profile_active.png"); this.menu.search = this.createItem("Search", function() { _this.onSearch(); return false; }, "img/sidebar/search.png", "img/sidebar/search_active.png") @@ -35,13 +34,22 @@ function(HostApp, Paths, Cache) { this.unreadMentionsSpan = document.createElement("span"); this.unreadMentionsSpan.className = "unread_mentions"; - this.menu.mentions.appendChild(this.unreadMentionsSpan); + this.menu.mentions.getElementsByTagName("a")[0].appendChild(this.unreadMentionsSpan); this.setUnreadMentions(0); + this.menu.conversation.getElementsByTagName("a")[0].ondblclick = function() { + var postId = bungloo.conversation.current_post_id; + var entity = bungloo.conversation.current_entity; + if (postId && entity) { + HostApp.showConversationViewForPostIdandEntity(postId, entity); + } + } + document.getElementById("sidebar").appendChild(this.body); // initial seting of the class document.body.className = "body-timeline"; + document.body.id = "with-sidebar"; this.setEntityAvatar(); this.setOnScroll(); diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index ff1feb4..6469d0b 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -14,7 +14,7 @@ function(Core, Paths, HostApp, URI) { this.action = "timeline"; this.reload_blocked = false; - this.max_length = 20; + this.max_length = 25; this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; this.since_id_entity = null; @@ -49,11 +49,10 @@ function(Core, Paths, HostApp, URI) { if(statuses != null && statuses.length > 0) { - var last_status = statuses[statuses.length -1]; - this.before.id = last_status.id - this.before.entity = last_status.entity; this.before.loading = false; + if (append) statuses = statuses.reverse(); + for(var i = statuses.length-1, c=0; i>=c; --i) { var status = statuses[i]; @@ -66,18 +65,20 @@ function(Core, Paths, HostApp, URI) { var new_node = this.getStatusDOMElement(status); - if(!append && this.body.childNodes.length > 0) { + if (!document.getElementById(new_node.id)) { + if(!append && this.body.childNodes.length > 0) { - if(this.body.childNodes.length > this.max_length) { + if(this.body.childNodes.length > this.max_length) { - this.body.removeChild(this.body.lastChild); + this.body.removeChild(this.body.lastChild); + } + + this.body.insertBefore(new_node, this.body.firstChild); + + } else { + + this.body.appendChild(new_node); } - - this.body.insertBefore(new_node, this.body.firstChild); - - } else { - - this.body.appendChild(new_node); } } else if (status.type == "https://tent.io/types/post/delete/v0.1.0") { @@ -107,7 +108,7 @@ function(Core, Paths, HostApp, URI) { "https://tent.io/types/post/photo/v0.1.0" ]; url.addSearch("post_types", post_types.join(",")); - + //url.addSearch("sort_by", "published_at"); url.addSearch("limit", this.max_length); if(this.since_id && !append) { @@ -147,12 +148,13 @@ function(Core, Paths, HostApp, URI) { } Timeline.prototype.getMoreStatusPosts = function() { - if (!this.before.loading && this.before.id) { + if (!this.before.loading) { this.before.loading = true; var add_search = { - "before_id": this.before.id, - "before_id_entity": this.before.entity + "before_id": this.body.lastChild.status.id, + "before_id_entity": this.body.lastChild.status.entity } + this.getNewData(add_search, true); } } diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index f0f93a3..5237f3c 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -4,7 +4,8 @@ define([ "lib/URI", "helper/HostApp", "helper/Cache", - "lib/Timeago" + "lib/Timeago", + "lib/SingleDoubleClick" ], function(jQuery, Paths, URI, HostApp, Cache) { @@ -336,10 +337,12 @@ function(jQuery, Paths, URI, HostApp, Cache) { template.ago.appendChild(time); template.ago.href = "#" - template.ago.onclick = function() { + + $(template.ago).single_double_click(function () { HostApp.showConversation(status.id, status.entity); - return false; - } + }, function () { + HostApp.showConversationViewForPostIdandEntity(status.id, status.entity); + }); // {"type":"Point","coordinates":[57.10803113,12.25854746]} if (status.content && status.content.location && (typeof status.content.location.type == "undefined" || status.content.location.type == "Point")) { @@ -370,7 +373,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { } - Core.prototype.getRepost = function(repost, before_node) { + Core.prototype.getRepost = function(repost, before_node, append) { var post = document.getElementById("post-" + repost.content.id + "-" + this.action); @@ -450,7 +453,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { var status = JSON.parse(resp.responseText); status.__repost = repost; var li = _this.getStatusDOMElement(status); - before_node.parentNode.insertBefore(li, before_node); + if(!document.getElementById(li.id)) before_node.parentNode.insertBefore(li, before_node); _this.getRepost(repost, before_node); // call this recursive because we now have the repost } } @@ -994,7 +997,8 @@ function(jQuery, Paths, URI, HostApp, Cache) { Core.prototype.afterChangingTextinMessageHTML = function(message_node) { // adding show search on click hash $(message_node).find("a.hash").click(function(e) { - bungloo.search.searchFor(e.target.innerHTML); + + if(bungloo.search) bungloo.search.searchFor(e.target.innerHTML); return false; }); diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index 8fa8b3a..1010e48 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -95,6 +95,14 @@ define(function() { } } + HostApp.showConversationViewForPostIdandEntity = function(id, entity) { + if (OS_TYPE == "mac") { + controller.showConversationViewForPostId_andEntity_(id, entity); + } else { + controller.showConversationViewForPostIdandEntity(id, entity); + } + } + HostApp.showProfileForEntity = function(entity) { if (OS_TYPE == "mac") { diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index a4fd86b..7e30518 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -14,7 +14,7 @@ requirejs.config({ baseUrl: 'scripts' }); -function start(view) { +function start(view, callback) { if (view == "oauth") { @@ -24,6 +24,15 @@ function start(view) { }); + } else if (view == "conversation-standalone") { + + require(["controller/Conversation"], function(Conversation) { + + bungloo.conversation = new Conversation(true); + if(callback) callback(); + + }); + } else { @@ -141,7 +150,7 @@ function loadCssPlugin(css_url) { function debug(string) { if (typeof string != "string") { - string = JSON.stringify(string); + string = JSON.stringify(string); } console.debug(string); From bb5b38fb4f8b762a279e55ec95004cec61f31637 Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 14 Apr 2013 13:51:36 +0200 Subject: [PATCH 044/127] added SingleDoubleClick --- WebKit/scripts/lib/SingleDoubleClick.js | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 WebKit/scripts/lib/SingleDoubleClick.js diff --git a/WebKit/scripts/lib/SingleDoubleClick.js b/WebKit/scripts/lib/SingleDoubleClick.js new file mode 100644 index 0000000..4577ddb --- /dev/null +++ b/WebKit/scripts/lib/SingleDoubleClick.js @@ -0,0 +1,30 @@ +define([ + "jquery" +], + +function(jQuery) { + +// Author: Jacek Becela +// Source: http://gist.github.com/399624 +// License: MIT + +jQuery.fn.single_double_click = function(single_click_callback, double_click_callback, timeout) { + return this.each(function(){ + var clicks = 0, self = this; + jQuery(this).click(function(event){ + clicks++; + if (clicks == 1) { + setTimeout(function(){ + if(clicks == 1) { + single_click_callback.call(self, event); + } else { + double_click_callback.call(self, event); + } + clicks = 0; + }, timeout || 300); + } + }); + }); +} + +}) \ No newline at end of file From 11e6da5592042499c9ffa7201425f709f65ea7cd Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 16 Apr 2013 19:13:14 +0200 Subject: [PATCH 045/127] fixing doubleclick --- WebKit/scripts/controller/Mentions.js | 20 +++++++++----------- WebKit/scripts/helper/Core.js | 2 ++ WebKit/scripts/lib/SingleDoubleClick.js | 1 + 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 0cf8314..326cadf 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -89,18 +89,16 @@ function(HostApp, Timeline, URI, Paths, Core) { var url = URI(Paths.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); var body = { - "https://tent.io/types/info/cursor/v0.1.0": { - "mentions": { - "https://tent.io/types/post/status/v0.1.0": { - "post_id": status.id, - "post_entity": status.entity - } + "mentions": { + "https://tent.io/types/post/status/v0.1.0": { + "post": status.id, + "entity": status.entity } } } var callback = function(resp) { - //debug(resp) + } Paths.getURL(url.toString(), "PUT", callback, JSON.stringify(body)); @@ -124,16 +122,16 @@ function(HostApp, Timeline, URI, Paths, Core) { try { // don't crash when there is no cursor yet var body = JSON.parse(resp.responseText); - var cursor = body["https://tent.io/types/info/cursor/v0.1.0"]["mentions"]["https://tent.io/types/post/status/v0.1.0"]; - url.addSearch("since_id", cursor.post_id); - url.addSearch("since_id_entity", cursor.post_entity); + var cursor = body["mentions"]["https://tent.io/types/post/status/v0.1.0"]; + url.addSearch("since_id", cursor["post"]); + url.addSearch("since_id_entity", cursor["entity"]); } catch(e) { } var callback = function(resp) { this.unread_mentions = parseInt(resp.responseText, 10); HostApp.unreadMentions(this.unread_mentions); } - + Paths.getURL(url.toString(), "GET", callback); // FIXME: error callback }); } diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 5237f3c..3904231 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -340,8 +340,10 @@ function(jQuery, Paths, URI, HostApp, Cache) { $(template.ago).single_double_click(function () { HostApp.showConversation(status.id, status.entity); + return false; }, function () { HostApp.showConversationViewForPostIdandEntity(status.id, status.entity); + return false; }); // {"type":"Point","coordinates":[57.10803113,12.25854746]} diff --git a/WebKit/scripts/lib/SingleDoubleClick.js b/WebKit/scripts/lib/SingleDoubleClick.js index 4577ddb..70c248f 100644 --- a/WebKit/scripts/lib/SingleDoubleClick.js +++ b/WebKit/scripts/lib/SingleDoubleClick.js @@ -23,6 +23,7 @@ jQuery.fn.single_double_click = function(single_click_callback, double_click_cal clicks = 0; }, timeout || 300); } + return false; // added by jeena so it doesn't follow links }); }); } From 142b4d4dd39a420a5df0813d7dfab13b54730b6d Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 16 Apr 2013 23:20:08 +0200 Subject: [PATCH 046/127] added opening conversation view in new window to OS X --- Mac/Bungloo.xcodeproj/project.pbxproj | 10 + Mac/Controller.h | 1 + Mac/Controller.m | 7 + Mac/English.lproj/MainMenu.xib | 32 +-- Mac/English.lproj/NewMessageWindow.xib | 2 +- Mac/NewConversationWindowController.h | 27 ++ Mac/NewConversationWindowController.m | 70 +++++ Mac/NewConversationWindowController.xib | 327 ++++++++++++++++++++++ Mac/ViewDelegate.h | 9 +- Mac/ViewDelegate.m | 19 +- WebKit/scripts/controller/Conversation.js | 5 + WebKit/scripts/controller/Profile.js | 4 +- WebKit/scripts/controller/Timeline.js | 5 +- 13 files changed, 481 insertions(+), 37 deletions(-) create mode 100644 Mac/NewConversationWindowController.h create mode 100644 Mac/NewConversationWindowController.m create mode 100644 Mac/NewConversationWindowController.xib diff --git a/Mac/Bungloo.xcodeproj/project.pbxproj b/Mac/Bungloo.xcodeproj/project.pbxproj index 42d4390..6e453be 100644 --- a/Mac/Bungloo.xcodeproj/project.pbxproj +++ b/Mac/Bungloo.xcodeproj/project.pbxproj @@ -22,6 +22,8 @@ 1F880B6B165EE0F60022A84D /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F880B6A165EE0F60022A84D /* NSData+Base64.m */; }; 1F880B6E165FE8890022A84D /* MimeType.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F880B6D165FE8890022A84D /* MimeType.m */; }; 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FA09846144602530079E258 /* libicucore.dylib */; }; + 1FADDCED171DCBF400502891 /* NewConversationWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FADDCEB171DCBF400502891 /* NewConversationWindowController.m */; }; + 1FADDCEE171DCBF400502891 /* NewConversationWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1FADDCEC171DCBF400502891 /* NewConversationWindowController.xib */; }; 1FC254A01427DFAD0035D84B /* AccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FC2549B1427D9930035D84B /* AccessToken.m */; }; 1FDEF722164EFE9100F927F3 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FDEF721164EFE9100F927F3 /* Growl.framework */; }; 1FDEF723164EFF3100F927F3 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1FDEF721164EFE9100F927F3 /* Growl.framework */; }; @@ -77,6 +79,9 @@ 1F880B6C165FE8890022A84D /* MimeType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MimeType.h; sourceTree = ""; }; 1F880B6D165FE8890022A84D /* MimeType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MimeType.m; sourceTree = ""; }; 1FA09846144602530079E258 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; }; + 1FADDCEA171DCBF400502891 /* NewConversationWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewConversationWindowController.h; sourceTree = ""; }; + 1FADDCEB171DCBF400502891 /* NewConversationWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewConversationWindowController.m; sourceTree = ""; }; + 1FADDCEC171DCBF400502891 /* NewConversationWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NewConversationWindowController.xib; sourceTree = ""; }; 1FC2549A1427D9930035D84B /* AccessToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AccessToken.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 1FC2549B1427D9930035D84B /* AccessToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AccessToken.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 1FDEF721164EFE9100F927F3 /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Growl.framework; sourceTree = ""; }; @@ -185,6 +190,8 @@ 1F880B6A165EE0F60022A84D /* NSData+Base64.m */, 1F880B6C165FE8890022A84D /* MimeType.h */, 1F880B6D165FE8890022A84D /* MimeType.m */, + 1FADDCEA171DCBF400502891 /* NewConversationWindowController.h */, + 1FADDCEB171DCBF400502891 /* NewConversationWindowController.m */, ); name = Classes; sourceTree = ""; @@ -210,6 +217,7 @@ 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */, 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */, + 1FADDCEC171DCBF400502891 /* NewConversationWindowController.xib */, 1FDEF724164F079800F927F3 /* Growl Registration Ticket.growlRegDict */, ); name = Resources; @@ -287,6 +295,7 @@ 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */, 1F1C80F916482A250010B409 /* WebKit in Resources */, 1F132C791666CD9700E4E661 /* TB_SendTemplate.png in Resources */, + 1FADDCEE171DCBF400502891 /* NewConversationWindowController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -306,6 +315,7 @@ 1F618ECA12DB5E6100E500D9 /* PostModel.m in Sources */, 1F880B6B165EE0F60022A84D /* NSData+Base64.m in Sources */, 1F880B6E165FE8890022A84D /* MimeType.m in Sources */, + 1FADDCED171DCBF400502891 /* NewConversationWindowController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Mac/Controller.h b/Mac/Controller.h index 7197357..d93ffbd 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -68,6 +68,7 @@ - (IBAction)showSearch:(id)sender; - (IBAction)showAbout:(id)sender; - (IBAction)showNext:(id)sender; +- (IBAction)showConversationViewForPostId:(NSString *)postId andEntity:(NSString *)entity; - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity; diff --git a/Mac/Controller.m b/Mac/Controller.m index 9c5986e..ce81fd8 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -10,6 +10,7 @@ #import "NewMessageWindow.h" #import "PostModel.h" #import "NSData+Base64.h" +#import "NewConversationWindowController.h" @implementation Controller @synthesize showProfileTextField; @@ -387,6 +388,12 @@ [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onConversation();"]; } +- (IBAction)showConversationViewForPostId:(NSString *)postId andEntity:(NSString *)entity +{ + NewConversationWindowController *conversationView = [[NewConversationWindowController alloc] initWithPostId:postId entity:entity andViewDelegate:viewDelegate]; + [conversationView showWindow:conversationView.window]; +} + - (IBAction)showProfile:(id)sender { if ([sender isKindOfClass:[NSMenuItem class]]) { diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index 818374b..9e8566b 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -887,6 +887,7 @@ YES YES + 13WebKitAllowAnimatedImageLoopingPreferenceKey 13WebKitJavaEnabled 13WebKitJavaScriptCanOpenWindowsAutomatically 13WebKitPluginsEnabled @@ -896,6 +897,7 @@ + @@ -1052,6 +1054,7 @@ {{391, 46}, {75, 32}} + _NS:9 YES @@ -1160,6 +1163,7 @@ {{285, 13}, {74, 32}} + _NS:9 YES @@ -2812,15 +2816,11 @@ clearCache: login: logout: - openNewMessageWindow: - sendPost: showAbout: showConversation: - showConversationForPostId:andEntity: showMentions: showNext: showProfile: - showProfileForEntity: showSearch: showTimeline: @@ -2833,13 +2833,9 @@ id id id - NSString id id id - NSString - id - id @@ -2849,15 +2845,11 @@ clearCache: login: logout: - openNewMessageWindow: - sendPost: showAbout: showConversation: - showConversationForPostId:andEntity: showMentions: showNext: showProfile: - showProfileForEntity: showSearch: showTimeline: @@ -2875,14 +2867,6 @@ logout: id - - openNewMessageWindow: - id - - - sendPost: - id - showAbout: id @@ -2891,10 +2875,6 @@ showConversation: id - - showConversationForPostId:andEntity: - NSString - showMentions: id @@ -2907,10 +2887,6 @@ showProfile: id - - showProfileForEntity: - NSString - showSearch: id diff --git a/Mac/English.lproj/NewMessageWindow.xib b/Mac/English.lproj/NewMessageWindow.xib index 14100db..9814cec 100644 --- a/Mac/English.lproj/NewMessageWindow.xib +++ b/Mac/English.lproj/NewMessageWindow.xib @@ -42,7 +42,7 @@ 15 2 {{133, 535}, {299, 113}} - 1886913536 + 813171712 New Post NSWindow View diff --git a/Mac/NewConversationWindowController.h b/Mac/NewConversationWindowController.h new file mode 100644 index 0000000..d4d166d --- /dev/null +++ b/Mac/NewConversationWindowController.h @@ -0,0 +1,27 @@ +// +// NewConversationWindowController.h +// Bungloo +// +// Created by Jeena on 16/04/2013. +// +// + +#import +#import +#import "ViewDelegate.h" + +@interface NewConversationWindowController : NSWindowController { + NSString *postId; + NSString *entity; + IBOutlet WebView *timelineView; + ViewDelegate *viewDelegate; +} + +@property (nonatomic, retain) NSString *postId; +@property (nonatomic, retain) NSString *entity; +@property (nonatomic, retain) IBOutlet WebView *timelineView; +@property (nonatomic, retain) ViewDelegate *viewDelegate; + +- (id)initWithPostId:(NSString *)postId entity:(NSString *)entity andViewDelegate:(ViewDelegate *)viewDelegate; + +@end diff --git a/Mac/NewConversationWindowController.m b/Mac/NewConversationWindowController.m new file mode 100644 index 0000000..77bffc8 --- /dev/null +++ b/Mac/NewConversationWindowController.m @@ -0,0 +1,70 @@ +// +// NewConversationWindowController.m +// Bungloo +// +// Created by Jeena on 16/04/2013. +// +// + +#import "NewConversationWindowController.h" +#import "Controller.h" + +@implementation NewConversationWindowController + +@synthesize postId, entity, timelineView, viewDelegate; + +- (id)initWithWindow:(NSWindow *)window +{ + self = [super initWithWindow:window]; + if (self) { + // Initialization code here. + } + + return self; +} + +- (id)initWithPostId:(NSString *)_postId entity:(NSString *)_entity andViewDelegate:(ViewDelegate *)_viewDelegate; +{ + self = [super initWithWindowNibName:@"NewConversationWindowController"]; + if (self) { + self.postId = _postId; + self.entity = _entity; + self.viewDelegate = _viewDelegate; + } + + return self; +} + +- (void)windowDidLoad +{ + [super windowDidLoad]; + + // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. + NSString *index_string; + NSURL *url; + + + Controller *controller = (Controller *)[[NSApplication sharedApplication] delegate]; + [controller stringFromFile: @"index.html" url: &url content: &index_string]; + + [self.viewDelegate.conversationViews addObject:timelineView]; + [[timelineView mainFrame] loadHTMLString:index_string baseURL:url]; + [timelineView setFrameLoadDelegate:viewDelegate]; + [timelineView setPolicyDelegate:viewDelegate]; + [timelineView setUIDelegate:viewDelegate]; + [[timelineView windowScriptObject] setValue:controller forKey:@"controller"]; + [[timelineView windowScriptObject] setValue:self forKey:@"conversationViewController"]; + +} + ++ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector +{ + return NO; +} + ++ (BOOL)isKeyExcludedFromWebScript:(const char *)name +{ + return NO; +} + +@end diff --git a/Mac/NewConversationWindowController.xib b/Mac/NewConversationWindowController.xib new file mode 100644 index 0000000..877eff6 --- /dev/null +++ b/Mac/NewConversationWindowController.xib @@ -0,0 +1,327 @@ + + + + 1080 + 12D78 + 3084 + 1187.37 + 626.00 + + 3084 + 2053 + + + IBNSLayoutConstraint + NSCustomObject + NSView + NSWindowTemplate + WebView + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + + + PluginDependencyRecalculationVersion + + + + + NewConversationWindowController + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{712, 280}, {397, 581}} + 880280576 + Conversation + NSWindow + + + + + 256 + + + + 274 + + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple URL pasteboard type + Apple Web Archive pasteboard type + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + WebURLsWithTitlesPboardType + public.png + public.url + public.url-name + + {397, 581} + + + + + + + 13 + + + + + + + + NO + YES + + + {397, 581} + + + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + conversationWindow + YES + + + + + + + window + + + + 12 + + + + timelineView + + + + 15 + + + + delegate + + + + 13 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + + + + Timeline + + + 6 + + + + + + 4 + 0 + + 4 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + + + 7 + + + timeline + + + 8 + + + + + 9 + + + + + 10 + + + + + 11 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{202, 175}, {397, 581}} + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.WebKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 15 + + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + NewConversationWindowController + NSWindowController + + timelineView + WebView + + + timelineView + + timelineView + WebView + + + + IBProjectSource + ./Classes/NewConversationWindowController.h + + + + + 0 + IBCocoaFramework + YES + 3 + YES + + diff --git a/Mac/ViewDelegate.h b/Mac/ViewDelegate.h index 689b094..e89b091 100644 --- a/Mac/ViewDelegate.h +++ b/Mac/ViewDelegate.h @@ -11,9 +11,12 @@ #import "Constants.h" @interface ViewDelegate : NSObject { - WebView *timelineView; WebView *oauthView; + WebView *timelineView; + WebView *oauthView; + NSMutableArray *conversationViews; } -@property (nonatomic, assign) WebView *timelineView;@property (nonatomic, assign) WebView *oauthView; - +@property (nonatomic, assign) WebView *timelineView; +@property (nonatomic, assign) WebView *oauthView; +@property (nonatomic, assign) NSMutableArray *conversationViews; @end diff --git a/Mac/ViewDelegate.m b/Mac/ViewDelegate.m index c10a6ad..ca50f18 100644 --- a/Mac/ViewDelegate.m +++ b/Mac/ViewDelegate.m @@ -11,7 +11,16 @@ @implementation ViewDelegate -@synthesize timelineView, oauthView; +@synthesize timelineView, oauthView, conversationViews; + +- (id)init +{ + self = [super init]; + if (self) { + self.conversationViews = [[NSMutableArray alloc] init]; + } + return self; +} - (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)message { @@ -19,6 +28,7 @@ NSString *viewName = @"TimelineView"; if (sender == oauthView) viewName = @"OauthView"; + else if(sender != timelineView) viewName = @"ConversationView"; NSLog(@"js<%@>: %@:%@: %@", viewName, @@ -31,6 +41,7 @@ - (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { NSString *viewName = @"TimelineView"; if (sender == oauthView) viewName = @"OauthView"; + else if (sender != timelineView) viewName = @"ConversationView"; NSLog(@"jsa<%@>: %@", viewName, message); } @@ -75,11 +86,15 @@ } [sender stringByEvaluatingJavaScriptFromString:@"var OS_TYPE = 'mac';"]; - + if (sender == oauthView) { [oauthView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('oauth') }"]; + } else if([conversationViews containsObject:sender]) { + + [sender stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('conversation-standalone', function() { bungloo.conversation.showStatusFromController(); }) }"]; + } else { [sender stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('timeline') }"]; diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index f4e6633..cb49aeb 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -50,6 +50,11 @@ function(HostApp, Core, Paths, URI) { this.append(id, entity); } + // Hack for OS X + Conversation.prototype.showStatusFromController = function() { + this.showStatus(conversationViewController.postId, conversationViewController.entity); + } + Conversation.prototype.append = function(id, entity, node, add_after) { var _this = this; diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index fea2e33..584a046 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -14,6 +14,8 @@ function(HostApp, Core, Paths, URI) { this.action = "profile"; + this.posts_limit = 25; + this.container = document.createElement("div"); this.container.className = this.action; document.getElementById("content").appendChild(this.container); @@ -390,7 +392,7 @@ function(HostApp, Core, Paths, URI) { add_search = add_search || {}; var url = URI(root_url + "/posts"); - url.addSearch("limit", 20); + url.addSearch("limit", this.posts_limit); var post_types = [ "https://tent.io/types/post/repost/v0.1.0", diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 6469d0b..fbd1383 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -14,7 +14,8 @@ function(Core, Paths, HostApp, URI) { this.action = "timeline"; this.reload_blocked = false; - this.max_length = 25; + this.posts_limit = 25; + this.max_length = 200; this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; this.since_id_entity = null; @@ -109,7 +110,7 @@ function(Core, Paths, HostApp, URI) { ]; url.addSearch("post_types", post_types.join(",")); //url.addSearch("sort_by", "published_at"); - url.addSearch("limit", this.max_length); + url.addSearch("limit", this.posts_limit); if(this.since_id && !append) { url.addSearch("since_id", this.since_id); From 522fb7a486ab170c2374e09d7b2bd0c5c6142575 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 17 Apr 2013 07:32:39 +0200 Subject: [PATCH 047/127] os x version bump --- Mac/Bungloo-Info.plist | 4 ++-- Mac/publish/ReleaseNotes.html | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Mac/Bungloo-Info.plist b/Mac/Bungloo-Info.plist index 6f11cbf..14b373c 100644 --- a/Mac/Bungloo-Info.plist +++ b/Mac/Bungloo-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.3.0 + 1.4.0 CFBundleSignature ???? CFBundleURLTypes @@ -57,7 +57,7 @@ CFBundleVersion - 1.3.0 + 1.4.0 LSApplicationCategoryType public.app-category.social-networking LSMinimumSystemVersion diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index d28e12c..346b96f 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -13,6 +13,18 @@ +

    Bungloo 1.4.0

    + +

    Added scroll to load more posts

    +

    Added doubleclick for conversation in new window

    +

    Added synchronized "read mentions" cursor

    +

    Added "show next view" shortcut

    +

    New possibilities for plugins

    +

    Inverted "from" label position

    +

    Bugfixes

    + +
    +

    Bungloo 1.3.0

    Changed to one window

    From f5756d5db60bbc03f4cd4269950eb49f1f8342ee Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 17 Apr 2013 07:48:42 +0200 Subject: [PATCH 048/127] version bump Linux and Windows --- Linux/debian/changelog | 13 +++++++++++++ Linux/deploy.sh | 2 +- Windows/installer.iss | 2 +- Windows/setup.py | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Linux/debian/changelog b/Linux/debian/changelog index c52acfb..6bbcd15 100644 --- a/Linux/debian/changelog +++ b/Linux/debian/changelog @@ -1,3 +1,16 @@ +bungloo (1.4.0) auantal; urgency=low + + [ Jeena Paradies ] + * Added scroll to load more posts + * Added doubleclick for conversation in new window + * Added synchronized "read mentions" cursor + * Added "show next view" shortcut + * New possibilities for plugins + * Inverted "from" label position + * Bugfixes + + -- Jeena Tue, 17 Apr 2013 07:50:00 +0100 + bungloo (1.3.0) quantal; urgency=low [ Jeena Paradies ] diff --git a/Linux/deploy.sh b/Linux/deploy.sh index a60ebb8..517d06e 100755 --- a/Linux/deploy.sh +++ b/Linux/deploy.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION="1.3.0" +VERSION="1.4.0" DEPLOYPATH="bungloo-${VERSION}" QTPATH="../Qt" SHAREDPATH=".." diff --git a/Windows/installer.iss b/Windows/installer.iss index 4965a11..12c07c0 100644 --- a/Windows/installer.iss +++ b/Windows/installer.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Bungloo" -#define MyAppVersion "1.3.0" +#define MyAppVersion "1.4.0" #define MyAppPublisher "Jabs Nu" #define MyAppURL "http://jabs.nu/bungloo" #define MyAppExeName "Bungloo.exe" diff --git a/Windows/setup.py b/Windows/setup.py index 0ea0ceb..4456918 100644 --- a/Windows/setup.py +++ b/Windows/setup.py @@ -15,7 +15,7 @@ for dirname, dirnames, filenames in os.walk('images'): setup( name = "Bungloo", - version = "1.3.0", + version = "1.4.0", author = "Jeena Paradies", author_email = "spam@jeenaparadies.net", url = "http://jabs.nu/bungloo", From 6db4ee634b498c916fa065fd517f73e58dabd7d9 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 17 Apr 2013 08:30:30 +0200 Subject: [PATCH 049/127] fixed too big icon on linux --- Linux/bungloo.desktop.exmp | 2 +- Linux/deploy.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Linux/bungloo.desktop.exmp b/Linux/bungloo.desktop.exmp index d21b077..912d5d0 100644 --- a/Linux/bungloo.desktop.exmp +++ b/Linux/bungloo.desktop.exmp @@ -3,7 +3,7 @@ Version={VERSION} Comment=Tent is a distributed social network protocol and Bungloo is one of the clients using it. Exec=/usr/bin/bungloo GenericName=Tent Client -Icon=/usr/share/pixmaps/bungloo.xpm +Icon=bungloo Name=Bungloo NoDisplay=false StartupNotify=true diff --git a/Linux/deploy.sh b/Linux/deploy.sh index 517d06e..264df60 100755 --- a/Linux/deploy.sh +++ b/Linux/deploy.sh @@ -24,7 +24,6 @@ cp -r $SHAREDPATH/images $DEPLOYPATH/bungloo/ cp $SHAREDPATH/readme.md $DEPLOYPATH/README cp $SHAREDPATH/LICENCE.txt $DEPLOYPATH/COPYING cp -r debian $DEPLOYPATH/ -cp bungloo.desktop $DEPLOYPATH/ cd $DEPLOYPATH make builddeb From c5d7c7d0a01f586c4e2c2a59ffdaee1e731fd8ba Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 17 Apr 2013 11:52:27 +0200 Subject: [PATCH 050/127] fixed problems with linux deploy --- Linux/Makefile.exmp | 3 ++- Linux/debian/rules | 1 + Linux/deploy.sh | 3 ++- Linux/setup.py.exmp | 8 ++++++-- Qt/Helper.py | 5 ++++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Linux/Makefile.exmp b/Linux/Makefile.exmp index 1e34feb..ed76649 100644 --- a/Linux/Makefile.exmp +++ b/Linux/Makefile.exmp @@ -35,4 +35,5 @@ clean: $(PYTHON) setup.py clean $(MAKE) -f $(CURDIR)/debian/rules clean rm -rf build/ MANIFEST - find . -name '*.pyc' -delete \ No newline at end of file + find . -name '*.pyc' -delete + diff --git a/Linux/debian/rules b/Linux/debian/rules index f0766df..351bb67 100755 --- a/Linux/debian/rules +++ b/Linux/debian/rules @@ -15,3 +15,4 @@ install/bungloo:: clean:: rm -rf build build-stamp configure-stamp build/ MANIFEST dh_clean + diff --git a/Linux/deploy.sh b/Linux/deploy.sh index 264df60..82ec03c 100755 --- a/Linux/deploy.sh +++ b/Linux/deploy.sh @@ -4,7 +4,7 @@ VERSION="1.4.0" DEPLOYPATH="bungloo-${VERSION}" QTPATH="../Qt" SHAREDPATH=".." -DISTPATH=dist +DISTPATH="dist" rm -rf $DEPLOYPATH rm -rf $DISTPATH @@ -41,6 +41,7 @@ rm bungloo_${VERSION}.dsc rm bungloo_${VERSION}.orig.tar.gz rm -rf $DEPLOYPATH rm $DISTPATH/bungloo-${VERSION}-1.src.rpm +mv $DISTPATH/bungloo-${VERSION}-1.noarch.rpm $DISTPATH/bungloo-${VERSION}.noarch.rpm echo "Done." diff --git a/Linux/setup.py.exmp b/Linux/setup.py.exmp index 06130f5..c9eaa8a 100644 --- a/Linux/setup.py.exmp +++ b/Linux/setup.py.exmp @@ -21,5 +21,9 @@ setup( license = "BSD license", packages = ['bungloo'], package_data = {"bungloo": files}, - scripts = ["bin/bungloo"] - ) + scripts = ["bin/bungloo"], + data_files=[ + ('/usr/share/applications', ["bungloo.desktop"]), + ('/usr/share/pixmaps', ["bungloo/images/bungloo.xpm"]) + ] +) diff --git a/Qt/Helper.py b/Qt/Helper.py index 09cd069..4d87872 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -12,7 +12,10 @@ import array class Helper: @classmethod def get_resource_path(cls): - return os.path.dirname(sys.argv[0]) + if os.name == "nt": + return os.path.dirname(sys.argv[0]) + else: + return os.path.dirname(__file__) class WebPage(QtWebKit.QWebPage): def __init__(self, parent=0, app=None): From 965aa6af7e7542a82111a90d7fee9772be16825b Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 17 Apr 2013 23:51:07 +0200 Subject: [PATCH 051/127] added icon --- Windows/setup.py | 23 ++++++++++++++++------- images/Icon.ico | Bin 370070 -> 77926 bytes 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Windows/setup.py b/Windows/setup.py index 0ea0ceb..95687ff 100644 --- a/Windows/setup.py +++ b/Windows/setup.py @@ -13,19 +13,28 @@ for dirname, dirnames, filenames in os.walk('images'): for filename in filenames: files += [(dirname, [os.path.join(dirname, filename)])] +imageformats = [] +for dirname, dirnames, filenames in os.walk('C:\\Python27\\Lib\\site-packages\\PyQt4\\plugins\\imageformats'): + for filename in filenames: + imageformats += [os.path.join(dirname, filename)] + +files += [('imageformats', imageformats)] + setup( name = "Bungloo", - version = "1.3.0", + version = "1.4.0", author = "Jeena Paradies", author_email = "spam@jeenaparadies.net", url = "http://jabs.nu/bungloo", license = "BSD license", data_files = files, - windows = ["Bungloo.py"], + windows = [{ + 'script': "Bungloo.py", + 'icon_resources': [(1, 'images/Icon.ico')], + }], options = { - "py2exe": { - "includes": ["sip", "ssl", "PyQt4.QtCore", "PyQt4.QtGui", "PyQt4.QtNetwork"], - "bundle_files": 2 - } + "py2exe": { + "includes": ["sip", "ssl", "PyQt4.QtCore", "PyQt4.QtGui", "PyQt4.QtNetwork"], } - ) + } +) diff --git a/images/Icon.ico b/images/Icon.ico index e386d9ec90cb4a54d833b2fff480cf8304e5f38d..877fbfac6de1280be7035a93e67633475e38f268 100644 GIT binary patch literal 77926 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 M69_+nKl~H;fBdzN5dZ)H From 99affdf33b837f2f4d26a59f17ad61a9ec18c041 Mon Sep 17 00:00:00 2001 From: jeena Date: Sat, 20 Apr 2013 15:54:50 +0200 Subject: [PATCH 052/127] changes necessary for launchpad --- Linux/bungloo.ebuild.exmp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Linux/bungloo.ebuild.exmp diff --git a/Linux/bungloo.ebuild.exmp b/Linux/bungloo.ebuild.exmp new file mode 100644 index 0000000..4633edf --- /dev/null +++ b/Linux/bungloo.ebuild.exmp @@ -0,0 +1,20 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 +PYTHON_COMPAT=(python{2_6,2_7}) + +inherit eutils distutils-r1 + +DESCRIPTION="Qt4/KDE Tent client" +HOMEPAGE="https://jabs.nu/bungloo" + +LICENSE="BSD" +KEYWORDS="~x86 ~amd64" +SLOT="0" +IUSE="" +SRC_URI="http://jabs.nu/bungloo/download/${P}.tar.gz" + +DEPEND=">=dev-python/PyQt4-4.6" + From 2b8782bed97de8b127850d810532ec50ecd30cfc Mon Sep 17 00:00:00 2001 From: jeena Date: Sat, 20 Apr 2013 15:56:21 +0200 Subject: [PATCH 053/127] changes for launchpad --- Linux/Makefile.exmp | 2 +- Linux/debian/changelog | 8 ++++---- Linux/debian/control | 2 +- Linux/deploy.sh | 16 ++++++++++------ 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Linux/Makefile.exmp b/Linux/Makefile.exmp index ed76649..0090838 100644 --- a/Linux/Makefile.exmp +++ b/Linux/Makefile.exmp @@ -29,7 +29,7 @@ builddeb: $(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../ --prune rename -f 's/$(PROJECT)-(.*)\.tar\.gz/$(PROJECT)_$$1\.orig\.tar\.gz/' ../* # build the package - dpkg-buildpackage -i -I -rfakeroot + dpkg-buildpackage -i -I -rfakeroot -S clean: $(PYTHON) setup.py clean diff --git a/Linux/debian/changelog b/Linux/debian/changelog index 6bbcd15..bcd1ffb 100644 --- a/Linux/debian/changelog +++ b/Linux/debian/changelog @@ -1,4 +1,4 @@ -bungloo (1.4.0) auantal; urgency=low +bungloo (1.4.0) quantal; urgency=low [ Jeena Paradies ] * Added scroll to load more posts @@ -9,7 +9,7 @@ bungloo (1.4.0) auantal; urgency=low * Inverted "from" label position * Bugfixes - -- Jeena Tue, 17 Apr 2013 07:50:00 +0100 + -- Jeena Paradies Tue, 17 Apr 2013 07:50:00 +0100 bungloo (1.3.0) quantal; urgency=low @@ -18,11 +18,11 @@ bungloo (1.3.0) quantal; urgency=low * Added search (skate.io) * Added log out - -- Jeena Tue, 26 Mar 2013 21:50:00 +0100 + -- Jeena Paradies Tue, 26 Mar 2013 21:50:00 +0100 bungloo (1.2.0) quantal; urgency=low [ Jeena Paradies ] * Initial release. - -- Jeena Tue, 05 Mar 2013 17:57:47 +0100 + -- Jeena Paradies Tue, 05 Mar 2013 17:57:47 +0100 diff --git a/Linux/debian/control b/Linux/debian/control index 15d7830..4f2e11c 100644 --- a/Linux/debian/control +++ b/Linux/debian/control @@ -1,5 +1,5 @@ Source: bungloo -Section: Miscellaneous +Section: net Priority: optional Maintainer: Jeena Paradies Build-Depends: debhelper (>=7.0.50~), python-support (>= 0.6), cdbs (>= 0.4.49), python-all-dev diff --git a/Linux/deploy.sh b/Linux/deploy.sh index 82ec03c..c2c9fe3 100755 --- a/Linux/deploy.sh +++ b/Linux/deploy.sh @@ -33,17 +33,21 @@ echo "Cleaning up ..." mv $DISTPATH .. cd .. -mv bungloo_${VERSION}_all.deb $DISTPATH -rm bungloo_${VERSION}_amd64.changes -rm bungloo_${VERSION}.diff.gz -rm bungloo_${VERSION}.dsc -rm bungloo_${VERSION}.orig.tar.gz +cp bungloo.ebuild.exmp $DISTPATH/bungloo-${VERSION}.ebuild + +mv bungloo_${VERSION}_all.deb $DISTPATH +mv bungloo_${VERSION}_amd64.changes $DISTPATH +mv bungloo_${VERSION}.diff.gz $DISTPATH +mv bungloo_${VERSION}.dsc $DISTPATH +mv bungloo_${VERSION}.orig.tar.gz $DISTPATH +mv bungloo_${VERSION}_source.changes $DISTPATH + rm -rf $DEPLOYPATH rm $DISTPATH/bungloo-${VERSION}-1.src.rpm mv $DISTPATH/bungloo-${VERSION}-1.noarch.rpm $DISTPATH/bungloo-${VERSION}.noarch.rpm echo "Done." - +echo "dput ppa:jeena/bungloo $DISTPATH/bungloo_${VERSION}_source.changes" # eof From 9a999ba2cc7bed3f636ed5b9ae3dc9705dba256d Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 21 Apr 2013 12:21:29 +0200 Subject: [PATCH 054/127] fixed problem with unread mentions and reposts --- WebKit/scripts/controller/Mentions.js | 35 ++++++++++++++++----------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 326cadf..a0cc51c 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -83,25 +83,32 @@ function(HostApp, Timeline, URI, Paths, Core) { Mentions.prototype.updateLatestMentionRead = function() { - var status = this.body.firstChild.status; + for (var i = 0; i < this.body.childNodes.length; i++) { - if (status && status.type == "https://tent.io/types/post/status/v0.1.0") { + var status = this.body.childNodes[i].status; - var url = URI(Paths.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); - var body = { - "mentions": { - "https://tent.io/types/post/status/v0.1.0": { - "post": status.id, - "entity": status.entity + if (!status.__repost) { + if (status && status.type == "https://tent.io/types/post/status/v0.1.0") { + + var url = URI(Paths.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); + var body = { + "mentions": { + "https://tent.io/types/post/status/v0.1.0": { + "post": status.id, + "entity": status.entity + } + } } + + var callback = function(resp) { + + } + + Paths.getURL(url.toString(), "PUT", callback, JSON.stringify(body)); } + + break; } - - var callback = function(resp) { - - } - - Paths.getURL(url.toString(), "PUT", callback, JSON.stringify(body)); } } From 58366ccd530878368bad4bb01dcf9208327f1e43 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 22 Apr 2013 12:03:40 +0200 Subject: [PATCH 055/127] fixed #217 --- WebKit/css/default.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 30398e3..eb29391 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -41,6 +41,11 @@ a { text-align: center; } +#sidebar * { + -webkit-touch-callout: none; + -webkit-user-select: none; +} + #siedebar a { color: #5b5b5b; } From 39c938b29b6ce6a48c981f356793ed5473653361 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 22 Apr 2013 12:37:51 +0200 Subject: [PATCH 056/127] fixed #213 --- WebKit/scripts/controller/Oauth.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 20cb76f..0cebc2e 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -47,9 +47,15 @@ function(HostApp, Paths, Hmac) { var entity = HostApp.stringForKey("entity"); - if (entity && (entity.startsWith("http://") || entity.startsWith("https://"))) { - this.entity = entity; - this.requestProfileURL(this.entity); + if (entity && entity.startsWith("http")) { + if((entity.startsWith("http://") || entity.startsWith("https://"))) { + this.entity = entity; + this.requestProfileURL(this.entity); + } else { + this.entity = "https://" + entity; + HostApp.setStringForKey(this.entity, "entity"); + this.requestProfileURL(this.entity); + } } else { HostApp.authentificationDidNotSucceed("The entity should start with https:// or http://"); } From 8145f3e28c68ba248e226383d3c341caf953b49c Mon Sep 17 00:00:00 2001 From: jeena Date: Fri, 26 Apr 2013 11:41:21 +0200 Subject: [PATCH 057/127] added close window shortcut --- LICENCE.txt => LICENSE.txt | 0 Qt/Windows.py | 8 ++++++-- 2 files changed, 6 insertions(+), 2 deletions(-) rename LICENCE.txt => LICENSE.txt (100%) diff --git a/LICENCE.txt b/LICENSE.txt similarity index 100% rename from LICENCE.txt rename to LICENSE.txt diff --git a/Qt/Windows.py b/Qt/Windows.py index ec54c6c..9a68ce2 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -114,6 +114,11 @@ class Timeline: findEntityAction.setStatusTip("Find entity and open its profile view") findEntityAction.triggered.connect(self.app.find_entity_show) + closeAction = QtGui.QAction("&Close Window", self.window) + closeAction.setShortcut("Ctrl+w") + closeAction.setStatusTip("Close this window") + closeAction.triggered.connect(self.window.close) + logOutAction = QtGui.QAction("&Log Out", self.window) logOutAction.setStatusTip("Log out from this entity") logOutAction.triggered.connect(self.app.log_out) @@ -126,6 +131,7 @@ class Timeline: fileMenu = menubar.addMenu("&File") fileMenu.addAction(newPostAction) fileMenu.addAction(findEntityAction) + fileMenu.addAction(closeAction) fileMenu.addSeparator() fileMenu.addAction(logOutAction) fileMenu.addAction(exitAction) @@ -473,5 +479,3 @@ class NewPost(Helper.RestorableWindow): else: self.imageFilePath = None - - From cbfe445ed661e91ee5708357496fdee819c36dba Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 28 Apr 2013 00:27:22 +0200 Subject: [PATCH 058/127] fixed opening without is_private --- WebKit/scripts/helper/HostApp.js | 1 + 1 file changed, 1 insertion(+) diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index 1010e48..60cf9e5 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -82,6 +82,7 @@ define(function() { if (OS_TYPE == "mac") { controller.openNewMessageWindowInReplyTo_statusId_withString_isPrivate_(entity, status_id, string, is_private); } else { + is_private = is_private == true controller.openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(entity, status_id, string, is_private); } } From 4ba0f38708ee1bfbba09ba63ebbe6f934d5d4eff Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 28 Apr 2013 00:28:50 +0200 Subject: [PATCH 059/127] opening only one single instance of the application and adding the possibility to send messages to it --- Qt/Bungloo.py | 57 +++++++++++++++++++------- Qt/SingleApplication.py | 90 +++++++++++++++++++++++++++++++++++++++++ Qt/Windows.py | 3 ++ 3 files changed, 136 insertions(+), 14 deletions(-) create mode 100755 Qt/SingleApplication.py diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index d9d0e46..6a065e7 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -1,17 +1,17 @@ #!/usr/bin/env python2 -import os, sys, pickle, subprocess, shutil +import os, sys, pickle, subprocess, shutil, json from PyQt4 import QtCore, QtGui, QtWebKit, QtNetwork RUNNING_LOCAL = os.path.basename(sys.argv[0]) == "Bungloo.py" RUNNING_ON_WINDOWS = os.name == "nt" if RUNNING_LOCAL or RUNNING_ON_WINDOWS: - import Windows, Helper + import Windows, Helper, SingleApplication else: - from bungloo import Windows, Helper + from bungloo import Windows, Helper, SingleApplication -class Bungloo: +class Bungloo(): def __init__(self): @@ -19,7 +19,6 @@ class Bungloo: sslConfig.setProtocol(QtNetwork.QSsl.TlsV1) QtNetwork.QSslConfiguration.setDefaultConfiguration(sslConfig) - self.app = QtGui.QApplication(sys.argv) self.new_message_windows = [] self.controller = Controller(self) self.console = Console() @@ -33,10 +32,8 @@ class Bungloo: if self.controller.stringForKey("user_access_token") != "": self.authentification_succeded() - self.app.exec_() - def resources_path(self): - if RUNNING_LOCAL: + if RUNNING_LOCAL: return os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) else: return Helper.Helper.get_resource_path() @@ -95,6 +92,14 @@ class Bungloo: def next_show(self): self.timeline.evaluateJavaScript("bungloo.sidebar.showContentForNext();") + def handleMessage(self, args): + # argv is just a array of words which you can get in from the outside + argv = json.loads(str(args)) + if len(argv) > 0: + if argv[0] == "--new-message": + self.controller.openNewMessageWidow(" ".join(argv[1:])) + + class Controller(QtCore.QObject): @@ -169,11 +174,9 @@ class Controller(QtCore.QObject): pass @QtCore.pyqtSlot(str) - def openNewMessageWidow(self, string): - new_message_window = Windows.NewPost(self.app) - new_message_window.show() - new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose) - self.app.new_message_windows.append(new_message_window) + def openNewMessageWidow(self, is_private=False, string=""): + string = str(string) + self.openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(None, None, string, is_private) @QtCore.pyqtSlot(str, str, str, bool) def openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(self, entity, status_id, string, is_private): @@ -183,6 +186,11 @@ class Controller(QtCore.QObject): new_message_window.show() new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.app.new_message_windows.append(new_message_window) + new_message_window.activateWindow() + new_message_window.setFocus() + new_message_window.textInput.setFocus() + new_message_window.show() + new_message_window.raise_() def sendMessage(self, message): text = message.text @@ -288,4 +296,25 @@ class Console(QtCore.QObject): if __name__ == "__main__": - Bungloo() + + key = 'BUNGLOO' + + if len(sys.argv) > 1 and sys.argv[1] == "--help": + print """ +Usage: bungloo [option [text]] + + Options: + --new-message [text] Opens new message window with text + --search text Opens search with text + """ + sys.exit(1) + + app = SingleApplication.SingleApplicationWithMessaging(sys.argv, key) + if app.isRunning(): + app.sendMessage(json.dumps(sys.argv[1:])) + sys.exit(1) + + bungloo = Bungloo() + app.connect(app, QtCore.SIGNAL('messageAvailable'), bungloo.handleMessage) + + sys.exit(app.exec_()) diff --git a/Qt/SingleApplication.py b/Qt/SingleApplication.py new file mode 100755 index 0000000..d9d807f --- /dev/null +++ b/Qt/SingleApplication.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python2 + +# from http://stackoverflow.com/questions/8786136/pyqt-how-to-detect-and-close-ui-if-its-already-running + +from PyQt4 import QtGui, QtCore, QtNetwork + +class SingleApplication(QtGui.QApplication): + def __init__(self, argv, key): + QtGui.QApplication.__init__(self, argv) + self._memory = QtCore.QSharedMemory(self) + self._memory.setKey(key) + if self._memory.attach(): + self._running = True + else: + self._running = False + if not self._memory.create(1): + raise RuntimeError( + self._memory.errorString().toLocal8Bit().data()) + + def isRunning(self): + return self._running + +class SingleApplicationWithMessaging(SingleApplication): + def __init__(self, argv, key): + SingleApplication.__init__(self, argv, key) + self._key = key + self._timeout = 1000 + self._server = QtNetwork.QLocalServer(self) + if not self.isRunning(): + self._server.newConnection.connect(self.handleMessage) + self._server.listen(self._key) + + def handleMessage(self): + socket = self._server.nextPendingConnection() + if socket.waitForReadyRead(self._timeout): + self.emit(QtCore.SIGNAL('messageAvailable'), + QtCore.QString.fromUtf8(socket.readAll().data())) + socket.disconnectFromServer() + else: + QtCore.qDebug(socket.errorString().toLatin1()) + + def sendMessage(self, message): + if self.isRunning(): + socket = QtNetwork.QLocalSocket(self) + socket.connectToServer(self._key, QtCore.QIODevice.WriteOnly) + if not socket.waitForConnected(self._timeout): + print(socket.errorString().toLocal8Bit().data()) + return False + socket.write(unicode(message).encode('utf-8')) + if not socket.waitForBytesWritten(self._timeout): + print(socket.errorString().toLocal8Bit().data()) + return False + socket.disconnectFromServer() + return True + return False + +class Window(QtGui.QWidget): + def __init__(self): + QtGui.QWidget.__init__(self) + self.edit = QtGui.QLineEdit(self) + self.edit.setMinimumWidth(300) + layout = QtGui.QVBoxLayout(self) + layout.addWidget(self.edit) + + def handleMessage(self, message): + self.edit.setText(message) + +if __name__ == '__main__': + + import sys + + key = 'FOO_BAR' + + if len(sys.argv) > 1: + app = SingleApplicationWithMessaging(sys.argv, key) + if app.isRunning(): + app.sendMessage(sys.argv[1]) + sys.exit(1) + else: + app = SingleApplication(sys.argv, key) + if app.isRunning(): + print('app is already running') + sys.exit(1) + + window = Window() + app.connect(app, QtCore.SIGNAL('messageAvailable'), + window.handleMessage) + window.show() + + sys.exit(app.exec_()) \ No newline at end of file diff --git a/Qt/Windows.py b/Qt/Windows.py index 9a68ce2..b47d8ae 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -442,6 +442,9 @@ class NewPost(Helper.RestorableWindow): def toggleIsPrivate(self): self.setIsPrivate(not self.isPrivate) + def setString(self, string): + self.inReplyToStatusIdWithString(None, None, string) + def inReplyToStatusIdWithString(self, reply_to, status_id, string): self.reply_to_entity = reply_to self.status_id = status_id From ff3197fd778593584f0559451964b4f1d467e223 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sun, 28 Apr 2013 00:56:17 +0200 Subject: [PATCH 060/127] mac version bump --- Mac/Bungloo-Info.plist | 4 ++-- Mac/publish/Appcast.xml | 10 +++++----- Mac/publish/ReleaseNotes.html | 7 +++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Mac/Bungloo-Info.plist b/Mac/Bungloo-Info.plist index 14b373c..46884c7 100644 --- a/Mac/Bungloo-Info.plist +++ b/Mac/Bungloo-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.4.0 + 1.4.1 CFBundleSignature ???? CFBundleURLTypes @@ -57,7 +57,7 @@ CFBundleVersion - 1.4.0 + 1.4.1 LSApplicationCategoryType public.app-category.social-networking LSMinimumSystemVersion diff --git a/Mac/publish/Appcast.xml b/Mac/publish/Appcast.xml index 6b5ae57..4d952f6 100755 --- a/Mac/publish/Appcast.xml +++ b/Mac/publish/Appcast.xml @@ -6,15 +6,15 @@ Most recent changes with links to updates. en - Version 1.3.0 + Version 1.4.0 10.5.0 http://jabs.nu/bungloo/download/ReleaseNotes.html - Wed, 27 Mar 2013 12:32:02 +0100 + Thu, 18 Apr 2013 17:48:25 +0200 + sparkle:dsaSignature="MCwCFEmMGRUE/kb2pCLiGJ+GAEq/92dXAhRco0jm7nD1iuo00KSB0z2uHnElzA==" /> diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index 346b96f..25afcca 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -13,6 +13,13 @@ +

    Bungloo 1.4.1

    + +

    Fixed bug with wrongly showing unread mentions

    +

    Other smaller bugfixes

    + +
    +

    Bungloo 1.4.0

    Added scroll to load more posts

    From 5ce7d9e852e671752d89aa6e9790c1c2e2050134 Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 28 Apr 2013 00:57:08 +0200 Subject: [PATCH 061/127] added linux version bump --- Linux/debian/changelog | 11 +++++++++++ Linux/deploy.sh | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Linux/debian/changelog b/Linux/debian/changelog index bcd1ffb..02aa498 100644 --- a/Linux/debian/changelog +++ b/Linux/debian/changelog @@ -1,3 +1,14 @@ +bungloo (1.4.1) quantal; urgency=low + + [ Jeena Paradies ] + * Fixes the bug with wrongly showing uread mentions + * Added single application mode + * Added --new-message + * Added close window shortcut + * Bugfixes + + -- Jeena Paradies Tue, 28 Apr 2013 00:50:00 +0100 + bungloo (1.4.0) quantal; urgency=low [ Jeena Paradies ] diff --git a/Linux/deploy.sh b/Linux/deploy.sh index c2c9fe3..bba2f56 100755 --- a/Linux/deploy.sh +++ b/Linux/deploy.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION="1.4.0" +VERSION="1.4.1" DEPLOYPATH="bungloo-${VERSION}" QTPATH="../Qt" SHAREDPATH=".." From f159edf857d76cfd3ed3d54687769fb63c9f6728 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sun, 28 Apr 2013 02:17:32 +0200 Subject: [PATCH 062/127] version bump windows --- Windows/installer.iss | 4 ++-- Windows/setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Windows/installer.iss b/Windows/installer.iss index 12c07c0..f399b0b 100644 --- a/Windows/installer.iss +++ b/Windows/installer.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Bungloo" -#define MyAppVersion "1.4.0" +#define MyAppVersion "1.4.1" #define MyAppPublisher "Jabs Nu" #define MyAppURL "http://jabs.nu/bungloo" #define MyAppExeName "Bungloo.exe" @@ -22,7 +22,7 @@ AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes -LicenseFile=C:\Users\Jeena\Documents\GitHub\Bungloo\LICENCE.txt +LicenseFile=C:\Users\Jeena\Documents\GitHub\Bungloo\LICENSE.txt OutputBaseFilename=setup SetupIconFile=C:\Users\Jeena\Documents\GitHub\Bungloo\images\Icon.ico Compression=lzma diff --git a/Windows/setup.py b/Windows/setup.py index 95687ff..1e573f5 100644 --- a/Windows/setup.py +++ b/Windows/setup.py @@ -22,7 +22,7 @@ files += [('imageformats', imageformats)] setup( name = "Bungloo", - version = "1.4.0", + version = "1.4.1", author = "Jeena Paradies", author_email = "spam@jeenaparadies.net", url = "http://jabs.nu/bungloo", From e792625ca52078ce07c6f6a7fa0e383ba4a0aa6d Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sun, 28 Apr 2013 10:26:07 +0200 Subject: [PATCH 063/127] another version bump --- Windows/installer.iss | 2 +- Windows/setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Windows/installer.iss b/Windows/installer.iss index f399b0b..51cf08d 100644 --- a/Windows/installer.iss +++ b/Windows/installer.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Bungloo" -#define MyAppVersion "1.4.1" +#define MyAppVersion "1.4.3" #define MyAppPublisher "Jabs Nu" #define MyAppURL "http://jabs.nu/bungloo" #define MyAppExeName "Bungloo.exe" diff --git a/Windows/setup.py b/Windows/setup.py index 1e573f5..405a8fb 100644 --- a/Windows/setup.py +++ b/Windows/setup.py @@ -22,7 +22,7 @@ files += [('imageformats', imageformats)] setup( name = "Bungloo", - version = "1.4.1", + version = "1.4.3", author = "Jeena Paradies", author_email = "spam@jeenaparadies.net", url = "http://jabs.nu/bungloo", From b348ed2be2219640ffc6c695d8be60431b7d44f2 Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 28 Apr 2013 10:27:19 +0200 Subject: [PATCH 064/127] fixed problem with SingleApplication after install --- Linux/Makefile.exmp | 1 + Linux/debian/changelog | 9 ++++++++- Linux/deploy.sh | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Linux/Makefile.exmp b/Linux/Makefile.exmp index 0090838..5c35b0c 100644 --- a/Linux/Makefile.exmp +++ b/Linux/Makefile.exmp @@ -29,6 +29,7 @@ builddeb: $(PYTHON) setup.py sdist $(COMPILE) --dist-dir=../ --prune rename -f 's/$(PROJECT)-(.*)\.tar\.gz/$(PROJECT)_$$1\.orig\.tar\.gz/' ../* # build the package + dpkg-buildpackage -i -I -rfakeroot dpkg-buildpackage -i -I -rfakeroot -S clean: diff --git a/Linux/debian/changelog b/Linux/debian/changelog index 02aa498..8f070d2 100644 --- a/Linux/debian/changelog +++ b/Linux/debian/changelog @@ -1,4 +1,11 @@ -bungloo (1.4.1) quantal; urgency=low +bungloo (1.4.3) raring; urgency=high + + [ Jeena Paradies ] + * bugfix with SingleApplication + + -- Jeena Paradies Tue, 28 Apr 2013 10:10:00 +0100 + +bungloo (1.4.2) raring; urgency=low [ Jeena Paradies ] * Fixes the bug with wrongly showing uread mentions diff --git a/Linux/deploy.sh b/Linux/deploy.sh index bba2f56..6255960 100755 --- a/Linux/deploy.sh +++ b/Linux/deploy.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION="1.4.1" +VERSION="1.4.3" DEPLOYPATH="bungloo-${VERSION}" QTPATH="../Qt" SHAREDPATH=".." @@ -15,7 +15,7 @@ mkdir -p $DEPLOYPATH/bungloo touch $DEPLOYPATH/bungloo/__init__.py cp $QTPATH/Bungloo.py $DEPLOYPATH/bin/bungloo -cp $QTPATH/Helper.py $QTPATH/Windows.py $DEPLOYPATH/bungloo +cp $QTPATH/Helper.py $QTPATH/Windows.py $QTPATH/SingleApplication.py $DEPLOYPATH/bungloo cat setup.py.exmp | sed -e "s/{VERSION}/${VERSION}/g" > $DEPLOYPATH/setup.py cat Makefile.exmp | sed -e "s/{VERSION}/${VERSION}/g" > $DEPLOYPATH/Makefile cat bungloo.desktop.exmp | sed -e "s/{VERSION}/${VERSION}/g" > $DEPLOYPATH/bungloo.desktop From 1ac684b43f90ab7eac82c33dcacc5227783b613e Mon Sep 17 00:00:00 2001 From: dblugeon Date: Sun, 5 May 2013 17:34:37 +0200 Subject: [PATCH 065/127] Fix proposition for issue #221 Adding a p element to inform user that his search return no results --- WebKit/css/default.css | 5 +++++ WebKit/scripts/controller/Search.js | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index eb29391..ff8bbfd 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -441,4 +441,9 @@ form.search input { width: 100%; padding: 10px; font-size: 1.2em; +} + +p.noresult { + padding : 10px; + text-align : center; } \ No newline at end of file diff --git a/WebKit/scripts/controller/Search.js b/WebKit/scripts/controller/Search.js index 55b7d57..51ce153 100644 --- a/WebKit/scripts/controller/Search.js +++ b/WebKit/scripts/controller/Search.js @@ -116,6 +116,11 @@ function(HostApp, Core, Paths, URI) { _this.body.appendChild(new_node); } } + } else { + var noresult = document.createElement("p"); + noresult.className = "noresult"; + noresult.textContent = "No Results"; + _this.body.appendChild(noresult); } }, null, false); From e25ccd563557b193844a63bc5f584b56852980da Mon Sep 17 00:00:00 2001 From: dblugeon Date: Sun, 5 May 2013 20:13:54 +0200 Subject: [PATCH 066/127] Remove reload menu Item fixed #178 ref doc : https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/W ebKit/Protocols/WebUIDelegate_Protocol/Reference/Reference.html#//apple_ ref/doc/uid/TP40003838 --- Mac/ViewDelegate.m | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/Mac/ViewDelegate.m b/Mac/ViewDelegate.m index ca50f18..8a4e6af 100644 --- a/Mac/ViewDelegate.m +++ b/Mac/ViewDelegate.m @@ -103,20 +103,16 @@ - (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems { - // FIXME - /* - NSMutableArray *menuItems = [NSMutableArray arrayWithArray:defaultMenuItems]; - - for (NSMenuItem*item in defaultMenuItems) { - if ([[item title] isEqualToString:@"Reload"]) { - //[item setAction:@selector(reload:)]; - //[item setTarget:self]; - } else { - [menuItems addObject:item]; + //remove reload menu item + NSMutableArray *menuItems = [NSMutableArray arrayWithArray:defaultMenuItems]; + for (NSMenuItem* item in defaultMenuItems) { + if ([item tag] == WebMenuItemTagReload) { + [menuItems removeObject:item]; + break; } - }*/ + } - return defaultMenuItems; + return menuItems; } - (void)reload:(id)sender { From 84d019dfa475eda38bd0a766a69e4eabbe7217bb Mon Sep 17 00:00:00 2001 From: dblugeon Date: Fri, 10 May 2013 23:07:11 +0200 Subject: [PATCH 067/127] close #218 There was two problems. the original problem came from the width calculation of "p.message" elements. In the timeline, first elements have width > 0, after switching to conversation view their width to pass to 0; The switching view needs add a timeout before add open street's map's image. --- WebKit/scripts/helper/Core.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 3904231..7f3b350 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -945,18 +945,21 @@ function(jQuery, Paths, URI, HostApp, Cache) { } Core.prototype.mapSrc = function(lat, lng) { - var width = $("p.message").width(); + var width = $("div:visible p.message").width(); return "http://staticmap.openstreetmap.de/staticmap.php?center=" + lat + "," + lng + "&zoom=3&size=" + width + "x75&markers=" + lat + "," + lng + ",red-pushpin"; } Core.prototype.addMap = function(lat, lng, images) { - var a = document.createElement("a"); - a.className = "map"; - a.href = this.mapHref(lat, lng); - var img = document.createElement("img"); - img.src = this.mapSrc(lat, lng); - a.appendChild(img); - images.appendChild(a); + var self = this; + setTimeout(function(){ + var a = document.createElement("a"); + a.className = "map"; + a.href = self.mapHref(lat, lng); + var img = document.createElement("img"); + img.src = self.mapSrc(lat, lng); + a.appendChild(img); + images.appendChild(a); + }, 200); } Core.prototype.addYouTube = function(id, images) { From 45365e0d79e0b1e685e2795cd3f42f4e4d12bf62 Mon Sep 17 00:00:00 2001 From: dblugeon Date: Fri, 10 May 2013 23:07:11 +0200 Subject: [PATCH 068/127] close #218 There was two problems. the original problem came from the width calculation of "p.message" elements. In the timeline, first elements have width > 0, after switching to conversation view their width to pass to 0; The switching view needs add a timeout before add open street's map's image. --- WebKit/scripts/helper/Core.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 3904231..7f3b350 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -945,18 +945,21 @@ function(jQuery, Paths, URI, HostApp, Cache) { } Core.prototype.mapSrc = function(lat, lng) { - var width = $("p.message").width(); + var width = $("div:visible p.message").width(); return "http://staticmap.openstreetmap.de/staticmap.php?center=" + lat + "," + lng + "&zoom=3&size=" + width + "x75&markers=" + lat + "," + lng + ",red-pushpin"; } Core.prototype.addMap = function(lat, lng, images) { - var a = document.createElement("a"); - a.className = "map"; - a.href = this.mapHref(lat, lng); - var img = document.createElement("img"); - img.src = this.mapSrc(lat, lng); - a.appendChild(img); - images.appendChild(a); + var self = this; + setTimeout(function(){ + var a = document.createElement("a"); + a.className = "map"; + a.href = self.mapHref(lat, lng); + var img = document.createElement("img"); + img.src = self.mapSrc(lat, lng); + a.appendChild(img); + images.appendChild(a); + }, 200); } Core.prototype.addYouTube = function(id, images) { From 9f308a22ca2310dcd9f09721ec685e861dbdd9b1 Mon Sep 17 00:00:00 2001 From: dblugeon Date: Mon, 13 May 2013 21:49:44 +0200 Subject: [PATCH 069/127] Close #189 Use NSResourceLoadDelegate to disable the cookie management to avoid see the timeline via profile view Thanks to https://github.com/poweruser82 --- Mac/Controller.h | 2 ++ Mac/Controller.m | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/Mac/Controller.h b/Mac/Controller.h index d93ffbd..2b2f683 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -73,6 +73,8 @@ - (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity; +- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource; + - (void)setString:(NSString *)string forKey:(NSString *)aKey; - (void)setSecret:(NSString *)string; - (NSString *)secret; diff --git a/Mac/Controller.m b/Mac/Controller.m index ce81fd8..c26e2fb 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -26,6 +26,7 @@ - (void)awakeFromNib { [timelineViewWindow setExcludedFromWindowsMenu:YES]; + [timelineView setResourceLoadDelegate:self]; [self initHotKeys]; @@ -432,6 +433,13 @@ [timelineView stringByEvaluatingJavaScriptFromString:fun]; } +/* we disable cookies to avoid see a timeline during the consultation of a profile with which the user are connected through safari cf https://github.com/jeena/Bungloo/issues/189 */ +- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource{ + NSMutableURLRequest * response = [request mutableCopy]; + [response setHTTPShouldHandleCookies:FALSE]; + return response; +} + - (void)loggedIn { [loginActivityIndicator stopAnimation:self]; From 72b8a002f966ddd83b2c24f2950ca90d7c80f74c Mon Sep 17 00:00:00 2001 From: dblugeon Date: Tue, 14 May 2013 19:25:41 +0200 Subject: [PATCH 070/127] close #222 : reset mention unread count during switch view via Next View Menu --- WebKit/scripts/controller/Sidebar.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 5b453b8..48e9acd 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -194,6 +194,10 @@ function(HostApp, Paths, Cache) { var img = this.menu[part].getElementsByTagName("img")[0]; if (img.src.endsWith(img.src_active)) { var next = parts[(i+1)%parts.length]; + //we must update unread badges for mentions cf https://github.com/jeena/Bungloo/issues/222 + if(next === "mentions"){ + bungloo.mentions.setAllMentionsRead(); + } this.showContentFor(bungloo[next], this.menu[next]); return; } From 4dc5563e0c6074c85a4ed67c8b32117b278651f4 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Tue, 21 May 2013 20:07:00 +0200 Subject: [PATCH 071/127] latest version bump os x --- Mac/Bungloo-Info.plist | 4 ++-- Mac/publish/Appcast.xml | 10 +++++----- Mac/publish/ReleaseNotes.html | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Mac/Bungloo-Info.plist b/Mac/Bungloo-Info.plist index 46884c7..5a215fe 100644 --- a/Mac/Bungloo-Info.plist +++ b/Mac/Bungloo-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.4.1 + 1.4.3 CFBundleSignature ???? CFBundleURLTypes @@ -57,7 +57,7 @@ CFBundleVersion - 1.4.1 + 1.4.3 LSApplicationCategoryType public.app-category.social-networking LSMinimumSystemVersion diff --git a/Mac/publish/Appcast.xml b/Mac/publish/Appcast.xml index 4d952f6..70c308e 100755 --- a/Mac/publish/Appcast.xml +++ b/Mac/publish/Appcast.xml @@ -6,15 +6,15 @@ Most recent changes with links to updates. en - Version 1.4.0 + Version 1.4.3 10.5.0 http://jabs.nu/bungloo/download/ReleaseNotes.html - Thu, 18 Apr 2013 17:48:25 +0200 + Sun, 28 Apr 2013 10:23:47 +0200 + sparkle:dsaSignature="MC0CFAJCR2Q9OtAaP8q9fBsYs+yeVYiCAhUAj8vVmnyo34dYlVBw2NZTgmSzB0s=" /> diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html index 25afcca..95df15c 100644 --- a/Mac/publish/ReleaseNotes.html +++ b/Mac/publish/ReleaseNotes.html @@ -13,7 +13,7 @@ -

    Bungloo 1.4.1

    +

    Bungloo 1.4.3

    Fixed bug with wrongly showing unread mentions

    Other smaller bugfixes

    From 422dbd34ff6ce260d73adeee46eec636fd2c9b71 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 22 May 2013 02:40:52 +0200 Subject: [PATCH 072/127] first auth test working --- WebKit/scripts/controller/Oauth.js | 124 +++++++++++++++-------------- WebKit/scripts/helper/Hmac.js | 54 +++++++++++++ WebKit/scripts/helper/HostApp.js | 8 ++ WebKit/scripts/helper/Paths.js | 25 +++--- 4 files changed, 140 insertions(+), 71 deletions(-) diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 0cebc2e..bbdb296 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -8,31 +8,38 @@ function(HostApp, Paths, Hmac) { function Oauth() { this.app_info = { - "id": null, - "name": "Bungloo on " + HostApp.osType(), - "description": "A small TentStatus client.", - "url": "http://jabs.nu/bungloo/", - "icon": "http://jabs.nu/bungloo/icon.png", - "redirect_uris": [ - "bungloo://oauthtoken" - ], - "scopes": { - "read_posts": "Uses posts to show them in a list", - "write_posts": "Posts on users behalf", - "read_profile": "Displays your own profile", - "write_profile": "Updating profile and mentions pointer", - "read_followers": "Display a list of people who follow you", - "write_followers": "Be able to block people who follow you", - "read_followings": "Display following list and their older posts in conversations", - "write_followings": "Follow ne entities" + "type": "https://tent.io/types/app/v0#", + "content": { + "name": "Bungloo on " + HostApp.osType(), + "url": "http://jabs.nu/bungloo/", + "description": "A desktop Tent client.", + "redirect_uri": "bungloo://oauthtoken", + "post_types": { + "read": [ + "https://tent.io/types/meta/v0", + "https://tent.io/types/relationship/v0", + "https://tent.io/types/subscription/v0", + "https://tent.io/types/delete/v0", + "https://tent.io/types/status/v0", + "https://tent.io/types/repost/v0", + "https://tent.io/types/photo/v0", + "https://tent.io/types/cursor/v0", + "https://tent.io/types/basic-profile/v0" + ], + "write": [ + "https://tent.io/types/relationship/v0", + "https://tent.io/types/subscription/v0", + "https://tent.io/types/delete/v0", + "https://tent.io/types/status/v0", + "https://tent.io/types/repost/v0", + "https://tent.io/types/photo/v0", + "https://tent.io/types/cursor/v0" + ] + } }, - "tent_profile_info_types": [ "all" ], - "tent_post_types": [ - "https://tent.io/types/post/status/v0.1.0", - "https://tent.io/types/post/photo/v0.1.0", - "https://tent.io/types/post/repost/v0.1.0", - "https://tent.io/types/post/delete/v0.1.0" - ] + "permissions": { + "public": false + } }; this.register_data = null; this.profile = null; @@ -61,10 +68,6 @@ function(HostApp, Paths, Hmac) { } } - Oauth.prototype.apiRoot = function() { - return this.profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0]; - } - Oauth.prototype.requestProfileURL = function (entity) { var those = this; Paths.findProfileURL(entity, @@ -76,6 +79,7 @@ function(HostApp, Paths, Hmac) { } }, function(errorMessage) { // error callback + HostApp.authentificationDidNotSucceed(errorMessage); HostApp.authentificationDidNotSucceed("Could not find profile for: " + entity); } ); @@ -83,57 +87,53 @@ function(HostApp, Paths, Hmac) { Oauth.prototype.register = function (url) { var those = this; - Paths.getURL(url, "GET", function(resp) { those.profile = JSON.parse(resp.responseText); - those.entity = those.profile["https://tent.io/types/info/core/v0.1.0"].entity; + those.entity = those.profile.content.entity; HostApp.setStringForKey(those.entity, "entity") - HostApp.setStringForKey(those.apiRoot(), "api_root"); + HostApp.setServerUrls(those.profile.content.servers[0].urls); var callback = function(resp) { - var data = JSON.parse(resp.responseText); - those.authRequest(data); + var app_id = JSON.parse(resp.responseText).id; + var header_string = resp.getAllResponseHeaders(); + var regexp = /https:\/\/tent.io\/rels\/credentials/i + var url = Paths.parseHeaderForLink(header_string, regexp); + Paths.getURL(url, "GET", function(resp) { + var data = JSON.parse(resp.responseText); + those.authRequest(data, app_id); + }, null, false) } - Paths.getURL(Paths.mkApiRootPath("/apps"), "POST", callback, JSON.stringify(those.app_info), false); + + Paths.getURL(HostApp.serverUrl("new_post"), "POST", callback, JSON.stringify(those.app_info), false); + }, null, false); } - Oauth.prototype.authRequest = function(register_data) { - // id - // mac_key_id - // mac_key - // mac_algorithm - this.register_data = register_data; - - // Needed for later App Registration Modification - HostApp.setStringForKey(register_data["mac_key"], "app_mac_key"); - HostApp.setStringForKey(register_data["mac_key_id"], "app_mac_key_id"); - HostApp.setStringForKey(register_data["id"], "app_id"); - HostApp.setStringForKey(register_data["mac_algorithm"], "app_mac_algorithm"); + Oauth.prototype.authRequest = function(credentials, app_id) { + HostApp.setStringForKey(app_id, "app_id"); + HostApp.setStringForKey(credentials.id, "app_hawk_id"); + HostApp.setStringForKey(credentials.content.hawk_key, "app_hawk_key"); + HostApp.setStringForKey(credentials.content.hawk_algorithm, "app_hawk_algorithm"); + this.state = Hmac.makeid(19); - var auth = "/oauth/authorize?client_id=" + register_data["id"] - + "&redirect_uri=" + this.app_info["redirect_uris"][0] - + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") - + "&state=" + this.state - + "&tent_post_types=" + this.app_info["tent_post_types"].join(",") - + "&tent_profile_info_types=" + this.app_info["tent_profile_info_types"].join(","); - - HostApp.openAuthorizationURL(this.apiRoot() + auth); + var url = HostApp.serverUrl("oauth_auth") + "?client_id=" + app_id + "&state=" + this.state; + HostApp.openAuthorizationURL(url); } Oauth.prototype.requestAccessToken = function(responseBody) { // /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv + // https://app.example.com/oauth?code=K4m2J2bGI9rcICBqmUCYuQ&state=d173d2bb868a var urlVars = Paths.getUrlVars(responseBody); if(this.state && this.state != "" && urlVars["state"] == this.state) { - var url = Paths.mkApiRootPath("/apps/") + this.register_data["id"] + "/authorizations"; + var url = HostApp.serverUrl("oauth_token"); var requestBody = JSON.stringify({ 'code' : urlVars["code"], - 'token_type' : "mac" + 'token_type' : "https://tent.io/oauth/hawk-token" }); var those = this; @@ -142,11 +142,12 @@ function(HostApp, Paths, Hmac) { those.requestAccessTokenTicketFinished(resp.responseText); }; - var auth_header = Hmac.makeAuthHeader( + var auth_header = Hmac.makeHawkAuthHeader( url, http_method, - HostApp.stringForKey("app_mac_key"), - HostApp.stringForKey("app_mac_key_id") + HostApp.stringForKey("app_hawk_id"), + HostApp.stringForKey("app_hawk_key"), + requestBody ); Paths.getURL(url, http_method, callback, requestBody, auth_header); @@ -163,11 +164,12 @@ function(HostApp, Paths, Hmac) { var access = JSON.parse(responseBody); HostApp.setStringForKey(access["access_token"], "user_access_token"); - HostApp.setSecret(access["mac_key"]); - HostApp.setStringForKey(access["mac_algorithm"], "user_mac_algorithm"); + HostApp.setSecret(access["hawk_key"]); + HostApp.setStringForKey(access["hawk_algorithm"], "user_hawk_algorithm"); HostApp.setStringForKey(access["token_type"], "user_token_type"); HostApp.loggedIn(); + debug("loggedIn") } Oauth.prototype.logout = function() { diff --git a/WebKit/scripts/helper/Hmac.js b/WebKit/scripts/helper/Hmac.js index b22a2f3..0e2b1fc 100644 --- a/WebKit/scripts/helper/Hmac.js +++ b/WebKit/scripts/helper/Hmac.js @@ -9,6 +9,8 @@ function(URI, CryptoJS) { Hmac.makeAuthHeader = function(url, http_method, mac_key, mac_key_id) { + debug("makeAuthHeader should not be used anymore, bug!") + url = URI(url); var nonce = Hmac.makeid(8); var time_stamp = parseInt((new Date).getTime() / 1000, 10); @@ -38,6 +40,58 @@ function(URI, CryptoJS) { '", mac="' + mac + '"'; } + Hmac.makeHawkAuthHeader = function(url, http_method, hawk_id, key, payload, app_id) { + + url = URI(url); + var nonce = Hmac.makeid(8); + var time_stamp = parseInt((new Date).getTime() / 1000, 10); + + var port = url.port(); + if (!port) { + port = url.protocol() == "https" ? "443" : "80"; + } + + var normalizedRequestString = "hawk.1.header\n" // header + + time_stamp + '\n' // ts + + nonce + '\n' // nonce + + http_method.toUpperCase() + '\n' // method + + url.path() + url.search() + url.hash() + '\n' // request uri + + url.hostname().toLowerCase() + '\n' // host + + port + '\n' // port + + Hmac.calculatePayloadHash(payload) + '\n' // hash + + '\n' // ext (we don't use it) + + var app = ""; + if(app_id) { + app = ', app="' + app_id + "'"; + normalizedRequestString += app_id + "\n" + // app + '\n'; // dlg should be empty + } + + + var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); + hmac.update(normalizedRequestString); + var hash = hmac.finalize(); + var mac = hash.toString(CryptoJS.enc.Base64); + + + + return 'Hawk id="' + hawk_id + + '", mac="' + mac + + '", ts="' + time_stamp + + '", nonce="' + nonce + '"' + + app + } + + Hmac.calculatePayloadHash = function (payload) { + var hash = CryptoJS.algo.SHA256.create(); + hash.update('hawk.1.payload\n'); + hash.update('application/vnd.tent.post.v0+json\n'); + hash.update(payload || ''); + hash.update('\n'); + return hash.finalize().toString(CryptoJS.enc.Base64); + }, + Hmac.makeid = function(len) { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index 60cf9e5..ced766a 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -37,6 +37,14 @@ define(function() { } } + HostApp.setServerUrls = function(server_urls) { + HostApp.setStringForKey(JSON.stringify(server_urls), "server_urls"); + } + + HostApp.serverUrl = function(key) { + return JSON.parse(HostApp.stringForKey("server_urls"))[key]; + } + HostApp.openURL = function(url) { if (OS_TYPE == "mac") { diff --git a/WebKit/scripts/helper/Paths.js b/WebKit/scripts/helper/Paths.js index 5f477a7..f6a703f 100644 --- a/WebKit/scripts/helper/Paths.js +++ b/WebKit/scripts/helper/Paths.js @@ -25,7 +25,7 @@ function(jQuery, HostApp, Hmac, Cache) { Paths.getURL = function(url, http_method, callback, data, auth_header, accepts) { - if(accepts !== false) accepts = accepts || "application/vnd.tent.v0+json; charset=utf-8"; + if(accepts !== false) accepts = accepts || "application/vnd.tent.post.v0+json"; var options = { @@ -56,7 +56,7 @@ function(jQuery, HostApp, Hmac, Cache) { } }, url: url, - contentType: "application/vnd.tent.v0+json", + contentType: 'application/vnd.tent.post.v0+json; type="https://tent.io/types/app/v0#"', type: http_method, complete: callback, data: data, @@ -65,7 +65,7 @@ function(jQuery, HostApp, Hmac, Cache) { console.error("getURL (" + xhr.status + ")" + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); } } - + debug(url) jQuery.ajax(options); } @@ -127,7 +127,7 @@ function(jQuery, HostApp, Hmac, Cache) { if(profile_urls.length > 0) { var profile_url = profile_urls[0]; if (!profile_url.startsWith("http")) { - profile_url = entity + "/profile"; + profile_url = entity + profile_url; } } @@ -140,13 +140,13 @@ function(jQuery, HostApp, Hmac, Cache) { if (resp.status >= 200 && resp.status < 300) { var doc = document.implementation.createHTMLDocument(""); doc.documentElement.innerHTML = resp.responseText; - var links = $(doc).find("link[rel='https://tent.io/rels/profile']"); + var links = $(doc).find("link[rel='https://tent.io/rels/meta-post']"); if (links.length > 0) { var href = links.get(0).href; Paths.cache.profile_urls.setItem(entity, href); if (!href.startsWith("http")) { - href = entity + "/profile"; + href = entity + href; } callback(href); @@ -184,6 +184,11 @@ function(jQuery, HostApp, Hmac, Cache) { } Paths.parseHeaderForProfiles = function(header_string) { + var regexp = /https:\/\/tent.io\/rels\/meta-post/i; + return Paths.parseHeaderForLink(header_string, regexp); + } + + Paths.parseHeaderForLink = function(header_string, match) { var headers = header_string.split(/\n/); var links = []; for (var i = 0; i < headers.length; i++) { @@ -197,18 +202,18 @@ function(jQuery, HostApp, Hmac, Cache) { for (var i = 0; i < links.length; i++) { items = items.concat(links[i].split(",")); } - var profiles = []; + var things = []; for (var i = 0; i < items.length; i++) { var item = items[i]; - if (item.match(/https:\/\/tent.io\/rels\/profile/i)) { + if (item.match(match)) { var n = item.match(/<([^>]*)>/); if (n) { - profiles.push(n[1]); + things.push(n[1]); } } } - return profiles; + return things; } return Paths; From f73ce7d196eaab9287df2e84a668c3714ca83128 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sun, 26 May 2013 09:51:01 +0200 Subject: [PATCH 073/127] api calls --- WebKit/scripts/controller/Conversation.js | 18 +- WebKit/scripts/controller/Mentions.js | 16 +- WebKit/scripts/controller/Oauth.js | 24 +- WebKit/scripts/controller/Profile.js | 40 +-- WebKit/scripts/controller/Search.js | 6 +- WebKit/scripts/controller/Sidebar.js | 8 +- WebKit/scripts/controller/Timeline.js | 8 +- WebKit/scripts/helper/APICalls.js | 285 ++++++++++++++++++++++ WebKit/scripts/helper/Cache.js | 4 +- WebKit/scripts/helper/Core.js | 48 ++-- 10 files changed, 371 insertions(+), 86 deletions(-) create mode 100644 WebKit/scripts/helper/APICalls.js diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index cb49aeb..817cf01 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -1,11 +1,11 @@ define([ "helper/HostApp", "helper/Core", - "helper/Paths", + "helper/APICalls", "lib/URI" ], -function(HostApp, Core, Paths, URI) { +function(HostApp, Core, APICalls, URI) { function Conversation(standalone) { @@ -86,15 +86,15 @@ function(HostApp, Core, Paths, URI) { function getRemoteStatus(profile) { var server = profile["https://tent.io/types/info/core/v0.1.0"].servers[0]; - Paths.getURL(URI(server + "/posts/" + id).toString(), "GET", callback, null, false); + APICalls.http_call(URI(server + "/posts/" + id).toString(), "GET", callback, null, false); } var profile = this.cache.profiles.getItem(entity); if (entity == HostApp.stringForKey("entity")) { - var url = URI(Paths.mkApiRootPath("/posts/" + id)); - Paths.getURL(url.toString(), "GET", callback, null); + var url = URI(APICalls.mkApiRootPath("/posts/" + id)); + APICalls.http_call(url.toString(), "GET", callback, null); } else if(profile) { @@ -102,7 +102,7 @@ function(HostApp, Core, Paths, URI) { } else { - Paths.findProfileURL(entity, function(profile_url) { + APICalls.findProfileURL(entity, function(profile_url) { if (profile_url) { @@ -113,7 +113,7 @@ function(HostApp, Core, Paths, URI) { } else { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { var profile = JSON.parse(resp.responseText) this.cache.profiles.setItem(entity, profile); @@ -128,7 +128,7 @@ function(HostApp, Core, Paths, URI) { Conversation.prototype.appendMentioned = function(id, entity, node) { - var url = URI(Paths.mkApiRootPath("/posts")); + var url = URI(APICalls.mkApiRootPath("/posts")); url.addSearch("mentioned_post", id); url.addSearch("post_types", "https%3A%2F%2Ftent.io%2Ftypes%2Fpost%2Fstatus%2Fv0.1.0"); @@ -147,7 +147,7 @@ function(HostApp, Core, Paths, URI) { } } - Paths.getURL(url.toString(), "GET", callback); + APICalls.http_call(url.toString(), "GET", callback); } diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index a0cc51c..7d20d5b 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -2,11 +2,11 @@ define([ "helper/HostApp", "controller/Timeline", "lib/URI", - "helper/Paths", + "helper/APICalls", "helper/Core" ], -function(HostApp, Timeline, URI, Paths, Core) { +function(HostApp, Timeline, URI, APICalls, Core) { function Mentions() { @@ -90,7 +90,7 @@ function(HostApp, Timeline, URI, Paths, Core) { if (!status.__repost) { if (status && status.type == "https://tent.io/types/post/status/v0.1.0") { - var url = URI(Paths.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); + var url = URI(APICalls.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); var body = { "mentions": { "https://tent.io/types/post/status/v0.1.0": { @@ -104,7 +104,7 @@ function(HostApp, Timeline, URI, Paths, Core) { } - Paths.getURL(url.toString(), "PUT", callback, JSON.stringify(body)); + APICalls.http_call(url.toString(), "PUT", callback, JSON.stringify(body)); } break; @@ -115,11 +115,11 @@ function(HostApp, Timeline, URI, Paths, Core) { Mentions.prototype.getLatestMentionRead = function() { - var cursor_url = URI(Paths.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); + var cursor_url = URI(APICalls.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); - Paths.getURL(cursor_url.toString(), "GET", function(resp) { + APICalls.http_call(cursor_url.toString(), "GET", function(resp) { - var url = URI(Paths.mkApiRootPath("/posts/count")); + var url = URI(APICalls.mkApiRootPath("/posts/count")); var post_types = [ "https://tent.io/types/post/status/v0.1.0", ]; @@ -139,7 +139,7 @@ function(HostApp, Timeline, URI, Paths, Core) { HostApp.unreadMentions(this.unread_mentions); } - Paths.getURL(url.toString(), "GET", callback); // FIXME: error callback + APICalls.http_call(url.toString(), "GET", callback); // FIXME: error callback }); } diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index bbdb296..a60a286 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -1,10 +1,10 @@ define([ "helper/HostApp", - "helper/Paths", + "helper/APICalls", "helper/Hmac" ], -function(HostApp, Paths, Hmac) { +function(HostApp, APICalls, Hmac) { function Oauth() { this.app_info = { @@ -70,7 +70,7 @@ function(HostApp, Paths, Hmac) { Oauth.prototype.requestProfileURL = function (entity) { var those = this; - Paths.findProfileURL(entity, + APICalls.findProfileURL(entity, function(profile_url) { if (profile_url && (profile_url.startsWith("http://") || profile_url.startsWith("https://"))) { those.register(profile_url); @@ -87,7 +87,7 @@ function(HostApp, Paths, Hmac) { Oauth.prototype.register = function (url) { var those = this; - Paths.getURL(url, "GET", function(resp) { + APICalls.get(url, { callback: function(resp) { those.profile = JSON.parse(resp.responseText); those.entity = those.profile.content.entity; @@ -98,16 +98,16 @@ function(HostApp, Paths, Hmac) { var app_id = JSON.parse(resp.responseText).id; var header_string = resp.getAllResponseHeaders(); var regexp = /https:\/\/tent.io\/rels\/credentials/i - var url = Paths.parseHeaderForLink(header_string, regexp); - Paths.getURL(url, "GET", function(resp) { + var url = APICalls.parseHeaderForLink(header_string, regexp); + APICalls.http_call(url, "GET", function(resp) { var data = JSON.parse(resp.responseText); those.authRequest(data, app_id); }, null, false) } - Paths.getURL(HostApp.serverUrl("new_post"), "POST", callback, JSON.stringify(those.app_info), false); + APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(those.app_info), {callback: callback}); - }, null, false); + }}); } Oauth.prototype.authRequest = function(credentials, app_id) { @@ -126,7 +126,7 @@ function(HostApp, Paths, Hmac) { // /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv // https://app.example.com/oauth?code=K4m2J2bGI9rcICBqmUCYuQ&state=d173d2bb868a - var urlVars = Paths.getUrlVars(responseBody); + var urlVars = APICalls.getUrlVars(responseBody); if(this.state && this.state != "" && urlVars["state"] == this.state) { var url = HostApp.serverUrl("oauth_token"); @@ -150,7 +150,7 @@ function(HostApp, Paths, Hmac) { requestBody ); - Paths.getURL(url, http_method, callback, requestBody, auth_header); + APICalls.http_call(url, http_method, callback, requestBody, auth_header); } else { console.error("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}") @@ -174,7 +174,7 @@ function(HostApp, Paths, Hmac) { Oauth.prototype.logout = function() { - var url = Paths.mkApiRootPath("/apps/" + HostApp.stringForKey("app_id")); + var url = APICalls.mkApiRootPath("/apps/" + HostApp.stringForKey("app_id")); var http_method = "DELETE"; var auth_header = Hmac.makeAuthHeader( url, @@ -183,7 +183,7 @@ function(HostApp, Paths, Hmac) { HostApp.stringForKey("app_mac_key_id") ); - Paths.getURL(url, http_method, function(resp) { + APICalls.http_call(url, http_method, function(resp) { HostApp.setStringForKey(null, "app_mac_key"); HostApp.setStringForKey(null, "app_mac_key_id"); HostApp.setStringForKey(null, "app_id"); diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 584a046..6058784 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -1,11 +1,11 @@ define([ "helper/HostApp", "helper/Core", - "helper/Paths", + "helper/APICalls", "lib/URI" ], -function(HostApp, Core, Paths, URI) { +function(HostApp, Core, APICalls, URI) { function Profile() { @@ -239,11 +239,11 @@ function(HostApp, Core, Paths, URI) { this.profile = profile; } else { - Paths.findProfileURL(this.entity, function(profile_url) { + APICalls.findProfileURL(this.entity, function(profile_url) { if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { profile = JSON.parse(resp.responseText); _this.showProfile(profile); @@ -258,9 +258,9 @@ function(HostApp, Core, Paths, URI) { Profile.prototype.getFollowing = function() { if(this.entity != HostApp.stringForKey("entity")) { - var url = Paths.mkApiRootPath("/followings") + "/" + encodeURIComponent(this.entity); + var url = APICalls.mkApiRootPath("/followings") + "/" + encodeURIComponent(this.entity); var _this = this; - Paths.getURL(url, "GET", function(resp) { + APICalls.http_call(url, "GET", function(resp) { if (resp.status >= 200 && resp.status < 400) { var following = JSON.parse(resp.responseText); _this.following_id = following.id @@ -325,18 +325,18 @@ function(HostApp, Core, Paths, URI) { Profile.prototype.getMeta = function(root_url) { var _this = this; - Paths.getURL(URI(root_url + "/followings/count").toString(), "GET", function(resp) { + APICalls.http_call(URI(root_url + "/followings/count").toString(), "GET", function(resp) { _this.populate(_this.profile_template.following, resp.responseText); }, null, false); - Paths.getURL(URI(root_url + "/followers/count").toString(), "GET", function(resp) { + APICalls.http_call(URI(root_url + "/followers/count").toString(), "GET", function(resp) { _this.populate(_this.profile_template.followed, resp.responseText); }, null, false); if (this.entity != HostApp.stringForKey("entity")) { - Paths.getURL(URI(root_url + "/followers/" + encodeURIComponent(HostApp.stringForKey("entity"))).toString(), "GET", function(resp) { + APICalls.http_call(URI(root_url + "/followers/" + encodeURIComponent(HostApp.stringForKey("entity"))).toString(), "GET", function(resp) { if (resp.status == 200) { _this.relationships.following_you = true; } @@ -344,7 +344,7 @@ function(HostApp, Core, Paths, URI) { }, null, false); - Paths.getURL(URI(Paths.mkApiRootPath("/followings/" + encodeURIComponent(this.entity))), "GET", function(resp) { + APICalls.http_call(URI(APICalls.mkApiRootPath("/followings/" + encodeURIComponent(this.entity))), "GET", function(resp) { if (resp.status == 200) { _this.relationships.followed_by_you = true; } @@ -363,7 +363,7 @@ function(HostApp, Core, Paths, URI) { ]; url.addSearch("post_types", post_types.join(",")); - Paths.getURL(url.toString(), "GET", function(resp) { + APICalls.http_call(url.toString(), "GET", function(resp) { _this.populate(_this.profile_template.posts, resp.responseText); }, null, false); @@ -405,7 +405,7 @@ function(HostApp, Core, Paths, URI) { url.addSearch(key, add_search[key]); } - Paths.getURL(url.toString(), "GET", function(resp) { + APICalls.http_call(url.toString(), "GET", function(resp) { var statuses = JSON.parse(resp.responseText); @@ -495,8 +495,8 @@ function(HostApp, Core, Paths, URI) { if (this.following_id) { this.setFollowingButton(false); - var url = Paths.mkApiRootPath("/followings/") + this.following_id; - Paths.getURL(url, "DELETE", function(resp) { + var url = APICalls.mkApiRootPath("/followings/") + this.following_id; + APICalls.http_call(url, "DELETE", function(resp) { if (resp.status >= 200 && resp.status < 300) { _this.setFollowingButton(false); _this.following_id = null; @@ -508,10 +508,10 @@ function(HostApp, Core, Paths, URI) { } else { this.setFollowingButton(true); - var url = URI(Paths.mkApiRootPath("/followings")); + var url = URI(APICalls.mkApiRootPath("/followings")); var data = JSON.stringify({"entity": this.entity }); - Paths.getURL(url.toString(), "POST", function(resp) { + APICalls.http_call(url.toString(), "POST", function(resp) { if (resp.status >= 200 && resp.status < 300) { _this.following_id = JSON.parse(resp.responseText).id _this.setFollowingButton(true); @@ -542,7 +542,7 @@ function(HostApp, Core, Paths, URI) { var url = URI(this.server + "/followings"); url.addSearch("limit", 200); - Paths.getURL(url.toString(), "GET", callback, null, false); + APICalls.http_call(url.toString(), "GET", callback, null, false); } Profile.prototype.showFollowers = function() { @@ -561,7 +561,7 @@ function(HostApp, Core, Paths, URI) { var url = URI(this.server + "/followers"); url.addSearch("limit", 200); - Paths.getURL(url.toString(), "GET", callback, null, false); + APICalls.http_call(url.toString(), "GET", callback, null, false); } Profile.prototype.getDOMSmallProfile = function(profile) { @@ -643,10 +643,10 @@ function(HostApp, Core, Paths, URI) { } else { var _this = this; - Paths.findProfileURL(profile.entity, function(profile_url) { + APICalls.findProfileURL(profile.entity, function(profile_url) { if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { var p = JSON.parse(resp.responseText); if (p && p != "null") { _this.cache.profiles.setItem(profile.entity, p); diff --git a/WebKit/scripts/controller/Search.js b/WebKit/scripts/controller/Search.js index 51ce153..b083362 100644 --- a/WebKit/scripts/controller/Search.js +++ b/WebKit/scripts/controller/Search.js @@ -1,11 +1,11 @@ define([ "helper/HostApp", "helper/Core", - "helper/Paths", + "helper/APICalls", "lib/URI" ], -function(HostApp, Core, Paths, URI) { +function(HostApp, Core, APICalls, URI) { function Search() { @@ -79,7 +79,7 @@ function(HostApp, Core, Paths, URI) { var _this = this; - Paths.getURL(url.toString(), "GET", function(resp) { + APICalls.http_call(url.toString(), "GET", function(resp) { var results = JSON.parse(resp.responseText).results; if (results && results.length > 0) { diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 5b453b8..69b8831 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -1,10 +1,10 @@ define([ "helper/HostApp", - "helper/Paths", + "helper/APICalls", "helper/Cache" ], -function(HostApp, Paths, Cache) { +function(HostApp, APICalls, Cache) { function Sidebar() { @@ -121,10 +121,10 @@ function(HostApp, Paths, Cache) { } else { - Paths.findProfileURL(entity, function(profile_url) { + APICalls.findProfileURL(entity, function(profile_url) { if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { var p = JSON.parse(resp.responseText); if (p && p != "null") { _this.cache.profiles.setItem(entity, p); diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index fbd1383..307a651 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -1,11 +1,11 @@ define([ "helper/Core", - "helper/Paths", + "helper/APICalls", "helper/HostApp", "lib/URI" ], -function(Core, Paths, HostApp, URI) { +function(Core, APICalls, HostApp, URI) { function Timeline() { @@ -100,7 +100,7 @@ function(Core, Paths, HostApp, URI) { add_to_search = add_to_search || {}; var those = this; - var url = URI(Paths.mkApiRootPath("/posts")); + var url = URI(APICalls.mkApiRootPath("/posts")); var post_types = [ "https://tent.io/types/post/repost/v0.1.0", @@ -143,7 +143,7 @@ function(Core, Paths, HostApp, URI) { if (!this.reload_blocked) { this.reload_blocked = true; - Paths.getURL(url.toString(), http_method, callback, data); // FIXME: error callback + APICalls.http_call(url.toString(), http_method, callback, data); // FIXME: error callback } } } diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js new file mode 100644 index 0000000..3176a13 --- /dev/null +++ b/WebKit/scripts/helper/APICalls.js @@ -0,0 +1,285 @@ +define([ + "jquery", + "helper/HostApp", + "helper/Hmac", + "helper/Cache" +], + +function(jQuery, HostApp, Hmac, Cache) { + var APICalls = {}; + + APICalls.cache = new Cache(); + + APICalls.getUrlVars = function(url) { + var vars = [], hash; + if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); + var hashes = url.slice(url.indexOf('?') + 1).split('&'); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; + } +/* + APICalls.http_call = function(url, http_method, callback, data, auth_header, accepts) { + + if(accepts !== false) accepts = accepts || "application/vnd.tent.post.v0+json"; + + var options = { + + beforeSend: function(xhr) { + + if(accepts !== false) xhr.setRequestHeader("Accept", accepts); + + if (data) xhr.setRequestHeader("Content-Length", data.length); + + if (auth_header) { // if is_set? auth_header + + xhr.setRequestHeader("Authorization", auth_header); + + } else { + + var user_access_token = HostApp.stringForKey("user_access_token"); + + if (auth_header !== false && typeof user_access_token != "undefined") { + + auth_header = Hmac.makeAuthHeader( + url, + http_method, + HostApp.secret(), + user_access_token + ); + xhr.setRequestHeader("Authorization", auth_header); + } + } + }, + url: url, + contentType: 'application/vnd.tent.post.v0+json; type="https://tent.io/types/app/v0#"', + type: http_method, + complete: callback, + data: data, + processData: false, + error: function(xhr, ajaxOptions, thrownError) { + console.error("getURL (" + xhr.status + ")" + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); + } + } + debug(url) + jQuery.ajax(options); + } +*/ + APICalls.http_call = function(options) { + + if(!options.content_type) { + console.error("No content type for " + options.url); + return; + } + + var settings = { + beforeSend: function(xhr) { + if (options.data) xhr.setRequestHeader("Content-Length", data.length); + if (options.accept) xhr.setRequestHeader("Accept", "application/vnd.tent.post.v0+json"); + var user_access_token = HostApp.stringForKey("user_access_token"); + if (!no_auth && user_access_token) { + var auth_header = Hmac.makeHawkAuthHeader( + options.url, + options.http_method, + HostApp.secret(), + user_access_token + ); + xhr.setRequestHeader("Authorization", auth_header); + } else { + console.error("No user_access_token yet - " + options.url); + } + } + url: options.url, + contentType: options.content_type, + type: url.http_method, + complete: options.callback, + data: options.data, + processData: false, + error: function(xhr, ajaxOptions, thrownError) { + console.error("HTTP CALL (" + xhr.status + ")" + xhr.statusText + " " + options.http_method + " (" + options.url + "): '" + xhr.responseText + "'"); + } + }; + + jQuery.ajax(settings); + } + + APICalls.get = function(url, options) { + var settings = { + url: url, + http_method: "GET", + accept: null, + data: null, + no_auth: false + content_type: null + }; + + jQuery.extend(settings, options); + + APICalls.http_call(settings); + } + + APICalls.post = function(url, data, options) { + var settings = { + url: url, + http_method: "POST", + data: data + }; + + jQuery.extend(settings, options); + + APICalls.http_call(settings); + } + + APICalls.postMultipart = function(url, callback, data, boundary, accepts) { + + accepts = accepts || "application/vnd.tent.v0+json"; + + jQuery.ajax({ + + beforeSend: function(xhr) { + xhr.setRequestHeader("Accept", accepts); + + if (data) xhr.setRequestHeader("Content-Length", data.length); + + var user_access_token = HostApp.stringForKey("user_access_token"); + + if (user_access_token) { + + auth_header = Hmac.makeAuthHeader( + url, + "POST", + HostApp.secret(), + user_access_token + ); + + xhr.setRequestHeader("Authorization", auth_header); + } + }, + url: url, + contentType: "multipart/form-data;boundary=" + boundary, + type: "POST", + complete: callback, + data: data, + processData: false, + error: function(xhr, ajaxOptions, thrownError) { + console.error("postMultipart (" + xhr.status + ")" + xhr.statusText + " (" + url + "): '" + xhr.responseText + "'"); + } + }); + } + + APICalls.findProfileURL = function(entity, callback, errorCallback) { + var profile_url = APICalls.cache.profile_urls.getItem(entity); + + if (profile_url && profile_url != "null") { + + callback(profile_url); + + } else { + + jQuery.ajax({ + url: entity, + type: "HEAD", + complete: function(resp) { + if(resp) { + var headers = resp.getAllResponseHeaders(); + + var profile_urls = APICalls.parseHeaderForProfiles(headers); + var profile_url = null; + if(profile_urls.length > 0) { + var profile_url = profile_urls[0]; + if (!profile_url.startsWith("http")) { + profile_url = entity + profile_url; + } + } + + if (profile_url) { + APICalls.cache.profile_urls.setItem(entity, profile_url); + callback(profile_url); + } else { + APICalls.http_call(entity, "GET", function(resp) { + + if (resp.status >= 200 && resp.status < 300) { + var doc = document.implementation.createHTMLDocument(""); + doc.documentElement.innerHTML = resp.responseText; + var links = $(doc).find("link[rel='https://tent.io/rels/meta-post']"); + + if (links.length > 0) { + var href = links.get(0).href; + APICalls.cache.profile_urls.setItem(entity, href); + if (!href.startsWith("http")) { + href = entity + href; + } + callback(href); + + } else { + if(errorCallback) errorCallback(entity + " has no profile URL"); + } + } else { + if(errorCallback) errorCallback(entity + " has no profile URL"); + } + + }, null, false, false); + + //if(errorCallback) errorCallback(entity + " has no profile URL"); + } + } + }, + error: function(xhr, ajaxOptions, thrownError) { + console.error("findProfileURL " + xhr.statusText + " (" + entity + "): " + xhr.responseText); + if (errorCallback) errorCallback(xhr.statusText + " - " + xhr.responseText) + } + }); + } + } + + APICalls.mkApiRootPath = function(path) { + + var api_root = HostApp.stringForKey("api_root"); + + if((api_root.substring(api_root.length - 1, api_root.length) != "/") && (path.substring(0, 1) != "/")) { + api_root += "/"; + } else if((api_root.substring(api_root.length - 1, api_root.length) == "/") && (path.substring(0, 1) == "/")) { + api_root = api_root.substring(0, api_root.length -1); + } + return api_root + path; + } + + APICalls.parseHeaderForProfiles = function(header_string) { + var regexp = /https:\/\/tent.io\/rels\/meta-post/i; + return APICalls.parseHeaderForLink(header_string, regexp); + } + + APICalls.parseHeaderForLink = function(header_string, match) { + var headers = header_string.split(/\n/); + var links = []; + for (var i = 0; i < headers.length; i++) { + var header = headers[i]; + if (header.match(/^Link:(.*)/i)) { + links.push(header.replace(/\r/, "").substr(5).trim()); + } + } + + var items = []; + for (var i = 0; i < links.length; i++) { + items = items.concat(links[i].split(",")); + } + var things = []; + for (var i = 0; i < items.length; i++) { + var item = items[i]; + if (item.match(match)) { + var n = item.match(/<([^>]*)>/); + if (n) { + things.push(n[1]); + } + } + } + + return things; + } + + return APICalls; +}); \ No newline at end of file diff --git a/WebKit/scripts/helper/Cache.js b/WebKit/scripts/helper/Cache.js index eb79fe7..2b35364 100644 --- a/WebKit/scripts/helper/Cache.js +++ b/WebKit/scripts/helper/Cache.js @@ -40,12 +40,12 @@ function(URI, CacheStorage, require) { } } - var url = URI(require("helper/Paths").mkApiRootPath("/followings")); + var url = URI(require("helper/APICalls").mkApiRootPath("/followings")); if (this.followings_before_id) { url.addSearch("before_id", this.followings_before_id); } - require("helper/Paths").getURL(url, "GET", callback); + require("helper/APICalls").getURL(url, "GET", callback); } Cache.prototype.periodicallyGetFollowings = function() { diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 7f3b350..68e1e41 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -1,6 +1,6 @@ define([ "jquery", - "helper/Paths", + "helper/APICalls", "lib/URI", "helper/HostApp", "helper/Cache", @@ -8,7 +8,7 @@ define([ "lib/SingleDoubleClick" ], -function(jQuery, Paths, URI, HostApp, Cache) { +function(jQuery, APICalls, URI, HostApp, Cache) { function Core() { this.cache = new Cache(); @@ -247,10 +247,10 @@ function(jQuery, Paths, URI, HostApp, Cache) { } else { - Paths.findProfileURL(status.entity, function(profile_url) { + APICalls.findProfileURL(status.entity, function(profile_url) { if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { var p = JSON.parse(resp.responseText); if (p && p != "null") { _this.cache.profiles.setItem(status.entity, p); @@ -308,11 +308,11 @@ function(jQuery, Paths, URI, HostApp, Cache) { } if (status.entity == HostApp.stringForKey("entity")) { - var url = Paths.mkApiRootPath("/posts/" + status.id + "/attachments/" + attachment.name); - Paths.getURL(url, "GET", callback, null, null, attachment.type); + var url = APICalls.mkApiRootPath("/posts/" + status.id + "/attachments/" + attachment.name); + APICalls.http_call(url, "GET", callback, null, null, attachment.type); } else { - var url = Paths.mkApiRootPath("/posts/" + encodeURIComponent(status.entity) + "/" + status.id + "/attachments/" + attachment.name); - Paths.getURL(url, "GET", callback, null, null, attachment.type); + var url = APICalls.mkApiRootPath("/posts/" + encodeURIComponent(status.entity) + "/" + status.id + "/attachments/" + attachment.name); + APICalls.http_call(url, "GET", callback, null, null, attachment.type); } })(); } @@ -431,9 +431,9 @@ function(jQuery, Paths, URI, HostApp, Cache) { }); var _this = this; - Paths.findProfileURL(repost.entity, function(profile_url) { + APICalls.findProfileURL(repost.entity, function(profile_url) { if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { if (resp.status >= 200 && resp.status < 400) { var _p = JSON.parse(resp.responseText); _this.cache.profiles.setItem(repost.entity, _p); @@ -460,14 +460,14 @@ function(jQuery, Paths, URI, HostApp, Cache) { } } - Paths.findProfileURL(repost.content.entity, function(profile_url) { + APICalls.findProfileURL(repost.content.entity, function(profile_url) { if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { var profile = JSON.parse(resp.responseText); var server = profile["https://tent.io/types/info/core/v0.1.0"].servers[0]; - Paths.getURL(URI(server + "/posts/" + repost.content.id).toString(), "GET", callback, null, false); + APICalls.http_call(URI(server + "/posts/" + repost.content.id).toString(), "GET", callback, null, false); }, null, false); // do not send auth-headers } @@ -483,7 +483,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { } else { - var url = URI(Paths.mkApiRootPath("/posts")); + var url = URI(APICalls.mkApiRootPath("/posts")); var http_method = "POST"; @@ -517,13 +517,13 @@ function(jQuery, Paths, URI, HostApp, Cache) { } } - Paths.getURL(url.toString(), http_method, callback, JSON.stringify(data)); + APICalls.http_call(url.toString(), http_method, callback, JSON.stringify(data)); } } Core.prototype.repost = function(id, entity, callback) { - var url = URI(Paths.mkApiRootPath("/posts")); + var url = URI(APICalls.mkApiRootPath("/posts")); var data = { "type": "https://tent.io/types/post/repost/v0.1.0", @@ -549,12 +549,12 @@ function(jQuery, Paths, URI, HostApp, Cache) { _this.highlight(id); } - Paths.getURL(url.toString(), "POST", new_callback, JSON.stringify(data)); + APICalls.http_call(url.toString(), "POST", new_callback, JSON.stringify(data)); } Core.prototype.sendNewMessageWithImage = function(content, in_reply_to_status_id, in_reply_to_entity, location, image_data_uri, is_private, callback) { - var url = URI(Paths.mkApiRootPath("/posts")); + var url = URI(APICalls.mkApiRootPath("/posts")); var data = { "type": "https://tent.io/types/post/photo/v0.1.0", @@ -623,14 +623,14 @@ function(jQuery, Paths, URI, HostApp, Cache) { callback(resp); } - Paths.postMultipart(url.toString(), newCallback, post, boundary); + APICalls.postMultipart(url.toString(), newCallback, post, boundary); } Core.prototype.remove = function(id, callback, type) { type = type || "post"; if (confirm("Really delete this " + type + "?")) { - var url = URI(Paths.mkApiRootPath("/posts/" + id)); - Paths.getURL(url.toString(), "DELETE", callback); + var url = URI(APICalls.mkApiRootPath("/posts/" + id)); + APICalls.http_call(url.toString(), "DELETE", callback); } } @@ -738,9 +738,9 @@ function(jQuery, Paths, URI, HostApp, Cache) { } else { - Paths.findProfileURL(mention.entity, function(profile_url) { + APICalls.findProfileURL(mention.entity, function(profile_url) { if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { + APICalls.http_call(profile_url, "GET", function(resp) { if (resp.status >= 200 && resp.status < 400) { var p = JSON.parse(resp.responseText); _this.cache.profiles.setItem(mention.entity, p); @@ -838,7 +838,7 @@ function(jQuery, Paths, URI, HostApp, Cache) { } else if(word.startsWith("http://youtube.com/") || word.startsWith("http://www.youtube.com/") || word.startsWith("https://youtube.com/") || word.startsWith("https://www.youtube.com/")) { - var v = Paths.getUrlVars(word)["v"]; + var v = APICalls.getUrlVars(word)["v"]; this.addYouTube(v, images); } else if (word.startsWith("http://youtu.be/") || word.startsWith("https://youtu.be/")) { From 650f107d21a40bdbfdb99d5f519635bb33fa871f Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 27 May 2013 09:44:43 +0200 Subject: [PATCH 074/127] more work on posting and showing status posts --- WebKit/scripts/controller/Mentions.js | 1 + WebKit/scripts/controller/Oauth.js | 42 ++++++++----- WebKit/scripts/controller/Sidebar.js | 2 +- WebKit/scripts/controller/Timeline.js | 22 ++++--- WebKit/scripts/helper/APICalls.js | 91 +++++++++------------------ WebKit/scripts/helper/Core.js | 42 ++++++++++--- WebKit/scripts/helper/Hmac.js | 43 ++----------- 7 files changed, 108 insertions(+), 135 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 7d20d5b..68fc7ec 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -10,6 +10,7 @@ function(HostApp, Timeline, URI, APICalls, Core) { function Mentions() { + return // FIXME this.is_not_init = false; this.unread_mentions = 0; diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index a60a286..f020b5e 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -87,31 +87,40 @@ function(HostApp, APICalls, Hmac) { Oauth.prototype.register = function (url) { var those = this; - APICalls.get(url, { callback: function(resp) { + debug(url) + APICalls.get(url, { + no_auth: true, + callback: function(resp) { those.profile = JSON.parse(resp.responseText); those.entity = those.profile.content.entity; HostApp.setStringForKey(those.entity, "entity") HostApp.setServerUrls(those.profile.content.servers[0].urls); - var callback = function(resp) { + APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(those.app_info), { + content_type: "https://tent.io/types/app/v0#", + no_auth: true, + callback: function(resp) { + var app_id = JSON.parse(resp.responseText).id; var header_string = resp.getAllResponseHeaders(); var regexp = /https:\/\/tent.io\/rels\/credentials/i var url = APICalls.parseHeaderForLink(header_string, regexp); - APICalls.http_call(url, "GET", function(resp) { - var data = JSON.parse(resp.responseText); - those.authRequest(data, app_id); - }, null, false) - } - APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(those.app_info), {callback: callback}); + APICalls.get(url, { + content_type: "https://tent.io/types/app/v0#", + no_auth: true, + callback: function(resp) { + var data = JSON.parse(resp.responseText); + those.authRequest(data, app_id); + }}); + }}); }}); } Oauth.prototype.authRequest = function(credentials, app_id) { - + HostApp.setStringForKey(app_id, "app_id"); HostApp.setStringForKey(credentials.id, "app_hawk_id"); HostApp.setStringForKey(credentials.content.hawk_key, "app_hawk_key"); @@ -137,20 +146,20 @@ function(HostApp, APICalls, Hmac) { }); var those = this; - var http_method = "POST"; - var callback = function(resp) { - those.requestAccessTokenTicketFinished(resp.responseText); - }; - var auth_header = Hmac.makeHawkAuthHeader( url, - http_method, + "POST", HostApp.stringForKey("app_hawk_id"), HostApp.stringForKey("app_hawk_key"), requestBody ); - APICalls.http_call(url, http_method, callback, requestBody, auth_header); + APICalls.post(url, requestBody, { + content_type: "https://tent.io/types/app/v0#", + auth_header: auth_header, + callback: function(resp) { + those.requestAccessTokenTicketFinished(resp.responseText); + }}); } else { console.error("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}") @@ -162,6 +171,7 @@ function(HostApp, APICalls, Hmac) { Oauth.prototype.requestAccessTokenTicketFinished = function(responseBody) { var access = JSON.parse(responseBody); + debug(access) HostApp.setStringForKey(access["access_token"], "user_access_token"); HostApp.setSecret(access["hawk_key"]); diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 69b8831..e715f94 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -51,7 +51,7 @@ function(HostApp, APICalls, Cache) { document.body.className = "body-timeline"; document.body.id = "with-sidebar"; - this.setEntityAvatar(); + //this.setEntityAvatar(); FIXME this.setOnScroll(); } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 307a651..19030eb 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -30,7 +30,7 @@ function(Core, APICalls, HostApp, URI) { document.getElementById("content").appendChild(this.container); var _this = this; - this.reloadIntervall = setInterval(function() { _this.getNewData() }, this.timeout); + //this.reloadIntervall = setInterval(function() { _this.getNewData() }, this.timeout); //FIXME back this.getNewData(); } @@ -48,6 +48,7 @@ function(Core, APICalls, HostApp, URI) { Timeline.prototype.newStatus = function(statuses, append) { + statuses = statuses.data; if(statuses != null && statuses.length > 0) { this.before.loading = false; @@ -62,7 +63,7 @@ function(Core, APICalls, HostApp, URI) { this.since_id_entity = status.entity; } - if (status.type == "https://tent.io/types/post/status/v0.1.0" || status.type == "https://tent.io/types/post/photo/v0.1.0") { + if (status.type == "https://tent.io/types/status/v0#" || status.type == "https://tent.io/types/post/photo/v0.1.0") { var new_node = this.getStatusDOMElement(status); @@ -100,15 +101,16 @@ function(Core, APICalls, HostApp, URI) { add_to_search = add_to_search || {}; var those = this; - var url = URI(APICalls.mkApiRootPath("/posts")); + var url = URI(HostApp.serverUrl("posts_feed")); var post_types = [ - "https://tent.io/types/post/repost/v0.1.0", - "https://tent.io/types/post/status/v0.1.0", - "https://tent.io/types/post/delete/v0.1.0", - "https://tent.io/types/post/photo/v0.1.0" + "https://tent.io/types/status/v0#", + "https://tent.io/types/status/v0#reply", + "https://tent.io/types/repost/v0#", + "https://tent.io/types/delete/v0#", + //"https://tent.io/types/post/photo/v0.1.0" ]; - url.addSearch("post_types", post_types.join(",")); + //url.addSearch("types", post_types.join(",")); //url.addSearch("sort_by", "published_at"); url.addSearch("limit", this.posts_limit); @@ -127,7 +129,6 @@ function(Core, APICalls, HostApp, URI) { those.reload_blocked = false; try { - var json = JSON.parse(resp.responseText); those.newStatus(json, append); @@ -143,7 +144,8 @@ function(Core, APICalls, HostApp, URI) { if (!this.reload_blocked) { this.reload_blocked = true; - APICalls.http_call(url.toString(), http_method, callback, data); // FIXME: error callback + // APICalls.http_call(url.toString(), http_method, callback, data); // FIXME: error callback + APICalls.get(url.toString(), { callback: callback }); } } } diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js index 3176a13..dd942de 100644 --- a/WebKit/scripts/helper/APICalls.js +++ b/WebKit/scripts/helper/APICalls.js @@ -22,80 +22,47 @@ function(jQuery, HostApp, Hmac, Cache) { } return vars; } -/* - APICalls.http_call = function(url, http_method, callback, data, auth_header, accepts) { - if(accepts !== false) accepts = accepts || "application/vnd.tent.post.v0+json"; - - var options = { - - beforeSend: function(xhr) { - - if(accepts !== false) xhr.setRequestHeader("Accept", accepts); - - if (data) xhr.setRequestHeader("Content-Length", data.length); - - if (auth_header) { // if is_set? auth_header - - xhr.setRequestHeader("Authorization", auth_header); - - } else { - - var user_access_token = HostApp.stringForKey("user_access_token"); - - if (auth_header !== false && typeof user_access_token != "undefined") { - - auth_header = Hmac.makeAuthHeader( - url, - http_method, - HostApp.secret(), - user_access_token - ); - xhr.setRequestHeader("Authorization", auth_header); - } - } - }, - url: url, - contentType: 'application/vnd.tent.post.v0+json; type="https://tent.io/types/app/v0#"', - type: http_method, - complete: callback, - data: data, - processData: false, - error: function(xhr, ajaxOptions, thrownError) { - console.error("getURL (" + xhr.status + ")" + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); - } - } - debug(url) - jQuery.ajax(options); - } -*/ APICalls.http_call = function(options) { - if(!options.content_type) { + if (typeof options === "string") { + console.error(options + " not implemented yet") + return; + } + + var content_type = null; + + if(options.http_method == "POST" && !options.content_type) { console.error("No content type for " + options.url); return; + } else { + content_type = "application/vnd.tent.post.v0+json; type=\"" + options.content_type + "\""; } var settings = { beforeSend: function(xhr) { - if (options.data) xhr.setRequestHeader("Content-Length", data.length); - if (options.accept) xhr.setRequestHeader("Accept", "application/vnd.tent.post.v0+json"); + if (options.data) xhr.setRequestHeader("Content-Length", options.data.length); + if (options.accept) xhr.setRequestHeader("Accept", options.accept); + else xhr.setRequestHeader("Accept", "application/vnd.tent.post.v0+json"); var user_access_token = HostApp.stringForKey("user_access_token"); - if (!no_auth && user_access_token) { + if (!options.auth_header && !options.no_auth && user_access_token) { var auth_header = Hmac.makeHawkAuthHeader( options.url, options.http_method, - HostApp.secret(), - user_access_token + user_access_token, + HostApp.secret()//, + //HostApp.stringForKey("app_id") ); xhr.setRequestHeader("Authorization", auth_header); - } else { + } else if(options.auth_header) { + xhr.setRequestHeader("Authorization", options.auth_header); + } else if(!options.no_auth) { console.error("No user_access_token yet - " + options.url); } - } + }, url: options.url, - contentType: options.content_type, - type: url.http_method, + contentType: content_type, + type: options.http_method, complete: options.callback, data: options.data, processData: false, @@ -111,13 +78,11 @@ function(jQuery, HostApp, Hmac, Cache) { var settings = { url: url, http_method: "GET", - accept: null, - data: null, - no_auth: false - content_type: null }; - jQuery.extend(settings, options); + for (var key in options) { + settings[key] = options[key]; + } APICalls.http_call(settings); } @@ -129,7 +94,9 @@ function(jQuery, HostApp, Hmac, Cache) { data: data }; - jQuery.extend(settings, options); + for (var key in options) { + settings[key] = options[key]; + } APICalls.http_call(settings); } diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 68e1e41..802ca7a 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -162,7 +162,28 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } Core.prototype.getStatusDOMElement = function(status) { - + /* +{ + "app": { + "id": "P8FJjaiRv0AKXfjUMd_4YQ", + "name": "Bungloo on Linux", + "url": "http:\/\/jabs.nu\/bungloo\/" + }, + "content": { + "text": "jeena test" + }, + "entity": "http:\/\/155969d81672.alpha.attic.is", + "id": "HlSXe8MREzU4h2fGLGSnCA", + "published_at": 1369566009, + "received_at": 1369566008799, + "type": "https:\/\/tent.io\/types\/status\/v0#", + "version": { + "id": "a2f702b4615c7d7dd0f98c73d7b55749880bf6e437a77349454ff10745d134c6", + "published_at": 1369566009, + "received_at": 1369566008799 + } +} + */ var _this = this; var template = this.getTemplate(); @@ -320,6 +341,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { this.findMentions(template.message, status.mentions); +/* for (var i = 0; i < status.mentions.length; i++) { var mention = status.mentions[i]; if (mention.entity == HostApp.stringForKey("entity")) { @@ -327,10 +349,10 @@ function(jQuery, APICalls, URI, HostApp, Cache) { break; } } - - var published_at = typeof status.__repost == "undefined" ? status.published_at : status.__repost.published_at; +*/ + var published_at = typeof status.__repost == "undefined" ? status.version.published_at : status.__repost.published_at; var time = document.createElement("abbr"); - time.innerText = this.ISODateString(new Date(published_at * 1000)); + time.innerText = this.ISODateString(new Date(published_at)); time.title = time.innerText; time.className = "timeago"; jQuery(time).timeago(); @@ -483,13 +505,13 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } else { - var url = URI(APICalls.mkApiRootPath("/posts")); + var url = URI(HostApp.serverUrl("new_post")); var http_method = "POST"; var data = { - "type": "https://tent.io/types/post/status/v0.1.0", - "published_at": parseInt(new Date().getTime() / 1000, 10), + "type": in_reply_to_status_id ? "https://tent.io/types/status/v0#" : "https://tent.io/types/status/v0#reply", + "published_at": parseInt(new Date().getTime(), 10), "permissions": { "public": !is_private }, @@ -517,7 +539,11 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } } - APICalls.http_call(url.toString(), http_method, callback, JSON.stringify(data)); + // APICalls.http_call(url.toString(), http_method, callback, JSON.stringify(data)); + APICalls.post(url.toString(), JSON.stringify(data), { + content_type: data.type, + callback: callback + }); } } diff --git a/WebKit/scripts/helper/Hmac.js b/WebKit/scripts/helper/Hmac.js index 0e2b1fc..be4db38 100644 --- a/WebKit/scripts/helper/Hmac.js +++ b/WebKit/scripts/helper/Hmac.js @@ -7,40 +7,7 @@ function(URI, CryptoJS) { var Hmac = {}; - Hmac.makeAuthHeader = function(url, http_method, mac_key, mac_key_id) { - - debug("makeAuthHeader should not be used anymore, bug!") - - url = URI(url); - var nonce = Hmac.makeid(8); - var time_stamp = parseInt((new Date).getTime() / 1000, 10); - - var port = url.port(); - if (!port) { - port = url.protocol() == "https" ? "443" : "80"; - } - - var normalizedRequestString = "" - + time_stamp + '\n' - + nonce + '\n' - + http_method + '\n' - + url.path() + url.search() + url.hash() + '\n' - + url.hostname() + '\n' - + port + '\n' - + '\n' ; - - var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key); - hmac.update(normalizedRequestString); - var hash = hmac.finalize(); - var mac = hash.toString(CryptoJS.enc.Base64); - - return 'MAC id="' + mac_key_id + - '", ts="' + time_stamp + - '", nonce="' + nonce + - '", mac="' + mac + '"'; - } - - Hmac.makeHawkAuthHeader = function(url, http_method, hawk_id, key, payload, app_id) { + Hmac.makeHawkAuthHeader = function(url, http_method, hawk_id, key, app_id) { url = URI(url); var nonce = Hmac.makeid(8); @@ -58,24 +25,22 @@ function(URI, CryptoJS) { + url.path() + url.search() + url.hash() + '\n' // request uri + url.hostname().toLowerCase() + '\n' // host + port + '\n' // port - + Hmac.calculatePayloadHash(payload) + '\n' // hash + + '\n' // Hmac.calculatePayloadHash(payload) + '\n' // hash // FIXME implement payload validation + '\n' // ext (we don't use it) var app = ""; + if(app_id) { app = ', app="' + app_id + "'"; normalizedRequestString += app_id + "\n" + // app '\n'; // dlg should be empty } - var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); hmac.update(normalizedRequestString); var hash = hmac.finalize(); var mac = hash.toString(CryptoJS.enc.Base64); - - return 'Hawk id="' + hawk_id + '", mac="' + mac + '", ts="' + time_stamp + @@ -84,6 +49,8 @@ function(URI, CryptoJS) { } Hmac.calculatePayloadHash = function (payload) { + if (!payload) return ""; + var hash = CryptoJS.algo.SHA256.create(); hash.update('hawk.1.payload\n'); hash.update('application/vnd.tent.post.v0+json\n'); From 8cd73ac37869309e1ce43b75fa15346f535ef4e6 Mon Sep 17 00:00:00 2001 From: dblugeon Date: Wed, 3 Jul 2013 18:15:37 +0200 Subject: [PATCH 075/127] update windows script build and setup.exe generation installer.iss use now relative paths instead of absolute. the generated setup include all needed dll and python files. --- Windows/deploy.ps1 | 1 + Windows/installer.iss | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Windows/deploy.ps1 b/Windows/deploy.ps1 index 8441559..f4ec800 100644 --- a/Windows/deploy.ps1 +++ b/Windows/deploy.ps1 @@ -9,4 +9,5 @@ Copy-Item msvcp90.dll bungloo cd bungloo python setup.py py2exe cd .. +iscc.exe "installer.iss" rm bungloo \ No newline at end of file diff --git a/Windows/installer.iss b/Windows/installer.iss index 51cf08d..0459aa4 100644 --- a/Windows/installer.iss +++ b/Windows/installer.iss @@ -22,9 +22,9 @@ AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes -LicenseFile=C:\Users\Jeena\Documents\GitHub\Bungloo\LICENSE.txt +LicenseFile=..\LICENSE.txt OutputBaseFilename=setup -SetupIconFile=C:\Users\Jeena\Documents\GitHub\Bungloo\images\Icon.ico +SetupIconFile=..\images\Icon.ico Compression=lzma SolidCompression=yes @@ -36,12 +36,14 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] -Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\Bungloo.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\library.zip"; DestDir: "{app}"; Flags: ignoreversion -Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\python27.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\w9xpopen.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\images\*"; DestDir: "{app}\images"; Flags: ignoreversion recursesubdirs createallsubdirs -Source: "C:\Users\Jeena\Documents\GitHub\Bungloo\Windows\bungloo\dist\WebKit\*"; DestDir: "{app}\WebKit"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "bungloo\dist\Bungloo.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "bungloo\dist\library.zip"; DestDir: "{app}"; Flags: ignoreversion +Source: "bungloo\dist\*.pyd"; DestDir: "{app}"; Flags: ignoreversion +Source: "bungloo\dist\*.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "bungloo\dist\w9xpopen.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "bungloo\dist\images\*"; DestDir: "{app}\images"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "bungloo\dist\imageformats\*"; DestDir: "{app}\imageformats"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "bungloo\dist\WebKit\*"; DestDir: "{app}\WebKit"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] From 44c210e9baa7527e0d4b45a3a54630a62ace6994 Mon Sep 17 00:00:00 2001 From: dblugeon Date: Wed, 3 Jul 2013 19:13:06 +0200 Subject: [PATCH 076/127] adding a redirect for py2exe logging now, on windows, log files are stored into %TMP%/BUNGLOO/BUNGLOO.log and %TMP%/BUNGLOO/BUNGLOO_err.log see also http://www.py2exe.org/index.cgi/StderrLog close #238 --- Qt/Bungloo.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 6a065e7..4545b5d 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -309,6 +309,15 @@ Usage: bungloo [option [text]] """ sys.exit(1) + if RUNNING_ON_WINDOWS and not RUNNING_LOCAL: + import sys + from os import path, environ, makedirs + appdata = path.join(environ["TMP"], key) + if not path.exists(appdata): + makedirs(appdata) + sys.stdout = open(path.join(appdata, key + ".log"), "w") + sys.stderr = open(path.join(appdata, key + "_err.log"), "w") + app = SingleApplication.SingleApplicationWithMessaging(sys.argv, key) if app.isRunning(): app.sendMessage(json.dumps(sys.argv[1:])) From 36e45d04abf6012eee0b07a69120cd87daf4e4ac Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 8 Jul 2013 17:03:53 +0200 Subject: [PATCH 077/127] more textarea fixes --- Qt/Bungloo.py | 23 ++-- Qt/Windows.py | 100 +++++--------- WebKit/css/default.css | 16 ++- WebKit/scripts/controller/NewPost.js | 197 +++++++++++++++++++++++++++ WebKit/scripts/controller/Oauth.js | 33 +++-- WebKit/scripts/controller/Profile.js | 27 ++-- WebKit/scripts/helper/Core.js | 13 +- WebKit/scripts/main.js | 25 +++- 8 files changed, 317 insertions(+), 117 deletions(-) create mode 100644 WebKit/scripts/controller/NewPost.js diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 6a065e7..e5eaf3e 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -107,15 +107,12 @@ class Controller(QtCore.QObject): QtCore.QObject.__init__(self) self.app = app - oldpath = os.path.expanduser('~/.bungloo/') - if os.path.isdir(oldpath): - shutil.copytree(oldpath, os.path.expanduser('~/.config/bungloo/')) - shutil.rmtree(os.path.expanduser('~/.bungloo/')) + name = "bungloo2" - if not os.path.exists(os.path.expanduser("~/.config/bungloo/")): - os.makedirs(os.path.expanduser("~/.config/bungloo/")) + if not os.path.exists(os.path.expanduser("~/.config/" + name + "/")): + os.makedirs(os.path.expanduser("~/.config/" + name + "/")) - self.config_path = os.path.expanduser('~/.config/bungloo/bungloo.cfg') + self.config_path = os.path.expanduser('~/.config/' + name + '/bungloo.cfg') if os.access(self.config_path, os.R_OK): with open(self.config_path, 'r') as f: @@ -180,15 +177,12 @@ class Controller(QtCore.QObject): @QtCore.pyqtSlot(str, str, str, bool) def openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(self, entity, status_id, string, is_private): - new_message_window = Windows.NewPost(self.app) - new_message_window.inReplyToStatusIdWithString(entity, status_id, string) - new_message_window.setIsPrivate(is_private) + new_message_window = Windows.NewPost(self.app, string, "[]", is_private) new_message_window.show() new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.app.new_message_windows.append(new_message_window) new_message_window.activateWindow() new_message_window.setFocus() - new_message_window.textInput.setFocus() new_message_window.show() new_message_window.raise_() @@ -268,6 +262,11 @@ class Controller(QtCore.QObject): msgBox.setInformativeText(message) msgBox.exec_() + @QtCore.pyqtSlot(result=str) + def getCachedEntities(self): + entities = self.app.timeline.evaluateJavaScript("JSON.stringify(bungloo.cache.entities);") + return entities.toString() + def logout(self, sender): print "logout is not implemented yet" @@ -297,7 +296,7 @@ class Console(QtCore.QObject): if __name__ == "__main__": - key = 'BUNGLOO' + key = 'BUNGLOO2' if len(sys.argv) > 1 and sys.argv[1] == "--help": print """ diff --git a/Qt/Windows.py b/Qt/Windows.py index b47d8ae..7317f56 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -242,7 +242,7 @@ class Oauth: new_manager.sslErrors.connect(lambda reply, errors: self.handleSslErrors(reply, errors)) self.auth_view.page().setNetworkAccessManager(new_manager) self.auth_view.show() - + print url self.auth_view.load_url(url) return False @@ -329,25 +329,29 @@ class FindEntity(QtGui.QDialog): class NewPost(Helper.RestorableWindow): - def __init__(self, app): + def __init__(self, app, string, mentions, is_private): self.app = app + self.string = string + self.mentions = mentions + self.is_private = is_private + Helper.RestorableWindow.__init__(self, "newpost", self.app) + self.activateWindow() + self.raise_() self.setWindowIcon(QtGui.QIcon(self.app.resources_path() + "/images/Icon.png")) - self.textInput = QtGui.QPlainTextEdit(self) - self.setCentralWidget(self.textInput) - self.textInput.textChanged.connect(self.onChanged) + self.webView = Helper.WebViewCreator(self.app, True, self) + self.webView.load_local(self.load_finished) + self.setCentralWidget(self.webView) + + self.initUI() + + self.webView.triggerPageAction(QtWebKit.QWebPage.InspectElement) self.setWindowTitle("New Post") self.resize(300, 150) self.setMinimumSize(100, 100) - self.initUI() - - self.setIsPrivate(False) - self.status_id = None - self.reply_to_entity = None - self.imageFilePath = None def initUI(self): newPostAction = QtGui.QAction("&New Post", self) @@ -396,69 +400,29 @@ class NewPost(Helper.RestorableWindow): aboutAction.setStatusTip("Open about page in Webbrowser") aboutAction.triggered.connect(self.app.open_about) + developerExtrasAction = QtGui.QAction("&Developer Extras", self) + developerExtrasAction.setStatusTip("Activate webkit inspector") + developerExtrasAction.triggered.connect(self.developer_extras) + helpMenu = menubar.addMenu("&Help") helpMenu.addAction(aboutAction) + helpMenu.addAction(developerExtrasAction) - self.statusBar().showMessage('256') + def load_finished(self, widget): + is_private = "false" + if self.is_private: + is_private = "true" - self.addButton = QtGui.QToolButton() - self.addButton.setToolTip("Add photo") - self.addButton.clicked.connect(self.openFileDialog) - self.addButton.setAutoRaise(True) - #addIcon = QtGui.QIcon.fromTheme("insert-image", QtGui.QIcon(self.app.resources_path() + "/images/Actions-insert-image-icon.png")) - addIcon = QtGui.QIcon(self.app.resources_path() + "/images/glyphicons_138_picture.png") - self.addButton.setIcon(addIcon) - self.statusBar().addPermanentWidget(self.addButton) + callback = "function() { bungloo.newpost.setString('%s'); bungloo.newpost.setIsPrivate(%s); bungloo.newpost.setMentions(%s);}" % (self.string, is_private, self.mentions) - self.isPrivateButton = QtGui.QToolButton() - self.isPrivateButton.setToolTip("Make private") - self.isPrivateButton.clicked.connect(self.toggleIsPrivate) - self.isPrivateButton.setAutoRaise(True) - #self.isPrivateIcon = QtGui.QIcon(self.app.resources_path() + "/images/Lock-Lock-icon.png") - self.isPrivateIcon = QtGui.QIcon(self.app.resources_path() + "/images/glyphicons_203_lock.png") - #self.isNotPrivateIcon = QtGui.QIcon(self.app.resources_path() + "/images/Lock-Unlock-icon.png") - self.isNotPrivateIcon = QtGui.QIcon(self.app.resources_path() + "/images/glyphicons_204_unlock.png") - self.isPrivateButton.setIcon(self.isNotPrivateIcon) - self.statusBar().addPermanentWidget(self.isPrivateButton) - - self.sendButton = QtGui.QToolButton() - self.sendButton.setToolTip("Send") - self.sendButton.clicked.connect(self.sendMessage) - self.sendButton.setAutoRaise(True) - #sendIcon = QtGui.QIcon.fromTheme("mail-send", QtGui.QIcon(self.app.resources_path() + "/images/send-icon.png")) - sendIcon = QtGui.QIcon(self.app.resources_path() + "/images/glyphicons_123_message_out.png") - self.sendButton.setIcon(sendIcon) - self.statusBar().addPermanentWidget(self.sendButton) - - def setIsPrivate(self, is_private): - self.isPrivate = is_private - icon = self.isNotPrivateIcon - if self.isPrivate: - icon = self.isPrivateIcon - - self.isPrivateButton.setIcon(icon) + script = "function HostAppGo() { start('newpost', " + callback + "); }" + self.webView.page().mainFrame().evaluateJavaScript(script) + self.webView.setFocus() def toggleIsPrivate(self): - self.setIsPrivate(not self.isPrivate) - - def setString(self, string): - self.inReplyToStatusIdWithString(None, None, string) - - def inReplyToStatusIdWithString(self, reply_to, status_id, string): - self.reply_to_entity = reply_to - self.status_id = status_id - self.textInput.setPlainText(string) - - cursor = self.textInput.textCursor() - cursor.movePosition(QtGui.QTextCursor.End, QtGui.QTextCursor.MoveAnchor) - cursor.movePosition(QtGui.QTextCursor.Start, QtGui.QTextCursor.KeepAnchor) - cursor.movePosition(QtGui.QTextCursor.EndOfLine, QtGui.QTextCursor.KeepAnchor) - self.textInput.setTextCursor(cursor) - - def onChanged(self): - count = 256 - len(self.textInput.toPlainText()) - self.statusBar().showMessage(str(count)) + script = "bungloo.newpost.toggleIsPrivate();" + self.webView.page().mainFrame().evaluateJavaScript(script) def sendMessage(self): count = len(self.textInput.toPlainText()) @@ -482,3 +446,7 @@ class NewPost(Helper.RestorableWindow): else: self.imageFilePath = None + def developer_extras(self, widget): + QtWebKit.QWebSettings.globalSettings().setAttribute(QtWebKit.QWebSettings.DeveloperExtrasEnabled, True) + + diff --git a/WebKit/css/default.css b/WebKit/css/default.css index ff8bbfd..63bd2e8 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -446,4 +446,18 @@ form.search input { p.noresult { padding : 10px; text-align : center; -} \ No newline at end of file +} + +.new_post #sidebar, .new_post #content { display: none; } +.new_post { height: 100%; } +#new_post_container { position: absolute; border-collapse: collapse; height: 100%; width: 100%; } +#new_post_container td { position: relative; height: 90%; } +#new_post_container .text td { background: white; } +#new_post_container textarea { resize: none; box-sizing: border-box; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; background: transparent; outline: none; } +#new_post_container div { box-sizing: border-box; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; background: white; color: white; padding: 2px; } + +#new_post_container div span { background: #D8DFEA; } +#suggestions { position: absolute; left: 0; bottom: 0; } +#suggestions .active { color: red; } +#status_bar { height: 1em; } +#status_bar p { float: right; } \ No newline at end of file diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js new file mode 100644 index 0000000..113c58c --- /dev/null +++ b/WebKit/scripts/controller/NewPost.js @@ -0,0 +1,197 @@ +define([ +], + +function() { + + function NewPost() { + + this.entities = JSON.parse(controller.getCachedEntities()); + this.mentions = []; + this.is_private = false; + document.body.className = "new_post"; + + // Textarea + + this.container = $("
    "); + this.textarea = this.container.find("textarea"); + this.highlighter = this.container.find("div"); + + $(document.body).append(this.container); + + this.textarea.keyup(this.keyup.bind(this)); + this.textarea.keydown(this.keydown.bind(this)); + + this.suggestions = $("
      "); + + $(document.body).append(this.suggestions); + + // Status bar + this.counter = $("256"); + var buttons = $( + "

      " + + "" + + "" + + "" + + "

      "); + + this.buttons = { + images: buttons.find("#images"), + is_private: buttons.find("#private"), + send: buttons.find("#send") + } + + //this.buttons.images.bind("click", this.addImage.bind(this)); + //this.buttons.is_private.bind("click", this.togglePrivate.bind(this)); + this.buttons.send.bind("click", this.send.bind(this)); + + this.container.find("#status_bar").append(this.counter); + this.container.find("#status_bar").append(buttons); + + this.textarea.focus() + } + + NewPost.prototype.setString = function(string) { + this.textarea.val(string); + } + + NewPost.prototype.setMentions = function(mentions) { + + if(mentions && mentions.length > 0) { + var mentions_string = " "; + for (var i = 0; i < mentions.length; i++) { + mentions_string += mentions[i].name + " "; + } + + this.textarea.val(this.textarea.val() + " " + mentions_string); + this.mentions = mentions; + } + this.keyup(); + } + + NewPost.prototype.setIsPrivate = function(is_private) { + this.is_private = is_private; + } + + NewPost.prototype.toggleIsPrivate = function() { + this.is_private = !this.is_private; + }; + + NewPost.prototype.keyup = function(e) { + if(!e) return; + + var key = e.which; + if(key != 38 && key != 40 && key != 13) { + + this.applyText($(this.textarea).val()); + + } else { + + var lis = this.suggestions.find("li"); + + if (lis.length > 0) { + e.preventDefault(); + var active = this.suggestions.find(".active"); + if(key == 38) { // up + var prev = active.prev(); + if(active.lentgh == 0) { + lis.last().addClass("active"); + } else if(prev) { + active.removeClass("active"); + prev.addClass("active"); + } + } else if(key == 40) { // down + var next = active.next(); + if(active.length == 0) { + lis.first().addClass("active"); + } else if(next) { + active.removeClass("active"); + next.addClass("active"); + } + } else if(key == 13) { // enter + if(active.length > 0) { + this.replaceWithName(this.textarea.val(), this.suggestions.find("li.active").get(0).item); + } + } + } + } + } + + NewPost.prototype.keydown = function(e) { + var key = e.which; + var lis = this.suggestions.find("li"); + if(lis.length > 0 && (key == 38 || key == 40 || key == 13)) { + e.preventDefault(); + } + } + + NewPost.prototype.replaceAll = function(txt, replace, with_this) { + return txt.replace(new RegExp(replace, 'g'),with_this); + } + + NewPost.prototype.replaceWithName = function(txt, with_item) { + var words = txt.match(/(^|\s)\^([^\s]+)/); + var replace = words[2]; + + var original = txt.replace("^" + replace, with_item.name); + this.textarea.val(original); + + this.mentions.push(with_item); + + this.applyText(original); + } + + NewPost.prototype.applyText = function (text) { + var words = text.match(/(^|\s)\^([^\s]+)/); + this.suggestions.html(""); + + if(words) { + var name = words[2]; + for (var key in this.entities.length) { + var item = this.entities[key]; + if(item.name.toLowerCase().indexOf(name.toLowerCase()) != -1 || item.entity.toLowerCase().indexOf(name.toLowerCase()) != -1) { + var li = $("
    • " + item.name + " " + item.entity + "
    • ") + li.get(0).item = item; + this.suggestions.append(li) + } + } + } + + // parse the text: + // replace all the line braks by
      , and all the double spaces by the html version   + text = this.replaceAll(text,'\n','
      '); + text = this.replaceAll(text,' ','  '); + + // replace the words by a highlighted version of the words + + var remove = []; + + for (var i=0;i' + name + ''); + } else { + remove.push(this.mentions[i]); + } + } + + for (var i = 0; i < remove.length; i++) { + this.mentions.splice(this.mentions.indexOf(remove[i]), 1); + } + + // re-inject the processed text into the div + this.highlighter.html(text); + + var count = 256 - this.textarea.val().length + (this.mentions.length * 6); + this.counter.html(count) + + return true; + } + + NewPost.prototype.send = function() { + debug("Send not implemented yet"); + $("textarea").focus(); + } + + + return NewPost; +}) \ No newline at end of file diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index f020b5e..1adf8a9 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -14,7 +14,7 @@ function(HostApp, APICalls, Hmac) { "url": "http://jabs.nu/bungloo/", "description": "A desktop Tent client.", "redirect_uri": "bungloo://oauthtoken", - "post_types": { + "types": { "read": [ "https://tent.io/types/meta/v0", "https://tent.io/types/relationship/v0", @@ -87,12 +87,12 @@ function(HostApp, APICalls, Hmac) { Oauth.prototype.register = function (url) { var those = this; - debug(url) + APICalls.get(url, { no_auth: true, callback: function(resp) { - those.profile = JSON.parse(resp.responseText); + those.profile = JSON.parse(resp.responseText).post; those.entity = those.profile.content.entity; HostApp.setStringForKey(those.entity, "entity") HostApp.setServerUrls(those.profile.content.servers[0].urls); @@ -101,19 +101,19 @@ function(HostApp, APICalls, Hmac) { content_type: "https://tent.io/types/app/v0#", no_auth: true, callback: function(resp) { + var app_id = JSON.parse(resp.responseText).post.id; + var header_string = resp.getAllResponseHeaders(); + var regexp = /https:\/\/tent.io\/rels\/credentials/i + var url = APICalls.parseHeaderForLink(header_string, regexp); - var app_id = JSON.parse(resp.responseText).id; - var header_string = resp.getAllResponseHeaders(); - var regexp = /https:\/\/tent.io\/rels\/credentials/i - var url = APICalls.parseHeaderForLink(header_string, regexp); - - APICalls.get(url, { - content_type: "https://tent.io/types/app/v0#", - no_auth: true, - callback: function(resp) { - var data = JSON.parse(resp.responseText); - those.authRequest(data, app_id); - }}); + APICalls.get(url, { + content_type: "https://tent.io/types/app/v0#", + no_auth: true, + callback: function(resp) { + var data = JSON.parse(resp.responseText); + those.authRequest(data.post, app_id); + } + }); }}); }}); @@ -150,8 +150,7 @@ function(HostApp, APICalls, Hmac) { url, "POST", HostApp.stringForKey("app_hawk_id"), - HostApp.stringForKey("app_hawk_key"), - requestBody + HostApp.stringForKey("app_hawk_key") ); APICalls.post(url, requestBody, { diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 6058784..94dcb7a 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -24,7 +24,7 @@ function(HostApp, Core, APICalls, URI) { this.hide(); var _this = this; - setTimeout(function() { _this.showProfileForEntity() }, 5000); // Load users profile on start + setTimeout(function() { _this.showProfileForEntity() }, 500); // Load users profile on start } Profile.prototype = Object.create(Core.prototype); @@ -239,20 +239,14 @@ function(HostApp, Core, APICalls, URI) { this.profile = profile; } else { - APICalls.findProfileURL(this.entity, function(profile_url) { - - if (profile_url) { - - APICalls.http_call(profile_url, "GET", function(resp) { - - profile = JSON.parse(resp.responseText); - _this.showProfile(profile); - _this.profile = profile; - - }, null, false); // do not send auth-headers - } - }); - + var url = HostApp.serverUrl("posts_feed") + "?types=" + encodeURIComponent("https://tent.io/types/meta/v0") + "&entities=" + encodeURIComponent(this.entity) + debug(url) + APICalls.get(url, { + callback: function(resp) { + profile = JSON.parse(resp.responseText); + _this.showProfile(profile); + _this.profile = profile; + }}); } } @@ -278,6 +272,9 @@ function(HostApp, Core, APICalls, URI) { Profile.prototype.showProfile = function(profile) { + debug(profile) + return + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; if (profile && basic) { diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 802ca7a..77ea169 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -212,7 +212,8 @@ function(jQuery, APICalls, URI, HostApp, Cache) { template.reply_to.onclick = function() { var mentions = []; - var status_mentions = status.mentions.slice(0); + var status_mentions = []; + if(status.mentions) status_mentions = status.mentions.slice(0); if (typeof status.__repost != "undefined") { status_mentions.push({entity:status.__repost.entity}); @@ -507,10 +508,13 @@ function(jQuery, APICalls, URI, HostApp, Cache) { var url = URI(HostApp.serverUrl("new_post")); - var http_method = "POST"; + var type = in_reply_to_status_id.length == 0 ? "https://tent.io/types/status/v0#" : "https://tent.io/types/status/v0#reply"; + debug(typeof in_reply_to_status_id) + debug(in_reply_to_status_id.length) + debug(type) var data = { - "type": in_reply_to_status_id ? "https://tent.io/types/status/v0#" : "https://tent.io/types/status/v0#reply", + "type": type, "published_at": parseInt(new Date().getTime(), 10), "permissions": { "public": !is_private @@ -521,7 +525,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { }; if (location) { - data["content"]["location"] = { "type": "Point", "coordinates": location } + //data["content"]["location"] = { "type": "Point", "coordinates": location } } var mentions = this.parseMentions(content, in_reply_to_status_id, in_reply_to_entity); @@ -1041,7 +1045,6 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } - return Core; }); \ No newline at end of file diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index 7e30518..f823148 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -7,7 +7,8 @@ var bungloo = { entityProfile: null, conversation: null, search: null, - cache: {} + cache: {}, + newpost: null }; requirejs.config({ @@ -33,6 +34,15 @@ function start(view, callback) { }); + } else if (view == "newpost") { + + require(["controller/NewPost"], function(NewPost) { + + bungloo.newpost = new NewPost(); + if(callback) callback(); + + }); + } else { @@ -55,6 +65,19 @@ function start(view, callback) { bungloo.sidebar.showContentForTimeline(); + bungloo.cache.entities = { + "https://jeena.net" : { + name: "Jeena", + entity: "https://jeena.net", + avatar: "https://jeena.net/avatar.png" + }, + "https://ck.kennt-wayne.de": { + name: "Christian", + entity: "http://ck.kennt-wayne.de", + avatar: "http://ck.kennt-wayne.de/pavatar.png" + } + }; + }); } From 3fff224924e8e5c834d843a328d0f056f00b618c Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 9 Jul 2013 19:41:44 +0200 Subject: [PATCH 078/127] fixed content-type for oauth --- WebKit/scripts/controller/Oauth.js | 6 ++---- WebKit/scripts/controller/Profile.js | 4 ++-- WebKit/scripts/helper/APICalls.js | 7 ++++++- WebKit/scripts/helper/Paths.js | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 1adf8a9..f556117 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -142,7 +142,7 @@ function(HostApp, APICalls, Hmac) { var requestBody = JSON.stringify({ 'code' : urlVars["code"], - 'token_type' : "https://tent.io/oauth/hawk-token" + 'token_type': "https://tent.io/oauth/hawk-token" }); var those = this; @@ -154,7 +154,7 @@ function(HostApp, APICalls, Hmac) { ); APICalls.post(url, requestBody, { - content_type: "https://tent.io/types/app/v0#", + content_type: "application/json", auth_header: auth_header, callback: function(resp) { those.requestAccessTokenTicketFinished(resp.responseText); @@ -170,7 +170,6 @@ function(HostApp, APICalls, Hmac) { Oauth.prototype.requestAccessTokenTicketFinished = function(responseBody) { var access = JSON.parse(responseBody); - debug(access) HostApp.setStringForKey(access["access_token"], "user_access_token"); HostApp.setSecret(access["hawk_key"]); @@ -178,7 +177,6 @@ function(HostApp, APICalls, Hmac) { HostApp.setStringForKey(access["token_type"], "user_token_type"); HostApp.loggedIn(); - debug("loggedIn") } Oauth.prototype.logout = function() { diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 94dcb7a..d57b605 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -240,7 +240,7 @@ function(HostApp, Core, APICalls, URI) { } else { var url = HostApp.serverUrl("posts_feed") + "?types=" + encodeURIComponent("https://tent.io/types/meta/v0") + "&entities=" + encodeURIComponent(this.entity) - debug(url) + APICalls.get(url, { callback: function(resp) { profile = JSON.parse(resp.responseText); @@ -272,7 +272,7 @@ function(HostApp, Core, APICalls, URI) { Profile.prototype.showProfile = function(profile) { - debug(profile) + //debug(profile) return var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js index dd942de..64341b1 100644 --- a/WebKit/scripts/helper/APICalls.js +++ b/WebKit/scripts/helper/APICalls.js @@ -36,7 +36,12 @@ function(jQuery, HostApp, Hmac, Cache) { console.error("No content type for " + options.url); return; } else { - content_type = "application/vnd.tent.post.v0+json; type=\"" + options.content_type + "\""; + if(options.content_type != "application/json") { + content_type = "application/vnd.tent.post.v0+json; type=\"" + options.content_type + "\""; + } else { + content_type = options.content_type; + } + } var settings = { diff --git a/WebKit/scripts/helper/Paths.js b/WebKit/scripts/helper/Paths.js index f6a703f..af1fb75 100644 --- a/WebKit/scripts/helper/Paths.js +++ b/WebKit/scripts/helper/Paths.js @@ -65,7 +65,7 @@ function(jQuery, HostApp, Hmac, Cache) { console.error("getURL (" + xhr.status + ")" + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); } } - debug(url) + jQuery.ajax(options); } From 16d7016e29a77562316d0f484e13a49f475680d0 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 17 Jul 2013 00:44:47 +0200 Subject: [PATCH 079/127] fixing problems with new post --- Qt/Bungloo.py | 9 +- Qt/Windows.py | 15 +- WebKit/scripts/controller/NewPost.js | 133 ++- WebKit/scripts/controller/Oauth.js | 3 +- WebKit/scripts/controller/Profile.js | 1235 +++++++++++++------------ WebKit/scripts/controller/Timeline.js | 16 +- WebKit/scripts/helper/APICalls.js | 39 +- WebKit/scripts/helper/Core.js | 199 +--- WebKit/scripts/helper/HostApp.js | 7 +- WebKit/scripts/main.js | 2 +- 10 files changed, 851 insertions(+), 807 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index e5eaf3e..a8ca0be 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -171,13 +171,12 @@ class Controller(QtCore.QObject): pass @QtCore.pyqtSlot(str) - def openNewMessageWidow(self, is_private=False, string=""): - string = str(string) - self.openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(None, None, string, is_private) + def openNewMessageWidow(self): + self.openNewMessageWindowInReplyTostatus(None) @QtCore.pyqtSlot(str, str, str, bool) - def openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(self, entity, status_id, string, is_private): - new_message_window = Windows.NewPost(self.app, string, "[]", is_private) + def openNewMessageWindowInReplyTostatus(self, status_string): + new_message_window = Windows.NewPost(self.app) new_message_window.show() new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.app.new_message_windows.append(new_message_window) diff --git a/Qt/Windows.py b/Qt/Windows.py index 7317f56..fb7d332 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -329,11 +329,12 @@ class FindEntity(QtGui.QDialog): class NewPost(Helper.RestorableWindow): - def __init__(self, app, string, mentions, is_private): + def __init__(self, app, string=None, mentions="[]", is_private=False, post_id=None): self.app = app self.string = string self.mentions = mentions self.is_private = is_private + self.post_id = post_id Helper.RestorableWindow.__init__(self, "newpost", self.app) self.activateWindow() @@ -414,7 +415,11 @@ class NewPost(Helper.RestorableWindow): if self.is_private: is_private = "true" - callback = "function() { bungloo.newpost.setString('%s'); bungloo.newpost.setIsPrivate(%s); bungloo.newpost.setMentions(%s);}" % (self.string, is_private, self.mentions) + post_id = "" + if self.post_id: + post_id = self.post_id + + callback = "function() { bungloo.newpost.setString('%s'); bungloo.newpost.setIsPrivate(%s); bungloo.newpost.setMentions(%s); bungloo.newPostAction.setPostId(%s); }" % (self.string, is_private, self.mentions, post_id) script = "function HostAppGo() { start('newpost', " + callback + "); }" self.webView.page().mainFrame().evaluateJavaScript(script) @@ -425,6 +430,11 @@ class NewPost(Helper.RestorableWindow): self.webView.page().mainFrame().evaluateJavaScript(script) def sendMessage(self): + script = "bungloo.newpost.send()" + self.webView.page().mainFrame().evaluateJavaScript(script) + self.close() + + """ count = len(self.textInput.toPlainText()) if count > 0 and count <= 256: message = Helper.PostModel() @@ -438,6 +448,7 @@ class NewPost(Helper.RestorableWindow): self.close() else: QtGui.qApp.beep() + """ def openFileDialog(self): fileNamePath = QtGui.QFileDialog.getOpenFileName(self, "Choose a image", "", "Images (*.png *.gif *.jpg *.jpeg)") diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 113c58c..e37fcce 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -29,7 +29,7 @@ function() { this.counter = $("256"); var buttons = $( "

      " + - "" + + //"" + "" + "" + "

      "); @@ -50,6 +50,12 @@ function() { this.textarea.focus() } + NewPost.prototype.setStatus = function(status_string) { + this.status = JSON.parse(status_string); + debug(this.status) + // FIXME set string, private, mentions, etc. + }; + NewPost.prototype.setString = function(string) { this.textarea.val(string); } @@ -190,8 +196,133 @@ function() { NewPost.prototype.send = function() { debug("Send not implemented yet"); $("textarea").focus(); + var count = 256 - this.textarea.val().length + (this.mentions.length * 6); + if(count >= 0) { + this.sentNewMessage(); + } else { + debug("BEEP"); + } } + NewPost.prototype.sendNewMessage = function() { + + var content = this.textarea.val(); + + var url = URI(HostApp.serverUrl("new_post")); + + var type = in_reply_to_status_id.length == 0 ? "https://tent.io/types/status/v0#" : "https://tent.io/types/status/v0#reply"; + + var data = { + "type": type, + "published_at": parseInt(new Date().getTime(), 10), + "permissions": { + "public": !is_private + }, + "content": { + "text": content, + }, + }; + + if (location) { + //data["content"]["location"] = { "type": "Point", "coordinates": location } + } + + var mentions = this.parseMentions(content, in_reply_to_status_id, in_reply_to_entity); + + if (mentions.length > 0) { + data["mentions"] = mentions; + if (is_private) { + var entities = {}; + for (var i = 0; i < mentions.length; i++) { + var entity = mentions[i]["entity"] + entities[entity] = true; + }; + + data["permissions"]["entities"] = entities; + } + } + + // APICalls.http_call(url.toString(), http_method, callback, JSON.stringify(data)); + APICalls.post(url.toString(), JSON.stringify(data), { + content_type: data.type, + callback: callback + }); + } +/* + NewPost.prototype.sendNewMessageWithImage = function(content, in_reply_to_status_id, in_reply_to_entity, location, image_data_uri, is_private, callback) { + + var url = URI(APICalls.mkApiRootPath("/posts")); + + var data = { + "type": "https://tent.io/types/post/photo/v0.1.0", + "published_at": parseInt(new Date().getTime() / 1000, 10), + "permissions": { + "public": !is_private + }, + "content": { + "caption": content, + }, + }; + + if (location) { + data["content"]["location"] = { "type": "Point", "coordinates": location } + } + + var mentions = this.parseMentions(content, in_reply_to_status_id, in_reply_to_entity); + if (mentions.length > 0) { + data["mentions"] = mentions; + if (is_private) { + var entities = {}; + for (var i = 0; i < mentions.length; i++) { + var entity = mentions[i]["entity"] + entities[entity] = true; + }; + + data["permissions"]["entities"] = entities; + } + } + + var data_string = JSON.stringify(data); + + var boundary = "TentAttachment----------TentAttachment"; + var post = "--" + boundary + "\r\n"; + + post += 'Content-Disposition: form-data; name="post"; filename="post.json"\r\n'; + post += 'Content-Length: ' + data_string.length + '\r\n'; + post += 'Content-Type: application/vnd.tent.v0+json\r\n'; + post += 'Content-Transfer-Encoding: binary\r\n\r\n'; + post += data_string; + + post += "\r\n--" + boundary + "\r\n"; + + var blob_string = image_data_uri.split(',')[1]; + var mime_type = image_data_uri.split(',')[0].split(':')[1].split(';')[0]; + var ext = "png"; + if (mime_type == "image/jpeg") { + ext = "jpeg"; + } else if (mime_type == "image/gif") { + ext = "gif"; + } + + + post += 'Content-Disposition: form-data; name="photos[0]"; filename="photo.' + ext + '"\r\n'; + post += 'Content-Length: ' + blob_string.length + "\r\n"; + post += 'Content-Type: ' + mime_type + "\r\n"; + post += 'Content-Transfer-Encoding: base64\r\n\r\n'; + post += blob_string; + post += "\r\n--" + boundary + "--\r\n"; + + var newCallback = function(resp) { + if (resp.status == 403) { + var err = JSON.parse(resp.responseText); + HostApp.alertTitleWithMessage(resp.statusText, err.error); + } + callback(resp); + } + + APICalls.postMultipart(url.toString(), newCallback, post, boundary); + } +*/ return NewPost; }) \ No newline at end of file diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index f556117..69e1b41 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -96,7 +96,6 @@ function(HostApp, APICalls, Hmac) { those.entity = those.profile.content.entity; HostApp.setStringForKey(those.entity, "entity") HostApp.setServerUrls(those.profile.content.servers[0].urls); - APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(those.app_info), { content_type: "https://tent.io/types/app/v0#", no_auth: true, @@ -112,7 +111,7 @@ function(HostApp, APICalls, Hmac) { callback: function(resp) { var data = JSON.parse(resp.responseText); those.authRequest(data.post, app_id); - } + } }); }}); diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index d57b605..febc78c 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -1,664 +1,703 @@ define([ - "helper/HostApp", - "helper/Core", - "helper/APICalls", - "lib/URI" + "helper/HostApp", + "helper/Core", + "helper/APICalls", + "lib/URI" ], function(HostApp, Core, APICalls, URI) { - function Profile() { - - Core.call(this); - - this.action = "profile"; - - this.posts_limit = 25; - - this.container = document.createElement("div"); - this.container.className = this.action; - document.getElementById("content").appendChild(this.container); - - this.initProfileTemplate(); - this.hide(); + function Profile() { + + Core.call(this); + + this.action = "profile"; + + this.posts_limit = 25; + + this.container = document.createElement("div"); + this.container.className = this.action; + document.getElementById("content").appendChild(this.container); + + this.initProfileTemplate(); + this.hide(); - var _this = this; - setTimeout(function() { _this.showProfileForEntity() }, 500); // Load users profile on start - } + var _this = this; + setTimeout(function() { _this.showProfileForEntity() }, 500); // Load users profile on start + } - Profile.prototype = Object.create(Core.prototype); - - - Profile.prototype.show = function() { - Core.prototype.show.call(this, this.container); - } - - Profile.prototype.hide = function() { - Core.prototype.hide.call(this, this.container); - } - - Profile.prototype.logout = function() { - this.container = ""; - } - - Profile.prototype.showList = function(list) { - $(this.body).hide(); - $(this.followingsBody).hide(); - $(this.followersBody).hide(); - $(list).show(); - }; - - Profile.prototype.showProfileForEntity = function(entity) { - - if (!entity) { - entity = HostApp.stringForKey("entity"); - }; - - this.clear(); - this.entity = entity; - this.following = null; - this.following_id = null; - this.profile_template.entity.innerHTML = this.entity; - this.profile_template.entity.href = this.entity; - - this.getProfile(); - this.getFollowing(); - } - - Profile.prototype.initProfileTemplate = function() { - - var _this = this; - - var header = document.createElement("header"); - header.className = "profile"; - - this.container.appendChild(header); - - this.profile_template = { - avatar: document.createElement("img"), - name: document.createElement("h1"), - entity: document.createElement("a"), - bio: document.createElement("p"), - relationships: document.createElement("td"), - posts: document.createElement("a"), - following: document.createElement("a"), - followed: document.createElement("a"), - birthdate: document.createElement("td"), - location: document.createElement("td"), - gender: document.createElement("td"), - url: document.createElement("a"), - following_button: document.createElement("button"), - mention_button: document.createElement("button") - }; + Profile.prototype = Object.create(Core.prototype); + + + Profile.prototype.show = function() { + Core.prototype.show.call(this, this.container); + } + + Profile.prototype.hide = function() { + Core.prototype.hide.call(this, this.container); + } + + Profile.prototype.logout = function() { + this.container = ""; + } + + Profile.prototype.showList = function(list) { + $(this.body).hide(); + $(this.followingsBody).hide(); + $(this.followersBody).hide(); + $(list).show(); + }; + + Profile.prototype.showProfileForEntity = function(entity) { + + if (!entity) { + entity = HostApp.stringForKey("entity"); + }; + + this.clear(); + this.entity = entity; + this.following = null; + this.following_id = null; + this.profile_template.entity.innerHTML = this.entity; + this.profile_template.entity.href = this.entity; + + this.getProfile(); + this.getFollowing(); + } + + Profile.prototype.initProfileTemplate = function() { + + var _this = this; + + var header = document.createElement("header"); + header.className = "profile"; + + this.container.appendChild(header); + + this.profile_template = { + avatar: document.createElement("img"), + name: document.createElement("h1"), + entity: document.createElement("a"), + bio: document.createElement("p"), + relationships: document.createElement("td"), + posts: document.createElement("a"), + following: document.createElement("a"), + followed: document.createElement("a"), + birthdate: document.createElement("td"), + location: document.createElement("td"), + gender: document.createElement("td"), + url: document.createElement("a"), + following_button: document.createElement("button"), + mention_button: document.createElement("button") + }; - header.appendChild(this.profile_template.avatar); - this.profile_template.avatar.src = "img/default-avatar.png"; + header.appendChild(this.profile_template.avatar); + this.profile_template.avatar.src = "img/default-avatar.png"; - var div = document.createElement("div"); - header.appendChild(div); - - this.profile_template.following_button.onclick = function(e) { - _this.toggleFollow() - } - div.appendChild(this.profile_template.following_button); - - this.profile_template.mention_button.onclick = function() { - var e = _this.entity; - if (e.startsWith("https://")) { - e = e.substr(8, e.length); - } - HostApp.openNewMessageWidow(null, null, "^" + e + " ", false); - } - div.appendChild(this.profile_template.mention_button); - this.profile_template.mention_button.innerHTML = "Mention"; - - div.appendChild(this.profile_template.name); - - var p = document.createElement("p"); - p.appendChild(this.profile_template.entity); - div.appendChild(p); - - div.appendChild(this.profile_template.bio); - - var table = document.createElement("table"); - div.appendChild(table); - - function mkLi(name, template) { - var tr = document.createElement("tr"); - var th = document.createElement("th"); - tr.style.display = "none"; - th.innerText = name + ": "; - tr.appendChild(th); - tr.appendChild(template); - table.appendChild(tr); - } - - mkLi("Birth date", this.profile_template.birthdate); - mkLi("Location", this.profile_template.location); - mkLi("Gender", this.profile_template.gender); - - var td = document.createElement("td"); - td.appendChild(this.profile_template.url); - mkLi("Homepage", td); - - mkLi("Relationships", this.profile_template.relationships); - - td = document.createElement("td"); - td.appendChild(this.profile_template.posts); - this.profile_template.posts.href = "#"; - this.profile_template.posts.onclick = function() { _this.showPosts(); return false; }; - mkLi("Posts", td); - - td = document.createElement("td"); - td.appendChild(this.profile_template.following); - this.profile_template.following.href = "#"; - this.profile_template.following.onclick = function() { _this.showFollowings(); return false; }; - mkLi("Following", td); - - td = document.createElement("td"); - td.appendChild(this.profile_template.followed); - this.profile_template.followed.href = "#"; - this.profile_template.followed.onclick = function() { _this.showFollowers(); return false; }; - mkLi("Followed by", td); - - - this.body = document.createElement("ol"); - this.body.className = this.action; - this.container.appendChild(this.body); - - this.followingsBody = document.createElement("ol"); - this.followingsBody.className = this.action + " followings"; - this.container.appendChild(this.followingsBody); - - this.followersBody = document.createElement("ol"); - this.followersBody.className = this.action + " folloewds"; - this.container.appendChild(this.followersBody); - - } - - Profile.prototype.clear = function() { - - this.server = null; - this.before = {id: null, entity: null, loading: false}; - - - this.profile_template.avatar.src = "img/default-avatar.png"; - - this.relationships = { - following_you: false, - followed_by_you: false, - it_is_you: false - } - - this.profile_template.name.innerText = ""; - this.profile_template.entity.innerText = ""; - this.profile_template.bio.innerText = ""; - this.profile_template.relationships.innerText = ""; - this.profile_template.posts.innerText = ""; - this.profile_template.following.innerText = ""; - this.profile_template.followed.innerText = ""; - this.profile_template.birthdate.innerText = ""; - this.profile_template.location.innerText = ""; - this.profile_template.gender.innerText = ""; - this.profile_template.url.innerText = ""; - this.profile_template.url.href = ""; - - this.profile_template.posts.parentNode.parentNode.style.display = "none"; - this.profile_template.following.parentNode.parentNode.style.display = "none"; - this.profile_template.followed.parentNode.parentNode.style.display = "none"; - this.profile_template.birthdate.parentNode.style.display = "none"; - this.profile_template.location.parentNode.style.display = "none"; - this.profile_template.gender.parentNode.style.display = "none"; - this.profile_template.url.parentNode.parentNode.style.display = "none"; - - this.profile_template.following_button.style.display = ""; - this.setFollowingButton(false); - - this.body.innerHTML = ""; - this.followingsBody.innerHTML = ""; - this.followersBody.innerHTML = ""; - - this.showList(this.body); - }; - - Profile.prototype.getProfile = function() { - - var _this = this; - - if (HostApp.stringForKey("entity") == this.entity) { - this.relationships.it_is_you = true; - this.profile_template.following_button.style.display = "none"; - } - - var profile = this.cache.profiles.getItem(this.entity); - - if (profile && profile != "null") { - - this.showProfile(profile); - this.profile = profile; - - } else { - var url = HostApp.serverUrl("posts_feed") + "?types=" + encodeURIComponent("https://tent.io/types/meta/v0") + "&entities=" + encodeURIComponent(this.entity) - - APICalls.get(url, { - callback: function(resp) { - profile = JSON.parse(resp.responseText); - _this.showProfile(profile); - _this.profile = profile; - }}); - } - } - - Profile.prototype.getFollowing = function() { - if(this.entity != HostApp.stringForKey("entity")) { - var url = APICalls.mkApiRootPath("/followings") + "/" + encodeURIComponent(this.entity); - var _this = this; - APICalls.http_call(url, "GET", function(resp) { - if (resp.status >= 200 && resp.status < 400) { - var following = JSON.parse(resp.responseText); - _this.following_id = following.id - _this.setFollowingButton(true); - } else { - _this.setFollowingButton(false); - _this.following_id = null; - } - }) - } else { - this.setFollowingButton(false); - this.following_id = null; - } - } - - Profile.prototype.showProfile = function(profile) { - - //debug(profile) - return - - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - - if (profile && basic) { - - if(basic.avatar_url) { - this.profile_template.avatar.onerror = function() { this.profile_template.avatar.src = 'img/default-avatar.png' }; - this.profile_template.avatar.src = basic.avatar_url; - } - - this.populate(this.profile_template.name, basic.name); - this.populate(this.profile_template.birthdate, basic.birthdate); - this.populate(this.profile_template.location, basic.location); - this.populate(this.profile_template.gender, basic.gender); - this.populate(this.profile_template.bio, basic.bio); - - if(basic.website_url) { - - var url = basic.website_url; - this.profile_template.url.innerText = url; - this.profile_template.url.parentNode.parentNode.style.display = ""; - - if (!url.startsWith("http")) { - url = "http://" + url; - } - - this.profile_template.url.href = url; - } - } - - if (profile) { - this.server = profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0]; - this.getMeta(this.server); - this.getStatuses(this.server); - } - } - - Profile.prototype.populate = function(t, v) { - if (v) { - t.innerText = v; - t.parentNode.style.display = ""; - t.parentNode.parentNode.style.display = ""; - } - } + var div = document.createElement("div"); + header.appendChild(div); + + this.profile_template.following_button.onclick = function(e) { + _this.toggleFollow() + } + div.appendChild(this.profile_template.following_button); + + this.profile_template.mention_button.onclick = function() { + var e = _this.entity; + if (e.startsWith("https://")) { + e = e.substr(8, e.length); + } + HostApp.openNewMessageWidow(null, null, "^" + e + " ", false); + } + div.appendChild(this.profile_template.mention_button); + this.profile_template.mention_button.innerHTML = "Mention"; + + div.appendChild(this.profile_template.name); + + var p = document.createElement("p"); + p.appendChild(this.profile_template.entity); + div.appendChild(p); + + div.appendChild(this.profile_template.bio); + + var table = document.createElement("table"); + div.appendChild(table); + + function mkLi(name, template) { + var tr = document.createElement("tr"); + var th = document.createElement("th"); + tr.style.display = "none"; + th.innerText = name + ": "; + tr.appendChild(th); + tr.appendChild(template); + table.appendChild(tr); + } + + mkLi("Birth date", this.profile_template.birthdate); + mkLi("Location", this.profile_template.location); + mkLi("Gender", this.profile_template.gender); + + var td = document.createElement("td"); + td.appendChild(this.profile_template.url); + mkLi("Homepage", td); + + mkLi("Relationships", this.profile_template.relationships); + + td = document.createElement("td"); + td.appendChild(this.profile_template.posts); + this.profile_template.posts.href = "#"; + this.profile_template.posts.onclick = function() { _this.showPosts(); return false; }; + mkLi("Posts", td); + + td = document.createElement("td"); + td.appendChild(this.profile_template.following); + this.profile_template.following.href = "#"; + this.profile_template.following.onclick = function() { _this.showFollowings(); return false; }; + mkLi("Following", td); + + td = document.createElement("td"); + td.appendChild(this.profile_template.followed); + this.profile_template.followed.href = "#"; + this.profile_template.followed.onclick = function() { _this.showFollowers(); return false; }; + mkLi("Followed by", td); + + + this.body = document.createElement("ol"); + this.body.className = this.action; + this.container.appendChild(this.body); + + this.followingsBody = document.createElement("ol"); + this.followingsBody.className = this.action + " followings"; + this.container.appendChild(this.followingsBody); + + this.followersBody = document.createElement("ol"); + this.followersBody.className = this.action + " folloewds"; + this.container.appendChild(this.followersBody); + + } + + Profile.prototype.clear = function() { + + this.server = null; + this.before = {id: null, entity: null, loading: false}; + + + this.profile_template.avatar.src = "img/default-avatar.png"; + + this.relationships = { + following_you: false, + followed_by_you: false, + it_is_you: false + } + + this.profile_template.name.innerText = ""; + this.profile_template.entity.innerText = ""; + this.profile_template.bio.innerText = ""; + this.profile_template.relationships.innerText = ""; + this.profile_template.posts.innerText = ""; + this.profile_template.following.innerText = ""; + this.profile_template.followed.innerText = ""; + this.profile_template.birthdate.innerText = ""; + this.profile_template.location.innerText = ""; + this.profile_template.gender.innerText = ""; + this.profile_template.url.innerText = ""; + this.profile_template.url.href = ""; + + this.profile_template.posts.parentNode.parentNode.style.display = "none"; + this.profile_template.following.parentNode.parentNode.style.display = "none"; + this.profile_template.followed.parentNode.parentNode.style.display = "none"; + this.profile_template.birthdate.parentNode.style.display = "none"; + this.profile_template.location.parentNode.style.display = "none"; + this.profile_template.gender.parentNode.style.display = "none"; + this.profile_template.url.parentNode.parentNode.style.display = "none"; + + this.profile_template.following_button.style.display = ""; + this.setFollowingButton(false); + + this.body.innerHTML = ""; + this.followingsBody.innerHTML = ""; + this.followersBody.innerHTML = ""; + + this.showList(this.body); + }; + + Profile.prototype.getProfile = function() { + + var _this = this; + + if (HostApp.stringForKey("entity") == this.entity) { + this.relationships.it_is_you = true; + this.profile_template.following_button.style.display = "none"; + } + + var url = HostApp.serverUrl("posts_feed") + "?types=" + encodeURIComponent("https://tent.io/types/meta/v0") + "&entities=" + encodeURIComponent(this.entity) + //var url = HostApp.serverUrl("discover").replace(/{entity}/, encodeURIComponent(this.entity)); + APICalls.get(url, { + callback: function(resp) { + var profile = JSON.parse(resp.responseText); + _this.showProfile(profile); + _this.profile = profile; + }}); + } + + Profile.prototype.getFollowing = function() { + if(this.entity != HostApp.stringForKey("entity")) { + + var url = HostApp.serverUrl("posts_feed") + "?mentions=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/subscription/v0#https://tent.io/types/status/v0"); + var _this = this; + + APICalls.head(url, {callback: function(resp) { + + var count = APICalls.getCount(resp); + + if (count > 0) { + _this.setFollowingButton(true); + } else { + _this.setFollowingButton(false); + } - Profile.prototype.getMeta = function(root_url) { + }}); - var _this = this; - APICalls.http_call(URI(root_url + "/followings/count").toString(), "GET", function(resp) { + } else { - _this.populate(_this.profile_template.following, resp.responseText); - }, null, false); + this.setFollowingButton(false); + this.following_id = null; + } + } - APICalls.http_call(URI(root_url + "/followers/count").toString(), "GET", function(resp) { + Profile.prototype.showProfile = function(profiles) { - _this.populate(_this.profile_template.followed, resp.responseText); - }, null, false); + if(profiles.posts.length < 1) return; + var profile = profiles.posts[0]; + var basic = profile.content.profile; - if (this.entity != HostApp.stringForKey("entity")) { - APICalls.http_call(URI(root_url + "/followers/" + encodeURIComponent(HostApp.stringForKey("entity"))).toString(), "GET", function(resp) { - if (resp.status == 200) { - _this.relationships.following_you = true; - } - _this.setRelationships(); + if (profile && basic) { - }, null, false); + // Find and apply avatar + if(profile.attachments.length > 0) { - APICalls.http_call(URI(APICalls.mkApiRootPath("/followings/" + encodeURIComponent(this.entity))), "GET", function(resp) { - if (resp.status == 200) { - _this.relationships.followed_by_you = true; - } - _this.setRelationships(); - }); + var digest = null; + for (var i = 0; i < profile.attachments.length; i++) { + var attachment = profile.attachments[i]; + if(attachment.category == "avatar") { + digest = attachment.digest; + break; + } + } + + if(digest) { + var _this = this; + this.profile_template.avatar.onerror = function() { _this.profile_template.avatar.src = 'img/default-avatar.png' }; + var avatar_url = profile.content.servers[0].urls.attachment.replace(/\{entity\}/, encodeURIComponent(profile.entity)); + this.profile_template.avatar.src = avatar_url.replace(/\{digest\}/, digest); + } + } + + this.populate(this.profile_template.name, basic.name); + this.populate(this.profile_template.birthdate, basic.birthdate); + this.populate(this.profile_template.location, basic.location); + this.populate(this.profile_template.gender, basic.gender); + this.populate(this.profile_template.bio, basic.bio); + + if(basic.website) { + + var url = basic.website; + this.profile_template.url.innerText = url; + this.profile_template.url.parentNode.parentNode.style.display = ""; + + if (!url.startsWith("http")) { + url = "http://" + url; + } + + this.profile_template.url.href = url; + } + } - } else { - this.setRelationships(); - } + if (profile) { + this.profile = profile; + this.getMeta(this.profile); + //this.getStatuses(this.server); + } + } + + Profile.prototype.populate = function(t, v) { + if (v) { + t.innerText = v; + t.parentNode.style.display = ""; + t.parentNode.parentNode.style.display = ""; + } + } + + Profile.prototype.getMeta = function(profile) { - var url = URI(root_url + "/posts/count"); - var post_types = [ - "https://tent.io/types/post/repost/v0.1.0", - "https://tent.io/types/post/status/v0.1.0", - "https://tent.io/types/post/photo/v0.1.0" - ]; - url.addSearch("post_types", post_types.join(",")); + var _this = this; - APICalls.http_call(url.toString(), "GET", function(resp) { + var url = HostApp.serverUrl("posts_feed") + "?entities=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/relationship/v0#follower"); + APICalls.head(url, { + callback: function(resp) { + debug(APICalls.getCount(resp)) - _this.populate(_this.profile_template.posts, resp.responseText); - }, null, false); - } + _this.populate(_this.profile_template.followed, APICalls.getCount(resp)+" "); + } + }); - Profile.prototype.setRelationships = function() { - var relation = "none"; - if (this.relationships.it_is_you) { - relation = "it's you"; - } else { - if (this.relationships.following_you && !this.relationships.followed_by_you) { - relation = "is following you"; - } else if (this.relationships.following_you && this.relationships.followed_by_you) { - relation = "you both follow each other"; - } else if (!this.relationships.following_you && this.relationships.followed_by_you) { - relation = "being followed by you"; - } - } - this.populate(this.profile_template.relationships, relation); - } + var url = HostApp.serverUrl("posts_feed") + "?entities=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/relationship/v0#following"); + APICalls.head(url, { + callback: function(resp) { + _this.populate(_this.profile_template.following, APICalls.getCount(resp) + " "); + } + }); + return; - Profile.prototype.getStatuses = function(root_url, add_search, append) { - var _this = this; - add_search = add_search || {}; - var url = URI(root_url + "/posts"); - url.addSearch("limit", this.posts_limit); - var post_types = [ - "https://tent.io/types/post/repost/v0.1.0", - "https://tent.io/types/post/status/v0.1.0", - "https://tent.io/types/post/photo/v0.1.0" - ]; - url.addSearch("post_types", post_types.join(",")); - for(var key in add_search) { - url.addSearch(key, add_search[key]); - } - APICalls.http_call(url.toString(), "GET", function(resp) { + if (this.entity != HostApp.stringForKey("entity")) { + APICalls.http_call(URI(root_url + "/followers/" + encodeURIComponent(HostApp.stringForKey("entity"))).toString(), "GET", function(resp) { + if (resp.status == 200) { + _this.relationships.following_you = true; + } + _this.setRelationships(); - var statuses = JSON.parse(resp.responseText); + }, null, false); - _this.newStatus(statuses, append); + APICalls.http_call(URI(APICalls.mkApiRootPath("/followings/" + encodeURIComponent(this.entity))), "GET", function(resp) { + if (resp.status == 200) { + _this.relationships.followed_by_you = true; + } + _this.setRelationships(); + }); - }, null, false); - } + } else { + this.setRelationships(); + } - Profile.prototype.newStatus = function(statuses, append) { + var url = URI(root_url + "/posts/count"); + var post_types = [ + "https://tent.io/types/post/repost/v0.1.0", + "https://tent.io/types/post/status/v0.1.0", + "https://tent.io/types/post/photo/v0.1.0" + ]; + url.addSearch("post_types", post_types.join(",")); - if(statuses != null && statuses.length > 0) { + APICalls.http_call(url.toString(), "GET", function(resp) { - this.before.loading = false; + _this.populate(_this.profile_template.posts, resp.responseText); + }, null, false); + } - if (append) statuses = statuses.reverse(); + Profile.prototype.setRelationships = function() { + var relation = "none"; + if (HostApp.stringForKey("entity") == this.entity) { + relation = "it's you"; + } else { + if (this.relationships.following_you && !this.relationships.followed_by_you) { + relation = "is following you"; + } else if (this.relationships.following_you && this.relationships.followed_by_you) { + relation = "you both follow each other"; + } else if (!this.relationships.following_you && this.relationships.followed_by_you) { + relation = "being followed by you"; + } + } + this.populate(this.profile_template.relationships, relation); + } - for(var i = statuses.length-1, c=0; i>=c; --i) { - var status = statuses[i]; + Profile.prototype.getStatuses = function(root_url, add_search, append) { + var _this = this; - if (status.type == "https://tent.io/types/post/status/v0.1.0" || status.type == "https://tent.io/types/post/photo/v0.1.0") { + add_search = add_search || {}; - var new_node = this.getStatusDOMElement(status); + var url = URI(root_url + "/posts"); + url.addSearch("limit", this.posts_limit); - if(!append && this.body.childNodes.length > 0) { + var post_types = [ + "https://tent.io/types/post/repost/v0.1.0", + "https://tent.io/types/post/status/v0.1.0", + "https://tent.io/types/post/photo/v0.1.0" + ]; + url.addSearch("post_types", post_types.join(",")); - if(this.body.childNodes.length > this.max_length) { + for(var key in add_search) { + url.addSearch(key, add_search[key]); + } - this.body.removeChild(this.body.lastChild); - } + APICalls.http_call(url.toString(), "GET", function(resp) { - this.body.insertBefore(new_node, this.body.firstChild); + var statuses = JSON.parse(resp.responseText); - } else { + _this.newStatus(statuses, append); - this.body.appendChild(new_node); - } + }, null, false); + } - } else if (status.type == "https://tent.io/types/post/delete/v0.1.0") { - var li = document.getElementById("post-" + status.content.id + "-" + this.action); - if (li) { - this.body.removeChild(li); - } - } else if (status.type == "https://tent.io/types/post/repost/v0.1.0") { + Profile.prototype.newStatus = function(statuses, append) { - this.getRepost(status, this.body.firstChild); - } + if(statuses != null && statuses.length > 0) { - } - } - } + this.before.loading = false; - Profile.prototype.getMoreStatusPosts = function() { - if (!this.before.loading) { - this.before.loading = true; - var add_search = { - "before_id": this.body.lastChild.status.id, - "before_id_entity": this.body.lastChild.status.entity - } - this.getStatuses(this.server, add_search, true); - } - } + if (append) statuses = statuses.reverse(); - Profile.prototype.mention = function() { + for(var i = statuses.length-1, c=0; i>=c; --i) { - } + var status = statuses[i]; - Profile.prototype.setFollowingButton = function(following) { + if (status.type == "https://tent.io/types/post/status/v0.1.0" || status.type == "https://tent.io/types/post/photo/v0.1.0") { - this.following = following; + var new_node = this.getStatusDOMElement(status); - if (following) { - this.profile_template.following_button.className = "following"; - this.profile_template.following_button.innerText = "Unfollow"; - } else { - this.profile_template.following_button.className = ""; - this.profile_template.following_button.innerText = "Follow"; - } - } + if(!append && this.body.childNodes.length > 0) { - Profile.prototype.toggleFollow = function() { + if(this.body.childNodes.length > this.max_length) { - var _this = this; + this.body.removeChild(this.body.lastChild); + } - if (this.following_id) { + this.body.insertBefore(new_node, this.body.firstChild); - this.setFollowingButton(false); - var url = APICalls.mkApiRootPath("/followings/") + this.following_id; - APICalls.http_call(url, "DELETE", function(resp) { - if (resp.status >= 200 && resp.status < 300) { - _this.setFollowingButton(false); - _this.following_id = null; - } else { - _this.setFollowingButton(true); - } - }); + } else { - } else { + this.body.appendChild(new_node); + } - this.setFollowingButton(true); - var url = URI(APICalls.mkApiRootPath("/followings")); - var data = JSON.stringify({"entity": this.entity }); - - APICalls.http_call(url.toString(), "POST", function(resp) { - if (resp.status >= 200 && resp.status < 300) { - _this.following_id = JSON.parse(resp.responseText).id - _this.setFollowingButton(true); - } else { - _this.setFollowingButton(false); - } - }, data); - } - } - - Profile.prototype.showPosts = function() { - this.showList(this.body); - } - - Profile.prototype.showFollowings = function() { - - this.showList(this.followingsBody); - this.followingsBody.innerHTML = ""; - - var _this = this; - var callback = function(resp) { - var followings = JSON.parse(resp.responseText); - for (var i = 0; i < followings.length; i++) { - var li = _this.getDOMSmallProfile(followings[i]); - _this.followingsBody.appendChild(li); - } - } - - var url = URI(this.server + "/followings"); - url.addSearch("limit", 200); - APICalls.http_call(url.toString(), "GET", callback, null, false); - } - - Profile.prototype.showFollowers = function() { - - this.showList(this.followersBody); - this.followersBody.innerHTML = ""; - - var _this = this; - var callback = function(resp) { - var followers = JSON.parse(resp.responseText); - for (var i = 0; i < followers.length; i++) { - var li = _this.getDOMSmallProfile(followers[i]); - _this.followersBody.appendChild(li); - } - } - - var url = URI(this.server + "/followers"); - url.addSearch("limit", 200); - APICalls.http_call(url.toString(), "GET", callback, null, false); - } - - Profile.prototype.getDOMSmallProfile = function(profile) { - - var li = document.createElement("li"); - - var image = document.createElement("img"); - image.title = profile.entity; - image.className = "image"; - image.src = 'img/default-avatar.png'; - li.appendChild(image); - image.onclick = function(e) { - HostApp.showProfileForEntity(e.target.title); - return false; - } - - var div = document.createElement("div"); - div.className = "data" - - var h1 = document.createElement("h1"); - var username = document.createElement("a"); - username.title = profile.entity; - username.className = "name"; - username.href = profile.entity; - username.onclick = function(e) { - HostApp.showProfileForEntity(profile.entity); - return false; - } - - h1.appendChild(username) - div.appendChild(h1); - li.appendChild(div); - - var p = document.createElement("p"); - p.className = "message"; - - var entity_tag = document.createElement("a"); - entity_tag.innerText = profile.entity; - entity_tag.href = profile.entity; - entity_tag.title = profile.entity; - - var new_line = document.createElement("br"); - var follows_since = document.createTextNode("follows since "); - var follows_since_time = document.createElement("span"); - follows_since_time.innerText = this.ISODateString(new Date(profile.created_at * 1000)); - follows_since_time.title = follows_since_time.innerText; - follows_since_time.className = "timeago"; - jQuery(follows_since_time).timeago(); - - p.appendChild(entity_tag); - p.appendChild(new_line); - p.appendChild(follows_since); - p.appendChild(follows_since_time); - div.appendChild(p); - - var profile_callback = function(p) { - - var basic = p["https://tent.io/types/info/basic/v0.1.0"]; - - if (p && basic) { - if(basic.name) { - username.title = username.innerText; - username.innerText = basic.name; - } - if(basic.avatar_url) { - image.onerror = function() { image.src = 'img/default-avatar.png'; }; - image.src = basic.avatar_url; - } - } - - } - - var p = this.cache.profiles.getItem(profile.entity); - - if (p && p != "null") { - - profile_callback(p); - - } else { - - var _this = this; - APICalls.findProfileURL(profile.entity, function(profile_url) { - - if (profile_url) { - APICalls.http_call(profile_url, "GET", function(resp) { - var p = JSON.parse(resp.responseText); - if (p && p != "null") { - _this.cache.profiles.setItem(profile.entity, p); - profile_callback(p); - } - - }, null, false); // do not send auth-headers - } - }); - } - - return li; - } - - - return Profile; + } else if (status.type == "https://tent.io/types/post/delete/v0.1.0") { + + var li = document.getElementById("post-" + status.content.id + "-" + this.action); + if (li) { + this.body.removeChild(li); + } + } else if (status.type == "https://tent.io/types/post/repost/v0.1.0") { + + this.getRepost(status, this.body.firstChild); + } + + } + } + } + + Profile.prototype.getMoreStatusPosts = function() { + if (!this.before.loading) { + this.before.loading = true; + var add_search = { + "before_id": this.body.lastChild.status.id, + "before_id_entity": this.body.lastChild.status.entity + } + this.getStatuses(this.server, add_search, true); + } + } + + Profile.prototype.mention = function() { + + } + + Profile.prototype.setFollowingButton = function(following) { + + this.following = following; + + if (following) { + this.profile_template.following_button.className = "following"; + this.profile_template.following_button.innerText = "Unfollow"; + } else { + this.profile_template.following_button.className = ""; + this.profile_template.following_button.innerText = "Follow"; + } + } + + Profile.prototype.toggleFollow = function() { + + var _this = this; + + if (this.following_id) { + + this.setFollowingButton(false); + + /* + var url = APICalls.mkApiRootPath("/followings/") + this.following_id; + APICalls.http_call(url, "DELETE", function(resp) { + if (resp.status >= 200 && resp.status < 300) { + _this.setFollowingButton(false); + _this.following_id = null; + } else { + _this.setFollowingButton(true); + } + });*/ + + } else { + + this.setFollowingButton(true); + + var url = HostApp.serverUrl("new_post"); + + var data = JSON.stringify({ + type: "https://tent.io/types/subscription/v0#https://tent.io/types/status/v0", + mentions: [{ + entity: this.entity + }] + }); + + APICalls.post(url, data, { + content_type: "https://tent.io/types/subscription/v0", + callback: function(resp) { + debug(resp.status) + if (resp.status >= 200 && resp.status < 300) { + _this.setFollowingButton(true); + } else { + _this.setFollowingButton(false); + } + } + }); + } + } + + Profile.prototype.showPosts = function() { + this.showList(this.body); + } + + Profile.prototype.showFollowings = function() { + + this.showList(this.followingsBody); + this.followingsBody.innerHTML = ""; + + var _this = this; + var callback = function(resp) { + var followings = JSON.parse(resp.responseText); + for (var i = 0; i < followings.length; i++) { + var li = _this.getDOMSmallProfile(followings[i]); + _this.followingsBody.appendChild(li); + } + } + + var url = URI(this.server + "/followings"); + url.addSearch("limit", 200); + APICalls.http_call(url.toString(), "GET", callback, null, false); + } + + Profile.prototype.showFollowers = function() { + + this.showList(this.followersBody); + this.followersBody.innerHTML = ""; + + var _this = this; + var callback = function(resp) { + var followers = JSON.parse(resp.responseText); + for (var i = 0; i < followers.length; i++) { + var li = _this.getDOMSmallProfile(followers[i]); + _this.followersBody.appendChild(li); + } + } + + var url = URI(this.server + "/followers"); + url.addSearch("limit", 200); + APICalls.http_call(url.toString(), "GET", callback, null, false); + } + + Profile.prototype.getDOMSmallProfile = function(profile) { + + var li = document.createElement("li"); + + var image = document.createElement("img"); + image.title = profile.entity; + image.className = "image"; + image.src = 'img/default-avatar.png'; + li.appendChild(image); + image.onclick = function(e) { + HostApp.showProfileForEntity(e.target.title); + return false; + } + + var div = document.createElement("div"); + div.className = "data" + + var h1 = document.createElement("h1"); + var username = document.createElement("a"); + username.title = profile.entity; + username.className = "name"; + username.href = profile.entity; + username.onclick = function(e) { + HostApp.showProfileForEntity(profile.entity); + return false; + } + + h1.appendChild(username) + div.appendChild(h1); + li.appendChild(div); + + var p = document.createElement("p"); + p.className = "message"; + + var entity_tag = document.createElement("a"); + entity_tag.innerText = profile.entity; + entity_tag.href = profile.entity; + entity_tag.title = profile.entity; + + var new_line = document.createElement("br"); + var follows_since = document.createTextNode("follows since "); + var follows_since_time = document.createElement("span"); + follows_since_time.innerText = this.ISODateString(new Date(profile.created_at * 1000)); + follows_since_time.title = follows_since_time.innerText; + follows_since_time.className = "timeago"; + jQuery(follows_since_time).timeago(); + + p.appendChild(entity_tag); + p.appendChild(new_line); + p.appendChild(follows_since); + p.appendChild(follows_since_time); + div.appendChild(p); + + var profile_callback = function(p) { + + var basic = p["https://tent.io/types/info/basic/v0.1.0"]; + + if (p && basic) { + if(basic.name) { + username.title = username.innerText; + username.innerText = basic.name; + } + if(basic.avatar_url) { + image.onerror = function() { image.src = 'img/default-avatar.png'; }; + image.src = basic.avatar_url; + } + } + + } + + var p = this.cache.profiles.getItem(profile.entity); + + if (p && p != "null") { + + profile_callback(p); + + } else { + + var _this = this; + APICalls.findProfileURL(profile.entity, function(profile_url) { + + if (profile_url) { + APICalls.http_call(profile_url, "GET", function(resp) { + var p = JSON.parse(resp.responseText); + if (p && p != "null") { + _this.cache.profiles.setItem(profile.entity, p); + profile_callback(p); + } + + }, null, false); // do not send auth-headers + } + }); + } + + return li; + } + + + + + return Profile; }); diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 19030eb..c01f418 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -46,9 +46,13 @@ function(Core, APICalls, HostApp, URI) { } - Timeline.prototype.newStatus = function(statuses, append) { + Timeline.prototype.newStatus = function(_statuses, append) { - statuses = statuses.data; + for (var entity in _statuses.profiles) { + bungloo.cache.profiles[entity] = _statuses.profiles[entity]; + } + + statuses = _statuses.posts; if(statuses != null && statuses.length > 0) { this.before.loading = false; @@ -63,7 +67,7 @@ function(Core, APICalls, HostApp, URI) { this.since_id_entity = status.entity; } - if (status.type == "https://tent.io/types/status/v0#" || status.type == "https://tent.io/types/post/photo/v0.1.0") { + if (status.type == "https://tent.io/types/status/v0#") { var new_node = this.getStatusDOMElement(status); @@ -110,9 +114,11 @@ function(Core, APICalls, HostApp, URI) { "https://tent.io/types/delete/v0#", //"https://tent.io/types/post/photo/v0.1.0" ]; - //url.addSearch("types", post_types.join(",")); + url.addSearch("types", post_types.join(",")); //url.addSearch("sort_by", "published_at"); url.addSearch("limit", this.posts_limit); + url.addSearch("max_refs", 20); + url.addSearch("profiles", "entity"); if(this.since_id && !append) { url.addSearch("since_id", this.since_id); @@ -144,7 +150,7 @@ function(Core, APICalls, HostApp, URI) { if (!this.reload_blocked) { this.reload_blocked = true; - // APICalls.http_call(url.toString(), http_method, callback, data); // FIXME: error callback + APICalls.get(url.toString(), { callback: callback }); } } diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js index 64341b1..60a971b 100644 --- a/WebKit/scripts/helper/APICalls.js +++ b/WebKit/scripts/helper/APICalls.js @@ -36,10 +36,10 @@ function(jQuery, HostApp, Hmac, Cache) { console.error("No content type for " + options.url); return; } else { - if(options.content_type != "application/json") { - content_type = "application/vnd.tent.post.v0+json; type=\"" + options.content_type + "\""; + if(options.content_type == "application/json") { + content_type = "application/json"; } else { - content_type = options.content_type; + content_type = "application/vnd.tent.post.v0+json; type=\"" + options.content_type + "\""; } } @@ -64,6 +64,7 @@ function(jQuery, HostApp, Hmac, Cache) { } else if(!options.no_auth) { console.error("No user_access_token yet - " + options.url); } + xhr.setRequestHeader("Cache-Control", "no-cache"); }, url: options.url, contentType: content_type, @@ -72,13 +73,26 @@ function(jQuery, HostApp, Hmac, Cache) { data: options.data, processData: false, error: function(xhr, ajaxOptions, thrownError) { - console.error("HTTP CALL (" + xhr.status + ")" + xhr.statusText + " " + options.http_method + " (" + options.url + "): '" + xhr.responseText + "'"); + console.error("HTTP CALL (" + xhr.status + ") " + xhr.statusText + " " + options.http_method + " URL(" + options.url + "): '" + xhr.responseText + "'"); } }; jQuery.ajax(settings); } + APICalls.head = function(url, options) { + var settings = { + url: url, + http_method: "HEAD", + }; + + for (var key in options) { + settings[key] = options[key]; + } + + APICalls.http_call(settings); + } + APICalls.get = function(url, options) { var settings = { url: url, @@ -225,6 +239,23 @@ function(jQuery, HostApp, Hmac, Cache) { return APICalls.parseHeaderForLink(header_string, regexp); } + APICalls.parseHeader = function(header_string) { + var header_strings = header_string.split(/\n/); + var headers = {}; + for (var i = 0; i < header_strings.length; i++) { + var hs = header_strings[i].split(/:(.+)?/); + headers[hs[0]] = hs[1]; + } + return headers; + } + + APICalls.getCount = function(resp) { + var count = 0; + var headers = APICalls.parseHeader(resp.getAllResponseHeaders()); + if(headers["Count"]) count = parseInt(headers["Count"], 10); + return count; + } + APICalls.parseHeaderForLink = function(header_string, match) { var headers = header_string.split(/\n/); var links = []; diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 77ea169..b4bc318 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -69,6 +69,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { image.className = "image"; image.src = "img/default-avatar.png"; image.onmousedown = function(e) { e.preventDefault(); }; + image.onerror = function() { this.src = 'img/default-avatar.png' }; item.appendChild(image); var image_username = a.cloneNode(); @@ -224,7 +225,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { mentions.push(mention); } - _this.replyTo(status.entity, status.id, mentions, (status && status.permissions && !status.permissions.public)); + _this.replyTo(status); return false; } @@ -234,7 +235,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { return false; } - template.username.innerText = status.entity; + if(bungloo.cache.profiles[status.entity].name) template.username.innerText = bungloo.cache.profiles[status.entity].name; template.username.href = status.entity; template.username.title = status.entity; template.username.onclick = function() { @@ -242,47 +243,12 @@ function(jQuery, APICalls, URI, HostApp, Cache) { return false; } + if(bungloo.cache.profiles[status.entity].avatar_digest) { + template.image.src = HostApp.serverUrl("attachment").replace(/\{entity\}/, encodeURIComponent(status.entity)).replace(/\{digest\}/, bungloo.cache.profiles[status.entity].avatar_digest); + } + template.image.onclick = template.username.onclick; - var profile_callback = function(p) { - - var basic = p["https://tent.io/types/info/basic/v0.1.0"]; - - if (p && basic) { - if(basic.name) { - template.username.title = template.username.innerText; - template.username.innerText = basic.name; - } - if(basic.avatar_url) { - template.image.onerror = function() { template.image.src = 'img/default-avatar.png' }; - template.image.src = basic.avatar_url; - } - } - - } - - var p = this.cache.profiles.getItem(status.entity); - - if (p && p != "null") { - - profile_callback(p); - - } else { - - APICalls.findProfileURL(status.entity, function(profile_url) { - - if (profile_url) { - APICalls.http_call(profile_url, "GET", function(resp) { - var p = JSON.parse(resp.responseText); - if (p && p != "null") { - _this.cache.profiles.setItem(status.entity, p); - profile_callback(p); - } - - }, null, false); // do not send auth-headers - } - }); - } if (status && status.permissions && !status.permissions.public) { template.is_private.style.display = ''; @@ -389,9 +355,11 @@ function(jQuery, APICalls, URI, HostApp, Cache) { template.source.innerHTML = status.__repost.app.name; template.source.title = status.__repost.app.url; } else { - template.source.href = status.app.url; - template.source.innerHTML = status.app.name; - template.source.title = status.app.url; + if(status.app) { + template.source.href = status.app.url; + template.source.innerHTML = status.app.name; + template.source.title = status.app.url; + } } return template.item; @@ -498,60 +466,6 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } } - Core.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity, location, image_data_uri, is_private, callback) { - - if (image_data_uri) { - - this.sendNewMessageWithImage(content, in_reply_to_status_id, in_reply_to_entity, location, image_data_uri, is_private, callback); - - } else { - - var url = URI(HostApp.serverUrl("new_post")); - - var type = in_reply_to_status_id.length == 0 ? "https://tent.io/types/status/v0#" : "https://tent.io/types/status/v0#reply"; - debug(typeof in_reply_to_status_id) - debug(in_reply_to_status_id.length) - debug(type) - - var data = { - "type": type, - "published_at": parseInt(new Date().getTime(), 10), - "permissions": { - "public": !is_private - }, - "content": { - "text": content, - }, - }; - - if (location) { - //data["content"]["location"] = { "type": "Point", "coordinates": location } - } - - var mentions = this.parseMentions(content, in_reply_to_status_id, in_reply_to_entity); - - if (mentions.length > 0) { - data["mentions"] = mentions; - if (is_private) { - var entities = {}; - for (var i = 0; i < mentions.length; i++) { - var entity = mentions[i]["entity"] - entities[entity] = true; - }; - - data["permissions"]["entities"] = entities; - } - } - - // APICalls.http_call(url.toString(), http_method, callback, JSON.stringify(data)); - APICalls.post(url.toString(), JSON.stringify(data), { - content_type: data.type, - callback: callback - }); - } - } - - Core.prototype.repost = function(id, entity, callback) { var url = URI(APICalls.mkApiRootPath("/posts")); @@ -582,80 +496,6 @@ function(jQuery, APICalls, URI, HostApp, Cache) { APICalls.http_call(url.toString(), "POST", new_callback, JSON.stringify(data)); } - Core.prototype.sendNewMessageWithImage = function(content, in_reply_to_status_id, in_reply_to_entity, location, image_data_uri, is_private, callback) { - - var url = URI(APICalls.mkApiRootPath("/posts")); - - var data = { - "type": "https://tent.io/types/post/photo/v0.1.0", - "published_at": parseInt(new Date().getTime() / 1000, 10), - "permissions": { - "public": !is_private - }, - "content": { - "caption": content, - }, - }; - - if (location) { - data["content"]["location"] = { "type": "Point", "coordinates": location } - } - - var mentions = this.parseMentions(content, in_reply_to_status_id, in_reply_to_entity); - if (mentions.length > 0) { - data["mentions"] = mentions; - if (is_private) { - var entities = {}; - for (var i = 0; i < mentions.length; i++) { - var entity = mentions[i]["entity"] - entities[entity] = true; - }; - - data["permissions"]["entities"] = entities; - } - } - - var data_string = JSON.stringify(data); - - var boundary = "TentAttachment----------TentAttachment"; - var post = "--" + boundary + "\r\n"; - - post += 'Content-Disposition: form-data; name="post"; filename="post.json"\r\n'; - post += 'Content-Length: ' + data_string.length + '\r\n'; - post += 'Content-Type: application/vnd.tent.v0+json\r\n'; - post += 'Content-Transfer-Encoding: binary\r\n\r\n'; - post += data_string; - - post += "\r\n--" + boundary + "\r\n"; - - var blob_string = image_data_uri.split(',')[1]; - var mime_type = image_data_uri.split(',')[0].split(':')[1].split(';')[0]; - var ext = "png"; - if (mime_type == "image/jpeg") { - ext = "jpeg"; - } else if (mime_type == "image/gif") { - ext = "gif"; - } - - - post += 'Content-Disposition: form-data; name="photos[0]"; filename="photo.' + ext + '"\r\n'; - post += 'Content-Length: ' + blob_string.length + "\r\n"; - post += 'Content-Type: ' + mime_type + "\r\n"; - post += 'Content-Transfer-Encoding: base64\r\n\r\n'; - post += blob_string; - post += "\r\n--" + boundary + "--\r\n"; - - var newCallback = function(resp) { - if (resp.status == 403) { - var err = JSON.parse(resp.responseText); - HostApp.alertTitleWithMessage(resp.statusText, err.error); - } - callback(resp); - } - - APICalls.postMultipart(url.toString(), newCallback, post, boundary); - } - Core.prototype.remove = function(id, callback, type) { type = type || "post"; if (confirm("Really delete this " + type + "?")) { @@ -920,19 +760,8 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } } - Core.prototype.replyTo = function(entity, status_id, mentions, is_private) { - - var string = "^" + entity.replace("https://", "") + " "; - - var ms = ""; - for (var i = 0; i < mentions.length; i++) { - var e = mentions[i].entity.replace("https://", ""); - if(string.indexOf(e) == -1) ms += " ^" + e; - } - - if(ms.length > 0) string += "\n\n/cc" + ms; - - HostApp.openNewMessageWidow(entity, status_id, string, is_private); + Core.prototype.replyTo = function(status) { + HostApp.openNewMessageWidow(status); } Core.prototype.postDeleted = function(post_id, entity) { diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index ced766a..13992ad 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -85,13 +85,12 @@ define(function() { } } - HostApp.openNewMessageWidow = function(entity, status_id, string, is_private) { + HostApp.openNewMessageWidow = function(status) { if (OS_TYPE == "mac") { - controller.openNewMessageWindowInReplyTo_statusId_withString_isPrivate_(entity, status_id, string, is_private); + controller.openNewMessageWindowInReplyToStatus(JSON.stringify(status)); } else { - is_private = is_private == true - controller.openNewMessageWindowInReplyTostatusIdwithStringIsPrivate(entity, status_id, string, is_private); + controller.openNewMessageWindowInReplyTostatus(JSON.stringify(status)); } } diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index f823148..69511ef 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -7,7 +7,7 @@ var bungloo = { entityProfile: null, conversation: null, search: null, - cache: {}, + cache: { profiles: {}}, newpost: null }; From 771243a75f11c806d0358b3bfb72c275972ee67e Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 17 Jul 2013 03:01:43 +0200 Subject: [PATCH 080/127] fixed following/unfollowing --- WebKit/scripts/controller/Profile.js | 39 ++++++++++++++++----------- WebKit/scripts/controller/Timeline.js | 6 ++++- WebKit/scripts/helper/APICalls.js | 17 ++++++++++-- WebKit/scripts/helper/Core.js | 1 + 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index febc78c..bd42d8d 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -247,14 +247,17 @@ function(HostApp, Core, APICalls, URI) { var url = HostApp.serverUrl("posts_feed") + "?mentions=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/subscription/v0#https://tent.io/types/status/v0"); var _this = this; - APICalls.head(url, {callback: function(resp) { + APICalls.get(url, {callback: function(resp) { - var count = APICalls.getCount(resp); + var json = JSON.parse(resp.responseText); + var count = json.posts.length; if (count > 0) { _this.setFollowingButton(true); + _this.following_id = json.posts[0].id; } else { _this.setFollowingButton(false); + delete _this.following_id; } }}); @@ -331,13 +334,14 @@ function(HostApp, Core, APICalls, URI) { Profile.prototype.getMeta = function(profile) { + // FIXME! + return; + var _this = this; var url = HostApp.serverUrl("posts_feed") + "?entities=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/relationship/v0#follower"); APICalls.head(url, { callback: function(resp) { - debug(APICalls.getCount(resp)) - _this.populate(_this.profile_template.followed, APICalls.getCount(resp)+" "); } }); @@ -518,16 +522,15 @@ function(HostApp, Core, APICalls, URI) { this.setFollowingButton(false); - /* - var url = APICalls.mkApiRootPath("/followings/") + this.following_id; - APICalls.http_call(url, "DELETE", function(resp) { + var url = HostApp.serverUrl("post").replace(/\{entity\}/, encodeURIComponent(HostApp.stringForKey("entity"))).replace(/\{post\}/, this.following_id); + APICalls.delete(url, { callback: function(resp) { if (resp.status >= 200 && resp.status < 300) { _this.setFollowingButton(false); - _this.following_id = null; + delete _this.following_id; } else { _this.setFollowingButton(true); } - });*/ + }}); } else { @@ -535,19 +538,23 @@ function(HostApp, Core, APICalls, URI) { var url = HostApp.serverUrl("new_post"); - var data = JSON.stringify({ - type: "https://tent.io/types/subscription/v0#https://tent.io/types/status/v0", + var data = { + content: { + type: "https://tent.io/types/status/v0" + }, mentions: [{ entity: this.entity - }] - }); + }], + type: "https://tent.io/types/subscription/v0#https://tent.io/types/status/v0" + }; - APICalls.post(url, data, { - content_type: "https://tent.io/types/subscription/v0", + APICalls.post(url, JSON.stringify(data), { + content_type: data.type, callback: function(resp) { - debug(resp.status) if (resp.status >= 200 && resp.status < 300) { _this.setFollowingButton(true); + var json = JSON.parse(resp.responseText); + _this.following_id = json.post.id; } else { _this.setFollowingButton(false); } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index c01f418..c4716d7 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -49,7 +49,11 @@ function(Core, APICalls, HostApp, URI) { Timeline.prototype.newStatus = function(_statuses, append) { for (var entity in _statuses.profiles) { - bungloo.cache.profiles[entity] = _statuses.profiles[entity]; + if (_statuses.profiles[entity] != null) { + bungloo.cache.profiles[entity] = _statuses.profiles[entity]; + } else { + bungloo.cache.profiles[entity] = {}; + } } statuses = _statuses.posts; diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js index 60a971b..1bdc52d 100644 --- a/WebKit/scripts/helper/APICalls.js +++ b/WebKit/scripts/helper/APICalls.js @@ -38,10 +38,9 @@ function(jQuery, HostApp, Hmac, Cache) { } else { if(options.content_type == "application/json") { content_type = "application/json"; - } else { + } else if(options.content_type) { content_type = "application/vnd.tent.post.v0+json; type=\"" + options.content_type + "\""; } - } var settings = { @@ -120,6 +119,20 @@ function(jQuery, HostApp, Hmac, Cache) { APICalls.http_call(settings); } + APICalls.delete = function(url, options) { + var settings = { + url: url, + http_method: "DELETE" + }; + + for (var key in options) { + settings[key] = options[key]; + } + + APICalls.http_call(settings); + } + + APICalls.postMultipart = function(url, callback, data, boundary, accepts) { accepts = accepts || "application/vnd.tent.v0+json"; diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index b4bc318..1f17530 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -236,6 +236,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } if(bungloo.cache.profiles[status.entity].name) template.username.innerText = bungloo.cache.profiles[status.entity].name; + else template.username.innerText = status.entity; template.username.href = status.entity; template.username.title = status.entity; template.username.onclick = function() { From 3aa9a730451d75d236ba09c3f387cb1d444fc2d1 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 17 Jul 2013 04:40:04 +0200 Subject: [PATCH 081/127] moved image files --- .../img/images.png | Bin .../img/private.png | Bin .../img/public.png | Bin .../img/send.png | Bin images/Actions-insert-image-icon.png | Bin 719 -> 0 bytes images/Lock-Lock-icon.png | Bin 617 -> 0 bytes images/Lock-Unlock-icon.png | Bin 516 -> 0 bytes 7 files changed, 0 insertions(+), 0 deletions(-) rename images/glyphicons_138_picture.png => WebKit/img/images.png (100%) rename images/glyphicons_203_lock.png => WebKit/img/private.png (100%) rename images/glyphicons_204_unlock.png => WebKit/img/public.png (100%) rename images/glyphicons_123_message_out.png => WebKit/img/send.png (100%) delete mode 100644 images/Actions-insert-image-icon.png delete mode 100644 images/Lock-Lock-icon.png delete mode 100644 images/Lock-Unlock-icon.png diff --git a/images/glyphicons_138_picture.png b/WebKit/img/images.png similarity index 100% rename from images/glyphicons_138_picture.png rename to WebKit/img/images.png diff --git a/images/glyphicons_203_lock.png b/WebKit/img/private.png similarity index 100% rename from images/glyphicons_203_lock.png rename to WebKit/img/private.png diff --git a/images/glyphicons_204_unlock.png b/WebKit/img/public.png similarity index 100% rename from images/glyphicons_204_unlock.png rename to WebKit/img/public.png diff --git a/images/glyphicons_123_message_out.png b/WebKit/img/send.png similarity index 100% rename from images/glyphicons_123_message_out.png rename to WebKit/img/send.png diff --git a/images/Actions-insert-image-icon.png b/images/Actions-insert-image-icon.png deleted file mode 100644 index 05adf9a3a8d6086c45f829db6e8773dfffc4ea92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmV;=0xMg_SxC-9mL_ z7CbL@<^XARS2Ew6LO|dMT>@|-kW2$<Jf#;%Wr5NG16&cHs|hJJSqURk3eTA))Hk07ll%fm9{@d*n?f_G z(IhPhWU)Z~WBmY-RAj05d?Q2;gKRd7K!8V}oC9xU@Iz&>tFzDvz_V^Ta0Q=VO~5M% zd4Md-Qs_hje4+={0UH&520O9?Rp;P146Lk8U>i2WQnQs)bK~2NLw_L;P!vUKZEZ!s zFW}Q(whe)lhV144wRK}Xm8dC zU}1IL!KY0JmLtIH^&%RLB6zC`0?(mlt0~^q)pf%#jODxr1PF)2wCSL|MMF)6jrZ#u zHomhEODfRa-Hk{jf~nLvN_{-8nte-}rcI^Q^n?qDkSGi8n6B$whvnQ?bRosVmqXax zTSsGE9ZkbwFTICg;5Z(&KY8Gu2$C30e=~b57Q40*Tpm{TchPXn4^d?Cb!Qtbbtf@- zWp;?c5ivM8D2$Gd-sd>(dfU@rXJxGq3%wr~9UCvEXQrPY2`ENFPQ;=!m&P+>_16Q7 z!}O`oiVpv$7#kZC`tSDNBMUHd^K%n@clr#s{u>y;1lNxcc3}Vj002ovPDHLkV1ipg BIuQT> diff --git a/images/Lock-Lock-icon.png b/images/Lock-Lock-icon.png deleted file mode 100644 index 45079c95fa9bfdc8567df3cc7a3799237ea774f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmV-v0+#)WP)jA)vL1%-rnRM#|^1P2E)aB*>g z6@2~njbZKD^$cw-4QJlHd+PxddW+Qn4i3&u(`PUA)z;BsShajP!Wwt6*$xsQa~d_qG(E*b1mzgtMF1oa*`}w!W^; z|64Y$)(47RMmHd%tfpnUhNc!na!km)|Ns9bqxhAPY3_^#E0P{PxW~|1Uy%tEnt^UW zaamn^kBpQgLtaKg1CZZ{7C!a0ZT$_rT$~JL1sNqkelM~CwyH`D3z9P8lyo)K7@8Yu z-T=kkpcx<%7Mm)fAS1z0QPzC#_C1CKpx9xs0ir?-JDwe7aA#p+APW5X$G{+E&9L+J zI|dK10rHXz`yZ@haA5dPoB<$rD+Dndc=(*b5n_M@(17JY1JJ;CW(dvs7t;)dNT2~P zU#L4)5Lh0d5JOL)#tyT&p!H{1qxpPE4RQAh7k8F00000NkvXXu0mjf DAxspF diff --git a/images/Lock-Unlock-icon.png b/images/Lock-Unlock-icon.png deleted file mode 100644 index 627d59fb3bd8f0a6408885708c7f6c9262b7d8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)5o7R{9 z|NnmqAp@ccORAQJhJ`Y$S+$bk*|Vn%a`Flc!6Bgx^XJa}KV#a&0K5js$jV=sy>PjH zO?lDlv!_o40EI3Av5AeH)B39VW`X#~;3IeqFt@h5y&loi8HgX%vri- zTXJV}?K_YGHb5MNEj$cOtqY1v%Nb(A{7wV8?LfR99B_<`lNYYqoHMbj^#h}eHN)dA za~Ncpn6N|PP|(EiXWCK*5uor#AZ}Gs)l7Q%{OL!=crS+c3#x(9^B;d` zb}VCHsGP)rV&d`if+ zVFL|ozx`Z(>IWzmzMvQY#9Bb?!9X})90%fK7*WkYApig+HkNwzjQ>CY0000 Date: Mon, 22 Jul 2013 02:02:59 +0200 Subject: [PATCH 082/127] fixed some mentions stuff --- Qt/Bungloo.py | 19 ++- Qt/Windows.py | 56 +++----- WebKit/css/default.css | 12 +- WebKit/scripts/controller/NewPost.js | 184 ++++++++++++++++++--------- WebKit/scripts/controller/Oauth.js | 2 +- WebKit/scripts/controller/Profile.js | 5 +- WebKit/scripts/controller/Sidebar.js | 55 +------- WebKit/scripts/helper/APICalls.js | 10 +- WebKit/scripts/helper/HostApp.js | 4 +- WebKit/scripts/main.js | 74 ++++++----- 10 files changed, 222 insertions(+), 199 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index a8ca0be..6ccfe15 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -170,13 +170,13 @@ class Controller(QtCore.QObject): except OSError: pass - @QtCore.pyqtSlot(str) + @QtCore.pyqtSlot() def openNewMessageWidow(self): - self.openNewMessageWindowInReplyTostatus(None) + self.openNewMessageWindowInReplyToStatus("") - @QtCore.pyqtSlot(str, str, str, bool) - def openNewMessageWindowInReplyTostatus(self, status_string): - new_message_window = Windows.NewPost(self.app) + @QtCore.pyqtSlot(str) + def openNewMessageWindowInReplyToStatus(self, status_string): + new_message_window = Windows.NewPost(self.app, status_string) new_message_window.show() new_message_window.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.app.new_message_windows.append(new_message_window) @@ -262,10 +262,15 @@ class Controller(QtCore.QObject): msgBox.exec_() @QtCore.pyqtSlot(result=str) - def getCachedEntities(self): - entities = self.app.timeline.evaluateJavaScript("JSON.stringify(bungloo.cache.entities);") + def getCachedProfiles(self): + entities = self.app.timeline.evaluateJavaScript("JSON.stringify(bungloo.cache.profiles);") return entities.toString() + @QtCore.pyqtSlot() + def getNewData(self): + func = "bungloo.timeline.getNewData()" + self.app.timeline.evaluateJavaScript(func) + def logout(self, sender): print "logout is not implemented yet" diff --git a/Qt/Windows.py b/Qt/Windows.py index fb7d332..762a02a 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -9,7 +9,7 @@ class Preferences: # window self.window = QtGui.QMainWindow() - self.window.setWindowTitle("Preferences") + self.window.setWindowTitle("Login") self.window.resize(480, 186) self.window.setMinimumSize(480, 186) self.window.setMaximumSize(480, 186) @@ -329,12 +329,9 @@ class FindEntity(QtGui.QDialog): class NewPost(Helper.RestorableWindow): - def __init__(self, app, string=None, mentions="[]", is_private=False, post_id=None): + def __init__(self, app, status_string): self.app = app - self.string = string - self.mentions = mentions - self.is_private = is_private - self.post_id = post_id + self.status_string = status_string Helper.RestorableWindow.__init__(self, "newpost", self.app) self.activateWindow() @@ -349,6 +346,8 @@ class NewPost(Helper.RestorableWindow): self.initUI() self.webView.triggerPageAction(QtWebKit.QWebPage.InspectElement) + frame = self.webView.page().mainFrame() + frame.addToJavaScriptWindowObject("new_post_window", self) self.setWindowTitle("New Post") self.resize(300, 150) @@ -409,18 +408,8 @@ class NewPost(Helper.RestorableWindow): helpMenu.addAction(aboutAction) helpMenu.addAction(developerExtrasAction) - def load_finished(self, widget): - is_private = "false" - if self.is_private: - is_private = "true" - - post_id = "" - if self.post_id: - post_id = self.post_id - - callback = "function() { bungloo.newpost.setString('%s'); bungloo.newpost.setIsPrivate(%s); bungloo.newpost.setMentions(%s); bungloo.newPostAction.setPostId(%s); }" % (self.string, is_private, self.mentions, post_id) - + callback = "function() { bungloo.newpost.setStatus('%s'); }" % (self.status_string) script = "function HostAppGo() { start('newpost', " + callback + "); }" self.webView.page().mainFrame().evaluateJavaScript(script) self.webView.setFocus() @@ -432,32 +421,17 @@ class NewPost(Helper.RestorableWindow): def sendMessage(self): script = "bungloo.newpost.send()" self.webView.page().mainFrame().evaluateJavaScript(script) - self.close() - - """ - count = len(self.textInput.toPlainText()) - if count > 0 and count <= 256: - message = Helper.PostModel() - message.text = unicode(self.textInput.toPlainText().toUtf8(), "utf-8") - message.inReplyTostatusId = self.status_id - message.inReplyToEntity = self.reply_to_entity - message.location = None - message.imageFilePath = self.imageFilePath - message.isPrivate = self.isPrivate - self.app.controller.sendMessage(message) - self.close() - else: - QtGui.qApp.beep() - """ - - def openFileDialog(self): - fileNamePath = QtGui.QFileDialog.getOpenFileName(self, "Choose a image", "", "Images (*.png *.gif *.jpg *.jpeg)") - if len(fileNamePath) > 0: - self.imageFilePath = str(fileNamePath) - else: - self.imageFilePath = None def developer_extras(self, widget): QtWebKit.QWebSettings.globalSettings().setAttribute(QtWebKit.QWebSettings.DeveloperExtrasEnabled, True) + def openFileDialog(self): + print "openFileDialog Not implemented yet" + @QtCore.pyqtSlot() + def closeWindow(self): + self.close() + + @QtCore.pyqtSlot() + def beep(self): + QtGui.qApp.beep() \ No newline at end of file diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 63bd2e8..eec1a75 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -18,6 +18,15 @@ a { text-decoration: none; color: #00317a; outline: 0; + outline : none; +} + +button { + background: transparent; + border: 0; + margin: 0; + padding: 4px 5px 0 5px; + outline : none; } #sidebar { @@ -460,4 +469,5 @@ p.noresult { #suggestions { position: absolute; left: 0; bottom: 0; } #suggestions .active { color: red; } #status_bar { height: 1em; } -#status_bar p { float: right; } \ No newline at end of file +#status_bar p { float: right; margin: 0; padding: 0; } +#status_bar span { display: inline-block; margin: 4px 5px 0 5px; } \ No newline at end of file diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index e37fcce..63ec2bd 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -1,13 +1,20 @@ define([ + "helper/APICalls", + "helper/HostApp" ], -function() { +function(APICalls, HostApp) { function NewPost() { - this.entities = JSON.parse(controller.getCachedEntities()); + this.profiles = JSON.parse(controller.getCachedProfiles()); + for (var key in this.profiles) { + var item = this.profiles[key]; + if(!item.entity) item.entity = key; + if(!item.name) item.name = key; + } + this.mentions = []; - this.is_private = false; document.body.className = "new_post"; // Textarea @@ -30,8 +37,8 @@ function() { var buttons = $( "

      " + //"" + - "" + - "" + + "" + + "" + "

      "); this.buttons = { @@ -41,18 +48,26 @@ function() { } //this.buttons.images.bind("click", this.addImage.bind(this)); - //this.buttons.is_private.bind("click", this.togglePrivate.bind(this)); + this.buttons.is_private.bind("click", this.toggleIsPrivate.bind(this)); this.buttons.send.bind("click", this.send.bind(this)); this.container.find("#status_bar").append(this.counter); this.container.find("#status_bar").append(buttons); - this.textarea.focus() + this.textarea.focus(); + this.setIsPrivate(false); } NewPost.prototype.setStatus = function(status_string) { - this.status = JSON.parse(status_string); - debug(this.status) + if (status_string && status_string.length > 0) { + debug(status_string) + this.status = JSON.parse(status_string); + this.setIsPrivate(this.status.permissions && !this.status.permissions.public); + this.setMentions(this.status); + } else { + this.status = null; + } + // FIXME set string, private, mentions, etc. }; @@ -60,27 +75,67 @@ function() { this.textarea.val(string); } - NewPost.prototype.setMentions = function(mentions) { + NewPost.prototype.setMentions = function(status) { - if(mentions && mentions.length > 0) { - var mentions_string = " "; - for (var i = 0; i < mentions.length; i++) { - mentions_string += mentions[i].name + " "; + var mentions = [this.profiles[status.entity]]; + var text = this.profiles[status.entity].name + " "; + var start = text.length; + + if(status.mentions && status.mentions.length > 0) { + + var mentions_text = "" + for (var i = 0; i < status.mentions.length; i++) { + + var entity = status.mentions[i].entity; + + // Sometimes there are mentions without entity, don't know why + if(entity) { + // fix broken profiles + var profile = this.profiles[entity]; + if(!profile) { + profile = {}; + this.profiles[entity] = profile; + } + if(!profile.entity) profile.entity = entity; + if(!profile.name) profile.name = entity; + + // add profile to mentions and textarea + mentions.push(profile); + mentions_text += profile.name; + + // add space after mention + if(i < status.mentions.length) { + mentions_text += " "; + } + } } + if (mentions_text.length > 0) { + text += "\n\n/cc " + mentions_text; + }; - this.textarea.val(this.textarea.val() + " " + mentions_string); - this.mentions = mentions; } - this.keyup(); + + this.mentions = mentions; + this.textarea.val(text); + this.parseText(text); + + // Select other mentions so user can start writing and removing them + var end = text.length; + this.textarea.get(0).setSelectionRange(start, end); } NewPost.prototype.setIsPrivate = function(is_private) { this.is_private = is_private; + if (this.is_private) { + this.buttons.is_private.find("img").attr("src", "img/private.png"); + } else { + this.buttons.is_private.find("img").attr("src", "img/public.png"); + } } NewPost.prototype.toggleIsPrivate = function() { - this.is_private = !this.is_private; - }; + this.setIsPrivate(!this.is_private); + } NewPost.prototype.keyup = function(e) { if(!e) return; @@ -152,16 +207,20 @@ function() { if(words) { var name = words[2]; - for (var key in this.entities.length) { - var item = this.entities[key]; - if(item.name.toLowerCase().indexOf(name.toLowerCase()) != -1 || item.entity.toLowerCase().indexOf(name.toLowerCase()) != -1) { + for (var key in this.profiles) { + var item = this.profiles[key]; + if((item.name.toLowerCase().indexOf(name.toLowerCase()) != -1) || item.entity.toLowerCase().indexOf(name.toLowerCase()) != -1) { var li = $("
    • " + item.name + " " + item.entity + "
    • ") li.get(0).item = item; - this.suggestions.append(li) + this.suggestions.append(li); } } } + this.parseText(text); + } + + NewPost.prototype.parseText = function(text) { // parse the text: // replace all the line braks by
      , and all the double spaces by the html version   text = this.replaceAll(text,'\n','
      '); @@ -188,19 +247,18 @@ function() { this.highlighter.html(text); var count = 256 - this.textarea.val().length + (this.mentions.length * 6); - this.counter.html(count) - - return true; + this.counter.html(count); } NewPost.prototype.send = function() { - debug("Send not implemented yet"); - $("textarea").focus(); + var count = 256 - this.textarea.val().length + (this.mentions.length * 6); - if(count >= 0) { - this.sentNewMessage(); + if(count >= 0 && count <= 256) { + this.sendNewMessage(); + return true; } else { debug("BEEP"); + return false; } } @@ -208,44 +266,52 @@ function() { var content = this.textarea.val(); - var url = URI(HostApp.serverUrl("new_post")); - - var type = in_reply_to_status_id.length == 0 ? "https://tent.io/types/status/v0#" : "https://tent.io/types/status/v0#reply"; - + var type = "https://tent.io/types/status/v0#"; var data = { - "type": type, - "published_at": parseInt(new Date().getTime(), 10), - "permissions": { - "public": !is_private - }, - "content": { - "text": content, + type: type, + content: { + text: content }, + permissions: { + public: !this.is_private + } }; - if (location) { - //data["content"]["location"] = { "type": "Point", "coordinates": location } + var mentions = []; + if (this.status) { + mentions.push({ + entity: this.status.entity, + post: this.status.id, + type: this.status.type + }); } - var mentions = this.parseMentions(content, in_reply_to_status_id, in_reply_to_entity); - - if (mentions.length > 0) { - data["mentions"] = mentions; - if (is_private) { - var entities = {}; - for (var i = 0; i < mentions.length; i++) { - var entity = mentions[i]["entity"] - entities[entity] = true; - }; - - data["permissions"]["entities"] = entities; - } + for (var i = 0; i < this.mentions.length; i++) { + var mention = this.mentions[i]; + mentions.push({ + entity: mention.entity + }); } - // APICalls.http_call(url.toString(), http_method, callback, JSON.stringify(data)); - APICalls.post(url.toString(), JSON.stringify(data), { + data.mentions = mentions; + + // Make tent flavored markdown mentions + for (var i = 0; i < this.mentions.length; i++) { + var mention = this.mentions[i]; + data.content.text = this.replaceAll(data.content.text, mention.name, "^[" + mention.name + "](" + i + ")") + } + + APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(data), { content_type: data.type, - callback: callback + accept: 'application/vnd.tent.post.v0+json; type="https://tent.io/types/status/v0#"', + callback: function(resp) { + if (resp.status >= 200 < 300) { + new_post_window.closeWindow(); + controller.getNewData(); + } else { + new_post_window.beep(); + } + } }); } /* diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 69e1b41..9999826 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -178,7 +178,7 @@ function(HostApp, APICalls, Hmac) { HostApp.loggedIn(); } - Oauth.prototype.logout = function() { + Oauth.prototype.logout = function() { // FIXME var url = APICalls.mkApiRootPath("/apps/" + HostApp.stringForKey("app_id")); var http_method = "DELETE"; diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index bd42d8d..fb8125b 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -250,6 +250,7 @@ function(HostApp, Core, APICalls, URI) { APICalls.get(url, {callback: function(resp) { var json = JSON.parse(resp.responseText); + debug(json) var count = json.posts.length; if (count > 0) { @@ -273,12 +274,14 @@ function(HostApp, Core, APICalls, URI) { if(profiles.posts.length < 1) return; var profile = profiles.posts[0]; + bungloo.cache.profiles[profile.entity] = profile; + var basic = profile.content.profile; if (profile && basic) { // Find and apply avatar - if(profile.attachments.length > 0) { + if(profile.attachments) { var digest = null; for (var i = 0; i < profile.attachments.length; i++) { diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index e715f94..61d05d4 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -1,16 +1,13 @@ define([ "helper/HostApp", "helper/APICalls", - "helper/Cache" ], -function(HostApp, APICalls, Cache) { +function(HostApp, APICalls) { function Sidebar() { - this.cache = new Cache(); - this.body = document.createElement("ul"); this.body.class = "sidebar"; @@ -51,7 +48,7 @@ function(HostApp, APICalls, Cache) { document.body.className = "body-timeline"; document.body.id = "with-sidebar"; - //this.setEntityAvatar(); FIXME + this.setEntityAvatar(); this.setOnScroll(); } @@ -88,53 +85,13 @@ function(HostApp, APICalls, Cache) { var _this = this; - var profile_callback = function(p) { + var url = HostApp.serverUrl("discover"); + debug(url) - var basic = p["https://tent.io/types/info/basic/v0.1.0"]; + APICalls.get(url, { callback: function(resp) { - if (p && basic) { - if(basic.name) { - _this.menu.user.title = basic.name; - } - if(basic.avatar_url) { + }}); - img.onerror = function() { - img.src = "img/sidebar/user.png"; - img.src_inactive = img.src; - img.src_active = img.src; - } - - img.src = basic.avatar_url; - img.src_inactive = basic.avatar_url; - img.src_active = basic.avatar_url; - - } - } - - } - - var p = this.cache.profiles.getItem(entity); - - if (p && p != "null") { - - profile_callback(p); - - } else { - - APICalls.findProfileURL(entity, function(profile_url) { - - if (profile_url) { - APICalls.http_call(profile_url, "GET", function(resp) { - var p = JSON.parse(resp.responseText); - if (p && p != "null") { - _this.cache.profiles.setItem(entity, p); - profile_callback(p); - } - - }, null, false); // do not send auth-headers - } - }); - } } Sidebar.prototype.removeEntityAvatar = function() { diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js index 1bdc52d..9ab43c2 100644 --- a/WebKit/scripts/helper/APICalls.js +++ b/WebKit/scripts/helper/APICalls.js @@ -35,19 +35,23 @@ function(jQuery, HostApp, Hmac, Cache) { if(options.http_method == "POST" && !options.content_type) { console.error("No content type for " + options.url); return; - } else { + } else if(options.content_type != "AAA") { if(options.content_type == "application/json") { content_type = "application/json"; } else if(options.content_type) { - content_type = "application/vnd.tent.post.v0+json; type=\"" + options.content_type + "\""; + content_type = "application/vnd.tent.post.v0+json; charset=UTF-8; type=\"" + options.content_type + "\""; } + } else { + content_type = 'application/vnd.tent.post.v0+json; charset=UTF-8; type="https://tent.io/types/status/v0#"'; } var settings = { beforeSend: function(xhr) { if (options.data) xhr.setRequestHeader("Content-Length", options.data.length); + if (options.accept) xhr.setRequestHeader("Accept", options.accept); else xhr.setRequestHeader("Accept", "application/vnd.tent.post.v0+json"); + var user_access_token = HostApp.stringForKey("user_access_token"); if (!options.auth_header && !options.no_auth && user_access_token) { var auth_header = Hmac.makeHawkAuthHeader( @@ -63,7 +67,7 @@ function(jQuery, HostApp, Hmac, Cache) { } else if(!options.no_auth) { console.error("No user_access_token yet - " + options.url); } - xhr.setRequestHeader("Cache-Control", "no-cache"); + xhr.setRequestHeader("Cache-Control", "no-proxy"); }, url: options.url, contentType: content_type, diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index 13992ad..9811fda 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -88,9 +88,9 @@ define(function() { HostApp.openNewMessageWidow = function(status) { if (OS_TYPE == "mac") { - controller.openNewMessageWindowInReplyToStatus(JSON.stringify(status)); + controller.openNewMessageWindowInReplyToStatus_(JSON.stringify(status)); } else { - controller.openNewMessageWindowInReplyTostatus(JSON.stringify(status)); + controller.openNewMessageWindowInReplyToStatus(JSON.stringify(status).escapeSpecialChars()); } } diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index 69511ef..3b48c90 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -64,46 +64,12 @@ function start(view, callback) { bungloo.search = new Search(); bungloo.sidebar.showContentForTimeline(); - - bungloo.cache.entities = { - "https://jeena.net" : { - name: "Jeena", - entity: "https://jeena.net", - avatar: "https://jeena.net/avatar.png" - }, - "https://ck.kennt-wayne.de": { - name: "Christian", - entity: "http://ck.kennt-wayne.de", - avatar: "http://ck.kennt-wayne.de/pavatar.png" - } - }; - }); } } -String.prototype.startsWith = function(prefix) { - return this.indexOf(prefix) === 0; -} - -String.prototype.endsWith = function(suffix) { - return this.match(suffix+"$") == suffix; -}; - -var __entityMap = { - "&": "&", - "<": "<", - ">": ">" -}; - -String.prototype.escapeHTML = function() { - return String(this).replace(/[&<>]/g, function (s) { - return __entityMap[s]; - }); -} - var console = { log: function(s) { if (OS_TYPE == "mac") { @@ -195,4 +161,42 @@ function go() { // wait untill everything is loaded }, 500); } -go(); \ No newline at end of file +go(); + + +// String stuff +String.prototype.startsWith = function(prefix) { + return this.indexOf(prefix) === 0; +} + +String.prototype.endsWith = function(suffix) { + return this.match(suffix+"$") == suffix; +}; + +var __entityMap = { + "&": "&", + "<": "<", + ">": ">" +}; + +String.prototype.escapeHTML = function() { + return String(this).replace(/[&<>]/g, function (s) { + return __entityMap[s]; + }); +} + +String.prototype.hasArabicCharacter = function() { + var arregex = /[\u0600-\u06FF]/; + return arregex.test(this); +} + +String.prototype.escapeSpecialChars = function() { + return this.replace(/[\\]/g, '\\\\') + .replace(/[\"]/g, '\\\"') + .replace(/[\/]/g, '\\/') + .replace(/[\b]/g, '\\b') + .replace(/[\f]/g, '\\f') + .replace(/[\n]/g, '\\n') + .replace(/[\r]/g, '\\r') + .replace(/[\t]/g, '\\t'); +} \ No newline at end of file From 0eeffcf7f61e1273d60a74f74ee86dc990c17f55 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 22 Jul 2013 03:33:54 +0200 Subject: [PATCH 083/127] fixed avatar in sidebar --- WebKit/scripts/controller/NewPost.js | 1 - WebKit/scripts/controller/Profile.js | 5 ++-- WebKit/scripts/controller/Sidebar.js | 33 +++++++++++++++++++++++---- WebKit/scripts/controller/Timeline.js | 2 +- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 63ec2bd..63144ff 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -60,7 +60,6 @@ function(APICalls, HostApp) { NewPost.prototype.setStatus = function(status_string) { if (status_string && status_string.length > 0) { - debug(status_string) this.status = JSON.parse(status_string); this.setIsPrivate(this.status.permissions && !this.status.permissions.public); this.setMentions(this.status); diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index fb8125b..f36e915 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -231,8 +231,7 @@ function(HostApp, Core, APICalls, URI) { this.profile_template.following_button.style.display = "none"; } - var url = HostApp.serverUrl("posts_feed") + "?types=" + encodeURIComponent("https://tent.io/types/meta/v0") + "&entities=" + encodeURIComponent(this.entity) - //var url = HostApp.serverUrl("discover").replace(/{entity}/, encodeURIComponent(this.entity)); + var url = HostApp.serverUrl("posts_feed") + "?types=" + encodeURIComponent("https://tent.io/types/meta/v0") + "&entities=" + encodeURIComponent(this.entity); APICalls.get(url, { callback: function(resp) { var profile = JSON.parse(resp.responseText); @@ -274,7 +273,7 @@ function(HostApp, Core, APICalls, URI) { if(profiles.posts.length < 1) return; var profile = profiles.posts[0]; - bungloo.cache.profiles[profile.entity] = profile; + bungloo.cache.profiles[profile.entity] = profile.content.profile; var basic = profile.content.profile; diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 61d05d4..d32c1e4 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -81,15 +81,38 @@ function(HostApp, APICalls) { var entity = HostApp.stringForKey("entity"); this.menu.user.title = entity; - var img = this.menu.user.getElementsByTagName("img")[0]; - + var avatar = this.menu.user.getElementsByTagName("img")[0]; var _this = this; - var url = HostApp.serverUrl("discover"); - debug(url) - + var url = HostApp.serverUrl("posts_feed") + "?types=" + encodeURIComponent("https://tent.io/types/meta/v0") + "&entities=" + encodeURIComponent(entity); APICalls.get(url, { callback: function(resp) { + var profiles = JSON.parse(resp.responseText); + if(profiles.posts.length < 1) return; + var profile = profiles.posts[0]; + bungloo.cache.profiles[entity] = profile; + + // Find and apply avatar + if(profile.attachments) { + + var digest = null; + for (var i = 0; i < profile.attachments.length; i++) { + var attachment = profile.attachments[i]; + if(attachment.category == "avatar") { + digest = attachment.digest; + break; + } + } + + if(digest) { + var _this = this; + avatar.onerror = function() { avatar.src = 'img/default-avatar.png' }; + var avatar_url = profile.content.servers[0].urls.attachment.replace(/\{entity\}/, encodeURIComponent(profile.entity)); + avatar.src = avatar_url.replace(/\{digest\}/, digest); + avatar.src_inactive = avatar.src; + avatar.src_active = avatar.src; + } + } }}); } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index c4716d7..576246b 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -30,7 +30,7 @@ function(Core, APICalls, HostApp, URI) { document.getElementById("content").appendChild(this.container); var _this = this; - //this.reloadIntervall = setInterval(function() { _this.getNewData() }, this.timeout); //FIXME back + this.reloadIntervall = setInterval(function() { _this.getNewData() }, this.timeout); this.getNewData(); } From ec43a38b8672b201c350c6dfce967af9d55fa309 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 22 Jul 2013 07:02:26 +0200 Subject: [PATCH 084/127] fixed initial mentions --- WebKit/scripts/controller/Mentions.js | 11 ++++---- WebKit/scripts/controller/Sidebar.js | 1 - WebKit/scripts/helper/APICalls.js | 16 ++++++++++- WebKit/scripts/helper/Core.js | 38 +++++++++------------------ 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 68fc7ec..dc64952 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -10,7 +10,6 @@ function(HostApp, Timeline, URI, APICalls, Core) { function Mentions() { - return // FIXME this.is_not_init = false; this.unread_mentions = 0; @@ -37,7 +36,7 @@ function(HostApp, Timeline, URI, APICalls, Core) { Mentions.prototype.newStatus = function(statuses, append) { Timeline.prototype.newStatus.call(this, statuses, append); - +/* if(this.is_not_init) { for (var i = 0; i < statuses.length; i++) { @@ -52,7 +51,7 @@ function(HostApp, Timeline, URI, APICalls, Core) { if(!append) HostApp.notificateUserAboutMention(status.content.text, name || status.entity, status.id, status.entity); } } - +*/ this.is_not_init = true; } @@ -60,13 +59,13 @@ function(HostApp, Timeline, URI, APICalls, Core) { add_to_search = add_to_search || {}; - if (!add_to_search["mentioned_entity"]) { - add_to_search["mentioned_entity"] = HostApp.stringForKey("entity"); + if (!add_to_search["mentions"]) { + add_to_search["mentions"] = HostApp.stringForKey("entity"); } Timeline.prototype.getNewData.call(this, add_to_search, append); - this.getLatestMentionRead(); + //this.getLatestMentionRead(); } Mentions.prototype.mentionRead = function(id, entity) { diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index d32c1e4..845946c 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -114,7 +114,6 @@ function(HostApp, APICalls) { } } }}); - } Sidebar.prototype.removeEntityAvatar = function() { diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js index 9ab43c2..7d97790 100644 --- a/WebKit/scripts/helper/APICalls.js +++ b/WebKit/scripts/helper/APICalls.js @@ -32,7 +32,7 @@ function(jQuery, HostApp, Hmac, Cache) { var content_type = null; - if(options.http_method == "POST" && !options.content_type) { + if((options.http_method == "POST" || options.http_method == "PUT") && !options.content_type) { console.error("No content type for " + options.url); return; } else if(options.content_type != "AAA") { @@ -136,6 +136,20 @@ function(jQuery, HostApp, Hmac, Cache) { APICalls.http_call(settings); } + APICalls.put = function(url, data, options) { + var settings = { + url: url, + http_method: "PUT", + data: data + }; + + for (var key in options) { + settings[key] = options[key]; + } + + APICalls.http_call(settings); + } + APICalls.postMultipart = function(url, callback, data, boundary, accepts) { diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 1f17530..58f54df 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -3,16 +3,16 @@ define([ "helper/APICalls", "lib/URI", "helper/HostApp", - "helper/Cache", + "lib/Showdown", "lib/Timeago", "lib/SingleDoubleClick" ], -function(jQuery, APICalls, URI, HostApp, Cache) { +function(jQuery, APICalls, URI, HostApp, Showdown) { function Core() { - this.cache = new Cache(); this.saveScrollTop = 0; + this.markdown = new Showdown.converter(); } @@ -279,6 +279,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { template.message.innerHTML = this.replaceURLWithHTMLLinks(text, entities, template.message); this.afterChangingTextinMessageHTML(template.message) + /* if (status.type == "https://tent.io/types/post/photo/v0.1.0") { for (var i = 0; i < status.attachments.length; i++) { @@ -306,7 +307,7 @@ function(jQuery, APICalls, URI, HostApp, Cache) { })(); } } - + */ this.findMentions(template.message, status.mentions); /* @@ -667,27 +668,14 @@ function(jQuery, APICalls, URI, HostApp, Cache) { } Core.prototype.replaceURLWithHTMLLinks = function(text, entities, message_node) { - - var callback = function(url) { - - var result; - - if (entities && entities.some(function(x) { return x == url })) { - result = url; - } else { - - result = url; - if (url.startsWith("http://") || url.startsWith("https://")) { - result = '
      ' + url + ''; - } - } - - return result; - } - - var hash = /(^|\s)(#)(\w+)/ig; - - return URI.withinString(text, callback).replace(hash, "$1$2$3"); + // FIXME: this has to be done better so one can nest that stuff and escape with \ + return text.replace(/_([^_]+)_/g, "$1 ") + .replace(/\*([^\*]+)\*/g, "$1 ") + .replace(/`([^`]+)`/g, "$1 ") + .replace(/~([^~]+)~/g, "$1 ") + .replace(/\#[^\s]+/, "#$1") + .replace(/[^\^]\[([^\]]+)\]\(([^\)]+)\)/g, "$1 ") + .replace(/\^\[([^\]]+)\]\(([^\)]+)\)/g, "$1 "); } Core.prototype.parseForMedia = function(text, images) { From 0bf0324702f174f5a945b9a46accb4d040627e81 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 22 Jul 2013 14:00:43 +0200 Subject: [PATCH 085/127] fixed paging --- WebKit/scripts/controller/Mentions.js | 4 +- WebKit/scripts/controller/Timeline.js | 90 +++++++++++++++------------ 2 files changed, 51 insertions(+), 43 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index dc64952..80f1ab8 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -55,7 +55,7 @@ function(HostApp, Timeline, URI, APICalls, Core) { this.is_not_init = true; } - Mentions.prototype.getNewData = function(add_to_search, append) { + Mentions.prototype.getNewData = function(add_to_search, append, query) { add_to_search = add_to_search || {}; @@ -63,7 +63,7 @@ function(HostApp, Timeline, URI, APICalls, Core) { add_to_search["mentions"] = HostApp.stringForKey("entity"); } - Timeline.prototype.getNewData.call(this, add_to_search, append); + Timeline.prototype.getNewData.call(this, add_to_search, append, query); //this.getLatestMentionRead(); } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 576246b..78998b4 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -14,13 +14,15 @@ function(Core, APICalls, HostApp, URI) { this.action = "timeline"; this.reload_blocked = false; - this.posts_limit = 25; + this.posts_limit = 4; this.max_length = 200; this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; this.since_id_entity = null; this.since_time = 0; + this.pages = {}; + this.before = {id: null, entity: null, loading: false}; this.container = document.createElement("div"); @@ -56,6 +58,8 @@ function(Core, APICalls, HostApp, URI) { } } + this.pages = _statuses.pages; + statuses = _statuses.posts; if(statuses != null && statuses.length > 0) { @@ -104,48 +108,43 @@ function(Core, APICalls, HostApp, URI) { } } - Timeline.prototype.getNewData = function(add_to_search, append) { + Timeline.prototype.getNewData = function(add_to_search, append, query) { add_to_search = add_to_search || {}; var those = this; - var url = URI(HostApp.serverUrl("posts_feed")); + var url = HostApp.serverUrl("posts_feed"); - var post_types = [ - "https://tent.io/types/status/v0#", - "https://tent.io/types/status/v0#reply", - "https://tent.io/types/repost/v0#", - "https://tent.io/types/delete/v0#", - //"https://tent.io/types/post/photo/v0.1.0" - ]; - url.addSearch("types", post_types.join(",")); - //url.addSearch("sort_by", "published_at"); - url.addSearch("limit", this.posts_limit); - url.addSearch("max_refs", 20); - url.addSearch("profiles", "entity"); + if(!query) { - if(this.since_id && !append) { - url.addSearch("since_id", this.since_id); - url.addSearch("since_id_entity", this.since_id_entity); - } + var uri = URI(url); - for (key in add_to_search) { - url.addSearch(key, add_to_search[key]); - } + var post_types = [ + "https://tent.io/types/status/v0#", + "https://tent.io/types/status/v0#reply", + "https://tent.io/types/repost/v0#", + "https://tent.io/types/delete/v0#", + //"https://tent.io/types/post/photo/v0.1.0" + ]; + uri.addSearch("types", post_types.join(",")); + //uri.addSearch("sort_by", "published_at"); + uri.addSearch("limit", this.posts_limit); + uri.addSearch("max_refs", 20); + uri.addSearch("profiles", "entity"); - var http_method = "GET"; - var callback = function(resp) { - - those.reload_blocked = false; - - try { - var json = JSON.parse(resp.responseText); - those.newStatus(json, append); - - } catch (e) { - console.error(url + " JSON parse error"); - throw e; + if(this.since_id && !append) { + uri.addSearch("since_id", this.since_id); + uri.addSearch("since_id_entity", this.since_id_entity); } + + for (key in add_to_search) { + uri.addSearch(key, add_to_search[key]); + } + + url = uri.toString(); + + } else { + url += query; } var data = null; @@ -155,20 +154,29 @@ function(Core, APICalls, HostApp, URI) { if (!this.reload_blocked) { this.reload_blocked = true; - APICalls.get(url.toString(), { callback: callback }); + APICalls.get(url, { callback: function(resp) { + + those.reload_blocked = false; + + try { + var json = JSON.parse(resp.responseText); + those.newStatus(json, append); + + } catch (e) { + console.error(url + " JSON parse error"); + throw e; + } + } }); } } } Timeline.prototype.getMoreStatusPosts = function() { if (!this.before.loading) { - this.before.loading = true; - var add_search = { - "before_id": this.body.lastChild.status.id, - "before_id_entity": this.body.lastChild.status.entity + if (this.pages.next) { + this.before.loading = true; + this.getNewData({}, true, this.pages.next); } - - this.getNewData(add_search, true); } } From 1c12e5b3756b44497537c6bd83b053711d79c866 Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 25 Jul 2013 16:27:55 +0200 Subject: [PATCH 086/127] fixed problems with mentions --- WebKit/scripts/controller/NewPost.js | 25 ++++++++++++++----------- WebKit/scripts/controller/Profile.js | 13 +++++++++---- WebKit/scripts/controller/Timeline.js | 2 +- WebKit/scripts/helper/Core.js | 24 ++++++++++++------------ 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 63144ff..61b2f3a 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -277,28 +277,31 @@ function(APICalls, HostApp) { }; var mentions = []; - if (this.status) { - mentions.push({ - entity: this.status.entity, - post: this.status.id, - type: this.status.type - }); - } - for (var i = 0; i < this.mentions.length; i++) { var mention = this.mentions[i]; - mentions.push({ - entity: mention.entity - }); + if(this.status && this.status.entity == mention.entity) { + mentions.push({ + entity: this.status.entity, + post: this.status.id, + type: this.status.type + }); + } else { + mentions.push({ + entity: mention.entity + }); + } } data.mentions = mentions; + debug(data.mentions) + // Make tent flavored markdown mentions for (var i = 0; i < this.mentions.length; i++) { var mention = this.mentions[i]; data.content.text = this.replaceAll(data.content.text, mention.name, "^[" + mention.name + "](" + i + ")") } + debug(data.content.text) APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(data), { content_type: data.type, diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index f36e915..98b21bd 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -23,8 +23,8 @@ function(HostApp, Core, APICalls, URI) { this.initProfileTemplate(); this.hide(); - var _this = this; - setTimeout(function() { _this.showProfileForEntity() }, 500); // Load users profile on start + //var _this = this; + //setTimeout(function() { _this.showProfileForEntity() }, 500); // Load users profile on start } Profile.prototype = Object.create(Core.prototype); @@ -47,13 +47,19 @@ function(HostApp, Core, APICalls, URI) { $(this.followingsBody).hide(); $(this.followersBody).hide(); $(list).show(); + } + + Profile.prototype.showEntity = function(a, i) { + var entity = $(a).closest("li").get(0).status.mentions[i].entity; + this.showProfileForEntity(entity); + bungloo.sidebar.onEntityProfile(); }; Profile.prototype.showProfileForEntity = function(entity) { if (!entity) { entity = HostApp.stringForKey("entity"); - }; + } this.clear(); this.entity = entity; @@ -249,7 +255,6 @@ function(HostApp, Core, APICalls, URI) { APICalls.get(url, {callback: function(resp) { var json = JSON.parse(resp.responseText); - debug(json) var count = json.posts.length; if (count > 0) { diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 78998b4..3f0bf11 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -14,7 +14,7 @@ function(Core, APICalls, HostApp, URI) { this.action = "timeline"; this.reload_blocked = false; - this.posts_limit = 4; + this.posts_limit = 25; this.max_length = 200; this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 58f54df..a003ae1 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -3,16 +3,14 @@ define([ "helper/APICalls", "lib/URI", "helper/HostApp", - "lib/Showdown", "lib/Timeago", "lib/SingleDoubleClick" ], -function(jQuery, APICalls, URI, HostApp, Showdown) { +function(jQuery, APICalls, URI, HostApp) { function Core() { this.saveScrollTop = 0; - this.markdown = new Showdown.converter(); } @@ -669,13 +667,13 @@ function(jQuery, APICalls, URI, HostApp, Showdown) { Core.prototype.replaceURLWithHTMLLinks = function(text, entities, message_node) { // FIXME: this has to be done better so one can nest that stuff and escape with \ - return text.replace(/_([^_]+)_/g, "$1 ") - .replace(/\*([^\*]+)\*/g, "$1 ") - .replace(/`([^`]+)`/g, "$1 ") - .replace(/~([^~]+)~/g, "$1 ") - .replace(/\#[^\s]+/, "#$1") - .replace(/[^\^]\[([^\]]+)\]\(([^\)]+)\)/g, "$1 ") - .replace(/\^\[([^\]]+)\]\(([^\)]+)\)/g, "$1 "); + return text.replace(/_([^_]+)_/g, "$1") + .replace(/\*([^\*]+)\*/g, "$1") + .replace(/`([^`]+)`/g, "$1") + .replace(/~([^~]+)~/g, "$1") + .replace(/\#([^\s]+)/g, "#$1") + .replace(/(^|[^\^])\[([^\]]+)\]\(([^\)]+)\)/g, "$2") + .replace(/\^\[([^\]]+)\]\(([^\)]+)\)/g, "$1"); } Core.prototype.parseForMedia = function(text, images) { @@ -849,17 +847,19 @@ function(jQuery, APICalls, URI, HostApp, Showdown) { Core.prototype.afterChangingTextinMessageHTML = function(message_node) { // adding show search on click hash + /* $(message_node).find("a.hash").click(function(e) { if(bungloo.search) bungloo.search.searchFor(e.target.innerHTML); return false; }); - + */ // adding show profile on click + /* $(message_node).find("a.name").click(function(e) { HostApp.showProfileForEntity(e.target.title); return false; - }); + });*/ } From 096916395b0b21cdd2237c857c4ed54c0b1b4f49 Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 25 Jul 2013 17:27:32 +0200 Subject: [PATCH 087/127] facelift new post mentions --- WebKit/css/default.css | 12 ++++++++---- WebKit/scripts/controller/NewPost.js | 5 +++-- WebKit/scripts/controller/Profile.js | 6 +----- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index eec1a75..76013fd 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -466,8 +466,12 @@ p.noresult { #new_post_container div { box-sizing: border-box; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; background: white; color: white; padding: 2px; } #new_post_container div span { background: #D8DFEA; } -#suggestions { position: absolute; left: 0; bottom: 0; } -#suggestions .active { color: red; } -#status_bar { height: 1em; } +#suggestions { width: 100%; position: absolute; left: 0; bottom: 0; background: #efefef; list-style-type: none; padding: 0; margin: 0; border-top: 1px solid #ccc; } +#suggestions li { border-top: 1px solid #fefefe; border-bottom: #c9c9c9; padding: 0 0.5em; } +#suggestions strong { font-weight: normal; color: #555; } +#suggestions .active { background: #dedede; } +#suggestions .active strong { color: black; } +#status_bar { height: 1em; border-top: 1px solid #ccc; } #status_bar p { float: right; margin: 0; padding: 0; } -#status_bar span { display: inline-block; margin: 4px 5px 0 5px; } \ No newline at end of file +#status_bar span { display: inline-block; margin: 4px 5px 0 5px; } + diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 61b2f3a..6638b45 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -192,7 +192,7 @@ function(APICalls, HostApp) { var words = txt.match(/(^|\s)\^([^\s]+)/); var replace = words[2]; - var original = txt.replace("^" + replace, with_item.name); + var original = txt.replace("^" + replace, with_item.name + " "); this.textarea.val(original); this.mentions.push(with_item); @@ -209,11 +209,12 @@ function(APICalls, HostApp) { for (var key in this.profiles) { var item = this.profiles[key]; if((item.name.toLowerCase().indexOf(name.toLowerCase()) != -1) || item.entity.toLowerCase().indexOf(name.toLowerCase()) != -1) { - var li = $("
    • " + item.name + " " + item.entity + "
    • ") + var li = $("
    • " + item.name + "
    • ") li.get(0).item = item; this.suggestions.append(li); } } + this.suggestions.find("li:first-child").addClass("active"); } this.parseText(text); diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 98b21bd..1315c3d 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -110,11 +110,7 @@ function(HostApp, Core, APICalls, URI) { div.appendChild(this.profile_template.following_button); this.profile_template.mention_button.onclick = function() { - var e = _this.entity; - if (e.startsWith("https://")) { - e = e.substr(8, e.length); - } - HostApp.openNewMessageWidow(null, null, "^" + e + " ", false); + HostApp.openNewMessageWidow({entity:_this.entity}); } div.appendChild(this.profile_template.mention_button); this.profile_template.mention_button.innerHTML = "Mention"; From 213c83f3e90359580251904c61a60e6e18a75eaf Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 25 Jul 2013 18:53:14 +0200 Subject: [PATCH 088/127] only digits in mentions --- WebKit/scripts/helper/Core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index a003ae1..4b8983e 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -673,7 +673,7 @@ function(jQuery, APICalls, URI, HostApp) { .replace(/~([^~]+)~/g, "$1") .replace(/\#([^\s]+)/g, "#$1") .replace(/(^|[^\^])\[([^\]]+)\]\(([^\)]+)\)/g, "$2") - .replace(/\^\[([^\]]+)\]\(([^\)]+)\)/g, "$1"); + .replace(/\^\[([^\]]+)\]\((\d+)\)/g, "$1"); } Core.prototype.parseForMedia = function(text, images) { From 07b043c159f99d5d2ee06aee33811b526766d43d Mon Sep 17 00:00:00 2001 From: jeena Date: Fri, 26 Jul 2013 13:48:18 +0200 Subject: [PATCH 089/127] work on profile --- WebKit/scripts/controller/Profile.js | 164 +++++++++----------------- WebKit/scripts/controller/Timeline.js | 9 +- 2 files changed, 61 insertions(+), 112 deletions(-) diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 1315c3d..4912ed7 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -2,32 +2,28 @@ define([ "helper/HostApp", "helper/Core", "helper/APICalls", - "lib/URI" + "lib/URI", + "controller/Timeline" ], -function(HostApp, Core, APICalls, URI) { +function(HostApp, Core, APICalls, URI, Timeline) { function Profile() { - Core.call(this); + Timeline.call(this); this.action = "profile"; - this.posts_limit = 25; - this.container = document.createElement("div"); this.container.className = this.action; document.getElementById("content").appendChild(this.container); this.initProfileTemplate(); this.hide(); - - //var _this = this; - //setTimeout(function() { _this.showProfileForEntity() }, 500); // Load users profile on start } - Profile.prototype = Object.create(Core.prototype); + Profile.prototype = Object.create(Timeline.prototype); Profile.prototype.show = function() { @@ -61,6 +57,8 @@ function(HostApp, Core, APICalls, URI) { entity = HostApp.stringForKey("entity"); } + debug(entity) + this.clear(); this.entity = entity; this.following = null; @@ -70,6 +68,7 @@ function(HostApp, Core, APICalls, URI) { this.getProfile(); this.getFollowing(); + this.getStatuses(); } Profile.prototype.initProfileTemplate = function() { @@ -322,8 +321,10 @@ function(HostApp, Core, APICalls, URI) { if (profile) { this.profile = profile; + + // FIXME this.getMeta(this.profile); - //this.getStatuses(this.server); + this.getStatuses(); } } @@ -338,14 +339,13 @@ function(HostApp, Core, APICalls, URI) { Profile.prototype.getMeta = function(profile) { // FIXME! - return; var _this = this; - - var url = HostApp.serverUrl("posts_feed") + "?entities=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/relationship/v0#follower"); +/* + var url = HostApp.serverUrl("posts_feed") + "?entities=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/subscription/v0#"); APICalls.head(url, { callback: function(resp) { - _this.populate(_this.profile_template.followed, APICalls.getCount(resp)+" "); + _this.populate(_this.profile_template.followed, APICalls.getCount(resp) + " "); } }); @@ -356,11 +356,47 @@ function(HostApp, Core, APICalls, URI) { } }); + var url = HostApp.serverUrl("posts_feed") + "?entities=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/status/v0#"); + APICalls.head(url, { + callback: function(resp) { + _this.populate(_this.profile_template.posts, APICalls.getCount(resp) + " "); + } + }); +*/ + + // is following you + // FIXME: should use HEAD + var url = HostApp.serverUrl("posts_feed") + "?entities=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/subscription/v0#https://tent.io/types/status/v0") + "&mentions=" + encodeURIComponent(HostApp.stringForKey("entity")); + APICalls.get(url, { + callback: function(resp) { + var json = JSON.parse(resp.responseText); + if (json.posts.length > 0) { + _this.relationships.following_you = true; + } else { + _this.relationships.following_you = false; + } + _this.setRelationships(); + } + }); + + // is followed by you + // FIXME: should use HEAD + var url = HostApp.serverUrl("posts_feed") + "?mentions=" + encodeURIComponent(this.entity) + "&types=" + encodeURIComponent("https://tent.io/types/subscription/v0#https://tent.io/types/status/v0"); + APICalls.get(url, { + callback: function(resp) { + var json = JSON.parse(resp.responseText); + debug(json) + if (json.posts.length > 0) { + _this.relationships.followed_by_you = true; + } else { + _this.relationships.followed_by_you = false; + } + _this.setRelationships(); + } + }); + return; - - - - +/* if (this.entity != HostApp.stringForKey("entity")) { @@ -395,7 +431,7 @@ function(HostApp, Core, APICalls, URI) { APICalls.http_call(url.toString(), "GET", function(resp) { _this.populate(_this.profile_template.posts, resp.responseText); - }, null, false); + }, null, false);*/ } Profile.prototype.setRelationships = function() { @@ -415,93 +451,9 @@ function(HostApp, Core, APICalls, URI) { } - Profile.prototype.getStatuses = function(root_url, add_search, append) { - var _this = this; - - add_search = add_search || {}; - - var url = URI(root_url + "/posts"); - url.addSearch("limit", this.posts_limit); - - var post_types = [ - "https://tent.io/types/post/repost/v0.1.0", - "https://tent.io/types/post/status/v0.1.0", - "https://tent.io/types/post/photo/v0.1.0" - ]; - url.addSearch("post_types", post_types.join(",")); - - for(var key in add_search) { - url.addSearch(key, add_search[key]); - } - - APICalls.http_call(url.toString(), "GET", function(resp) { - - var statuses = JSON.parse(resp.responseText); - - _this.newStatus(statuses, append); - - }, null, false); - } - - - Profile.prototype.newStatus = function(statuses, append) { - - if(statuses != null && statuses.length > 0) { - - this.before.loading = false; - - if (append) statuses = statuses.reverse(); - - for(var i = statuses.length-1, c=0; i>=c; --i) { - - var status = statuses[i]; - - if (status.type == "https://tent.io/types/post/status/v0.1.0" || status.type == "https://tent.io/types/post/photo/v0.1.0") { - - var new_node = this.getStatusDOMElement(status); - - if(!append && this.body.childNodes.length > 0) { - - if(this.body.childNodes.length > this.max_length) { - - this.body.removeChild(this.body.lastChild); - } - - this.body.insertBefore(new_node, this.body.firstChild); - - } else { - - this.body.appendChild(new_node); - } - - } else if (status.type == "https://tent.io/types/post/delete/v0.1.0") { - - var li = document.getElementById("post-" + status.content.id + "-" + this.action); - if (li) { - this.body.removeChild(li); - } - } else if (status.type == "https://tent.io/types/post/repost/v0.1.0") { - - this.getRepost(status, this.body.firstChild); - } - - } - } - } - - Profile.prototype.getMoreStatusPosts = function() { - if (!this.before.loading) { - this.before.loading = true; - var add_search = { - "before_id": this.body.lastChild.status.id, - "before_id_entity": this.body.lastChild.status.entity - } - this.getStatuses(this.server, add_search, true); - } - } - - Profile.prototype.mention = function() { + Profile.prototype.getStatuses = function() { + Timeline.prototype.getNewData.call(this, {entities: this.entity}); } Profile.prototype.setFollowingButton = function(following) { @@ -533,6 +485,7 @@ function(HostApp, Core, APICalls, URI) { } else { _this.setFollowingButton(true); } + _this.getMeta(); }}); } else { @@ -561,6 +514,7 @@ function(HostApp, Core, APICalls, URI) { } else { _this.setFollowingButton(false); } + _this.getMeta(); } }); } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 3f0bf11..4c0cf8a 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -132,11 +132,6 @@ function(Core, APICalls, HostApp, URI) { uri.addSearch("max_refs", 20); uri.addSearch("profiles", "entity"); - if(this.since_id && !append) { - uri.addSearch("since_id", this.since_id); - uri.addSearch("since_id_entity", this.since_id_entity); - } - for (key in add_to_search) { uri.addSearch(key, add_to_search[key]); } @@ -147,12 +142,12 @@ function(Core, APICalls, HostApp, URI) { url += query; } - var data = null; - if (HostApp.stringForKey("user_access_token")) { if (!this.reload_blocked) { this.reload_blocked = true; + + debug(url) APICalls.get(url, { callback: function(resp) { From 5f55bb9b0d5f8530e87b892b9c409ba0d20bb9ea Mon Sep 17 00:00:00 2001 From: jeena Date: Sun, 1 Sep 2013 15:07:01 +0200 Subject: [PATCH 090/127] removed debug stuff --- WebKit/scripts/controller/NewPost.js | 3 --- WebKit/scripts/controller/Profile.js | 6 +++--- WebKit/scripts/controller/Timeline.js | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 6638b45..078848b 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -295,14 +295,11 @@ function(APICalls, HostApp) { data.mentions = mentions; - debug(data.mentions) - // Make tent flavored markdown mentions for (var i = 0; i < this.mentions.length; i++) { var mention = this.mentions[i]; data.content.text = this.replaceAll(data.content.text, mention.name, "^[" + mention.name + "](" + i + ")") } - debug(data.content.text) APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(data), { content_type: data.type, diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 4912ed7..840eed9 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -57,8 +57,6 @@ function(HostApp, Core, APICalls, URI, Timeline) { entity = HostApp.stringForKey("entity"); } - debug(entity) - this.clear(); this.entity = entity; this.following = null; @@ -385,7 +383,6 @@ function(HostApp, Core, APICalls, URI, Timeline) { APICalls.get(url, { callback: function(resp) { var json = JSON.parse(resp.responseText); - debug(json) if (json.posts.length > 0) { _this.relationships.followed_by_you = true; } else { @@ -504,6 +501,9 @@ function(HostApp, Core, APICalls, URI, Timeline) { type: "https://tent.io/types/subscription/v0#https://tent.io/types/status/v0" }; + debug(data) + debug(url) + APICalls.post(url, JSON.stringify(data), { content_type: data.type, callback: function(resp) { diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 4c0cf8a..43db2d3 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -146,10 +146,9 @@ function(Core, APICalls, HostApp, URI) { if (!this.reload_blocked) { this.reload_blocked = true; - debug(url) - APICalls.get(url, { callback: function(resp) { + debug(resp.responseText) those.reload_blocked = false; From a8b58216de40b3c63cab512f53a7133a90acb750 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 3 Sep 2013 13:06:35 +0200 Subject: [PATCH 091/127] added permissions scope --- WebKit/scripts/controller/NewPost.js | 1 + WebKit/scripts/controller/Oauth.js | 3 ++- WebKit/scripts/controller/Timeline.js | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 078848b..cd33d35 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -16,6 +16,7 @@ function(APICalls, HostApp) { this.mentions = []; document.body.className = "new_post"; + this.is_private = false; // Textarea diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 9999826..7967c12 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -35,7 +35,8 @@ function(HostApp, APICalls, Hmac) { "https://tent.io/types/photo/v0", "https://tent.io/types/cursor/v0" ] - } + }, + "scopes": ["permissions"] }, "permissions": { "public": false diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 43db2d3..c7d9331 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -146,9 +146,9 @@ function(Core, APICalls, HostApp, URI) { if (!this.reload_blocked) { this.reload_blocked = true; - debug(url) + APICalls.get(url, { callback: function(resp) { - debug(resp.responseText) + // FIXME this is getting data when it shouldn't debug(resp.responseText) those.reload_blocked = false; From e39331d6894f5b610f802738c949b3de95b83181 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 3 Sep 2013 14:29:45 +0200 Subject: [PATCH 092/127] showing replies too now --- WebKit/scripts/controller/Timeline.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index c7d9331..b6fcde9 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -75,7 +75,7 @@ function(Core, APICalls, HostApp, URI) { this.since_id_entity = status.entity; } - if (status.type == "https://tent.io/types/status/v0#") { + if (status.type == "https://tent.io/types/status/v0#" || status.type == "https://tent.io/types/status/v0#reply") { var new_node = this.getStatusDOMElement(status); From 37add84d292ec9a54ef7259f15866ce046ac0fc3 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 3 Sep 2013 15:05:09 +0200 Subject: [PATCH 093/127] remove myself from mentions --- WebKit/scripts/controller/NewPost.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index cd33d35..7806aba 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -89,7 +89,7 @@ function(APICalls, HostApp) { var entity = status.mentions[i].entity; // Sometimes there are mentions without entity, don't know why - if(entity) { + if(entity && entity != HostApp.stringForKey("entity")) { // fix broken profiles var profile = this.profiles[entity]; if(!profile) { From 27a9c511064cea5ef661eafe6188f4e4611d1f81 Mon Sep 17 00:00:00 2001 From: jeena Date: Tue, 3 Sep 2013 18:11:47 +0200 Subject: [PATCH 094/127] fixed space before link --- WebKit/scripts/helper/Core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 4b8983e..b88ece0 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -672,7 +672,7 @@ function(jQuery, APICalls, URI, HostApp) { .replace(/`([^`]+)`/g, "$1") .replace(/~([^~]+)~/g, "$1") .replace(/\#([^\s]+)/g, "#$1") - .replace(/(^|[^\^])\[([^\]]+)\]\(([^\)]+)\)/g, "$2") + .replace(/(^|[^\^])\[([^\]]+)\]\(([^\)]+)\)/g, "$1$2") .replace(/\^\[([^\]]+)\]\((\d+)\)/g, "$1"); } From 512688f5ab5696dc567d92f268c3b6f1291b10ed Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 4 Sep 2013 19:37:17 +0200 Subject: [PATCH 095/127] fixed conversation view --- WebKit/css/default.css | 4 + WebKit/scripts/controller/Conversation.js | 123 +++++++++++----------- WebKit/scripts/controller/Mentions.js | 6 +- WebKit/scripts/controller/Profile.js | 1 + WebKit/scripts/helper/APICalls.js | 5 +- WebKit/scripts/helper/Core.js | 48 ++++----- WebKit/scripts/main.js | 2 +- 7 files changed, 93 insertions(+), 96 deletions(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 76013fd..53cb8b3 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -286,6 +286,10 @@ aside { visibility: hidden; } +.repost, .remove { + display: none; /* FIXME: remove this; */ +} + li:hover aside .reply_to, li:hover aside .repost, li:hover aside .remove, li:hover aside .ago:before { visibility: visible; } diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index 817cf01..8a731da 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -23,6 +23,15 @@ function(HostApp, Core, APICalls, URI) { document.getElementById("content").appendChild(this.container); if(!this.standalone) this.hide(); + + // Stop loading if ESC is pressed + this.stopLoading = false; + var _this = this; + $(document).keydown(function(e) { + if (e.keyCode == 27) { // Esc + _this.stopLoading = true; + } + }); } Conversation.prototype = Object.create(Core.prototype); @@ -57,104 +66,92 @@ function(HostApp, Core, APICalls, URI) { Conversation.prototype.append = function(id, entity, node, add_after) { + if(this.stopLoading) return; + var _this = this; var callback = function(resp) { - var status = JSON.parse(resp.responseText); + var _statuses = JSON.parse(resp.responseText); + + for (var entity in _statuses.profiles) { + if (_statuses.profiles[entity] != null) { + bungloo.cache.profiles[entity] = _statuses.profiles[entity]; + } else { + bungloo.cache.profiles[entity] = {}; + } + } + + var status = _statuses.post; var dom_element = _this.getStatusDOMElement(status); if (node) { - - node.parentNode.insertBefore(dom_element, node); + if(add_after) { + node.parentNode.insertBefore(dom_element, node.nextSibling); + } else { + node.parentNode.insertBefore(dom_element, node); + } } else { dom_element.className = "highlight"; _this.body.appendChild(dom_element); - - _this.appendMentioned(id, entity, dom_element); } - for (var i = 0; i < status.mentions.length; i++) { - var mention = status.mentions[i]; - if(mention.post) { - _this.append(mention.post, mention.entity, dom_element); - } - } - } - - function getRemoteStatus(profile) { - var server = profile["https://tent.io/types/info/core/v0.1.0"].servers[0]; - APICalls.http_call(URI(server + "/posts/" + id).toString(), "GET", callback, null, false); - } - - var profile = this.cache.profiles.getItem(entity); - - if (entity == HostApp.stringForKey("entity")) { - - var url = URI(APICalls.mkApiRootPath("/posts/" + id)); - APICalls.http_call(url.toString(), "GET", callback, null); - - } else if(profile) { - - getRemoteStatus(profile); - - } else { - - APICalls.findProfileURL(entity, function(profile_url) { - - if (profile_url) { - - var profile = this.cache.profiles.getItem(entity); - if (profile) { - - getRemoteStatus(profile); - - } else { - - APICalls.http_call(profile_url, "GET", function(resp) { - - var profile = JSON.parse(resp.responseText) - this.cache.profiles.setItem(entity, profile); - getRemoteStatus(profile); - - }, null, false); // do not send auth-headers + // child posts + _this.appendMentioned(id, entity, dom_element); + + // parent posts + if(status.mentions) { + for (var i = 0; i < status.mentions.length; i++) { + var mention = status.mentions[i]; + if(mention.post) { + // don't load if it is already there + if(!document.getElementById("post-" + mention.post + "-" + _this.action)) { + _this.append(mention.post, mention.entity, dom_element); + } } } - }); + } } + + var url = HostApp.serverUrl("post") + .replace(/\{entity\}/, encodeURIComponent(entity)) + .replace(/\{post\}/, id) + + "?profiles=entity"; + + APICalls.get(url, { callback: callback }); } Conversation.prototype.appendMentioned = function(id, entity, node) { - var url = URI(APICalls.mkApiRootPath("/posts")); - url.addSearch("mentioned_post", id); - url.addSearch("post_types", "https%3A%2F%2Ftent.io%2Ftypes%2Fpost%2Fstatus%2Fv0.1.0"); - var _this = this; var callback = function(resp) { - var statuses = JSON.parse(resp.responseText); + var statuses = JSON.parse(resp.responseText).mentions; for (var i = 0; i < statuses.length; i++) { var status = statuses[i]; - var dom_element = _this.getStatusDOMElement(status); - _this.body.appendChild(dom_element); - _this.appendMentioned(status.id, status.entity, dom_element); + // don't load if it is already there + if(!document.getElementById("post-" + status.post + "-" + _this.action)) { + _this.append(status.post, status.entity ,node, true); + } } } - APICalls.http_call(url.toString(), "GET", callback); + var url = HostApp.serverUrl("post") + .replace(/\{entity\}/, encodeURIComponent(entity)) + .replace(/\{post\}/, id); + + APICalls.get(url, { + callback: callback, + accept: "application/vnd.tent.post-mentions.v0+json" + }); } - // /posts?limit=10&mentioned_post=gnqqyt&post_types=https%3A%2F%2Ftent.io%2Ftypes%2Fpost%2Fstatus%2Fv0.1.0,https%3A%2F%2Ftent.io%2Ftypes%2Fpost%2Frepost%2Fv0.1.0 HTTP/1.1" 200 - 0.0582 - - - return Conversation; }); \ No newline at end of file diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 80f1ab8..2117659 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -78,9 +78,11 @@ function(HostApp, Timeline, URI, APICalls, Core) { Mentions.prototype.setAllMentionsRead = function() { this.unread_mentions = 0; HostApp.unreadMentions(this.unread_mentions); - this.updateLatestMentionRead(); + //this.updateLatestMentionRead(); } + // FIXME: those two functions need to be rewritten + /* Mentions.prototype.updateLatestMentionRead = function() { for (var i = 0; i < this.body.childNodes.length; i++) { @@ -142,7 +144,7 @@ function(HostApp, Timeline, URI, APICalls, Core) { APICalls.http_call(url.toString(), "GET", callback); // FIXME: error callback }); } - + */ return Mentions; diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 840eed9..22acb6a 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -12,6 +12,7 @@ function(HostApp, Core, APICalls, URI, Timeline) { function Profile() { Timeline.call(this); + clearTimeout(this.reloadIntervall); // FIXME: reload for new data instead this.action = "profile"; diff --git a/WebKit/scripts/helper/APICalls.js b/WebKit/scripts/helper/APICalls.js index 7d97790..202a7cb 100644 --- a/WebKit/scripts/helper/APICalls.js +++ b/WebKit/scripts/helper/APICalls.js @@ -35,14 +35,13 @@ function(jQuery, HostApp, Hmac, Cache) { if((options.http_method == "POST" || options.http_method == "PUT") && !options.content_type) { console.error("No content type for " + options.url); return; - } else if(options.content_type != "AAA") { + + } else { if(options.content_type == "application/json") { content_type = "application/json"; } else if(options.content_type) { content_type = "application/vnd.tent.post.v0+json; charset=UTF-8; type=\"" + options.content_type + "\""; } - } else { - content_type = 'application/vnd.tent.post.v0+json; charset=UTF-8; type="https://tent.io/types/status/v0#"'; } var settings = { diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index b88ece0..2e970a8 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -233,7 +233,7 @@ function(jQuery, APICalls, URI, HostApp) { return false; } - if(bungloo.cache.profiles[status.entity].name) template.username.innerText = bungloo.cache.profiles[status.entity].name; + if(bungloo.cache.profiles[status.entity] && bungloo.cache.profiles[status.entity].name) template.username.innerText = bungloo.cache.profiles[status.entity].name; else template.username.innerText = status.entity; template.username.href = status.entity; template.username.title = status.entity; @@ -552,13 +552,15 @@ function(jQuery, APICalls, URI, HostApp) { if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { e = "https://" + e; } - for (var j = 0; j < mentions.length; j++) { - var m = mentions[j]; - if(m.entity.startsWith(e)) { - mentions_in_text.push({ - entity: m.entity, - text: name - }); + if(mentions) { + for (var j = 0; j < mentions.length; j++) { + var m = mentions[j]; + if(m.entity.startsWith(e)) { + mentions_in_text.push({ + entity: m.entity, + text: name + }); + } } } } @@ -601,25 +603,17 @@ function(jQuery, APICalls, URI, HostApp) { } } - var p = _this.cache.profiles.getItem(mention.entity); - if (p) { - - profile(p); - - } else { - - APICalls.findProfileURL(mention.entity, function(profile_url) { - if (profile_url) { - APICalls.http_call(profile_url, "GET", function(resp) { - if (resp.status >= 200 && resp.status < 400) { - var p = JSON.parse(resp.responseText); - _this.cache.profiles.setItem(mention.entity, p); - profile(p) - } - }, null, false); // do not send auth-headers - } - }); - } + APICalls.findProfileURL(mention.entity, function(profile_url) { + if (profile_url) { + APICalls.http_call(profile_url, "GET", function(resp) { + if (resp.status >= 200 && resp.status < 400) { + var p = JSON.parse(resp.responseText); + _this.cache.profiles.setItem(mention.entity, p); + profile(p) + } + }, null, false); // do not send auth-headers + } + }); })(mention); } diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index 3b48c90..3610608 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -139,7 +139,7 @@ function loadCssPlugin(css_url) { function debug(string) { if (typeof string != "string") { - string = JSON.stringify(string); + string = JSON.stringify(string, null, ' '); } console.debug(string); From 91600015b9613467cc8f701bbd1c19fc11732108 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 4 Sep 2013 20:23:14 +0200 Subject: [PATCH 096/127] fixed problem with some replies --- Qt/Windows.py | 2 +- WebKit/scripts/helper/Core.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Qt/Windows.py b/Qt/Windows.py index 762a02a..3fb4d48 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -409,7 +409,7 @@ class NewPost(Helper.RestorableWindow): helpMenu.addAction(developerExtrasAction) def load_finished(self, widget): - callback = "function() { bungloo.newpost.setStatus('%s'); }" % (self.status_string) + callback = "function() { bungloo.newpost.setStatus(\"%s\"); }" % (self.status_string) script = "function HostAppGo() { start('newpost', " + callback + "); }" self.webView.page().mainFrame().evaluateJavaScript(script) self.webView.setFocus() diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 2e970a8..fe28939 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -555,7 +555,7 @@ function(jQuery, APICalls, URI, HostApp) { if(mentions) { for (var j = 0; j < mentions.length; j++) { var m = mentions[j]; - if(m.entity.startsWith(e)) { + if(m && m.entity && m.entity.startsWith(e)) { mentions_in_text.push({ entity: m.entity, text: name From ff09134479808e0ba93542ddecb4a7b79ca89447 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 4 Sep 2013 22:25:56 +0200 Subject: [PATCH 097/127] using tent-markdown-js now --- WebKit/scripts/helper/Core.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index fe28939..f293603 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -3,11 +3,12 @@ define([ "helper/APICalls", "lib/URI", "helper/HostApp", + "lib/Markdown", "lib/Timeago", "lib/SingleDoubleClick" ], -function(jQuery, APICalls, URI, HostApp) { +function(jQuery, APICalls, URI, HostApp, Markdown) { function Core() { this.saveScrollTop = 0; @@ -660,14 +661,8 @@ function(jQuery, APICalls, URI, HostApp) { } Core.prototype.replaceURLWithHTMLLinks = function(text, entities, message_node) { - // FIXME: this has to be done better so one can nest that stuff and escape with \ - return text.replace(/_([^_]+)_/g, "$1") - .replace(/\*([^\*]+)\*/g, "$1") - .replace(/`([^`]+)`/g, "$1") - .replace(/~([^~]+)~/g, "$1") - .replace(/\#([^\s]+)/g, "#$1") - .replace(/(^|[^\^])\[([^\]]+)\]\(([^\)]+)\)/g, "$1$2") - .replace(/\^\[([^\]]+)\]\((\d+)\)/g, "$1"); + return Markdown.toHTML( text, 'Tent', { footnotes: entities } ) + .replace(/\^ Date: Thu, 5 Sep 2013 00:47:58 +0200 Subject: [PATCH 098/127] added separation between names --- WebKit/css/default.css | 4 ++++ WebKit/scripts/helper/Core.js | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 53cb8b3..3e6d74f 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -403,6 +403,10 @@ li.mentioned { font-weight: bold; } +.name + .name:before { + content: ", "; +} + .message { clear: right; } diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index f293603..ab65e60 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -266,8 +266,6 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { this.parseForMedia(text, template.images); - text = text.escapeHTML().replace(/\n/g, "
      "); - var entities = [status.entity]; if (status.mentions) { status.mentions.map(function (mention) { From a6b4b84fa087a541ec9c7d67fac4c11acb20c455 Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 5 Sep 2013 00:48:28 +0200 Subject: [PATCH 099/127] added tent-markdown files --- WebKit/scripts/lib/Markdown.js | 7 + WebKit/scripts/lib/vendor/tent-markdown.js | 1219 ++++++++++++++++++++ 2 files changed, 1226 insertions(+) create mode 100644 WebKit/scripts/lib/Markdown.js create mode 100644 WebKit/scripts/lib/vendor/tent-markdown.js diff --git a/WebKit/scripts/lib/Markdown.js b/WebKit/scripts/lib/Markdown.js new file mode 100644 index 0000000..bbe9077 --- /dev/null +++ b/WebKit/scripts/lib/Markdown.js @@ -0,0 +1,7 @@ +define([ + "lib/vendor/tent-markdown" +], + +function() { + return window.markdown; +}); \ No newline at end of file diff --git a/WebKit/scripts/lib/vendor/tent-markdown.js b/WebKit/scripts/lib/vendor/tent-markdown.js new file mode 100644 index 0000000..34013e2 --- /dev/null +++ b/WebKit/scripts/lib/vendor/tent-markdown.js @@ -0,0 +1,1219 @@ +/* + Adapted from https://github.com/twitter/twitter-text-js + + Copyright 2011 Twitter, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this work except in compliance with the License. + You may obtain a copy of the License below, or at: + + http://www.apache.org/licenses/LICENSE-2.0 +*/ + +(function(expose) { + + twttr = { txt: { regexen: {} } } + + // Builds a RegExp + function regexSupplant(regex, flags) { + flags = flags || ""; + if (typeof regex !== "string") { + if (regex.global && flags.indexOf("g") < 0) { + flags += "g"; + } + if (regex.ignoreCase && flags.indexOf("i") < 0) { + flags += "i"; + } + if (regex.multiline && flags.indexOf("m") < 0) { + flags += "m"; + } + + regex = regex.source; + } + + return new RegExp(regex.replace(/#\{(\w+)\}/g, function(match, name) { + var newRegex = twttr.txt.regexen[name] || ""; + if (typeof newRegex !== "string") { + newRegex = newRegex.source; + } + return newRegex; + }), flags); + } + + twttr.txt.regexSupplant = regexSupplant; + + // simple string interpolation + function stringSupplant(str, values) { + return str.replace(/#\{(\w+)\}/g, function(match, name) { + return values[name] || ""; + }); + } + + var fromCode = String.fromCharCode; + var INVALID_CHARS = [ + fromCode(0xFFFE), + fromCode(0xFEFF), // BOM + fromCode(0xFFFF) // Special + ]; + + twttr.txt.regexen.invalid_chars_group = regexSupplant(INVALID_CHARS.join("")); + + twttr.txt.stringSupplant = stringSupplant; + + twttr.txt.stringSupplant = stringSupplant + + var UNICODE_SPACES = [ + fromCode(0x0020), // White_Space # Zs SPACE + fromCode(0x0085), // White_Space # Cc + fromCode(0x00A0), // White_Space # Zs NO-BREAK SPACE + fromCode(0x1680), // White_Space # Zs OGHAM SPACE MARK + fromCode(0x180E), // White_Space # Zs MONGOLIAN VOWEL SEPARATOR + fromCode(0x2028), // White_Space # Zl LINE SEPARATOR + fromCode(0x2029), // White_Space # Zp PARAGRAPH SEPARATOR + fromCode(0x202F), // White_Space # Zs NARROW NO-BREAK SPACE + fromCode(0x205F), // White_Space # Zs MEDIUM MATHEMATICAL SPACE + fromCode(0x3000) // White_Space # Zs IDEOGRAPHIC SPACE + ]; + + twttr.txt.regexen.spaces_group = regexSupplant(UNICODE_SPACES.join("")); + twttr.txt.regexen.spaces = regexSupplant("[" + UNICODE_SPACES.join("") + "]"); + twttr.txt.regexen.invalid_chars_group = regexSupplant(INVALID_CHARS.join("")); + twttr.txt.regexen.punct = /\!'#%&'\(\)*\+,\\\-\.\/:;<=>\?@\[\]\^_{|}~\$/; + + // URL related regex collection + twttr.txt.regexen.validUrlPrecedingChars = regexSupplant(/(?:[^A-Za-z0-9@@$###{invalid_chars_group}]|^)/); + twttr.txt.regexen.invalidUrlWithoutProtocolPrecedingChars = /[-_.\/]$/; + twttr.txt.regexen.invalidDomainChars = stringSupplant("#{punct}#{spaces_group}#{invalid_chars_group}", twttr.txt.regexen); + twttr.txt.regexen.validDomainChars = regexSupplant(/[^#{invalidDomainChars}]/); + twttr.txt.regexen.validSubdomain = regexSupplant(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\.)/); + twttr.txt.regexen.validDomainName = regexSupplant(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\.)/); + twttr.txt.regexen.validGTLD = regexSupplant(/(?:(?:aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|xxx|local)(?=[^0-9a-zA-Z]|$))/); + twttr.txt.regexen.validCCTLD = regexSupplant(/(?:(?:ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)(?=[^0-9a-zA-Z]|$))/); + twttr.txt.regexen.validPunycode = regexSupplant(/(?:xn--[0-9a-z]+)/); + twttr.txt.regexen.validDomain = regexSupplant(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/); + twttr.txt.regexen.validAsciiDomain = regexSupplant(/(?:(?:[-a-z0-9#{latinAccentChars}]+)\.)+(?:#{validGTLD}|#{validCCTLD}|#{validPunycode})/gi); + twttr.txt.regexen.invalidShortDomain = regexSupplant(/^#{validDomainName}#{validCCTLD}$/); + + twttr.txt.regexen.validPortNumber = regexSupplant(/[0-9]+/); + + twttr.txt.regexen.validGeneralUrlPathChars = regexSupplant(/[a-z0-9!\*';:=\+,\.\$\/%#\[\]\-_~|&#{latinAccentChars}]/i); + // Allow URL paths to contain balanced parens + // 1. Used in Wikipedia URLs like /Primer_(film) + // 2. Used in IIS sessions like /S(dfd346)/ + twttr.txt.regexen.validUrlBalancedParens = regexSupplant(/\(#{validGeneralUrlPathChars}+\)/i); + // Valid end-of-path chracters (so /foo. does not gobble the period). + // 1. Allow =&# for empty URL parameters and other URL-join artifacts + twttr.txt.regexen.validUrlPathEndingChars = regexSupplant(/[\+\-a-z0-9=_#\/#{latinAccentChars}]|(?:#{validUrlBalancedParens})/i); + // Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/ + twttr.txt.regexen.validUrlPath = regexSupplant('(?:' + + '(?:' + + '#{validGeneralUrlPathChars}*' + + '(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' + + '#{validUrlPathEndingChars}'+ + ')|(?:@#{validGeneralUrlPathChars}+\/)'+ + ')', 'i'); + + twttr.txt.regexen.validUrlQueryChars = /[a-z0-9!?\*'\(\);:&=\+\$\/%#\[\]\-_\.,~|]/i; + twttr.txt.regexen.validUrlQueryEndingChars = /[a-z0-9_&=#\/]/i; + twttr.txt.regexen.extractUrl = regexSupplant( + '(' + // $1 total match + '(#{validUrlPrecedingChars})' + // $2 Preceeding chracter + '(' + // $3 URL + '(https?:\\/\\/)?' + // $4 Protocol (optional) + '(#{validDomain})' + // $5 Domain(s) + '(?::(#{validPortNumber}))?' + // $6 Port number (optional) + '(\\/#{validUrlPath}*)?' + // $7 URL Path + '(\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?' + // $8 Query String + ')' + + ')' + , 'gi'); + + twttr.txt.regexen.validTcoUrl = /^https?:\/\/t\.co\/[a-z0-9]+/i; + + twttr.extractUrlsWithIndices = function(text, options) { + if (!options) { + options = {extractUrlsWithoutProtocol: true}; + } + + if (!text || (options.extractUrlsWithoutProtocol ? !text.match(/\./) : !text.match(/:/))) { + return []; + } + + var urls = []; + + while (twttr.txt.regexen.extractUrl.exec(text)) { + var before = RegExp.$2, url = RegExp.$3, protocol = RegExp.$4, domain = RegExp.$5, path = RegExp.$7; + var endPosition = twttr.txt.regexen.extractUrl.lastIndex, + startPosition = endPosition - url.length; + + // if protocol is missing and domain contains non-ASCII characters, + // extract ASCII-only domains. + if (!protocol) { + if (!options.extractUrlsWithoutProtocol + || before.match(twttr.txt.regexen.invalidUrlWithoutProtocolPrecedingChars)) { + continue; + } + var lastUrl = null, + lastUrlInvalidMatch = false, + asciiEndPosition = 0; + domain.replace(twttr.txt.regexen.validAsciiDomain, function(asciiDomain) { + var asciiStartPosition = domain.indexOf(asciiDomain, asciiEndPosition); + asciiEndPosition = asciiStartPosition + asciiDomain.length; + lastUrl = { + url: asciiDomain, + indices: [startPosition + asciiStartPosition, startPosition + asciiEndPosition] + }; + if (!before.match(/^[\^]$/)) { + lastUrlInvalidMatch = asciiDomain.match(twttr.txt.regexen.invalidShortDomain); + } + if (!lastUrlInvalidMatch) { + urls.push(lastUrl); + } + }); + + // no ASCII-only domain found. Skip the entire URL. + if (lastUrl == null) { + continue; + } + + // lastUrl only contains domain. Need to add path and query if they exist. + if (path) { + if (lastUrlInvalidMatch) { + urls.push(lastUrl); + } + lastUrl.url = url.replace(domain, lastUrl.url); + lastUrl.indices[1] = endPosition; + } + } else { + // In the case of t.co URLs, don't allow additional path characters. + if (url.match(twttr.txt.regexen.validTcoUrl)) { + url = RegExp.lastMatch; + endPosition = startPosition + url.length; + } + urls.push({ + url: url, + indices: [startPosition, endPosition] + }); + } + } + + return urls; + }; + + expose.extractUrlsWithIndices = twttr.extractUrlsWithIndices; + +})((function() { + if (typeof exports === "undefined") { + window.twttr = {}; + return window.twttr; + } else { + return exports; + } +})()); +// Released under MIT license +// Copyright (c) 2009-2010 Dominic Baggott +// Copyright (c) 2009-2010 Ash Berlin +// Copyright (c) 2011 Christoph Dorn (http://www.christophdorn.com) + +/*jshint browser:true, devel:true */ + +(function( expose ) { + +var Markdown = expose.Markdown = function(dialect) { + switch (typeof dialect) { + case "undefined": + this.dialect = Markdown.dialects.Gruber; + break; + case "object": + this.dialect = dialect; + break; + default: + if ( dialect in Markdown.dialects ) { + this.dialect = Markdown.dialects[dialect]; + } + else { + throw new Error("Unknown Markdown dialect '" + String(dialect) + "'"); + } + break; + } + this.em_state = []; + this.strong_state = []; + this.debug_indent = ""; +}; + +/** + * parse( markdown, [dialect] ) -> JsonML + * - markdown (String): markdown string to parse + * - dialect (String | Dialect): the dialect to use, defaults to gruber + * + * Parse `markdown` and return a markdown document as a Markdown.JsonML tree. + **/ +expose.parse = function( source, dialect ) { + // dialect will default if undefined + var md = new Markdown( dialect ); + return md.toTree( source ); +}; + +/** + * toHTML( markdown, [dialect] ) -> String + * toHTML( md_tree ) -> String + * - markdown (String): markdown string to parse + * - md_tree (Markdown.JsonML): parsed markdown tree + * + * Take markdown (either as a string or as a JsonML tree) and run it through + * [[toHTMLTree]] then turn it into a well-formated HTML fragment. + **/ +expose.toHTML = function toHTML( source , dialect , options ) { + var input = expose.toHTMLTree( source , dialect , options ); + + return expose.renderJsonML( input ); +}; + +/** + * toHTMLTree( markdown, [dialect] ) -> JsonML + * toHTMLTree( md_tree ) -> JsonML + * - markdown (String): markdown string to parse + * - dialect (String | Dialect): the dialect to use, defaults to gruber + * - md_tree (Markdown.JsonML): parsed markdown tree + * + * Turn markdown into HTML, represented as a JsonML tree. If a string is given + * to this function, it is first parsed into a markdown tree by calling + * [[parse]]. + **/ +expose.toHTMLTree = function toHTMLTree( input, dialect , options ) { + // convert string input to an MD tree + if ( typeof input ==="string" ) input = this.parse( input, dialect ); + + // Now convert the MD tree to an HTML tree + + // remove references from the tree + var attrs = extract_attr( input ), + refs = {}; + + if ( attrs && attrs.references ) { + refs = attrs.references; + } + + var html = convert_tree_to_html( input, refs , options ); + merge_text_nodes( html ); + return html; +}; + +// For Spidermonkey based engines +function mk_block_toSource() { + return "Markdown.mk_block( " + + uneval(this.toString()) + + ", " + + uneval(this.trailing) + + ", " + + uneval(this.lineNumber) + + " )"; +} + +// node +function mk_block_inspect() { + var util = require("util"); + return "Markdown.mk_block( " + + util.inspect(this.toString()) + + ", " + + util.inspect(this.trailing) + + ", " + + util.inspect(this.lineNumber) + + " )"; + +} + +var mk_block = Markdown.mk_block = function(block, trail, line) { + // Be helpful for default case in tests. + if ( arguments.length == 1 ) trail = "\n\n"; + + var s = new String(block); + s.trailing = trail; + // To make it clear its not just a string + s.inspect = mk_block_inspect; + s.toSource = mk_block_toSource; + + if ( line != undefined ) + s.lineNumber = line; + + return s; +}; + +function count_lines( str ) { + var n = 0, i = -1; + while ( ( i = str.indexOf("\n", i + 1) ) !== -1 ) n++; + return n; +} + +// Internal - split source into rough blocks +Markdown.prototype.split_blocks = function splitBlocks( input, startLine ) { + input = input.replace(/(\r\n|\n|\r)/g, "\n"); + // [\s\S] matches _anything_ (newline or space) + var re = /([\s\S]+?)($|\n(?:\s*\n|$)+)/g, + blocks = [], + m; + + var line_no = 1; + + if ( ( m = /^(\s*\n)/.exec(input) ) != null ) { + // skip (but count) leading blank lines + line_no += count_lines( m[0] ); + re.lastIndex = m[0].length; + } + + while ( ( m = re.exec(input) ) !== null ) { + blocks.push( mk_block( m[1], m[2], line_no ) ); + line_no += count_lines( m[0] ); + } + + return blocks; +}; + +/** + * Markdown#processBlock( block, next ) -> undefined | [ JsonML, ... ] + * - block (String): the block to process + * - next (Array): the following blocks + * + * Process `block` and return an array of JsonML nodes representing `block`. + * + * It does this by asking each block level function in the dialect to process + * the block until one can. Succesful handling is indicated by returning an + * array (with zero or more JsonML nodes), failure by a false value. + * + * Blocks handlers are responsible for calling [[Markdown#processInline]] + * themselves as appropriate. + * + * If the blocks were split incorrectly or adjacent blocks need collapsing you + * can adjust `next` in place using shift/splice etc. + * + * If any of this default behaviour is not right for the dialect, you can + * define a `__call__` method on the dialect that will get invoked to handle + * the block processing. + */ +Markdown.prototype.processBlock = function processBlock( block, next ) { + var cbs = this.dialect.block, + ord = cbs.__order__; + + if ( "__call__" in cbs ) { + return cbs.__call__.call(this, block, next); + } + + for ( var i = 0; i < ord.length; i++ ) { + //D:this.debug( "Testing", ord[i] ); + var res = cbs[ ord[i] ].call( this, block, next ); + if ( res ) { + //D:this.debug(" matched"); + if ( !isArray(res) || ( res.length > 0 && !( isArray(res[0]) ) ) ) + this.debug(ord[i], "didn't return a proper array"); + //D:this.debug( "" ); + return res; + } + } + + // Uhoh! no match! Should we throw an error? + return []; +}; + +Markdown.prototype.processInline = function processInline( block ) { + return this.dialect.inline.__call__.call( this, String( block ) ); +}; + +/** + * Markdown#toTree( source ) -> JsonML + * - source (String): markdown source to parse + * + * Parse `source` into a JsonML tree representing the markdown document. + **/ +// custom_tree means set this.tree to `custom_tree` and restore old value on return +Markdown.prototype.toTree = function toTree( source, custom_root ) { + var blocks = source instanceof Array ? source : this.split_blocks( source ); + + // Make tree a member variable so its easier to mess with in extensions + var old_tree = this.tree; + try { + this.tree = custom_root || this.tree || [ "markdown" ]; + + blocks: + while ( blocks.length ) { + var b = this.processBlock( blocks.shift(), blocks ); + + // Reference blocks and the like won't return any content + if ( !b.length ) continue blocks; + + this.tree.push.apply( this.tree, b ); + } + return this.tree; + } + finally { + if ( custom_root ) { + this.tree = old_tree; + } + } +}; + +// Noop by default +Markdown.prototype.debug = function () { + var args = Array.prototype.slice.call( arguments); + args.unshift(this.debug_indent); + if ( typeof print !== "undefined" ) + print.apply( print, args ); + if ( typeof console !== "undefined" && typeof console.log !== "undefined" ) + console.log.apply( null, args ); +} + +Markdown.prototype.loop_re_over_block = function( re, block, cb ) { + // Dont use /g regexps with this + var m, + b = block.valueOf(); + + while ( b.length && (m = re.exec(b) ) != null ) { + b = b.substr( m[0].length ); + cb.call(this, m); + } + return b; +}; + +/** + * Markdown.dialects + * + * Namespace of built-in dialects. + **/ +Markdown.dialects = {}; + +// Build default order from insertion order. +Markdown.buildBlockOrder = function(d) { + var ord = []; + for ( var i in d ) { + if ( i == "__order__" || i == "__call__" ) continue; + ord.push( i ); + } + d.__order__ = ord; +}; + +// Build patterns for inline matcher +Markdown.buildInlinePatterns = function(d) { + var patterns = []; + + for ( var i in d ) { + // __foo__ is reserved and not a pattern + if ( i.match( /^__.*__$/) ) continue; + var l = i.replace( /([\\.*+?|()\[\]{}])/g, "\\$1" ) + .replace( /\n/, "\\n" ); + patterns.push( i.length == 1 ? l : "(?:" + l + ")" ); + } + + patterns = patterns.join("|"); + d.__patterns__ = patterns; + //print("patterns:", uneval( patterns ) ); + + var fn = d.__call__; + d.__call__ = function(text, pattern) { + if ( pattern != undefined ) { + return fn.call(this, text, pattern); + } + else + { + return fn.call(this, text, patterns); + } + }; +}; + +Markdown.DialectHelpers = {}; +Markdown.DialectHelpers.inline_until_char = function( text, want ) { + var consumed = 0, + nodes = []; + + while ( true ) { + if ( text.charAt( consumed ) == want ) { + // Found the character we were looking for + consumed++; + return [ consumed, nodes ]; + } + + if ( consumed >= text.length ) { + // No closing char found. Abort. + return null; + } + + var res = this.dialect.inline.__oneElement__.call(this, text.substr( consumed ) ); + consumed += res[ 0 ]; + // Add any returned nodes. + nodes.push.apply( nodes, res.slice( 1 ) ); + } +} + +var isArray = Array.isArray || function(obj) { + return Object.prototype.toString.call(obj) == "[object Array]"; +}; + +function extract_attr( jsonml ) { + return isArray(jsonml) + && jsonml.length > 1 + && typeof jsonml[ 1 ] === "object" + && !( isArray(jsonml[ 1 ]) ) + ? jsonml[ 1 ] + : undefined; +} + + + +/** + * renderJsonML( jsonml[, options] ) -> String + * - jsonml (Array): JsonML array to render to XML + * - options (Object): options + * + * Converts the given JsonML into well-formed XML. + * + * The options currently understood are: + * + * - root (Boolean): wether or not the root node should be included in the + * output, or just its children. The default `false` is to not include the + * root itself. + */ +expose.renderJsonML = function( jsonml, options ) { + options = options || {}; + // include the root element in the rendered output? + options.root = options.root || false; + + var content = []; + + if ( options.root ) { + content.push( render_tree( jsonml ) ); + } + else { + jsonml.shift(); // get rid of the tag + if ( jsonml.length && typeof jsonml[ 0 ] === "object" && !( jsonml[ 0 ] instanceof Array ) ) { + jsonml.shift(); // get rid of the attributes + } + + while ( jsonml.length ) { + content.push( render_tree( jsonml.shift() ) ); + } + } + + return content.join( "\n\n" ); +}; + +function escapeHTML( text ) { + return text.replace( /&/g, "&" ) + .replace( //g, ">" ) + .replace( /"/g, """ ) + .replace( /'/g, "'" ); +} + +function render_tree( jsonml ) { + // basic case + if ( typeof jsonml === "string" ) { + return escapeHTML( jsonml ); + } + + var tag = jsonml.shift(), + attributes = {}, + content = []; + + if ( jsonml.length && typeof jsonml[ 0 ] === "object" && !( jsonml[ 0 ] instanceof Array ) ) { + attributes = jsonml.shift(); + } + + while ( jsonml.length ) { + content.push( render_tree( jsonml.shift() ) ); + } + + // edge case where tag has been removed at some point (e.g. preprocessTreeNode) + if ( !tag ) { + return content + } + + var tag_attrs = ""; + for ( var a in attributes ) { + tag_attrs += " " + a + '="' + escapeHTML( attributes[ a ] ) + '"'; + } + + // be careful about adding whitespace here for inline elements + if ( tag == "img" || tag == "br" || tag == "hr" ) { + return "<"+ tag + tag_attrs + "/>"; + } + else { + return "<"+ tag + tag_attrs + ">" + content.join( "" ) + ""; + } +} + +function convert_tree_to_html( tree, references, options ) { + var i; + options = options || {}; + + // shallow clone + var jsonml = tree.slice( 0 ); + + if ( typeof options.preprocessTreeNode === "function" ) { + jsonml = options.preprocessTreeNode(jsonml, references); + } + + // Clone attributes if they exist + var attrs = extract_attr( jsonml ); + if ( attrs ) { + jsonml[ 1 ] = {}; + for ( i in attrs ) { + jsonml[ 1 ][ i ] = attrs[ i ]; + } + attrs = jsonml[ 1 ]; + } + + // basic case + if ( typeof jsonml === "string" ) { + return jsonml; + } + + // convert this node + switch ( jsonml[ 0 ] ) { + case "header": + jsonml[ 0 ] = "h" + jsonml[ 1 ].level; + delete jsonml[ 1 ].level; + break; + case "bulletlist": + jsonml[ 0 ] = "ul"; + break; + case "numberlist": + jsonml[ 0 ] = "ol"; + break; + case "listitem": + jsonml[ 0 ] = "li"; + break; + case "para": + jsonml[ 0 ] = "p"; + break; + case "markdown": + jsonml[ 0 ] = "html"; + if ( attrs ) delete attrs.references; + break; + case "code_block": + jsonml[ 0 ] = "pre"; + i = attrs ? 2 : 1; + var code = [ "code" ]; + code.push.apply( code, jsonml.splice( i, jsonml.length - i ) ); + jsonml[ i ] = code; + break; + case "inlinecode": + jsonml[ 0 ] = "code"; + break; + case "img": + jsonml[ 1 ].src = jsonml[ 1 ].href; + delete jsonml[ 1 ].href; + break; + case "linebreak": + jsonml[ 0 ] = "br"; + break; + case "link": + jsonml[ 0 ] = "a"; + break; + case "link_ref": + jsonml[ 0 ] = "a"; + + // grab this ref and clean up the attribute node + var ref = references[ attrs.ref ]; + + // if the reference exists, make the link + if ( ref ) { + delete attrs.ref; + + // add in the href and title, if present + attrs.href = ref.href; + if ( ref.title ) { + attrs.title = ref.title; + } + + // get rid of the unneeded original text + delete attrs.original; + } + // the reference doesn't exist, so revert to plain text + else { + return attrs.original; + } + break; + case "img_ref": + jsonml[ 0 ] = "img"; + + // grab this ref and clean up the attribute node + var ref = references[ attrs.ref ]; + + // if the reference exists, make the link + if ( ref ) { + delete attrs.ref; + + // add in the href and title, if present + attrs.src = ref.href; + if ( ref.title ) { + attrs.title = ref.title; + } + + // get rid of the unneeded original text + delete attrs.original; + } + // the reference doesn't exist, so revert to plain text + else { + return attrs.original; + } + break; + } + + // convert all the children + i = 1; + + // deal with the attribute node, if it exists + if ( attrs ) { + // if there are keys, skip over it + for ( var key in jsonml[ 1 ] ) { + i = 2; + } + // if there aren't, remove it + if ( i === 1 ) { + jsonml.splice( i, 1 ); + } + } + + for ( ; i < jsonml.length; ++i ) { + jsonml[ i ] = convert_tree_to_html( jsonml[ i ], references, options ); + } + + return jsonml; +} + + +// merges adjacent text nodes into a single node +function merge_text_nodes( jsonml ) { + // skip the tag name and attribute hash + var i = extract_attr( jsonml ) ? 2 : 1; + + while ( i < jsonml.length ) { + // if it's a string check the next item too + if ( typeof jsonml[ i ] === "string" ) { + if ( i + 1 < jsonml.length && typeof jsonml[ i + 1 ] === "string" ) { + // merge the second string into the first and remove it + jsonml[ i ] += jsonml.splice( i + 1, 1 )[ 0 ]; + } + else { + ++i; + } + } + // if it's not a string recurse + else { + merge_text_nodes( jsonml[ i ] ); + ++i; + } + } +} + +} )( (function() { + if ( typeof exports === "undefined" ) { + window.markdown = {}; + return window.markdown; + } + else { + return exports; + } +} )() ); +// Released under BSD license +// Copyright (c) 2013 Apollic Software, LLC +(function (expose) { + var Preprocesser, forEach; + + (function (Markdown) { + + // Tent markdown flavor (https://github.com/tent/tent.io/issues/180) + Markdown.dialects.Tent = { + block: { + // member name: fn(block, remaining_blocks) -> json markdown tree or undefined + + // Match inline urls + autolink: function autolink( block, next ) { + var urls = expose.extractUrlsWithIndices(block); + + if (!urls.length) { + // no urls matched + return; + } + + var autolink_items = []; + + var item; + for (var i = 0; i < urls.length; i++) { + item = urls[i]; + + if ( block.slice(0, item.indices[1] + 1).match(/\[[^\]]+\]\([^\)]+\)$/) ) { + // markdown link syntax, don't autolink + continue; + } + + if ( block.slice(item.indices[0] - 1, block.length).match(/^\[[^\]]+\]\([^\)]+\)/) ) { + // url inside markdown link display text, don't autolink + continue; + } + + if ( block.match('`') ) { + // check if the url is inside code backticks + + var _indices = [], + _regex = /`/g, + m = null; + while ( m = _regex.exec(block) ) { + _indices.push(m.index); + } + + var skip = false, + _last_index = null; + if ( _indices.length && (_indices.length % 2 === 0) ) { + for (var j = 0; j < _indices.length; j += 2) { + if ( (_indices[j] < item.indices[0]) && (_indices[j+1] > item.indices[1]) ) { + // matched url is inside code backticks, ignore + _last_index = _indices[j+1]; + skip = true; + } + } + } + + if (skip === true) { + // don't autolink + continue; + } + } + + // we're good to process this link + autolink_items.push(item) + } + + if (!autolink_items.length) { + // there's nothing to autolink + return; + } + + // wrap matched urls in links + + var jsonml = ["para"], + _block = block, + item = null, + index_offset = 0, + before = null; + + for (var i = 0; i < autolink_items.length; i++) { + item = autolink_items[i]; + + // process text before url + before = _block.slice(0, item.indices[0] + index_offset); + if (before.length) { + jsonml = jsonml.concat( this.processInline(before) ); + } + + // linkify url + jsonml.push(["link", { href: item.url }, item.url]); + + // discard processed text + // and update index offset + _block = _block.slice(item.indices[1] + index_offset, _block.length) + index_offset -= before.length + (item.indices[1] - item.indices[0]) + } + + // process remaining text + jsonml = jsonml.concat( this.processInline(_block) ); + + return [jsonml]; + }, + + // Taken from Markdown.dialects.Gruber.block.para + para: function para( block, next ) { + // everything's a para! + return [ ["para"].concat( this.processInline( block ) ) ]; + } + }, + + inline: { + // member pattern_or_regex: (text, match, tree) -> [ length, string_or_tree ] + // __x__ members are not patterns + // __call__ is called by Markdown.prototype.processInline() + + /* + * Reserved member functions: + */ + + // Taken from Markdown.dialect.Gruber.inline.__oneElement__ + __oneElement__: function oneElement( text, patterns_or_re, previous_nodes ) { + var m, + res, + lastIndex = 0; + + patterns_or_re = patterns_or_re || this.dialect.inline.__patterns__; + var re = new RegExp( "([\\s\\S]*?)(" + (patterns_or_re.source || patterns_or_re) + ")" ); + + m = re.exec( text ); + if (!m) { + // Just boring text + return [ text.length, text ]; + } + else if ( m[1] ) { + // Some un-interesting text matched. Return that first + return [ m[1].length, m[1] ]; + } + + var res; + if ( m[2] in this.dialect.inline ) { + res = this.dialect.inline[ m[2] ].call( + this, + text.substr( m.index ), m, previous_nodes || [] ); + } + // Default for now to make dev easier. just slurp special and output it. + res = res || [ m[2].length, m[2] ]; + return res; + }, + + // Taken from Markdown.dialect.Gruber.inline.__call__ + __call__: function inline( text, patterns ) { + + var out = [], + res; + + function add(x) { + //D:self.debug(" adding output", uneval(x)); + if ( typeof x == "string" && typeof out[out.length-1] == "string" ) + out[ out.length-1 ] += x; + else + out.push(x); + } + + while ( text.length > 0 ) { + res = this.dialect.inline.__oneElement__.call(this, text, patterns, out ); + text = text.substr( res.shift() ); + forEach(res, add ) + } + + return out; + }, + + /* + * Pattern member functions: + */ + + // Taken from Markdown.dialects.Gruber.inline + // These characters are intersting elsewhere, so have rules for them so that + // chunks of plain text blocks don't include them + "]": function () {}, + "}": function () {}, + + // Taken from Markdown.dialects.Gruber.inline["\\"] + // Modification: change escape chars (removed { } # + - . ! and added ~) + "\\": function escaped( text ) { + // [ length of input processed, node/children to add... ] + // Only esacape: \ ` * _ [ ] ( ) * ~ + if ( text.match( /^\\[\\`\*_\[\]()\~]/ ) ) + return [ 2, text.charAt( 1 ) ]; + else + // Not an esacpe + return [ 1, "\\" ]; + }, + + "*": function bold( text ) { + // Inline content is possible inside `bold text` + var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), "*" ); + + // Not bold + if ( !res ) return [ 1, "*" ]; + + var consumed = 1 + res[ 0 ], + children = res[ 1 ]; + + + return [consumed, ["strong"].concat(children)] + }, + + "_": function italic( text ) { + // Inline content is possible inside `bold text` + var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), "_" ); + + // Not bold + if ( !res ) return [ 1, "_" ]; + + var consumed = 1 + res[ 0 ], + children = res[ 1 ]; + + + return [consumed, ["em"].concat(children)] + }, + + "~": function italic( text ) { + // Inline content is possible inside `bold text` + var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), "~" ); + + // Not bold + if ( !res ) return [ 1, "~" ]; + + var consumed = 1 + res[ 0 ], + children = res[ 1 ]; + + + return [consumed, ["del"].concat(children)] + }, + + // Taken from Markdown.dialects.Gruber.inline["["] + // Modification: Only allow the most basic link syntax. + "[": function link( text ) { + + var orig = String(text); + // Inline content is possible inside `link text` + var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), "]" ); + + // No closing ']' found. Just consume the [ + if ( !res ) return [ 1, "[" ]; + + var consumed = 1 + res[ 0 ], + children = res[ 1 ], + link, + attrs; + + // At this point the first [...] has been parsed. See what follows to find + // out which kind of link we are (reference or direct url) + text = text.substr( consumed ); + + // [link text](/path/to/img.jpg) + // 1 <--- captures + // This will capture up to the last paren in the block. We then pull + // back based on if there a matching ones in the url + // ([here](/url/(test)) + // The parens have to be balanced + + var m = text.match( /^\(([^"']*)\)/ ); + if ( m ) { + var url = m[1]; + consumed += m[0].length; + + var open_parens = 1; // One open that isn't in the capture + for ( var len = 0; len < url.length; len++ ) { + switch ( url[len] ) { + case "(": + open_parens++; + break; + case ")": + if ( --open_parens == 0) { + consumed -= url.length - len; + url = url.substring(0, len); + } + break; + } + } + + // Process escapes only + url = this.dialect.inline.__call__.call( this, url, /\\/ )[0]; + + attrs = { href: url || "" }; + + link = [ "link", attrs ].concat( children ); + return [ consumed, link ]; + } + + // Just consume the "[" + return [ 1, "[" ]; + }, + + // Taken from Markdown.dialects.Gruber.inline["`"] + // Modification: Only allow a single opening backtick + "`": function inlineCode( text ) { + // Always skip over the opening tick. + var m = text.match( /(`)(([\s\S]*?)\1)/ ); + + if ( m && m[2] ) + return [ m[1].length + m[2].length, [ "inlinecode", m[3] ] ]; + else { + // No closing backtick, it's just text + return [ 1, "`" ]; + } + }, + + // Taken from Markdown.dialects.Gruber.inline[" \n"] + // Modification: Don't require spaces before \n + "\n": function lineBreak( text ) { + return [ 1, [ "linebreak" ] ]; + } + + } + } + + Markdown.buildBlockOrder ( Markdown.dialects.Tent.block ); + Markdown.buildInlinePatterns( Markdown.dialects.Tent.inline ); + + })( expose.Markdown ) + + // Don't mess with Array.prototype. Its not friendly + if ( Array.prototype.forEach ) { + forEach = function( arr, cb, thisp ) { + return arr.forEach( cb, thisp ); + }; + } + else { + forEach = function(arr, cb, thisp) { + for (var i = 0; i < arr.length; i++) { + cb.call(thisp || arr, arr[i], i, arr); + } + } + } + + Preprocesser = function ( options ) { + this.footnotes = options.footnotes || []; + this.preprocessors = [this.expandFootnoteLinkHrefs].concat(options.preprocessors || []); + } + + Preprocesser.prototype.expandFootnoteLinkHrefs = function ( jsonml ) { + // Skip over anything that isn't a link + if (jsonml[0] !== 'link') return jsonml; + + // Skip over links that arn't footnotes + if (!jsonml[1] || !jsonml[1].href || !/^\d+$/.test(jsonml[1].href)) return jsonml; + + // Get href from footnodes array + var index = parseInt(jsonml[1].href); + jsonml[1].href = this.footnotes[index]; + jsonml[1].onclick = "bungloo.entityProfile.showEntity(this, " + index + "); return false;" + jsonml[1].class = "name"; + + // Unlink node if footnote doesn't exist + if (!jsonml[1].href) { + return [null].concat(jsonml.slice(2)); + } + + return jsonml; + } + + Preprocesser.prototype.preprocessTreeNode = function ( jsonml, references ) { + for (var i=0, _len = this.preprocessors.length; i < _len; i++) { + var fn = this.preprocessors[i] + if (!(typeof fn === 'function')) continue; + jsonml = fn.call(this, jsonml, references); + } + return jsonml; + } + + // Pre-process all link nodes to expand the [text](index) footnote syntax to actual links + // and unlink non-existant footnote references. + // Pass options.footnotes = [ href, ... ] to expand footnote links + __toHTML__ = expose.toHTML; + expose.toHTML = function ( source, dialect, options ) { + options = options || {}; + if (dialect === 'Tent') { + if (!(typeof options.preprocessTreeNode === 'function')) { + preprocesser = new Preprocesser( options ); + options.preprocessTreeNode = function () { + return preprocesser.preprocessTreeNode.apply(preprocesser, arguments); + } + } + } + return __toHTML__.call(null, source, dialect, options); + } +})(function () { + if ( typeof exports === "undefined" ) { + window.markdown.extractUrlsWithIndices = window.twttr.extractUrlsWithIndices; + return window.markdown; + } + else { + exports.markdown = require('markdown').markdown; + exports.markdown.extractUrlsWithIndices = require('./link-matcher').extractUrlsWithIndices; + + return exports.markdown; + } +}()) From 25e3f203e6ba3224fc3ac9fd6d0ebd325c260140 Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 5 Sep 2013 09:56:24 +0200 Subject: [PATCH 100/127] only status posts in conversation --- WebKit/scripts/controller/Conversation.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index 8a731da..6116274 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -135,7 +135,8 @@ function(HostApp, Core, APICalls, URI) { var status = statuses[i]; // don't load if it is already there - if(!document.getElementById("post-" + status.post + "-" + _this.action)) { + var not_already_there = !document.getElementById("post-" + status.post + "-" + _this.action); + if(not_already_there && status.type.startsWith("https://tent.io/types/status/v0")) { _this.append(status.post, status.entity ,node, true); } } From 037f382d7251ef1acac7506e23981667f455c6e2 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 00:36:31 +0200 Subject: [PATCH 101/127] better conversation view --- WebKit/css/default.css | 49 +++++++++++--------- WebKit/scripts/controller/Conversation.js | 54 ++++++++++++++++++++--- WebKit/scripts/controller/Timeline.js | 12 +++-- WebKit/scripts/helper/ConversationNode.js | 25 +++++++++++ WebKit/scripts/helper/Core.js | 15 ++++--- 5 files changed, 120 insertions(+), 35 deletions(-) create mode 100644 WebKit/scripts/helper/ConversationNode.js diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 3e6d74f..da008f0 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -92,7 +92,7 @@ ol { padding: 0; } -ol li, .error, header.profile { +ol li .post, .error, header.profile { clear: both; padding: 8px; background: #eee; @@ -109,37 +109,33 @@ ol li, .error, header.profile { color: red; } -#content ol > li { - -} - -#content ol > li:first-child { +#content ol > li:first-child > .post { border-top: 0; } -#content ol > li:nth-child(odd), .error, header.profile { +#content ol > li:nth-child(odd) > .post, .error, header.profile, #content #conversation-tree li.odd > .post { background: #fafafa; } -#content ol > li:nth-child(even) { +#content ol > li:nth-child(even) > .post, #content #conversation-tree li.even > .post { background: #f2f2f2; } -#content ol > li:hover { - background: #dedede; +#content ol > li > .post:hover { + background: #dedede !important; } -#content ol > li.highlighteffect { +#content ol > li.highlighteffect > .post { background-color: #FFFBD0; -webkit-transition: background-color 200ms linear; } -#content ol > li.highlighteffect-after { +#content ol > li.highlighteffect-after > .post { -webkit-transition: background-color 1000ms linear; } -#content ol > li:after, header.profile:after { +#content ol > li .post:after, header.profile:after { content: "."; display: block; clear: both; @@ -171,7 +167,7 @@ header.profile h1 + p { margin-bottom: 10px; } -.highlight { +.highlight > .post { border-right: 5px solid #f17779; } @@ -237,11 +233,11 @@ p { font-weight: bold; } -li:hover .from { +li .post:hover .from { display: block; } -li .from { +li .post .from { position: absolute; right: 3.5em; display: none; @@ -260,7 +256,7 @@ li .from { border-top: 0; } -li:last-child:hover .from { +li:last-child:not(:first-child) .post:hover .from { top: -1.8em; bottom: auto; -webkit-border-top-left-radius: 8px; @@ -290,7 +286,7 @@ aside { display: none; /* FIXME: remove this; */ } -li:hover aside .reply_to, li:hover aside .repost, li:hover aside .remove, li:hover aside .ago:before { +li .post:hover > aside .reply_to, li .post:hover > aside .repost, li .post:hover > aside .remove, li .post:hover > aside .ago:before { visibility: visible; } @@ -317,11 +313,11 @@ li:hover aside .reply_to, li:hover aside .repost, li:hover aside .remove, li:hov background-position: -128px 0; } -li.mentioned { +li.mentioned .post { border-right: 5px solid #00317a; } -.mentions li.mentioned { +.mentions li.mentioned .post { border-right: 0; } @@ -483,3 +479,16 @@ p.noresult { #status_bar p { float: right; margin: 0; padding: 0; } #status_bar span { display: inline-block; margin: 4px 5px 0 5px; } +#conversation-tree ol { + border-left: 1px solid #c9c9c9; + clear: both; +} + +#conversation-tree ol li { + clear: both !important; + padding-left: 14px; +} + +#conversation-tree ol li .post { + border-left: 1px solid #c9c9c9; +} diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index 6116274..02287df 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -2,10 +2,11 @@ define([ "helper/HostApp", "helper/Core", "helper/APICalls", - "lib/URI" + "lib/URI", + "helper/ConversationNode" ], -function(HostApp, Core, APICalls, URI) { +function(HostApp, Core, APICalls, URI, ConversationNode) { function Conversation(standalone) { @@ -30,6 +31,7 @@ function(HostApp, Core, APICalls, URI) { $(document).keydown(function(e) { if (e.keyCode == 27) { // Esc _this.stopLoading = true; + _this.makeTree(); } }); } @@ -46,7 +48,6 @@ function(HostApp, Core, APICalls, URI) { Conversation.addStatus = function(status) { - this.body.appendChild(this.getStatusDOMElement(status)); } @@ -54,6 +55,7 @@ function(HostApp, Core, APICalls, URI) { Conversation.prototype.showStatus = function(id, entity) { this.body.innerHTML = ""; + this.rootNode = null; this.current_post_id = id; this.current_entity = entity; this.append(id, entity); @@ -85,17 +87,23 @@ function(HostApp, Core, APICalls, URI) { var status = _statuses.post; var dom_element = _this.getStatusDOMElement(status); + var cNode = new ConversationNode(dom_element); + dom_element.cNode = cNode; if (node) { - if(add_after) { + if(add_after) { // is a child of node node.parentNode.insertBefore(dom_element, node.nextSibling); - } else { + node.cNode.addChild(cNode); + } else { // is a parent of node node.parentNode.insertBefore(dom_element, node); + cNode.addChild(node.cNode); } - } else { + } else { // is start node (doesn't have to be root, can have parents) dom_element.className = "highlight"; _this.body.appendChild(dom_element); + + _this.rootNode = cNode; } // child posts @@ -115,6 +123,10 @@ function(HostApp, Core, APICalls, URI) { } } + if(!entity) { + entity = node.status.entity + } + var url = HostApp.serverUrl("post") .replace(/\{entity\}/, encodeURIComponent(entity)) .replace(/\{post\}/, id) @@ -137,7 +149,7 @@ function(HostApp, Core, APICalls, URI) { // don't load if it is already there var not_already_there = !document.getElementById("post-" + status.post + "-" + _this.action); if(not_already_there && status.type.startsWith("https://tent.io/types/status/v0")) { - _this.append(status.post, status.entity ,node, true); + _this.append(status.post, status.entity, node, true); } } } @@ -153,6 +165,34 @@ function(HostApp, Core, APICalls, URI) { } + Conversation.prototype.makeTree = function() { + var root_ul = document.createElement("ol"); + root_ul.id = "conversation-tree"; + var root_li = this.body.firstChild; + root_ul.appendChild(root_li); + + function addChildren(node) { + var ul = document.createElement("ol"); + node.appendChild(ul); + var children = node.cNode.children; + for (var i = 0; i < children.length; i++) { + var child = children[i].dom_node; + ul.appendChild(child); + addChildren(child); + }; + } + + addChildren(root_li); + + this.body.parentNode.replaceChild(root_ul, this.body); + this.body = root_ul; + + var lis = this.body.querySelectorAll("li"); + for (var i = 0; i < lis.length; i++) { + lis[i].className += " " + (i % 2 == 0 ? "odd" : "even"); + }; + }; + return Conversation; }); \ No newline at end of file diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index b6fcde9..a22bc6d 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -19,7 +19,7 @@ function(Core, APICalls, HostApp, URI) { this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; this.since_id_entity = null; - this.since_time = 0; + this.since_time = null; this.pages = {}; @@ -59,8 +59,9 @@ function(Core, APICalls, HostApp, URI) { } this.pages = _statuses.pages; - + statuses = _statuses.posts; + if(statuses != null && statuses.length > 0) { this.before.loading = false; @@ -72,7 +73,8 @@ function(Core, APICalls, HostApp, URI) { var status = statuses[i]; if(!append) { this.since_id = status.id; - this.since_id_entity = status.entity; + this.since_id_entity = status.entity; + this.since_time = status.received_at; } if (status.type == "https://tent.io/types/status/v0#" || status.type == "https://tent.io/types/status/v0#reply") { @@ -132,6 +134,10 @@ function(Core, APICalls, HostApp, URI) { uri.addSearch("max_refs", 20); uri.addSearch("profiles", "entity"); + if(this.since_time) { + uri.addSearch("since", this.since_time); + } + for (key in add_to_search) { uri.addSearch(key, add_to_search[key]); } diff --git a/WebKit/scripts/helper/ConversationNode.js b/WebKit/scripts/helper/ConversationNode.js new file mode 100644 index 0000000..64c882c --- /dev/null +++ b/WebKit/scripts/helper/ConversationNode.js @@ -0,0 +1,25 @@ +define([ + +], + +function() { + + + function ConversationNode(dom_node) { + this.dom_node = dom_node; + this.parent = null; + this.children = []; + } + + ConversationNode.prototype.addChild = function(node) { + this.children.push(node); + node.parent = this; + }; + + ConversationNode.prototype.toString = function() { + return "{ \"" + this.dom_node.status.entity + "\": [" + this.children.toString() + "]}"; + }; + + + return ConversationNode; +}); \ No newline at end of file diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index ab65e60..c11b505 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -37,7 +37,11 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { var a = document.createElement("a"); - var item = document.createElement("li"); + var li = document.createElement("li"); + + var item = document.createElement("div"); + item.className = "post"; + li.appendChild(item); var aside = document.createElement("aside"); item.appendChild(aside); @@ -143,6 +147,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { from.appendChild(source) this.template = { + li: li, item: item, reply_to: reply_to, is_private: is_private, @@ -188,8 +193,8 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { var template = this.getTemplate(); - template.item.id = "post-" + status.id + "-" + this.action; - template.item.status = status; + template.li.id = "post-" + status.id + "-" + this.action; + template.li.status = status; if (HostApp.stringForKey("entity") == status.entity && typeof status.__repost == "undefined") { template.remove.onclick = function() { @@ -206,7 +211,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { } if (HostApp.stringForKey("entity") == status.entity) { - template.item.className += " own"; + template.li.className += " own"; } template.reply_to.onclick = function() { @@ -361,7 +366,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { } } - return template.item; + return template.li; } From 8a1e17d41c9c4a9ffd5f0ecf907eaacebd21fb5b Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 01:37:41 +0200 Subject: [PATCH 102/127] readded notifications --- WebKit/scripts/controller/Mentions.js | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 2117659..04e49d0 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -36,22 +36,17 @@ function(HostApp, Timeline, URI, APICalls, Core) { Mentions.prototype.newStatus = function(statuses, append) { Timeline.prototype.newStatus.call(this, statuses, append); -/* + if(this.is_not_init) { + for (var i = 0; i < statuses.posts.length; i++) { + + var status = statuses.posts[i]; + var name = bungloo.cache.profiles[status.entity] ? bungloo.cache.profiles[status.entity].name : status.entity - for (var i = 0; i < statuses.length; i++) { - var status = statuses[i]; - - var name; - var profile = this.cache.profiles.getItem(status.entity); - if(profile) { - name = profile["https://tent.io/types/info/basic/v0.1.0"].name; - } - - if(!append) HostApp.notificateUserAboutMention(status.content.text, name || status.entity, status.id, status.entity); + if(!append) HostApp.notificateUserAboutMention(status.content.text, name, status.id, status.entity); } } -*/ + this.is_not_init = true; } From e8392eff7ae3cb02779de24a8433f4d29772324c Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 03:33:43 +0200 Subject: [PATCH 103/127] fixed mentions badget and cursor --- WebKit/scripts/controller/Mentions.js | 259 ++++++++++++++++---------- WebKit/scripts/controller/NewPost.js | 5 +- WebKit/scripts/controller/Timeline.js | 2 +- 3 files changed, 161 insertions(+), 105 deletions(-) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 04e49d0..898ae5a 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -1,146 +1,203 @@ define([ - "helper/HostApp", - "controller/Timeline", - "lib/URI", - "helper/APICalls", - "helper/Core" + "helper/HostApp", + "controller/Timeline", + "lib/URI", + "helper/APICalls", + "helper/Core" ], function(HostApp, Timeline, URI, APICalls, Core) { - function Mentions() { + function Mentions() { - this.is_not_init = false; - this.unread_mentions = 0; + this.is_not_init = false; + this.unread_mentions = 0; - Timeline.call(this); + Timeline.call(this); - this.action = "mentions"; - this.container.className = this.action; - - this.hide(); - } + this.action = "mentions"; + this.container.className = this.action; + + this.hide(); + } - Mentions.prototype = Object.create(Timeline.prototype); + Mentions.prototype = Object.create(Timeline.prototype); - Mentions.prototype.show = function() { - Core.prototype.show.call(this, this.container); - } + Mentions.prototype.show = function() { + Core.prototype.show.call(this, this.container); + } - Mentions.prototype.hide = function() { - Core.prototype.hide.call(this, this.container); - } + Mentions.prototype.hide = function() { + Core.prototype.hide.call(this, this.container); + } - Mentions.prototype.newStatus = function(statuses, append) { + Mentions.prototype.newStatus = function(statuses, append) { - Timeline.prototype.newStatus.call(this, statuses, append); + Timeline.prototype.newStatus.call(this, statuses, append); - if(this.is_not_init) { - for (var i = 0; i < statuses.posts.length; i++) { - - var status = statuses.posts[i]; - var name = bungloo.cache.profiles[status.entity] ? bungloo.cache.profiles[status.entity].name : status.entity + if(this.is_not_init) { + for (var i = 0; i < statuses.posts.length; i++) { + + var status = statuses.posts[i]; + var name = bungloo.cache.profiles[status.entity] ? bungloo.cache.profiles[status.entity].name : status.entity - if(!append) HostApp.notificateUserAboutMention(status.content.text, name, status.id, status.entity); - } - } + if(!append) HostApp.notificateUserAboutMention(status.content.text, name, status.id, status.entity); + } + } - this.is_not_init = true; - } + this.is_not_init = true; + } - Mentions.prototype.getNewData = function(add_to_search, append, query) { + Mentions.prototype.getNewData = function(add_to_search, append, query) { - add_to_search = add_to_search || {}; + add_to_search = add_to_search || {}; - if (!add_to_search["mentions"]) { - add_to_search["mentions"] = HostApp.stringForKey("entity"); - } + if (!add_to_search["mentions"]) { + add_to_search["mentions"] = HostApp.stringForKey("entity"); + } - Timeline.prototype.getNewData.call(this, add_to_search, append, query); + Timeline.prototype.getNewData.call(this, add_to_search, append, query); - //this.getLatestMentionRead(); - } + this.getLatestMentionRead(); + } - Mentions.prototype.mentionRead = function(id, entity) { - if (this.unread_mentions > 0) { - this.unread_mentions--; - HostApp.unreadMentions(this.unread_mentions); - } - } + Mentions.prototype.mentionRead = function(id, entity) { + if (this.unread_mentions > 0) { + this.unread_mentions--; + HostApp.unreadMentions(this.unread_mentions); + } + } - Mentions.prototype.setAllMentionsRead = function() { - this.unread_mentions = 0; - HostApp.unreadMentions(this.unread_mentions); - //this.updateLatestMentionRead(); - } + Mentions.prototype.setAllMentionsRead = function() { + this.unread_mentions = 0; + HostApp.unreadMentions(this.unread_mentions); + this.updateLatestMentionRead(); + } - // FIXME: those two functions need to be rewritten - /* - Mentions.prototype.updateLatestMentionRead = function() { + Mentions.prototype.updateLatestMentionRead = function() { - for (var i = 0; i < this.body.childNodes.length; i++) { + var cursor_url = HostApp.serverUrl("posts_feed") + "?types=" + "https://tent.io/types/cursor/v0"; - var status = this.body.childNodes[i].status; + // find the first real post + for (var i = 0; i < this.body.childNodes.length; i++) { - if (!status.__repost) { - if (status && status.type == "https://tent.io/types/post/status/v0.1.0") { + var status = this.body.childNodes[i].status; - var url = URI(APICalls.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); - var body = { - "mentions": { - "https://tent.io/types/post/status/v0.1.0": { - "post": status.id, - "entity": status.entity - } - } - } + if (!status.__repost) { + if (status && status.type.startsWith("https://tent.io/types/status/v0#")) { - var callback = function(resp) { + // First find out if there is such a cursor or if we need to create it first + APICalls.get(cursor_url, { callback: function(resp) { - } + var posts = JSON.parse(resp.responseText).posts; + var mentions_post = null; + + for (var i = 0; i < posts.length; i++) { + var post = posts[i]; - APICalls.http_call(url.toString(), "PUT", callback, JSON.stringify(body)); - } + if(post.type == "https://tent.io/types/cursor/v0#https://tent.io/rels/status-mentions") { - break; - } - } - } + mentions_post = post; + + } + }; + + // Now prepare the cursor + + + var data = { + type: "https://tent.io/types/cursor/v0#https://tent.io/rels/status-mentions", + content: {}, + permissions: { + public: false, + }, + refs: [ + { + "post": status.id, + "type": status.type, + "entity": status.entity + } + ] + }; + + // update version if the post exists + if(mentions_post) { + data.version = { + parents: [ + { + version: mentions_post.version.id + } + ] + } + } + + var options = { + content_type: data.type, + accept: 'application/vnd.tent.post.v0+json; type="https://tent.io/types/cursor/v0#https://tent.io/rels/status-mentions"', + callback: function(resp) { + + }}; + + // either update or create the cursor + if(mentions_post) { + var url = HostApp.serverUrl("post") + .replace(/\{entity\}/, encodeURIComponent(HostApp.stringForKey("entity"))) + .replace(/\{post\}/, mentions_post.id) + APICalls.put(url, JSON.stringify(data), options); + } else { + var url = HostApp.serverUrl("posts_feed"); + APICalls.post(url, JSON.stringify(data), options); + } + + }}); + } + + break; + } + } + + } - Mentions.prototype.getLatestMentionRead = function() { + Mentions.prototype.getLatestMentionRead = function() { - var cursor_url = URI(APICalls.mkApiRootPath("/profile/" + encodeURIComponent("https://tent.io/types/info/cursor/v0.1.0"))); + var cursor_url = HostApp.serverUrl("posts_feed") + "?types=" + "https://tent.io/types/cursor/v0"; - APICalls.http_call(cursor_url.toString(), "GET", function(resp) { + APICalls.get(cursor_url, { callback: function(resp) { - var url = URI(APICalls.mkApiRootPath("/posts/count")); - var post_types = [ - "https://tent.io/types/post/status/v0.1.0", - ]; - url.addSearch("post_types", post_types.join(",")); - url.addSearch("mentioned_entity", HostApp.stringForKey("entity")); + var posts = JSON.parse(resp.responseText).posts; + + for (var i = 0; i < posts.length; i++) { + var post = posts[i]; + if(post.type == "https://tent.io/types/cursor/v0#https://tent.io/rels/status-mentions") { - try { // don't crash when there is no cursor yet - var body = JSON.parse(resp.responseText); - var cursor = body["mentions"]["https://tent.io/types/post/status/v0.1.0"]; - url.addSearch("since_id", cursor["post"]); - url.addSearch("since_id_entity", cursor["entity"]); - } catch(e) { } + var since = post.version.received_at; + var post_id = post.refs[0].post; + var post_types = [ + "https://tent.io/types/status/v0#reply", + "https://tent.io/types/status/v0#" + ]; - var callback = function(resp) { - this.unread_mentions = parseInt(resp.responseText, 10); - HostApp.unreadMentions(this.unread_mentions); - } - - APICalls.http_call(url.toString(), "GET", callback); // FIXME: error callback - }); - } - */ + var uri = URI(HostApp.serverUrl("posts_feed")); + uri.addSearch("types", post_types.join(",")); + uri.addSearch("since", since); + uri.addSearch("mentions", HostApp.stringForKey("entity")); - return Mentions; + APICalls.head(uri.toString(), { callback: function(resp) { + + this.unread_mentions = APICalls.getCount(resp); + HostApp.unreadMentions(this.unread_mentions); + + }}); + } + }; + + }}); + } + + return Mentions; }); \ No newline at end of file diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 7806aba..f7849dc 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -38,7 +38,7 @@ function(APICalls, HostApp) { var buttons = $( "

      " + //"" + - "" + + " " + "" + "

      "); @@ -267,9 +267,8 @@ function(APICalls, HostApp) { var content = this.textarea.val(); - var type = "https://tent.io/types/status/v0#"; var data = { - type: type, + type: "https://tent.io/types/status/v0#", content: { text: content }, diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index a22bc6d..f41447c 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -131,7 +131,7 @@ function(Core, APICalls, HostApp, URI) { uri.addSearch("types", post_types.join(",")); //uri.addSearch("sort_by", "published_at"); uri.addSearch("limit", this.posts_limit); - uri.addSearch("max_refs", 20); + //uri.addSearch("max_refs", 20); uri.addSearch("profiles", "entity"); if(this.since_time) { From 61a2199fe392e1b5c8f5ba48996a75749f738b3b Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 08:31:25 +0200 Subject: [PATCH 104/127] fixed deleting --- WebKit/css/default.css | 2 +- WebKit/scripts/controller/Mentions.js | 4 +++- WebKit/scripts/controller/Timeline.js | 6 +++--- WebKit/scripts/helper/Core.js | 9 +++++++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index da008f0..af5dd28 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -282,7 +282,7 @@ aside { visibility: hidden; } -.repost, .remove { +.repost { display: none; /* FIXME: remove this; */ } diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index 898ae5a..8140ba9 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -43,7 +43,9 @@ function(HostApp, Timeline, URI, APICalls, Core) { var status = statuses.posts[i]; var name = bungloo.cache.profiles[status.entity] ? bungloo.cache.profiles[status.entity].name : status.entity - if(!append) HostApp.notificateUserAboutMention(status.content.text, name, status.id, status.entity); + if(!append && status.type.startsWith("https://tent.io/types/status/v0#")) { + HostApp.notificateUserAboutMention(status.content.text, name, status.id, status.entity); + } } } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index f41447c..99d1f19 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -77,7 +77,7 @@ function(Core, APICalls, HostApp, URI) { this.since_time = status.received_at; } - if (status.type == "https://tent.io/types/status/v0#" || status.type == "https://tent.io/types/status/v0#reply") { + if (status.type.startsWith("https://tent.io/types/status/v0#")) { var new_node = this.getStatusDOMElement(status); @@ -97,9 +97,9 @@ function(Core, APICalls, HostApp, URI) { } } - } else if (status.type == "https://tent.io/types/post/delete/v0.1.0") { + } else if (status.type == "https://tent.io/types/delete/v0#") { - HostApp.notificateViewsAboutDeletedPost(status.content.id, status.entity); + HostApp.notificateViewsAboutDeletedPost(status.refs[0].post, status.entity); } else if (status.type == "https://tent.io/types/post/repost/v0.1.0") { diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index c11b505..5254e4b 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -503,8 +503,13 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { Core.prototype.remove = function(id, callback, type) { type = type || "post"; if (confirm("Really delete this " + type + "?")) { - var url = URI(APICalls.mkApiRootPath("/posts/" + id)); - APICalls.http_call(url.toString(), "DELETE", callback); + + var entity = HostApp.stringForKey("entity"); + var url = HostApp.serverUrl("post") + .replace(/\{entity\}/, encodeURIComponent(entity)) + .replace(/\{post\}/, id); + + APICalls.delete(url, { callback: callback }); } } From 06a3ff9540fe31aa03b16198a28bfcacd45be96a Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 09:44:23 +0200 Subject: [PATCH 105/127] fixed reposts --- WebKit/css/default.css | 4 - WebKit/scripts/controller/NewPost.js | 1 - WebKit/scripts/controller/Timeline.js | 7 +- WebKit/scripts/helper/Core.js | 132 +++++++++++++++++--------- 4 files changed, 89 insertions(+), 55 deletions(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index af5dd28..00947da 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -282,10 +282,6 @@ aside { visibility: hidden; } -.repost { - display: none; /* FIXME: remove this; */ -} - li .post:hover > aside .reply_to, li .post:hover > aside .repost, li .post:hover > aside .remove, li .post:hover > aside .ago:before { visibility: visible; } diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index f7849dc..3d7d085 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -258,7 +258,6 @@ function(APICalls, HostApp) { this.sendNewMessage(); return true; } else { - debug("BEEP"); return false; } } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 99d1f19..b10831b 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -101,9 +101,10 @@ function(Core, APICalls, HostApp, URI) { HostApp.notificateViewsAboutDeletedPost(status.refs[0].post, status.entity); - } else if (status.type == "https://tent.io/types/post/repost/v0.1.0") { - + } else if (status.type.startsWith("https://tent.io/types/repost/v0#")) { + this.getRepost(status, append ? this.body.lastChild : this.body.firstChild, append); + } } @@ -124,7 +125,7 @@ function(Core, APICalls, HostApp, URI) { var post_types = [ "https://tent.io/types/status/v0#", "https://tent.io/types/status/v0#reply", - "https://tent.io/types/repost/v0#", + "https://tent.io/types/repost/v0#https://tent.io/types/status/v0", "https://tent.io/types/delete/v0#", //"https://tent.io/types/post/photo/v0.1.0" ]; diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 5254e4b..89399d0 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -127,7 +127,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { head.appendChild(reposted_by) - var message = document.createElement("p"); + var message = document.createElement("div"); message.className = "message"; data.appendChild(message); @@ -167,28 +167,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { } Core.prototype.getStatusDOMElement = function(status) { - /* -{ - "app": { - "id": "P8FJjaiRv0AKXfjUMd_4YQ", - "name": "Bungloo on Linux", - "url": "http:\/\/jabs.nu\/bungloo\/" - }, - "content": { - "text": "jeena test" - }, - "entity": "http:\/\/155969d81672.alpha.attic.is", - "id": "HlSXe8MREzU4h2fGLGSnCA", - "published_at": 1369566009, - "received_at": 1369566008799, - "type": "https:\/\/tent.io\/types\/status\/v0#", - "version": { - "id": "a2f702b4615c7d7dd0f98c73d7b55749880bf6e437a77349454ff10745d134c6", - "published_at": 1369566009, - "received_at": 1369566008799 - } -} - */ + var _this = this; var template = this.getTemplate(); @@ -235,7 +214,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { template.repost.onclick = function() { $(template.repost).hide(); - _this.repost(status.id, status.entity); + _this.repost(status); return false; } @@ -248,7 +227,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { return false; } - if(bungloo.cache.profiles[status.entity].avatar_digest) { + if(bungloo.cache.profiles[status.entity] && bungloo.cache.profiles[status.entity].avatar_digest) { template.image.src = HostApp.serverUrl("attachment").replace(/\{entity\}/, encodeURIComponent(status.entity)).replace(/\{digest\}/, bungloo.cache.profiles[status.entity].avatar_digest); } @@ -261,7 +240,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { var text = ""; - if (status.type == "https://tent.io/types/post/photo/v0.1.0") { + if (status.type == "https://tent.io/types/post/photo/v0.1.0") { // FIXME text = status.content.caption; } else { if (status.content && status.content.text) { @@ -372,7 +351,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { Core.prototype.getRepost = function(repost, before_node, append) { - var post = document.getElementById("post-" + repost.content.id + "-" + this.action); + var post = document.getElementById("post-" + repost.refs[0].post + "-" + this.action); if (post) { @@ -425,25 +404,47 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { return false; }); - var _this = this; - APICalls.findProfileURL(repost.entity, function(profile_url) { - if (profile_url) { - APICalls.http_call(profile_url, "GET", function(resp) { - if (resp.status >= 200 && resp.status < 400) { - var _p = JSON.parse(resp.responseText); - _this.cache.profiles.setItem(repost.entity, _p); - - var basic = _p["https://tent.io/types/info/basic/v0.1.0"]; - if (basic && basic.name) { - a.html(basic.name); - } - - } - }, null, false); // do not send auth-headers - } - }); + var name = bungloo.cache.profiles[repost.entity] ? bungloo.cache.profiles[repost.entity].name : repost.entity; + a.html(name); } else { + + var entity = repost.refs[0].entity ? repost.refs[0].entity : HostApp.stringForKey("entity"); + var id = repost.refs[0].post; + + var url = HostApp.serverUrl("post") + .replace(/\{entity\}/, encodeURIComponent(entity)) + .replace(/\{post\}/, id) + + "?profiles=entity"; + + var _this = this; + + APICalls.get(url, { callback: function(resp) { + + if (resp.status >= 200 && resp.status < 300 && before_node) { + var _statuses = JSON.parse(resp.responseText); + + for (var entity in _statuses.profiles) { + if (_statuses.profiles[entity] != null) { + bungloo.cache.profiles[entity] = _statuses.profiles[entity]; + } else { + bungloo.cache.profiles[entity] = {}; + } + } + + var status = _statuses.post; + + status.__repost = repost; + var li = _this.getStatusDOMElement(status); + if(!document.getElementById(li.id)) before_node.parentNode.insertBefore(li, before_node); + _this.getRepost(repost, before_node); // call this recursive because we now have the repost + } + + + }}); + + /* + var _this = this; var callback = function(resp) { if (resp.status >= 200 && resp.status < 300 && before_node) { @@ -466,11 +467,48 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { }, null, false); // do not send auth-headers } - }); + });*/ } } - Core.prototype.repost = function(id, entity, callback) { + Core.prototype.repost = function(status, callback) { + var type = status.type; + var id = status.id; + var entity = status.entity; + var url = HostApp.serverUrl("new_post"); + var data = { + type: "https://tent.io/types/repost/v0#" + type.split("#")[0], + refs: [ + { + post: id, + entity: entity + } + ], + mentions: [ + { + post: id, + type: type, + entity: entity + } + + ] + } + + APICalls.post(url, JSON.stringify(data), { + content_type: data.type, + accept: 'application/vnd.tent.post.v0+json; type="https://tent.io/types/repost/v0#"', + callback: function(resp) { + if (resp.status >= 200 < 300) { + controller.getNewData(); + if(callback) callback(resp); + } else { + debug(resp) + } + } + + }) + + /* var url = URI(APICalls.mkApiRootPath("/posts")); var data = { @@ -497,7 +535,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { _this.highlight(id); } - APICalls.http_call(url.toString(), "POST", new_callback, JSON.stringify(data)); + APICalls.http_call(url.toString(), "POST", new_callback, JSON.stringify(data));*/ } Core.prototype.remove = function(id, callback, type) { From 4d8bf41e3ca491239296583e6428ca94907115de Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 10:05:02 +0200 Subject: [PATCH 106/127] fixed problem with profile posts --- WebKit/scripts/controller/Profile.js | 5 +---- WebKit/scripts/controller/Sidebar.js | 4 ++-- WebKit/scripts/controller/Timeline.js | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/WebKit/scripts/controller/Profile.js b/WebKit/scripts/controller/Profile.js index 22acb6a..7f922ba 100644 --- a/WebKit/scripts/controller/Profile.js +++ b/WebKit/scripts/controller/Profile.js @@ -450,7 +450,7 @@ function(HostApp, Core, APICalls, URI, Timeline) { Profile.prototype.getStatuses = function() { - + this.since_time = null; Timeline.prototype.getNewData.call(this, {entities: this.entity}); } @@ -502,9 +502,6 @@ function(HostApp, Core, APICalls, URI, Timeline) { type: "https://tent.io/types/subscription/v0#https://tent.io/types/status/v0" }; - debug(data) - debug(url) - APICalls.post(url, JSON.stringify(data), { content_type: data.type, callback: function(resp) { diff --git a/WebKit/scripts/controller/Sidebar.js b/WebKit/scripts/controller/Sidebar.js index 845946c..2089908 100644 --- a/WebKit/scripts/controller/Sidebar.js +++ b/WebKit/scripts/controller/Sidebar.js @@ -20,14 +20,14 @@ function(HostApp, APICalls) { this.menu.mentions = this.createItem("Mentions", function() { _this.onMentions(); return false; }, "img/sidebar/mentions.png", "img/sidebar/mentions_active.png"); this.menu.conversation = this.createItem("Conversation", function() { _this.onConversation(); return false; }, "img/sidebar/conversation.png", "img/sidebar/conversation_active.png"); this.menu.entityProfile = this.createItem("Profile", function() { _this.onEntityProfile(); return false; }, "img/sidebar/profile.png", "img/sidebar/profile_active.png"); - this.menu.search = this.createItem("Search", function() { _this.onSearch(); return false; }, "img/sidebar/search.png", "img/sidebar/search_active.png") + // FIXME when skate.io is available again: this.menu.search = this.createItem("Search", function() { _this.onSearch(); return false; }, "img/sidebar/search.png", "img/sidebar/search_active.png") this.body.appendChild(this.menu.user); this.body.appendChild(this.menu.timeline); this.body.appendChild(this.menu.mentions); this.body.appendChild(this.menu.conversation); this.body.appendChild(this.menu.entityProfile); - this.body.appendChild(this.menu.search); + //this.body.appendChild(this.menu.search); this.unreadMentionsSpan = document.createElement("span"); this.unreadMentionsSpan.className = "unread_mentions"; diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index b10831b..7f25baf 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -14,7 +14,7 @@ function(Core, APICalls, HostApp, URI) { this.action = "timeline"; this.reload_blocked = false; - this.posts_limit = 25; + this.posts_limit = 50; this.max_length = 200; this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; From 87c712ce8f20a82d39ac69dd86cb2980d76c7cb7 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 10:08:26 +0200 Subject: [PATCH 107/127] version bump for Qt --- Linux/deploy.sh | 2 +- Windows/installer.iss | 2 +- Windows/setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Linux/deploy.sh b/Linux/deploy.sh index 6255960..075e323 100755 --- a/Linux/deploy.sh +++ b/Linux/deploy.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION="1.4.3" +VERSION="2.0.0" DEPLOYPATH="bungloo-${VERSION}" QTPATH="../Qt" SHAREDPATH=".." diff --git a/Windows/installer.iss b/Windows/installer.iss index 0459aa4..f01a595 100644 --- a/Windows/installer.iss +++ b/Windows/installer.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Bungloo" -#define MyAppVersion "1.4.3" +#define MyAppVersion "2.0.0" #define MyAppPublisher "Jabs Nu" #define MyAppURL "http://jabs.nu/bungloo" #define MyAppExeName "Bungloo.exe" diff --git a/Windows/setup.py b/Windows/setup.py index 405a8fb..1d9da92 100644 --- a/Windows/setup.py +++ b/Windows/setup.py @@ -22,7 +22,7 @@ files += [('imageformats', imageformats)] setup( name = "Bungloo", - version = "1.4.3", + version = "2.0.0", author = "Jeena Paradies", author_email = "spam@jeenaparadies.net", url = "http://jabs.nu/bungloo", From fb0dea5afce29ffc71954a4f9415cae7aff9c217 Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 10:27:24 +0200 Subject: [PATCH 108/127] added debian changes --- Linux/debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Linux/debian/changelog b/Linux/debian/changelog index 8f070d2..5b66ff6 100644 --- a/Linux/debian/changelog +++ b/Linux/debian/changelog @@ -1,3 +1,10 @@ +bungloo (2.0.0) raring; urgency=high + + [Jeena Paradies] + * Nearly complete rewrite to be compatible with Tent 0.3 + + -- Jeena Paradies Tue, 09 Sep 2013 10:25:00 +0100 + bungloo (1.4.3) raring; urgency=high [ Jeena Paradies ] From e98b72c3ec3ac6ad8fbc5ce7d4cda069c23e418c Mon Sep 17 00:00:00 2001 From: jeena Date: Mon, 9 Sep 2013 17:24:32 +0200 Subject: [PATCH 109/127] fixed counting bug --- WebKit/scripts/controller/NewPost.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 3d7d085..1b5b74e 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -247,13 +247,13 @@ function(APICalls, HostApp) { // re-inject the processed text into the div this.highlighter.html(text); - var count = 256 - this.textarea.val().length + (this.mentions.length * 6); + var count = 256 - (this.textarea.val().length + (this.mentions.length * 6)); this.counter.html(count); } NewPost.prototype.send = function() { - var count = 256 - this.textarea.val().length + (this.mentions.length * 6); + var count = 256 - (this.textarea.val().length + (this.mentions.length * 6)); if(count >= 0 && count <= 256) { this.sendNewMessage(); return true; From 2f8cc0d6133365c44f0d2f748c5e62a75508da53 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 2 Oct 2013 11:42:47 +0200 Subject: [PATCH 110/127] small fixes --- WebKit/scripts/controller/Oauth.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 7967c12..722d4c3 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -48,7 +48,7 @@ function(HostApp, APICalls, Hmac) { } Oauth.prototype.isAuthenticated = function() { - return HostApp.stringForKey("user_access_token") != null; + return !!HostApp.stringForKey("user_access_token"); } Oauth.prototype.authenticate = function() { @@ -70,11 +70,11 @@ function(HostApp, APICalls, Hmac) { } Oauth.prototype.requestProfileURL = function (entity) { - var those = this; + var _this = this; APICalls.findProfileURL(entity, function(profile_url) { if (profile_url && (profile_url.startsWith("http://") || profile_url.startsWith("https://"))) { - those.register(profile_url); + _this.register(profile_url); } else { HostApp.authentificationDidNotSucceed("Could not find profile for: " + entity); } @@ -87,17 +87,17 @@ function(HostApp, APICalls, Hmac) { } Oauth.prototype.register = function (url) { - var those = this; + var _this = this; APICalls.get(url, { no_auth: true, callback: function(resp) { - those.profile = JSON.parse(resp.responseText).post; - those.entity = those.profile.content.entity; - HostApp.setStringForKey(those.entity, "entity") - HostApp.setServerUrls(those.profile.content.servers[0].urls); - APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(those.app_info), { + _this.profile = JSON.parse(resp.responseText).post; + _this.entity = _this.profile.content.entity; + HostApp.setStringForKey(_this.entity, "entity") + HostApp.setServerUrls(_this.profile.content.servers[0].urls); + APICalls.post(HostApp.serverUrl("new_post"), JSON.stringify(_this.app_info), { content_type: "https://tent.io/types/app/v0#", no_auth: true, callback: function(resp) { @@ -111,7 +111,7 @@ function(HostApp, APICalls, Hmac) { no_auth: true, callback: function(resp) { var data = JSON.parse(resp.responseText); - those.authRequest(data.post, app_id); + _this.authRequest(data.post, app_id); } }); }}); From 91913ddaadad2a0ca9d9621165c76c8e827de581 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 2 Oct 2013 19:55:02 +0200 Subject: [PATCH 111/127] OAuth in browser now --- Linux/bungloo.desktop.exmp | 5 +++-- Qt/Bungloo.py | 10 +++++++--- Qt/Windows.py | 5 ++++- WebKit/scripts/controller/Oauth.js | 4 ++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Linux/bungloo.desktop.exmp b/Linux/bungloo.desktop.exmp index 912d5d0..84531c6 100644 --- a/Linux/bungloo.desktop.exmp +++ b/Linux/bungloo.desktop.exmp @@ -1,7 +1,7 @@ [Desktop Entry] Version={VERSION} -Comment=Tent is a distributed social network protocol and Bungloo is one of the clients using it. -Exec=/usr/bin/bungloo +Comment=Tent is a distributed social network protocol and Bungloo is one of the microbloging clients using it. +Exec=bungloo %U GenericName=Tent Client Icon=bungloo Name=Bungloo @@ -10,3 +10,4 @@ StartupNotify=true Terminal=false Type=Application Categories=Network;Qt +MimeType=x-scheme-handler/bungloo; diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index aa0f5d4..c9a4bf3 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -97,7 +97,10 @@ class Bungloo(): argv = json.loads(str(args)) if len(argv) > 0: if argv[0] == "--new-message": - self.controller.openNewMessageWidow(" ".join(argv[1:])) + text = " ".join(argv[1:]) + self.controller.openNewMessageWidow(text) + elif argv[0].startswith("bungloo://oauthtoken"): + self.oauth_implementation.bungloo_callback(QtCore.QUrl(argv[0].encode("utf-8"), QtCore.QUrl.TolerantMode)) @@ -171,8 +174,8 @@ class Controller(QtCore.QObject): pass @QtCore.pyqtSlot() - def openNewMessageWidow(self): - self.openNewMessageWindowInReplyToStatus("") + def openNewMessageWidow(self, text=""): + self.openNewMessageWindowInReplyToStatus("") # FIXME: create a status_string with this content @QtCore.pyqtSlot(str) def openNewMessageWindowInReplyToStatus(self, status_string): @@ -323,6 +326,7 @@ Usage: bungloo [option [text]] app = SingleApplication.SingleApplicationWithMessaging(sys.argv, key) if app.isRunning(): + print json.dumps(sys.argv[1:]) app.sendMessage(json.dumps(sys.argv[1:])) sys.exit(1) diff --git a/Qt/Windows.py b/Qt/Windows.py index 3fb4d48..14c1161 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -233,6 +233,9 @@ class Oauth: self.core.page().mainFrame().evaluateJavaScript(script) def handle_authentication(self, url): + self.app.controller.openURL(url) + return False + self.auth_view = Helper.WebViewCreator(self.app) self.auth_view.setWindowTitle("Authentication") @@ -242,7 +245,7 @@ class Oauth: new_manager.sslErrors.connect(lambda reply, errors: self.handleSslErrors(reply, errors)) self.auth_view.page().setNetworkAccessManager(new_manager) self.auth_view.show() - print url + self.auth_view.load_url(url) return False diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 722d4c3..6ce5019 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -157,6 +157,10 @@ function(HostApp, APICalls, Hmac) { content_type: "application/json", auth_header: auth_header, callback: function(resp) { + debug(url) + debug(requestBody) + debug(auth_header) + debug(resp.responseText) those.requestAccessTokenTicketFinished(resp.responseText); }}); From 0e6600ac68581dfa4eba9ca8bd42892db0d173bd Mon Sep 17 00:00:00 2001 From: Jeena Date: Wed, 2 Oct 2013 20:45:58 +0200 Subject: [PATCH 112/127] fixed problems on elementary os --- Qt/Windows.py | 1 + WebKit/scripts/controller/NewPost.js | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Qt/Windows.py b/Qt/Windows.py index 14c1161..7dc7150 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -414,6 +414,7 @@ class NewPost(Helper.RestorableWindow): def load_finished(self, widget): callback = "function() { bungloo.newpost.setStatus(\"%s\"); }" % (self.status_string) script = "function HostAppGo() { start('newpost', " + callback + "); }" + script = "function HostAppGo() { start('newpost'); }" self.webView.page().mainFrame().evaluateJavaScript(script) self.webView.setFocus() diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 1b5b74e..1e6f5fc 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -6,7 +6,7 @@ define([ function(APICalls, HostApp) { function NewPost() { - + this.profiles = JSON.parse(controller.getCachedProfiles()); for (var key in this.profiles) { var item = this.profiles[key]; @@ -26,8 +26,10 @@ function(APICalls, HostApp) { $(document.body).append(this.container); - this.textarea.keyup(this.keyup.bind(this)); - this.textarea.keydown(this.keydown.bind(this)); + var _this = this; + + this.textarea.keyup(function(e) { _this.keyup(e) }); + this.textarea.keydown(function(e) { _this.keydown(e) }); this.suggestions = $("
        "); @@ -49,8 +51,9 @@ function(APICalls, HostApp) { } //this.buttons.images.bind("click", this.addImage.bind(this)); - this.buttons.is_private.bind("click", this.toggleIsPrivate.bind(this)); - this.buttons.send.bind("click", this.send.bind(this)); + + this.buttons.is_private.bind("click", function(e) { _this.toggleIsPrivate(e) ; } ); + this.buttons.send.bind("click", function (e) { _this.send(e); }); this.container.find("#status_bar").append(this.counter); this.container.find("#status_bar").append(buttons); From da2d8cfcd5f452de796eaf3100f1777d09af2ce5 Mon Sep 17 00:00:00 2001 From: jeena Date: Wed, 2 Oct 2013 21:08:48 +0200 Subject: [PATCH 113/127] removed debuging code --- Qt/Bungloo.py | 2 +- Qt/Windows.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index c9a4bf3..05dad38 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -174,7 +174,7 @@ class Controller(QtCore.QObject): pass @QtCore.pyqtSlot() - def openNewMessageWidow(self, text=""): + def openNewMessageWidow(self): self.openNewMessageWindowInReplyToStatus("") # FIXME: create a status_string with this content @QtCore.pyqtSlot(str) diff --git a/Qt/Windows.py b/Qt/Windows.py index 7dc7150..14c1161 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -414,7 +414,6 @@ class NewPost(Helper.RestorableWindow): def load_finished(self, widget): callback = "function() { bungloo.newpost.setStatus(\"%s\"); }" % (self.status_string) script = "function HostAppGo() { start('newpost', " + callback + "); }" - script = "function HostAppGo() { start('newpost'); }" self.webView.page().mainFrame().evaluateJavaScript(script) self.webView.setFocus() From 47fb023fddf35e31743c3cbd13cad663f1748184 Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 3 Oct 2013 21:21:32 +0200 Subject: [PATCH 114/127] fixed location and a names bug --- Qt/Bungloo.py | 2 +- WebKit/scripts/controller/NewPost.js | 4 ++-- WebKit/scripts/helper/Core.js | 8 ++++---- WebKit/scripts/main.js | 4 ++++ 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 05dad38..c9a4bf3 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -174,7 +174,7 @@ class Controller(QtCore.QObject): pass @QtCore.pyqtSlot() - def openNewMessageWidow(self): + def openNewMessageWidow(self, text=""): self.openNewMessageWindowInReplyToStatus("") # FIXME: create a status_string with this content @QtCore.pyqtSlot(str) diff --git a/WebKit/scripts/controller/NewPost.js b/WebKit/scripts/controller/NewPost.js index 1e6f5fc..e489041 100644 --- a/WebKit/scripts/controller/NewPost.js +++ b/WebKit/scripts/controller/NewPost.js @@ -189,7 +189,7 @@ function(APICalls, HostApp) { } NewPost.prototype.replaceAll = function(txt, replace, with_this) { - return txt.replace(new RegExp(replace, 'g'),with_this); + return txt.replace(new RegExp(replace, 'g'), with_this); } NewPost.prototype.replaceWithName = function(txt, with_item) { @@ -228,7 +228,7 @@ function(APICalls, HostApp) { // parse the text: // replace all the line braks by
        , and all the double spaces by the html version   text = this.replaceAll(text,'\n','
        '); - text = this.replaceAll(text,' ','  '); + //text = this.replaceAll(text,' ','  '); // replace the words by a highlighted version of the words diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 89399d0..50b284c 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -318,12 +318,12 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { return false; }); - // {"type":"Point","coordinates":[57.10803113,12.25854746]} - if (status.content && status.content.location && (typeof status.content.location.type == "undefined" || status.content.location.type == "Point")) { - var lat = status.content.location.coordinates[0]; - var lng = status.content.location.coordinates[1]; + if (status.content && status.content.location) { + var lat = status.content.location.latitude; + var lng = status.content.location.longitude; if (typeof lat != "undefined" && typeof lng != "undefined" && lat > 0 && lng > 0) { + var href = this.mapHref(lat, lng); template.geo.href = href; template.geo.style.display = ""; diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index 3610608..64fcaca 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -199,4 +199,8 @@ String.prototype.escapeSpecialChars = function() { .replace(/[\n]/g, '\\n') .replace(/[\r]/g, '\\r') .replace(/[\t]/g, '\\t'); +} + +String.prototype.escapeRegExp = function() { + return this.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } \ No newline at end of file From 1f04a063c405a39d19bd060a3ba00f21844d69b7 Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 3 Oct 2013 21:47:32 +0200 Subject: [PATCH 115/127] fixed map --- WebKit/scripts/helper/Core.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 50b284c..edeb70f 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -322,7 +322,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { var lat = status.content.location.latitude; var lng = status.content.location.longitude; - if (typeof lat != "undefined" && typeof lng != "undefined" && lat > 0 && lng > 0) { + if (typeof lat != "undefined" && typeof lng != "undefined") { var href = this.mapHref(lat, lng); template.geo.href = href; @@ -822,12 +822,12 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { } Core.prototype.mapHref = function(lat, lng) { - return "http://www.openstreetmap.org/?mlat=" + lat + "&mlon=" + lng + "&zoom=12"; + return "http://www.openstreetmap.org/?mlat=" + lat.toString() + "&mlon=" + lng.toString() + "&zoom=12"; } Core.prototype.mapSrc = function(lat, lng) { - var width = $("div:visible p.message").width(); - return "http://staticmap.openstreetmap.de/staticmap.php?center=" + lat + "," + lng + "&zoom=3&size=" + width + "x75&markers=" + lat + "," + lng + ",red-pushpin"; + var width = $("div:visible div.message").width(); + return "http://staticmap.openstreetmap.de/staticmap.php?center=" + lat.toString() + "," + lng.toString() + "&zoom=3&size=" + width + "x75&markers=" + lat + "," + lng + ",red-pushpin"; } Core.prototype.addMap = function(lat, lng, images) { @@ -838,6 +838,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { a.href = self.mapHref(lat, lng); var img = document.createElement("img"); img.src = self.mapSrc(lat, lng); + debug(img.src) a.appendChild(img); images.appendChild(a); }, 200); From 7d21000c80d8f447a2d9d854cfa52b63f5283dd6 Mon Sep 17 00:00:00 2001 From: jeena Date: Thu, 3 Oct 2013 22:33:10 +0200 Subject: [PATCH 116/127] fixed scroll to load --- WebKit/scripts/controller/Timeline.js | 11 ++++++----- WebKit/scripts/helper/Core.js | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 7f25baf..67efa7f 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -22,6 +22,7 @@ function(Core, APICalls, HostApp, URI) { this.since_time = null; this.pages = {}; + this.next = null; this.before = {id: null, entity: null, loading: false}; @@ -47,7 +48,6 @@ function(Core, APICalls, HostApp, URI) { Core.prototype.hide.call(this, this.container); } - Timeline.prototype.newStatus = function(_statuses, append) { for (var entity in _statuses.profiles) { @@ -59,12 +59,13 @@ function(Core, APICalls, HostApp, URI) { } this.pages = _statuses.pages; + if(_statuses.pages.next) this.next = _statuses.pages.next; statuses = _statuses.posts; - if(statuses != null && statuses.length > 0) { + this.before.loading = false; - this.before.loading = false; + if(statuses != null && statuses.length > 0) { if (append) statuses = statuses.reverse(); @@ -174,9 +175,9 @@ function(Core, APICalls, HostApp, URI) { Timeline.prototype.getMoreStatusPosts = function() { if (!this.before.loading) { - if (this.pages.next) { + if (this.next) { this.before.loading = true; - this.getNewData({}, true, this.pages.next); + this.getNewData({}, true, this.next); } } } diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index edeb70f..a0ddd02 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -838,7 +838,6 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { a.href = self.mapHref(lat, lng); var img = document.createElement("img"); img.src = self.mapSrc(lat, lng); - debug(img.src) a.appendChild(img); images.appendChild(a); }, 200); From dbad342cbcd92c0d651f7d7f05db36f50b99580c Mon Sep 17 00:00:00 2001 From: jeena Date: Fri, 4 Oct 2013 00:17:51 +0200 Subject: [PATCH 117/127] now showing referenced images --- WebKit/scripts/controller/Conversation.js | 19 ++++---- WebKit/scripts/controller/Timeline.js | 7 ++- WebKit/scripts/helper/Core.js | 53 +++++++++++------------ 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index 02287df..4ff204d 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -86,7 +86,7 @@ function(HostApp, Core, APICalls, URI, ConversationNode) { var status = _statuses.post; - var dom_element = _this.getStatusDOMElement(status); + var dom_element = _this.getStatusDOMElement(status, _statuses.refs); var cNode = new ConversationNode(dom_element); dom_element.cNode = cNode; @@ -130,7 +130,7 @@ function(HostApp, Core, APICalls, URI, ConversationNode) { var url = HostApp.serverUrl("post") .replace(/\{entity\}/, encodeURIComponent(entity)) .replace(/\{post\}/, id) - + "?profiles=entity"; + + "?profiles=entity&max_refs=20"; APICalls.get(url, { callback: callback }); } @@ -141,15 +141,16 @@ function(HostApp, Core, APICalls, URI, ConversationNode) { var callback = function(resp) { var statuses = JSON.parse(resp.responseText).mentions; + if (statuses) { + for (var i = 0; i < statuses.length; i++) { - for (var i = 0; i < statuses.length; i++) { + var status = statuses[i]; - var status = statuses[i]; - - // don't load if it is already there - var not_already_there = !document.getElementById("post-" + status.post + "-" + _this.action); - if(not_already_there && status.type.startsWith("https://tent.io/types/status/v0")) { - _this.append(status.post, status.entity, node, true); + // don't load if it is already there + var not_already_there = !document.getElementById("post-" + status.post + "-" + _this.action); + if(not_already_there && status.type.startsWith("https://tent.io/types/status/v0")) { + _this.append(status.post, status.entity, node, true); + } } } } diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 67efa7f..c2264a7 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -77,10 +77,13 @@ function(Core, APICalls, HostApp, URI) { this.since_id_entity = status.entity; this.since_time = status.received_at; } + + // if(status.id == "vBf0UALAJ97LnvJN4f6sBw") debug(status); + if (status.type.startsWith("https://tent.io/types/status/v0#")) { - var new_node = this.getStatusDOMElement(status); + var new_node = this.getStatusDOMElement(status, _statuses.refs); if (!document.getElementById(new_node.id)) { if(!append && this.body.childNodes.length > 0) { @@ -133,7 +136,7 @@ function(Core, APICalls, HostApp, URI) { uri.addSearch("types", post_types.join(",")); //uri.addSearch("sort_by", "published_at"); uri.addSearch("limit", this.posts_limit); - //uri.addSearch("max_refs", 20); + uri.addSearch("max_refs", 20); uri.addSearch("profiles", "entity"); if(this.since_time) { diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index a0ddd02..1a4f25b 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -166,7 +166,7 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { return jQuery.extend(true, {}, this.template);; } - Core.prototype.getStatusDOMElement = function(status) { + Core.prototype.getStatusDOMElement = function(status, refs) { var _this = this; @@ -260,35 +260,32 @@ function(jQuery, APICalls, URI, HostApp, Markdown) { template.message.innerHTML = this.replaceURLWithHTMLLinks(text, entities, template.message); this.afterChangingTextinMessageHTML(template.message) - /* - if (status.type == "https://tent.io/types/post/photo/v0.1.0") { - - for (var i = 0; i < status.attachments.length; i++) { - // closure needed for the callback - (function() { - - var attachment = status.attachments[i]; - - var img = new Image(); - - img.className = "photo"; - template.images.appendChild(img); - - var callback = function(resp) { - img.src = "data:" + attachment.type + ";base64," + resp.responseText; + if(status.refs) { + for (var i = 0; i < status.refs.length; i++) { + var ref = status.refs[i]; + if(ref.type == "https://tent.io/types/photo/v0#") { + if(refs) { + for (var j = 0; j < refs.length; j++) { + var r = refs[j]; + if(ref.post == r.id) { + for (var k = 0; k < r.attachments.length; k++) { + var attachment = r.attachments[k]; + var a = document.createElement("a"); + var img = document.createElement("img"); + img.src = HostApp.serverUrl("attachment") + .replace(/\{entity\}/, encodeURIComponent(r.entity)) + .replace(/\{digest\}/, attachment.digest); + a.appendChild(img); + a.href = img.src; + template.images.appendChild(a); + } + } + } } - - if (status.entity == HostApp.stringForKey("entity")) { - var url = APICalls.mkApiRootPath("/posts/" + status.id + "/attachments/" + attachment.name); - APICalls.http_call(url, "GET", callback, null, null, attachment.type); - } else { - var url = APICalls.mkApiRootPath("/posts/" + encodeURIComponent(status.entity) + "/" + status.id + "/attachments/" + attachment.name); - APICalls.http_call(url, "GET", callback, null, null, attachment.type); - } - })(); - } + } + } } - */ + this.findMentions(template.message, status.mentions); /* From dd15d2b44fac4450613768115bcab42fca08fc97 Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 5 Oct 2013 01:45:28 +0200 Subject: [PATCH 118/127] fixes needed for a os x version --- Mac/AccessToken.h | 27 - Mac/AccessToken.m | 130 - Mac/Bungloo-Info.plist | 80 - ...loo.temp_caseinsensitive_rename_Prefix.pch | 7 - Mac/Bungloo.xcodeproj/jeena.mode1v3 | 1421 -------- Mac/Bungloo.xcodeproj/jeena.pbxuser | 496 --- Mac/Bungloo.xcodeproj/project.pbxproj | 458 --- .../contents.xcworkspacedata | 7 - .../WorkspaceSettings.xcsettings | 10 - .../xcdebugger/Breakpoints.xcbkptlist | 18 - .../xcschemes/Bungloo.xcscheme | 86 - .../xcschemes/xcschememanagement.plist | 22 - Mac/Bungloo_Prefix.pch | 7 - Mac/Constants.h | 22 - Mac/Constants.m | 220 -- Mac/Controller.h | 95 - Mac/Controller.m | 524 --- Mac/English.lproj/Credits.rtf | 30 - Mac/English.lproj/InfoPlist.strings | 2 - Mac/English.lproj/MainMenu.xib | 3057 ----------------- Mac/English.lproj/NewMessageWindow.xib | 838 ----- Mac/Growl Registration Ticket.growlRegDict | 17 - Mac/Growl.framework/Growl | 1 - Mac/Growl.framework/Headers | 1 - Mac/Growl.framework/Resources | 1 - Mac/Growl.framework/Versions/A/Growl | Bin 857664 -> 0 bytes .../Versions/A/Headers/Growl.h | 5 - .../A/Headers/GrowlApplicationBridge.h | 567 --- .../Versions/A/Headers/GrowlDefines.h | 386 --- .../A/Headers/GrowlPluginPreferenceStrings.h | 67 - .../Versions/A/Resources/Info.plist | 40 - .../Versions/A/_CodeSignature/CodeResources | 34 - Mac/Growl.framework/Versions/Current | 1 - Mac/MimeType.h | 13 - Mac/MimeType.m | 27 - Mac/NSData+Base64.h | 46 - Mac/NSData+Base64.m | 13 - Mac/NewConversationWindowController.h | 27 - Mac/NewConversationWindowController.m | 70 - Mac/NewConversationWindowController.xib | 327 -- Mac/NewMessageWindow.h | 48 - Mac/NewMessageWindow.m | 344 -- Mac/PostModel.h | 28 - Mac/PostModel.m | 26 - Mac/Sparkle.framework/Headers | 1 - Mac/Sparkle.framework/Resources | 1 - Mac/Sparkle.framework/Sparkle | 1 - .../Versions/A/Headers/SUAppcast.h | 33 - .../Versions/A/Headers/SUAppcastItem.h | 47 - .../Versions/A/Headers/SUUpdater.h | 118 - .../A/Headers/SUVersionComparisonProtocol.h | 27 - .../Versions/A/Headers/Sparkle.h | 21 - .../Versions/A/Resources/Info.plist | 24 - .../Versions/A/Resources/License.txt | 7 - .../A/Resources/SUModelTranslation.plist | 174 - .../A/Resources/SUStatus.nib/classes.nib | 56 - .../A/Resources/SUStatus.nib/info.nib | 20 - .../A/Resources/SUStatus.nib/keyedobjects.nib | Bin 7344 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7278 -> 0 bytes .../de.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../de.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10493 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 13189 -> 0 bytes .../A/Resources/de.lproj/Sparkle.strings | Bin 9806 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7148 -> 0 bytes .../en.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../en.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10623 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 21 - .../keyedobjects.nib | Bin 13263 -> 0 bytes .../A/Resources/en.lproj/Sparkle.strings | Bin 8216 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7273 -> 0 bytes .../es.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../es.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10668 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 13404 -> 0 bytes .../A/Resources/es.lproj/Sparkle.strings | Bin 8020 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 16 - .../keyedobjects.nib | Bin 7245 -> 0 bytes .../fr.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../fr.lproj/SUUpdateAlert.nib/info.nib | 16 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10338 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 16 - .../keyedobjects.nib | Bin 13156 -> 0 bytes .../A/Resources/fr.lproj/Sparkle.strings | Bin 8554 -> 0 bytes .../Versions/A/Resources/fr.lproj/fr.lproj | 1 - .../Versions/A/Resources/fr_CA.lproj | 1 - .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7161 -> 0 bytes .../it.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../it.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10360 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 12659 -> 0 bytes .../A/Resources/it.lproj/Sparkle.strings | Bin 8914 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 18 - .../keyedobjects.nib | Bin 7234 -> 0 bytes .../nl.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../nl.lproj/SUUpdateAlert.nib/info.nib | 16 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10220 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 16 - .../keyedobjects.nib | Bin 12535 -> 0 bytes .../A/Resources/nl.lproj/Sparkle.strings | Bin 8514 -> 0 bytes .../Versions/A/Resources/relaunch | Bin 58924 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7675 -> 0 bytes .../ru.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../ru.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10895 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 18 - .../keyedobjects.nib | Bin 12898 -> 0 bytes .../A/Resources/ru.lproj/Sparkle.strings | Bin 8364 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7474 -> 0 bytes .../sv.lproj/SUUpdateAlert.nib/classes.nib | 39 - .../sv.lproj/SUUpdateAlert.nib/info.nib | 18 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10180 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 13483 -> 0 bytes .../A/Resources/sv.lproj/Sparkle.strings | Bin 8142 -> 0 bytes Mac/Sparkle.framework/Versions/A/Sparkle | Bin 463540 -> 0 bytes Mac/Sparkle.framework/Versions/Current | 1 - Mac/TB_SendTemplate.png | Bin 3144 -> 0 bytes Mac/ViewDelegate.h | 22 - Mac/ViewDelegate.m | 134 - Mac/main.m | 14 - Mac/publish/Appcast.xml | 20 - Mac/publish/ReleaseNotes.html | 265 -- Mac/publish/dsa_pub.pem | 20 - Mac/publish/publish.rb | 56 - {Mac => MacQt}/Icon.icns | Bin MacQt/deploy.sh | 15 + MacQt/setup.py | 51 + Qt/Bungloo.py | 17 +- Qt/Helper.py | 14 +- Qt/SingleApplication.py | 9 + Qt/Windows.py | 1 + 158 files changed, 96 insertions(+), 12556 deletions(-) delete mode 100644 Mac/AccessToken.h delete mode 100644 Mac/AccessToken.m delete mode 100644 Mac/Bungloo-Info.plist delete mode 100644 Mac/Bungloo.temp_caseinsensitive_rename_Prefix.pch delete mode 100644 Mac/Bungloo.xcodeproj/jeena.mode1v3 delete mode 100644 Mac/Bungloo.xcodeproj/jeena.pbxuser delete mode 100644 Mac/Bungloo.xcodeproj/project.pbxproj delete mode 100644 Mac/Bungloo.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 Mac/Bungloo.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100644 Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Bungloo.xcscheme delete mode 100644 Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 Mac/Bungloo_Prefix.pch delete mode 100644 Mac/Constants.h delete mode 100644 Mac/Constants.m delete mode 100644 Mac/Controller.h delete mode 100644 Mac/Controller.m delete mode 100644 Mac/English.lproj/Credits.rtf delete mode 100644 Mac/English.lproj/InfoPlist.strings delete mode 100644 Mac/English.lproj/MainMenu.xib delete mode 100644 Mac/English.lproj/NewMessageWindow.xib delete mode 100644 Mac/Growl Registration Ticket.growlRegDict delete mode 120000 Mac/Growl.framework/Growl delete mode 120000 Mac/Growl.framework/Headers delete mode 120000 Mac/Growl.framework/Resources delete mode 100755 Mac/Growl.framework/Versions/A/Growl delete mode 100644 Mac/Growl.framework/Versions/A/Headers/Growl.h delete mode 100644 Mac/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h delete mode 100644 Mac/Growl.framework/Versions/A/Headers/GrowlDefines.h delete mode 100644 Mac/Growl.framework/Versions/A/Headers/GrowlPluginPreferenceStrings.h delete mode 100644 Mac/Growl.framework/Versions/A/Resources/Info.plist delete mode 100644 Mac/Growl.framework/Versions/A/_CodeSignature/CodeResources delete mode 120000 Mac/Growl.framework/Versions/Current delete mode 100644 Mac/MimeType.h delete mode 100644 Mac/MimeType.m delete mode 100644 Mac/NSData+Base64.h delete mode 100644 Mac/NSData+Base64.m delete mode 100644 Mac/NewConversationWindowController.h delete mode 100644 Mac/NewConversationWindowController.m delete mode 100644 Mac/NewConversationWindowController.xib delete mode 100644 Mac/NewMessageWindow.h delete mode 100644 Mac/NewMessageWindow.m delete mode 100644 Mac/PostModel.h delete mode 100644 Mac/PostModel.m delete mode 120000 Mac/Sparkle.framework/Headers delete mode 120000 Mac/Sparkle.framework/Resources delete mode 120000 Mac/Sparkle.framework/Sparkle delete mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h delete mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h delete mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h delete mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h delete mode 100644 Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/Info.plist delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/License.txt delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings delete mode 120000 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj delete mode 120000 Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings delete mode 100755 Mac/Sparkle.framework/Versions/A/Resources/relaunch delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings delete mode 100755 Mac/Sparkle.framework/Versions/A/Sparkle delete mode 120000 Mac/Sparkle.framework/Versions/Current delete mode 100644 Mac/TB_SendTemplate.png delete mode 100644 Mac/ViewDelegate.h delete mode 100644 Mac/ViewDelegate.m delete mode 100644 Mac/main.m delete mode 100755 Mac/publish/Appcast.xml delete mode 100644 Mac/publish/ReleaseNotes.html delete mode 100644 Mac/publish/dsa_pub.pem delete mode 100755 Mac/publish/publish.rb rename {Mac => MacQt}/Icon.icns (100%) create mode 100755 MacQt/deploy.sh create mode 100644 MacQt/setup.py diff --git a/Mac/AccessToken.h b/Mac/AccessToken.h deleted file mode 100644 index b9cbcf8..0000000 --- a/Mac/AccessToken.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// AccessToken.h -// bungloo -// -// Created by Jeena Paradies on 19/09/2011. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - - - -@interface AccessToken : NSObject { - NSUserDefaults *d; -} - -- (void)setString:(NSString *)string forKey:(NSString *)aKey; -- (NSString *)stringForKey:(NSString *)aKey; - -- (void)setAccessToken:(NSString *)_accessToken; -- (NSString *)accessToken; -- (void)setSecret:(NSString *)_secret; -- (NSString *)secret; -- (void)setUserId:(NSString *)_userId; -- (NSString *)userId; -- (void)setScreenName:(NSString *)_screenName; -- (NSString *)screenName; - -@end \ No newline at end of file diff --git a/Mac/AccessToken.m b/Mac/AccessToken.m deleted file mode 100644 index f60e91c..0000000 --- a/Mac/AccessToken.m +++ /dev/null @@ -1,130 +0,0 @@ -// -// AccessToken.m -// bungloo -// -// Created by Jeena Paradies on 19/09/2011. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import "AccessToken.h" -#include - -@implementation AccessToken - -- (id)init -{ - self = [super init]; - if (self) { - // Initialization code here. - d = [NSUserDefaults standardUserDefaults]; - //[d removeObjectForKey:@"user_access_token"]; - } - - return self; -} - -- (void)setString:(NSString *)string forKey:(NSString *)aKey -{ - [d setObject:string forKey:aKey]; - [d synchronize]; -} - -- (NSString *)stringForKey:(NSString *)aKey -{ - return [d objectForKey:aKey]; -} - -- (void)setAccessToken:(NSString *)_accessToken -{ - [d synchronize]; -} - -- (NSString *)accessToken -{ - return [d objectForKey:@"accessToken"]; -} - -- (void)setSecret:(NSString *)_secret -{ - UInt32 _passwordLength = 0; - char *_password = nil; - SecKeychainItemRef item = nil; - SecKeychainFindGenericPassword(NULL, 6, "Bungloo", 17, "BunglooUserAccount", &_passwordLength, (void **)&_password, &item); - - OSStatus status; - void * passwordData = (void*)[_secret cStringUsingEncoding:NSUTF8StringEncoding]; - UInt32 passwordLength = strlen((char*)passwordData); - if (!item) - { - status = SecKeychainAddGenericPassword( - NULL, // default keychain - 6, // length of service name - "Bungloo", // service name - 17, // length of account name - "BunglooUserAccount", // account name - passwordLength, // length of password - passwordData, // pointer to password data - NULL // the item reference - ); - } - else - { - status = SecKeychainItemModifyContent( - item, - NULL, - passwordLength, - passwordData - ); - } - NSLog(@"%@",(NSString *)SecCopyErrorMessageString (status,NULL)); -} - -- (NSString *)secret -{ - UInt32 passwordLength = 0; - char *password = nil; - SecKeychainItemRef item = nil; - SecKeychainFindGenericPassword(NULL, 6, "Bungloo", 17, "BunglooUserAccount", &passwordLength, (void **)&password, &item); - - if (!item) { - return nil; - } - - //Get password - NSString *passwordString = [[[NSString alloc] initWithData:[NSData dataWithBytes:password length:passwordLength] encoding:NSUTF8StringEncoding] autorelease]; - SecKeychainItemFreeContent(NULL, password); - return passwordString; -} - -- (void)setUserId:(NSString *)_userId -{ - [d setObject:_userId forKey:@"userId"]; - [d synchronize]; -} - -- (NSString *)userId -{ - return [d objectForKey:@"userId"]; -} - -- (void)setScreenName:(NSString *)_screenName -{ - [d setObject:_screenName forKey:@"screenName"]; - [d synchronize]; -} - -- (NSString *)screenName -{ - return [d objectForKey:@"screenName"]; -} - -+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { - return NO; -} - -+ (BOOL)isKeyExcludedFromWebScript:(const char *)name { - return NO; -} - - -@end diff --git a/Mac/Bungloo-Info.plist b/Mac/Bungloo-Info.plist deleted file mode 100644 index 5a215fe..0000000 --- a/Mac/Bungloo-Info.plist +++ /dev/null @@ -1,80 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - ???? - - CFBundleTypeIconFile - - CFBundleTypeName - DocumentType - CFBundleTypeOSTypes - - ???? - - CFBundleTypeRole - Editor - NSDocumentClass - NewMessageWindow - - - CFBundleExecutable - Bungloo - CFBundleHelpBookFolder - Bungloo.help - CFBundleHelpBookName - nu.jabs.apps.bungloo.help - CFBundleIconFile - Icon.icns - CFBundleIdentifier - nu.jabs.apps.bungloo - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Bungloo - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.4.3 - CFBundleSignature - ???? - CFBundleURLTypes - - - CFBundleURLName - nu.jabs.apps.bungloo.handler - CFBundleURLSchemes - - bungloo - - - - CFBundleVersion - 1.4.3 - LSApplicationCategoryType - public.app-category.social-networking - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - NSServices - - SUFeedURL - http://jabs.nu/bungloo/download/Appcast.xml - SUPublicDSAKeyFile - dsa_pub.pem - UTExportedTypeDeclarations - - UTImportedTypeDeclarations - - - diff --git a/Mac/Bungloo.temp_caseinsensitive_rename_Prefix.pch b/Mac/Bungloo.temp_caseinsensitive_rename_Prefix.pch deleted file mode 100644 index 694af35..0000000 --- a/Mac/Bungloo.temp_caseinsensitive_rename_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'bungloo' target in the 'bungloo' project -// - -#ifdef __OBJC__ - #import -#endif diff --git a/Mac/Bungloo.xcodeproj/jeena.mode1v3 b/Mac/Bungloo.xcodeproj/jeena.mode1v3 deleted file mode 100644 index 777a537..0000000 --- a/Mac/Bungloo.xcodeproj/jeena.mode1v3 +++ /dev/null @@ -1,1421 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCProjectFormatConflictsModule - Name - Project Format Conflicts List - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - BundleLoadPath - - MaxInstances - n - Module - XCSnapshotModule - Name - Snapshots Tool - - - BundlePath - /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources - Description - DefaultDescriptionKey - DockingSystemVisible - - Extension - mode1v3 - FavBarConfig - - PBXProjectModuleGUID - 1F68211F1249D25900A03CED - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.mode1v3 - MajorVersion - 33 - MinorVersion - 0 - Name - Default - Notifications - - OpenEditors - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - active-combo-popup - action - NSToolbarFlexibleSpaceItem - build-and-go - com.apple.ide.PBXToolbarStopButton - get-info - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProjectWithEditor - Identifier - perspective.project - IsVertical - - Layout - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 287 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 2A37F4AAFDCFA73011CA2CEA - 2A37F4ABFDCFA73011CA2CEA - 2A37F4B8FDCFA73011CA2CEA - 1FFA36C71177D861006C8562 - 2A37F4C3FDCFA73011CA2CEA - 1058C7A6FEA54F5311CA2CBB - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 37 - 17 - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {287, 1304}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {304, 1322}} - GroupTreeTableConfiguration - - MainColumn - 287 - - RubberWindowFrame - 469 55 1319 1363 0 0 2560 1418 - - Module - PBXSmartGroupTreeModule - Proportion - 304pt - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20306471E060097A5F4 - PBXProjectModuleLabel - TwittiaCore.js - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CE0B20406471E060097A5F4 - PBXProjectModuleLabel - TwittiaCore.js - _historyCapacity - 0 - bookmark - 1F8D1E4412DF5A0D00571730 - history - - 1F98DCA9124C691A004289ED - 1F98DCAD124C691A004289ED - 1F17508512A972DF004A0B42 - 1F2F793712BD93A600F073BE - 1F27470412D905CA00339B4F - 1F618EAC12DB5D0700E500D9 - 1F618ED112DB60D100E500D9 - 1F618ED212DB60D100E500D9 - 1F618ED312DB60D100E500D9 - 1F618ED412DB60D100E500D9 - 1F618ED512DB60D100E500D9 - 1F618ED612DB60D100E500D9 - 1F618F0212DB665B00E500D9 - 1F618F0312DB665B00E500D9 - 1F618F0412DB665B00E500D9 - 1F618F0512DB665B00E500D9 - 1F8D1E4212DF5A0D00571730 - 1F8D1E4312DF5A0D00571730 - - - SplitCount - 1 - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {1010, 1317}} - RubberWindowFrame - 469 55 1319 1363 0 0 2560 1418 - - Module - PBXNavigatorGroup - Proportion - 1317pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20506471E060097A5F4 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{0, 1322}, {1010, 0}} - RubberWindowFrame - 469 55 1319 1363 0 0 2560 1418 - - Module - XCDetailModule - Proportion - 0pt - - - Proportion - 1010pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDetailModule - - TableOfContents - - 1F8D1E2712DF55D600571730 - 1CE0B1FE06471DED0097A5F4 - 1F8D1E2812DF55D600571730 - 1CE0B20306471E060097A5F4 - 1CE0B20506471E060097A5F4 - - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarConfiguration - xcode.toolbar.config.defaultV3 - - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.morph - IsVertical - 0 - Layout - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 11E0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 337}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 1 - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 355}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 373 269 690 397 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 100% - - - Name - Morph - PreferredWidth - 300 - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - - TableOfContents - - 11E0B1FE06471DED0097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default.shortV3 - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' - StatusbarIsVisible - - TimeStamp - 0.0 - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 1 - Type - Perspectives - UpdateMessage - The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? - WindowJustification - 5 - WindowOrderList - - 1F8D1E4612DF5A0D00571730 - 1F8D1E4712DF5A0D00571730 - 1F6821201249D25900A03CED - 1CD10A99069EF8BA00B06720 - 1C78EAAD065D492600B07095 - /Users/jeena/Projects/Twittia/Twittia 2.xcodeproj - - WindowString - 469 55 1319 1363 0 0 2560 1418 - WindowToolsV3 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.build - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {1299, 402}} - RubberWindowFrame - 2771 56 1299 684 2560 0 1920 1200 - - Module - PBXNavigatorGroup - Proportion - 402pt - - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build Results - XCBuildResultsTrigger_Collapse - 1021 - XCBuildResultsTrigger_Open - 1011 - - GeometryConfiguration - - Frame - {{0, 407}, {1299, 236}} - RubberWindowFrame - 2771 56 1299 684 2560 0 1920 1200 - - Module - PBXBuildResultsModule - Proportion - 236pt - - - Proportion - 643pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - - TableOfContents - - 1F6821201249D25900A03CED - 1F8D1E2912DF55D600571730 - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.buildV3 - WindowContentMinSize - 486 300 - WindowString - 2771 56 1299 684 2560 0 1920 1200 - WindowToolGUID - 1F6821201249D25900A03CED - WindowToolIsVisible - - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debugger - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {316, 203}} - {{316, 0}, {378, 203}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {694, 203}} - {{0, 203}, {694, 178}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {694, 381}} - PBXDebugSessionStackFrameViewKey - - DebugVariablesTableConfiguration - - Name - 120 - Value - 85 - Summary - 148 - - Frame - {{316, 0}, {378, 203}} - RubberWindowFrame - 67 996 694 422 0 0 2560 1418 - - RubberWindowFrame - 67 996 694 422 0 0 2560 1418 - - Module - PBXDebugSessionModule - Proportion - 381pt - - - Proportion - 381pt - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - - TableOfContents - - 1CD10A99069EF8BA00B06720 - 1F8D1E2A12DF55D600571730 - 1C162984064C10D400B95A72 - 1F8D1E2B12DF55D600571730 - 1F8D1E2C12DF55D600571730 - 1F8D1E2D12DF55D600571730 - 1F8D1E2E12DF55D600571730 - 1F8D1E2F12DF55D600571730 - - ToolbarConfiguration - xcode.toolbar.config.debugV3 - WindowString - 67 996 694 422 0 0 2560 1418 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - - - - Identifier - windowTool.find - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {781, 167}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 50% - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{8, 0}, {773, 254}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXProjectFindModule - Proportion - 50% - - - Proportion - 428pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE - 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 - 1CD0528E0623707200166675 - - WindowString - 62 385 781 470 0 0 1440 878 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - MENUSEPARATOR - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debuggerConsole - IsVertical - - Layout - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {968, 946}} - RubberWindowFrame - 2810 187 968 987 2560 0 1920 1200 - - Module - PBXDebugCLIModule - Proportion - 946pt - - - Proportion - 946pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - - TableOfContents - - 1C78EAAD065D492600B07095 - 1F8D1E4512DF5A0D00571730 - 1C78EAAC065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.consoleV3 - WindowString - 2810 187 968 987 2560 0 1920 1200 - WindowToolGUID - 1C78EAAD065D492600B07095 - WindowToolIsVisible - - - - Identifier - windowTool.snapshots - Layout - - - Dock - - - Module - XCSnapshotModule - Proportion - 100% - - - Proportion - 100% - - - Name - Snapshots - ServiceClasses - - XCSnapshotModule - - StatusbarIsVisible - Yes - ToolbarConfiguration - xcode.toolbar.config.snapshots - WindowString - 315 824 300 550 0 0 1440 878 - WindowToolIsVisible - Yes - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.0950012207031 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.breakpoints - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 836 546 744 409 0 0 2560 1418 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 836 546 744 409 0 0 2560 1418 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 3 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - - TableOfContents - - 1F618EB812DB5D0700E500D9 - 1F618EB912DB5D0700E500D9 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpointsV3 - WindowString - 836 546 744 409 0 0 2560 1418 - WindowToolGUID - 1F618EB812DB5D0700E500D9 - WindowToolIsVisible - - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimatorV3 - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 100% - - - Proportion - 100% - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.projectFormatConflicts - Layout - - - Dock - - - Module - XCProjectFormatConflictsModule - Proportion - 100% - - - Proportion - 100% - - - Name - Project Format Conflicts - ServiceClasses - - XCProjectFormatConflictsModule - - StatusbarIsVisible - 0 - WindowContentMinSize - 450 300 - WindowString - 50 850 472 307 0 0 1440 877 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {374, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {630, 331}} - MembersFrame - {{0, 105}, {374, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 97 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 385 179 630 352 0 0 1440 878 - - Module - PBXClassBrowserModule - Proportion - 332pt - - - Proportion - 332pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C0AD2AF069F1E9B00FABCE6 - 1C0AD2B0069F1E9B00FABCE6 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 385 179 630 352 0 0 1440 878 - WindowToolGUID - 1C0AD2AF069F1E9B00FABCE6 - WindowToolIsVisible - 0 - - - Identifier - windowTool.refactoring - IncludeInToolsMenu - 0 - Layout - - - Dock - - - BecomeActive - 1 - GeometryConfiguration - - Frame - {0, 0}, {500, 335} - RubberWindowFrame - {0, 0}, {500, 335} - - Module - XCRefactoringModule - Proportion - 100% - - - Proportion - 100% - - - Name - Refactoring - ServiceClasses - - XCRefactoringModule - - WindowString - 200 200 500 356 0 0 1920 1200 - - - - diff --git a/Mac/Bungloo.xcodeproj/jeena.pbxuser b/Mac/Bungloo.xcodeproj/jeena.pbxuser deleted file mode 100644 index 16fe5ce..0000000 --- a/Mac/Bungloo.xcodeproj/jeena.pbxuser +++ /dev/null @@ -1,496 +0,0 @@ -// !$*UTF8*$! -{ - 1F17508512A972DF004A0B42 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36CB1177D861006C8562 /* default.css */; - name = "default.css: 80"; - rLen = 0; - rLoc = 1037; - rType = 0; - vrLen = 553; - vrLoc = 411; - }; - 1F198FC7117BC4AB0049BEA7 /* README.markdown */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1498}"; - }; - }; - 1F1990DF117BD2250049BEA7 /* Appcast.xml */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{784, 0}"; - sepNavVisRange = "{0, 954}"; - }; - }; - 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1285}}"; - sepNavSelRange = "{461, 0}"; - sepNavVisRange = "{0, 1964}"; - }; - }; - 1F27470412D905CA00339B4F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */; - name = "dsa_pub.pem: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1178; - vrLoc = 0; - }; - 1F2F793712BD93A600F073BE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36D51177D879006C8562 /* ViewDelegate.m */; - name = "ViewDelegate.m: 37"; - rLen = 13; - rLoc = 1089; - rType = 0; - vrLen = 1550; - vrLoc = 0; - }; - 1F364396118CBC77008198EF /* OAuth.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 636}"; - }; - }; - 1F364397118CBC77008198EF /* OAuth.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1034, 2655}}"; - sepNavSelRange = "{4216, 0}"; - sepNavVisRange = "{2668, 3057}"; - }; - }; - 1F4673E61180F654006CC37C /* TwittiaCore.js */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1013, 5355}}"; - sepNavSelRange = "{1631, 0}"; - sepNavVisRange = "{248, 3030}"; - }; - }; - 1F618EA612DB5D0200E500D9 /* MyDocument.m:108 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; - functionName = "-sendTweet:"; - hitCount = 1; - ignoreCount = 0; - lineNumber = 108; - location = Twittia; - modificationTime = 316627463.947617; - originalNumberOfMultipleMatches = 1; - state = 1; - }; - 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */; - name = "MyDocument.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 573; - vrLoc = 0; - }; - 1F618EC812DB5E6100E500D9 /* TweetModel.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; - sepNavSelRange = "{358, 0}"; - sepNavVisRange = "{0, 366}"; - }; - }; - 1F618EC912DB5E6100E500D9 /* TweetModel.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; - sepNavSelRange = "{279, 0}"; - sepNavVisRange = "{0, 316}"; - }; - }; - 1F618ED112DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; - name = "MyDocument.m: 107"; - rLen = 0; - rLoc = 3758; - rType = 0; - vrLen = 3377; - vrLoc = 537; - }; - 1F618ED212DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F618EC812DB5E6100E500D9 /* TweetModel.h */; - name = "TweetModel.h: 18"; - rLen = 0; - rLoc = 358; - rType = 0; - vrLen = 366; - vrLoc = 0; - }; - 1F618ED312DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F618EC912DB5E6100E500D9 /* TweetModel.m */; - name = "TweetModel.m: 18"; - rLen = 0; - rLoc = 279; - rType = 0; - vrLen = 316; - vrLoc = 0; - }; - 1F618ED412DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36D21177D879006C8562 /* Controller.h */; - name = "Controller.h: 10"; - rLen = 25; - rLoc = 149; - rType = 0; - vrLen = 1539; - vrLoc = 0; - }; - 1F618ED512DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F364396118CBC77008198EF /* OAuth.h */; - name = "OAuth.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 636; - vrLoc = 0; - }; - 1F618ED612DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F364397118CBC77008198EF /* OAuth.m */; - name = "OAuth.m: 135"; - rLen = 0; - rLoc = 4216; - rType = 0; - vrLen = 3057; - vrLoc = 2668; - }; - 1F618F0212DB665B00E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36D31177D879006C8562 /* Controller.m */; - name = "Controller.m: 178"; - rLen = 0; - rLoc = 5952; - rType = 0; - vrLen = 2979; - vrLoc = 4466; - }; - 1F618F0312DB665B00E500D9 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D15AC360486D014006FF6A4 /* Twittia_2-Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - LSMinimumSystemVersion, - ); - name = "/Users/jeena/Projects/Twittia/Twittia_2-Info.plist"; - rLen = 0; - rLoc = 9223372036854775808; - }; - 1F618F0412DB665B00E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F1990DF117BD2250049BEA7 /* Appcast.xml */; - name = "Appcast.xml: 15"; - rLen = 0; - rLoc = 784; - rType = 0; - vrLen = 954; - vrLoc = 0; - }; - 1F618F0512DB665B00E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F198FC7117BC4AB0049BEA7 /* README.markdown */; - name = "README.markdown: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1498; - vrLoc = 0; - }; - 1F68210012493A3400A03CED /* Twittia */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 0; - configStateDict = { - }; - customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = Twittia; - savedGlobals = { - }; - showTypeColumn = 0; - sourceDirectories = ( - ); - variableFormatDictionary = { - }; - }; - 1F68211B12493A5400A03CED /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - repositoryNamesForRoots = { - "" = ""; - }; - }; - }; - 1F68211C12493A5400A03CED /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - 1F77DB46118C5F1C007C7F1E /* Constants.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1115, 3300}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1114}"; - }; - }; - 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */; - name = "ReleaseNotes.html: 16"; - rLen = 0; - rLoc = 461; - rType = 0; - vrLen = 1964; - vrLoc = 0; - }; - 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F4673E61180F654006CC37C /* TwittiaCore.js */; - name = "TwittiaCore.js: 90"; - rLen = 3; - rLoc = 3369; - rType = 0; - vrLen = 3174; - vrLoc = 376; - }; - 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F4673E61180F654006CC37C /* TwittiaCore.js */; - name = "TwittiaCore.js: 66"; - rLen = 0; - rLoc = 1631; - rType = 0; - vrLen = 3030; - vrLoc = 248; - }; - 1F98DCA9124C691A004289ED /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F77DB46118C5F1C007C7F1E /* Constants.m */; - name = "Constants.m: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1114; - vrLoc = 0; - }; - 1F98DCAD124C691A004289ED /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 1F98DC9D124BFFD7004289ED /* pin.png */; - }; - 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 865}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1178}"; - }; - }; - 1FFA36CB1177D861006C8562 /* default.css */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1115, 3270}}"; - sepNavSelRange = "{1037, 0}"; - sepNavVisRange = "{411, 553}"; - }; - }; - 1FFA36D21177D879006C8562 /* Controller.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{149, 25}"; - sepNavVisRange = "{0, 1539}"; - }; - }; - 1FFA36D31177D879006C8562 /* Controller.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1238, 3285}}"; - sepNavSelRange = "{5834, 0}"; - sepNavVisRange = "{5432, 1211}"; - }; - }; - 1FFA36D51177D879006C8562 /* ViewDelegate.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1517, 1237}}"; - sepNavSelRange = "{1089, 13}"; - sepNavVisRange = "{0, 1550}"; - }; - }; - 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { - activeBuildConfigurationName = Release; - activeExecutable = 1F68210012493A3400A03CED /* Twittia */; - activeTarget = 8D15AC270486D014006FF6A4 /* Twittia */; - addToTargets = ( - 8D15AC270486D014006FF6A4 /* Twittia */, - ); - breakpoints = ( - 1F618EA612DB5D0200E500D9 /* MyDocument.m:108 */, - ); - codeSenseManager = 1F68211C12493A5400A03CED /* Code sense */; - executables = ( - 1F68210012493A3400A03CED /* Twittia */, - ); - perUserDictionary = { - "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 20, - 198, - 20, - 99, - 99, - 29, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBreakpointsDataSource_ActionID, - PBXBreakpointsDataSource_TypeID, - PBXBreakpointsDataSource_BreakpointID, - PBXBreakpointsDataSource_UseID, - PBXBreakpointsDataSource_LocationID, - PBXBreakpointsDataSource_ConditionID, - PBXBreakpointsDataSource_IgnoreCountID, - PBXBreakpointsDataSource_ContinueID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 200, - 200, - 580.58349609375, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBookmarksDataSource_LocationID, - PBXBookmarksDataSource_NameID, - PBXBookmarksDataSource_CommentsID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 771, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 731, - 60, - 20, - 48.16259765625, - 43, - 43, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXTargetDataSource_PrimaryAttribute, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 316626383; - PBXWorkspaceStateSaveDate = 316626383; - }; - perUserProjectItems = { - 1F17508512A972DF004A0B42 /* PBXTextBookmark */ = 1F17508512A972DF004A0B42 /* PBXTextBookmark */; - 1F27470412D905CA00339B4F /* PBXTextBookmark */ = 1F27470412D905CA00339B4F /* PBXTextBookmark */; - 1F2F793712BD93A600F073BE /* PBXTextBookmark */ = 1F2F793712BD93A600F073BE /* PBXTextBookmark */; - 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */ = 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */; - 1F618ED112DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED112DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED212DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED212DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED312DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED312DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED412DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED412DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED512DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED512DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED612DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED612DB60D100E500D9 /* PBXTextBookmark */; - 1F618F0212DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0212DB665B00E500D9 /* PBXTextBookmark */; - 1F618F0312DB665B00E500D9 /* PlistBookmark */ = 1F618F0312DB665B00E500D9 /* PlistBookmark */; - 1F618F0412DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0412DB665B00E500D9 /* PBXTextBookmark */; - 1F618F0512DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0512DB665B00E500D9 /* PBXTextBookmark */; - 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */; - 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */; - 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */; - 1F98DCA9124C691A004289ED /* PBXTextBookmark */ = 1F98DCA9124C691A004289ED /* PBXTextBookmark */; - 1F98DCAD124C691A004289ED /* PBXBookmark */ = 1F98DCAD124C691A004289ED /* PBXBookmark */; - }; - sourceControlManager = 1F68211B12493A5400A03CED /* Source Control */; - userBuildSettings = { - }; - }; - 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1748, 1755}}"; - sepNavSelRange = "{3758, 0}"; - sepNavVisRange = "{537, 3377}"; - }; - }; - 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 573}"; - }; - }; - 8D15AC270486D014006FF6A4 /* Twittia */ = { - activeExec = 0; - executables = ( - 1F68210012493A3400A03CED /* Twittia */, - ); - }; -} diff --git a/Mac/Bungloo.xcodeproj/project.pbxproj b/Mac/Bungloo.xcodeproj/project.pbxproj deleted file mode 100644 index 6e453be..0000000 --- a/Mac/Bungloo.xcodeproj/project.pbxproj +++ /dev/null @@ -1,458 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1DDD582C0DA1D0D100B32029 /* NewMessageWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */; }; - 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */; }; - 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1F122D48118E1DE100E83B77 /* Icon.icns */; }; - 1F132C791666CD9700E4E661 /* TB_SendTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F132C781666CD9700E4E661 /* TB_SendTemplate.png */; }; - 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */; }; - 1F1C80F916482A250010B409 /* WebKit in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C80F816482A250010B409 /* WebKit */; }; - 1F303BE31660752700891D71 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F303BE21660752700891D71 /* QuickLook.framework */; }; - 1F331B9C16FCCA3C0040A761 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F2D79BC165E8C6B000E8428 /* CoreLocation.framework */; }; - 1F3F129E164F202000C7C983 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 1F3F129D164F202000C7C983 /* dsa_pub.pem */; }; - 1F618ECA12DB5E6100E500D9 /* PostModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F618EC912DB5E6100E500D9 /* PostModel.m */; }; - 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F70619E1178FBB300C85707 /* Carbon.framework */; }; - 1F77DB47118C5F1C007C7F1E /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F77DB46118C5F1C007C7F1E /* Constants.m */; }; - 1F880B6B165EE0F60022A84D /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F880B6A165EE0F60022A84D /* NSData+Base64.m */; }; - 1F880B6E165FE8890022A84D /* MimeType.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F880B6D165FE8890022A84D /* MimeType.m */; }; - 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FA09846144602530079E258 /* libicucore.dylib */; }; - 1FADDCED171DCBF400502891 /* NewConversationWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FADDCEB171DCBF400502891 /* NewConversationWindowController.m */; }; - 1FADDCEE171DCBF400502891 /* NewConversationWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1FADDCEC171DCBF400502891 /* NewConversationWindowController.xib */; }; - 1FC254A01427DFAD0035D84B /* AccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FC2549B1427D9930035D84B /* AccessToken.m */; }; - 1FDEF722164EFE9100F927F3 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FDEF721164EFE9100F927F3 /* Growl.framework */; }; - 1FDEF723164EFF3100F927F3 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1FDEF721164EFE9100F927F3 /* Growl.framework */; }; - 1FDEF726164F094600F927F3 /* Growl Registration Ticket.growlRegDict in Resources */ = {isa = PBXBuildFile; fileRef = 1FDEF724164F079800F927F3 /* Growl Registration Ticket.growlRegDict */; }; - 1FE2FC93117A818D000504B0 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE2FC92117A818D000504B0 /* Sparkle.framework */; }; - 1FE2FCA4117A83B1000504B0 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1FE2FC92117A818D000504B0 /* Sparkle.framework */; }; - 1FFA36D71177D879006C8562 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFA36D31177D879006C8562 /* Controller.m */; }; - 1FFA36D81177D879006C8562 /* ViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFA36D51177D879006C8562 /* ViewDelegate.m */; }; - 1FFA37071177DAF4006C8562 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FFA37061177DAF4006C8562 /* WebKit.framework */; }; - 6B68359B166015C4004F4732 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B68359A166015C4004F4732 /* Security.framework */; }; - 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; }; - 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; }; - 8D15AC310486D014006FF6A4 /* NewMessageWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */; settings = {ATTRIBUTES = (); }; }; - 8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; - 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 1FE2FCA1117A82E1000504B0 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 1FE2FCA4117A83B1000504B0 /* Sparkle.framework in CopyFiles */, - 1FDEF723164EFF3100F927F3 /* Growl.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; - 1DDD58290DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/NewMessageWindow.xib; sourceTree = ""; }; - 1DDD582B0DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; - 1F122D48118E1DE100E83B77 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = ""; }; - 1F132C781666CD9700E4E661 /* TB_SendTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TB_SendTemplate.png; sourceTree = ""; }; - 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; }; - 1F1C80F816482A250010B409 /* WebKit */ = {isa = PBXFileReference; lastKnownFileType = folder; name = WebKit; path = ../WebKit; sourceTree = ""; }; - 1F2D79BC165E8C6B000E8428 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = /System/Library/Frameworks/CoreLocation.framework; sourceTree = ""; }; - 1F303BE21660752700891D71 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = /System/Library/Frameworks/QuickLook.framework; sourceTree = ""; }; - 1F3F129D164F202000C7C983 /* dsa_pub.pem */ = {isa = PBXFileReference; lastKnownFileType = text; name = dsa_pub.pem; path = publish/dsa_pub.pem; sourceTree = ""; }; - 1F55BA1216C852FB009F0306 /* Bungloo_Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bungloo_Prefix.pch; sourceTree = ""; }; - 1F618EC812DB5E6100E500D9 /* PostModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = PostModel.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1F618EC912DB5E6100E500D9 /* PostModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = PostModel.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1F70619E1178FBB300C85707 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - 1F77DB45118C5F1C007C7F1E /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Constants.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1F77DB46118C5F1C007C7F1E /* Constants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Constants.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1F880B69165EE0F60022A84D /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = ""; }; - 1F880B6A165EE0F60022A84D /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = ""; }; - 1F880B6C165FE8890022A84D /* MimeType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MimeType.h; sourceTree = ""; }; - 1F880B6D165FE8890022A84D /* MimeType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MimeType.m; sourceTree = ""; }; - 1FA09846144602530079E258 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; }; - 1FADDCEA171DCBF400502891 /* NewConversationWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewConversationWindowController.h; sourceTree = ""; }; - 1FADDCEB171DCBF400502891 /* NewConversationWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewConversationWindowController.m; sourceTree = ""; }; - 1FADDCEC171DCBF400502891 /* NewConversationWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NewConversationWindowController.xib; sourceTree = ""; }; - 1FC2549A1427D9930035D84B /* AccessToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AccessToken.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1FC2549B1427D9930035D84B /* AccessToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AccessToken.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1FDEF721164EFE9100F927F3 /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Growl.framework; sourceTree = ""; }; - 1FDEF724164F079800F927F3 /* Growl Registration Ticket.growlRegDict */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "Growl Registration Ticket.growlRegDict"; sourceTree = ""; }; - 1FE2FC92117A818D000504B0 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; - 1FFA36D21177D879006C8562 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Controller.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1FFA36D31177D879006C8562 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Controller.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1FFA36D41177D879006C8562 /* ViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewDelegate.h; sourceTree = ""; }; - 1FFA36D51177D879006C8562 /* ViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewDelegate.m; sourceTree = ""; }; - 1FFA37061177DAF4006C8562 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = NewMessageWindow.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 2A37F4AEFDCFA73011CA2CEA /* NewMessageWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = NewMessageWindow.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = main.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = ""; }; - 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 6B68359A166015C4004F4732 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; - 8D15AC360486D014006FF6A4 /* Bungloo-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Bungloo-Info.plist"; sourceTree = ""; }; - 8D15AC370486D014006FF6A4 /* Bungloo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Bungloo.app; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D15AC330486D014006FF6A4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1F331B9C16FCCA3C0040A761 /* CoreLocation.framework in Frameworks */, - 1F303BE31660752700891D71 /* QuickLook.framework in Frameworks */, - 6B68359B166015C4004F4732 /* Security.framework in Frameworks */, - 1FDEF722164EFE9100F927F3 /* Growl.framework in Frameworks */, - 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */, - 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */, - 1FFA37071177DAF4006C8562 /* WebKit.framework in Frameworks */, - 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */, - 1FE2FC93117A818D000504B0 /* Sparkle.framework in Frameworks */, - 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - 1F303BE21660752700891D71 /* QuickLook.framework */, - 6B68359A166015C4004F4732 /* Security.framework */, - 1F2D79BC165E8C6B000E8428 /* CoreLocation.framework */, - 1FDEF721164EFE9100F927F3 /* Growl.framework */, - 1FE2FC92117A818D000504B0 /* Sparkle.framework */, - 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, - 1FFA37061177DAF4006C8562 /* WebKit.framework */, - 1F70619E1178FBB300C85707 /* Carbon.framework */, - 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */, - ); - name = "Linked Frameworks"; - sourceTree = ""; - }; - 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */, - 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */, - 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 19C28FB0FE9D524F11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D15AC370486D014006FF6A4 /* Bungloo.app */, - ); - name = Products; - sourceTree = ""; - }; - 2A37F4AAFDCFA73011CA2CEA /* Twittia 2 */ = { - isa = PBXGroup; - children = ( - 1FA09846144602530079E258 /* libicucore.dylib */, - 2A37F4ABFDCFA73011CA2CEA /* Classes */, - 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, - 2A37F4B8FDCFA73011CA2CEA /* Resources */, - 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, - 19C28FB0FE9D524F11CA2CBB /* Products */, - ); - name = "Twittia 2"; - sourceTree = ""; - }; - 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { - isa = PBXGroup; - children = ( - 1FFA36D21177D879006C8562 /* Controller.h */, - 1FFA36D31177D879006C8562 /* Controller.m */, - 1FFA36D41177D879006C8562 /* ViewDelegate.h */, - 1FFA36D51177D879006C8562 /* ViewDelegate.m */, - 2A37F4AEFDCFA73011CA2CEA /* NewMessageWindow.h */, - 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */, - 1F77DB45118C5F1C007C7F1E /* Constants.h */, - 1F77DB46118C5F1C007C7F1E /* Constants.m */, - 1F618EC812DB5E6100E500D9 /* PostModel.h */, - 1F618EC912DB5E6100E500D9 /* PostModel.m */, - 1FC2549A1427D9930035D84B /* AccessToken.h */, - 1FC2549B1427D9930035D84B /* AccessToken.m */, - 1F880B69165EE0F60022A84D /* NSData+Base64.h */, - 1F880B6A165EE0F60022A84D /* NSData+Base64.m */, - 1F880B6C165FE8890022A84D /* MimeType.h */, - 1F880B6D165FE8890022A84D /* MimeType.m */, - 1FADDCEA171DCBF400502891 /* NewConversationWindowController.h */, - 1FADDCEB171DCBF400502891 /* NewConversationWindowController.m */, - ); - name = Classes; - sourceTree = ""; - }; - 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 1F55BA1216C852FB009F0306 /* Bungloo_Prefix.pch */, - 2A37F4B0FDCFA73011CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 1F1C80F816482A250010B409 /* WebKit */, - 1F122D48118E1DE100E83B77 /* Icon.icns */, - 1F3F129D164F202000C7C983 /* dsa_pub.pem */, - 1F132C781666CD9700E4E661 /* TB_SendTemplate.png */, - 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, - 8D15AC360486D014006FF6A4 /* Bungloo-Info.plist */, - 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, - 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */, - 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */, - 1FADDCEC171DCBF400502891 /* NewConversationWindowController.xib */, - 1FDEF724164F079800F927F3 /* Growl Registration Ticket.growlRegDict */, - ); - name = Resources; - sourceTree = ""; - }; - 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */, - 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D15AC270486D014006FF6A4 /* Bungloo */ = { - isa = PBXNativeTarget; - buildConfigurationList = C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "Bungloo" */; - buildPhases = ( - 8D15AC2B0486D014006FF6A4 /* Resources */, - 8D15AC300486D014006FF6A4 /* Sources */, - 8D15AC330486D014006FF6A4 /* Frameworks */, - 1FE2FCA1117A82E1000504B0 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Bungloo; - productInstallPath = "$(HOME)/Applications"; - productName = "Twittia 2"; - productReference = 8D15AC370486D014006FF6A4 /* Bungloo.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0450; - }; - buildConfigurationList = C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "Bungloo" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = 2A37F4AAFDCFA73011CA2CEA /* Twittia 2 */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D15AC270486D014006FF6A4 /* Bungloo */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D15AC2B0486D014006FF6A4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1F3F129E164F202000C7C983 /* dsa_pub.pem in Resources */, - 1FDEF726164F094600F927F3 /* Growl Registration Ticket.growlRegDict in Resources */, - 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */, - 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */, - 1DDD582C0DA1D0D100B32029 /* NewMessageWindow.xib in Resources */, - 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */, - 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */, - 1F1C80F916482A250010B409 /* WebKit in Resources */, - 1F132C791666CD9700E4E661 /* TB_SendTemplate.png in Resources */, - 1FADDCEE171DCBF400502891 /* NewConversationWindowController.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D15AC300486D014006FF6A4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1FC254A01427DFAD0035D84B /* AccessToken.m in Sources */, - 8D15AC310486D014006FF6A4 /* NewMessageWindow.m in Sources */, - 8D15AC320486D014006FF6A4 /* main.m in Sources */, - 1FFA36D71177D879006C8562 /* Controller.m in Sources */, - 1FFA36D81177D879006C8562 /* ViewDelegate.m in Sources */, - 1F77DB47118C5F1C007C7F1E /* Constants.m in Sources */, - 1F618ECA12DB5E6100E500D9 /* PostModel.m in Sources */, - 1F880B6B165EE0F60022A84D /* NSData+Base64.m in Sources */, - 1F880B6E165FE8890022A84D /* MimeType.m in Sources */, - 1FADDCED171DCBF400502891 /* NewConversationWindowController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C1660FE840EACC02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */ = { - isa = PBXVariantGroup; - children = ( - 1DDD58290DA1D0D100B32029 /* English */, - ); - name = NewMessageWindow.xib; - sourceTree = ""; - }; - 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 1DDD582B0DA1D0D100B32029 /* English */, - ); - name = MainMenu.xib; - sourceTree = ""; - }; - 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = { - isa = PBXVariantGroup; - children = ( - 2A37F4BAFDCFA73011CA2CEA /* English */, - ); - name = Credits.rtf; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - C05733C808A9546B00998B17 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Bungloo_Prefix.pch; - INFOPLIST_FILE = "Bungloo-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = Bungloo; - SDKROOT = ""; - }; - name = Debug; - }; - C05733C908A9546B00998B17 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Bungloo_Prefix.pch; - INFOPLIST_FILE = "Bungloo-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = Bungloo; - SDKROOT = ""; - }; - name = Release; - }; - C05733CC08A9546B00998B17 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.5; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = Bungloo; - SDKROOT = ""; - }; - name = Debug; - }; - C05733CD08A9546B00998B17 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.5; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = Bungloo; - SDKROOT = ""; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "Bungloo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C05733C808A9546B00998B17 /* Debug */, - C05733C908A9546B00998B17 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "Bungloo" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C05733CC08A9546B00998B17 /* Debug */, - C05733CD08A9546B00998B17 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */; -} diff --git a/Mac/Bungloo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Mac/Bungloo.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 0fa3cc5..0000000 --- a/Mac/Bungloo.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Mac/Bungloo.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings b/Mac/Bungloo.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings deleted file mode 100644 index 659c876..0000000 --- a/Mac/Bungloo.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,10 +0,0 @@ - - - - - HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges - - SnapshotAutomaticallyBeforeSignificantChanges - - - diff --git a/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100644 index a5446f1..0000000 --- a/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Bungloo.xcscheme b/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Bungloo.xcscheme deleted file mode 100644 index c8d35d9..0000000 --- a/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Bungloo.xcscheme +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist b/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 20fd17d..0000000 --- a/Mac/Bungloo.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - Bungloo.xcscheme - - orderHint - 1 - - - SuppressBuildableAutocreation - - 8D15AC270486D014006FF6A4 - - primary - - - - - diff --git a/Mac/Bungloo_Prefix.pch b/Mac/Bungloo_Prefix.pch deleted file mode 100644 index f7b0d9b..0000000 --- a/Mac/Bungloo_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'Tentia' target in the 'Tentia' project -// - -#ifdef __OBJC__ -#import -#endif diff --git a/Mac/Constants.h b/Mac/Constants.h deleted file mode 100644 index 11a32e2..0000000 --- a/Mac/Constants.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// Constants.h -// bungloo -// -// Created by Jeena on 01.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import -#import - - -@interface Constants : NSObject { - -} - -#define APP_NAME @"Bungloo" -#define MESSAGE_MAX_LENGTH 256 - -+ (NSString *)stringFromVirtualKeyCode:(NSInteger)code; - -@end diff --git a/Mac/Constants.m b/Mac/Constants.m deleted file mode 100644 index d70242a..0000000 --- a/Mac/Constants.m +++ /dev/null @@ -1,220 +0,0 @@ -// -// Constants.m -// bungloo -// -// Created by Jeena on 01.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "Constants.h" - - -@implementation Constants - -+ (NSString *)stringFromVirtualKeyCode:(NSInteger)code { - NSString *string = nil; - switch (code) { - case kVK_ANSI_A: - string = @"A"; - break; - case kVK_ANSI_S: - string = @"S"; - break; - case kVK_ANSI_D: - string = @"D"; - break; - case kVK_ANSI_F: - string = @"F"; - break; - case kVK_ANSI_H: - string = @"H"; - break; - case kVK_ANSI_G: - string = @"G"; - break; - case kVK_ANSI_Z: - string = @"Z"; - break; - case kVK_ANSI_X: - string = @"X"; - break; - case kVK_ANSI_C: - string = @"C"; - break; - case kVK_ANSI_V: - string = @"V"; - break; - case kVK_ANSI_B: - string = @"B"; - break; - case kVK_ANSI_Q: - string = @"Q"; - break; - case kVK_ANSI_W: - string = @"W"; - break; - case kVK_ANSI_E: - string = @"E"; - break; - case kVK_ANSI_R: - string = @"R"; - break; - case kVK_ANSI_Y: - string = @"Y"; - break; - case kVK_ANSI_T: - string = @"T"; - break; - case kVK_ANSI_1: - string = @"1"; - break; - case kVK_ANSI_2: - string = @"2"; - break; - case kVK_ANSI_3: - string = @"3"; - break; - case kVK_ANSI_4: - string = @"4"; - break; - case kVK_ANSI_6: - string = @"6"; - break; - case kVK_ANSI_5: - string = @"5"; - break; - case kVK_ANSI_Equal: - string = @"="; - break; - case kVK_ANSI_9: - string = @"9"; - break; - case kVK_ANSI_7: - string = @"7"; - break; - case kVK_ANSI_Minus: - string = @"-"; - break; - case kVK_ANSI_8: - string = @"8"; - break; - case kVK_ANSI_0: - string = @"0"; - break; - case kVK_ANSI_RightBracket: - string = @")"; - break; - case kVK_ANSI_O: - string = @"0"; - break; - case kVK_ANSI_U: - string = @"U"; - break; - case kVK_ANSI_LeftBracket: - string = @"("; - break; - case kVK_ANSI_I: - string = @"I"; - break; - case kVK_ANSI_P: - string = @"P"; - break; - case kVK_ANSI_L: - string = @"L"; - break; - case kVK_ANSI_J: - string = @"J"; - break; - case kVK_ANSI_Quote: - string = @"\""; - break; - case kVK_ANSI_K: - string = @"K"; - break; - case kVK_ANSI_Semicolon: - string = @";"; - break; - case kVK_ANSI_Backslash: - string = @"\\"; - break; - case kVK_ANSI_Comma: - string = @","; - break; - case kVK_ANSI_Slash: - string = @"/"; - break; - case kVK_ANSI_N: - string = @"N"; - break; - case kVK_ANSI_M: - string = @"M"; - break; - case kVK_ANSI_Period: - string = @"."; - break; - case kVK_ANSI_Grave: - string = @"`"; - break; - case kVK_ANSI_KeypadDecimal: - string = @"."; - break; - case kVK_ANSI_KeypadMultiply: - string = @"*"; - break; - case kVK_ANSI_KeypadPlus: - string = @"+"; - break; - case kVK_ANSI_KeypadClear: - string = @""; - break; - case kVK_ANSI_KeypadDivide: - string = @"/"; - break; - case kVK_ANSI_KeypadEnter: - string = @"⎆"; - break; - case kVK_ANSI_KeypadMinus: - string = @"-"; - break; - case kVK_ANSI_KeypadEquals: - string = @"="; - break; - case kVK_ANSI_Keypad0: - string = @"0"; - break; - case kVK_ANSI_Keypad1: - string = @"1"; - break; - case kVK_ANSI_Keypad2: - string = @"2"; - break; - case kVK_ANSI_Keypad3: - string = @"3"; - break; - case kVK_ANSI_Keypad4: - string = @"4"; - break; - case kVK_ANSI_Keypad5: - string = @"5"; - break; - case kVK_ANSI_Keypad6: - string = @"6"; - break; - case kVK_ANSI_Keypad7: - string = @"7"; - break; - case kVK_ANSI_Keypad8: - string = @"8"; - break; - case kVK_ANSI_Keypad9: - string = @"9"; - break; - default: - string = nil; - break; - } - - return string; -} - -@end diff --git a/Mac/Controller.h b/Mac/Controller.h deleted file mode 100644 index 2b2f683..0000000 --- a/Mac/Controller.h +++ /dev/null @@ -1,95 +0,0 @@ -// -// Controller.h -// bungloo -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import -#import -#import "ViewDelegate.h" -#import -#import "Constants.h" -#import "AccessToken.h" -#import -#import "NSData+Base64.h" -#import "MimeType.h" - -@interface Controller : NSObject { - IBOutlet WebView *timelineView; - IBOutlet NSWindow *timelineViewWindow; - NSPanel *openProfileWindow; - NSWindow *loginViewWindow; - NSTextField *loginEntityTextField; - NSProgressIndicator *loginActivityIndicator; - IBOutlet NSMenuItem *globalHotkeyMenuItem; - IBOutlet NSImageView *logoLayer; - ViewDelegate *viewDelegate; - WebView *oauthView; - AccessToken *accessToken; - NSTextField *showProfileTextField; - -} - -@property (assign) IBOutlet WebView *timelineView; -@property (assign) IBOutlet NSWindow *timelineViewWindow; -@property (assign) IBOutlet NSPanel *openProfileWindow; - -@property (assign) IBOutlet NSWindow *loginViewWindow; -@property (assign) IBOutlet NSTextField *loginEntityTextField; -@property (assign) IBOutlet NSProgressIndicator *loginActivityIndicator; -@property (retain, nonatomic) IBOutlet NSMenuItem *globalHotkeyMenuItem; -@property (retain, nonatomic) IBOutlet NSImageView *logoLayer; -@property (retain, nonatomic) IBOutlet ViewDelegate *viewDelegate; -@property (retain, nonatomic) WebView *oauthView; -@property (retain, nonatomic) AccessToken *accessToken; -@property (assign) IBOutlet NSTextField *showProfileTextField; - - -- (void)initOauth; -- (void)authentificationSucceded:(id)sender; -- (void)authentificationDidNotSucceed:(NSString *)errorMessage; -- (void)initWebViews; -- (void)initHotKeys; -- (void)alertTitle:(NSString *)title withMessage:(NSString *)message; -- (void)openNewMessageWindowInReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string isPrivate:(BOOL)isPrivate; -- (NSString *)pluginURL; -- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; -- (void)unreadMentions:(int)count; -- (void)notificateUserAboutMention:(NSString *)text fromName:(NSString *)name withPostId:(NSString *)postId andEntity:(NSString *)entity; - -- (void)openURL:(NSString *)url; - -- (IBAction)showTimeline:(id)sender; -- (IBAction)showMentions:(id)sender; -- (IBAction)showConversation:(id)sender; -- (IBAction)showProfile:(id)sender; -- (IBAction)showSearch:(id)sender; -- (IBAction)showAbout:(id)sender; -- (IBAction)showNext:(id)sender; -- (IBAction)showConversationViewForPostId:(NSString *)postId andEntity:(NSString *)entity; - - -- (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity; - -- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource; - -- (void)setString:(NSString *)string forKey:(NSString *)aKey; -- (void)setSecret:(NSString *)string; -- (NSString *)secret; -- (NSString *)stringForKey:(NSString *)aKey; -- (void)loggedIn; - -- (void)stringFromFile:(NSString *)file url: (NSURL **) url content: (NSString **) content; - -- (IBAction)login:(id)sender; -- (IBAction)logout:(id)sender; - -- (IBAction)showConversationForPostId:(NSString *)postId andEntity:(NSString *)entity; - -- (IBAction)clearCache:(id)sender; - -OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData); - -@end diff --git a/Mac/Controller.m b/Mac/Controller.m deleted file mode 100644 index c26e2fb..0000000 --- a/Mac/Controller.m +++ /dev/null @@ -1,524 +0,0 @@ -// -// Controller.m -// bungloo -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "Controller.h" -#import "NewMessageWindow.h" -#import "PostModel.h" -#import "NSData+Base64.h" -#import "NewConversationWindowController.h" - -@implementation Controller -@synthesize showProfileTextField; -@synthesize openProfileWindow; -@synthesize loginViewWindow; -@synthesize loginEntityTextField; -@synthesize loginActivityIndicator; -@synthesize timelineView, timelineViewWindow; -@synthesize globalHotkeyMenuItem, viewDelegate; -@synthesize logoLayer; -@synthesize oauthView, accessToken; - -- (void)awakeFromNib -{ - [timelineViewWindow setExcludedFromWindowsMenu:YES]; - [timelineView setResourceLoadDelegate:self]; - - [self initHotKeys]; - - [GrowlApplicationBridge setGrowlDelegate:self]; - - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc addObserver:self - selector:@selector(openNewMessageWindow:) - name:@"openNewMessageWindow" - object:nil]; - [nc addObserver:self - selector:@selector(sendPost:) - name:@"sendPost" - object:nil]; - [nc addObserver:self - selector:@selector(authentificationSucceded:) - name:@"authentificationSucceded" - object:nil]; - [nc addObserver:self - selector:@selector(getPostUpdates:) - name:@"getPostUpdates" - object:nil]; - - NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager]; - [appleEventManager setEventHandler:self - andSelector:@selector(handleGetURLEvent:withReplyEvent:) - forEventClass:kInternetEventClass - andEventID:kAEGetURL]; - - - viewDelegate = [[ViewDelegate alloc] init]; - accessToken = [[AccessToken alloc] init]; - - BOOL forceLogin = NO; - /* - if (![accessToken stringForKey:@"version-0.6.0-new-login"]) { - [self logout:self]; - forceLogin = YES; - [accessToken setString:nil forKey:@"entity"]; - [accessToken setString:@"yes" forKey:@"version-0.6.0-new-login"]; - }*/ - - if (forceLogin || ![accessToken stringForKey:@"user_access_token"] || ![accessToken secret]) { - [timelineViewWindow performClose:self]; - [self.loginViewWindow makeKeyAndOrderFront:self]; - [self initOauth]; - } else { - [timelineViewWindow makeKeyAndOrderFront:self]; - [self initWebViews]; - } -} - -# pragma mark Init - -- (void)stringFromFile:(NSString *)file url: (NSURL **) url content: (NSString **) content -{ - NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingFormat: @"/WebKit/%@", file]; - *url = [NSURL fileURLWithPath: path]; - *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; -} - -- (void)initOauth -{ - if (!oauthView) { - NSString *index_string; - NSURL *url; - - [self stringFromFile: @"index.html" url: &url content: &index_string]; - - oauthView = [[WebView alloc] init]; - viewDelegate.oauthView = oauthView; - [[oauthView mainFrame] loadHTMLString:index_string baseURL:url]; - [oauthView setFrameLoadDelegate:viewDelegate]; - [oauthView setPolicyDelegate:viewDelegate]; - [oauthView setUIDelegate:viewDelegate]; - [[oauthView windowScriptObject] setValue:self forKey:@"controller"]; - - } -} - -- (void)initWebViews -{ - - if (viewDelegate.timelineView != timelineView) - { - NSString *index_string; - NSURL *url; - - [self initOauth]; - - [self stringFromFile: @"index.html" url: &url content: &index_string]; - - viewDelegate.timelineView = timelineView; - [[timelineView mainFrame] loadHTMLString:index_string baseURL:url]; - [timelineView setFrameLoadDelegate:viewDelegate]; - [timelineView setPolicyDelegate:viewDelegate]; - [timelineView setUIDelegate:viewDelegate]; - [[timelineView windowScriptObject] setValue:self forKey:@"controller"]; - - } - else - { - [timelineView stringByEvaluatingJavaScriptFromString:@"start('timeline')"]; - } -} - -- (void)initHotKeys -{ - - NSInteger newPostKey = kVK_ANSI_M; // http://boredzo.org/blog/archives/2007-05-22/virtual-key-codes - NSInteger newPostModifierKey = controlKey + cmdKey + optionKey; // cmdKey 256, shitfKey 512, optionKey 2048, controlKey 4096 - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSInteger defaultsNewPostKey = (NSInteger)[defaults integerForKey:@"newPostKey"]; - - if ([defaults objectForKey:@"newPostKey"] != nil) - { - newPostKey = defaultsNewPostKey; - } - else - { - [defaults setInteger:newPostKey forKey:@"newPostKey"]; - } - - NSInteger defaultsNewPostModifierKey = (NSInteger)[defaults integerForKey:@"newPostModifierKey"]; - if ([defaults objectForKey:@"newPostModifierKey"] != nil) - { - newPostModifierKey = defaultsNewPostModifierKey; - } - else - { - [defaults setInteger:newPostModifierKey forKey:@"newPostModifierKey"]; - } - - [defaults synchronize]; - - NSUInteger cocoaModifiers = 0; - if (newPostModifierKey & shiftKey) cocoaModifiers = cocoaModifiers | NSShiftKeyMask; - if (newPostModifierKey & optionKey) cocoaModifiers = cocoaModifiers | NSAlternateKeyMask; - if (newPostModifierKey & controlKey) cocoaModifiers = cocoaModifiers | NSControlKeyMask; - if (newPostModifierKey & cmdKey) cocoaModifiers = cocoaModifiers | NSCommandKeyMask; - - [globalHotkeyMenuItem setKeyEquivalent:[Constants stringFromVirtualKeyCode:newPostKey]]; - [globalHotkeyMenuItem setKeyEquivalentModifierMask:cocoaModifiers]; - - /* CARBON from http://github.com/Xjs/drama-button/blob/carbon/Drama_ButtonAppDelegate.m */ - - EventTypeSpec eventType; - eventType.eventClass = kEventClassKeyboard; - eventType.eventKind = kEventHotKeyPressed; - - InstallApplicationEventHandler(&handler, 1, &eventType, NULL, NULL); - - EventHotKeyID g_HotKeyID; - g_HotKeyID.id = 1; - - EventHotKeyRef g_HotKeyRef; - - RegisterEventHotKey(newPostKey, newPostModifierKey, g_HotKeyID, GetApplicationEventTarget(), 0, &g_HotKeyRef); - - /* end CARBON */ -} - -- (void)alertTitle:(NSString *)title withMessage:(NSString *)message -{ - NSAlert *alert = [NSAlert alertWithMessageText:title - defaultButton:@"OK" alternateButton:nil otherButton:nil - informativeTextWithFormat:@"%@", message]; - [alert runModal]; -} - -- (void)authentificationSucceded:(id)sender -{ - [loginActivityIndicator stopAnimation:self]; - [self initWebViews]; - [loginViewWindow performClose:self]; -} - -- (void)authentificationDidNotSucceed:(NSString *)errorMessage -{ - [loginActivityIndicator stopAnimation:self]; - [self alertTitle:@"Authenication error" withMessage:errorMessage]; -} - -+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector -{ - return NO; -} - -+ (BOOL)isKeyExcludedFromWebScript:(const char *)name -{ - return NO; -} - -- (void)setString:(NSString *)string forKey:(NSString *)aKey -{ - [self.accessToken setString:string forKey:aKey]; -} - -- (void)setSecret:(NSString *)string -{ - [self.accessToken setSecret:string]; -} -- (NSString *)secret -{ - return [self.accessToken secret]; -} - -- (NSString *)stringForKey:(NSString *)aKey -{ - return [self.accessToken stringForKey:aKey]; -} - - -#pragma mark Notifications - --(BOOL)applicationShouldOpenUntitledFile:(NSApplication *)theApplication -{ - return NO; -} - -- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag -{ - [timelineViewWindow makeKeyAndOrderFront:self]; - return NO; -} - -- (IBAction)openNewMessageWindow:(id)sender -{ - [NSApp activateIgnoringOtherApps:YES]; - [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; -} - -- (void)openNewMessageWindowInReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string isPrivate:(BOOL)isPrivate -{ - [NSApp activateIgnoringOtherApps:YES]; - NewMessageWindow *newMessage = (NewMessageWindow *)[[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; - [newMessage inReplyTo:userName statusId:statusId withString:string]; - [newMessage setIsPrivate:isPrivate]; -} - -- (void)openNewMessageWindowWithString:(NSString *)aString -{ - [NSApp activateIgnoringOtherApps:YES]; - - NSRange range = [aString rangeOfString:@"oauthtoken"]; - - if (range.length > 0) - { - [oauthView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"bungloo.oauth.requestAccessToken('%@')", aString]]; - } - else - { - NewMessageWindow *newPost = (NewMessageWindow *)[[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; - [newPost withString:aString]; - } -} - -- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent -{ - NSString *text = [[[event paramDescriptorForKeyword:keyDirectObject] stringValue] substringFromIndex:8]; - [self openNewMessageWindowWithString:[text stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; -} - -- (IBAction)sendPost:(id)sender -{ - PostModel *post = (PostModel *)[sender object]; - NSString *text = [[post.text stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"] stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; - text = [text stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; - - NSString *locationObject = @"null"; - if (post.location) { - locationObject = [NSString stringWithFormat:@"[%f, %f]", post.location.coordinate.latitude, post.location.coordinate.longitude]; - } - - NSString *imageFilePath = @"null"; - if (post.imageFilePath) { - NSError *error; - NSString *mimeType = [MimeType mimeTypeForFileAtPath:post.imageFilePath error:&error]; - NSData *data = [[NSData alloc] initWithContentsOfFile:post.imageFilePath]; - NSString *base64 = [data base64Encoding_xcd]; - [data release]; - imageFilePath = [NSString stringWithFormat:@"\"data:%@;base64,%@\"", mimeType, base64]; - } - - NSString *isPrivate = @"false"; - if (post.isPrivate) { - isPrivate = @"true"; - } - - NSString *func = [NSString stringWithFormat:@"bungloo.timeline.sendNewMessage(\"%@\", \"%@\", \"%@\", %@, %@, %@)", - text, - post.inReplyTostatusId, - post.inReplyToEntity, - locationObject, - imageFilePath, - isPrivate]; - - [timelineView stringByEvaluatingJavaScriptFromString:func]; -} - -- (NSString *)pluginURL -{ - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSString *pathToPlugin = [@"~/Library/Application Support/Bungloo/Plugin.js" stringByExpandingTildeInPath]; - - if([fileManager fileExistsAtPath:pathToPlugin]) - { - return [NSString stringWithFormat:@"%@", [NSURL fileURLWithPath:pathToPlugin]]; - } - return nil; -} - -- (void)unreadMentions:(int)count -{ - if (count > 0) - { - [[[NSApplication sharedApplication] dockTile] setBadgeLabel:[NSString stringWithFormat:@"%i", count]]; - } - else - { - [[[NSApplication sharedApplication] dockTile] setBadgeLabel:nil]; - } - - NSString *script = [NSString stringWithFormat:@"bungloo.sidebar.setUnreadMentions(%i);", count]; - [timelineView stringByEvaluatingJavaScriptFromString:script]; -} - -- (void)notificateUserAboutMention:(NSString *)text fromName:(NSString *)name withPostId:(NSString *)postId andEntity:(NSString *)entity -{ - [GrowlApplicationBridge - notifyWithTitle:[NSString stringWithFormat:@"Mentioned by %@ on Tent", name] - description:text - notificationName:@"Mention" - iconData:nil - priority:0 - isSticky:NO - clickContext:[NSDictionary dictionaryWithObjectsAndKeys: - entity, @"entity", - postId, @"postId", nil]]; -} - -- (void)openURL:(NSString *)url -{ - [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; -} - -- (IBAction)showTimeline:(id)sender -{ - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onTimeline();"]; -} - -- (IBAction)showMentions:(id)sender -{ - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onMentions();"]; -} - -- (IBAction)showConversation:(id)sender -{ - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onConversation();"]; -} - -- (IBAction)showConversationViewForPostId:(NSString *)postId andEntity:(NSString *)entity -{ - NewConversationWindowController *conversationView = [[NewConversationWindowController alloc] initWithPostId:postId entity:entity andViewDelegate:viewDelegate]; - [conversationView showWindow:conversationView.window]; -} - -- (IBAction)showProfile:(id)sender -{ - if ([sender isKindOfClass:[NSMenuItem class]]) { - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onEntityProfile();"]; - } else { - NSString *entity = [self.showProfileTextField stringValue]; - if ([entity rangeOfString:@"."].location != NSNotFound && ([entity hasPrefix:@"http://"] || [entity hasPrefix:@"https://"])) { - NSString *func = [NSString stringWithFormat:@"bungloo.sidebar.onEntityProfile(); bungloo.entityProfile.showProfileForEntity('%@')", entity]; - [timelineView stringByEvaluatingJavaScriptFromString:func]; - } - } -} - -- (IBAction)showSearch:(id)sender -{ - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.onSearch();"]; -} - -- (IBAction)showAbout:(id)sender -{ - [self openURL:@"http://jabs.nu/bungloo"]; -} - -- (IBAction)showNext:(id)sender -{ - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.showContentForNext();"]; -} - -- (void)notificateViewsAboutDeletedPostWithId:(NSString *)postId byEntity:(NSString*)entity -{ - NSString *f = [NSString stringWithFormat:@".postDeleted('%@', '%@');", postId, entity]; - NSMutableString *fun = [NSMutableString stringWithFormat:@"bungloo.timeline%@", f]; - [fun appendFormat:@"bungloo.mentions%@", f]; - [fun appendFormat:@"bungloo.conversation%@", f]; - [fun appendFormat:@"bungloo.entityProfile%@", f]; - [timelineView stringByEvaluatingJavaScriptFromString:fun]; -} - -/* we disable cookies to avoid see a timeline during the consultation of a profile with which the user are connected through safari cf https://github.com/jeena/Bungloo/issues/189 */ -- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource{ - NSMutableURLRequest * response = [request mutableCopy]; - [response setHTTPShouldHandleCookies:FALSE]; - return response; -} - -- (void)loggedIn -{ - [loginActivityIndicator stopAnimation:self]; - [self initWebViews]; - [loginViewWindow performClose:self]; - [timelineViewWindow makeKeyAndOrderFront:self]; -} - -- (IBAction)login:(id)sender -{ - if ([[loginEntityTextField stringValue] length] > 0) { - [[loginEntityTextField window] makeFirstResponder:nil]; - [loginActivityIndicator startAnimation:self]; - [oauthView stringByEvaluatingJavaScriptFromString:@"bungloo.oauth.authenticate();"]; - } -} - -- (IBAction)logout:(id)sender -{ - [oauthView stringByEvaluatingJavaScriptFromString:@"bungloo.oauth.logout();"]; - - [timelineViewWindow performClose:self]; - [self.loginViewWindow makeKeyAndOrderFront:self]; - - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.sidebar.logout();"]; -} - -// Mentions window has been visible -- (void)windowDidBecomeKey:(NSNotification *)notification -{ - -} - -- (void)getPostUpdates:(id)sender -{ - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.timeline.getNewData(true)"]; - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.mentions.getNewData(true)"]; -} - -- (IBAction)showConversationForPostId:(NSString *)postId andEntity:(NSString *)entity -{ - NSString *js = [NSString stringWithFormat:@"bungloo.sidebar.onConversation(); bungloo.conversation.showStatus('%@', '%@');", postId, entity]; - [timelineView stringByEvaluatingJavaScriptFromString:js]; -} - -- (IBAction)clearCache:(id)sender -{ - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.timeline.cache.clear()"]; -} - -- (IBAction)showProfileForEntity:(NSString *)entity -{ - NSString *js = [NSString stringWithFormat:@"bungloo.sidebar.onEntityProfile(); bungloo.entityProfile.showProfileForEntity('%@');", entity]; - [timelineView stringByEvaluatingJavaScriptFromString:js]; -} - -- (void)growlNotificationWasClicked:(id)clickContext -{ - NSDictionary *userInfo = (NSDictionary *)clickContext; - NSString *postId = [userInfo objectForKey:@"postId"]; - NSString *entity = [userInfo objectForKey:@"entity"]; - - [self showConversationForPostId:postId andEntity:entity]; - - NSString *js = [NSString stringWithFormat:@"bungloo.sidebar.onMentions(); bungloo.mentions.mentionRead('%@', '%@');", postId, entity]; - [timelineView stringByEvaluatingJavaScriptFromString:js]; -} - -- (NSString *) applicationNameForGrowl -{ - return @"Bungloo"; -} - -/* CARBON */ - -OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData) -{ - [[NSNotificationCenter defaultCenter] postNotificationName:@"openNewMessageWindow" object:nil]; - return noErr; -} - -@end diff --git a/Mac/English.lproj/Credits.rtf b/Mac/English.lproj/Credits.rtf deleted file mode 100644 index e023b0c..0000000 --- a/Mac/English.lproj/Credits.rtf +++ /dev/null @@ -1,30 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 - -\f0\b\fs24 \cf0 Engineering: -\b0 \ - Jeena Paradies\ -\ - -\b Testing: -\b0 \ - All the early adopters on Tent\ -\ - -\b Documentation: -\b0 \ - http://jabs.nu/bungloo\ -\ - -\b With special thanks to: -\b0 \ - Mom\ -\ - -\b Icon by: -\b0 \ - http://www.fasticon.com\ -} \ No newline at end of file diff --git a/Mac/English.lproj/InfoPlist.strings b/Mac/English.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/Mac/English.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib deleted file mode 100644 index 9e8566b..0000000 --- a/Mac/English.lproj/MainMenu.xib +++ /dev/null @@ -1,3057 +0,0 @@ - - - - 1080 - 12D78 - 3084 - 1187.37 - 626.00 - - YES - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - - - YES - 3084 - 2053 - - - - YES - NSButton - NSButtonCell - NSCustomObject - NSImageCell - NSImageView - NSMenu - NSMenuItem - NSProgressIndicator - NSTextField - NSTextFieldCell - NSUserDefaultsController - NSView - NSWindowTemplate - WebView - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - YES - - - Bungloo - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - Bungloo - - YES - - - About Bungloo - - 2147483647 - - - - - - Check for Updates... - - 2147483647 - - - - - - Preferences... - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide Bungloo - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit Bungloo - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - YES - - - New Post - n - 1048576 - 2147483647 - - - - - - Global New Post Key - t - 1835008 - 2147483647 - - - - - - Open Profile ... - u - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Logout - - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - YES - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 1048576 - 2147483647 - - - submenuAction: - - Spelling and Grammar - - YES - - - Show Spelling and Grammar - : - 1048576 - 2147483647 - - - - - - Check Document Now - ; - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Check Spelling While Typing - - 1048576 - 2147483647 - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - - - - Correct Spelling Automatically - - 2147483647 - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - YES - - - Show Substitutions - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Smart Copy/Paste - f - 1048576 - 2147483647 - - - 1 - - - - Smart Quotes - g - 1048576 - 2147483647 - - - 2 - - - - Smart Dashes - - 2147483647 - - - - - - Smart Links - G - 1179648 - 2147483647 - - - 3 - - - - Text Replacement - - 2147483647 - - - - - - - - - Transformations - - 2147483647 - - - submenuAction: - - Transformations - - YES - - - Make Upper Case - - 2147483647 - - - - - - Make Lower Case - - 2147483647 - - - - - - Capitalize - - 2147483647 - - - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - YES - - - Timeline - 1 - 1048576 - 2147483647 - - - - - - Mentions - 2 - 1048576 - 2147483647 - - - - - - Conversation - 3 - 1048576 - 2147483647 - - - - - - Profile - 4 - 1048576 - 2147483647 - - - - - - Search - 5 - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Next View - 6 - 1048576 - 2147483647 - - - - - - - - - Window - - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bring All to Front - - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - YES - - - About Bungloo - - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - NSFontManager - - - Controller - - - 15 - 2 - {{712, 280}, {397, 581}} - 1685586944 - Bungloo - NSWindow - - - - - 256 - - YES - - - 274 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - - {397, 581} - - - - - - - 13 - - YES - - YES - 13WebKitAllowAnimatedImageLoopingPreferenceKey - 13WebKitJavaEnabled - 13WebKitJavaScriptCanOpenWindowsAutomatically - 13WebKitPluginsEnabled - - - YES - - - - - - - - NO - YES - - - {397, 581} - - - - - {{0, 0}, {2560, 1418}} - {10000000000000, 10000000000000} - bungloo - YES - - - SUUpdater - - - 7 - 2 - {{641, 502}, {480, 186}} - 1685586944 - Preferences - NSWindow - - - - - 256 - - YES - - - 268 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{20, 20}, {146, 146}} - - - - YES - - 0 - 33554432 - - NSImage - Icon - - 0 - 0 - 0 - YES - - NO - YES - - - - 268 - {{194, 82}, {266, 22}} - - - - _NS:9 - YES - - -1804599231 - 272630784 - - - LucidaGrande - 13 - 1044 - - https://example.tent.is - _NS:9 - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - 3 - MAA - - - - YES - NSAllRomanInputSourcesLocaleIdentifier - - - NO - - - - 268 - {{191, 112}, {163, 17}} - - - - _NS:1535 - YES - - 68157504 - 272630784 - Add your entity to log in: - - _NS:1535 - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - - - NO - - - - 268 - {{391, 46}, {75, 32}} - - - - _NS:9 - YES - - 67108864 - 134217728 - Login - - _NS:9 - - -2038284288 - 129 - - - 200 - 25 - - NO - - - - 268 - {{373, 55}, {16, 16}} - - - - _NS:945 - 28938 - 100 - - - {480, 186} - - - - _NS:20 - - {{0, 0}, {2560, 1418}} - {10000000000000, 10000000000000} - preferences - YES - - - YES - - - 19 - 2 - {{559, 746}, {373, 116}} - -461896704 - Open Profile ... - NSPanel - - - - - 256 - - YES - - - 268 - {{17, 79}, {192, 17}} - - - - _NS:1535 - YES - - 68157504 - 272630784 - Open the profile of the entity: - - _NS:1535 - - - - - NO - - - - 268 - {{20, 49}, {333, 22}} - - - - _NS:9 - YES - - -1804599231 - 272630784 - - - https://example.tent.is - _NS:9 - - YES - - - - NO - - - - 268 - {{285, 13}, {74, 32}} - - - - _NS:9 - YES - - 67108864 - 134217728 - Open - - _NS:9 - - -2038284288 - 129 - - - 200 - 25 - - NO - - - {373, 116} - - - - _NS:21 - - {{0, 0}, {2560, 1418}} - {10000000000000, 10000000000000} - NO - - - - - YES - - - terminate: - - - - 448 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - delegate - - - - 564 - - - - performClose: - - - - 193 - - - - toggleContinuousSpellChecking: - - - - 222 - - - - undo: - - - - 223 - - - - copy: - - - - 224 - - - - checkSpelling: - - - - 225 - - - - paste: - - - - 226 - - - - stopSpeaking: - - - - 227 - - - - cut: - - - - 228 - - - - showGuessPanel: - - - - 230 - - - - redo: - - - - 231 - - - - selectAll: - - - - 232 - - - - startSpeaking: - - - - 233 - - - - delete: - - - - 235 - - - - performFindPanelAction: - - - - 241 - - - - centerSelectionInVisibleArea: - - - - 245 - - - - toggleGrammarChecking: - - - - 347 - - - - toggleSmartInsertDelete: - - - - 355 - - - - toggleAutomaticQuoteSubstitution: - - - - 356 - - - - toggleAutomaticLinkDetection: - - - - 357 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - newDocument: - - - - 371 - - - - capitalizeWord: - - - - 454 - - - - lowercaseWord: - - - - 455 - - - - uppercaseWord: - - - - 456 - - - - toggleAutomaticDashSubstitution: - - - - 460 - - - - orderFrontSubstitutionsPanel: - - - - 461 - - - - toggleAutomaticTextReplacement: - - - - 463 - - - - toggleAutomaticSpellingCorrection: - - - - 466 - - - - performFindPanelAction: - - - - 467 - - - - performFindPanelAction: - - - - 468 - - - - performFindPanelAction: - - - - 469 - - - - pasteAsPlainText: - - - - 471 - - - - newDocument: - - - - 540 - - - - performMiniaturize: - - - - 650 - - - - arrangeInFront: - - - - 651 - - - - performZoom: - - - - 652 - - - - timelineView - - - - 553 - - - - timelineViewWindow - - - - 565 - - - - globalHotkeyMenuItem - - - - 570 - - - - login: - - - - 606 - - - - logout: - - - - 612 - - - - loginViewWindow - - - - 616 - - - - loginActivityIndicator - - - - 622 - - - - loginEntityTextField - - - - 643 - - - - login: - - - - 666 - - - - showProfileTextField - - - - 678 - - - - showProfile: - - - - 680 - - - - showProfile: - - - - 681 - - - - openProfileWindow - - - - 682 - - - - showProfile: - - - - 690 - - - - showTimeline: - - - - 691 - - - - showMentions: - - - - 692 - - - - showConversation: - - - - 693 - - - - showSearch: - - - - 694 - - - - showAbout: - - - - 696 - - - - showNext: - - - - 700 - - - - checkForUpdates: - - - - 543 - - - - makeKeyAndOrderFront: - - - - 611 - - - - value: values.entity - - - - - - value: values.entity - value - values.entity - 2 - - - 619 - - - - makeKeyAndOrderFront: - - - - 676 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - - - 56 - - - YES - - - - - - 217 - - - YES - - - - - - 83 - - - YES - - - - - - 81 - - - YES - - - - - - - - - - - - 72 - - - - - 82 - - - - - 79 - - - - - 205 - - - YES - - - - - - - - - - - - - - - - - - - - 202 - - - - - 198 - - - - - 207 - - - - - 214 - - - - - 199 - - - - - 203 - - - - - 197 - - - - - 206 - - - - - 215 - - - - - 218 - - - YES - - - - - - 216 - - - YES - - - - - - 200 - - - YES - - - - - - - - - - - 219 - - - - - 201 - - - - - 204 - - - - - 220 - - - YES - - - - - - - - - - 213 - - - - - 210 - - - - - 221 - - - - - 208 - - - - - 209 - - - - - 57 - - - YES - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - - - 144 - - - - - 236 - - - - - 131 - - - YES - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 295 - - - YES - - - - - - 296 - - - YES - - - - - - - - - - - - 211 - - - YES - - - - - - 212 - - - YES - - - - - - - 195 - - - - - 196 - - - - - 346 - - - - - 348 - - - YES - - - - - - 349 - - - YES - - - - - - - - - - - - 350 - - - - - 351 - - - - - 354 - - - - - 419 - - - - - 449 - - - YES - - - - - - 450 - - - YES - - - - - - - - 451 - - - - - 452 - - - - - 453 - - - - - 457 - - - - - 458 - - - - - 459 - - - - - 462 - - - - - 464 - - - - - 465 - - - - - 470 - - - - - 491 - - - YES - - - - - - 492 - - - YES - - - - - - 533 - - - - - 535 - - - YES - - - - Timeline - - - 536 - - - YES - - - - - - 537 - - - timeline - - - 541 - - - - - 542 - - - - - 592 - - - YES - - - - - - 593 - - - YES - - - - - - - - - - 594 - - - YES - - - - - - 595 - - - - - 596 - - - YES - - - - - - 597 - - - - - 598 - - - YES - - - - - - 599 - - - - - 600 - - - YES - - - - - - 601 - - - - - 602 - - - - - 603 - - - - - 610 - - - - - 613 - - - - - 620 - - - - - 73 - - - - - 644 - - - YES - - - - - - 645 - - - YES - - - - - - - - - 646 - - - - - 647 - - - - - 649 - - - - - 657 - - - - - 667 - - - - - 668 - - - YES - - - - - - 669 - - - YES - - - - - - - - 670 - - - YES - - - - - - 671 - - - - - 672 - - - YES - - - - - - 673 - - - - - 674 - - - YES - - - - - - 675 - - - - - 684 - - - - - 685 - - - - - 686 - - - - - 687 - - - - - 688 - - - - - 695 - - - - - 697 - - - - - 698 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 130.IBPluginDependency - 131.IBPluginDependency - 134.IBPluginDependency - 136.IBPluginDependency - 144.IBPluginDependency - 145.IBPluginDependency - 149.IBPluginDependency - 150.IBPluginDependency - 195.IBPluginDependency - 196.IBPluginDependency - 197.IBPluginDependency - 198.IBPluginDependency - 199.IBPluginDependency - 200.IBPluginDependency - 201.IBPluginDependency - 202.IBPluginDependency - 203.IBPluginDependency - 204.IBPluginDependency - 205.IBPluginDependency - 206.IBPluginDependency - 207.IBPluginDependency - 208.IBPluginDependency - 209.IBPluginDependency - 210.IBPluginDependency - 211.IBPluginDependency - 212.IBPluginDependency - 213.IBPluginDependency - 214.IBPluginDependency - 215.IBPluginDependency - 216.IBPluginDependency - 217.IBPluginDependency - 218.IBPluginDependency - 219.IBPluginDependency - 220.IBPluginDependency - 221.IBPluginDependency - 236.IBPluginDependency - 29.IBPluginDependency - 295.IBPluginDependency - 296.IBPluginDependency - 346.IBPluginDependency - 348.IBPluginDependency - 349.IBPluginDependency - 350.IBPluginDependency - 351.IBPluginDependency - 354.IBPluginDependency - 419.IBPluginDependency - 449.IBPluginDependency - 450.IBPluginDependency - 451.IBPluginDependency - 452.IBPluginDependency - 453.IBPluginDependency - 457.IBPluginDependency - 458.IBPluginDependency - 459.IBPluginDependency - 462.IBPluginDependency - 464.IBPluginDependency - 465.IBPluginDependency - 470.IBPluginDependency - 491.IBPluginDependency - 492.IBPluginDependency - 533.IBPluginDependency - 535.IBPluginDependency - 535.IBWindowTemplateEditedContentRect - 535.NSWindowTemplate.visibleAtLaunch - 536.IBPluginDependency - 537.IBPluginDependency - 541.IBPluginDependency - 542.IBPluginDependency - 56.IBPluginDependency - 57.IBPluginDependency - 58.IBPluginDependency - 592.IBPluginDependency - 592.NSWindowTemplate.visibleAtLaunch - 593.IBPluginDependency - 594.IBPluginDependency - 595.IBPluginDependency - 596.IBPluginDependency - 597.IBPluginDependency - 598.IBPluginDependency - 599.IBPluginDependency - 600.IBPluginDependency - 601.IBPluginDependency - 602.IBPluginDependency - 603.IBPluginDependency - 610.IBPluginDependency - 613.IBPluginDependency - 620.IBPluginDependency - 644.IBPluginDependency - 645.IBPluginDependency - 646.IBPluginDependency - 647.IBPluginDependency - 649.IBPluginDependency - 657.IBPluginDependency - 667.IBPluginDependency - 668.IBPluginDependency - 668.NSWindowTemplate.visibleAtLaunch - 669.IBPluginDependency - 670.IBPluginDependency - 671.IBPluginDependency - 672.IBPluginDependency - 673.IBPluginDependency - 674.IBPluginDependency - 675.IBPluginDependency - 684.IBPluginDependency - 685.IBPluginDependency - 686.IBPluginDependency - 687.IBPluginDependency - 688.IBPluginDependency - 695.IBPluginDependency - 697.IBPluginDependency - 698.IBPluginDependency - 72.IBPluginDependency - 73.IBPluginDependency - 79.IBPluginDependency - 81.IBPluginDependency - 82.IBPluginDependency - 83.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{202, 175}, {397, 581}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - - - - YES - - - - - 700 - - - - YES - - Controller - NSObject - - YES - - YES - clearCache: - login: - logout: - showAbout: - showConversation: - showMentions: - showNext: - showProfile: - showSearch: - showTimeline: - - - YES - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - clearCache: - login: - logout: - showAbout: - showConversation: - showMentions: - showNext: - showProfile: - showSearch: - showTimeline: - - - YES - - clearCache: - id - - - login: - id - - - logout: - id - - - showAbout: - id - - - showConversation: - id - - - showMentions: - id - - - showNext: - id - - - showProfile: - id - - - showSearch: - id - - - showTimeline: - id - - - - - YES - - YES - globalHotkeyMenuItem - loginActivityIndicator - loginEntityTextField - loginViewWindow - logoLayer - openProfileWindow - showProfileTextField - timelineView - timelineViewWindow - viewDelegate - - - YES - NSMenuItem - NSProgressIndicator - NSTextField - NSWindow - NSImageView - NSPanel - NSTextField - WebView - NSWindow - ViewDelegate - - - - YES - - YES - globalHotkeyMenuItem - loginActivityIndicator - loginEntityTextField - loginViewWindow - logoLayer - openProfileWindow - showProfileTextField - timelineView - timelineViewWindow - viewDelegate - - - YES - - globalHotkeyMenuItem - NSMenuItem - - - loginActivityIndicator - NSProgressIndicator - - - loginEntityTextField - NSTextField - - - loginViewWindow - NSWindow - - - logoLayer - NSImageView - - - openProfileWindow - NSPanel - - - showProfileTextField - NSTextField - - - timelineView - WebView - - - timelineViewWindow - NSWindow - - - viewDelegate - ViewDelegate - - - - - IBProjectSource - ./Classes/Controller.h - - - - SUUpdater - NSObject - - checkForUpdates: - id - - - checkForUpdates: - - checkForUpdates: - id - - - - delegate - id - - - delegate - - delegate - id - - - - IBProjectSource - ./Classes/SUUpdater.h - - - - ViewDelegate - NSObject - - IBProjectSource - ./Classes/ViewDelegate.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - Icon - NSMenuCheckmark - NSMenuMixedState - - - YES - {256, 256} - {11, 11} - {10, 3} - - - - diff --git a/Mac/English.lproj/NewMessageWindow.xib b/Mac/English.lproj/NewMessageWindow.xib deleted file mode 100644 index 9814cec..0000000 --- a/Mac/English.lproj/NewMessageWindow.xib +++ /dev/null @@ -1,838 +0,0 @@ - - - - 1080 - 12D78 - 3084 - 1187.37 - 626.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 3084 - - - YES - NSButton - NSButtonCell - NSCustomObject - NSMenu - NSMenuItem - NSTextField - NSTextFieldCell - NSView - NSWindowTemplate - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - NewMessageWindow - - - FirstResponder - - - 15 - 2 - {{133, 535}, {299, 113}} - 813171712 - New Post - NSWindow - View - - {94, 86} - - - 256 - - YES - - - 274 - {{0, 22}, {299, 91}} - - - - YES - - -1809842175 - 268468224 - - - LucidaGrande - 13 - 1044 - - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - 3 - MAA - - - - NO - - - - 289 - {{215, 3}, {38, 17}} - - - - YES - - 68157504 - 71304192 - 256 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - - - NO - - - - 292 - {{2, 0}, {18, 19}} - - - - _NS:9 - YES - - 67108864 - 134217728 - - - LucidaGrande-Bold - 12 - 16 - - _NS:9 - - 113524736 - 268435629 - - NSImage - NSAddTemplate - - - + - 200 - 25 - - NO - - - - 292 - {{20, 1}, {19, 19}} - - - - _NS:9 - YES - - 67108864 - 134217728 - - - _NS:9 - - 113524736 - 268435629 - - NSImage - NSLockUnlockedTemplate - - - p - 200 - 25 - - NO - - - - 289 - {{258, 0}, {38, 19}} - - - _NS:9 - YES - - -2080374784 - 150994944 - ⌘↩ - - _NS:9 - - -1232715776 - 268435629 - - LucidaGrande - 12 - 16 - - - DQ - 400 - 75 - - NO - - - {299, 113} - - - - - {{0, 0}, {2560, 1418}} - {94, 108} - {10000000000000, 10000000000000} - newPost - NO - 22 - YES - - - NSApplication - - - - - YES - - - Add current location - - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - - - - Add photo - - 2147483647 - - - - - - - - 268 - {29, 15} - _NS:9 - YES - - 67108864 - 134217728 - - - LucidaGrande-Bold - 11 - 3357 - - _NS:9 - - -2030813184 - 39 - - 549650432 - {1, 1} - - YES - - YES - - - - TU0AKgAAAAoAAAAOAQAAAwAAAAEAAQAAAQEAAwAAAAEAAQAAAQIAAwAAAAIACAAIAQMAAwAAAAEAAQAA -AQYAAwAAAAEAAQAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAAQAA -ARcABAAAAAEAAAACARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABh3MABwAAB7gAAAC4 -AAAAAAAAB7hhcHBsAiAAAG1udHJHUkFZWFlaIAfQAAIADgAMAAAAAGFjc3BBUFBMAAAAAG5vbmUAAAAA -AAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAABWRlc2MAAADAAAAAb2RzY20AAAEwAAAGLGNwcnQAAAdcAAAAOHd0cHQAAAeU -AAAAFGtUUkMAAAeoAAAADmRlc2MAAAAAAAAAFUdlbmVyaWMgR3JheSBQcm9maWxlAAAAAAAAAAAAAAAV -R2VuZXJpYyBHcmF5IFByb2ZpbGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tTSwAAACoAAAF4aHJIUgAAADoAAAGiY2FFUwAAACwAAAHc -cHRCUgAAACoAAAIIdWtVQQAAACwAAAIyZnJGVQAAACoAAAJeemhUVwAAABAAAAKIaXRJVAAAAC4AAAKY -bmJOTwAAACwAAALGa29LUgAAABgAAALyY3NDWgAAACQAAAMKaGVJTAAAACAAAAMuZGVERQAAADoAAANO -aHVIVQAAAC4AAAOIc3ZTRQAAAC4AAAO2emhDTgAAABAAAAPkamFKUAAAABYAAAP0cm9STwAAACIAAAQK -ZWxHUgAAACQAAAQscHRQTwAAADgAAARQbmxOTAAAACoAAASIZXNFUwAAACgAAASydGhUSAAAACQAAATa -dHJUUgAAACIAAAT+ZmlGSQAAACwAAAUgcGxQTAAAADYAAAVMcnVSVQAAACYAAAWCYXJFRwAAACgAAAWo -ZW5VUwAAACgAAAXQZGFESwAAADQAAAX4AFYBYQBlAG8AYgBlAGMAbgD9ACAAcwBpAHYA/QAgAHAAcgBv -AGYAaQBsAEcAZQBuAGUAcgBpAQ0AawBpACAAcAByAG8AZgBpAGwAIABzAGkAdgBpAGgAIAB0AG8AbgBv -AHYAYQBQAGUAcgBmAGkAbAAgAGQAZQAgAGcAcgBpAHMAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBs -ACAAQwBpAG4AegBhACAARwBlAG4A6QByAGkAYwBvBBcEMAQzBDAEOwRMBD0EOAQ5ACAEPwRABD4ERAQw -BDkEOwAgAEcAcgBhAHkAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAGcAcgBpAHOQGnUo -cHCWjoJyX2ljz4/wAFAAcgBvAGYAaQBsAG8AIABnAHIAaQBnAGkAbwAgAGcAZQBuAGUAcgBpAGMAbwBH -AGUAbgBlAHIAaQBzAGsAIABnAHIA5QB0AG8AbgBlAHAAcgBvAGYAaQBsx3y8GAAgAEcAcgBhAHkAINUE -uFzTDMd8AE8AYgBlAGMAbgD9ACABYQBlAGQA/QAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAARwBy -AGEAeQAgBdsF3AXcBdkAQQBsAGwAZwBlAG0AZQBpAG4AZQBzACAARwByAGEAdQBzAHQAdQBmAGUAbgAt -AFAAcgBvAGYAaQBsAMEAbAB0AGEAbADhAG4AbwBzACAAcwB6APwAcgBrAGUAIABwAHIAbwBmAGkAbABH -AGUAbgBlAHIAaQBzAGsAIABnAHIA5QBzAGsAYQBsAGUAcAByAG8AZgBpAGxmbpAacHBepmPPj/Blh072 -TgCCLDCwMOwwpDDXMO0w1TChMKQw6wBQAHIAbwBmAGkAbAAgAGcAcgBpACAAZwBlAG4AZQByAGkDkwO1 -A70DuQO6A8wAIAPAA8EDvwPGA68DuwAgA7MDugPBA7kAUABlAHIAZgBpAGwAIABnAGUAbgDpAHIAaQBj -AG8AIABkAGUAIABjAGkAbgB6AGUAbgB0AG8AcwBBAGwAZwBlAG0AZQBlAG4AIABnAHIAaQBqAHMAcABy -AG8AZgBpAGUAbABQAGUAcgBmAGkAbAAgAGcAcgBpAHMAIABnAGUAbgDpAHIAaQBjAG8OQg4bDiMORA4f -DiUOTA4qDjUOQA4XDjIOFw4xDkgOJw5EDhsARwBlAG4AZQBsACAARwByAGkAIABQAHIAbwBmAGkAbABp -AFkAbABlAGkAbgBlAG4AIABoAGEAcgBtAGEAYQBwAHIAbwBmAGkAaQBsAGkAVQBuAGkAdwBlAHIAcwBh -AGwAbgB5ACAAcAByAG8AZgBpAGwAIABzAHoAYQByAG8BWwBjAGkEHgQxBEkEOAQ5ACAEQQQ1BEAESwQ5 -ACAEPwRABD4ERAQ4BDsETAZFBkQGQQAgBioGOQYxBkoGQQAgAEcAcgBhAHkAIAYnBkQGOQYnBkUARwBl -AG4AZQByAGkAYwAgAEcAcgBhAHkAIABQAHIAbwBmAGkAbABlAEcAZQBuAGUAcgBlAGwAIABnAHIA5QB0 -AG8AbgBlAGIAZQBzAGsAcgBpAHYAZQBsAHMAZXRleHQAAAAAQ29weXJpZ2h0IDIwMDcgQXBwbGUgSW5j -LiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4AWFlaIAAAAAAAAPNRAAEAAAABFsxjdXJ2AAAAAAAAAAEBzQAA -A - - - - - - 3 - MCAwAA - - - - - 200 - 25 - - NO - - - - - YES - - - window - - - - 18 - - - - textField - - - - 100034 - - - - counter - - - - 100038 - - - - addMenu - - - - 100048 - - - - addCurrentLocation: - - - - 100049 - - - - openAddMenu: - - - - 100053 - - - - addMenuButton - - - - 100054 - - - - sendPost: - - - - 100068 - - - - togglePrivate: - - - - 100076 - - - - togglePrivateButton - - - - 100080 - - - - addImage: - - - - 100083 - - - - sendPostButtonPressed: - - - - 100088 - - - - delegate - - - - 100035 - - - - menu - - - - 100045 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - 5 - - - YES - - - - Window - - - 6 - - - YES - - - - - - - - - - -3 - - - Application - - - 100028 - - - YES - - - - - - 100029 - - - - - 100041 - - - YES - - - - - - - 100043 - - - - - 100059 - - - YES - - - - - - 100060 - - - - - 100081 - - - - - 100036 - - - YES - - - - - - 100037 - - - - - 100039 - - - YES - - - - - - 100040 - - - - - 100074 - - - YES - - - - - - 100075 - - - - - 100086 - - - YES - - - - - - 100087 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 100028.IBPluginDependency - 100029.IBPluginDependency - 100036.IBPluginDependency - 100037.IBPluginDependency - 100039.IBPluginDependency - 100040.IBPluginDependency - 100041.IBPluginDependency - 100043.IBPluginDependency - 100059.IBPluginDependency - 100060.IBPluginDependency - 100074.IBPluginDependency - 100075.IBPluginDependency - 100081.IBPluginDependency - 100086.IBPluginDependency - 100087.IBPluginDependency - 5.IBPluginDependency - 5.IBWindowTemplateEditedContentRect - 6.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{127, 736}, {299, 113}} - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - - - - YES - - - - - 100088 - - - - YES - - NewMessageWindow - NSDocument - - YES - - YES - addCurrentLocation: - addImage: - openAddMenu: - sendPost: - sendPostButtonPressed: - togglePrivate: - - - YES - id - id - id - NSControl - id - id - - - - YES - - YES - addCurrentLocation: - addImage: - openAddMenu: - sendPost: - sendPostButtonPressed: - togglePrivate: - - - YES - - addCurrentLocation: - id - - - addImage: - id - - - openAddMenu: - id - - - sendPost: - NSControl - - - sendPostButtonPressed: - id - - - togglePrivate: - id - - - - - YES - - YES - addMenu - addMenuButton - counter - textField - togglePrivateButton - - - YES - NSMenu - NSButton - NSTextField - NSTextField - NSButton - - - - YES - - YES - addMenu - addMenuButton - counter - textField - togglePrivateButton - - - YES - - addMenu - NSMenu - - - addMenuButton - NSButton - - - counter - NSTextField - - - textField - NSTextField - - - togglePrivateButton - NSButton - - - - - IBProjectSource - ./Classes/NewMessageWindow.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - NSAddTemplate - NSLockUnlockedTemplate - NSMenuCheckmark - NSMenuMixedState - - - YES - {8, 8} - {9, 12} - {11, 11} - {10, 3} - - - - diff --git a/Mac/Growl Registration Ticket.growlRegDict b/Mac/Growl Registration Ticket.growlRegDict deleted file mode 100644 index b7c02c5..0000000 --- a/Mac/Growl Registration Ticket.growlRegDict +++ /dev/null @@ -1,17 +0,0 @@ - - - - - TicketVersion - 1 - DefaultNotifications - - Mention - - AllNotifications - - Mention - Status - - - diff --git a/Mac/Growl.framework/Growl b/Mac/Growl.framework/Growl deleted file mode 120000 index 85956e2..0000000 --- a/Mac/Growl.framework/Growl +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Growl \ No newline at end of file diff --git a/Mac/Growl.framework/Headers b/Mac/Growl.framework/Headers deleted file mode 120000 index a177d2a..0000000 --- a/Mac/Growl.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/Mac/Growl.framework/Resources b/Mac/Growl.framework/Resources deleted file mode 120000 index 953ee36..0000000 --- a/Mac/Growl.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/Mac/Growl.framework/Versions/A/Growl b/Mac/Growl.framework/Versions/A/Growl deleted file mode 100755 index f61df8393abbc7d13a1b8fed54ac7555a53dbc78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 857664 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 M`vnTj{K^Ang2$T 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
        0u0ej_?%=MUbAIQ8&jF`{-QZI24d4&K z&w;00%kjSeUkPqg&GDCm&jUBRj{P&iO^TU);Kkqy@SwX{{{!4{74wiUIR0*M8u$eG zE^xDZ*#8Ca5b!Q=^LttU7(911bCWMQej&I6cn5d{crQ2wJaP@Er{@lJ|1bmm95@4f z0DLvrI>i1Tf=>e9Cgb zy8t`@JO_Le_-gQK@WYBDEURm6nBStm&5D~^*15yOHSbW|%(B{zVg68YbIV#dmia62 zz2INK9mcU9d6@lEz^8*B01pONf#bl=@!>lE8DKAXA-Ed69PFCF{>9)-@T1@oa5?yO z@H^mIa5Z?u#BiPePhc-N@@rn6m%*oj>%fD+!zXe2|A3c+6TlCE)4&zr#o&m^oc=cO z6z~J!jo?khJ)$gYLh}e+-q)1g!LnS-nLh^?fvs;?uLPf|_%zGv?_>W9zzN_>6`yWd zUT`7Uzn=Y9f?ba?mlF5rZduhoGk*oH0e7lly%u~axDLD;Z2iLNcY!0pzk{Q|BfsT% zUBJ0uC%6>cA572X>hi^cqrPK~tmFJ9fTO_IgS&vsiQDv`?>GF${*_=4xCUGd4nM;F zesB+PEqEl@`8&s(0ZsttfW6?`!DZmbz|~+sIO-3McM$9X{{r@a+a2Zd`M?9fmEd@= zb%Nu~1v|lu!7lLs!`^#T3?oF~}v%73b z5ru$?h^W{>5Q7ClQ9%(=EWwImK>XsJ7?W=X;(>^lAWlbIi+CF1 z6NoDiN1tc>?m?V~cpc(u#P1_skNA7U2N0h_-1Y+F*X36xUkc)Q#2&;sh-(l#5br>I z3u3s0m)74$5t|Udig*U%-H4YUK7qIvaf{l8uZ$q4i_%X!Qh+jv%9`PQ;I}rblII0EX*ZLHe zFT?{8&p@1kcnRX`5!WL2BR+xnF2vC-8UHni^ANvpz)%QLPxi z0f-$ZOeyccmE;!}t{h})iK^3@<7jCcp) zEW}Z57=J5b6XF{Y&p`YT;w6Y*KwOLXW5g#AA4VMAmho?JhRKtMxCi2D#EFR4BhEv7 z0P#%3ZQC(^w<1nKT!Ywycnjhh#5)n!B0hrn0OAIJVSZl1_;*7bjW_{u3gTSEGY}Ue zu0}i;aSh^Sh-(qQNN{vi)M3OQBK{fiLBzix{s-|9#LdpK@JA7ML3|8xAH=^R9*y_} z;@c3PLHsh}sP-)VI}kTTybp0(#D@@fL3|c*G~zCQGx-J}?uFQdI0kVN;wurSAfAkP zG~#85vk`xd_!`8m|6%dvA?|^A3gTgiXCQVUEZZKYWjMk&7o&*T}6xE8bh&_n^ zMqG)wTO%gVLgYUJaUS|#hj;+`&qQoOJR5Nm;>C!UB7R2pM}BW1PC>j6@o2<fg9%S@)A+ALHBI41@nEw&P(TMvr zW$~?9%KXP5?(z`B#fTR^%Nom+kp5C;@yZ(ApRBc9>gtMGJXdT4@P_# zaTemFzZic%;uOR+h}$BrMI43r7sO{!-gd26e6@(LM!XquG2+9B7a?wn{MI1egZ_IE zA3)r+HRHbnu^Dj}3_lt13H0|P-iG)-#3rPF5AguRe<6-WJhTmqZ}T5aKQ6>Oa6a%Q z#Cs5*M!XI2$hIu}8pN{@Z$`WdaSh^~h-(o?K?hID!+ON=h7i5HCU8>{74dN46 zf4qnfBYpz$0mPpn-h=oI;xmXZyNvPA!}^*p#Am?;w2b<2jXbd=bwmoAbs@ZEItqVXCPjJ z`Q<~r8SyH_O)>nZi1%RroFf?OzyX|Jx@-W$2NA~-TrVo>mQM9){-q#ZYmK6K3gSfE zzv@8zj*a=xL!2{%;fD~p1)dhd<@;w;Vpna5Fjn z7K3Q|6nq(n%^aS{VJC-giZ#NG2=WsHI$8h*24nN4@ zr#So`hj(-M2M(WRxW26K_Cu)r3Qpkgcn%kF_y!K&$>CKTewo8>b9fKKivEA%@EHy_ z9ICAktvGxchet51q&J)M&*Sh^h8xKGn!(}w8Ez>1KgHoK9Nx#_pBYy8pXYFo7;X8A zXIP0ZgJC876wY7b!r#XEKgQvAIDCY|zj3(nFe;xCe?Nv5`L5yc^&Iwc;TLmwEr;Ld z@OKO=@g3uEE0b1#eHd2g(-~IepU(LQxbSyz{?BmXw{repbKy^NxN)pjzJ3e`<>UOP zbN-7t4DVi${y}L!U*r7uFs!8a80X(4PMe>XbNDKT75OGHtisqEhp%Q>iGLF3A7EHX?;RX|nxlV@!zUP4_%}6c^)r~mX$&j!PGwjL@8$49 zF8q_6|0^8+g5nf~|7i~QNYKg`&*AYL_HuYJ!-~95F|5S*F6V!M3;!2~dn8hMl=e1- zVWoW^!*FA{{d98pR)!nN{!2N$p2Kf&_+t)#!QmquZZw?AtHjrn!*LwW;IM_m6&${k z!z(!a0*7~ScrV2%ihRE^f5m?Lo5SsrXnGX?0UW-P!v!2J@IrbND!i&vCfdbV)*eTJ3#`6-9LO!!{IkL zyqm+vIov#5D_>s@59jbW4qwONG7it@@ZB7KjKi;Ucn61nq&R3FJP(#P*<-N*+za4d z1h)~~SK#)7I|c4faHqkY0rwZUv*7*)cMjYIaP^?Is1L3IxW?dG!8dXysSUWc;M#$^ z1YCP?9l&)0*BzW6TyJpwzzqa97@P@QJUBDB1aOt$s=(a_z zHy_;1;BEnTE4T&VZUeUv-0k4X!Bv3!6)flD;7))$3GO#=zk?(DT26sm1T=SmTMTXq zxO>6f2krrI4}x0(?iq0Fz@IdCt5+XU`qaGSxs0`66CTfn^r?saf)fO`{MEx4`V z-U9bFxOc$43+_E|?}OV0?gMZig4+)6BXA#s`vlyl;C6uf4BY47c7odl?n`icz#Rv7 z0^CV(zk&N5+#lc?LY_1N*92TsaLvFq2S@hGv;@}*962-A23%Wk?Z90Eu06O8;5vfq z1gDW4z35dp5UUv^#a!$Tpw^`|4lz|{lQ%hZUDG};0A#k3~mUx zpF!`xfI9;2D7a(bE`W;y+3SJp46X~fOTl#o*A3id;Cg`T2`&KcPoO^y?hLrUz?}v6 zH@JVmodb6sTz#Nx0IngpM&KHQYXYt*xMtv*gKGh;0NkbHk0ey<0&0o)7VUIe!h+*jcC zf;$E7PjIKfodNe3xU=B?26qnJ1#lPJiHq&T|KHjP(nwg+-DRGDUm9)ol|)%arDvr2 zs$8~wx2;t2XL`MEZ-%?f>Trd4RoWzv-{B7N$j={}?(mdI-u!^WFZuXz;GN+pDso7p zC8x8@>dLcvt!0v5@)Am~yTUmtrywsrBQswGQ?JN-np`;%p##AVIH3cO2nNv>CBhT$sm-;E{Vv*|fLL*w0U*fJ%%9iBMuY#19 zX?0>5CHeF6bF$ptJg?gZ2rgQjry^IcebXB@gr&u*B$()TI30cm z>HM@@iDEz_PD!o#49O`KTm6t!ePX$<^E&LskrAo6r}`lSJt66nCDAZv2?K3H?J)=k z218lEg&_^-j1nf>855w;>Fbf!U5z!Ory!Y6zDKe-tj_SPCPM=!8IVC~i8OtrWJRcI zLK>lVJDiZLb*)I zOOG_?fHcC41Ih^V4Jg%pfVN&_PfDE-Y>Q$n(4Kj#XkU@)EGB(!Nf{#BC<0)4>U#UE#Mt7!sBW=gjj`C!7|!>5X(tdFHM8}2 zT2^smEYQ%?9$w@R29isH&cL2(w|k+B3YAgjq)?7_`*e~bli6Vuk>-R!QLvXXU|Q_* zdomnUMyprudQ_^FxfYX(ObEsD6$czT%9j~9pkFKlt&%|wvqedRD(0r952hqC`mvI$ zm~`(VotH|IC)MdFmn)}EdZDa|!-KJ{bb_j|+TJ$C;!=$wi0X8*fe%6~8+Cn;Ac)`X zw>pi&$Q`I|S03Y$Tz1HoNEm2(V08d&L1Jhjfp(e{=+Hth%MlqHFuf}IEYRhk)9A%m zgM(^jVrohPVWZdn#*iKiED)UvEevAUnnZGG5Yvn5nlOY!W;VF8C?s~l*harSCqZO0 zN39<+sX*!^^x)JQ)`>|k7*T5^LA-QG!VEQGJ40lX&7+{16;l`}DpGoTwPuC1xfQO6 z160A3PX-(4DJ@+l*OFq-mP zVR#cslEIqeyLv%t{qppUkS&{}i?Q0sRGc~A9q`)t##hZ-L!KBZIh5oghf(5?Eq0{Y zF1rLXZQ*2As6ih^R-0t5dk`2yM;HqkC+bypxkSn-2zb3P1l8$5b+l+>#B?|jUJ!!@ zjT1tq93PMZ5oBhO(^|}TXFAft7}*cQBa$>$dBTfKs!W7J5YkAC6QPYTKYVl!+MET` zVBs>FktRk?nw618nyS=ttHVj=;3AD8LXG%*&==y&W?0#Mb;=iDO$%K*Op{6B8#OH3 z0iWb09a8voR*(U5gvq3|k>)%l4x9DraeR#5>C2b=ez2sB$~aXATEt;{Hw|$Fy_K5Y zxRKXT3fpeI;eCufIG=T`e&?whtccDJ=wzubHQ4^nfL$Uv5NQyn)#sn+lk99FLU#a1 z8XMi{pvmz`J`%>}ck0=k!cdUiusi@3v{kRs)(z%|L@6_Yk)|%-A~ODq*pz@wFTn{K zwUMBnpMeb4%<&27JffKpVTf6zpRlvZ9KA}S5u<|6`RJ3e*`gSm)8S#$xFPM9Jfmcs z8sy_r4b!sAU`awJR}_Y7Vz!VVj-00j!=U+0sRX%n5Pb#33QV$>W2v zL#8r}WcI-%UMWm#hK$ci^;FdChY9jhDDSDz2@AOKvw~0_U_nw8cL=p%IrsTP=!;<8 zHr3^TSx)_tEfGB=kke5lkqRGa63VnQq1vjX!#|9|L*(({x|nV$385xEaki_-9jWx? z4xdBcKnYHpl8MzAFO(9!iolUoIPAKmgd?kDYi2r91_|Za+8CJOW3#))@dxQ;vuko# zVU#d7i`VV;t0sTd`KTk4T`G6jU~fQVDR4?f{yHVWB~@gRoePn%hkZ$gaLbu=VE*lF9(n+fhiw#Lf(f?$!S*!c@k!OVv>1J?PR2Yh+ja_Fd<0}w`!;xKr<((7qiS+Lr4>h zU$nDc;Um$RHWbCHH&-a4&Cr@pA#%uL=m{{m6lVrWtxU;=MWXl=D)ne29I?v&7m^yU zE{3MdaD`Eqybd{_XGx1BSDTSy8qJDhhTOa?a>!Cs5dNaRO|9Vc#vVk;e(^Z?NcVhq;^#N!cNz5EeO{5`-XF;Syz0ea+AY zjIua<7TS5h{}M>xE}RLLf#ioRijqCIa3&Z*_%YxL^EuD$fGHXnW4dj&fTxPFjk1(m zVRNA*qtr~Y$PP9zkv_@-TM=PkiW_q%^n(h@(utLbS;0<)}Cuh&{dK9QYm>JO8w&HxN-aB4R_i*5D+O7??fo_aA+MIibN_OE)~ zLKR{hWF%utBp`(P{P?ZstJ+@)}ov+fx-JVIw%jBOj*th>6KQ zP(6?|>e55JS@{#BB1%0mJ0qyJi3(y80>vmgB!`j+b8Bq7kKK-=^iaQ`a!GdRg{CDI zQcL_MfCkCjC*-4#)-e7fA&|di&I(wa1&|fNPuZkS`rrf07|Kui=2KH%D|ulQl|G6M zvBpZ}k`pFm=r#$gv!ktKe{hr~E1#&DHZW}Hm6e|(RZt9@(#SSXx@T1Kvj8OH$aly{ zTW&rS7=OS=%oWHwS%cu21FM3#l?`^OjfHj!{!Da{O#)GtoP4m@@Q=J(Im2OxO=_-U zDc?q{^*m+gv)bY!VbWpV&6nkMm&vigC%4UQ)ojNm-{du6;GE&mtV9zwRJkNAFe=N* zC({gMa>7vvm7moT^3f~7`Z8>zhO+PWhWL*HZ&-D+x`GpOIr*dAWm1O23t8kQn;UZS zX~`ihvDc>GVB0V(rI36D0+OfDsAa=;1=u(YdkS5)s?6XH@|=87pVbMX+Etwd%}JG4 z7R=QLywU`ylx`Q*1y2F-xyvPQReqqjn3Qdv3>tx){Jh-!>?xcoNnR9tt)7y6e-)d< z(Woh3vU+VLq;i772Z$VmYKv^jQsz7|VKLU` z$8>0XvS4Z?+r|8e*dd;|0l&bP?Qce=q?Ry&==_8{=z#(XyYO97f!FHt6~RO@8Zs(> z(jA0;4M485hB43WhHi@EnkL-o$t%>&8E=6o(H>?!!KWaU>ctHuRr zmrBix5MJo1n>(_f((Q{v8^kI%p`5VLQsqltGD8%?Q{5U1@+K!x2HUSgLdxbR7gsLq zgQlIVdQ~l$4|!IX6k3n8EmBBS*zu?)5>*VnZivxeH5SSnBofwr9XF^aSc8;k)`W1! z4clbW0Ve`NNLU{h`dPinFBlOqHdQNIT8~ggLZie_R0o650S2dHSfujerf_)*QWXF^ z)tMS1GzqOH5ahbfZd$Hc4<t{)Q63_FCA(s}#e`(FIfUGGVJIbl<`Lk)~EX3Zy-^ zrUlaaYD%KkOO*<(N2si-LPnYj=uU|lrEcN!{N4gLF`A+*`RN%|E^C>?mQOkeLP+~` zVx2QM)PV>k{SGZc zs?+JN@TIz{CcwP0_G4zH2kaMnI@A&FizKgwX>lwe8$QJ4TD6p z6*K`w6x0BwtX~@CbQi+5EN1$uzJuv(E0sS_bXCCeqXmXt0Wzksz^DeogY7L_)zs{T z5sU;g2Bbn*EE3zLXR(x7eWhNAn|uU`Z5C+YzzBqv&0l3HH<8ai4{R^?7r~qZnBM?N z)C5?Hz--ihDGpf4j%Eu<9@#z*>>V!4EcF*3-ArZi!@)P0T_A-jNUioG>rl{s>3dd? ztrWzw%4r8K>===y2(s4#7MI0pw_6-+X_O_3Y?G{l{n9Y%gHSY`>{B_8NiCHg8&e9I zhQShOfnjw zU)=$^auxg{XDE?^G6vZb&FZL$i9`nL!7u@&VcXoIEQL^tV1^0SoZK)WW0Oek+Q^8B zD0H0UFL4uZ`k`2Ykv=J5HaJTq@L&x~2>m20bevTBpjWxoJJwo7k5noj^8-*6DI$^5 zSs=_BnDmm%mz5l;Rbi0Jf*Z&zbOE39E2i}+#0zR06bywc4T)22s?TVhYre25r-Wn^ zV=4+P(l(+gP^UsDe}^hSN;3bQq=OX&-p5B$NV!>H$P0sTs3dwcFlcxAjY+VI1w#jX zWP7!mpH{mh0L&rUTz*JOk<(2!`m)JF@;?+3C}Cv%l^_SKK-< zJ>;-3`2t#V!AceW^!Uj+PX`n`!iKf~GLko^mcqOpsR`r=95&KX7WkM3HCD2^vaC)r zgBAQx;3eA%31(-fl|y%QxTt)`jz#_mRy53VLhr(LszA?qsk&C|GeNmRGVEv7{;J-V z3z-d@!MrfM*YczDKH5*D&t%$CGX`se&RY9aF~EEbIocj1gRCMW1E`$PvryJKFarX6 zC!ukLA{29I^{+exQXqM#pR zjbfQpW+Mle$zRgf!{0KP7=a&dJ4_JLo`v=J7S_~gzmYPg{Q_0NO?G9GBQi8}A@pW0 zsNwYR8SAN_Z`Wez=GnN1jN{mJ9;Jk`4E75hq9C_2Uon|h*CN`of;wp!q=1!y$^axx z^NrL~SuVL{qXf_hX(A$q4n&?#`Uc8_d;p?smR@L8qAVVm1BU<6z9QtT=TOZ{MWICi zAxYJClhc*t2N42fp_(T$G2;b(!Cp4%<0tbafc@?O{P2T8V}sm4D}i*0wBNOma~6E4_pAfrL~MsmusY5}b4u8j0u!B2gjPiD~ipq1Y*eB9n^BsgkoQ~KuV8IgkS<`0^uhT z3V$k^V#bk%8b1Z&pysE~A1I`z6SSX0ucL=jgnJ621G)p^WV^$j3iI;iP#D$2<>YDM zIZAZIRo75rIbcTsoHWyn+9MG|z|dC$HPQ~ZS&-G4x(aERXsbIdYH(1knhh1vY>y`J zm3-5{vbDqykBHP#NCs436_mr?K8q;~f5IMAK-ec5vuBh%cL+!ZhL#d~ZXbOKI~XHC z>(6@#qp-5$UXW5D2~;jx0Of5RAhwVeRwsf-tPJQ}WWQ+@SskO-O(d&EHp$cvvxL|M z$qs0%GN3U^hA|^7Z}_W{9k5fG+-{K!`(NSS7B=x|B-j5+d=AALi!AEkR1C{`v$$Xd z)(<*%g(YdbfjmfxGqwhV z^85p-BI+U_&OWeUaL$5CqfxCvM35_!9ZopY!sa_Bmq;#_8d$uA8%B)MU11Q;AVwx8 ze;ksm#K|qpzY5GoNJjD&Let37$wyx22-CB0dp@#(HK*{BRf$ivkUg6E|TN zsu8$>C|t|K2-O;At#q!-P<0^+$52H@;e%1BY$arpk?qc+C;AM-!NjnwG#}>E3f+|k z^#V;W*cFl=fV08IWhO{W_E$jkplEZf&>rK-!xaOXahifb^FOp;m}6slG+ShIe? zFvkuT77TN2k|0o=xHOsLsCfTg0cLn(12m{fF-@4}izqp9RAhY}#ElRnCth5m%<+O6 zWsZmA(}Eghj;BfZ4>~XlD!m?K-3aviW;sYOqsZ1HN<&ySM#+I0SlGYjS9Y%nXxZT-7*P3r;Yi6C8)i+zk&z2m*aj2A zl?>ShQHK%|^VtjYy0A4-q!X-g`POoJViF2R0TqkZPHhDN7DKPY4UPjw5u=RmeM+_4 z>6K=_fzfuawIUxDBPDybi)^z?CKKCqwmTV&V7iMnJQJ&ZCgdhri7aqu0K-)JJA61c z{!s5KhQtsy;e&cLn~`&iA`az*%_?LkY%bk6Kx!5g5pp`6Ft>|mY6T>ANyP?dEOnE}5k{2Q1hJKu zVAfACsG3}(tC~s@2yTNFPcKV-7CB!iAS362)!Z^1KKKNuoFk-{Z3Ly8(qsYM1Q626 zGqXBgub>D5@Y>W1YR7YN`jS9@FIyjiltB^3s~P1ZPeM+iCv4R`*}*Tx#tG3r`iGWX z^Z-%SIYJv*9sWQjV(swddaO`xRSA%V@@2uD1|Bktrsz)M6LTJ>So(NGmKIDpl@Qesm7)~@( zLOJP_L0P-{>of=xP`CW|BdSxzz z2=qD@Zxsl`jub)lr3GQg$pr`5E{)bgBDcyHAi#h<)5R4ULu%M+>4`u9m;f@CfV7BY zU#MSro!tR zjEUr;Y)l13Pp>`K$shR!3&Kxhy{Zh?BGxD>wOT|+D<82A?O>b2bRxa@pJrj5LJ%7n z22&GRd97PeI3z|E=?x<#?KN89%2+|~h}@7z%W$3}w}|dn3B#H0$1#>RbW+5a-Up2f$^b?ncAdHs``9d_s)yAjBO7tU z(%?joafEhdg~XUH;=Cr~NKC6SN74ZYX~SenNVV2gi*B{nrKCHG!pfIP_8oy_qA6VU zL<*)^w^FF)iqh!a^Lhcb5+>CtdYgXkj2er-g(<*>z>9v+!JdDHH=X z0y@cwLO3$!gVV7vF#%_9NxuZEUT{bv8CHMkr+m8AEm#DF47HV7NCvwSVTRoY_vErW zSAa9jh9sC&nW(FX&~SpWu3^l%a1sSJOw(i1bn|60T+bLm;@D12vX>2Z`H;#92bkcD zQZkw8tW$8ZrbsstRgifs8aE_AF>LaK0)%ql6#)$Y#e9)aZyr)Y*gf$PB$ZOr-sHc| zkeTI)4`az#ToLIYHbJ~n7Mn0aHdl<}%Yvm*vh$uz&LoB_w^ScWn8?H&E?%FE9i9|c zOjcHC-{Hf)B$*U9xsMMgvRw6P(?A2UMj(942_3E6l<TE=eY2^-2DL-@(o)R>Z2OG%As~8c;NzN&eGRA6MHe7`tG^T~66QYp&I90ev zVpHsmh|+;AARO$BfHyh00{gv5lNS+l7;DP(5pajoXc2LR4NNL-_&yM6NLe4GOeN8l z8P4>`*SIGucg-i0^Fh#cL%%3r3ZD#fd1d4#6fm5%y+~*TFaU;2DAKKPXcsn)!up3i zrnWjsoVi6~>7I2%A>qgX46Et2&y1RmBH21{GTWI5ONs3Gt0ALc5t?Vzl!&wDjVYy|!Ev2@yrViasoEey#?*eH9D{X0^YoPxTRtTnPcHq{i7m*7 z6)2n_mB*p~DH!XDj9DlN1iK|(F@&@!k!d38Kf^AK$pwSy1txo0lK-p05+5t~ti15Z zKO*Uei}%=oU7#NWH2umXA2~Hz0tc^Py}?OZJF5kc0l zh(+qwBu14##-ZSBk&=;`3^OjI2EiiJggE;~M38;Tiji(!klK}~j8n8lODA~j zd0Irth&73GG}aVBmU0QHYu-i}+zK~6!GaJDJ91s=^d@l91H%{sP6N}*nILZr;2Pqv zfg{wEILBj623ejOMs}>W;>I*QgUAvPYmn8kqO5lKvh&K#%J~=4nF`uKEoFov(aop2 zdrV_v6U1%3N+zbh_#|Pgr=g8dEQ0}kY;ZuYt(Y|Zi4ki`p^Qu zWMrvJ6mLY2WhYerM`Djnq;*xZ_n-C%p|iTNBMeHw2)g%Q!zSW`6>%nU8ILn15W7di zSa4z>&Y&xc6Lw{GcPcFsSUd$e8l=+6J&kaJgA;Mk978&Eo9ehYVIZni{Xo!q>6bna zx!jB{9FQ?~u=L6WS3eY5QMlINj--O<2B{!x4LE=GFJdfrSc4Ml@d70d7qlU|@`Pg; zE6 z+gfqLF(;-FmKgE;9cd{r)6L0NHZPtCO`?7|2?oa#dHQ5n0`z&yZ3E;(g1}6VB)m?} zXqscHozP+wZ*Z0`o}J~>u%U}&I&2IM>cunTTrZHg6^M@$wF1HAVC<;`GdgNIPC4;l z)PlO>|3yf4EKZ{mY7FS44o=BIB)V-}JTuw!0*Om;yje72fTY5vf^^o`g=rP(LJN}0 z-4h#Hh-OsC$_yWXQz%KOPGX=X7iu7Zom~76k;W&AS~s z(|P(jRRxYvaD%29dRqN{uFP6hDACDBQH3kCl9~yxRLd1fpAnG3Rt9UCF%{hWXiOk^ zy)HK;A@vbTB-vvn5-mt9qJZ~&jpM`0h|Mac74d>;Svx#FLa%%XOBe~m3Mk6-r5IQ* zH)M!Hk}IO=G_fJE+g~DiDTPpP4mcw!H$!C4Flicx>t`!R8c|6!o5dy3Y!;P72e}cS zY#Ea!5_I)yx(LM)+qPyH?&v2RbuQV-78j->!9<>xGBS}^SE_4hm|^o(7?H>XP-G%e z%E&}YG{`iVXwesm+>PoCYDh2x5u}Ptl;Ps}2J>*y>==zCs2L+s>Yx>ae$_1OS2ZQV zENV|QR4`YpuVICX2pygmp%U^^@$zHV^_T5p>UnLL^4EGM)fy zx+2Rq!6fQ*;O<6pVKW@(B36Q6zDyyCOdBwvEfgeHWMaeq24!|Nbh@XA-bV+QWjJ8> zADE0DsQ1F=1Xgwe9x~cN8(Ye!4-)vuHb1GtS(PpuB5dOm@Bwi}bA@$g7MYINyt=N1 zkPt`f*#DM53GAMv(8+-WHV30G6T2tre@!M>E`&VLlSw>bk-)B6`d^btbP-d6!9`37 zFvX-_+XFrr*2*`&i>v`3yPltvT~=mAgs?dnE|v~YhYZOu6>EVp$A}2o(G4zo=1pdQ*lqm!dxz`DL$yy?K2tJWF!G61ERJPlwVSQ7=+~qK z(ek}4QGpwGL08mK!@2>*swRz|V9aAEijZT3x-qEHFmBSXJwbu!-t@X_CM1|J6?K<@ zD z(PjZ}%@IuI^0bkO4->YaK>Z3iT(m>P4sSoQwu@OuqRHGKSwzAln#46AQMfUW36q(d z#bgnTe}hz!i2~-BNH2-74yB*1HhACB2`^XS^T#Y_fsI)plpcL#;u&lrOB8M*BWn%p zVP>N;r`UC*4}*)3f}I&vu)$t&W?O~^i!e#zl9IzCxW%6pLMK!V7JXmlAsIF zQtG5lv*JbvVWH+*BJ92rmM@Wgm1wYgDp9z5N+U1H&df@9Dc7exo~2!SpcAwq9Rssv zNO2a73=M+ms7XgDU;zk~k|4@Cbz4fUG*M$}cT;bYE|$T9UPDb6ncN0bh>5}}M6U9q z=tRAO=2SO8WC9x8besq`9qU(#U~^%pR@z=riqM)*vNL#eTU*GC!bO-W@wh&b^=tnF zaVH8-s$e5`Mnj_Uoo~F@Yo8ojT2rL!~D+t@kq7w)f?}UM1i;8~cYbB1X*`Vw7 zaB_{!8^jAby&#p28bZY%4rdoc;tw~8$}X&bkv@*d&1|P+r{Dl34x}IeEyIzApzTgR z*>M0#h6V-9G!i9wXOlfk1s^C&<%_tfn=mdyNmj?GU4~Izu zeF5R>(IR-6It}I^OT|-5^ps#$hN$uNQGatdf`IGYzX?r?N4Lr4}B*xVnP5DXU}eZtr*)(z?> zI(>qXuW?xNGQ1{qc7ASBqA3=>1s^!4Cr{}U(lEb@GU(EI0^VYL2$o)CA3Wx+OHOXN zf-~;WbCD}M;SMdy2lw{kI(~rNpsSQnT@IT2xpXPyqo#6g(ItY;4PT}q-2-`~I#_db z1K2@5>B{r)w8U{2tJE!+|35~ng!fuq#YA}eJRQ7iS4^(y)gnur-BIiyPaAuo0kp7Z z%?#B;Qd_4qs)!ZIj5CspLJ1|O2irPbtwM!j7ZJnjj&LLzT0gwyMk0Hvpin8(?Zz^| z&BWwl<8-$ZF3-t!A(ILmQsql<_XoWlz?h4V76hUJQisBnBaT=}cAcUi&Aru+;?|9Y z+pE@`ajX@RR7#S>B7#K-n!X6*!~3=iu$&vm1d8@a@E8|)uErU>5<)lgq3Y7RNfh!h z8fVHfjvshJ@<69ycsX1)XTVPP#)M^<9i$Dzm1tBcY+?BljVjc@8JcIf2n%k=h=$cJ zc6U2$4zc>+&4FS!OrMvOiHI`c9q%f-ETvBh4|4PVs(P-DxdftvRRV>Lh74-5EFivy zpxmTF!YP50b>d^1!{AEG9!zqvNgBk$VN;%Q6fUMSFcn^-xeXVMNQ}!f?4-J_qdFjxTmjzt- zCWd@TAbe+!Gh~C69EKKNxlV`9l-LAxZy3zhP?^YM0V4ijE0Npd!_sLlViR$bA4dtx z4(@7$w<6#n6}6}^Vx!{)c!Tv{+W`hine^@{Y_TUP<=k}0-F#&816N$bI|`-?*7LjW}8bwCr}Jd&A_1#bNab0j}`axnP#j~8|=lgDwg^Kh6=-rp4w z!$=~}3%7E4tFrTQi|D%~MPSIo73*GN$%}%~?OtR|uX&{=L=>y)GBlf8^4iFC+GGcv z0c%wlFiGh>Sox9{4(_9PWOPDrz$HI2+-2~TJ#fPYFZ8{J;2l!%P`2da9#YVuSBxwJ zmOjcR3m6(k4eb+q&nJAWHn%fS2I@q&v`)!0O6!xa|2JHyJq4XLRViDfAB6aLkuIuwkei zx6KytRB0cZkOPu=G%q|!FL|TOtv0YSf@)EY3WcHNl>!)XnAChD$3fzc_C54C~5A--O z6rzYkU{A8@HjTkMp12q)bD=Ugf`e+#8!~tbqY&mv1?j|fGM1(i!iUQdxN_bgH0hC5 z4|a|ZSnUN+AxO&?G`alHbrX9++skWcd2>tS2~~_tF_bu*aH(!k7g`#ax^_Dqq?Re- zY6zI2!PNx~1+y`XC>(kgpN5CSmj^Eez*3yrCe%#(y`htQ1B}xNi7p&x}C)YKs zi^#ig0;VC4hiO8>YbT^}7KSZg{=q`Vho*vZr#6jarO8%G6K!oeUI=0liN|6!6i zenf=v=%lHT>}9bOJKcp=r$uz}lfmu9aqM`kj%t$Va8X}1Nt|j(#iHd`om;3KH=8Vy zTR=8J8CowR4X&euP~qbZ45@gqq%`_=*kK=lqsSq7A#2m%ntN{*5eBjq>^{h8x&4>l zI}3hNnjhXpx~Dw4=_U{JQ>p=^f= z!P<4wMwQdu0-OS=w^e%mS%R?(jY2Xj~aozl1*}y zOXNWwMSezD1Z}QT0$5_`ebvDjA`Tl_;$p>T1I)2>Bk2E7{N^}8gJ3qeILZtg@->=+ zmDDsCzk+2>6$salmOJQ;>#Q**JE()I5)((J8@Qhpiob57V`hgM6R(9whkA=%v^WHo@}0U^K?2zv8v zuM!sK=0KfnxEV~pIyh4B9Et-Db~Z^9Y7~6sDcPg+p#r7`AFEfX9->yVhUY|kMa4`A z#=*up53BlG$C*4Y~prYdC2o4uDiC2vigWpRf$)i^gX`Z4N&mZ>sxM7}y zK7JPzBQ(9R&qs&Oh#Na4Y0L>vQgTFUnOHwXwls4@kSMiGK{}9$nFwrsR)XQ4tyJkdBCj5g427Mqk|)Jdrl;q1Kwg zWijlo7$}~c*vjVCP%pWOhQ)eGW2Cd%#WB*ezUWO#p^SM_9R-D^4KBeHwXkrZu~;Nl z7DH_@PW*^X6Cy<-_8R||M??vZW#{~L3qUOF+Sg68oM&?VQwIwQQByZ5Zao85L%_}&FTSD5yFlx7&n%dBw|Ow&MeTNGW#uWG!^Wc(<4=O%|V-! zIw5^5+=gPYINerzl*MYdTVUr>v1BQMo485O;c$UX>~vauN}R4@OPK@{_jVs&qGaN6 z)SHC1dTma^-d#8o*0xf?hJ-CL5?p4D2~g8O-C^yM#i~nJ2T7)boxcd&k0wC@^RZN zjq8c~y++L=2NlV%9z)98^MRd_tmCNtfq# z!!9aMSQ5BR187M3#&T9pSO52Q7q7Phhy4AcPLC z9timcW;*{ZA>>P_ydy$rbd(mV4jrlBF4hnMLS?7B$y{!i#c92vij@Kh&avgDU6XD} zADfz=Z<&y5>8oxW(Q{m8L8>7^Uknd~qjNLzby%?A#>_ci_KYe#x|0@gIHBdC1_xTF zAhx#2jv-|`^s9%gqr>tMCM0`O>I6t3?PAFcjo#6P80=B-;Q)(!s~9>mZm=2u<9lCHWg^z!MFx`dIrlNX%p5?u2Xc3lF3olGVS z!M3YQC{nV>3?eae>J+Y2g6=J(tbpC3Tg+f~*65(rquvDtLJSmM=hI%x%nhv^&vLo-_y(PN0q z82VmfhU}_C-B4_bLf?ySTGjP}&Oso&=sVlttH&%>o!rQBBN$0!^s({uiVfY^*;QY< zUTm#c&nqZ^Hdo2O<)%Z>cy47?pD(G66!F4t+4Bc z5|^k1cFCJ=C~>!#kRWU~62yfqLEJ_qu+2((VkC;&`9yfNSCGqz>>g%ahGP36QLLy$ zcFIqep}1L2WGfH4p~U4dQEW{mifd(}xKmDK59jEL!7hc@^BT_H&(!r27aLKIh`x(E zWN~9BuHB+o#7zZz5LGXc;tXQzntEYG@w3Y?>k=ZC9sOiMv^|6C#dIUaqnwp?=b60Xcn7aX0d56l7St2(~C#k zpOEM71xYe8?;{aToAIJpg5M*fXGgd7N+Y|5RxkN=jziVCX{90!y;mxBz#<#ml|>dc z=wwh#Ves?h63InBX8Xv5N)=2sv9tcLC{X~n{Ib9#gwN`-7rJ3yp8yv-JDu)y&^x1G zn;V&7qGToRfYS~WS?U?AbfA*Fsm=;(l@Ewu0gEhhqTM1c#U?<(^eQC+lVo)d}g@)q*3+s%tSg96BxUDpw<^Hr7idZ3lr;Us9 ztS*?cblJ)3NQvZx8wDX(@dGR!6Zu7RkI@i0*?;QK1ukSe5hMv#-#|-bQ$$@usi}vNj31*q1_3mVe@ky|@1bH4*Z=He{xj`!|EYu9uekr}P88H^PK}tEQ zLBx$9Ofbb-dZIa_Utk?#lK;`Iq2*Ig&0Z+g0Qa(FTdthzl+L zv|@#(Fl@L<>>vfF%y3b{wQhb`9xT&_rtMF}+dN_{c4$aoEfO*n)PNGykq58&;Bvoe za{w*#}tgsAls^iYwCs} z$<4O^E~Gh1^Y85bmbFn)-8#U>2I$cj{??C*YBn*d9{JL|JJ1ju8&#ivARli9X97pU zxT6~Xkk_GJR7?0x|G}2d7+P-G|MY+%xn?BlTtY%(@q(B3&s%xz$oH4Ex#p(B&pz4n z)V7Z^Yj(UjboRQt@A=@H=bR_Uzw_XYH_q;McWv&z4cEN+~AeSGVa*{k!)50>^zINN>Tn!ks+ zuYKY3yLQ}L`Qm4*Mj!J(k+$!{XU)+~rd_kFIxXkZ*rx}rpEG)Mi=yAxdOqB7uv_cx zJLXMY^!~EkcB=>fRWjqsVP)%vcl~R#XZ)2{PyKY%@`2B6pS$PB>L+IXmio^pc}Lqt z7apH=|M|b)Z=7?w`kb%O;`Wp_Sh@Q1wL5cm%-+BGm)&#U7jNL%yr%a38!tO@ zo3G@T!d+X({5~%^+H+vt`$yh>?Wb8yS5obct^_;W& z&eVNdI)2%3yyfm=Yu~Gv{$$EyM<*;B*2z}Bb@oW>;j$skufH$z^hD3XS6lWT^4^t? zR4g!^e5S#fVL#t;;;KJ~Ogj4Uyy0p0KD=>nj|KA<)pz=u7p=*cc*N6PtFFAM)0t+&4w*OnvFW9i$A@+Pb=lyf+g4vS z?1h_peOP_xnz1unReM^t9{uzAcjp!Kbzhz|sBDX4PvG@W^4osZwMFeM3tstpQ-{)% zwgD&37hP6(Xy)u|Mm_rU=+dQQ#^uf*GIB!FTQ58^Yvi%$^>O!)yyE_M&3#s{`mENo zI=$AinyXL)|*i!*ljn|sS+rX{VXeO&hJ7mxR=l%D(Pt&j;iiW@t$&tw z&XMMP=ib=oiXVr}{v>Dc3;j1t_~zFEQ|yb1ZrwU9^TFJt@Avu(OD4_Cxc0{9Mz{Zb z^rq|~@AZ1=<@QsijDPp%=$A%}oSYjy_xI$so)M4rZ=5rKQpuQ+gRUF4weZO&GPf+r z?@@1O&x}^pm;dp=)iG_yJUpR&!|wY`Z>$)S)A#qCo1E)fCC8?&+I01`ZzZ(Oey-+= z!U2hgz9?Gs-SJPhE|_rF@AF2sieI~Q>buFS8h`WIy(PO|UvXXM>CbMdf91LDdu}Ox zxKZ!+Uv_)_?VNQ#?t8Su{G0kT&T{tn@u`<;Dzi$Kef4U?wBqYK zj630sZ`=F3+XFjI>lY6zDlJa@GHuXj-+sHXO~Ut=otaj&_uNYF`3GKTTrlcXPTQ}e zFFZM?JGWViXU=-AMY9D@{M^3N>8pP}|IO;1 zole&F>tEd{tLm#o&at;Ne%|C8_3^sDR=m)7-NLKv&z2QUIMl9D??LTf=yojQwI1IV zr8nO0p4cky@USP6s%!rKrPulF8v-9BwE1Q3qg|Vxzs@xHmW*EYKJ3*y=K3c-^-LT$ zYg#kwrHj^Gu_>+h?o}I}>At?|iYKqD=P7()>)S8KUg-AajUP-cfA-R@(>L`v^~ zOFqncw(DL0JhQi5<&Hsr&-(I(J;yw|J0IA!|5no{D`#7C=j^Wfq}T7a|9ENBM+5y= z_bD9YEAZUZGr7U9v7N@WE~@GI=;;?ds5s z_gkEQ!}fbWf1={W*UMkIvfbQ415AH6-rQ-@-#gD8-_rBley`lOGUvJL?{GG|am3Nj zd+hw^nOl<`o=K^1|2A&)^uMwnoczy=jgD@c7Z{lR>X|u}OQQz_9?83WZo$a*!>?;; z?fCxP$$9&KeWGR3_%`_!y~nnH?z8B}FRST(W7e>TK5ukc_xs*Fx}abAesh;ahxT-f z-MR6>_ZIf=baHL4#fSgA%Jr?SaN(HUB@b+PxzTG2Q%k2cT05ZWjKvOdc%HcuzYs;dm9F?e`o*St~o!v)bI5nZKn4w z-?{b9X*)Z7_f~Z5-Zf7=(BN2Ybo%K_9{lx>Q}-@`})nJ zm*l_Rc59E_t>@ce@xZt`EgU~jjC zo3p--J>R^gwCsGhF_*k{%YlP~RzJ{wUhCVp59_eAW5?zNTlfQ*ElQU$0(l3sbYkjRv=FP`_)VC^Z3usF~mT zHq-oueN6Kkw5VxNzh3?N^)5BFQh3yB1R)A3g9Z~DHf~>kVt#CUQ@h3hnzwIGgqEV= z5Kc^Ne^X!bu|@mt>|;6{r&l(tN5h^xa;t*BDz=lU1EFisz7?Y*HyTB!ra` z#l@Oqli<0kgljvuicM5O)4T`ug=nc3Vu)!F6{2My#(c8d>$JoDD3VIi6C@ZjkuAls z8KyKUO3N!EppF(K$TYuRZ?(SaHHvC5zh0Xt_};w!{Cf4GK1?cDy?xTt+xm_e{qy2q zk6Jd*?SIc}=KLEzxzSc_t*}pjvPqv!BhKdy?Ko+QXXu=FTwAZXb>y%U`)}#GYVrrq z&+c+z=Gl&yWOrAI))4T?MVpsi#=$Ey}EI{Id5mj@0sSXb|+hZ+@s()!j1hR;0K zY}0eaACI>``rh@Qy*AlZoKRh!_{44VTuFED8Qd{vcE3H>zL|6L);mAHZ+F*OFU?r- zNPN!3zb={5a>3?Kt+pPj$hrWk1k#^6B zS5AHW-Pq%`SBze~`cSWF=Vs2_@>HjU8K3|7?C)6vKREpM9Y0sq&a@VHeBs2oLnW^j zT3nwl`{sBz+xdH?XX-bo7gg`^dC!^VJ!5JO`tIJQUcCzq8$wZAU}{5fdx9I88o(b@ zck-ci!%hu5EWEsPv$dPL%(&y|kyrm5HTB&I1&_aM>Pfu&H0)yPRNZ0l4#%kb%bT75 zqx8<0l+~w4jhowax+#$m^lUiHG}JV>W?;?b3;LD#{hs7u!zwB&VyvXJ#y}+=Mt|9? z!^o{$F*dK$)V8szLN%-pWnNnaAWQ2-?Tw3i@ZEy@cV01nc+pKUCA;5#Z}ay4i$^c{ zw0+;1S$ElXo!HU7@i%+k**d)AZ}II%^dI_3%*2!*S~Ph6>?Lpg)T-C!-PND28!+sX zp)ck7&@;?_S&RaOrnHEo^X2VCC`w+pkGk2+xLnvpuNWqf$;x|4B=}0!F$#=>v_+< z9;5P(G&(lD>XxBL5+9p9cH+@HF1>yKUt^r7nmp6nRR3_7k!SLn?VOvsX6av_eOR=j zZ)v+7k8e5HZP432A6R)q%O^(Naow&?!{fKV(`MW!9UPy1aH;pywAQ=lT9*ITufeMm z?;ba;)k%9opN?ZXPVN5U{ipw2vGUWrSGP{dE55tw#^}@A*A0nwdp2EN&$RgE^iSJ7 za@FsHvj=qDcK(x>UTOW+^vk~3e$`9K&;HS-b=18rHuUNgWgRo{=xI{kB^VdoYQk`Y2JgWx4+{rY|-}S)Z5}0&D&s_a`f7Uaf?e{yu15; z$#vifuS_Gf4NifZOTOqD*nzyOzyceOzaFC7l z(Qa3?zr^8-wkds^6kS*qZFN;e!yzN+(qZp5T(aYfw%W)ZZ5E~o!brrqqDiv@D+n+H z7EQM5!`mSCXfp8#0bKTIn25*2F469y=zvceqKU`@mtWaPWI(CJ5B*rQ$4kyUgLuFb zwr|4Pg)fGynzZ@4K5^ODp_MNmTfF@1-z%2?R{nW~DR*nnTW`L#+p?=h4gYQJ@|3%V z?Aoy8l09$y;amRe=k_++t8&eI9vk^r<%QC1O^)6);^sT@qjx5~v*FE$bDNi582r!F zry4c8v2)6#c0K$%U%sQy6{8;C?e6>ik8bv8+PvtXEH{gn31%y?PHoaQ!ebskq?n_@K&fR+3#IK%O_DWpZ-+Ok?S~+Lc zgqOR$eqUPOO9s8)ru(LGE2i7Fjj8UO_w=IOdk_Azqgj*T>jQyarumH?fhO!$)_gVX z)o|;EtMgXh#;NN6T|)ybq}W(fQXJee5tkSrODrVVEgu(;&@^vJY*$m4#?71E+yD0a zej8%1SFdIBf~5QrQ_NG-60=m+&VMjLV|&srx?%H{o%C%~jgba5(bzWHGWX~gJ+51` zuxRq4SH?fI^{M86E$`#*Kd9-=vreweY*UhciL3UhuG78^WPdl;G3o4x!qzjMd^)@T zz(e<^9)0TdKD+Mva@>2%`n9;ExZR4I#uk-!ux4ffs9)n2v#j>S7NGjELUyXS+_jl;gbul+|K zymTsU<;M3mZa??(?t#xb2RwQD{h4zY)EwV;tomK=9?SdZ4%KsRd;G=dk9)SfeRI_6 zygSGLe9}>KYG2BC54Ue#Hg(aP&q%pf3^eVS^wfvtO-dhmn{AccQl11&9a9-U_D9N2?cLfrd&XTi6x1)e>%-dDjz4H> zNm@B-EY&wfX-pwqTM3L%xmj!s?4d2YplKCP@-1D<|8KT*1C{2wUZ?Jc)}Cn`vktRN zVENai)QntkCDOz7m~0rPvJo|nEFAG+;}PVHuOZhrRlPi%``@3Cw5 zqP_!$M-Q{Pt|-6j@duB8x#n5N``^5{yl3D0+b;aAdyls zFCUQ;vtr`!n{NK3-E++!eDL%8e!S(S&dt7YkN0=J-#PQ@^xj*p+0b#DebdCOUe8{* zd+?kJ=k^z+wQV;gAAIbF_Fqa_8)v;UYkb#NXMVE5{g(R`^8+hxcq6IN#Lutz?p{yM zEyYD$rv7wQd{tEZ(aM!cf7U$y`QGloEWWJVd18Y1+`BJ(YSRwSi=AJ8kZFGX{xD)S z&3pX+*@n1&uC1Sp@1g!OqVI3S)EuDZTv!THCoJ9zT?PZB;n zFlzVizVPFyNJjYnv?Gyu9~^B|R#dPO+s8jh|?LtL^qT$`@^Xb^GkHXD1}IDqM2v zndeVD^YZ3)9lR$Cj$5wFpY`!)Z#*gOJ9mCl^scVIH0%HL(8dpcUERlJexc+@_oANm zerMM9etgxq*-P6FHP2g^vf}7F&s;sf@X_-FcS(CIFZ&~7?S$c`!HdT4J2ma|YcCzO zrOO*7U$%Mets7oCQLwAgW3N5kEwKN{9m^)Wb{{>|xoMxzN6srtw%pZn)kmG@G@th2 z`UPFTT()%0y0$P0a`E3q4P4Z~MGaikz(oyQ)WAgzT-3lt4P4Z~MGaikz(oyQ)WAgz zT-3lt4P4Z~MGaikz(oyQ)WAgzT-3lt4P4Z~MGaikz(oyQ)WAgzT-3n-ss=ted+dA@ zh=H7`A!lehf=g<}4kVK^EFIubjm1)sIi&zV@Lz3IEeQet;4cZ^2psuK{#h)3c-x-+ zW>_1(rejpC<;nU{@HeVqkc@z88Cop9seI6}a=50A z7!Q&b-~oa04hbC|o;QI92n~Pf*&&$+B&J&a4YxhBi`DT1FUS7(>errnC@Kp6%0cK~ zH6qU)g5z^9Z82`5?G&jz`mbqSv*cKx51&bL#48m!Qhg%D9?h+5 zrtth!^WNmRZ01ahX{sDke3>=3nR45v#uQRQ-<&!X7yO$4QhE3?GHbGag9rItgT6RM zF7Nd?;WH;w`$P^3EuWxT{Es)O&%|v)6O9t-=(~|Q=xzBCYdjX@Y%%YM z%$mh813ve{W5(6fOQ(;UK1Fj))urH=%$gTagwMV3pd7R--?h-PO*R@H_}mK*&|a!9 zIHx43a?Cqc+XJ6_;UTYGz!Mo`@G=8jhLqwP!@6YFbVJ9)=Wp;ZilmdHduGj`gJIL| zd*hL?MLJzJots(nGujrPdyzv2F0Zep>auYV{2UI7&%N-NI(>ZElnIIWo$O;9FN8hF zKSeC~}09%8wC`qg`o zV;y+R01tfbg@=A!h#AgW_($*II_}_ek31L}PQ|}5V+Njc{&|7^=M2UV{x=rwu>hrG zGktwR88QYD*ZU9Yjc*wK<>8-(^KXW)4_+}cu1sFqFotiMIiYLU6N>pZcV4zK^8|U= zw`=_Nl@rW;J~L0~tBZU``g|4Lz=`#4L|@-HKGXM@Hvj@WXG*3o`_J#8@PZO!w_ zfIk+^^c{Mggn#_c0U!RGjPE<}S!63B7>Pe~Hf8!gO;g?;DAe`A zcGu<4EjoR}P4^8r_}IsWKU)Zx1h79LKxXah>j3$?8(g>|{@ad!8NL(BW?p^5l*yOz zA6`;2u4~_}(Ef7&!T|tMRs9+m3vY*WA%|(S)mK z;i;&Z>8+XuQR?&BPS^J!tkUH->N{_8X}T)-3vGZQ|t1%k<@Q zd#Fa5F$qy@mEyEMGF!OuH%WZt?kH?Sy{r5i${Lcdav%vo> z@IMRu&jSCm!2bse42gVx(a?*7P5CaFj8MS~|J&N9)J;FN_C*F3W=1j#-7+ktDiyLI z;{b^SnpJQ|b#>j_2mwAi77CzVu($-~n7mxowG)ecxJJm5!ICKe>6X_b#rs$vQdRb5TEMY$Sf zVzD%Ij|!boScbU;&|qzLk`1&=zy`BXxz)-Ogv0d!I@QlFNv`=E&7A~B&Qk!XtnpXj z1|Xjrl>=3FQI+WyO0E#yB@7?Z409tR3v-<6h5A>vWyJdag`7kA+>ajA4RD_DyU*fR zixL%ki2UwbO%5Xy9`G2cRxP^*9IDoqo~Xht$*Y9?Q8Kg$rvqA5Q`$w9WU1*%>q%Cq1P4}ekhd<*g!A%QG*!BDhSCi>#{Ds&+cP?Mv*`ZeGLYja1ZR4{i%!@pbm zcH_U&JSQ~wJwp>Bl%1h~Z4vq$ztRw^(Ags0_?-#qhKh8PEJy$lC;Au}8XwqsKOmt; zpM&W$3(QKJEu!yJ*&61yr!qHbQ-8%Ul&rlyeWD=<+@`vYCY)<1%xl1=r2tzdLk zePA0IIs>&Oy>R-A0cQg9V%NM2z8T zNR~P)S6!H=B5R?$-OEOSL9jM&)ar>7CwBFBsH6-&1Q05bqsp_@fLy7rEXyg*)rxcV z%;%1z$p+-HFj$v|FaVS2lCz}IawvqqLxtf-?@(n~%43o#Ob#QH;yhze0qrZ)Et*_~ ze%;<0zFT&d3f=lWz3b^8powXl>ifVa`kV!+0>p`u#=|*p1VqWtLRe}LI>gbEFrK%q<5jaztl@?uilmSvR*<|bOJEdqDzTy zMY_$v@V`_O+?JuDj{q z&=#bpeJzEy%%WXcv+Ykp+b2Ek+7#NJp#8^8`RUJ`svfeuE-rQG6~G-~0x} zD52;nUB3Yop0okNqhDH(lK_c~YL2XqjA~M$(}kkMD*rRf1FnjG1E5+&V>_XCPk|-$ zVI}}ovz)$ zLh5u#TK3vIQe}TmAT4FTlW<%1dy6RT$iiGz-UPo&V|c1C4rGyfZSq#7aTTtjJxK(U zr;|=xGp@p%^hjETjARwiSHE6NrCO@+KH-)M33o{~{8Pa6WIjg<88Y$?Qx(U4*jne1!KRKTW0||K3B4#X z^DF!v(h;f@_*V=m#Am)5Qh<*a(V)isD7t=Ik)decn4&pl1 zQwqo(N%O-ZNKM(P>6jdtsJ!|^ZB5T*+#R<`<=3R6`v7Gs#>$-*bSqE>W&7B+huhFo z;oVv6VeXwmuU+p;U2l@{uVZ;2OT~^z(eF|ggzusKjB8y0h&8#B{J6LD$PrHP799Cu z)655wX_~;s`D*%RwoTboh&fpW+cuy>sZsv{s&TTP7NQn)DIm`C50Hgr;g3;VP46475veY7&bMtzFoJr^35+G|-a;>R5P%6r#Rp zEf&MhQNjI*UxsGMlEyNE`bZUQ$1*~?7pk(2ZsRSipo*+4E4~Y8jI2+--@Zzwe!a)#u`^Y6+Fyl1{q#M z$^77zx_zsb2!|s)#+Ikt!wT4z73J%F{;IGbX24GD9Hn_m#of`gtB-p|f+7YYVb7VE5z!rby+cY7k{I>(giMF{H zn2Ef`?Mzgp`HOV%gnLXe7tGLZ`?I({QjSF}jc`yhy&C1Z4N-Vf^ipbX^?(h4M(Vq* zoeSsMePd~f3QeVzq7$^0BsqCTC?^x*fCSt5+_pf8)T_|&7FB)i zQ1c}DVYAJEqM{Q$ifh4B4Qa9yjF*J4TvsNcyCI*QFj4=P* z_ZfgVE8e^-x!t#*4CchTR!h2-aXQ;m9vA3|7XNBM=0V>N2#dRQyg{x(u@jxfin9x0 z=~msgxV3zsUkNzS}^&)ja(at-sZsJP36NM@k-7tou&-bRJ{eVS1C zPa@&~K%5m{+?lNKe-wv?gs9LL zqVrJ}{(-{bJ3_q93BUQ7G*YvQosa zD44ta*!5-+u(t}n-$Ll~g{3WYZ$KPHDz9z63R9%Jgtj#+H*I#H(B8$07YhF1M3TK@ z4>TVUuD&K0%ahj#_HH&k8x_6iB|xl+Nn+OtWT zJHQEEiTKP+<725{z(=M6y?G&HR|!fmlR2O+_yVXhy45rcrW?xyAA7OSXc8HL8uwMf zomjc>9PdDoa;vlKASZaesc05p;E@9!bs|TG3T^;nrIwS@SZ-5@7Tsd;ssqGP#Po2k z0fZ_4GQc=c>6CvaCdNu#K&cF`n}LTAkCeX}Wjf_w3YvJz&nc`@v#sifvwC$AnOOO5 zKY_k);S~XrNco2nzpObW<=>xF!4cX_I^}P6cU7^1x5&zBw3Eq05^a z)-zNG?`t9D^TH%m%6kNAOR31VUIl+*b<~GZ3-b~LjTwUcycSMR0O4Dg5E>M93_3lo zzd$WT+!KX5Rf~K=OPa9{`xg})L)Km_k}1J2m5^qq3XbzE0@e+HEy>^xL?VyyQsiNE z6&e3RYpIHVYymIIE<1QhpV|O07KL~Y{%Sx z;#+2Eu8O?#0je>+GYGsJTNUl0C*{Dkq2ut)^q;Ae&X65S9WlAO3NT0gb)l4GJF2h# z7LRb>1mVKFQGc;gZOCO|nbuLy0I=Qs7BG0eqO4E_uhnG|?Uxb`TR6c>$rC;JFxI)t zGN5c&ik?VFL@C-%Z@pXta%>%rRH65%Eeh;p@e*Bnh6+8s2|`8xX<6h9l&R>O7NoN$ zN~rEuEy}Hc6xFEc%bIuGuUY{ftd)IGJ)zM}qbhm>u|>Xu2G$FtuiuntU^^W^6(u>G zeLh9^D9=^FEM1{&)ZY#&1fSid$Ee^M*w#@#iswyS;B_;BQCSn&<*!^MJ!~12O~FDJ zDFGHtHA4ln*GRHdtb*OxRxR?YqkySY4$3?~Xa|U+NasOT&t=ylM5*zVYN1G#vO2gK zSd=`nODU0kVGd=thL5GdV9>kGl3Z{+{UG^5a;YgRRlyuB`ME0CJ+0)EDOHl>LjiFV z={(8X631}Da;%Zw$Q92j7*yJ`Ud!$UDR%#iWkybBcU5pz$%C(kBbrGk}0|0G)2)2B@6H?hqZcGK3?dv3Z9!~67_ zb_wtpJ*BmjkutG62T6}7r(iRA>yFfT2n+?m91lI-;e9|2mgo8~H4Wr?Z9C|e% zqYPM=sGxY{aw+#>DC%2|aF8DK{OXkKI7I zi2quE0iFO-ZV7Oj7T{Rd&#n(k|0JGI3#HcPXKlf3me4k+|Cbxso0HFF#gD0-@}5RS zdO^N#1DA31i;Xbm@)M%MKW@zDQ3^Ytb$iuH&%|=gn0M(Xr{K3|5woBX0Zy~X*l$qk6Avju~GgAaQ5@lMTGvfk{+mk>)l&1>x86b`#sVC6w z#0hFAdoc_84`phXV60v5+U zL6#G4g(|TX8T%EJ3RNA_Rb@NjZ%M#P&Ed0E*He^KtOF^qg>{!;%}=PwR0->qK6kE^ zoJD1;Z}1c{yeFWHrZ_`Pab1GiJx{2jgfJa6IZh8iWsc$LZXb8MyhhTh4m(0u;#*ef z!76$q_URzA5Prio(SlOSr=*TXoUN=_CwrYa7 zgy#|(-elNN!czfBl~5m>!&&Pqy!v#molWZJFMAbYtFPvuz7{7O)ph8cJmIKjA(c%& z;dt+C3<~;$BPU@o`58ancrq;N9Z^C`Ep6!?-z(3;QAHKKm(rNlp9^ZtHm0aCxhgb~ zvb5OQ2yyF#I~$=lpJcgFaE z(;^y+d=bx<8pDp9lS~Xlu@cTJs_F-YJ+U ztJvMJtY_0$8R%p8Taa=$y_HqO$5An+4`$V;ZGo{|NQvkFQ z3q2>TtGM+aAh#9}>MAM#(Mt*mM~2bsJ$8CYu2l)!*l=-EEEocv>9mY4>;QXm^F$Z*4@4g@OpK1!VG5y?`pDN%>d?E>7> zWrMDNU3d~rG(S8MAM;jKe3LOx6z+``@w>??97ch3ZkXQ*UrCn8hb{vPZJNewG>;6; z18bB=SFF68Ow00B_$V>TZg`C+`jV?9GVE6ureQOl&1gI&wUX;mNh2OmFjb>kWvXoi zu_nYWL0y>YK#4l}l`(f^;cSS7|H}Sc7Y+geC6)YW zSPr0j6PR-d>RykA4A0=-SS955B;Rorn_-s)*)9++Qo%w<{+8V&-{PZCt(5<)%QY14 z@-(1`jlH!D@b|@#fgUgoZL%YLH-1(4D=+2NV64WP&d&nfJQ29@fF$`dtiE8UbU%|g zF^ZlH`rxjNGE8K%>Oyl~g6--;H{b&ye5+N@0mSnjSdeHnMS2)I&eO>px6csQt*Yko za`=hl!g>^R+$X^oOGXJkwtf zUMhAZAkNau$RQD^+%X~q&qTGP>nC*2k&{Ky1<-k`mu6IMDV>^*YJaP?t5a(GW_l~% z(hS+PNmJhjl&V;2eXjz_y{LK>K8vDAlgR$wLnvVe|EmErn#2I3H=KpOTDjX_`6YZ4 zl8$r2SI-48Z1*{9x$iXCOoi*p0BeyFgd1UVrUc=q|Hg9ru*2?Y@$|$@w7(R{rpD`3 z_}|I$wHC=sr#j)AOx=@P)V-`e@Cro4!yh&HKoh^vhIQ9E;R7CJ-D{k{I;u?Ff>P6Z z%K}#kWSJmfK**!%lT^FEKJc(+|CnZ9iJ%w>Jn4kH3i~Ba;02F;p)kAOWA-{_4ZoAD zQa9kBiQua#yO@WdAXq!aJMX~(!+Qb-hcag5s@R)XL!Xju^?~hLAn6rO>@xg{lr%Z9 zMGvvOS@l8s^}Xl13#L+t5M0_R*#=;IrvE4kg0|Mn7M6}pZY9JXdD^B z8u8YGjXB&>$#(l)&*QA4mT8~Ic}|S=yYerGOp^02T2Du` zr00WvBi}qjsD3NoJY2B;Z~5j{7%9EJ{}l86E`9GIlVpA83$@8N6P`7OPC`d+GXssa z7f0^$0LxPxx&8{&6Mhx0nc~PFp7fq)C zdv@e|?`L_6BOe0}*1YQw`Dq;aPBMfeFT2u~HJu~pP&CVtePAPw{C}8F{0!Rk?fa>4 z{ax+*Dw!m=?-N4J_WdLNJWZ&6%b(8|tpA%oXH(R){rB6+wBqm5_YI(?==-uz8-Mne z5r@;8`(XF)J2;u=UKdVcJ&=CEZ=b&#EnI)g9%l#^ID(;_T-9Ttf&+~iLpNUzsiTk5 z-;)o=)Sw_ao6_qd2=gN;I9ccinHLdrSF5tqvE!#glT0C}Nppnx0$rodBN3@55*iw4 z}pikV@NfNJBbP0xYP-w=@#7!_hSUfJ_xFu>|^g z0t6a>0oDe7A;9cp;5z`y!O0)$AOxQV9&VIpWI_O13WUT;o*sb`ZsbkTIQ2uC<8$W- zdb~xrVuzUqPL(Fn$n!j)$>H=aPCGi4HknA~f<)$)t^4Oxyf{aWQ=T*#rmvd9?`Q%XVvS*%sG>XRXUToD z5d3h^_0>|L8v_KIl|5-+loah?8a@m*^$)G_cM5F6zcs2#Dyir|?<|=IKg)JX*5E_u zb#kgXhue@vJKWdCfqm6AU`|GUFj9f_kf~}0Kt)@McJQaeA3d{5<@w6VpiqHzDsxFB zP>Dxv2B}x2y6{oPix>^2k?p7ooDGeGRiKj2HJIeFV>Pah6ZwT|RE66M1)Tb|R--D5 zd%Z}JlxXe0NxuJHrQB~Xvs9`&je6{WoF^MOmtId(hoA8*32AFUp<>6|GNA`PK|XcL zv{J7?bJ_lp=DD?OOi94qk0Eh#6uJjogs?~ zi!=OV312tw@0G$764SVMY=A(qU#=@s#pPg;A3MT zHaqZQ745@17Wrnv)RsprA%-c-Nh!MxWps-ERMG6-D^ZWUXQ32E9KWYVyjZAlcml_; zo9TSUVa@;?3l^PK^lXtR#mAv>wwUT*!Sh!h1zr2~x`(R!Z_34A6%uo`h<0(c<3`&s zn(bkXR`nhh=EUj}1O1(%J%$WBmkYg!nJjklCrFGw`URNDgz-+O%~`=>bToOsVao_Mk0I!;LX)56uy6!u zoJE&T0iM-~8-eT5Jrt))4gQ}mYk_KPu1g zgX8O6oi>oLa!c8Mkt%v^Llr_G4q-06V+lB|j@&~-sqkyh;TK&Ht#>g6iM{>2K=kO} zy)g2tdj^FSCMxtJs8#eu;uu2|NGS(MJ3xl2fRZM^k>{{=fc)YTvSpW}%lw;5z&g9h z1Sqo8gh>9-U6KOREvrDs5ZQgP3cpK1N_Fm}+nN{-FyP+UKG>h?#mi|2mQO`F0u-yh z`p(F&Y7fFHaV8LWvBd3ei(EzjZ|DlSoq0Z7#1s6n_3Wda(Bo)oXHf$i{B~MJ-5mV} zrqB3h_a{zhEx?V((%?>LGf^PTP%y0*^P&&?8a_m8I-!4{P(}Y?wS^NBo*;O7I1MMf z)3nC|DW%!!0%377&m+7ct%(@M13ZsN_Jo1JNaqRNg*VNp!!jc;!mu<@aAs-5tIZ}4vo{#l7EZVGt&8E9RSOTAj0NTrqOMs8$i zQc~;P3x_?JTR~0_jBf&av%dI*j#u=$XM+K^7Os0*qjUMaJ7CBJI;ijs2`Jr5syrB_ z4ezi$<8>gcP$Hd=_h!c z9dM_*9VaQ45pFisUHW$#;V{w~BV3IV6+4HJ-(iIQ!2TUZ=wr0nvk~~}6?eyAZG?_! z8X0roQJ(^)jnFv(MI&gBswG9j2xoiNgApD_k!OT_z@6&+iOEI?o9aeBK_ldm))-+b zN^st+CZW!vXDrH2FAw7J|;}rB$ zw3#Pp?L}fSK6q1xgBiyO!e3aI(c~c@V5d{p?hV=WVfw9GMRHu#Q=!6LHE;a&NGECD z;csCcF9R4X?2b%k=bk~#K&3srho6I#dmrAjgg+ja*gx{>HBho>Z3DG8V?0+SB0nMX z<_ZRXAkOcn0u>w(AHEPuaSpUhsbef#iRfw3p zF$ZT@oQ20sz%Q#m{`^-;{;MbXYPNw{a`^;B7=R85)@20W_eC~Gnvd8O+=Z0^N)UNn z>9v-SCyAl@I~j(~^29@bxPuT!ys2%klIF7g?8T6GAY)Qy3-|jwb>J|dFXbB!dWQRF z0Cr+aFGFE`l|&9^pUMhimuo7|)!ZWiO-fsXP2Qon@+>^Vg2%vaCoeSXbf6a1G+YcL z*9V&Epep!RBLpWF?++3QfMLQaJyrn+SB((>c^)6<%PVrL50SQ6y7_J=p+|_jFdh-P368tFI5#0T5 z=@pnR|CuI)kW9dx;ESlR@tk0Jldtr273_iSbEPu4W@Nf-^9A&U;ZQR9@ox57`k(t2 z5F&MrIZp63BYO{#9XAjmQp&dfgQ#BxFC|w!Y`AxV$U1f>gOoXS5h-7+1G5{EF6o2^ zUK%Gvt$MaFLiFPx9}wlZIK|8Qo$~vsm&^~OfRCUoKtbfA`T#q$&k5Y^X^#w(5ch8Q z+e8Rk;9prIWu^49#ZJXY)(l@52XTvbG@hqGi=UP3LxHM zL#d21`?8w9{DLmI3b{!YTZ+@}OngR4Dn0TaQ^+$ta_pJD&4U!i2bxMy>8eOc1e zd!8)QMkMSYVgq^*of-Y{U6PGN2FsC(-BkyM%)&^$`v}=2a)!9CenSshP5G~QV4W-%W@4Cw0@$K0M;Kv2o{;r$-p_O3c@49-{sQ?Yl z_ILc(cmC09zVi=%9rauQK}G^FTsdD;v0)cv0*V23Gi2X9hL5E-cK3JPgwI)>H7Ur3 zgS_1ZSt+D`O?e+FJE&ku!Vlwd?3QyG8auIZ)n6?axt4G>Bmp4>=H)(j3`!cW0p}9d zIclB1>-t&8pkkPD_`-`f(R^z zD?}=?aXGtN`w_vmle@a|jK|HXqKrSNA17IKg zyC6$|IRb=9asq{5)4#B@Dk*^PcJ#X9qH{O~j7-x9;bgmD5t8N#sW?ZDeAQ7!Cjo=O zL8)y(^?KG>fMCh;Jr(?!P@d5B=E$1l2qNr?e49K&n%ndwO^biN(UGzW71~+?YQ26d z$!@4}@ABw#^tES$xdhzr5NPcLG&GOmn2vo9(exHnbPY~+?0sQ=x?nTC;=0pcz}V!Z zGXQ!%14arhYoe#Nlij6yNzthZ>IX1TX|h(L>(vQKX3-lP2f%z>nOcT0sw&2NBBDS2 z7e(kmaF3h->^^dpf9Mu`pIYhf`r)iL=sUAd#9G}^{*J_WWC~dO2e0#YeAho1-RpR&{5*g=JE6Uqh2oPm%{M0ag5n_d~0(HndiWaw6UgYQ>}fSguF`uMa8&Q_^H z)6b)`NeWMAOY)oc(1${qwD&SrgT{)Exc4{wrf7@XgUEQg)L;1s#IR;EW+ygf9!uU9`P^de!)W|cWpyiIQfV_Z+L zh3VTwwx}_KHsB_EQt&EjFq47;-BVTQt9y)f%5yk?^#`|kt6(aetvy<{!XLa72t1bX zEip|fFh>*efgP+ZFb5K?6ae9;1awN>Ln1R~yZveTX1#*N!OUxVeCm|+Kg1AoSJB*z zl@A#CI7B^)V)!7Q#(yLMB{7h({)JK%d_1W{R>tgV1ak~9k*nq>Tvc*?e|E z+(7i@f7MLV&Lgqma3BNo~ATY9*X#Y0>fgkJj>^=6#onU?JlBn z!l=2R<-RNyRScH(t*FyLSm z2AeV)_c1|K1z!RZn`9IIlptq8x?(aD(}COrOjR$Foe2@_usixtw38QWz3DUC0jUqj zBC8Wv774r(SydmXf$O%a57ctNaDuI{6wWi?!4u`nx=0zWm;6^Tcm(cGIoTb={1o6P zo#2JnuzX3R&`-XQtKAysy>-G zf39MqEH8`k714g+5*rb5LD&T<I|6i8^oNxX+?Vw#py(2Q@GVAwA5Rs!V@4rMOj7xYg#xjob<1t!7Xy~mWFh;C_*`& zroa=$lfkR8mx@hISc;<$RPnj{0c#HmHJ^^6*i}Z5G`+}p=^Eg9*}T6)AF~Ivhx;JK zgKUUoI_f)Fws#05J3(j-pka5qyB>|m7pbu5swoY z@FuSJJ|Kh zgm0aVL@ji|Hc8k@wqX{B6n$7=yNb>P2bn@~BE_|aI5&0-_(HDCFWV(^U4x78`id9Q z6VGN(7+7fa607f+Uh>~w9M;)SZiR2DemGn@8&%VfEo3hU8~2HTC}99w{U5U(Fx;r&}-A;xdR@?>FoBkcwkAj?8Pp2a0jtAe!ylct?|4R{P1 zG;-sw9x7lpFo1lRS}LjTp14%#`%JlV!UM`fvgcz*idkcZDbTec<@ zlH2yGU!IDdya1J0g-@Zd@lUu;rp}iUtkuW0Ilf4D-rM_Xo}@x)&)46I60?qu(f}9kBYlYu-uee)Eb(gRhsV~>jjL4is zS~Z^PVdP*fd!{QHBQ78OHuq*J~oqalYN1$R3;%969kI>^8G1nRlL5(Q2Y!! zk75(ba3K?2(`xE}3Us8U=Mq4e$c>jeZ4QeBHXR>~F0n@|J0vr+_tb%zdB^_B?un#3OUFl#ztP79D4|H;ZP`u3` znmZ%@b26y0FkDmG9jgagJv%emigJWv1gU842YRl&9btDB{*`QNJkVsLjLa;SWs`Oc z&g~GGdHOyVmS=$6^Y}W65)d`dYPO32M4+u)%RoCO6D!Jxt5B^LJqtY>*}5b>r)%-N zv=}jc4UqN_k!ha%LU(5m>C#t8rR%lIUh0nOeC~TdP&Z~`{)I~OJ=fu;l4O?d8kAeZ z(=ruWXDZ!8Is=cpi8Lu|f;##jVXRfU@l21rnDsLxA-O4Zj2{?(K80X>gl`)zlr_V%GpmRaX*sa3bigM;Rht$7G6^g+g$x0R1qb z;fFmn^bJxm0KKT_WhHTy-=42!H7buI1EX@$%|kiLnp-)#gF=>ELQ+Tr$Oev1dJh(U zUN(sNjp~!*JqpC>FVJ=GXPV5l824#R>b#{9!Ou+K@BOh3b{Mje$2wlL*dXf6ZQ@px z8Gy{RdndC@PP>=F6zr#*k(4m)N}9f!$@qm}s3+s!VaQXF^8G;Gtvo4A!Yq3sKyxdPhPb&JrD>f?E0WZBGl4-oV&FD6W(5;qeorDmDiEJp!q zrYctN&xS&%Pe&w2Dv!(QJ&0uOd>&;EOU2ClO*$zfLJompv;@P zQRYUeV>NANI@AurReb^i{#hXKxm%@Vi)D*{0m3=DdOaCk+WRS~;A^Sit>ki_Z){)J z5q7p|uP3{NX@{}WBH?n8aJk;9`U2tx7OUc6k-%*#7(9iZ^Dx)h7O3ENg1#Y9saqhG zg^5*iziOv&6&;M*Q>jPEa}M6sQ+_u-`0^ZCLr{SQ=n2?py$v6d8DM8z=T`+{jJHlm zl65d;tpZF1wZ`u!D%S?=)7QO=0Z%6jEyy zMKy0t1Sc-2L0lQ`=tD4B=XYBri!qjBEbB^TcD6A5dw?^uN$zKlft~vXilm=yf%5eE z$Jl+BBz51?LTd@P02Rq@!(7%lhny45UrN}Cl;V8cl=-o?r%rhgy)Pg#o+V-s@v?S? zM{kiF6Xgp^@kTMo?}bOsh4RR6K&gsOt&{@k(yawJC>i)w7h(=h25uJMuw-DZ07oVR zpAq2LWZ<0w9G?uV65ym{;0yuINCu7&;FM%wF@Q4te}u^jr~lVdHHj}W{XZTEDGUDI zK#MVT<{(^x64C^TxPKgN-_#ivh?TO?#D)(9GAWpVtO0}>m-eQtL8QBZSmCpY#i)wL zdJqt6NXzcZB|-tYW|vrD|`A%i_$Q;`Ssw*ff{C9+ng> zSOb3I_L8D)qMsg3aqJa@V6CY%{lI|Eru9pXv+IsWWommuf=<7>%K(E9%PAvPbv1DY z%t#S*hPwdpbn?llQH4TFK8_r}fB1Mz6KgA=UZdIXA3lCKuBBR^0A{Oo7je+Pf-bG= z&A-sUmazc+%WfF=Ap(Oxqg9luNSMo+UFyywA>}%hTc&tS1-BW6(!>^oae7?5 zxeDNo@$iDiY0t{6#(B4s(PDdw7T==4TN6fdT2vzmPvR=U;;vAPOOb=H zlE%{p=Vdh>jE5l;nz|2wAvcy)@koQyFT3$rb@5;oJB9ruk!E6YR8s3+1$-|3)Pm@r zoG;a?;z^i>U7#)=t75%0Ngk$Iv4w94X1H2DM`G%Q)WTZiqQfK3=N_R=kyEiK?>x7V z`k@2tKM_;3iG1i4=k##I`5B7LAp%j@%%OhlD5wx7u)VP@ao3PYghT!2hfMjxMwZxJ zBFmUH^?~(1-~Iil5|)fkg4FcnG@fX}#PzHzu|~xlaRI~@J7aSCXgTa0eXBw|P6GG2 zAixS3ySs@{rxJqLAKgN43%v!BiW{%-m9{eoFhw@AtVVwlpbyh8o#pH}mOMYUcy1>I z!6y2d1$+xY;f$-gSqm=0v`U|C!Q?(+f`I--0!`Q1r;mG+SJ;>+bf*#+>eofA2FtYz zEP(lBDY9f9ewH*7hHC)fcK%8p?orXzmT|g(J~HHctll8d3|FCQ@@C^E0%1N-;0J76 zoOu}*I%OT5iA+_#MTXQy0yU{3OZe!ODsoQA zlk{4;`?zDn~C9jl@n zKuLRY-G&`BbiCL!CwhW>^5{|WDzwQelRIb-oK3?}!T=?V+jKGcL;7KX+Te{NeR`J^ zKPy9Ln)bU}T`(4cCG=QK!`}}LY{SR(XiYuRbg#xjz@s~9a??zk0hwFNPHA0elw&$* zc~;$kYcf>mk{iU)l4hOvlU3+H=qQZP%*3L?{LSmobry{#h1IH8qYN|H&dC%bg+g$( zIP5>Nk#iPG%(|$zz-r5cn(GoZ$EmW(FLZID#QpD4RQNQJ>0g9fGJS+HEt5^LMkoX~ zArs7lSu;u!GRcVHrCs5krcRx3xj~?EC1TYaZ60$FcnZKfaTGesS2|F|9=R5lsy;nM zsorzqY54Pz!fR79uYUuoVuG8jVdE39wX6qB z`lIUslW3qvz&L4HVdNiWGm>mZr?MF&Y(%g*363cX8*@nd?hy$Il7{r~l-V$LtOD%SCOHo~T3B%HNEr#d$)rBg{@cutT9UXvid9}pg3zMl*dFDPJRRS`M-uoUod zF+IgW!4xTYObYVsf{UbJ9oXw7*-F424#5 zg@&KeLhmmMsP_`EWKd3%AIF`dfL#%tDok>kz!Jh^>otYm zS%4yU0*W1{wp3uNU~EjmxJLMGO0Fpb7I8;Q$<~w-a_TQ7+tQRACncUKRiJ>DJ_ta| zn!U;5^}{tx1qyY(m~|?_F92Lue6nwTAb(zQ59~0ERN+$5)kSTpdOPdn3PUOOEaHxU z1S_|XXKp$KScyaM(_I9f=vrD@Z5hlED+mpDGmVbpnUwTON`=E2@mvZU~!`Bd#WBH$h~pw)6(ixBJ-7w-`@!7xf-yTrRYfJ z_}^hbNV^(#hP#n)0#75pF~Uj!sV}Dcv=%MumI3As zI>~GNsO-zDlPbH>tE{t9lM{U7mLDUPqVN_=l5;)a8)RlA=>ec6361YIwr?p(XGswt zNu#k4h75RJq|W^g*h=k}s3_;a_YyLAd6nKE73J$qa7?r!t9ipDK^`SP{xfy z#ZtAKoAJgvhX_@BU4`y`=xG@Om5U_}-q(Mj4LW#y0p(Z&+23P9@F-m%t2?!VdMqKD znC6na?1>h*iv{=iB;4$iPTC;zuaoefJF5lFc%eBVLE~Ns2;x#k`W<`hndQYjS!6zv z9AaY={UqL?S(=k?{^;&1Jl0TA&9Cuvcg0UW+|3m0k0w;r<4J90OK$=JnHNS2n`{}N zDkiw4Xbxk{2Lbgug2!)C3cnjPKMcY)ze&Q6xQ$Pv3we7+c$hT;VXaI;JFk1H)TDQd zB&E?_&U0r|AwL{3+{Wv8;_mLBq=ue{gIilw-GiThQPo}ec_Kb(68a)8W`j1oTTGlR z#TQrQQSDCCKvZ3%tr+*kM^MJ>_7RrG4xJu%6ITgU4_!svSY-me*1{Vnke(jjgfE`U zg7E3OKz#93LG4ROiZ34C0ykT514+2azWAR*Qu%KpB=#ePv)cEcE%25I-Z=^0?!ACm z{u;mEaQ=`SwB5Wx-Bo0@)la7jx;_AAwYp+BK{VIR9q(v;1v{}xs8_+q%*VSj%ChDa zp8`ic0{4iKKXa(-gBKXuU&>R>1%N!&L9U0h2UCeF-`_FG4Fz%RG-d? z89_JitA9nG9^QA=r?>YN;FG=Ys?VwN73Qb8#p*eBdUX3itV&xQ7@$2x2&}mTmaR5n zLl=r&36)GZSO_|7p@g#0BNB}nS?ykj0u^ndVN#xE8%vVFRuyfw`o(!f4>b$_Jn}O9 zPZBoy2}s;e4&4JqhERN;;2jT;U*uAxoBskGGSoSlco{|{uq`1v)AL%OL^ec5@ewo? z>IOyevWNsL_hFVp-Jc2LLy~ksy(5jW+2>ZWijdEEwl3i!-AXM4wnQ%zjLZavJ4he} zP?6J;ZCu{K;u4lO3S^lkFKJdLEyuAP43Q4VUTa4gpxO$XEU#0QZ>3*-|7Vd0o@gX> zKLx}}L#2K75lRHs&IVDBkGSRYJO6R3xr)~8J^?zeGBxw5JUo1MH5O2({S#ki=7Emw zGtx}=FyfR0S-$}$etKRi(uZ?U(Q3L7b&>Z%xFx_RJN#RNg#J149JwlGR4HAled64VuEZh+c2k@cI1KT_q0$4ZGf?-n$F(4Di79%C=6IP_>?n_yQ zY{fxF6@DMJ(3jTJmoU$@eJRKGFmEA{vde@s*`;1;M_pE0+C2;ir!mRT{7sSc6V2L0 z<~KF5NX(2D%*r6#*?5O@gyqORdd4KUSxlhr&6;EHJs11lB{H%`wCjybBfHu&7-!v zPXMxc)HWOuJr9v>BOax-nnU-pFZ>A?@gdUw|KTDF!Bd4@%T9Ay3tVK1y_Ma^cu4Hr zTv$U#Ux~5df6?r88J&{%6B)VEufiXph%(Y}W~sdZ_QRxsQ21_|^E5gih`TY@Z``jB zV94uZmU+z%Skn2UbrXybdi-7i0*ng=$T<2WAbdlsch)E|d*>D9BJD&*Ud&R%(eav@ znWfGKDUbHxQE|TR>noO;h;lKD5{p4{)FhjAhofHIh$!6%i50`~Ji5b4S1emwbT$ky z@tO1+`)lh<7L<~vaQ=(qheulyYy`R*kev)%NgkYdzsgaL6YrvAl^zB{!WI(QJ$NR0p(h1A3u{*#$$DeMHCr#Qa*GA}AvqWebvNV_h{-HfM=Cd;a5$MhiVQs^ zSxIWsjx-n@OSkENvQcAnJiX1zur?AJnq+*CE&We{OtBzK07fFkEP}1f4?_=kU=0obo}r zTDTv1S!v~dz?8HyxY}}^ANE5nN^q?d|6@Qc(goZpX~O1P+tM+5Sdf1Kf{uz4(s&|}H_@u#VM10$+gjf901&xN=mSpj^PxP; zXa>s{UfaE!$C|ewrm5hwtcN9N+slN!Y`-Gh7P!&Z@CG8Z3ch^+1nkCMFqs{@9?dSv z)TPq>Np=Ljso>_(V1#Ej;v7xC+h5fA0rENvPd^kmR?qk*iyYlN`jonql5h>6Kh^+n zj?4+}pD(gW3^LDbtONy&0~d7`?w`W#A>l?zW7309w|Z+BWvAobG2hjANvv1kJTELj zFbT!~!2OxNPOI>qZCce^mWO`l#p|?f-9u_~mr3E5l-=qNc`U@jm{${p$^`863>ZC0 zgykXvYWaL0h~PtU3lTuO28CK}yO!qwWi90}ZnEihf4)_y%At-UhyU4QEMsDP%3ec1 zy#ja$U?(dzm#QZmiWoq^{eQr~y8J|x;Z~!=*e(dEPXO9@p$cplzEaf16vbF|+!g30 zZ2+O8IlhoYnd7F9pN9jTH_&K^pW9HAD(z(4BVfIf zUwn!Z4n{pK$9Yj@X>4``kW;KkQmMI#C71d_9x8ko`D|y~tLc5H8!<$+gBow2RHzA1cQ&PH%dxo&kgNUrvq#uAd;Rg+L z(;g+X1s3fxCcg2U$U8_H${&t68|{5bqAP4@4M#y@I22EP%_DqpVUAjq*%o*Q%EFBm za2_S@03a4x3~m)*eloBeK*=EGibQ6R-AKZg(l3>`3>XI*ja?{>p%l3%-YIli(25)+Zzj=aC@2zLqu4}n#tT_$hHbY!v%MSyd_uTSzIU{etjDo3uwyAYyUdHycz_BYJ;Im*+glfs$ZOw)(9ASS zN5a803Mnuu^ibh0#(*a0ITQ%kr_ijl+rYAT+l`QYy*tC#IDib^z&EyC#>EMRR{{ow zPtXc?`m?shOw@e;U{iA~6;9OL z@T;!5mffCyh??I8OsO>*f||FrOI!2PK(lJLFYmb6t3;1`m1G#b6CyZ^9^4PitVDDY z%Fw;6i$J`aJL30uBz8v_F?OkW8649~epVIjU{7m{%n9sbBeWNmrI~eoIzvD`Y$TQ@ zuwcK^^BGCj*gN21KKH|4Am#uBZ7Ybx3v0Z>lW0lf27d>TqhV?X8$~$R3YIfxVWdBk zRIsm!^w$6(5$Vn1i?s%0ws*MvQ-(F49K$B;8ox1YiYOGL_PmP{LLJP?(?snxKihRC z&2L{~>`WY5GG6%x2-F1yD)cgI^+FdM7A)&aey1TVv=rpwNzJJsy_WT=kODV7 z2Iy5CC|WE9r&uC(2gKTGO!zjQ^v{{Qa$%p=ys~|FX`U1QtO(p$Pnb~F6Qg;;9neEn zEJm2uu(D?eVVk)v<0W9ZvKYVmzv*3Pj9U8B1z;3DZxGqt$M9yXv;ZX7KOn?2KLYV} zfHLg1#2+j8kEYf;T#0D^3jm7;v5H1=)Kv@b}0h z-S=?iKc0%x62?=A8bZSb3Ar2Z_8NJh=Rx6t^q}gJgn{RiDq7E&SkB`X+J(}2DCGb~1iy2;I)W#NiaBArOf`g~Lhkc!99Kl=QLSwX4ULy7ZP}ESQ0G|=A zdpu5WtcT$G4qNmBC3g?NI?2Z#?*l0pM6kODJAUEu)pPipq-quV>}MpCSt>+hdVyD! zuVa&p0Sf0CZ8@9aN&C(jPG~=7OEBSslq-6lZXE4IAn7bsmX>0eWSEZpsIJY&S>R$7 zx|&|7;T*p0hO69jaKhBt&j_gX*QmTRAj+NWfwbs)rZDNsQT*~sL@^J0@G z{f*^J8#id(#oV_L81e(saJx8!&|?P@N35La@vOqA+}J+R5uIo+tHkgxPQ$-pfH1v? zaRV#Ap)X9Qqh$^TK3_KHbwt8i5rz(Rruc=Oow?sqJHa)B!h3*p0`5+#1B=L%9v)!U zftR9~tZeoV0j6^%&aNA~s(Zz#Nn+h775zk}Ruq^_C?DtAZ5Ke|K`5Y`jAM65<0cK$ zxbPV7zmeQR_b`x%HMCjQC!1wA-r^GZF-dYvG#dzov08SRw@{L7m{$Sm1Y9wU37hO1 zW}WU{A!yA^+$d-)R>gu9+Rdb)jG?CrL6SwF_)vlBxOiTQEA~PeHJA<`Z+SUWs18E| zFJ}scyV5Vb%bCp7_|0aB5jqy0VqM5Y=lC22-U=PYG;g{Ue=%=Y4r@cQt)#?#4kXBd zLjK)!_xEtQnS$be_SL@P)_%h%laS1AT zH6EaXPx13l*xor;cuQ(_8Tkeuw;+S0rhKKQQUoJZF95sM_+P5=G8-=i(PvFY)CV>( zbUH&e;m}KcU>m;U3dijnsGMLadJ>&NJf0u|%otz@C{ z(Fk_yiHnM`Nh92ix(k&-9t151b?t%5G|Ni({P!;7%%<$81!q2p8##o>U7{!;0vo=2gD zak2D}njU&``T@Dub4M;+#~ zJSLFUz;2J7%x{o^;(C;G80!+#On2LVGJGq60k`m1R^n4vp;XZx2%bq0ln(WfPu~Ob zO+ZFxKhDGJxd*&UfXCNHmbF>Ql#VYW!7ZpFth2BS6|zL`B23GMslY45dj6ii92g#9 zP|(o?ol9@;wFahAw^QXrFh?oR3fNmldg}OY1A;*vZ}xjd&Cp#dC%8MKtgBK-oP{bD z-jQOvhe3e2b3W#5>Z}~4Sl);ySv2-NDcG|#c7ca2<)s)$EY&Uqj^o`&qvKCGbV#|| z_6h-+3jj3MP=Ku4#l7(%9!z?FB@>Wf_x@rf$JmIOIXSel6cy81iNi6!3tW_-$r zwM~3-ya=POac(6ga_K~{E+3JTE+w(Yg=i*nrPh}|e!VKXcrjmiJRzWbGYkl*TG%E+ zn)kxM5lE6NZtRRrGLG=La}vF&Jvt}+G49fc`G5H$!`JXIF@kUFA{h!=1B|A@mhIG^ zu;p`La_Q&)hWe^qZ@Tuobnxe$CV0uoNS)%3gYcQ7R|T&@@Fr;PIVu<-t`=f&e45xA zk;HX?&s_}>l6jgLn92ahb~dE=5Ixp|jv@EpvlgTT5G&D@ zP2nG9Q%E)&Kc_$zo9=&ZK!sXgjoJ5 zc2|lSa`2p8VMcv1eL)V7#-B})u;~)acSp$~*_>VpQJw*Z;|F9Nk8`pmIX&0RY>(4Z zI7qu_>=}ZiH$pJ1gn^e>aF@2yqtS4=@iAYOq+__kySJDU`TUT7bMn51H`z5ynp>dMYiMaC(OxrO1fH-NCa6KL1hLZ` z9zIzYs*AIo>{dO0oVibAbptaubv}f}BSfY9c6u9norSp@9(-tuOsK*ATh0J~a9eZa zlTLWu+4jgfRa_7mRjbshb^16`zNypZj8(0%6jrizB~shn z?gVg*d_a9yH}HiS{UYBs{0*OY>lIFhU}_;JC^2W+=5>=Q?NeyT4GlaUQ1wpfJCRZA z+2I4*X-9Ml1?_c5z?$!S?l4W_WS$f$+eoHmo47QfKs6G>7990tjnSe)p0Y!6J6-&2 z23+#+;z-#htOlODJFs;?x3#^>*Ws;z{+r|#ma7{(MZRl1TH!{g3ePg}#%n#wb!UAn zM((uw*$h37x0;uwCe&bAS^4mOn9?@x6Ew&sXTta1!vaYW4$g^A5Zh#Rf}_Ba-ZV2? z^((*wAEzX`X_gc<3B1yRH-7|@)kV8|espyk=Z1_cY0MblWcOOeM(O#@?2a;0 z^15BvvWd3L*wtDeRB8hkgz?|*^iii@>FIlm8SAoChSYj)TfguGxF3#r3EZXQRcm^fT4Nz^4LRHOYRSePPvOcxlc>3{+~cd$nC8Y z^1ZthM4a3_gqO5I!;uo56!$+0eSG|vfC%brQ0vnNJlBUXXP9_9ewz5q^u%w$r+@P; z+^sEI=}VoZ?s&E^g99nE1=rgy*KhK9dyBTWzw#;u*ipF*!3iT%K=&%(VBl{T!DB{< zP>2)(HpOV<68em5aUMHVeKD5@z#|XHe~ygWr1XKwJVEZ*c&HPu>xqFuF9{LVZG_ZF z25>J4ws%x)J7qI@z=^07w?ikKnKs5wq0h~u$O#e8ChW}*G>k}t0PxO%y##nV?i&eD z%l&1;NsE~^klbfj+y`6ShY9!IkUClRS;Ac`ZL}Gm%ylHW{)I63Zs(*JI8fScw7Y`( zBPkivvF9eNc!ak0&n_{y;d4TNMT^Q}`OWRv z_}*eUSI!>ZtXKcwj7;Jlp-IgtA2zvXzS%%i1O6Xr*8(3!k@T}6XpqPT4>c%iPU8tD zYNB`t5;Z(FJcFP_KndaB&J9cl&?v1@ zmCNA14LGC98EjFEPz|;8r_G$q!yWNDvpE{|FY_uF8Mpo=bufWF`)gUsw;b<(1Dv!S z?|)3NT=7pm)K^;Xvv>H6$+Yf$b|EM{Ev>->D^8>vH>FFPMY>-E0!K8oU4B8%(XO9T z2bR?bmIDGEsKF0}#FIq_R+*t%KZUf~C|$>FMI3jm>>m9{M_l+PVy5Jf@vEsB?nv>! zArk7T7UZFPU+8&9i1FtiPHaHp!PSDL<$+WJ^u>b_kwIuB4X?CAwagbK%a*+#QoKMc zcIdSk@8}8I&El~LLnc|rNUL%?rmcAFe;}P$JXUId0#ImG>|*EzhImG z#3{rtv)HWScT^C4HOo%!MDg!313!ub(2pKZM#p%g58}61zG;A1E7|Ud?tNAVJDLI7 z+or;ujc3dbbU_5JGa>fqeFwZozY9<<+}XEtL}zW0+LEMo6pQ}1526Yy-}`Azp3?8F z;485_SIFSBB~KypD2X`HrxXFrmfE&Foe2tu`6c~<>$;xDVOqyI?7PnLQ0e)WDq#*J zS=%?+eRlTK_IAY@O}3or*IrFaZ@kknp{3i5(jBpn#4(tvLJxh+nO1`jhv82Q^=kaU zOnV6bB1@PVx;u?Sz1}F@#PbzhTCQWV z$QC|FHH6_tH6+~_j5POceSd|n!RiT0iO1_0kzHHkB}D!Mp5w;r6A@w}{okBW|0^jJ z>i>j}iS++{N+I0{?6cluTZf?Y2Y~0%`Fn&TTjyhONj$^TUTdGyS7s}vfsC9QYcU1{A;0V8C8GlD?ra4tR3`QNDi%&kkyicRCg8=!K#vAo2^tMZ>Q zT8JJPzJ^`+&2c~lo3W3LKWZKGvp!!6h2@vnQELrq;(1SvQM$^W8ufv7oH))QYv|1n zIe#9H|EAs_#Zx_NhQ7ul6yt4vRj+6r?j)GM4X39h+*&1&dJ4J+okmZ1W^F&60L72IA@acP^YPI z2OV36c5G2&c^p{cB##3AiHf0Bz4WzH3{DoKN-{X{p6#u7*=H;x;--ICn(h`q{b$Hf zc5|jb%}87JRYqwYI~9N4DIjE30di?>kj5we;|`^L$`PDvoGlPFCCX!+t@Djr7!e@FXktM+l*i{ zKRIJ#LO=O`)F1lE9qp+<>k+JSjdVxw;rL1HQ_|RaV8`sS{E}C6wvNUi``=jEf}`{= z9g@k9vB?%)KOVOs zq5r&5CL8?cV^}X?{fKN>Re^opRpjQkv1W|0EoW*uYex6l@H%PP@skoT?&4pH#53=P z-c6mgeJ>s;m)((pv@HYQEj9+HVj{TC7u)cMZ>+Nw&sm?_%X!?7(l%Gr{V~CE?SGsF z*!w7ms#qFT?2z=U>-vQH^`xU;wY&=xuV4RM>(Q@g*>p4g`VkUsUB6t))t0>weR>2G z6YJC6C~4bX2$3QZ@#@o1shvQd>fUW#pQ@8v)TgR7(5H*pR%`l{AuT7?C*Lf*$o(Jm z=|&7v+v}?lf|Wp@LMVvpQzz=vhQ>qEs5Qt+kYHuMz|p7|eF-#b+-i?TUBSkiY1EUD zY3mxbp~0n7hi$KNK|is6or;n})URLBlQ{kQ2B7Gwn2y(392Bo>UB7PRO_s#=syn_r zZGFzRTGOv((sE+`N}jd-*Z)PoItgtAd0Mqs--1sGJH&4oPb2SfE;0F#6zux96DnBL zCEnY_@;H~c?=6pl?FU=U6|5hitt(h8Y?X))~}RV+YkIN`t>|UtZn;MEm$u5Wru#9 zeOIEuU*!`!^}efegZ$#`yHsU|H55pE{IBvIv0bao%4xr{+!g<`Q}8{s64Dw4R@5*% z;*PAZ{3d@Ngdn{Fb?+KXNc4%%6YU35ND~7QQ(vL+8F?G0?600#zj)JkB znxc&5U1Kx`g9aD#o|s=d0JY&cB>$R=Ruk*zsVF%_{rr`Tc=hv}C>y#bG5c4aP(SZ* z)@$G57E-f#-`OiTllO7|YHyCZ0b;!`0*H(Exz}#b3KzDn%Gy-~%C8>FUS|rDB$QmF zBEvFbQr%rEol%j=F5ssGBGjQrkKw>6VA#3`;HZrFy1TXYvEKiH@5J(c2_;clWuQ)a z&VCyAO>)b z>EIEV86MKWS-Rc~-!8vwvZu6K`r=zqi(q{0Biv}mKEmUErrInr3Y^G?JxhPY^#|jX zsbs981plIy{`D2SH_MKj;fry!Ysk%8GyJj8C^G})5-7p(&Jxt-rYcZn2IhzWq>mU2 z>tPfXV|!kV5AvDv!9bizKhBa_QVHFkYn@BA8P;6|GZ2&RY*vsD8i@yH;Frc@Yyjgl zFcss79N1AdJv}LyE8&+69Oq_w1wESm(Pwy827bqdy~s(ff#?Moi1^=_njROq8H*v( zQSs<@Fu+m6ck~{CD4fWt>|ym8`jz_jC$*izVl~YpxOTc4jUlVQu#o8%B zI}NqO3hW|BI&Q*?@2Hk;SC{L(B*US$?z72sc9AIunZ{DyYYk;ngd7KKoxgt_-NT7* zsFw@4l|TprmpKFv5t|%{T64xLP*EYwCDk+RU3U_gvHq_=p(FkXnI;w5b69z!7Q8i7jfI~ zQng&E|DRZW>-U6=$nbi{ul@y9y8?p};wB~!YEHLF{wmnj}ogr;!GzGij@eF3UzdQ>((7X?aOdF6m z-QmGs@ioT<>o6WTb!ViJ76RF_YN4XywY8Hiahn{I8F#|H4C;mOUSOTqKlC;1 zF02nc3u<}x!xK~eEL0bps-IBhgBDCSTnI4nG|OI|z5+Rs%eg#e2VLVMU< z=`$u+D}BD2blB%?>2rpficg2=K65mUg0lJm#}j?7(tZ9NA1W5iG1WNX?j9pJ*DQF@ z;p_Be?DHdLpv>uWXSQHJamrSvP&Frlc74Sp{3|`LxK95Dk)CiQ$eUcKm}(kZFvTao zQUVC2@H&?UrVw!2{0HPLvdA_n#u82br7BF*C85D7K9!$^qsF?tbRXX8(F#!o#B>qy zv88-^!NE=7W+yO@OXUz8eyZx*kB%9I>rqKnm%1Qh0HJ5%H9sy0tyHQ&ea;>=AVXb- zYplDJQTQ8Ba2dwaPzR?3?eqH_ycrjZcB!(zk|NoID+7&WAb1>zdw=W1FEexnyw|jE zBIx&;2c>R;cz|^3Je~){=(qBsCyv)qE54QBEc9)V&_TR*1U~R%MZ<4G| zQj*1zP+gW@=(QbVIMA7kHPem%R)##4meKML(m<-iJ|9tRwCUl*|3(8FFDiO{smz2WAx9 zQy-WMim<;to`ivX9F&cMM@%&lkFtz{$IXHT&SYEo5_b>_^}MK}?U*N!X9?lTIgCGN z2O?F0#YS+Ey(v=IO#$=N#lEB$ef}l2-miAc6t}}Ss zy$e~M=Av;lXfzDwQY?Vm3jXplP!_jMQVp6PL_xS=Ptzd+y)o*-od$2#;QbT$)ElHT zWP|iuyFJLuUw#l6SjLN#&SH}vV1rW}D*XnRXS$U1mI~*hhfRXbHM@g-p}Uii>0{49 zrf@h7Pdi(rVuW^1!6xd&X#IO!^$SqH@eQR)dD3q$b*=ynu25qaxHD11I+|eae%!cc zv%MH%77=$m3)pVeA6w7oVp9+|nS7*>KimVhb^?15>~)RnnssPrcTp(Z#ad2FUBHW` z83-%3c)bEbmXvXHy-C)Cpea$t?)GcJD7kBB#S1b)t{b0L@C!Z|q1GsCiuqoO;!S4Q zN+0UUYc{YNcEtDu;3`$l<6B#zser&ODix4;im4{$3IF*bnbnxO^qCJZq~ z+wqD!J&6njpEVKjWDoTfqErA)_+IIA8GEwlnP`x5xjbcrU;~dErORY2aLl8ES^Bmt z-FZ{tT%KK2kpKgdt0}QS^MIsBh%3>AV=lt@9RW#oolD410hTx*S*m;mOy zHAo~N&c^QVzJHM3t1)`kzX`b{%Ns*_0>Fl|X^zHZ@nfM^;ALX~1Vbw`Bx9PrBA^8S z4pdk%_+Rc0c}3epK1@nGFx+?!Ae%@qeMxsUq#G9`)kUt!UqnW#UvaTE3=m@_7kbne z=iNcQ^d3u$vtFQ9t*^%?14OGf6U(gJCR(-CtbAn$%eSFn6OaCEfz~fXD+nh<@21i5 zzXV{h8q^EM8MmJG(Xj_U%5K<2GBve3STB!_Q>+WX?lAlVn?lrOv* zD0VF#T)RE29{z|^Hx;>-hn0@~Belrn7zEp3D*zz)!gg2<%TTuIi5(qIxZiWOZPLJ}PqTkEH+tK)RzNlzy30!iWVf$D3j~y{S<)5n z1t_}Tb9tn5G1v7)zl=l|{XCusy-4GHu#Wh9OCIS<+*nZs-Jm`4?Ib?-!_h(_%9_&h z|MO7tdZH(zil2_ISoZ)IU)AM7r>)yF0TE9W!<6_=aWl-(g84srqNComJ<$d7OUx79 z{0wbEGf#vV6Tt997i?pBoF}?}0a%asL^A>OdZHeU~) zATI*K2oz6+GF9~%Ovq-B^E?#gYz*y7{}OC$sUt50*`-3YwddA{6}OZp%< zn6oiASto^;=n5+^jio%&TD9wGaFBN%r!OJRr5Z@-`utWHk=tUC2GPzLHDvcyWY_#ID!a>UM%ZP*cSFNc6QF#jYiG%-^(N-{(+fgA&>Io24X?eIF|& ziR}ADQj*BNXQAYf?K`CxXWzdOkjK7%Bp{D{UnL-qeSZ<4sC|bSowaivG{ITZ561j6 z)xeiU4^u^sNS>RU)e?4itNxEe%r8!+4^G8c7vQ6j`1Yc6Qz4Xw zQw60K!2p?s+gx*qPKUb|>)yY?K2+p!`|3hA9v#S&hr*h;DvU2$6Ii7l%X~GVdjn#y zU?cA*HnVzfa*}`PhtyB={x0mVYtnXStvYO>DSc1?Fp5nX^8`n%_kd5nHO7jQ#*c|d`EaA18S!=Pbv#-s} zN+*YbGUwV1c)JS?k+)8#VtIjk9ekTt2>;O7)TqQ^HatfzGZk?UzYHi(b}W?nan zIpO*~86|DskI?I1a^zj#uN9Wu!8(2C2C~TAMOjRNL>yUM^)O{IH3p$9h63o``Y7&v zX22dK+WDMB3gJ1VAihU-KB)jYVmX9-jnb7gc16o0?$l^En?Q&f^h0%-_Fh5iY?gNP z*$@Jr?)_Ebc;|B@<(1b%0`lxC!a_EY2zk4&TVH$@x#D4rp$Z^Ib$RNZ6~2;e7?Pg& zXgo}g8Tpl4WGCN#sb`^b)8QnMrJBmFkl1q+(5$ojCI~oC-#yUIRsOIx* zUVr2v9ra@SO;CIq6ycD%sxYa#zukbs*(h|R@63lZ@pJlmB0CT~lZhq5Wtt})|0b8= z3__57h0>;mUns<)X^mw2p(7_a1j7@uRlKK?v_9yWA^om2h0@lgcCic%*;gW&k7AYdSYWax)S(G4ygxWqx|Z$0tM zP#VOFWYuQqNg zcr=4M6e!1Hxs*2QJ2Yk+-*4xE!#V*My1*Y1%(;Q_QV2Anje#7GOS)lRjYJv-d~ot% zVL2|NMu_1u9&Lqu^0v)+`^XsCr65YX!RV44Z9$(KW&g6oA@gU54|muc%tCC0Yfmguh}H_6}U! z0!YYCP}clBs*Urm8zGvu&$~tlmcDNw`Ve(JcD0L|wcrJXrL(zEoc};4&otZY@6CiIjKs&QnF^S5Cr6jA$5>84g4AyY{?+3BU zau*~U5E`<|Di`oX01?7{BXnnalE3^V&aVOZjCBb|eBK-)y43R9`{=m*<;q68GhJ2p zdJs6x?xT(TaEJO0@U_$a z7Oq*jigZwTfuM^$qjlcSZr<4?)YKGgr|z`#tVHkl(!yF7 zczAGdJV>hQG%XeF;U{8WhaP~>RbVU)Ex}$#uMm6gQe47OtIT6<=ffAEx$<5@@6j}6 zKwcEcTo>eTfH-zUa#X_K$1)4%+D<<_04F^va?97kv`Da+q$0P)Ae?=p0OYp}a0Lvh zh3v5RfGjotssErRxOa!W?bJgjkq|D4O-0J6Ve^32?Dj$UJxGBjI{X7)s3CRQfJ{^8 zcH?L~dk@FbvCr0Jlw|mRGA6^hi8#xE<9b@`es2-J_AB;nKF_jjA2S=+D)O)kG93_@ z6}ij@dc2AmUdnRYG>#Se_6!>+_lsJ#hjL$Nf(Smr{WN=xuWuDyBv}9D`9FJ+`21f= z65X#_EhU-kR&1p#{66pQVJq)HNWig6I#PazfIRmBt`(58WET3Pg}&R$IPT0@GTST8 zPA;>(y_#eFce()Ait}wi9Y5tPU#I9W4I(22>BWdU6#LI!?Z5jEm|t?mqr34Q`kbah zo#%p9>}IU9LbA>SdsuPqH>UMMcKZ8)6j;z)Q$v^1% zDcoTysL>Ieym~wDj5iP-CknW7SCXIxh6rb0wk|SoA6WD_Cef zOp<|xs^D2*rlCKn4*Sj-+FGQ?|pgdivCT1&N2#te7+x5fYi9(e!C37IqH_NwHo|N28YiUN6a;h&pp5Kd=yf z-7ezVaE!o53%u3^znBf?4_1+*W8-iAUVy{Bz+(kC9_vMKzZ#KzHN?f=_ z3MV?lF&>2K^CxmR6tWxJgER%Atk3VMq1bHep}Sn5*@T8>_Qt0oLNjxdg2>q31sJIu z+A;b z$7;Cj&KBY`Y77>HW^#FSFMebG+Q_}zG12C4AW7Hq=siQi|2Gn40y2k=x(DS2@rUh^ zY%wrf&B*ojEZ^ojX)gi=d&R?n9U*`2@o{}boxEAGPX~^WY{aLCzRQ55o*SCgXEmL15sB+ zC`%hcnVkcm*7U(CJeoW)v?j|KoWi(qv?T@^V!2BEx~%A3h+ zpd+tRSU{)pN5E6zeynWE>n%VWH9G`(y({8vOTV5Mtd`_;rh(>Lk=M!^lzZg0E98;a zd?BAuUbUMkFG|hn@($ER{38aTyxs#aPQNBO@+#mZ34206&C21j6LxLtc-G zc-xZKOu^Ffa<5dleo9%GiNy3=8=OlvY{oi)4TS85agh-W?8#5b3m(yU+QPh&KD-F( zLH+V>LCp-!9Gw(AL4`NM+1R~_nx8j;V;gMD8OHQwBY+R*PX7o3tZ*DqWj}A7wqfaJ<&WH^GT1m;!hT#SbE9ruDvia=c(koFX=^P8!vZfv19K2k`9$kP>(J75F|>Oh0Mo z^ZO)dsOravKJQOt?y(cd+==3OWBs%45WHK3v)$Sxr6bUgW>&79?~#NxQn=DL)|{oJ z6T(}1G8(dOW-ld*@+^6a+^6Y9*P@-+R^$lsG`~M>>e9+e{L9a}@WTf9k*=2B?SN#L z6B`EE$XIWe$sG9GXKXK-?WL;l6>JBUp=Ve;Rg*vm{H{Z{SjNmlC1)+sjPpq!fYLH@ zCY^)9mQT8^mqKCb` zcX`-zEAk5n#p6rml-0cRSWy(&oY(jONV;@+F-WNDF!`I;PVQ!2B#{tsqSLhhvTQI@ykIlHR<34|P$ z7Xn#TcNLa9X!gKz5B(ch?y7%_vOHbzP12b+3aqF%IwWLyq~Kj6UE5B}jF^{M*`Ybh zyyak>+A_;$3(NgoEdNwWmW$E2Iq&khAdUM!=Dd0OH?Ul(e~YsGmf(Ma0|qtkF*@5f zE)U_~W>S7s@LrOxogHQQ^81=eSpu0i0lNh$-^r$`Bj~#$<^DqYWe_#zJw+J^%k82p z|Da(}mX8tqGlbEN?~M z9hM_PI!RdGMHvXoQ#GTI^29inuM+$c(wWy=Sl%@&5zBuRyy3#~Y8X<@@-FVqyt*vG zunr!U-IIOAdU9MTruZVZl*ntXy_52JNSHb<+Sok=zjw!fE8m}Hwl3dymL!(%!#LEoE+r$a$+vlegVU0H zXAenP-%z$amVon6_uC?xDWIHKzL%oJUZk~>UsZ^lMIv7Lo*=c|E1}^QHSsEI1d(xz zQs8s0!9)h{DwkGy7G#J}cu2WsQ{PWrB*%|=mt z+T?K0Cva;Cq2BO#`6ZgZD?GQ9;}d`Q8~zo9aqYnj&v}LAtIfbVN9VWS21bf-^1DnR z*l~W2v9yzPMY_EQe0!PvH8JZDe}Vtg6XQ3)-;=yE$cxJzh%6Ot{@?+S~KF8~kD;NKUj`6p=$AHBaiUg#XlvoV{wp@iV{$CLf5 zJ%Qm3Y|h?soCb)q<7j@K+}eB|0wmu1wPsvqOpQQF$VJne79VD`& zPr0@}ovh|>g;{s&)6iRapjp@Ophux*i$ZM!ZsSJBwiazOisDjH70dM<6&`peh&D?} zAO2XhXC1WdWtK;83E=j@Q$cFaX2*s?d!8V}fgQ!nN$*k>3;g+)*12>g>SA<4w=QaA zm(b4~ePb`Y2u6Qo2LH}f#sU28UR6#&qdJ#OaV%$cTlw8Y^y9%r;_>T`l0zK7lSsrn zen&~|MB{f6k)82#+XME=We;YTaB?NK2NXx^_MqFNwmldwzr^f8`RyFBmhHjv7g_GM z2ODnTh`Q~;dla`$+80TC8~FB=`-qqxd(e*B(6T+4wwm_fi8V12b3p>HqGJ%+gS&*T z*B)RA;;{$#8*D`F!Em9|o+no}a~BX2Zx4RD8NhHYo3rh~Z-Dkc*n>2TT4H_LEri?h z-=dW7kX5ffy(YC2>C?AFcJ#?@4`>Tr`g8%h+M+!G?jhNOUblg0EB0W{3oLirgZrmZ zd))TmUNYR=9&84GhingEz&-YW2HmyG9DzpvJ9{vk3K75l5{rB;N)FK;98DtL@%tGZ zMc228n#$tf3ZCU_7nh;#J5oErs0tfXag#b3*ShV`rh03MBSftacpJf`_?NX>i|#a- zl2g-ooVxF+xSCy2)4#Np=A4Q*##P*QQ!5q4frHOJah3jwN^SS<$hca;R%^L?_kp%c zQEB#VjY$gA>D}XT6_dRcU111>@cCdt-!w#a6AQ5e=X~l%2(zN*c8dB;j&k)^Z^<~x zwUrlcgnm>@&R*9g&A$Tb-6Cd-mQ27SRmq|vSMku!W>-6N;@c^8wKGWCY0nP1+R2f2 zvhA(QA@(OLzMW%T?Rm0cYr}sT40<-x#$KC=W;()V!X6h@s(ay7k3m#6YC9J;3BiMkDWDSVm z)L|%c!{CfYMPB7ejosu7G>MZv9F#jbm&RkUV;5eZ_8G6dziidI+uskls|FOk9+O3hz4Nl^YW82NX zAu$1>YdOWg<}eRmyTOT6Yx0zNmd3G(m#1uMc7v6+($W(`E%vNRFi zt8F;i9S%Occ>8!zPpq%~QF4g#J&8oT@;ypw$K*R}XBtlD^?F`an%6=a75n&<7IPNa zO+SUZ$tu^teci=)5=gTunjaLB}{9WrY_-|-gXm3gth|GtVX{))9I*3YmX ztP4Ddcjte_yYqUyJ1>2xKJWng4XeOoNA z{{_F-OR9Z7%7<|DTWLOZrnKtiCA9vHFQfTeo!~%9Lja(Zn9EvKo)jk~llTynytejs z|2mY!bzj7_{i?*`B2NwLAVuT#6lqIzgkd%a<5{Vc1h^@W$*Jp$A@_QbI~lI1sTY~@ zcYnosyes+&?}FnYy*w+g*b*y`)$*77fT=3jA`@8~@>@;~a*~V;nCD1-cZ zG=ld&Wz&7h{)(0O!>u`HZxEwQvhh<5NKq#Fb{5~0z%`aJgY7nrigSr&l2tWJbj=W5 zdw{hQ$?u5?j{F+V$Bg3U%&h1|WXQ@H<5 zC%O=NohpgWeID)H$tC_+=Nsw?ADm&B-GPS==ix$s=ZZ}IM>KzfnIVAA6}*t&toOyz zYDq4xjeu*SI$WO(>flfnC9lvsTe+OTIO0 zB!)@f$(gnDS@cb8xqgb=9rV-mEtV9R+i<@>VP?C`@SPmt{N4&_rGUtNmkJMw!x?!Dn{mMh>qzLF-DjHDv zxth9B6u*#U)-RC3na+QNUNnXadhcBs_0utW%OJ)2z(Pm@Z7nnc&l<=9vWS1y2Nv@Y z2eR-|WsUDuzuszEuJMYbXL#2riqD`Fc^6jGD41(Tj(!+jK{oTiBSzulswmwkT3{Ab zIWsMf~m1knoeLrlfr_zf@DC&1qrCMSX!Ig2FC>G)ll!hp%o5}2h6 zjnXossN57XP79wwaK`ub{p99*+12e2f_0riLP;J8D#;_jnKdE>*A6_nk-8GRii+V$ z&lf%VtVCp7MV2fAH}GKCda$E@nQBdvT3q2JxIeC6 z#|B*a;JF~PzLj1i;KviIcvrAm=BGKMGre%s3l(1ONmgpwZ0OFs;FC^&HlUJ1{*3o@>x!>d+@I_RsKwr zNG=&E%z~55iZzX_#+iVm%S~GNXS)hIm&s1yC%tHrl?f7z`_O)0Fh}JLR!k!BZ=$+R1M^6LCT0cCwrvx0CV}DS ziE6Xe6_A*T87TIpwRneEm~Iq*!gxnAO4{B(3XxCAi+BIHR+zE(k1mZn1zpgpCK{~s zE++hRvqzDw+|e-wcB>pyocPNdF}Mn8Sc|&hxrZ}S7`r1-tIsY+`9A#zhvp;&ZT_ZJS169fkaICei{qn&6SUtrbYRl<84Tf@|}nJ zF6GOTKcmX`HaeifSCeIXl!@P>@@;>bJ?xBrIz3DQx{4edgHZXtyR>EHyPl{n#iL?+=u+$9LN*Ih&(wLYk)%}Y>7g`YU6q*V z-si|`rY1^iF1`n`hDdiG=7npbC zV5FtT!;x+--HRIdi$Nha$5s@AcJn!Q4)>niPdpT1x!b_McZp|?)ySXGId(1Nq{3%o z>Nv_w{1)d}DdN<4X7+!v4n7Wa+zO0AIL8!#EgAUsl#XkTT}1*k@Y`cf!Wv3o_#INU z=U8t*Vsk9-kiHL-OW`M+U#Ftv5bgV~WW_tbz7byR`6b%ryif_I^3{>Q;vS3#ULGa; z%PXl@e4_M7Ohne?5nAaOxiBY;l=8=8_G642;PyN+6j8&_H;k4BS1jHmt8%FEUq)ST8T&G&TT=#a3RNL64D8xI0lzLFKco3-I3R6nSsu?)NP~MYts>@2ze^Hn^B=cUW$` zY|pC9lFPs`yJHW2UpA4Cm)+Z3Q|ot{7*;)_U8w1RB2b6NW8&ZTVN}+ON{Sv&R#c`wd0mc{w*l zI;-;;rG)N8c7v3KsU`VTF3G4a#0ac_AchdF0YLpNH+0V6}xGm}b=QrdlN|D7j#QEBSfM1kIkJ9(A{IbbBE4Lu;=o|QFB_?bjW>Qk z_L4i&+TD?==53_}^aD&^z4Z}rMBiz1auJ8)xHE~|cvU@x?dTL>Jivji^6W4j+hyI) zb_R{~jZN!Ov`}3#QuRafIODUD^gjL4{Br}};j5cDHO7I)!qDyLbf27>*@fSgZ!``B z2daLEb#ic0vNtxi2l_3%eU`1lQ`t0Gg6{MJdDLj^3heBSpnRa@2%)^9s_;AJs9lao z9_-fK+VYL^kxH4bb8FRQDYf5p;is-twHQG%0u#sw1TDwuHz7sfJTS!gTG*x%!O{7h8^%gnSKr}e&QyvDurp z$OAOwc+(b{VX%C?S+L0&p0hy8SrZF@F}d>g)dia@K@eBLy*$!f^TVbkrM`gl%u}vZfLb- zG+g#{Q8Tkwk2>3T6g;jjP4n$mk#aqKfw|1bG&Vv=1s>-}ML?@@ ziKaw%=qO}5((JYe>Bi&x3{JawkJqwafl5)8o*nqEVeqf`YB7d}iqB3r8=CH@K>;@N zfqp57llss7T9x`16t^Jt3@F~=N_`H=i6|*V6|U0a5+62|WumqfL(s>v(x;g-sdS;_ zeX5}f+syz4?IQw6N7LMTMr-)bFekV!xMZW@s><=YftsJhDSy9nB+m{L$)t~&L@#@hxxh( z_9@QY06P1Q!_O}?gR;`=*SJibf0B|+$|{y+4<;40)*YYs?IP#R-^=dsdbCE54(eW2L43L;2am5&$N5Ve++%L8+I^=LAINNU;-B2 zy6sF!!oS~Qix#jn%iLyX^CNFrYS{=L+8E3=LTTq&Pj!Kyu_ z>~?(NGz*JCr855N?cxi$WNM_En$n=CwJH-T#Z!~R;j>Dgb3Pv5(+F!m% zrV^^{kZN1w*x%Kcismmj1PyDK)l~9Juy$Fe)PjC!qgk#ub-(EOR#W|QC(F0Fa=lFh zIVaZ}6z)&*=T2wvFOxszaEYH@gLmvF5c*84W7ZM!6+0VBC!6+UDFBWunBWPpg%2RW zsUm0I3v^pePX@Y*oD+jkO*;UX$a?psm`iZ17H7Rbz5qnR!$?F}lQZ~L06NyYjd+6? z$#vu;p}l@dN)qKueNaj=*=n36pNW#Fj<=jIwTJ|~`aM)Yp8Rls6p+WHX9<0K7Q`Yp z`c_OHF4#zF%3Fa|pPvV9K`U5pbi5}f`2~F-WTv8oN{$4Alalgsz++(=89yB$xe`Id z*0ZO+e-X&X_5w8GY})z>L!q;$=BdyCBDJ19^7SkB-&g+nyf>|A_h#e+jMu z5p~A$T%fDSfEa{hc@lv9DkyVi*Kn~qpqm=mQ^)J`($vy1+8yf;&&DhtCa#^T+&bTv zw57C$Ikd-iSCQirN+$A!Et$xhL0d9TjM17*0yorrT7(HF5@7fsO?2rh@`}#e)_xi= zL#xJnbT_&(KV>%idkKT(w(j-^x{6#DgRsA60Z85DIT~1wOopSgk0k7B9a$}W6RX*3 zyuTOQ)dv9nQ}q1+M}IRlf4J{s+eiI%oP)w@g8M!mEBcvWL4Rd=?^$oRxxRUXY$o&< zcS}j4{Gr!Ldxx>UzmTN7{^9om^7x12g{;dN=(nEQ8H{A$susf!fd`oUdJU3a*ZM0f zHE1vnlE<#b2=JG2;b%V5W^vc2fnA>#SPI$JCDppDTpWY$xQan!S$I{E7WLZC2WOAR74#RthN9W&qGV=TZf-?WeQim9#OzOzUB*ihU^jHc;7T zSxfO=#iLc!%n$IdqnQhVq9Xg*#`rAsJ9?ZBhZwayAs|6h?aMjO{SnB`&u%~DyyDsI z12?nW?X!M^`mXyCDe`CZ?Dn7RX1FWkNw$^~Ki-<8Io71Ml709-40L;%?8spseu_aj zyWRs(dxpWth2&h$87`M|hEM>m<^EG7z_Z&PG4Enk6BzDHRGY0CfH*$Hb>FVd`7s0C zX<_{@9c}CUMiylkl1QBXOKtc1-!VZvza5?AuXrD0qR(%+XOwfytuZlK|IF6c-yX!tM`FryI4^r-q6GT05DkRyk-=LZ zqhy^Sv^NprC^?L7XFw5|KN;t@=?J`#q&*0G&xu(;l|P#90T@35!+V_j9`F#H0=#h* zQ*7pytXY`Jvs@f8yJhe+@URbkR?=+#U4>`Zh8`2pVZU*9yi4Qd%+Xj{rm7K0UYlNW zrV96p)w3=GP3(dvLiA-NSE%rVc3H!CtOEDcmLadU2mdsUk7JS=OyI^%d)@-cJ#VFg zemEC(8&`Poe>hvD^LNJsAv}T4gpn!y&`sdMM$6uk-PAA+m}49^ zNbEWb!;406$ngmdUe%jIUx!$E?6Jyv7Z^P@1Lw?sso7iXR$lTojx}ap_p&d0Bfd4J zqwV(hB(aE4N&0IVY5L${m1AIT0ly-bl9f=E9tt0hEnIAD=uztnEb;|b^;zM6V1_Qpwg8Kvb!k4A8H#YE%knsbqS@TO=?bI#2-K!$*ULHkU zM46W{$~?N=bSx@Ul;IYo)e~|U#y-mQp#b0`reh#0YNlf$waD&xb`x(Dmo96ZYV8M6 z8;To65JKen~cb)?Hq8oCF@0`k?T*S3w1K zrs{BktAa%c8F%Cm&<`awo`bpL8;q$#6;VS{@%<+iardbU>b>mi6IkUh$I=sf5u67u z_b>TqFU|^aDCl3ZreZ@$&*pq=JyWI~?o7D3r~|a@fX`p?Pc*I<+E3s&NgZEa0berz zajLe<9n2LvB{RV%1A_T!93#Bz7|>;zCU1KUI(uxcIg zrwS~hmqd&Y1`RVTRT?G(#j$IS-w02-i_Uc}9u_#dAC^WQj6vvJZw9bg zSRzgRZ8c|Tg0Mt?5(zIR5$UyrCC(y8_FA_1aQtaciZS7O^B5_~WFv7=h<(!7VXQab zAMV>st37V#-VC9iyAN$ZyXE zR4i*!|y|BLkOgTrsP@x_a$e@9VgHfkA!KmY|1(}wDQSYwx2BX$P9IXeV)=^*x zMh!fiU{nRk<`0YoqlN+yf7BM;a*Vix+CP&~V_W;DosRmEyJHY)|9Akk_D5d3JBAw| zZul|c+RA<&AkIdj`F`8k&+D&s@coW`QCjck&lW{Uu%Gu_r|u+JEykk?9U_hg&}QpO zECUdaN{@?2J;VOrzi}3N;Bu2UWQplQJj!Ld)L(i4tC{JF#iNq1VY%CM{dAhgbp2cY zjK-rrl0V(1>rP0I@u&~UkCrG_>fU(N2Goi-X5*b5lnsqq;quPXb*;_P_TSP*cXM2jYuXM zkJ@r-f_T&nh+T!>Bd_SZ9go@$OlLRX3~AJOM{Z+(-((Ef?(a)LSCN%52>bgefK*>6 z9@P&0^Twm@WVP_;tY&NS_0sNP#iMSNp-G^>9>+RDu>QMvR2u3g_6NJ!frMYG+$w2>2wq}k3sSIg2bRcn8a)0|Ur5&l7>JBGY0J&ZuDkibHs{ zJ@yEvArOTpVmCQY#NHyZ%buP@68f4(-f%Tvid{(+51uT=c&?fRViK-;BIbXr&vh~K zmb!pz2@IQT$nMrMKpfX|sNZ*8PR0_RUq6YG=-FNwgx~V{UMY!q=gVKDwtMlc6=$3( z<-^X<%&|$qi&g$4<87rTy7c46lOWcQu@gU4%^DBaQpQg5qg_F(S8TIM=950VaTx?$_SkI%Ej4H?`s9~Da~H#hn97IP{Tln# zv}VsD$EdGpy1lox82mGOpg+*&f1tj6OUYQ$ zr4Xc9P1=c}Sr?;;#y?avLBzpayBdN9TM%++rB(;jTIxfh1cm#msSR&oY}JUd#_AsX z`s{y|Bkj+x#mn^aE&lTRSZ0$NAJdjTKO6h}{a3&$;4Oc2+4Hb1yaRmTghf)#LCy_#dIFan1#yrWPDfiH{_Hu|-`{rtdtYIakfpXCNM$5^MtA|&kpGX0Dw6zE9Ve}BTYCM8Bu!Cu3*QVU1 z=`Qv3>b;hol@;9Fv@DC zdQtx-vF)p)O>}lOaTl6sd>ErVXd>BS=nd?g6vgf9!i~7u!La4Dzz%LZHRO?_n2Z`d zGE#wUY~}k5=?Y5y#UX*izdCf; zBj6rSMZs_s>{J~HA{hq!p-h+RE=>S@YB&+?nYl=qmMH2O03Z>o<`Z?>&Hu961Mn+E_3?nYO!C!7T;uxXL?)w zu33x2T50i|7F+x}TFc$X_t@gAxN7R^<44U}{P?(*`}n#pOVGzL30wS}Ee`Uw_<6Gy zuZ^~NjzifQth9t=za!aQ3~R;)>+5*3#$KzFCd>=}{_@8e2M%3^lSOEuQhVd^t!>9j z$D!1DD!5Y}L1p!ZJZL1Xr)(Lx%0XGugYjnrj-A}?9B9_g^k_R1TWhCp>+M)4wp@ys z5q2Zac$(@>#xEV~dytbaPm|(~=K%YrCQox4ETi5iwX730l2MB%ipDit%@orQ+|agN z#uq(S7@I2Alnl$+17l-XwO3)VnZ`%f=f4qwDD_WxM>1+JZR!Cxe&&P2QVW*M|0bNq zOZk1i4=y!6Q$;&fJB=F+P2S`%S~3i#J?uD?NE6i7=@J&F?9&vx$w-_}VcAH#?3%3& z(;+MaEnTyf3yf`1wKvs!ZZVe`>XtX$7pGj**_?NGSAzw`7Yh zVUK92;gLXu?xI=~hUq)SWvl(?db-rGX&)!$%i>S2^t#_!nlk*17k+)TMao1U1#`(a z3FBrRXIH{|PvvlGk4la%0z&~cV!Xn#?f$EY%F#)g(3$)c#^G?o zo5u&k5j9owtI(`_&)ASIF*rz2f8{vsIFuJ`j?2>(!HFNhJIu(AQ7pIgF{i9oZUY6^ zzW6%%GrBMKV+8Qx?FQ7c1xtLKlDi<+2;@2!Ynj-sgCh%qQFr-zOb7r28Bf5h-2_JQ~ zQ~f471UyQ<^t|6-q>jM(pecF9(U0^{O$r6hIBh!g9ETcobJiq~#O@=dF0c*5axns+ zh|B&3gEL;Q&b7BmqqngR9*yQZ^(~MW06H#X_EV1VZtHj;hZ~)k~#n$<$_5WvaY?RKlvaNY&$| zYTp*BKA5;_Z>hQ!rq;agavZA0F)XbXxvKJwmdwWqv))*B3Hy_j6hxZfURR;x)p?)> zF^f$*1GQB3Ko{g#K+I~^a&YQ9us^OSx^t?!^g3XfVg4)TB_)duS@VI9R34;hTlrd{ zAcono@V2=K-$0fkPvBptxw)(!X)g|Uh##f=w4{!A!*$;(r9KzKlK_!OHV-y+gBV4| z_3)03*x_l?#?dUdyPYjmI_nzISo#U1gilqu8Py+ey^0e8&-lWN=`#aAs_-upbZd0p zVC$741zV%wxuW7?|2U*imMW zU)Xa*^T~}$mrJECkY&QOQXHuy>or$hbamFwIfSwZ9$?CNG^;Ymrad4E=nOGUm68YX zuTwG&B}zTwf?Oq#eJ)4=YX=s|NaImMHxl-QPE(nl%le(5EwpdpIT;EBlHMwub-)&gxZbbqa0sH9EOclJdaiTCl*%jD}*@azcGz0ajgi<FG=a$c0*Tt8VasJMYBt9qYycJ zwy}-bX}!z#kM@^eh^BJ(l!LGi2IeX0E**+}u%VuQz&N6THm3-&hg}rp? z0yD4;ESZHntk+QsXWBNu*&9`0TWDXZKm32N0BTNX6877^kB!e&(ZVL=)YwthdrV0u zCOgsHy9-!IPkmN!h<{05vWie(dj`%rKc%F1=%BBpW9VRVa0ACA_%_V1GgjTQtp0ey zY6Lc67apoj28VCZVKmHQf{uf};A39oV>NO^28wYmQ}(Y@DjG+rf_28~y*U7q#CUZ4_=YHaDCD^9yTOaS<oN44LzH}>t_PKqlgAt45$4+~!vdMrkRM_YHd^Cd|o2hF!j1(9!f z)8zU|s&sLWl?_LrIdmTpb94=z@|RzWU&z4gj1m^^n4O$^R!NGnp|OKGl!G+8Kb8mU z)lx0PdFQ7Dd*qJ6`W>$c1DhJUAv&{+Ldw}FvSRlOHq9?nTeeFudhxVoTD*|X&cxLBBZj@Gi&c?=~me{G;Gq4hjbhKMWmY!br^&{%eEHu>E z@ap>oe@fT#I^y~j7Vf6^K$a5>`3X6DUV{*ljD1mNA)1D7FpA4=Kvz`Jx;-n~1^=LV zf@t*+F1rzB#%Db~40hvi)P8g1^(*cn=;I!>`tYGWYiF;`_xi9qqGD2ji{7IQ}5^?CiA^0dhx9pztgz?^YBfS7Cs3?R2hI10tiOk8%+Vly=5 zx8Mx6`b6o~wjub=;r@2F9s%uI(O9g?)q@o6W+e7$+Lm}GUCaUYSA6obGqxqJxs#;_ z7^c#=q4_=rAd1yd**{}SK7FieOoxu%2h398G0H2mJK zxe2FIuMv@oaV+@_t`m2Tm98yQGd#l<=vpL8_4X$Zkf`E?O1Jq+j@If27Zuplm|<(V zHsRFs9<{oo!fHupJwf*vyV?9a@Il_$qg?QXYat~rF6P)=3`Co@O0(8PYNOi?SpUQq zsHyffS|BAyvrj9C+soC$C$P9V8&SjpoQK5`Db_@g-NWVZMiE$-v$3HH5~CMbirDIF zG@aU!ePO&`+jzwFE5&}+%7|SLgXWmf)of}Js)~L+P{a9tUv1QDbCv%C=4NVb*?yQ7 ztJyT&_zRj}DP)h0k%eyo-Nq~NBv>r+|6qH@uhAr z()B>OgA1Xn&Js&j3~D%*SPh-srXnUSh3Aor*Q8XcLk(rI-CY8Wy}37F;xb z_DDF+6^`Sizd8<_Kov6gH=KoGqIR4NV~)QuzR+`3Smj^(iBVKWRAf7? zcoq__T1ia`txYZt{d{(CBr7#Qo(L2~?s*1ZtM&INSXS)65u`7#-R&Qb|2rdH2MB;> z@28CmL|0?v+JsH*Wqe4wn11l4*STmplt`%#$Cag>04nz{6eP@;o5A8dvWKd|| z6%aE%$)T5cc&yQIGgZ8BvAX*@EauhhUQlcEzDGExT)UU4KU1*Fh~J;G7Kh+pG7hHh zF$_tXvt+~-A1>X^QOR%^p_S|XOZp}2RmPDp@l~rDkH-%a_P%h(e|tDI7b^ycJukr=6wwy61<$VfK9TktTKs3yIsmSwzar4k{W2RIFfbEJj?j_>xdV4xH{;x7153I?NKx4)-k zdDG-j=U-AZ97X=_fhrWQc2|6qrGfI$K3_?e5nKe_sZf|8NUJ7|EOc=Bf+Z!Z@dnM7 zu-c0ihIv+YSXityHrHCozRjU8+L>wh`D$M~eaL-TwD7pUvwnl+TaVJoHAnWSeGN7| z39fe;ekAz^t(aW6@JQHObM$fhd#uH4F6f=rv=^?YaDAvWBdH{_e4{FOJlG+p<~44@ zkb^IG2n#|$7ec}QK;%Dgs z?0d9PngJSc7hX$$ErGbkm<=I`EV^Z>0D5**mJheZhM+WOW7WqE zUt)=XO={BRFi6ki|M?w~k_KY&yb$X60pR2D_k8?ZfwFVqq`$`hJpub8MAHxd--Q1& z@xP9CTNKm;|B|k7U2i<_3lakj{F`WeUE_%c7Png_*BoUI%)n$ApX1Bdg$=&%u@y(s zxn$$0iYEN~MSLgX4Vt1Rnebmaw|dLo~TJ z);k8Y?Cs>T17`>O#qdhbC*COF;paU5^e_1#RJYzgX3K8>?>~e6{213}SK{Z|Sf$_= zhu16P5Ar5l#;L`_zeK?n<0mL)+_$e0Y&lCRwGnJ7aMhK#l6@iDd65}@=2AADfu?Z` zz^jIy$c_F^Y$}LAz2r+leq64zErV5qEVGJf{T?Hc!d-6LyvZrsjWV}U`WFhE7gtcE zXpj~?`m^xD9=XI|%|->b&JP&rsRS#+1h-g$NGK#4m6ZX* zU?;W+|6`avLqH?v|5^JI@F!Kw(ZpvYkm22cp#5kV!0yMQ;M zCf>o|m&`D>-wX-@x+<(EtEeCzfQUgb0oMaB1Wy!?F9sFF19XM|`&Re&P0u6&{5^l3 zhnY!Lb#--hb#-_3MG@mqoe7AEHFacGSnZDVIRgcXw}U)x@lRH<7#K%qf;&{UffC;N z-|)`H`*>dfhGzj--T?*N^OogCy6q=_iC4!S39Jf(MO(HUeCNo{g(t`g@m9T@q}!IW zIoLS=(+Hh|S?|A5D(~)5Kn2iGrRAPoo6joIGuT&i@f}P0qH;d3G<6d zHg$;9>(zrV4~Alc?3mY+pjELJTH+ixTntLeuEK9_hZo>)-6!Tzb=Zn2s>_9&3a)wa zE&&g|51*_;V+q{1Sdv+BONX@5kvOw3T-eL~d0m-x{8$tTD^kqUjm&B-Xg^1vY9(o`9$diFgaSE>(+&NHJFQ!GO>bJdz{dA{EI^L}k;3B|9YgmQZm5+$* z{h32F215Vf;KdQEi85+Z)9OaIBxw@82W zidTDg<`gi;+wdc$i~|#Ug5-Alx1#WO6+wro9fNlxQurN$ zwBz2|=W&gpBva8C*KpKW+}2j&>CBzDPX(thuUThRUt6>(FOSl|PJBX?h)tVj#41J& zr+M3dU;%M21*9`7Bu*UTC%~yldLx)uiMbFeX-_20iQ31I=08Nl$Fr!#l!~ztou@Q; z-&Zw$ZjESBYa#|sZ;TNvmT&2t#Rkvc=D9kADvEa1B@O9<&5Nf_E@T$rM~ zn4@6G<`%YCGQHr8yML>T7O(fxgy^d!j0HwN=gjrw<&29U68Vh|BrK6Y;_sbbEo-lV zejpJMU5SLOp0YwxW0ARh^N_A<$mCefWWCR1VS4l}rA1=C96vVT<$DN%jAXu5>ecxdWQ*N|Ly9&0^jv z(s_$2+SqwR&lTmZ;h@}6=@R;@Kh_=Ht7YeHTA=l)fOYAgnI_mQy~f$qJbMn;K|0rP z10BX5CD>apUcPKU_r9WCIDftr%+>APL$Iqm&c~-QW9-vAc{44pBmwh|1VnoNuYIF} zVdelhp$fC^0g=lvBF%nrHJ&u2(O{J1#y{Oxeg$UyWj&b|X`_9x|^=^hO%9j<*4#3R2o#AUG)SjE3~E0X=vrQ z^}^#YheTJbsLOP|$fnI?IbUX9@$SCx&j(`KurE=#P$xT@%_!8PNa}3Nj<&4(7k-)d zxR6sf=Je(FQio+l=C%XCPbBIf^jiv_uX{Ev0~_ z=b~y*=cNQjBFab>^^1lXrx3kxp(d`zZ`lh^)gbj>paAO z;RaMm))4Pe!mFOcav8?4e_&zd4e(Hva}GhN(zoy0NUXxS zC8=2_7mLVFAL{l!Y9bLg0vqgh6D`OdIEhDFyxG@!k=^j#Z|``MPaOr0KED8EvU130 z4oCVqoa~lOr3F``_^OJenB*Ny8#Bd0v59|->fu%qc+D7TBYP|!Gpd_{j|L(X0_Z(N zj#S{O?(>V0FLN2X2Psapq&Rf%q>#K;f1QRWQE3$t?U;5Z1b7Vpn*maV|GwSaPr>j% zZA`SRQiZSk4vn?yR<sEj+V_s8zH zDXXYg(Y!YUCG)k-Ae^P`7Ii7w{u%(4slwfQLe81}P8XNrZ_!82S)!}Wn;PnBYp*@& z>IJ6Sovy9`fu*a9*+IzQIMCH~ph(q~WV|O`of_obn69W5t*c9+Q|QXR%{KDrDUc)H z9uAwETR4U{e*5b$;Z0X`tFByAdW(uI^h9-$t*}48#@N7K5h__mt6YN%x+BjwK{!(r z!ujD*1zdI&d8!G*t3Ze=m?aM6W)wO}yVm?2dXXParr4L$;F87eBKc5ke`49pWOQnZ z=owlfv{p)lGVa?1;m2Q46S7jQ%ea3NgwJZi=0O<`Xo4^bLcfeFHa1I?(Hdjvt$Ch` zoWY)(A*_p0W;E^$j(gDf&IA)V(=kMqFtCGz=CCQdat;Rt&S?|sNB>b}SpvO__9sz7 zzsL2qZ3IJ1TZ67IVJN}Iy0(0Ag+n%+SN=P`-6$KGLT5mW}ikP728EjFs|Z8JMSLh zW*y6n0I;v*?Ol5rK!kr+Uds_1|C7x2e}OPwh*P z=3Ys&#>y!|h(PL^@Q2^7DPpauC3)0VxBt`Y?#)w_wlTYeVyAIR64EV$J(1=dv%U7jCR? z<;wv(yoI@9G~}dPzzGDR**x?U%n)bN>I_dB?wJM`22QDax}hyjZ_iuw5Qs-(#(e`^ z(8zL~^AT^xFWto>T-OE(trndu^+;c8-3q_{7y`ilhx-}Bj^7~+LbWzRE&77xQR?%q z$Q)M`s0%f*Hhf4r7YT59G}Co9VE|WulyXR_)FppM0=OM_`pVxRqBY;2h!h47KZJ&d zVk{y};7!C04g#4~5(x`rm|47@@B4q@u#c`IKM>#_-^o=WS$xq3&fyQe9vzv?89x7r zIRq!vkeWJ8O+!+q@#i2q?TXa2O=Ogd#NPF(#Cw;Kq#c!-wuy{5vh!M}67O9`lJ>_9 zDcWcvBN;b8l1jXH8A;l3YT70;%43Oor4sL5Mv}I@pLQDlrHl$+eD8QzX(YP~KI2Ew zxJ{S8c0K*kEDN$+AQuwCCKsvwIbo}8s}BO-Xn%cC*ELgKDfyH(ht>JYpYeG|q(z5j zX}#02Jty80zv|FIL5%-UnE1;lB*ZvFGF@XqP6h<6b0T-w>X6*p{4Pm|W17=oeaSV33KV(G|He{j>+qi%%@B!UV*9?<&Z zROB^7OjtXSW{rjf1#B+qORE#rlUS!f#IR_)n))aGS<(Mg#rY-&H?*A&@GV@+?K=nY zqC-XU3%gcNc`5p_U#D1jz!)>LHU#}6j90!sTK-9GXd`|%s||fcD|8)P_W8{T^XRd3lI^UXX(TdK>ZubUjxoiMK&p_L4`~jIh7F*9nv@$|fj!>)bp05a)}ODO zDI^Om*7wt%UK^@L-pKrN$#a$K+;j*ShgQ4TZAvx%mr;r5J^;J&wJx^R7}Y*UJHq>c zP{0HDxhUO?H#5P^+Xi{2u1EaZKbw_u-z0Pk=ZUDS)FAKQGbaHu9VUO;*J$GYee6Gh z^EOl&LKPD#tIyS=3OucvMUjgsV0mV*a66PYyJ|HU_j<4ue&gDs+T6OC@^@?g{SOsx zgKuETNg%y{0OOdE4ksFhWFb3GOlayq z{7d({4%Jey2u@8dngzQ$sk#$^F^ynP@5#3&li+-S+jLB7>&fGT9E?3Dq(|q*yT+IsZq|H5oBY{)c*k- zrUoZ#yp0*mR7q;?5oFn$S#}cXw9dzVYt8x!>ArM~qb zsH}!BFFkb1&KdBUd_tUR5IfE)sC$VQx`<`hZ`R>Bf5Qv<1h^#Uwp?`b-06*X+m57n zFM)CU`QIe@b3cPqbTsT%o&UXvVDDUFQ#uQDcrTAB>5_XFc&8DfB+>NCmvYHgF0ikhxK`S1Vr_{fXLXOjK(us9K_`q-87L_CjqA3KgkpN+t1jW566c3Z4 z7K=qk_{EY;cw&IfS!_TC^EZPKdq}XEETEL!NJ*PcP>vwW->cq*MiaD>Z$sJwa&?Y0 zMK=|hO$NLOtGO6?=ff-3)1Tk!2^WM({=vC5m8OG>PlGhS?>E+bC$G)@@T-Bm=hr^Iyc5jKsswZ!$QRc@*JKdPlM6VsOFRhqo1Edo?!F?OIZ8{g;}dDPr_G^2}BQtAkTHkur6EV z`4aM!6;LZbixlrdCN+H^y8y~^uB=4VeFFXUa^59vJJQmUmHJ3%A1c6ptrx26-|ppn zMuLM$aF0dsAPDLg_Hw>y6#F}|(|b7|5ql`p4q{qIn5&ynNuP4Ga9+1xdpYY!a{+0# z!FsT#2fu#gFN7E#Jc54dOMLo%>5KnT$eTGpN{$hFwSqYvIs3HF0|I^s%?$N-z*_MI zjNWg{2mAPs@NcR(=&R7W&@8etXkEBwWRftETR0Cyt|74IuAkZhPQw3t9sR0zy;Nqvb+UrPnyZ}&k7+*n6b(7)m zlryShY6(@N49hgblX2R*lT^Aeyoe0pQny&JA%vmu?6Qt#Mh8ho?>CVA@J2Jr(i!!~ zxo?Z7I(ae)7 z4Nt2)rz>r-uC%LA%Xq28bv8?-RlA{$d_TlF4$`|t3t%^T@Q+-&A(y(=Qjaql2-dby z!FJYAuMJxP?W2FlX6b624XLOPqfB$ zyi8c0shk3&M&K8hn)J3P?jRw8EG}uCltZ=YTr*j+0ni4W_2?vL9R%sGEzmZ|uqW(! z{c9{8hD|tek3ngsI-@P02f}vH_%}2n({>k<%#7_gA76xG&`RINw?C0h%E6GJU9Tnq8r`QjfV!!0;nOt$rEuT}{r zLA$(#R0*W*B+_z1YtOI!_(c=){(vm@Ebm)FWyLS9^k__2Gbmm|kM)S`i>M9FC)5qi zXN`sC@el7B6cyw4s*7Nl2Bym9bGKNL1sR5wzKh$z<4pemen;8{2O!YFL90+YH0I0l zIKg-nk$b!4{I*h>LDg@_%BOigh2}j&gE=(%xU4${r&sLgP?UaTLXS-$G-`xyfV!w#@x4QmS{D-WdHdLW&+yt;{7_SL)3Me;_Y^SnUTyBDWyU zrsBk|Vn=Rum{4Jzi z@R#q(y(xgIxEAbW-KF@$UT@9{lxC&bS~r!1`d*!Ka$fHb(|kQ?_j93fvECR8ikimT zYl}v{k3wvzyPHaIu7C~u)!qj=D7BISOj9ApGEW)V9>NTr!(a!l+J{>3`wEn$1*p&? zJ*k`*ffsIo{#eZ{6EN42bf}0Afawg(Hf@-?&q0cp0r!2IUk*J0!kG6*)RR=E4u#!C z?$}e}?8u33&AvT19pYi{LZsf1>BEUvkSg??XPQ#Rj^9DHB-CraU}x=#`niW4!^NH-)zox(BPOM5Wg@L?2^a?q81=EQ%ZQd$DChW9j3u+Z=8Mg` z@(>w!GX$;VKp>dzE-<#?zlgQMTcJ>X9+x2xG|0=8bAAFENHqjl#C$9l)KegjVjSqV zfujM@ZGibIX9r6VL|r(eWtF$S0K=OtCrqcS3ZtBp*6{*6c-{JE zn->SoD8-CLYC^No`tR*PRq#H*A{@bQQ#6lFe=bD3FIBYJDWc_3v?xAYX9pWLn$pJ* z2RA)UR!+Nwn!F-Flk27zAZ(>}3p!fTq74-`-iG!em!vlI%ThutgY`B6f*X{#TiY$I zco}E%{UI7ZAv!c zqxdU)6nXgImN#`E&zt9jHd3P=l!-&FVrN13(-*wKU|<1=(T^b=dwS!mIx!`> zcMwlYPH3=bGs=MJY3xyU>BVa;r{Ily5&P2Mpl>VVy}0ev@GLcR4I{NQa2-|k3PIzn zDoh-f_g7so_S(mEon~#g6G%5;5vq)BZeZK&E}<>gh7wequI|K4Uq$xwyWG5j4JDgB zPX9NQpg|(hw(L;@^YE)^Gkz6$3(~W@tiG;U>dHV;*b{H86ytPL<`mpiumm}#mVlWWVnqhS}FjeGExO_+zf+q=D zzZ^7_I`j?$@l@Yo&n)S_JoGLg2j8nTy$qdOpW>EQxmMO+I3vH#iax2tN60JB3|>PiUgpA&sM zsm>v~J1O03#e(59()7k@b>PB!e zbYO}t-vg59R$u5!xxWvg+9Zp-1~itFK|`_!{>z)QZj1A(-pwAc&iOq9hew^?({U^_ zb2Yw8vz*_X%R9zfowu4r%kGR8&&Hw(Vk&4F&Xu?h7;QF$Cfp`8A7OG41d+1?OrMEO zgO9+Lf~83YEx&x$c%bac&zbc|+_yQFK}dQa+Fjd%XpOfFR1#D;1-yK7Tm;~Tl26zw z=fl-}a(!pz4EFO%%A_2WLPqPo0?Lk-&Co(R!Vp~&FGa-c<|3bRL&Sp=7PM2EYv^Z;&HD$Z_-vs(P)J8M3&eflP5piA&c+rej1B zBz_NxwS?~rzxs2Mr5M#vid9~J;f40m6tC(e*;YZr#g$a^M*a%MTqT>`NqNz-X&^Qx z()7)H!h74O_`fP_dQ7?N;IfxS?d3&c+5NCcaq+QIz5X}SBM9EJv8&F~K) z=>af?DmS99Vog~iOKTWtwmY5+-gqn;q!b!`{iw){v+32O&o|xR2_zcGaiY!48cko( zSqNxQ701xq`a@iCw(}vQjOq}P-eioj38C~Z@mHQgwPNm74`N>|XBRp~BbISLvq6S2 zeA8lm{Wl??SanC^r}HBi`p#FtQqAy7IHj>g&(N+9GEW>hla_XALL5g(jj^mm)0CU%IjVKfZDC53MT z>@uDa{K{sGo^0YVYEv(>$PYu0Of@(s>W*V7Xzj&kF(j5;8rd#!Km4z3m$>LhPzBp1 zm`gj!WgDb$i`F9x30$cvVJnfHOvG2xyu(R`A)KnGBnZv>(zFr;ik*ts@+8Lmp=usA#S$-M0j; zYrP#$kh{)ynxAc;A8%h~&ZooMHq^imOp4KG1J!&$gsv-zBh|{GOf6G|$mA?&!NOO% z&MQ**scw07lF zR#DOZVqIbz0S;pgY^9qDMm02!Q^0XU$UrW9uo&K~>l1{&xw>zDlx(g;~HLoW? zoubpf{2uv((8-?lJ6Wh2=r_lgUXL7(66yc{>USr2?pD4`TFGZZWvzGWh{#3K`Y=wo zXD6b^B{{OS(|F3O9%m!kjCX)7_c;zgOx|G_0~s!pL1q#D9KE9Jn(UElVBCt$h0<@uK*efGxGbEM%VSY+J zb&u-F^h$^>1anECD+q!Q@>YXjVS3NnY-bARz;vXkvOWqD_Hlu%n87>%7-A~EEIFag zY~>I#2wQ;YN)RdMM!$%FOps(AwTF+2uM1cht5eGwgLHKC}u&MR21h5Uby2t3- zjLhvaLi1BW1W9Sky8NslzsRa=J*Rt(9`ZN%k7jcgBI|r?W!d#4TbF!y% z+p6sTl(1A_j-8robA+Gum2d2D^TXQSvnz1`0`Uzzm-#(HcS@!I9vFdF3nHurS&-)i zaFQZ!rc%y{TjETcaon45GeTe$NJpjA1tDfOPG9=}irC9vo->3Hz|g;14tQmPJv48J<_0M)@fZAm%x*^ppR0rd+BMqx9v(_W|6kLqn$B&v?(YDQiN zm#gzxYu4zu?%z$7=WSqgdDsvV$HrmP&jHnlDI#bt=7-P|hIG+>{$IhlOzFt?ZuhkG zDdUij^gI}($dDmR`2PhqtTeBEDw~|Y$|i?w*3C_kMqf_#7o_2^+KVT%*rDFHWgMuR*B zybHUUTv1(x=BKVl{N=BPrJSGCD>_&a`1Y4XtDQLqCdCDpXE@X1g3C5yVbx~AVhgWN`sXLUrUh`>P)0PB-s$N8v9 zj{2iTV41w@+G~L%=>5!nvoNkE&g(VY@7A0KyHj#RvZnUu3DsvprN@7XC8LXKLmRyI=IBMpChp3~}jl6M0GXZ|zjX%U)J(vSyBX9fw)MD~YK3@IYgYms$ zsQ8<1B=El*%(-|Q8Ki{rrM3SBKPFza_FoBiC)Z-3NePyZMc!dc9tDWmZ+>+VCvVR(=PTp_^xWZ--O79;~_ z0VwXTqbLCG@9%*E?$D6S3HG20Yl)SdHqOVDo1KK~7>4a0@= zS5b98XCJc(?c)pl9-pdJz)DsFxfVZ)B^iH(5TtK2elcOo@KIDv*eVqnh_ieuex5!U zD2w+q?u7==%TV!|7)`QrR^EU9yq z%Cz!s4>X1cJf>)aTS_V{f>x#bBH8F~XX;cC#Rjhh7;k1F)ql|gsX-~|g(ejwv{T&| zq`F5^rAT-S&`NFo)v{~!6yphXe%4U4t&BZEnm0r++Z(}j6U_e_!5ku(H0ni9B!Y?3 zpODE6+wB3*l+B#4hzsI)4#qr)AH%U40B6cgI=E~GfJT-X+|WjPsc*p8+02-~oibNa zf=kkB7g%!%>M0~q!!z8H9NG%35YJa&8n{l^E9OZZRBYuBVpq~HxS`d|X{gSrejmL- zZ8e$m!#I~jmdybi!n}e-uR%zP3pf5I{{95rYgkk)t?z4)(L0Di!;%^kWHAL<2|SAI z3qp?*;)iiNyAxzNl4?QF$Lvv%!6Hb0V}i`1Ag3k^GLM4rqiBH?es_X&4+KHKwnsr; znNE%10mz0`Gn;}e1m4ofYzo4UqPcar&J!<1=#28cG9+WCaHj?Vl_W!Ia2+yIfY=qflvqP7F}A^XeVWZC?B2yPEVch~q9BdLgtcwqb_ zjD3){X?JuwsMSF2j#2~>zj#uzAgd_|KlZ{eo)8FzxX8ZmPQs+ z5Ps~1UwjNnwMO#yLXfT^h;~OQf{0%{JXsLB#J%;4?X@7K3R`XWST*&7!FgaNK8CRi z8CtNrN?#e1A|9$DSsd-Mf7Syp*dp$K2G&`1Ws*_eDn^N0$RFXjYk0+v|m9=`%)r4?jz1M@>5{`!3xb<2&LgO4qT!W-A zniDwc+bhww-|%!Yasd;S>YmS~G98b2D?b3@VAA*mKEfA2&qu|$JIGretN zRVo%|(ucR$^M!N+KHEx{NsSswB3pM%J%d(4ti z0FjRJSgofKc~&4TB&FP9{x>A&gPFIT&uW%?t++_ zkAS&Q8t;GkH57%c>j6XKR$@$*wwz+oc8-)Xl=TAH3D^QY?H%K0}=%D1!|{ zc=N}3kK=blfSl&+ITI0}Tfi$?gJRjU1)Zn&DR63JhEmyIAkDeBpJdEEsmUbY&F@e}mGR&DW7=l2c;w^}eA=s5O-pf7)k*`r$V9zN*6zzPr z{;R&qKISz5S3<-qSezj&$%QQ9Ir+S!>&%?!keu578PHQ&EyLnzwf(d7S0=weIEd+n zGu=f@H!?puJg0V$PO*=W4$>(G`6(tc#RR4p!xZP`M~CIq4%8`HN{WFx#XvtrAybTH zicw54B0oAfXLn~lPS1ho*oFI$Mz~X!J&IO_rZqSW4Z?r5gxks_;6>Cs_8aS-6%l9Iu0+4!KLISS~@$Pgct6&9WS1olQ>3RHSCLcl$9X{gP39=*b z)c}Z*2!JBaQwCUCj{Os)y59#}samSZ8EQmM*EPLH=9HDF$(j1sIcjp2{&hz5Jh|*( z6AG!HH!)egOMup`$){Q%qFIyC(*hBdn`nyMrvh)t@)e?V@FW8nF&U;$I9VYSx}hRQ z?ScbEJUCG|B`arKYyC zcaS})d&_j8BTVyks>ZoKBwVT0z2$mgz?G>Q=Q>olO25FmGN;jYr+^j#SEg#5>#sNv zkyuHhLFA)?U=wvcp>0v!-WFo!?R(Vsy|DSertf~5>2CGiU%37ieb-O%Yq4p4fB%>D zeUIikNL`=hOwNJx=1CH0-fmmFtFL06o<@%bfu11IlI&vL$+Nv-lUXKvO$Tr)oThldK%D=@~gRU1Jsp5OLnr zQ|EBFPG#Y(GQ10Q>oSxM$JXh;prVg&qx_g(9HMT^Qp0m(Qm`K;1=&@1fvK4q=tbUVr9BSLI0r8ma`ox_O1uDQEE(g?b~ zeE?JHYz^T~JlyQfQKcD2%97ls$)tJ6%HthCxTh`bXCY56cuR$FvIgo+*2v-!LY;>U zDHnh5W^xEJ#u8*QVA$nzuyXDrrP&fl5ywgT2mP${MLfgF0yU*(AWjBWKAH*sZg5uv zr_}8_6D97R7#hMk%T65>|?4=KV&JE#r3 z3~=lQsgGdW!oPuMS6(_ug->pRrrf7FLWPfLg64eCPm`-sh8`d|NuSQFbX` z@6N9Lh|N7b$VjO|xzs^Nq~Q03cf(#*CeW0oxxt+V9CV?Jq3tEF!29|ZQ;w=BU|i=3 z_c@}r3t^M)%+si5UN<^gw;E=%KoVi`hNp}n%_b<=jfpz_80qriOo!|%L5q4jN`(_# z*${1hV-3HuD^&<)h-c^0rlI7zF0pH_k$OBHNgCGUMOs*0IyoXC-rw7GGpLISd?!+k zKe40ug%zpWc!L&Fww8vo2A_VKWn>Y1(}Fx9kk0QUXl4T<4_W&o=+98>) zUg<&pt?4UI=h!KP3+SdHp$h-?D!8^|B|UVpCV?Eumse)Hrg{O zBpyPpdmP47o35EI0aG!t2Hf#HXl|qYOPb*S-3_7|%7;TvD35ImZvu&Cno)=QIZ+m| z*_ha@rKou%YQkpkBn~#K&1q|jIZXtXhIFZDO4FQ?Vy9< z9BIJTU+0EhmK#);lHKkM_3biBkZPz8B&#hj)PIv&9@&zK;6L!EfAePud#{pilh99_ zVGL4_p`9BWGD8X}P0uv^!(pr@EQV_cP!d^7Su%iTnUD-1x+)7GFJ3dkpC?RE*qx6HuXzc<%v*fpc=~ zN7LL0h9<0LH}d-n#BXs!KOpn+nxLq0+k; zG0Sc%+8#4y`NNCT)8K=5mEuB_Tb@UepldfwD6Rf(q{1i!f7$ogPT9=x`-TedFh5tT zaGm+NN`+e)+G-U(h(GZdW;+3?SZjW_QZw7|`vA54KUh`66C-N**Qo#KjDq_izdN(+ zZuw(2{)paLFoUqzc*5>1z#?y2w6fq%!otObRTfMo?EV6TbpQ)#SOxx2I1f6Y;8r)> zov;A~H@e{?^{-Mle31S%$ql#Azpiw{zi=Egpx{y*YsA+$H~h5*j8)jRGoWBJQcV$x zQFs;-fO7$;5Wol}S8or+3mTeYunN5oiUDA%DGKpkH~_uDR0FV~eIo!Tx#15qpeq*x z1{53zfX?<9H~gCZRRGB~-+aD;JfI*CVru{*{hI-3i&EY$qF`NM3jkS2q5+xg`&8%? z*iCI^!CWYY|GXC`K|`_byu{PAlt%$^V$j9u=(YL}LQUBvXw zXYL29jltW5Xs9c`h3^)~k zo;mtGNnSzyxqfj=ZnKJl;=VUgd?Q7btd38~YLVdavHw`X3N`c1QhXj@4O+bi zkP?Gk@-r<%0g~vZZ8x2brU#mzaMQ!g&y6ZP#{B$5g)cBa;jwQwKjE9tGe6;*&o)2dn@=}Ct5x_P=I1gM zo@jn9R^e;S&*xNlg88{Xg)iq%gi>zi_bDoTJ-^}CCku&+HG35WE_z?Z`qH5nt#xDj zGazwi!7>;+z83SVvfw%WwSZsu7tGgR^Z2!_fa3ss&Bd1+e(O%8u9WToy#hM|H@sZK z*d3_Q0$`^J_-PGhkAQnTO?TjiAJkxW3JUK*RTfm>mm7`|j7~v?mf;IM!bA-~k1$#P zLXR*^|3Z&2M*q6h4foZ*#_3LFEE3)#oJQ-;ViW*33*cPcS&V?dnqsK#ECz$G1`N<$ zK_QrGKyP~I0R^YH;Vv3*lI|P20-&=!PWKJy5hiO2^avd^Dj!m6Sf1`1a#6}#MU=L> zZ^%I^4M50{eM6@1tFb~EXP;FV9Wtx)2Mm?fzwaCD(#p=DthU>Ac@`JTLRi-r||xA@Q-`Q z#TWd;%TSc~Wtq_4DH4g?34Jy8O=%l7B1kv0=={b*MvT?)mx2ZZPdj>6%LNsUun zCluzXk;vRvQe`-&feaiH_b~#nQK(36gH-JsO|=i8`gLc&`=xv0qE;Lpqb^0iC+So#lbrjjYEfo?ssEYW{<~lkbp#nrrPhZ`9K|GErv%;!ZC|o!dez6�RnBYnf#&sTmp!NH*E?nm+3e9;Y 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 - -#ifdef __OBJC__ -# include -#endif diff --git a/Mac/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h b/Mac/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h deleted file mode 100644 index 6ad38f9..0000000 --- a/Mac/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h +++ /dev/null @@ -1,567 +0,0 @@ -// -// GrowlApplicationBridge.h -// Growl -// -// Created by Evan Schoenberg on Wed Jun 16 2004. -// Copyright 2004-2006 The Growl Project. All rights reserved. -// - -/*! - * @header GrowlApplicationBridge.h - * @abstract Defines the GrowlApplicationBridge class. - * @discussion This header defines the GrowlApplicationBridge class as well as - * the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant. - */ - -#ifndef __GrowlApplicationBridge_h__ -#define __GrowlApplicationBridge_h__ - -#import -#import -#import - -//Forward declarations -@protocol GrowlApplicationBridgeDelegate; - -//------------------------------------------------------------------------------ -#pragma mark - - -/*! - * @class GrowlApplicationBridge - * @abstract A class used to interface with Growl. - * @discussion This class provides a means to interface with Growl. - * - * Currently it provides a way to detect if Growl is installed and launch the - * GrowlHelperApp if it's not already running. - */ -@interface GrowlApplicationBridge : NSObject { - -} - -/*! - * @method isGrowlInstalled - * @abstract Detects whether Growl is installed. - * @discussion Determines if the Growl prefpane and its helper app are installed. - * @result this method will forever return YES. - */ -+ (BOOL) isGrowlInstalled __attribute__((deprecated)); - -/*! - * @method isGrowlRunning - * @abstract Detects whether GrowlHelperApp is currently running. - * @discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings. - * @result Returns YES if GrowlHelperApp is running, NO otherwise. - */ -+ (BOOL) isGrowlRunning; - - -/*! - * @method isMistEnabled - * @abstract Gives the caller a fairly good indication of whether or not built-in notifications(Mist) will be used. - * @discussion since this call makes use of isGrowlRunning it is entirely possible for this value to change between call and - * executing a notification dispatch - * @result Returns YES if Growl isn't reachable and the developer has not opted-out of - * Mist and the user hasn't set the global mist enable key to false. - */ -+ (BOOL)isMistEnabled; - -/*! - * @method setShouldUseBuiltInNotifications - * @abstract opt-out mechanism for the mist notification style in the event growl can't be reached. - * @discussion if growl is unavailable due to not being installed or as a result of being turned off then - * this option can enable/disable a built-in fire and forget display style - * @param should Specifies whether or not the developer wants to opt-in (default) or opt out - * of the built-in Mist style in the event Growl is unreachable. - */ -+ (void)setShouldUseBuiltInNotifications:(BOOL)should; - -/*! - * @method shouldUseBuiltInNotifications - * @abstract returns the current opt-in state of the framework's use of the Mist display style. - * @result Returns NO if the developer opt-ed out of Mist, the default value is YES. - */ -+ (BOOL)shouldUseBuiltInNotifications; - -#pragma mark - - -/*! - * @method setGrowlDelegate: - * @abstract Set the object which will be responsible for providing and receiving Growl information. - * @discussion This must be called before using GrowlApplicationBridge. - * - * The methods in the GrowlApplicationBridgeDelegate protocol are required - * and return the basic information needed to register with Growl. - * - * The methods in the GrowlApplicationBridgeDelegate_InformalProtocol - * informal protocol are individually optional. They provide a greater - * degree of interaction between the application and growl such as informing - * the application when one of its Growl notifications is clicked by the user. - * - * The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol - * informal protocol are individually optional and are only applicable when - * using the Growl-WithInstaller.framework which allows for automated Growl - * installation. - * - * When this method is called, data will be collected from inDelegate, Growl - * will be launched if it is not already running, and the application will be - * registered with Growl. - * - * If using the Growl-WithInstaller framework, if Growl is already installed - * but this copy of the framework has an updated version of Growl, the user - * will be prompted to update automatically. - * - * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol. - */ -+ (void) setGrowlDelegate:(id)inDelegate; - -/*! - * @method growlDelegate - * @abstract Return the object responsible for providing and receiving Growl information. - * @discussion See setGrowlDelegate: for details. - * @result The Growl delegate. - */ -+ (id) growlDelegate; - -#pragma mark - - -/*! - * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext: - * @abstract Send a Growl notification. - * @discussion This is the preferred means for sending a Growl notification. - * The notification name and at least one of the title and description are - * required (all three are preferred). All other parameters may be - * nil (or 0 or NO as appropriate) to accept default values. - * - * If using the Growl-WithInstaller framework, if Growl is not installed the - * user will be prompted to install Growl. If the user cancels, this method - * will have no effect until the next application session, at which time when - * it is called the user will be prompted again. The user is also given the - * option to not be prompted again. If the user does choose to install Growl, - * the requested notification will be displayed once Growl is installed and - * running. - * - * @param title The title of the notification displayed to the user. - * @param description The full description of the notification displayed to the user. - * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. - * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. - * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. - * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. - * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). - */ -+ (void) notifyWithTitle:(NSString *)title - description:(NSString *)description - notificationName:(NSString *)notifName - iconData:(NSData *)iconData - priority:(signed int)priority - isSticky:(BOOL)isSticky - clickContext:(id)clickContext; - -/*! - * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier: - * @abstract Send a Growl notification. - * @discussion This is the preferred means for sending a Growl notification. - * The notification name and at least one of the title and description are - * required (all three are preferred). All other parameters may be - * nil (or 0 or NO as appropriate) to accept default values. - * - * If using the Growl-WithInstaller framework, if Growl is not installed the - * user will be prompted to install Growl. If the user cancels, this method - * will have no effect until the next application session, at which time when - * it is called the user will be prompted again. The user is also given the - * option to not be prompted again. If the user does choose to install Growl, - * the requested notification will be displayed once Growl is installed and - * running. - * - * @param title The title of the notification displayed to the user. - * @param description The full description of the notification displayed to the user. - * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. - * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. - * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. - * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. - * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). - * @param identifier An identifier for this notification. Notifications with equal identifiers are coalesced. - */ -+ (void) notifyWithTitle:(NSString *)title - description:(NSString *)description - notificationName:(NSString *)notifName - iconData:(NSData *)iconData - priority:(signed int)priority - isSticky:(BOOL)isSticky - clickContext:(id)clickContext - identifier:(NSString *)identifier; - -/*! @method notifyWithDictionary: - * @abstract Notifies using a userInfo dictionary suitable for passing to - * NSDistributedNotificationCenter. - * @param userInfo The dictionary to notify with. - * @discussion Before Growl 0.6, your application would have posted - * notifications using NSDistributedNotificationCenter by - * creating a userInfo dictionary with the notification data. This had the - * advantage of allowing you to add other data to the dictionary for programs - * besides Growl that might be listening. - * - * This method allows you to use such dictionaries without being restricted - * to using NSDistributedNotificationCenter. The keys for this dictionary - * can be found in GrowlDefines.h. - */ -+ (void) notifyWithDictionary:(NSDictionary *)userInfo; - -#pragma mark - - -/*! @method registerWithDictionary: - * @abstract Register your application with Growl without setting a delegate. - * @discussion When you call this method with a dictionary, - * GrowlApplicationBridge registers your application using that dictionary. - * If you pass nil, GrowlApplicationBridge will ask the delegate - * (if there is one) for a dictionary, and if that doesn't work, it will look - * in your application's bundle for an auto-discoverable plist. - * (XXX refer to more information on that) - * - * If you pass a dictionary to this method, it must include the - * GROWL_APP_NAME key, unless a delegate is set. - * - * This method is mainly an alternative to the delegate system introduced - * with Growl 0.6. Without a delegate, you cannot receive callbacks such as - * -growlIsReady (since they are sent to the delegate). You can, - * however, set a delegate after registering without one. - * - * This method was introduced in Growl.framework 0.7. - */ -+ (BOOL) registerWithDictionary:(NSDictionary *)regDict; - -/*! @method reregisterGrowlNotifications - * @abstract Reregister the notifications for this application. - * @discussion This method does not normally need to be called. If your - * application changes what notifications it is registering with Growl, call - * this method to have the Growl delegate's - * -registrationDictionaryForGrowl method called again and the - * Growl registration information updated. - * - * This method is now implemented using -registerWithDictionary:. - */ -+ (void) reregisterGrowlNotifications; - -#pragma mark - - -/*! @method setWillRegisterWhenGrowlIsReady: - * @abstract Tells GrowlApplicationBridge to register with Growl when Growl - * launches (or not). - * @discussion When Growl has started listening for notifications, it posts a - * GROWL_IS_READY notification on the Distributed Notification - * Center. GrowlApplicationBridge listens for this notification, using it to - * perform various tasks (such as calling your delegate's - * -growlIsReady method, if it has one). If this method is - * called with YES, one of those tasks will be to reregister - * with Growl (in the manner of -reregisterGrowlNotifications). - * - * This attribute is automatically set back to NO (the default) - * after every GROWL_IS_READY notification. - * @param flag YES if you want GrowlApplicationBridge to register with - * Growl when next it is ready; NO if not. - */ -+ (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag; - -/*! @method willRegisterWhenGrowlIsReady - * @abstract Reports whether GrowlApplicationBridge will register with Growl - * when Growl next launches. - * @result YES if GrowlApplicationBridge will register with Growl - * when next it posts GROWL_IS_READY; NO if not. - */ -+ (BOOL) willRegisterWhenGrowlIsReady; - -#pragma mark - - -/*! @method registrationDictionaryFromDelegate - * @abstract Asks the delegate for a registration dictionary. - * @discussion If no delegate is set, or if the delegate's - * -registrationDictionaryForGrowl method returns - * nil, this method returns nil. - * - * This method does not attempt to clean up the dictionary in any way - for - * example, if it is missing the GROWL_APP_NAME key, the result - * will be missing it too. Use +[GrowlApplicationBridge - * registrationDictionaryByFillingInDictionary:] or - * +[GrowlApplicationBridge - * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try - * to fill in missing keys. - * - * This method was introduced in Growl.framework 0.7. - * @result A registration dictionary. - */ -+ (NSDictionary *) registrationDictionaryFromDelegate; - -/*! @method registrationDictionaryFromBundle: - * @abstract Looks in a bundle for a registration dictionary. - * @discussion This method looks in a bundle for an auto-discoverable - * registration dictionary file using -[NSBundle - * pathForResource:ofType:]. If it finds one, it loads the file using - * +[NSDictionary dictionaryWithContentsOfFile:] and returns the - * result. - * - * If you pass nil as the bundle, the main bundle is examined. - * - * This method does not attempt to clean up the dictionary in any way - for - * example, if it is missing the GROWL_APP_NAME key, the result - * will be missing it too. Use +[GrowlApplicationBridge - * registrationDictionaryByFillingInDictionary:] or - * +[GrowlApplicationBridge - * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try - * to fill in missing keys. - * - * This method was introduced in Growl.framework 0.7. - * @result A registration dictionary. - */ -+ (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle; - -/*! @method bestRegistrationDictionary - * @abstract Obtains a registration dictionary, filled out to the best of - * GrowlApplicationBridge's knowledge. - * @discussion This method creates a registration dictionary as best - * GrowlApplicationBridge knows how. - * - * First, GrowlApplicationBridge contacts the Growl delegate (if there is - * one) and gets the registration dictionary from that. If no such dictionary - * was obtained, GrowlApplicationBridge looks in your application's main - * bundle for an auto-discoverable registration dictionary file. If that - * doesn't exist either, this method returns nil. - * - * Second, GrowlApplicationBridge calls - * +registrationDictionaryByFillingInDictionary: with whatever - * dictionary was obtained. The result of that method is the result of this - * method. - * - * GrowlApplicationBridge uses this method when you call - * +setGrowlDelegate:, or when you call - * +registerWithDictionary: with nil. - * - * This method was introduced in Growl.framework 0.7. - * @result A registration dictionary. - */ -+ (NSDictionary *) bestRegistrationDictionary; - -#pragma mark - - -/*! @method registrationDictionaryByFillingInDictionary: - * @abstract Tries to fill in missing keys in a registration dictionary. - * @discussion This method examines the passed-in dictionary for missing keys, - * and tries to work out correct values for them. As of 0.7, it uses: - * - * Key Value - * --- ----- - * GROWL_APP_NAME CFBundleExecutableName - * GROWL_APP_ICON_DATA The data of the icon of the application. - * GROWL_APP_LOCATION The location of the application. - * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL - * - * Keys are only filled in if missing; if a key is present in the dictionary, - * its value will not be changed. - * - * This method was introduced in Growl.framework 0.7. - * @param regDict The dictionary to fill in. - * @result The dictionary with the keys filled in. This is an autoreleased - * copy of regDict. - */ -+ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict; - -/*! @method registrationDictionaryByFillingInDictionary:restrictToKeys: - * @abstract Tries to fill in missing keys in a registration dictionary. - * @discussion This method examines the passed-in dictionary for missing keys, - * and tries to work out correct values for them. As of 0.7, it uses: - * - * Key Value - * --- ----- - * GROWL_APP_NAME CFBundleExecutableName - * GROWL_APP_ICON_DATA The data of the icon of the application. - * GROWL_APP_LOCATION The location of the application. - * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL - * - * Only those keys that are listed in keys will be filled in. - * Other missing keys are ignored. Also, keys are only filled in if missing; - * if a key is present in the dictionary, its value will not be changed. - * - * This method was introduced in Growl.framework 0.7. - * @param regDict The dictionary to fill in. - * @param keys The keys to fill in. If nil, any missing keys are filled in. - * @result The dictionary with the keys filled in. This is an autoreleased - * copy of regDict. - */ -+ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys; - -/*! @brief Tries to fill in missing keys in a notification dictionary. - * @param notifDict The dictionary to fill in. - * @return The dictionary with the keys filled in. This will be a separate instance from \a notifDict. - * @discussion This function examines the \a notifDict for missing keys, and - * tries to get them from the last known registration dictionary. As of 1.1, - * the keys that it will look for are: - * - * \li GROWL_APP_NAME - * \li GROWL_APP_ICON_DATA - * - * @since Growl.framework 1.1 - */ -+ (NSDictionary *) notificationDictionaryByFillingInDictionary:(NSDictionary *)regDict; - -+ (NSDictionary *) frameworkInfoDictionary; - -#pragma mark - - -/*! - *@method growlURLSchemeAvailable - *@abstract Lets the app know whether growl:// is registered on the system, used for certain methods below this - *@return Returns whether growl:// is registered on the system - *@discussion Methods such as openGrowlPreferences rely on the growl:// URL scheme to function - * Further, this method can provide a check on whether Growl is installed, - * however, the framework will not be relying on this method for choosing when/how to notify, - * and it is not recommended that the app rely on it for other than whether to use growl:// methods - *@since Growl.framework 1.4 - */ -+ (BOOL) isGrowlURLSchemeAvailable; - -/*! - * @method openGrowlPreferences: - * @abstract Open Growl preferences, optionally to this app's settings, growl:// method - * @param showApp Whether to show the application's settings, otherwise just opens to the last position - * @return Return's whether opening the URL was succesfull or not. - * @discussion Will launch if Growl is installed, but not running, and open the preferences window - * Uses growl:// URL scheme - * @since Growl.framework 1.4 - */ -+ (BOOL) openGrowlPreferences:(BOOL)showApp; - -@end - -//------------------------------------------------------------------------------ -#pragma mark - - -/*! - * @protocol GrowlApplicationBridgeDelegate - * @abstract Required protocol for the Growl delegate. - * @discussion The methods in this protocol are optional and are called - * automatically as needed by GrowlApplicationBridge. See - * +[GrowlApplicationBridge setGrowlDelegate:]. - * See also GrowlApplicationBridgeDelegate_InformalProtocol. - */ - -@protocol GrowlApplicationBridgeDelegate - -@optional - -/*! - * @method registrationDictionaryForGrowl - * @abstract Return the dictionary used to register this application with Growl. - * @discussion The returned dictionary gives Growl the complete list of - * notifications this application will ever send, and it also specifies which - * notifications should be enabled by default. Each is specified by an array - * of NSString objects. - * - * For most applications, these two arrays can be the same (if all sent - * notifications should be displayed by default). - * - * The NSString objects of these arrays will correspond to the - * notificationName: parameter passed in - * +[GrowlApplicationBridge - * notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:] calls. - * - * The dictionary should have the required key object pairs: - * key: GROWL_NOTIFICATIONS_ALL object: NSArray of NSString objects - * key: GROWL_NOTIFICATIONS_DEFAULT object: NSArray of NSString objects - * - * The dictionary may have the following key object pairs: - * key: GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES object: NSDictionary of key: notification name object: human-readable notification name - * - * You do not need to implement this method if you have an auto-discoverable - * plist file in your app bundle. (XXX refer to more information on that) - * - * @result The NSDictionary to use for registration. - */ -- (NSDictionary *) registrationDictionaryForGrowl; - -/*! - * @method applicationNameForGrowl - * @abstract Return the name of this application which will be used for Growl bookkeeping. - * @discussion This name is used both internally and in the Growl preferences. - * - * This should remain stable between different versions and incarnations of - * your application. - * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and - * "SurfWriter Lite" are not. - * - * You do not need to implement this method if you are providing the - * application name elsewhere, meaning in an auto-discoverable plist file in - * your app bundle (XXX refer to more information on that) or in the result - * of -registrationDictionaryForGrowl. - * - * @result The name of the application using Growl. - */ -- (NSString *) applicationNameForGrowl; - -/*! - * @method applicationIconForGrowl - * @abstract Return the NSImage to treat as the application icon. - * @discussion The delegate may optionally return an NSImage - * object to use as the application icon. If this method is not implemented, - * {{{-applicationIconDataForGrowl}}} is tried. If that method is not - * implemented, the application's own icon is used. Neither method is - * generally needed. - * @result The NSImage to treat as the application icon. - */ -- (NSImage *) applicationIconForGrowl; - -/*! - * @method applicationIconDataForGrowl - * @abstract Return the NSData to treat as the application icon. - * @discussion The delegate may optionally return an NSData - * object to use as the application icon; if this is not implemented, the - * application's own icon is used. This is not generally needed. - * @result The NSData to treat as the application icon. - * @deprecated In version 1.1, in favor of {{{-applicationIconForGrowl}}}. - */ -- (NSData *) applicationIconDataForGrowl; - -/*! - * @method growlIsReady - * @abstract Informs the delegate that Growl has launched. - * @discussion Informs the delegate that Growl (specifically, the - * GrowlHelperApp) was launched successfully. The application can take actions - * with the knowledge that Growl is installed and functional. - */ -- (void) growlIsReady; - -/*! - * @method growlNotificationWasClicked: - * @abstract Informs the delegate that a Growl notification was clicked. - * @discussion Informs the delegate that a Growl notification was clicked. It - * is only sent for notifications sent with a non-nil - * clickContext, so if you want to receive a message when a notification is - * clicked, clickContext must not be nil when calling - * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. - * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. - */ -- (void) growlNotificationWasClicked:(id)clickContext; - -/*! - * @method growlNotificationTimedOut: - * @abstract Informs the delegate that a Growl notification timed out. - * @discussion Informs the delegate that a Growl notification timed out. It - * is only sent for notifications sent with a non-nil - * clickContext, so if you want to receive a message when a notification is - * clicked, clickContext must not be nil when calling - * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. - * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. - */ -- (void) growlNotificationTimedOut:(id)clickContext; - - -/*! - * @method hasNetworkClientEntitlement - * @abstract Used only in sandboxed situations since we don't know whether the app has com.apple.security.network.client entitlement - * @discussion GrowlDelegate calls to find out if we have the com.apple.security.network.client entitlement, - * since we can't find this out without hitting the sandbox. We only call it if we detect that the application is sandboxed. - */ -- (BOOL) hasNetworkClientEntitlement; - -@end - -#pragma mark - - -#endif /* __GrowlApplicationBridge_h__ */ diff --git a/Mac/Growl.framework/Versions/A/Headers/GrowlDefines.h b/Mac/Growl.framework/Versions/A/Headers/GrowlDefines.h deleted file mode 100644 index 0a196f1..0000000 --- a/Mac/Growl.framework/Versions/A/Headers/GrowlDefines.h +++ /dev/null @@ -1,386 +0,0 @@ -// -// GrowlDefines.h -// - -#ifndef _GROWLDEFINES_H -#define _GROWLDEFINES_H - -#ifdef __OBJC__ -#define XSTR(x) (@x) -#else -#define XSTR CFSTR -#endif - -/*! @header GrowlDefines.h - * @abstract Defines all the notification keys. - * @discussion Defines all the keys used for registration with Growl and for - * Growl notifications. - * - * Most applications should use the functions or methods of Growl.framework - * instead of posting notifications such as those described here. - * @updated 2004-01-25 - */ - -// UserInfo Keys for Registration -#pragma mark UserInfo Keys for Registration - -/*! @group Registration userInfo keys */ -/* @abstract Keys for the userInfo dictionary of a GROWL_APP_REGISTRATION distributed notification. - * @discussion The values of these keys describe the application and the - * notifications it may post. - * - * Your application must register with Growl before it can post Growl - * notifications (and have them not be ignored). However, as of Growl 0.6, - * posting GROWL_APP_REGISTRATION notifications directly is no longer the - * preferred way to register your application. Your application should instead - * use Growl.framework's delegate system. - * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for - * more information. - */ - -/*! @defined GROWL_APP_NAME - * @abstract The name of your application. - * @discussion The name of your application. This should remain stable between - * different versions and incarnations of your application. - * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and - * "SurfWriter Lite" are not. - */ -#define GROWL_APP_NAME XSTR("ApplicationName") -/*! @defined GROWL_APP_ID - * @abstract The bundle identifier of your application. - * @discussion The bundle identifier of your application. This key should - * be unique for your application while there may be several applications - * with the same GROWL_APP_NAME. - * This key is optional. - */ -#define GROWL_APP_ID XSTR("ApplicationId") -/*! @defined GROWL_APP_ICON_DATA - * @abstract The image data for your application's icon. - * @discussion Image data representing your application's icon. This may be - * superimposed on a notification icon as a badge, used as the notification - * icon when a notification-specific icon is not supplied, or ignored - * altogether, depending on the display. Must be in a format supported by - * NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_APP_ICON_DATA XSTR("ApplicationIcon") -/*! @defined GROWL_NOTIFICATIONS_DEFAULT - * @abstract The array of notifications to turn on by default. - * @discussion These are the names of the notifications that should be enabled - * by default when your application registers for the first time. If your - * application reregisters, Growl will look here for any new notification - * names found in GROWL_NOTIFICATIONS_ALL, but ignore any others. - */ -#define GROWL_NOTIFICATIONS_DEFAULT XSTR("DefaultNotifications") -/*! @defined GROWL_NOTIFICATIONS_ALL - * @abstract The array of all notifications your application can send. - * @discussion These are the names of all of the notifications that your - * application may post. See GROWL_NOTIFICATION_NAME for a discussion of good - * notification names. - */ -#define GROWL_NOTIFICATIONS_ALL XSTR("AllNotifications") -/*! @defined GROWL_NOTIFICATIONS_HUMAN_READABLE_DESCRIPTIONS - * @abstract A dictionary of human-readable names for your notifications. - * @discussion By default, the Growl UI will display notifications by the names given in GROWL_NOTIFICATIONS_ALL - * which correspond to the GROWL_NOTIFICATION_NAME. This dictionary specifies the human-readable name to display. - * The keys of the dictionary are GROWL_NOTIFICATION_NAME strings; the objects are the human-readable versions. - * For any GROWL_NOTIFICATION_NAME not specific in this dictionary, the GROWL_NOTIFICATION_NAME will be displayed. - * - * This key is optional. - */ -#define GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES XSTR("HumanReadableNames") -/*! @defined GROWL_NOTIFICATIONS_DESCRIPTIONS -* @abstract A dictionary of descriptions of _when_ each notification occurs -* @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are -* descriptions of _when_ each notification occurs, such as "You received a new mail message" or -* "A file finished downloading". -* -* This key is optional. -*/ -#define GROWL_NOTIFICATIONS_DESCRIPTIONS XSTR("NotificationDescriptions") -/*! @defined GROWL_NOTIFICATIONS_ICONS - * @abstract A dictionary of icons for each notification - * @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are - * icons for each notification, for GNTP spec - * - * This key is optional. - */ -#define GROWL_NOTIFICATIONS_ICONS XSTR("NotificationIcons") - -/*! @defined GROWL_TICKET_VERSION - * @abstract The version of your registration ticket. - * @discussion Include this key in a ticket plist file that you put in your - * application bundle for auto-discovery. The current ticket version is 1. - */ -#define GROWL_TICKET_VERSION XSTR("TicketVersion") -// UserInfo Keys for Notifications -#pragma mark UserInfo Keys for Notifications - -/*! @group Notification userInfo keys */ -/* @abstract Keys for the userInfo dictionary of a GROWL_NOTIFICATION distributed notification. - * @discussion The values of these keys describe the content of a Growl - * notification. - * - * Not all of these keys are supported by all displays. Only the name, title, - * and description of a notification are universal. Most of the built-in - * displays do support all of these keys, and most other visual displays - * probably will also. But, as of 0.6, the Log, MailMe, and Speech displays - * support only textual data. - */ - -/*! @defined GROWL_NOTIFICATION_NAME - * @abstract The name of the notification. - * @discussion The name of the notification. Note that if you do not define - * GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES when registering your ticket originally this name - * will the one displayed within the Growl preference pane and should be human-readable. - */ -#define GROWL_NOTIFICATION_NAME XSTR("NotificationName") -/*! @defined GROWL_NOTIFICATION_TITLE - * @abstract The title to display in the notification. - * @discussion The title of the notification. Should be very brief. - * The title usually says what happened, e.g. "Download complete". - */ -#define GROWL_NOTIFICATION_TITLE XSTR("NotificationTitle") -/*! @defined GROWL_NOTIFICATION_DESCRIPTION - * @abstract The description to display in the notification. - * @discussion The description should be longer and more verbose than the title. - * The description usually tells the subject of the action, - * e.g. "Growl-0.6.dmg downloaded in 5.02 minutes". - */ -#define GROWL_NOTIFICATION_DESCRIPTION XSTR("NotificationDescription") -/*! @defined GROWL_NOTIFICATION_ICON - * @discussion Image data for the notification icon. Image data must be in a format - * supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_NOTIFICATION_ICON_DATA XSTR("NotificationIcon") -/*! @defined GROWL_NOTIFICATION_APP_ICON - * @discussion Image data for the application icon, in case GROWL_APP_ICON does - * not apply for some reason. Image data be in a format supported by NSImage, such - * as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_NOTIFICATION_APP_ICON_DATA XSTR("NotificationAppIcon") -/*! @defined GROWL_NOTIFICATION_PRIORITY - * @discussion The priority of the notification as an integer number from - * -2 to +2 (+2 being highest). - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_NOTIFICATION_PRIORITY XSTR("NotificationPriority") -/*! @defined GROWL_NOTIFICATION_STICKY - * @discussion A Boolean number controlling whether the notification is sticky. - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_NOTIFICATION_STICKY XSTR("NotificationSticky") -/*! @defined GROWL_NOTIFICATION_CLICK_CONTEXT - * @abstract Identifies which notification was clicked. - * @discussion An identifier for the notification for clicking purposes. - * - * This will be passed back to the application when the notification is - * clicked. It must be plist-encodable (a data, dictionary, array, number, or - * string object), and it should be unique for each notification you post. - * A good click context would be a UUID string returned by NSProcessInfo or - * CFUUID. - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_NOTIFICATION_CLICK_CONTEXT XSTR("NotificationClickContext") - -/*! @defined GROWL_NOTIFICATION_IDENTIFIER - * @abstract An identifier for the notification for coalescing purposes. - * Notifications with the same identifier fall into the same class; only - * the last notification of a class is displayed on the screen. If a - * notification of the same class is currently being displayed, it is - * replaced by this notification. - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_NOTIFICATION_IDENTIFIER XSTR("GrowlNotificationIdentifier") - -/*! @defined GROWL_APP_PID - * @abstract The process identifier of the process which sends this - * notification. If this field is set, the application will only receive - * clicked and timed out notifications which originate from this process. - * - * Optional. - */ -#define GROWL_APP_PID XSTR("ApplicationPID") - -/*! @defined GROWL_NOTIFICATION_PROGRESS -* @abstract If this key is set, it should contain a double value wrapped -* in a NSNumber which describes some sort of progress (from 0.0 to 100.0). -* If this is key is not set, no progress bar is shown. -* -* Optional. Not supported by all display plugins. -*/ -#define GROWL_NOTIFICATION_PROGRESS XSTR("NotificationProgress") - -/*! @defined GROWL_NOTIFICATION_ALREADY_SHOWN - * @abstract If this key is set, it should contain a bool value wrapped - * in a NSNumber which describes whether the notification has - * already been displayed, for instance by built in Notification - * Center support. This value can be used to allow display - * plugins to skip a notification, while still allowing Growl - * actions to run on them. - * - * Optional. Not supported by all display plugins. - */ -#define GROWL_NOTIFICATION_ALREADY_SHOWN XSTR("AlreadyShown") - - -// Notifications -#pragma mark Notifications - -/*! @group Notification names */ -/* @abstract Names of distributed notifications used by Growl. - * @discussion These are notifications used by applications (directly or - * indirectly) to interact with Growl, and by Growl for interaction between - * its components. - * - * Most of these should no longer be used in Growl 0.6 and later, in favor of - * Growl.framework's GrowlApplicationBridge APIs. - */ - -/*! @defined GROWL_APP_REGISTRATION - * @abstract The distributed notification for registering your application. - * @discussion This is the name of the distributed notification that can be - * used to register applications with Growl. - * - * The userInfo dictionary for this notification can contain these keys: - *
          - *
        • GROWL_APP_NAME
        • - *
        • GROWL_APP_ICON_DATA
        • - *
        • GROWL_NOTIFICATIONS_ALL
        • - *
        • GROWL_NOTIFICATIONS_DEFAULT
        • - *
        - * - * No longer recommended as of Growl 0.6. An alternate method of registering - * is to use Growl.framework's delegate system. - * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for - * more information. - */ -#define GROWL_APP_REGISTRATION XSTR("GrowlApplicationRegistrationNotification") -/*! @defined GROWL_APP_REGISTRATION_CONF - * @abstract The distributed notification for confirming registration. - * @discussion The name of the distributed notification sent to confirm the - * registration. Used by the Growl preference pane. Your application probably - * does not need to use this notification. - */ -#define GROWL_APP_REGISTRATION_CONF XSTR("GrowlApplicationRegistrationConfirmationNotification") -/*! @defined GROWL_NOTIFICATION - * @abstract The distributed notification for Growl notifications. - * @discussion This is what it all comes down to. This is the name of the - * distributed notification that your application posts to actually send a - * Growl notification. - * - * The userInfo dictionary for this notification can contain these keys: - *
          - *
        • GROWL_NOTIFICATION_NAME (required)
        • - *
        • GROWL_NOTIFICATION_TITLE (required)
        • - *
        • GROWL_NOTIFICATION_DESCRIPTION (required)
        • - *
        • GROWL_NOTIFICATION_ICON
        • - *
        • GROWL_NOTIFICATION_APP_ICON
        • - *
        • GROWL_NOTIFICATION_PRIORITY
        • - *
        • GROWL_NOTIFICATION_STICKY
        • - *
        • GROWL_NOTIFICATION_CLICK_CONTEXT
        • - *
        • GROWL_APP_NAME (required)
        • - *
        - * - * No longer recommended as of Growl 0.6. Three alternate methods of posting - * notifications are +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:], - * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext, and - * Growl_PostNotification. - */ -#define GROWL_NOTIFICATION XSTR("GrowlNotification") -/*! @defined GROWL_PING - * @abstract A distributed notification to check whether Growl is running. - * @discussion This is used by the Growl preference pane. If it receives a - * GROWL_PONG, the preference pane takes this to mean that Growl is running. - */ -#define GROWL_PING XSTR("Honey, Mind Taking Out The Trash") -/*! @defined GROWL_PONG - * @abstract The distributed notification sent in reply to GROWL_PING. - * @discussion GrowlHelperApp posts this in reply to GROWL_PING. - */ -#define GROWL_PONG XSTR("What Do You Want From Me, Woman") -/*! @defined GROWL_IS_READY - * @abstract The distributed notification sent when Growl starts up. - * @discussion GrowlHelperApp posts this when it has begin listening on all of - * its sources for new notifications. GrowlApplicationBridge (in - * Growl.framework), upon receiving this notification, reregisters using the - * registration dictionary supplied by its delegate. - */ -#define GROWL_IS_READY XSTR("Lend Me Some Sugar; I Am Your Neighbor!") - - -/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX - * @abstract Part of the name of the distributed notification sent when a supported notification is clicked. - * @discussion When a Growl notification with a click context is clicked on by - * the user, Growl posts a distributed notification whose name is in the format: - * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX] - * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. - */ -#define GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX XSTR("GrowlClicked!") - -/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX - * @abstract Part of the name of the distributed notification sent when a supported notification times out without being clicked. - * @discussion When a Growl notification with a click context times out, Growl posts a distributed notification - * whose name is in the format: - * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX] - * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. - * NOTE: The user may have actually clicked the 'close' button; this triggers an *immediate* time-out of the notification. - */ -#define GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX XSTR("GrowlTimedOut!") - -/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON - * @abstract The distributed notification sent when the Notification Center support is toggled on in Growl 2.0 - * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent - * to inform all running apps that they should now speak to Notification Center directly. - */ -#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_ON XSTR("GrowlNotificationCenterOn!") - -/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF - * @abstract The distributed notification sent when the Notification Center support is toggled off in Growl 2.0 - * @discussion When the user enables Notification Center support in Growl 2.0, this notification is sent - * to inform all running apps that they should no longer speak to Notification Center directly. - */ -#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_OFF XSTR("GrowlNotificationCenterOff!") - -/*! @defined GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY - * @abstract The distributed notification sent by an application to query Growl 2.0's notification center support. - * @discussion When an app starts up, it will send this query to get Growl 2.0 to spit out whether notification - * center support is on or off. - */ -#define GROWL_DISTRIBUTED_NOTIFICATION_NOTIFICATIONCENTER_QUERY XSTR("GrowlNotificationCenterYN?") - - -/*! @group Other symbols */ -/* Symbols which don't fit into any of the other categories. */ - -/*! @defined GROWL_KEY_CLICKED_CONTEXT - * @abstract Used internally as the key for the clickedContext passed over DNC. - * @discussion This key is used in GROWL_NOTIFICATION_CLICKED, and contains the - * click context that was supplied in the original notification. - */ -#define GROWL_KEY_CLICKED_CONTEXT XSTR("ClickedContext") -/*! @defined GROWL_REG_DICT_EXTENSION - * @abstract The filename extension for registration dictionaries. - * @discussion The GrowlApplicationBridge in Growl.framework registers with - * Growl by creating a file with the extension of .(GROWL_REG_DICT_EXTENSION) - * and opening it in the GrowlHelperApp. This happens whether or not Growl is - * running; if it was stopped, it quits immediately without listening for - * notifications. - */ -#define GROWL_REG_DICT_EXTENSION XSTR("growlRegDict") - - -#define GROWL_POSITION_PREFERENCE_KEY @"GrowlSelectedPosition" - -#define GROWL_PLUGIN_CONFIG_ID XSTR("GrowlPluginConfigurationID") - -#endif //ndef _GROWLDEFINES_H diff --git a/Mac/Growl.framework/Versions/A/Headers/GrowlPluginPreferenceStrings.h b/Mac/Growl.framework/Versions/A/Headers/GrowlPluginPreferenceStrings.h deleted file mode 100644 index 4632ba6..0000000 --- a/Mac/Growl.framework/Versions/A/Headers/GrowlPluginPreferenceStrings.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// GrowlPluginPreferenceStrings.h -// Growl -// -// Created by Daniel Siemer on 1/30/12. -// Copyright (c) 2012 The Growl Project. All rights reserved. -// - -/* FOR GROWL DEVELOPED COCOA PLUGINS ONLY AT THIS TIME, NOT STABLE */ - -#import - -#define GrowlDisplayOpacity NSLocalizedStringFromTable(@"Opacity:", @"PluginPrefStrings", @"How clear the display is") -#define GrowlDisplayDuration NSLocalizedStringFromTable(@"Duration:", @"PluginPrefStrings", @"How long a notification will stay on screen") - -#define GrowlDisplayPriority NSLocalizedStringFromTable(@"Priority: (low to high)", @"PluginPrefStrings", @"Label for columns of color wells for various priority levels") -#define GrowlDisplayPriorityLow NSLocalizedStringFromTable(@"Very Low", @"PluginPrefStrings", @"Notification Priority Very Low") -#define GrowlDisplayPriorityModerate NSLocalizedStringFromTable(@"Moderate", @"PluginPrefStrings", @"Notification Priority Moderate") -#define GrowlDisplayPriorityNormal NSLocalizedStringFromTable(@"Normal", @"PluginPrefStrings", @"Notification Priority Normal") -#define GrowlDisplayPriorityHigh NSLocalizedStringFromTable(@"High", @"PluginPrefStrings", @"Notification Priority High") -#define GrowlDisplayPriorityEmergency NSLocalizedStringFromTable(@"Emergency", @"PluginPrefStrings", @"Notification Priority Emergency") - -#define GrowlDisplayTextColor NSLocalizedStringFromTable(@"Text", @"PluginPrefStrings", @"Label for row of color wells for the text element of the plugin") -#define GrowlDisplayBackgroundColor NSLocalizedStringFromTable(@"Background", @"PluginPrefStrings", @"Label for row of color wells for the background of the plugin") - -#define GrowlDisplayLimitLines NSLocalizedStringFromTable(@"Limit to 2-5 lines", @"PluginPrefStrings", @"Checkbox to limit the display to 2-5 lines") -#define GrowlDisplayScreen NSLocalizedStringFromTable(@"Screen:", @"PluginPrefStrings", @"Label for box to select screen for display to use") -#define GrowlDisplaySize NSLocalizedStringFromTable(@"Size:", @"PluginPrefStrings", @"Label for pop up box for selecting the size of the display") -#define GrowlDisplaySizeNormal NSLocalizedStringFromTable(@"Normal", @"PluginPrefStrings", @"Normal size for the display") -#define GrowlDisplaySizeLarge NSLocalizedStringFromTable(@"Large", @"PluginPrefStrings", @"Large size for the display") -#define GrowlDisplaySizeSmall NSLocalizedStringFromTable(@"Small", @"PluginPrefStrings", @"Small size for the display") - -#define GrowlDisplayFloatingIcon NSLocalizedStringFromTable(@"Floating Icon", @"PluginPrefStrings", @"Label for checkbox that says to do a floating icon") - -#define GrowlDisplayEffect NSLocalizedStringFromTable(@"Effect:", @"PluginPrefStrings", @"Label for the effect to use") -#define GrowlDisplayEffectSlide NSLocalizedStringFromTable(@"Slide", @"PluginPrefStrings", @"A slide effect") -#define GrowlDisplayEffectFade NSLocalizedStringFromTable(@"Fade", @"PluginPrefStrings", @"A fade effect") - -@interface GrowlPluginPreferenceStrings : NSObject - -@property (nonatomic, retain) NSString *growlDisplayOpacity; -@property (nonatomic, retain) NSString *growlDisplayDuration; - -@property (nonatomic, retain) NSString *growlDisplayPriority; -@property (nonatomic, retain) NSString *growlDisplayPriorityVeryLow; -@property (nonatomic, retain) NSString *growlDisplayPriorityModerate; -@property (nonatomic, retain) NSString *growlDisplayPriorityNormal; -@property (nonatomic, retain) NSString *growlDisplayPriorityHigh; -@property (nonatomic, retain) NSString *growlDisplayPriorityEmergency; - -@property (nonatomic, retain) NSString *growlDisplayTextColor; -@property (nonatomic, retain) NSString *growlDisplayBackgroundColor; - -@property (nonatomic, retain) NSString *growlDisplayLimitLines; -@property (nonatomic, retain) NSString *growlDisplayScreen; -@property (nonatomic, retain) NSString *growlDisplaySize; -@property (nonatomic, retain) NSString *growlDisplaySizeNormal; -@property (nonatomic, retain) NSString *growlDisplaySizeLarge; -@property (nonatomic, retain) NSString *growlDisplaySizeSmall; - -@property (nonatomic, retain) NSString *growlDisplayFloatingIcon; - -@property (nonatomic, retain) NSString *effectLabel; -@property (nonatomic, retain) NSString *slideEffect; -@property (nonatomic, retain) NSString *fadeEffect; - -@end diff --git a/Mac/Growl.framework/Versions/A/Resources/Info.plist b/Mac/Growl.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index 4d9bd5f..0000000 --- a/Mac/Growl.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,40 +0,0 @@ - - - - - BuildMachineOSBuild - 12A269 - CFBundleDevelopmentRegion - English - CFBundleExecutable - Growl - CFBundleIdentifier - com.growl.growlframework - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.0 - CFBundleSignature - GRRR - CFBundleVersion - 2.0 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 4F250 - DTPlatformVersion - GM - DTSDKBuild - 12A264 - DTSDKName - macosx10.8 - DTXcode - 0440 - DTXcodeBuild - 4F250 - NSPrincipalClass - GrowlApplicationBridge - - diff --git a/Mac/Growl.framework/Versions/A/_CodeSignature/CodeResources b/Mac/Growl.framework/Versions/A/_CodeSignature/CodeResources deleted file mode 100644 index d4a95e2..0000000 --- a/Mac/Growl.framework/Versions/A/_CodeSignature/CodeResources +++ /dev/null @@ -1,34 +0,0 @@ - - - - - files - - Resources/Info.plist - - lnx8exuPwE/bsUq32R5DXDQholc= - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^version.plist$ - - - - diff --git a/Mac/Growl.framework/Versions/Current b/Mac/Growl.framework/Versions/Current deleted file mode 120000 index 8c7e5a6..0000000 --- a/Mac/Growl.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/Mac/MimeType.h b/Mac/MimeType.h deleted file mode 100644 index 2072838..0000000 --- a/Mac/MimeType.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// MimeType.h -// bungloo -// -// Created by Jeena on 23/11/2012. -// -// - -#import - -@interface MimeType : NSObject -+(NSString *)mimeTypeForFileAtPath:(NSString *)path error:(NSError **)err; -@end diff --git a/Mac/MimeType.m b/Mac/MimeType.m deleted file mode 100644 index f1327c4..0000000 --- a/Mac/MimeType.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// MimeType.m -// bungloo -// -// Created by Jeena on 23/11/2012. -// -// - -#import "MimeType.h" - -@implementation MimeType - -+(NSString *)mimeTypeForFileAtPath:(NSString *)path error:(NSError **)err { - NSString *uti, *mimeType = nil; - - if (!(uti = [[NSWorkspace sharedWorkspace] typeOfFile:path error:err])) - return nil; - if (err) - *err = nil; - - if ((mimeType = (NSString *)UTTypeCopyPreferredTagWithClass((CFStringRef)uti, kUTTagClassMIMEType))) - mimeType = NSMakeCollectable(mimeType); - - return mimeType; -} - -@end diff --git a/Mac/NSData+Base64.h b/Mac/NSData+Base64.h deleted file mode 100644 index fc674c8..0000000 --- a/Mac/NSData+Base64.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// Created by Cédric Luthi on 2012-02-24. -// Copyright (c) 2012 Cédric Luthi. All rights reserved. -// - -#import "NSData+Base64.h" - -#ifndef __has_feature -#define __has_feature(x) 0 -#endif - -@implementation NSData (Base64) - -+ (id) dataWithBase64Encoding_xcd:(NSString *)base64Encoding -{ - if ([base64Encoding length] % 4 != 0) - return nil; - - NSString *plist = [NSString stringWithFormat:@"%@", base64Encoding]; - return [NSPropertyListSerialization propertyListWithData:[plist dataUsingEncoding:NSASCIIStringEncoding] options:0 format:NULL error:NULL]; -} - -- (NSString *) base64Encoding_xcd -{ - NSData *plist = [NSPropertyListSerialization dataWithPropertyList:self format:NSPropertyListXMLFormat_v1_0 options:0 error:NULL]; - NSRange fullRange = NSMakeRange(0, [plist length]); - NSRange startRange = [plist rangeOfData:[@"" dataUsingEncoding:NSASCIIStringEncoding] options:0 range:fullRange]; - NSRange endRange = [plist rangeOfData:[@"" dataUsingEncoding:NSASCIIStringEncoding] options:NSDataSearchBackwards range:fullRange]; - if (startRange.location == NSNotFound || endRange.location == NSNotFound) - return nil; - - NSUInteger base64Location = startRange.location + startRange.length; - NSUInteger base64length = endRange.location - base64Location; - NSData *base64Data = [NSData dataWithBytesNoCopy:(void *)((uintptr_t)base64Location + (uintptr_t)[plist bytes]) length:base64length freeWhenDone:NO]; - NSString *base64Encoding = [[NSString alloc] initWithData:base64Data encoding:NSASCIIStringEncoding]; - base64Encoding = [base64Encoding stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - base64Encoding = [base64Encoding stringByReplacingOccurrencesOfString:@"\n" withString:@""]; - -#if __has_feature(objc_arc) - return base64Encoding; -#else - return [base64Encoding autorelease]; -#endif -} - -@end \ No newline at end of file diff --git a/Mac/NSData+Base64.m b/Mac/NSData+Base64.m deleted file mode 100644 index 1a71914..0000000 --- a/Mac/NSData+Base64.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// Created by Cédric Luthi on 2012-02-24. -// Copyright (c) 2012 Cédric Luthi. All rights reserved. -// - -#import - -@interface NSData (Base64) - -+ (id) dataWithBase64Encoding_xcd:(NSString *)base64String; -- (NSString *) base64Encoding_xcd; - -@end \ No newline at end of file diff --git a/Mac/NewConversationWindowController.h b/Mac/NewConversationWindowController.h deleted file mode 100644 index d4d166d..0000000 --- a/Mac/NewConversationWindowController.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// NewConversationWindowController.h -// Bungloo -// -// Created by Jeena on 16/04/2013. -// -// - -#import -#import -#import "ViewDelegate.h" - -@interface NewConversationWindowController : NSWindowController { - NSString *postId; - NSString *entity; - IBOutlet WebView *timelineView; - ViewDelegate *viewDelegate; -} - -@property (nonatomic, retain) NSString *postId; -@property (nonatomic, retain) NSString *entity; -@property (nonatomic, retain) IBOutlet WebView *timelineView; -@property (nonatomic, retain) ViewDelegate *viewDelegate; - -- (id)initWithPostId:(NSString *)postId entity:(NSString *)entity andViewDelegate:(ViewDelegate *)viewDelegate; - -@end diff --git a/Mac/NewConversationWindowController.m b/Mac/NewConversationWindowController.m deleted file mode 100644 index 77bffc8..0000000 --- a/Mac/NewConversationWindowController.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// NewConversationWindowController.m -// Bungloo -// -// Created by Jeena on 16/04/2013. -// -// - -#import "NewConversationWindowController.h" -#import "Controller.h" - -@implementation NewConversationWindowController - -@synthesize postId, entity, timelineView, viewDelegate; - -- (id)initWithWindow:(NSWindow *)window -{ - self = [super initWithWindow:window]; - if (self) { - // Initialization code here. - } - - return self; -} - -- (id)initWithPostId:(NSString *)_postId entity:(NSString *)_entity andViewDelegate:(ViewDelegate *)_viewDelegate; -{ - self = [super initWithWindowNibName:@"NewConversationWindowController"]; - if (self) { - self.postId = _postId; - self.entity = _entity; - self.viewDelegate = _viewDelegate; - } - - return self; -} - -- (void)windowDidLoad -{ - [super windowDidLoad]; - - // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. - NSString *index_string; - NSURL *url; - - - Controller *controller = (Controller *)[[NSApplication sharedApplication] delegate]; - [controller stringFromFile: @"index.html" url: &url content: &index_string]; - - [self.viewDelegate.conversationViews addObject:timelineView]; - [[timelineView mainFrame] loadHTMLString:index_string baseURL:url]; - [timelineView setFrameLoadDelegate:viewDelegate]; - [timelineView setPolicyDelegate:viewDelegate]; - [timelineView setUIDelegate:viewDelegate]; - [[timelineView windowScriptObject] setValue:controller forKey:@"controller"]; - [[timelineView windowScriptObject] setValue:self forKey:@"conversationViewController"]; - -} - -+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector -{ - return NO; -} - -+ (BOOL)isKeyExcludedFromWebScript:(const char *)name -{ - return NO; -} - -@end diff --git a/Mac/NewConversationWindowController.xib b/Mac/NewConversationWindowController.xib deleted file mode 100644 index 877eff6..0000000 --- a/Mac/NewConversationWindowController.xib +++ /dev/null @@ -1,327 +0,0 @@ - - - - 1080 - 12D78 - 3084 - 1187.37 - 626.00 - - 3084 - 2053 - - - IBNSLayoutConstraint - NSCustomObject - NSView - NSWindowTemplate - WebView - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - - - PluginDependencyRecalculationVersion - - - - - NewConversationWindowController - - - FirstResponder - - - NSApplication - - - 15 - 2 - {{712, 280}, {397, 581}} - 880280576 - Conversation - NSWindow - - - - - 256 - - - - 274 - - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - {397, 581} - - - - - - - 13 - - - - - - - - NO - YES - - - {397, 581} - - - - - {{0, 0}, {2560, 1418}} - {10000000000000, 10000000000000} - conversationWindow - YES - - - - - - - window - - - - 12 - - - - timelineView - - - - 15 - - - - delegate - - - - 13 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 5 - - - - - - Timeline - - - 6 - - - - - - 4 - 0 - - 4 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 6 - 0 - - 6 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 3 - 0 - - 3 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - - - 7 - - - timeline - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{202, 175}, {397, 581}} - - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.WebKitIBPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 15 - - - - - NSLayoutConstraint - NSObject - - IBProjectSource - ./Classes/NSLayoutConstraint.h - - - - NewConversationWindowController - NSWindowController - - timelineView - WebView - - - timelineView - - timelineView - WebView - - - - IBProjectSource - ./Classes/NewConversationWindowController.h - - - - - 0 - IBCocoaFramework - YES - 3 - YES - - diff --git a/Mac/NewMessageWindow.h b/Mac/NewMessageWindow.h deleted file mode 100644 index fe8a5a4..0000000 --- a/Mac/NewMessageWindow.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// NewMessageWindow.h -// bungloo -// -// Created by Jeena on 16.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - - -#import -#import - - -@interface NewMessageWindow : NSDocument -{ - IBOutlet NSTextField *textField; - IBOutlet NSTextField *counter; - NSMenu *addMenu; - NSButton *addMenuButton; - NSString *inReplyTostatusId; - NSString *inReplyToEntity; - NSMenuItem *addImage; - CLLocationManager *locationManager; - CLLocation *currentLocation; - NSString *imageFilePath; - NSButton *togglePrivateButton; -} - -@property (nonatomic, retain) IBOutlet NSTextField *textField; -@property (nonatomic, retain) IBOutlet NSTextField *counter; -@property (assign) IBOutlet NSMenu *addMenu; -@property (assign) IBOutlet NSButton *addMenuButton; -@property (retain, nonatomic) CLLocationManager *locationManager; -@property (retain, nonatomic) CLLocation *currentLocation; -@property (retain, nonatomic) NSString *imageFilePath; -@property (assign) IBOutlet NSButton *togglePrivateButton; - -- (IBAction)sendPostButtonPressed:(id)sender; -- (IBAction)sendPost:(NSControl *)control; -- (void)inReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string; -- (void)withString:(NSString *)aString; -- (IBAction)addCurrentLocation:(id)sender; -- (IBAction)addImage:(id)sender; -- (IBAction)openAddMenu:(id)sender; -- (IBAction)togglePrivate:(id)sender; -- (void)setIsPrivate:(BOOL)isPrivate; - -@end diff --git a/Mac/NewMessageWindow.m b/Mac/NewMessageWindow.m deleted file mode 100644 index c69e78c..0000000 --- a/Mac/NewMessageWindow.m +++ /dev/null @@ -1,344 +0,0 @@ -// -// NewPostWindow.m -// bungloo -// -// Created by Jeena on 16.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "NewMessageWindow.h" -#import "Constants.h" -#import "PostModel.h" -#import "Controller.h" - -@interface NewMessageWindow (private) -- (BOOL)isCommandEnterEvent:(NSEvent *)e; -- (void)initLocationManager; -@end - -@implementation NewMessageWindow - -@synthesize addMenu; -@synthesize addMenuButton; -@synthesize textField, counter; -@synthesize locationManager, currentLocation; -@synthesize imageFilePath; -@synthesize togglePrivateButton; - -- (void)dealloc -{ - [locationManager stopUpdatingLocation]; - [locationManager release]; - [currentLocation release]; - [imageFilePath release]; - [super dealloc]; -} - -- (id)init -{ - self = [super init]; - if (self) - { - // Add your subclass-specific initialization here. - // If an error occurs here, send a [self release] message and return nil. - inReplyTostatusId = @""; - inReplyToEntity = @""; - } - return self; -} - -- (NSString *)windowNibName -{ - // Override returning the nib file name of the document - // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. - return @"NewMessageWindow"; -} - -- (NSString *)displayName -{ - return @"New Post"; -} - -- (void)windowControllerDidLoadNib:(NSWindowController *) aController -{ - [super windowControllerDidLoadNib:aController]; - // Add any code here that needs to be executed once the windowController has loaded the document's window. - [textField becomeFirstResponder]; - - // Enable Continous Spelling - NSTextView *textView = (NSTextView *)[[[self.windowControllers objectAtIndex:0] window] firstResponder];; - [textView setContinuousSpellCheckingEnabled:YES]; -} - -- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError -{ - // Insert code here to write your document to data of the specified type. If the given outError != NULL, ensure that you set *outError when returning nil. - - // You can also choose to override -fileWrapperOfType:error:, -writeToURL:ofType:error:, or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead. - - // For applications targeted for Panther or earlier systems, you should use the deprecated API -dataRepresentationOfType:. In this case you can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. - - if ( outError != NULL ) { - *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; - } - return nil; -} - -- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError -{ - // Insert code here to read your document from the given data of the specified type. If the given outError != NULL, ensure that you set *outError when returning NO. - - // You can also choose to override -readFromFileWrapper:ofType:error: or -readFromURL:ofType:error: instead. - - // For applications targeted for Panther or earlier systems, you should use the deprecated API -loadDataRepresentation:ofType. In this case you can also choose to override -readFromFile:ofType: or -loadFileWrapperRepresentation:ofType: instead. - - if ( outError != NULL ) - { - *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; - } - return YES; -} - -- (void)inReplyTo:(NSString *)entity statusId:(NSString *)statusId withString:(NSString *)string -{ - [textField setStringValue:string]; - - NSInteger location = [string rangeOfString:@" "].location; - NSInteger length = 0; - if (location != NSNotFound) { - length = [[textField stringValue] length] - location - 1; - } - - - NSRange range = {location + 1, length}; - [[textField currentEditor] setSelectedRange:range]; - - [inReplyTostatusId release]; - inReplyTostatusId = statusId; - [inReplyTostatusId retain]; - - [inReplyToEntity release]; - inReplyToEntity = entity; - [inReplyToEntity retain]; - - [self controlTextDidChange:nil]; -} - -- (void)withString:(NSString *)aString -{ - [textField setStringValue:aString]; - NSRange range = {[[textField stringValue] length] , 0}; - [[textField currentEditor] setSelectedRange:range]; - NSLog(@"BB"); - - [self controlTextDidChange:nil]; -} - -- (IBAction)addCurrentLocation:(id)sender -{ - NSMenuItem *menuItem = (NSMenuItem *)sender; - if (!self.locationManager) - { - [menuItem setTitle:@"Current location not available"]; - [self initLocationManager]; - } - else - { - [self.locationManager stopUpdatingLocation]; - self.currentLocation = nil; - self.locationManager = nil; - [menuItem setTitle:@"Add current location"]; - } -} - -- (IBAction)openAddMenu:(id)sender -{ - NSRect frame = [(NSButton *)sender frame]; - NSPoint menuOrigin = [[(NSButton *)sender superview] convertPoint:NSMakePoint(frame.origin.x, frame.origin.y+frame.size.height) toView:nil]; - - NSEvent *event = [NSEvent mouseEventWithType:NSLeftMouseDown - location:menuOrigin - modifierFlags:NSLeftMouseDownMask // 0x100 - timestamp:NSTimeIntervalSince1970 - windowNumber:[[(NSButton *)sender window] windowNumber] - context:[[(NSButton *)sender window] graphicsContext] - eventNumber:0 - clickCount:1 - pressure:1]; - - [NSMenu popUpContextMenu:self.addMenu withEvent:event forView:self.addMenuButton]; -} - -- (IBAction)togglePrivate:(id)sender -{ - NSImage *image = [NSImage imageNamed:NSImageNameLockLockedTemplate]; - if (self.togglePrivateButton.image == [NSImage imageNamed:NSImageNameLockLockedTemplate]) - { - image = [NSImage imageNamed:NSImageNameLockUnlockedTemplate]; - } - [self.togglePrivateButton setImage:image]; -} - -- (void)setIsPrivate:(BOOL)isPrivate { - NSImage *image = [NSImage imageNamed:(isPrivate ? NSImageNameLockLockedTemplate : NSImageNameLockUnlockedTemplate)]; - [self.togglePrivateButton setImage:image]; -} - --(void)controlTextDidChange:(NSNotification *)aNotification { - NSInteger c = MESSAGE_MAX_LENGTH - [[textField stringValue] length]; - [counter setIntValue:c]; - if(c < 0) { - [counter setTextColor:[NSColor redColor]]; - } else { - [counter setTextColor:[NSColor controlTextColor]]; - } -} - -- (void)initLocationManager -{ - self.locationManager = [[CLLocationManager alloc] init]; - [self.locationManager setDelegate:self]; - [self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; - [self.locationManager setDistanceFilter:kCLDistanceFilterNone]; - [self.locationManager startUpdatingLocation]; -} - -- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation -{ - self.currentLocation = newLocation; - NSMenuItem *menuItem = [self.addMenu itemAtIndex:0]; - [menuItem setTitle:@"Remove current location"]; -} - -- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ - NSLog(@"CLLocationManager Error: %@", error); - - NSMenuItem *menuItem = [self.addMenu itemAtIndex:0]; - [menuItem setTitle:@"Current location not available"]; -} - -- (IBAction)sendPostButtonPressed:(id)sender -{ - [self sendPost:self.textField]; -} - -#pragma mark Keyboard delegate methods - -- (IBAction)sendPost:(NSControl *)control { - BOOL emptyIsOk = self.currentLocation || self.imageFilePath; - if (emptyIsOk || ([[control stringValue] length] <= MESSAGE_MAX_LENGTH && [[control stringValue] length] > 0)) { - PostModel *post = [[[PostModel alloc] init] autorelease]; - post.text = [control stringValue]; - post.inReplyTostatusId = inReplyTostatusId; - post.inReplyToEntity = inReplyToEntity; - post.location = self.currentLocation; - post.imageFilePath = self.imageFilePath; - post.isPrivate = self.togglePrivateButton.image == [NSImage imageNamed:NSImageNameLockLockedTemplate]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"sendPost" object:post]; - [self close]; - } else { - NSBeep(); - } - -} - -- (BOOL)isCommandEnterEvent:(NSEvent *)e { - NSUInteger flags = (e.modifierFlags & NSDeviceIndependentModifierFlagsMask); - BOOL isCommand = (flags & NSCommandKeyMask) == NSCommandKeyMask; - BOOL isEnter = (e.keyCode == 0x24); // VK_RETURN - return (isCommand && isEnter); -} - -- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector -{ - BOOL retval = NO; - - BOOL isEnter = [[NSApp currentEvent] keyCode] == 76; - - if (commandSelector == @selector(insertNewline:) && !isEnter) { - - NSText *text = [[textField window] fieldEditor:YES forObject:nil]; - - NSRange range = [text selectedRange]; - NSString *stringBefore = [textField.stringValue substringToIndex:range.location]; - NSString *stringAfter = [textField.stringValue substringFromIndex:range.location + range.length]; - - textField.stringValue = [NSString stringWithFormat:@"%@\n%@", stringBefore, stringAfter]; - - NSRange r = NSMakeRange(range.location + 1, 0); - [text scrollRangeToVisible:r]; - [text setSelectedRange:r]; - - retval = YES; // causes Apple to NOT fire the default enter action - } - else if (commandSelector == @selector(noop:) && isEnter) { - retval = YES; - [self sendPost:control]; - } - - return retval; -} - -#pragma mark Add images - -- (IBAction)addImage:(id)sender -{ - NSMenuItem *menuItem = (NSMenuItem *)sender; - - if (!self.imageFilePath) - { - [menuItem setTitle:@"Remove photo"]; - - NSOpenPanel* openDlg = [NSOpenPanel openPanel]; - [openDlg setPrompt:@"Select"]; - [openDlg setDelegate:self]; - - // Enable the selection of files in the dialog. - [openDlg setCanChooseFiles:YES]; - - // Enable the selection of directories in the dialog. - [openDlg setCanChooseDirectories:NO]; - - // Display the dialog. If the OK button was pressed, - // process the files. - if ( [openDlg runModalForDirectory:nil file:nil] == NSOKButton ) - { - // Get an array containing the full filenames of all - // files and directories selected. - NSArray* files = [openDlg filenames]; - - // Loop through all the files and process them. - for( int i = 0; i < [files count]; i++ ) - { - self.imageFilePath = [files objectAtIndex:i]; - } - } - } - else - { - self.imageFilePath = nil; - [menuItem setTitle:@"Add photo"]; - } -} - --(BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename -{ - NSString* ext = [filename pathExtension]; - if ([ext isEqualToString:@""] || [ext isEqualToString:@"/"] || ext == nil || ext == NULL || [ext length] < 1) { - return YES; - } - - NSEnumerator* tagEnumerator = [[NSArray arrayWithObjects:@"png", @"jpg", @"gif", @"jpeg", nil] objectEnumerator]; - NSString* allowedExt; - while ((allowedExt = [tagEnumerator nextObject])) - { - if ([ext caseInsensitiveCompare:allowedExt] == NSOrderedSame) - { - return YES; - } - } - - return NO; -} - -@end diff --git a/Mac/PostModel.h b/Mac/PostModel.h deleted file mode 100644 index 39eaef9..0000000 --- a/Mac/PostModel.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// PostModel.h -// bungloo -// -// Created by Jeena on 10.01.11. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import -#import - -@interface PostModel : NSObject { - NSString *text; - NSString *inReplyTostatusId; - NSString *inReplyToEntity; - CLLocation *location; - NSString *imageFilePath; - BOOL isPrivate; -} - -@property (nonatomic, retain) NSString *text; -@property (nonatomic, retain) NSString *inReplyTostatusId; -@property (nonatomic, retain) NSString *inReplyToEntity; -@property (nonatomic, retain) CLLocation *location; -@property (nonatomic, retain) NSString *imageFilePath; -@property (nonatomic) BOOL isPrivate; - -@end diff --git a/Mac/PostModel.m b/Mac/PostModel.m deleted file mode 100644 index b62c093..0000000 --- a/Mac/PostModel.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// PostModel.m -// bungloo -// -// Created by Jeena on 10.01.11. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import "PostModel.h" - - -@implementation PostModel - -@synthesize text, inReplyTostatusId, inReplyToEntity, location, imageFilePath, isPrivate; - -- (void)dealloc -{ - [text release]; - [inReplyTostatusId release]; - [inReplyToEntity release]; - [location release]; - [imageFilePath release]; - [super dealloc]; -} - -@end diff --git a/Mac/Sparkle.framework/Headers b/Mac/Sparkle.framework/Headers deleted file mode 120000 index a177d2a..0000000 --- a/Mac/Sparkle.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/Mac/Sparkle.framework/Resources b/Mac/Sparkle.framework/Resources deleted file mode 120000 index 953ee36..0000000 --- a/Mac/Sparkle.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/Mac/Sparkle.framework/Sparkle b/Mac/Sparkle.framework/Sparkle deleted file mode 120000 index b2c5273..0000000 --- a/Mac/Sparkle.framework/Sparkle +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Sparkle \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h b/Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h deleted file mode 100644 index 171148a..0000000 --- a/Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// SUAppcast.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCAST_H -#define SUAPPCAST_H - -@class SUAppcastItem; -@interface SUAppcast : NSObject { - NSArray *items; - NSString *userAgentString; - id delegate; - NSMutableData *incrementalData; -} - -- (void)fetchAppcastFromURL:(NSURL *)url; -- (void)setDelegate:delegate; -- (void)setUserAgentString:(NSString *)userAgentString; - -- (NSArray *)items; - -@end - -@interface NSObject (SUAppcastDelegate) -- (void)appcastDidFinishLoading:(SUAppcast *)appcast; -- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; -@end - -#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h deleted file mode 100644 index f2d128c..0000000 --- a/Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// SUAppcastItem.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCASTITEM_H -#define SUAPPCASTITEM_H - -@interface SUAppcastItem : NSObject { - NSString *title; - NSDate *date; - NSString *itemDescription; - - NSURL *releaseNotesURL; - - NSString *DSASignature; - NSString *minimumSystemVersion; - - NSURL *fileURL; - NSString *versionString; - NSString *displayVersionString; - - NSDictionary *propertiesDictionary; -} - -// Initializes with data from a dictionary provided by the RSS class. -- initWithDictionary:(NSDictionary *)dict; - -- (NSString *)title; -- (NSString *)versionString; -- (NSString *)displayVersionString; -- (NSDate *)date; -- (NSString *)itemDescription; -- (NSURL *)releaseNotesURL; -- (NSURL *)fileURL; -- (NSString *)DSASignature; -- (NSString *)minimumSystemVersion; - -// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. -- (NSDictionary *)propertiesDictionary; - -@end - -#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h deleted file mode 100644 index e5b5081..0000000 --- a/Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h +++ /dev/null @@ -1,118 +0,0 @@ -// -// SUUpdater.h -// Sparkle -// -// Created by Andy Matuschak on 1/4/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUUPDATER_H -#define SUUPDATER_H - -#import - -@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; -@interface SUUpdater : NSObject { - NSTimer *checkTimer; - SUUpdateDriver *driver; - - SUHost *host; - IBOutlet id delegate; -} - -+ (SUUpdater *)sharedUpdater; -+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; -- (NSBundle *)hostBundle; - -- (void)setDelegate:(id)delegate; -- delegate; - -- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; -- (BOOL)automaticallyChecksForUpdates; - -- (void)setUpdateCheckInterval:(NSTimeInterval)interval; -- (NSTimeInterval)updateCheckInterval; - -- (void)setFeedURL:(NSURL *)feedURL; -- (NSURL *)feedURL; - -- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; -- (BOOL)sendsSystemProfile; - -- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; -- (BOOL)automaticallyDownloadsUpdates; - -// This IBAction is meant for a main menu item. Hook up any menu item to this action, -// and Sparkle will check for updates and report back its findings verbosely. -- (IBAction)checkForUpdates:sender; - -// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, -// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an -// update is found, it will be downloaded and prepped for installation. -- (void)checkForUpdatesInBackground; - -// Date of last update check. Returns null if no check has been performed. -- (NSDate*)lastUpdateCheckDate; - -// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, -// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. -- (void)checkForUpdateInformation; - -// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. -- (void)resetUpdateCycle; - -- (BOOL)updateInProgress; -@end - -@interface NSObject (SUUpdaterDelegateInformalProtocol) -// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. -- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; - -// Use this to override the default behavior for Sparkle prompting the user about automatic update checks. -- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; - -// Implement this if you want to do some special handling with the appcast once it finishes loading. -- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; - -// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding -// a valid update, if any, in the given appcast. -- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; - -// Sent when a valid update is found by the update driver. -- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; - -// Sent when a valid update is not found. -- (void)updaterDidNotFindUpdate:(SUUpdater *)update; - -// Sent immediately before installing the specified update. -- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; - -// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. -- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; - -// Called immediately before relaunching. -- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; - -// This method allows you to provide a custom version comparator. -// If you don't implement this method or return nil, the standard version comparator will be used. -- (id )versionComparatorForUpdater:(SUUpdater *)updater; - -// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. -- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; - -@end - -// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. -#ifdef DEBUG -#define SU_MIN_CHECK_INTERVAL 60 -#else -#define SU_MIN_CHECK_INTERVAL 60*60 -#endif - -#ifdef DEBUG -#define SU_DEFAULT_CHECK_INTERVAL 60 -#else -#define SU_DEFAULT_CHECK_INTERVAL 60*60*24 -#endif - -#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h b/Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h deleted file mode 100644 index d9ac619..0000000 --- a/Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// SUVersionComparisonProtocol.h -// Sparkle -// -// Created by Andy Matuschak on 12/21/07. -// Copyright 2007 Andy Matuschak. All rights reserved. -// - -#ifndef SUVERSIONCOMPARISONPROTOCOL_H -#define SUVERSIONCOMPARISONPROTOCOL_H - -/*! - @protocol - @abstract Implement this protocol to provide version comparison facilities for Sparkle. -*/ -@protocol SUVersionComparison - -/*! - @method - @abstract An abstract method to compare two version strings. - @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. -*/ -- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; - -@end - -#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h b/Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h deleted file mode 100644 index 08dd577..0000000 --- a/Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Sparkle.h -// Sparkle -// -// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SPARKLE_H -#define SPARKLE_H - -// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless -// there are name-space collisions) so we can list all of them to start with: - -#import - -#import -#import -#import - -#endif diff --git a/Mac/Sparkle.framework/Versions/A/Resources/Info.plist b/Mac/Sparkle.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index c7f277d..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - Sparkle - CFBundleIdentifier - org.andymatuschak.Sparkle - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Sparkle - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.5 Beta 6 - CFBundleSignature - ???? - CFBundleVersion - 313 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/License.txt b/Mac/Sparkle.framework/Versions/A/Resources/License.txt deleted file mode 100644 index 20466c4..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/License.txt +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (c) 2006 Andy Matuschak - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist b/Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist deleted file mode 100644 index 92ef947..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist +++ /dev/null @@ -1,174 +0,0 @@ - - - - - ADP2,1 - Developer Transition Kit - MacBook1,1 - MacBook (Core Duo) - MacBook2,1 - MacBook (Core 2 Duo) - MacBook4,1 - MacBook (Core 2 Duo Feb 2008) - MacBookAir1,1 - MacBook Air (January 2008) - MacBookPro1,1 - MacBook Pro Core Duo (15-inch) - MacBookPro1,2 - MacBook Pro Core Duo (17-inch) - MacBookPro2,1 - MacBook Pro Core 2 Duo (17-inch) - MacBookPro2,2 - MacBook Pro Core 2 Duo (15-inch) - MacBookPro3,1 - MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) - MacBookPro3,2 - MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) - MacBookPro4,1 - MacBook Pro (Core 2 Duo Feb 2008) - MacPro1,1 - Mac Pro (four-core) - MacPro2,1 - Mac Pro (eight-core) - MacPro3,1 - Mac Pro (January 2008 4- or 8- core "Harpertown") - Macmini1,1 - Mac Mini (Core Solo/Duo) - PowerBook1,1 - PowerBook G3 - PowerBook2,1 - iBook G3 - PowerBook2,2 - iBook G3 (FireWire) - PowerBook2,3 - iBook G3 - PowerBook2,4 - iBook G3 - PowerBook3,1 - PowerBook G3 (FireWire) - PowerBook3,2 - PowerBook G4 - PowerBook3,3 - PowerBook G4 (Gigabit Ethernet) - PowerBook3,4 - PowerBook G4 (DVI) - PowerBook3,5 - PowerBook G4 (1GHz / 867MHz) - PowerBook4,1 - iBook G3 (Dual USB, Late 2001) - PowerBook4,2 - iBook G3 (16MB VRAM) - PowerBook4,3 - iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) - PowerBook5,1 - PowerBook G4 (17 inch) - PowerBook5,2 - PowerBook G4 (15 inch FW 800) - PowerBook5,3 - PowerBook G4 (17-inch 1.33GHz) - PowerBook5,4 - PowerBook G4 (15 inch 1.5/1.33GHz) - PowerBook5,5 - PowerBook G4 (17-inch 1.5GHz) - PowerBook5,6 - PowerBook G4 (15 inch 1.67GHz/1.5GHz) - PowerBook5,7 - PowerBook G4 (17-inch 1.67GHz) - PowerBook5,8 - PowerBook G4 (Double layer SD, 15 inch) - PowerBook5,9 - PowerBook G4 (Double layer SD, 17 inch) - PowerBook6,1 - PowerBook G4 (12 inch) - PowerBook6,2 - PowerBook G4 (12 inch, DVI) - PowerBook6,3 - iBook G4 - PowerBook6,4 - PowerBook G4 (12 inch 1.33GHz) - PowerBook6,5 - iBook G4 (Early-Late 2004) - PowerBook6,7 - iBook G4 (Mid 2005) - PowerBook6,8 - PowerBook G4 (12 inch 1.5GHz) - PowerMac1,1 - Power Macintosh G3 (Blue & White) - PowerMac1,2 - Power Macintosh G4 (PCI Graphics) - PowerMac10,1 - Mac Mini G4 - PowerMac10,2 - Mac Mini (Late 2005) - PowerMac11,2 - Power Macintosh G5 (Late 2005) - PowerMac12,1 - iMac G5 (iSight) - PowerMac2,1 - iMac G3 (Slot-loading CD-ROM) - PowerMac2,2 - iMac G3 (Summer 2000) - PowerMac3,1 - Power Macintosh G4 (AGP Graphics) - PowerMac3,2 - Power Macintosh G4 (AGP Graphics) - PowerMac3,3 - Power Macintosh G4 (Gigabit Ethernet) - PowerMac3,4 - Power Macintosh G4 (Digital Audio) - PowerMac3,5 - Power Macintosh G4 (Quick Silver) - PowerMac3,6 - Power Macintosh G4 (Mirrored Drive Door) - PowerMac4,1 - iMac G3 (Early/Summer 2001) - PowerMac4,2 - iMac G4 (Flat Panel) - PowerMac4,4 - eMac - PowerMac4,5 - iMac G4 (17-inch Flat Panel) - PowerMac5,1 - Power Macintosh G4 Cube - PowerMac6,1 - iMac G4 (USB 2.0) - PowerMac6,3 - iMac G4 (20-inch Flat Panel) - PowerMac6,4 - eMac (USB 2.0, 2005) - PowerMac7,2 - Power Macintosh G5 - PowerMac7,3 - Power Macintosh G5 - PowerMac8,1 - iMac G5 - PowerMac8,2 - iMac G5 (Ambient Light Sensor) - PowerMac9,1 - Power Macintosh G5 (Late 2005) - RackMac1,1 - Xserve G4 - RackMac1,2 - Xserve G4 (slot-loading, cluster node) - RackMac3,1 - Xserve G5 - Xserve1,1 - Xserve (Intel Xeon) - Xserve2,1 - Xserve (January 2008 quad-core) - iMac1,1 - iMac G3 (Rev A-D) - iMac4,1 - iMac (Core Duo) - iMac4,2 - iMac for Education (17-inch, Core Duo) - iMac5,1 - iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) - iMac5,2 - iMac (Core 2 Duo, 17 inch, Combo Drive) - iMac6,1 - iMac (Core 2 Duo, 24 inch, SuperDrive) - iMac8,1 - iMac (April 2008) - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib deleted file mode 100644 index 22f13f8..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib +++ /dev/null @@ -1,56 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - CLASS - SUStatusController - LANGUAGE - ObjC - OUTLETS - - actionButton - NSButton - progressBar - NSProgressIndicator - - SUPERCLASS - SUWindowController - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib deleted file mode 100644 index a9ac867..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib deleted file mode 100644 index 4f1d598179ccecb32c7a12eead96bb5fe3663eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7344 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 I{hK-Azn((800000 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 6b926302ea4751c08c4de4d180bdee22f01709ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7278 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 f{!{!>{8{{^8|{{$9#l~I - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index b4353d2f7c1f412919b46c5526549892ff7ab525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10493 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index b403a3e45f6ac2ba253f8f9747b79ecd2acb28e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13189 zcmeHtd3+Pq+W$FcCTaFgk|u4Mwn>vfJ7H}py9k9+C_*W;6exuf+R#SQq$VkQ&|3J7`ymFq=Zz>TYjf-EkGsJJ5TY`^EsB&A&7zW@CGc>j3QPm`HB+jE}f z`z&W>GzA0ESkIpO5k>@Yh(`*fL~5j& zENVh{$*T8J5>ibq8QNWbSm%rRD6SEbOUtkG&-2$6#s_US;uNGsI+TZcqdw>wGzb-< z;baW~u@_r$&M06YYbz}Mk2JPudjiFgv8il<>8uES0E1{}f7_(r@4Q+yM?9p8bM z;}!Tp{1AQ=?M8d>W4H~k!RztU_#b!&(&B&O_whb_03XDM@hA9Gd<=huf5boG-|-*# zPkf$Oh?Uq#CUFuk=|u|2AaX4kOh%FtQbxv+38a!tBQ<0e36dK~gha_~_?}N%$lu64 zAN#a*mwm5J$KqPQ|G?4X5W)I16Xx9GsKO=3Jb}dATlJcdie24L6J{;)ZjhxiMTR zH70+7!ClYI!h6s*u93T$yOq0*`#X0JcQ3b`yN`Q-dxqP?ea3yx9pk>> zj&omfC%CV;ueooyliau5cii{f58RL3PuwZ)XYMrj3->Gc2X}^d@g@8y{yOp!KbjxI zm-1uzGJYIC9`EMM`3kJ$C-9a0M1B%KnXlrf@YVcOei~oHPv?F748E4HOKrj%SH#SfgZ-cSJ!l4joKiEZdN@;niuhAc6^T2g+1a9Vp zBePg9c}CV!1?#~C>=GKJ0asfnK6g06dKQO6u`#}ouihW25roq6$^g(4^iK?g>cVqm zy5svuOqY5Ey4kXmVOjs&7*J6y(;^R`q!pX#Zu(6tHc=IQpDO6r^d#NaiUo?OlD^l9 zjY1p!b{|L~AN4{7ut#ZMY!8&DT#b-cK4C%=*u1~YA88B#!@{AmNVu^nwh#41{ZM~2 zV3N#qf3!-z2*KDkGyn~p29q^MW8p@56O$5BfxVUt9Tu()``Y=*2)GsvMniy=ah!?L zq*d}7L(#A`Xc#I&17UMxnqxlTQMo@hp|l*n<&ni`1nsd|NJb-32^xj2L!;3cREox; zGBgg2N9CvjO+b}YO-tz%>ZAA3`{{%9VfqApiatyKLATQ#^k4gdhDm5LszOsxH7MOQ zkWi678ViJcOc#Ls@^Evc)<3bde6(+dKS;+=4JCB+0W=*(`p^ti3rws7wVa9SQ3DE~ z>(MMp`Iuf7YBXy?W$ECnC}M>44)hGhZv_pNY_!V z5o_p3T0%!9_8Ou++E5rZQ5`Kj0;@-0{V0k74b4EsY%~YWMe|?}3(!K;f^I~M5JjzU ze-pYH-3;@OEU%4(gF$};wjzlD2#HFB0E6YW!p0b*s=T?$A7Qk@b!B1{({b1l=v^hW zz#S+x5FBH7z>-092pw!BCaNDR2q^w3qzJKpBPgPV_NNAFNbKe|+G7n6b`x3vPy5qB zha`SR(cdMW-iemMj^@I4??(5ad(m>V0
        %!Tm~5`dXQPa8(qpW$VM$&=JGJ!Egka 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index b31f928fd57dad14168601c6c9bc3bacb27c9cdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9806 zcmeI2TTdHD6vyW|pJG!rrHu-`y|t|yBYdH!b^ZMm&h>qu z?=yY6p&v$izX$`hT!vnp*-=Y7yw*4UM{4cssjD#?YJ03b9)u6VBdz&i*i_4-@a6RB zIJCkr&SrdHPaUm0(bK8^x2{%isfAs7ar8iA>0`%{#uZ_#_HKBnr(g6w)@(+aU)wiRKO>?SnmrCQV@tbVM7xBtkyb$7$n#K7STB(>h&><9W7p1G;vK68=3FX$z#R+kdVb^?6S)5x@^Vs0a?dAbTeA# zJXxcfnJiKu`FV1J%hT-bFuavtwnYcg;NvUHw_cC;G{?y-EC7y)aqO1i6-+*%n^rLUY?H+Gtz35@a*RCv*wVJa)osA_Kcw9^ID))+2#FLvz zXBLGb56eHq$lH>Yqr<(@ZV5$H5#lPW%+Le5ihNt>`#>MhUWViugA73`4`u_0wIixC^ae$Syy&SzHlT(h z?dQmm8SKk0j+ct?gVsNew81--#9@rpbr>ke9gcqte+-2X|J1rff7V_t8rc%(Mn$tu z!O&m~v{8-Wu3JN^W&FJyT|T|aQ1fZgqTIXmMqWX~e3Or%^?lM~H~bO#Z^?i0J@Zi4 zBKXBnJlSM9dfe3>BiTMXQnh1ucqKUg`mAqbw=$ZT?{J&+>TPG@G++ zg~j~wexjJgCH=KzSgsQiDp|d}6LoieW_MGZL1qT!fy^uunVtLTCueAF^^)g3Yc*9s zlZak85wS;o%$Gl1<5BNzmr$vT8!9eHgc@uLn*qI(f(S6}mWN$Oc*VU6c%Pn^D=JktF zVl|)P>iKIv*Cg}&Jk+8g_Ylxe=J%V2?GpCC`$+P=w2O6Osi_K~_GnA0-6%UOVYQSM z;iXWQS2j7F&6N<<&3)hkTnJipbI6q3_B1sKu{G)x}Eq-L0)V7UvetRjP^`@YNh|xb5VIr7rIL zs7f(eo4wt2J}qNx{MGIoe~!^8<;_HAc?S7|7)4Yk+F~zx2CLrlm1EfQPKK*gS(abi z9`GN_N}SbYT+UcUv+jvE+*8--{z*yq_Ll3uc~vk)lSMr%t!i)is>_r2^YA3IU3|$Ho(pi=v zL)i^46;y7!L;a?p2*1X48I70XtEY<6Ev*2WdG{Jc+`F%p)6Ug<;)G5ajbD!|Ig$Hk zFmN+xc5@4=oI7WV1JAYn$g7`qp6J&L+&^1{Ih*R1`XAk*acWaeQ$fMBIbG}eB&+iM$C&&qD*JpI3a2NCvGx;4vxo)ke z$q;>B%Wx-lI}ybF2CFANcr;1(ydG_>@@u*!Pd8v?lxQ^+tDy-zlm8xx@XhLNYtt=x xSsu5iGn2?#q|qV`^(w!Va(tg#oBJYnftKO%CvGy`550a&72dwqGc0k%#lIFPR=NNH diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index ab36d31..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 658 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9C7010 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 7630390c89e63ae4aa0af3491cb03518c1321d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7148 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib deleted file mode 100644 index 994d4c3..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,67 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2fb8a83..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 18 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index e7e7497db4bbc8e89d15986ad7531f1b0a07c217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10623 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib deleted file mode 100644 index 5220a22..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index b1cd28e..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,21 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - 41 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index e8dc5b88028a8bf491e46d29e25091c39735c921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13263 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 C5g()g diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings deleted file mode 100644 index 16e0787b46dd69d9a9d59133dfdfc683787f5293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8216 zcmeHM+fEcg5UppP{eXdpBt$goqcMO=j3J=$6653S1(>kRlD)9<^XfTWTXfH5*;%s< z8)691)0dj+s#Dcxs(=5H=dvw{97`X6+xUBdpRVLG!tO?f$Ook=P~x0>^Fv^tPGL92)V>5cRhJ$y^%W)Coz zV|?QX^AZ`Ozbor#{lN1Wt2z7HwG%vLa*lDEP5p*gnPQ}e-puXE-a+X-jEym?EoT__ zn&*%>kzMR2kvI5#XuEn1Ppw7td>eMnWy{&SR5P9uy` zTjHaGu?#Z14$nszXFJ4&qEPWhIs1@siM1+&vZx!8eu5U!$>?~B=PKG1jed_KXA#ch zd_(C7E4fqZpF(~P-Re;J-{NsC9xGxrPx7zkyf)B0aA;u$R+K9;68OH0xaqo_M(h(? z!zt#7kSm7}=Cl@862)~$@mV>}8}G_enxpIXy(2p}X97O*G*22^66w}N3(N5 z?K)Gx3-rMweD+or%Q@7M zr+9|{WYT2LWU`(QF}viBF$^42F&@EO@Y!W@vS;PBWi~+8qpXT7+{fTPB(9=<_vZ~V z&dgb}nw!ikcG8C4iS32E)N3`Y-<4l3B2vT)v91wewoef&{2ud6JZ21p){m{%YFMB4 z_Fu(i>)#jh<7%}UmcK-%R>odLd}woiIkHC5SvZ@ANM8I+t6?FYm0?ZB&}o$!ei^rL zcCt2Q`C=B^nz(Gw?|Q93RJoQiHRd8pW0instW}c+cn{A|d-tNJYv_+v-&g2;vnzLR zH40@oto^Zm!}^9*``!kegY8h#F*wn3YKrd=IjqtV9iHP9d*i=3k?#R(tJkAECze*M zp0!c!v7V2<$V~ba=S@Ui@gAw@Bag!QGvjFZ72iAlKFb&f zB^-^WaU#1np~=jpxfq+`Dt=p|@zP z;gs(zJV)Ye-s+4Cr_RINT^uBY3?q>PoV8kC3TtGy&55m*Wx!&U)oWB7kE4xYnusJ9 rvDo&te#?Eg- - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 6b2f938f90ecd44f661ea8b2d6ec06e2fd5cc720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7273 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 J - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index c9b1e7d8831c67d3f55c8044ba2b1fdad7eb1248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10668 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 GrT+t(0j`Vy diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib deleted file mode 100644 index 5220a22..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index 3eb7f81..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 8c54c217c00797d827b49b9adcc92151d64c3194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13404 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 33a6020..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 4cd529a56b82299c1652f066cc95089a8bf1a192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7245 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 65dfc95e3c2a0d483abf2be092c76db216dadb3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10338 zcmd5>d3;k<_CNQ&?CWciCTWs3PXPg0Y)dI+hf)d!S_&;?r-t^m1k$D^DNt+W0)mQw zh=Lm;wCsY&BFN@~E4U+~gMbL?Aflt=jJxtX@4d7XVP^jQrJpo!x%b?2&-Oj%+^IF8 zU^JGRdK?H);6Mdx(10Ecym#4Nsjemc^nrAPd*L z4_eSo&dctqJS-2y0*sXM)`FtpVx3q%Fg|HJ|1B871ZmJ6GNBLjg@G^_#zHAnK`qRL zW$*wz3Xj1Puo|9(CfE#H;Az+eZ^JwAF1!cF;bZt5zJp)jSNIKnhd-d6m3IUMFvmBjhM~k9n+~GG=?I!n3+PB%NJr6PI);v; zlj#&%M$2iCPN!j7Lu=_w%II7=kIttH>HTyWeSj{fkI+ZyV{{c=N7vI0bSvFOchhI- zLHZ(ng}zE(qwmn;^b|cuzoHlE*Ypn#IKpvUBG;bl$@SuTbA7nJTtBWqH-H<+WpjhL z9Bwd|%MIa%a>Ka-u7+FAJxF?U4{AU1ek~xHW{X% zLUP1tELa_oRFCWzg=-^a;@E+3VJ(mD%i z=?$HQ`kr{zExn=PG|WQIXG0y_4)t&cG{BuO2N=wSc`zUDf(5V;?uL8dURZ?xC&Ln0 z3inG^fqct6m-2SBzfeq!po~N`<(OCbz7TVe@q2HcD!@Wc27m1EL~+OlAIU`Ql@T2~DDaah#| ztDrYdl{~$0lv#Pc2G*{Fwa|zrB$>Fvv9t-i87Rjc=|&m54%V-S^{@dp!Y1gAt1F{X zKFv~*!iG2t)zo5gQ-aE76z}b&5PAx>Ho;cd2EEZda4*5BaRT@wMZ0hWRi->uZm;;q zcJz-Ou#+uB2S{QIPQz}L(X+4z_QG?p5B9?WI0%Q}d3XVx;UzeXhV%-&3a`QI@CF=# zqwprYgVA_Hq<;b>r{D9IT$sf;fU#zG=)cWkjN_Lk>z zsA{1q5yC-DFkj4kArST{{i7lBVdf;7b zF0(POY#iUsM*aGjht20HZ)NjXaw+ewukV)Hy|d6gGfQ%>?pc}WUp-PA8p6B_<4_R2 zR7A)+i{I(!xwYuGf*dLY2;qGtjwr*g2vRgq*p$NB`)~|CK&HAzV-aMTr4&m{DcbuG zPBg&@_(;+o=1R>`Q67jyisXyt*m#naZ-!6c6r6@L=*DN^GdKt5nZQz6f0n}xERWT& z7_0wVJd%BZhWKSmG`j#_VI=z+F2OfaL_?<>TppBzFp4QB5~wV$s}Z9prdwDCJ?qGB zNFXMRRm~y&pG>;}et>_$zu`yt34UfbvNo(OYsYS4?Gbke*3^VVp)e;`s0l=4;?!^; zQZB@h;+1y=L#}<7Rv?Zm76wLn{i_#Dtk?UDL0fgI1m!#JGai z6fKk&k~lBrQ)F7jdAYg5%#5z7*G}}rnamqheC$Fm5H?kACg2o>xrj1_%y$ltnwNVB*`R&_=zBy4BAFN zmd4T(hz<>-ly}wFr=?0h(oOc4jEruGOg)-~)-H}ibIDDlJ?TI?!UEC>PLVF8tL(Ls z2UkYIwbkW=!l7^kxhO__m9K3oNn(9jcXZcoEY-#jKxgfBRRkw#B%LL&j0BwULpNPi$wA4GDH^4Mv?n8>B$sq= zB;BF+)lB6fQ^QDK)|2&Ny;&wIGETll46TWY2q$X~MiEJ>-O(25Ir&F>+ z$@b)|D6Pl;PK!wUD`^p#P3kZ$I-{gTQc8h|#85T_|K}j2=2cdQBVt4-6JxQK9W;ma zCs@j9xRo%pg}D$Q^8j-?GN0T<7Jx_=LIv8!J>*`ph#1IXvIHx~r9_KQmmwNthi6M+ zOEP;22_?-T1{PzQ5v>VCFl$09%??K})0Bqcgpm~$QBlgu5GUj*7$}2MMvK!B>!p-U z@?g|pm<3s-jt#?tm`%g`;c);V53=&LWEmTNA`TEz1}Y+s+(sTDk0QFAMFgo}A{)W- znx{M=OVT}1XjRoI#ft} z2mQ$orrkz%l3ips{6zMUz2rHvkL-sZ$wBy;JkLh5LN*E!X*4Th#cT{KL3|p^+Ou&J zYHFuq5batU2}wnw1UjROb91hR0Ze%n&~1$@adaCqdc?I8yko_w_#!$s7@H=mU&VsIZz`B;u&C0%lWzz)7+Xa*@0+58F*8xMs zyDsP`sj_Ex$0(lG6GOKYa^56wk+)He?@q`oN23Z>1jR^6yzZQe%9tn(dLR0cW8?$! z5r)35Gq6%+fhKaCd`M2PNo+Ek(nLPSzmu#K|86biJt%?U!B~!15vUDeteP#BOR2Mx z)Fod1@~_V^nG06cRyB|3O-fWfOFnBNpOJGC24eXVPn~jta-toGNCm`|8)eGp`S@5I(2}H)i{$Gj@-?|6m%{ON21X)*I^4VbTgp2y1fd8O zVPXm?3sa%{57^kGP>myI&(1=ROl4#bX=KlahLZYJNfjT-*@gm~&9M0|)WnaNYy5;k zbp}d*I;(C4gk%~#OnyTk)m@fXl-g)mfw2$Ke_pJ-Xn z{8S;eYgVfKNmJm5>ZxHJH7Hxc;vECoHPM(QdlBzM1dJFK5i!ioL-;Mjjza*;ib{MV6&IrXHi)CJL4a>U_@}&) zexo>|DqfaI*H;%N(p?C9Y5{DkO6vq6fH*3c~8ZW)+K$AP&Un*0CgSG0&1`xSHu z9g4tw{wiRe!|p_2uAfpEhzeDKpagq?>ewjnge&Em+$NFz36qwzj10WY>VaAvD>+$u zdILtI`fgn_Qq!~2#ZKL_kf$p*4T=Cp)1pRN6wj{X^{QA^BNZs)%Egdai5JSq5<0et zj#bKUhg@intVKA-JT_i^w=TCo13#UF<#r7g-1kf@7o&2SgAm?o5Lu0brsAM{9JC0t z!U(Pxh>CI&CB>vGW2OGqc{)vQVAZq5QzBv&b{O-;5y)Lc&asp}*mkV){j?fsCLztG zC9~u{m#gK#?e`Hw$xXnb@X#>fxG zx7;hDzKbqsq6=DgI{r%iUns8@vy|prANqd-~ z{^iLvH0fUY9MU{T56Cn(u+2y_#x_X->JWV%W}s1ENScO;aJk&U!}O7D)GK!I5a$K!aw+foZ?FHe zLe8Q>-fpFkJXFY2R|NbXJ=R*l|B((^jdVU~MJFHWY`a3|3_aVL&NV_spZo%a`U$-d zr|}F5Rbbn%C@OGuCjk}pmnU-8PcPAL*lwu{FZGuy;0)c1U8l1!nf{2u={yFL(^$qY zLmP-;w9jE1aFIOhKJCPiRgWR2KYF#Cu;b|iz06c>7gi{(ni#ScIZ7@yN-0%*NlvXS zS%C}gz^@;_(x0C!Yq>j%%NcP2BL)xYO8On%a;KCm^b+T4#XPcpMq-}+hz+yz$Ua6w ziTyb98<2g8`JKpqJ+d#wM`XX5r;aiu?q;qN*O}|Wb>(j1Qn@rPo$JPBaNW5~t_PRJ zo@4vies+KzWQW-E>;?8Bdx;%pFSA$JtL(LjMKLLg$oY7fFT~@IX$Zz;n1~3FjS0bQ z{O$1nB|U(Slj4P>AOQ`UhvI=kvwNW*71lP=be8JMb{ekH=YsXp19cXIg@XT1Iv++M^q-u^tbyR^!3e{j!}l zJ6Jv*dOeMYTuH1E?Q}gJd-ca7u(-4JL(7lIoN!St#?^8&xmnz7u8zB%tLN_E8n`>T zIUM8Wa`U+P++ExPZXtI!cMo?jw}`usTg)xtmU8!V%eV*Fo9r$2HhYJ?%id$}vt#T7 zcAS04POy*I$Lw$HB>RM&VyD>|_9;8dK4a(DdG{Uf^Eh zUgloqUgwT*Z*p&Q?{e>RC%G@V3*1HSXBANyREa8&s-r4hHCR=k8n2qDnxqm{Ayu7f zj_MxOBGpr>ZL0069jaZbXH|Pu`&0*1hg2`9UQ)fRdR6th>WJ#3>VoQf)i0{wRDY;0 ztBE>AovO}K_g4>9k5*4n->ROfE>~BmgX-z(kb16qvHB79W9n7v)#|nCCiMaJck16Y zHcfj?rY27_QB$F*(cGz7rg=j1lxDYPkLEeee$7G6^O_emhc&NgUemmxd0TTrb5`@c z=4Z`itxjvu+O>&Vx3-+K07G+MU`1+QZtD z+OM>~YJb=MsRJF=_0Z+$M(HYbwYoXFCA!CS>vVf`M|H<_XLaXvpX?B{h<4| z?kC+Zy5Dqv=q~Gt-lxykm*`9NLH!JUjlNFL^vm^+>(}Ww==bRl=nv^%(7&XAS^uj3 zb^Q_joBHqczZtX!y}@WO8!QIiU^65doCdey216S|sv+HwVaPOO8G0G|7{(c5hE0YS z4WAkQG&+qvjQx#6j3bQ`jHSkavCJqMryFM&XB+P}-fO(ixWu@^xY@YVxYu~p_<`}H z@k`@BjK7*RrZ%Q_ruL?ercS1=rdv#Drs1ZLiJ2Cg9xy#tc~rmsyun^k6;*5!D_cATDw>?ty$J8>n!Vh z>jT!+)=k#^);Fw2t#4W1vA$=0-}-^|g!N*Ex4&pVZ2!pqH~S~{)Amp8|8`J^%As{Q98O1D zM;Aw?qmN^}W1?fSqtp>_lsiO6rDLw6(Xr04!LiA)#j(|~!?DZpisLoM8;&;}7aSKI zmmJ?ZzH@x<_#x4hI52Tg;^4#~iFt{`6Y~>CCKe}-Py9Ubo5Wude@pzssc~AJ4(H9z zAU`RH$oYcvsPmljqD$-IU5Ty^t~6IK z*Fe`eSI{-XRpko1ZgVxbmb#X?mb)Hut#oa6?ROn?J@0zab=dX3>zwOz*O#sfu8Xek z-PEmeYuq}w!JX{x<<4;zxU1Y@_igT|yVgC+UFTlxUhZDyUhm%Oe#QNT`ycM_-9Nbh z?f%LAi~BeCA4w@m?UMQ>4NuBXDoh%kG$v_mQccplr2CSVCGAMsmGo@V-lTm=2a*mY zy^!=t(m#@ZPx{kCJe)`4(Rtc=+Iu>BI(fQyZtOA$H2G1PNT+e*Z0?$&< zT2GT_ooAb8x945YDKGWj;LY~tcyql&y~DgCyanDu?__VOcdEDCTj>pY7kL+ZmwK0Z zmwO-buJk_QUGLrK-QwNq-R|AteaHKr_n7y%_k{Oj?@8|uKDE!{<9%tqZoclm9=@Kw z-oC!R{=R{}LB7GhA-+7{a9_S}q;H&Wf^U*igaIXEG$yWL2^zS(j`` zHYFz}yOOh#dnNZt?w33uIXgKgIX8J|^04F)$py)U$)l5tlS`7Prl?bFDQ#1RrOZeP zr_`scNZFloDCJbjSALV<<8R|{=fBB+i$Beu?(gmI>%Y^_{PX;G`4{@{@h|c(_Am7> z^Dp;5q&cDIG$-l+F)&I2r8UIfIZvP(tbN>DQgZ@|juM0ZC zAeaP;zza6PAvguM;1PU6iXaF#3T=g(gbu>ZLT90?kSe4L8A7IzCG-;d2>pZsLbi}2 z - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 4b7cc9054ee9d1ce02297c9b8484b41ec561c5ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13156 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index ea175ae718007ffa8325619d382eb2db6e5b1133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8554 zcmd^^-)>t)5XSeqPjOliB2}aaxJ0N4w5m`^sh}<5(s4}c#&wKi$4#ClkJdY69s>A& zGZ}Wzv7JAVV+1IQeY|J?%+7o>^X=?!zo(DW{ZyrA=}4bleZJLSFAdW~zej1TmXp*^ z`)b=)%U(LwC+`o`I@D87eIBUozGk|U?xl_NN%|mdt7Rj7dhzr+b<(korvFe+`wSkKj`;Vqv?HW&y{}l)1lr+Z{$1H$d29& z)Y`W_#Tv{$(7UO6b<=CT&yo){<19VYZmRT!{+I8nqc?NSIoCIz1N}2oM;bZMGg^6d zA!je0r7dX^snNtBZJPeFeCQF)qW6#u$-F(w_Ez(=vx(je^~}?`$@;nUf2T!zc5Ssy zlW$6&@oxC#7w()`=aa33oD}Gp~-xpK0j%9psdn3aDc53_0(5eM|$g--gedJ z#Ma0=cMQ0-(bbMtA4!vaX$cwn8iU1I<4EmbcAP%a@6czqwPPX6GBL^NNB_XcL?b~T za=F$YEX4$VfVcFd5$yM?KAEf1o*c{X_54OsP1RmWM*l`0dgZ-`Mt)Wg*Tf?siCuOK z3uo$`HG=Ma#{-)OuR7LWU%xKXP^lBg80cgU-ee4x@c<;A$u{>=TR8KW!Kdr2Yg$5& zV0>^92S8Y5dYkD9|EUZqW7{_fz+NY2FSNF2`&w?d9HC++Ml8Sav_bQ zcx3qN7b~tyQy#CD?R!ghjrd4p3ZL3GFS||@ZAR*dqt}a(q1R;^Iv0}Ab;Lw`r!O62 zeXvH9TxN}p^qJ+A%i}9{S&Yi=7weCqpt`9^GHRJ&=(8yCyk(C&QnVzdY}aIo93GJ> zJf$t~-;oT&!kNCoXz9&a!iWru{(ZNQ{-w>td?1V2$p7G>IWrl;_fFLFSh5_c%-@bT z-)!eZ!#XFbvz*)01Kf{1hKAnjKj*aiigWciPi^Xlhz=s)4P><=Wx|{roG;P`-H><5 zesESeYMrBipP{jXv9XQd3`COWh7owGM~-IZ_h^JZ;Jevx18puL3;-DeP3}M7Zm2iR z?EJ_x2>fZT{?6i9fpM#(M_pq=GNaFm{ zw>Z0g+hplZ3!At{fhtZR?hD~ZoWd5RekC0KyL|}D{Z^{W_W$vnks*z< zS>0<&YjAR=4O(-UnuKYPS+oyN(SQ|zAJ zayE?Uw2EEMEb|O(1o>x?TRJl(@-Z7{b^67rYHU*EQ~7Oh1K-^+{UT}Ha^=qa^x{<{ z&PP}CTsRFZgSf}(s(w;+eivt4Se93@Kq@;87CqMPVK<(o`3$L=>>+fHeWKFh+>QDn z917{9V)$jjrdXTz6ZL2dZC{yIsb>s|m3Jg791RvSUd!55dMQgp{VX%ex+HN5Ud}7p z(-C!+t}1g8uc)cP9m{xiEZ)dpmi;>$#aQP887m<_mghWi!CI>i8@hfW>v$EHs-B|_ zguC}q1@_9|Sh14oF(<~ro98@G$|`s^^f;V~6F=n)`Yo=1{Ni_ACy# zcRDM-g#Y~myL`Nqt6jFo<_NE)-F$ChjYaS0&VWklvMBH*m2u#SY}6LEzZNPoJ0jxy ztpnICvr0yFeT1K(a+Q=ZQK_%X+&-4;l3fSM^%1#lo;fjjBE0o-UtMi!;s)Ni%+gP5 zmOfmt^y*p3ysPlDTbq^pgSsuAspWQVxV}wKi-_mH+NlkJ$a=M>ZoQ1q=Zch6XgJ%) zEyLm+Q?_qncH-gp}` z4iwj^X%OqLo&!uXa%v-e<>viQW;FEnnoXJA@_xuFFqabJw-jqTTYQFBIb z&6UW-J2gLHa8uP*v~ulinr58Y!X?QQ!OBbIvD>)UCAYz5y86ePvLBWfE-?28FTbYl diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj deleted file mode 120000 index 88614fe..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj +++ /dev/null @@ -1 +0,0 @@ -/Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj b/Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj deleted file mode 120000 index 88614fe..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj +++ /dev/null @@ -1 +0,0 @@ -/Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 15ba8f4c8e18093cec6121a6aab21fdf4a8cea1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7161 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 2984064502b81dee5147f477cb7f28350dd4d945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10360 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index c493485..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 5 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 55cc2c271b5b63daf69c155ca294fdfa17a9e0e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12659 zcmdsdd0-RO_W!+iCQZ|%$)risq)nSiLOTIU>B_FOP?jRJg%%Jfl+cDYk~Sqt+4}mt zRX_z4L2=(G;Eu>cMMOkJ9wMTmAd8|RisHVDqVhX;CMi|W_x<~qLNasbF6W-}IqRKS zEdhTxlAC)FVMGvzc%(vcNP`kC?=jC83j2f2)jcA?mMJ~Fp}IytG+o{!IO_^uT_l`@ z@Y4GZAT^4gUN$U8X{`4~ycE|8hVrV*d<%W`CDB2fjM$8{NQd%J5$cDApi58*8i6LG zS`fp_%-|%K8O#aN6@4A2!02@i{Hl|;V5n4J4#0x$bm%UL@wk; zJy0gfLK5h`JY`T<-(9M>e0?YaqM1YDKg%)K1B^}sA_t4WFIElv715`ynrJvC^JFq|zjiYaL zV587UKYtUXkdF#bA?#7!7uy5nDOW34t0qot0iE|%`a(^9U|6uZG8AlTiM)yWqXB3j z8g#kBbYFO?a?uQ9JJBFCcm_On*;+Ijmpp%bQv0p#-Val zfhy5>GyzqiYBUi|q8e(W)96e(n>Nxr>0NX!eTZ(M+v#)kMY{VS&~Q1Lf~KNr0J-UC z21uyX7moOwy$lOLepRqFROg#qUNzP`%NL+lN@xO2If7=wNH3a&>QFuMq1mVbH6lN{ z0?k1I)Px#j05b7R@P%7~&Go(zOd)R_U_0Cw2*A|yMh3hMOpGI%+4kz8Nr3@Kq^h;W z7n%F5wUOO^W@mi!K~!CEoIcy%><>38dOb*)XA^pS z9eNyXMuTgGWY~&-R&+f4FzXl$fz*^%<@UV#Y(Y`)6WBHf+@JU?3QR4UeED0#6-A z4Wc3)M(wfHKBq(0qEl34E_5dP3OMpL`UZWAzC+)mAJC7oMW{zVp`T&ZGw2r}>@4~X z{f_=X=P<$;ox}ulm`4E|ht=p1*5HI%!2$Lz*h3sg00QtLnH{`yFx?2uuW)~4o?R)Cf->|eyFh%5|%>RT@yHQMKIXpDgPMuq&b^x#a!9I=0orP?d`Ib;UsKY zk4=iMPOt6Gtf-{11<;REu$5-ffk$yF(&IF2$LTl&JFtkIAVD|ofirOymaqr+M5kb< zWnoZlFhOj?Ac4_7FZdj0BEav+{08G$3Sm5Jg6?u>U^f#tJQ?S2j&&O6T_9fqyJYS$ zDQf5dD!GeiD*LCo0_QF+Rc_qHD~shTDjt^I$2YRuSc0>0ADn~xqU&%TI*aq!bl?tU z*d*~CV0Zh{p43D=w0Adaii^;lxIZ(SS<$tOMxFgF;J`pU2oHw+4w2ynn!>Qe{PN^R zf5b<7U6z|uz&`l{2ZAktFa=+Vhj!wjXfX7VS3Lx?425}0@GzLE6pz3o@hBime#p!= zvj)JSK(Ij$g?iB(A&&N;*^{akh9kZva087pSG)GnovyL8*Rb5^%H_CX1Fpc8iuINi zM`q=Dp~!BE%`?*P3)C~29O=fqs}W=01YCuy@kC(XDSSDelEgdzz_dTjr+L6MF$vN- zM2n`dNklfmpSFkofbGq|qi8Q$NDF8-IOYg+{EPZ_r@s#9&jXwBR~|LUljP8TY!V^r z1G_k&aC#1|Tp!!5($a*RJ8?4_3@q)Yf`5nQ5Dw!=49g5_gWSb)W-6!}{6BDY9!CF@ zgXft?ixe^!<0b3x61-H7Tcc5CNhsu92$+$7|ICl;fT_!5ehj6T((EY>F+D?(SKtJUZ zQ-HhiJ?rs3ilJelQ^4QClo`AfzAx%e>+o7M8#7nC3va;pqgMO?eh{u72H#oj4K?^8 zaG``7;0YkEssmpMKFUtZ=qTBIQYbLc(bVo9dRoy~2p!tm`s6c{C)+-@-Tb2V_L|!I zV9f6-@dkbjZ`y!2#h3#m#-9H@iBCX)-71r~HA=>1%IaTlJ}UwN;8kGtyxiPuk$ua2 zE-V5P^4i;F?iXf@MGE)jRv=7)!gl=Zdi<=yEHE(&C5&B4C=(0yXQLa( ztzEPT0&fv=2hruKHFwY-g;d742B0O&-0)ANx`@}{s zTgxxbg^bxBfhI`VCBQ+j3FIEkNk|wE4`2a#!N6aLtZVd%P)Q2;X3g@2g0Sv9KM*tM zLUbR9qPvP_*F>=`8(~Efhw$4Q@Y^v|ME!zbYKappf4mXzthE{%*JQ>Y~XN{uWZK>(B~Veii-+ z|175_OTbB*AT6nZq=YI-$$`dAs+7}m=GDjkf{Rk z)pQoEi&D-~!(333eg!g$8NUl5HT)YClLVZH&vv1>9#HIM05+6Xh~*X4;@FDeC1cB` zjsT9-`@(f0e+x^iyByznsv-TxCx}_juWKkvpCiGBhJbHeRE~qrcilp)$U#zJgMQfH z9q$r5(vx(OK^#ORPU0eN(t~7@EYv_eq$j$L^d{M)56K~Y(Q=YY@<6+lG+PFWtm-~r z^8|=o!CNU$s{McrFnE)z<@}+mU9OXKjb}rk69h~w_mf?^GMpJ|h^=JDue8WfEsM2S ze}6OU55Q&w$Www0Zl||UQ&P(UFaUGt74$ZN&|4|Q94T#W10dKe94O19Z~(Jf{p46u zPYOv9Vr1roBOzFiD(N8UPX??b1IR#@#zDn4Ry~pXfH|*{FCf-r)Utq!>*n!|+*BN=D!lG)NO@1mwDiE}=EC9H*=DK}NIM2f2)ljnzKTawyYOdl|AU zw1v(+kF5M6Pz9yvke>%2V?~Gex@pB~(^v}V6QGB&5^t9-SJPHH&xqrrbb|zBjbQOU zbK6WM3JU*TCH&+HU|!6y&!-E3d7u*6F{*;1_s>*`4FSK%axlo6WIFvr8QQxF45Wq3 zrAc(5G2RN0>Rv+VGb|XWzsQzA9`nfjZdO(tfe> zk0J*`(K6DPbbwA>jq^w;T1A$UYd|~7nWqZKRU2lr=)dVz@ZAp9U=hTr6eW!wG9Jn( zuCnI3Kx;ktr;EC>W`9!D=CH0OkRi~dA>hV*C?BJ zvWl$kB&!+Zp{S}j0?2XXu?*@rlQrZPP&s+1JlSG;wKDQHa(gGaosERzm10fhUP?ZE zOv&)booE)h3w2fd$UWp<6d-F!XN=1bzKp2%M_B#^>#(GnrNm)Sg4OhT4ZVRbmHDsa zctgp9RDC~rh&)UlA&-)c*acWza*;Tsk zM~|#if)2Tq3bCe==Jy)_mwCDQpiNWT^7B}YAb%i)ovCdFIfc-i@9Qm>TF>7oaSVBr zywyqGih?)lf_zOaOn{T-%O?Zp-5+>Luz@pVPZ^{she2U3C-0DVSrwZcC-1@I56B5J zf}A9M!8gE3L8Uj+2v@^kBH1h1<>)7R+ZFyyQjP`bec)8@rT2iXzk3>#U0Z#FL_aWa zqI_M=E)^zxN=~mMr@I#m|2pH5Kauu%l(?_R*Wg#aCEv;9RmcHBSYCBKT?amhy*5<+0#B;_eY+!uWekRU&!OUW7X3poo2%9#VF zCG^3ydP55@;5^53Dslp+aPg!sZ0KS7A7En^-F$>gKzdHg>9|Br&lxxYj_;D-znM!0 zp96n@5LpMIG7dHi+%p`*mNkccA%}~gtXu(gWjZj)Oh}wPPBlAn&_p>>I1+7C*352hjVkf zPELmgD|eY()_N|BlQ<7k0Vp%dxi=tF_TucI3=R+!vd%X`7V@>ZxuI(p zIp?VXF8}?*i(-|_0Yxh1^0<6ipoBgN0$oI(pie=8GP<6Ez$#xe69NM#Y~X^nE<|$u zxk2>7PHq4Mi}HnKV-O`UNXw7q%rDj#H2xnuUyO!Hu;a7blqd}^!H&Ij*LlIT z$S0O?m>0`BfX5fKT~zD@OcW#|-*R=)xtU?A0mJm)^KzWcHFmcsvLbMExBz{9lVIj} z2#H_fS|CC?1w~pbj-crnh=nrC6U0i2A*xOx!#D~|)6#PKGGI!ixgfB?GyxX!LS-Wr zlA9pd;4BCpUtzPuQ7v~h<>_7sx4QW@pa`tWQtle=T4qPURLBqigctf6-Pfh6E10TY z&)q;@rTZaPs+t&$$KmdC%_v!>|X@FXyrfF z##*(|rllk{`zAJf@?Uul`Q-nV>*SyKekn+GkFvtc++OY#ZXfq5x1W2Bd!2iOJHWlk zy~Q2m4smaDhq)u%QSKP`4)-p7iyowh=-c!#JwlJtWAq*REJ zAJbFx6Oe$c400JpIkl=`+yuQ4S?EzK9IJxzjK5Bl>%5--pXx$Ar**?|t&lUk(N{M| z92Q(4dj5Bw&~vI>SB^3%UFMElBa&<3qDO9E!ClWjc{NH`C^5lVQw@uCrLb5rA5N%h zg|vSd2}Y^1HQXpFIf3Z;%OP;jsippKT_6~44S~^5|C5~lQvT=({%Ke+1V$YKa;3B= zQx0^pd_lhMSre;uFu~VE^-*LBSSv_>A|$477v#6FPKF$|MrZ$%sbFDn&l%l$(I>A~ z81yH)V>AC>a#UE%%B+AGGXvc~9MjDo=J#6l7238&d`UCxu{zQMKXXr2VS9+HIMt`S&&~qIabzt0q;r$)11M?kN)q&$Wu(|`scVJBi zPUyhe4y^0Ii5*zqfenIHSS#cRxpEx@URC&Aa0xwy-on*Fwy;?Ew{WAdM(87~6#5E! zVU*w$Ji?WNBwQsd7j70*LZXl<^b$lNPgo@j2#w_ZbVy8CJUFth>!5rMM{4|BKGeyF z1?u^+y+U=XAtY3H6i)vmj zz%7E8($;fZ!JeLk7tem>e&f#ZnCJL7KAunDb-bPz_#{4=PvLER8lS<7AdB9><$=KA zN$`SMBOm4$@YnD+^6U6V`K|mm{uzE3{|bMYKhB@xKUHZ|T2-RTpfajVs$^A)%BD(F zrK=n&r^>C$R7t7VWE? z>X7QN>Zt0cI2@N4XNWV#nc^&Q*0|I-dt6c66>;<8R>ZB1dpvGe+@ZJ+;y#NzqfSt# zs58~Q)Y+13>iz0t>QB_)sL#gp@%s4WcxQay_yO@l<0r?@j-MaDFupCmJ^sr0yW$^= ze>ncp_{ZWm$8U*$GJb3P^YJgn?}^_Vzc2obhSwx&QZ-qcLQOx-0L>uH5Y13ciKbdJ zSu;g5O*36HThpisYUXOfnpVvnn)RB;G*4@u(LAepPV>CxMa^!_9?f3OKFvYR+nS@A zcM`G^Mkh>2n4Qp;aBV_o!gC2n6F%1RT9ekHb!y$(Ol^)fSDU9T&<@d#(2mxQ(O#w< zr>)SA*H&q3v<=z?+C|!bY5%QVqrFG_fc8o4bK2*%yS00?d$nI_f7d1Gl62|1Y+Zld zFkQK>LN{JlrK{1+(9P8Obs=3uw@P=nu2Z*OcfamI-NU*^bvtxBbua5)(e2kA(|w}* zTKBE)_r$nFZK5gBlUSHIEU`3kWa8+=F^OXns}g;Qp~Ohy{6w0#Jn`Pd&53U&9!@-( z_)g;S#P<_VB%VtAH1RvVTCdS-^@)0eK2x8sFVy$fkJXp!EA4Q7MIU^S!~?1l`3Xy|FkH4HV3GSnDm z7-kw~8R`wqhBiaH;VQ#&!!3r5h8GPl8UAZ{+3 z8Ny6qmQXJ=2|;15ut-=f+$%gNY!RLlP6{6jp9rUg&xJ3AuZ1&4v$40a(0GY)jIqJ! zH_kCO8H2_aW5~G7_=s_%ag%Ygaf|Uu<1@x*la?plm(-cGKI#6X2a}#mdM;^i(xIde zl1?XmmvqjgGbNksrUFx`X{2eiX^d&CsmT;H%{7Hht)>O0g{C%ByXj`rZqpvqUei9) ze$(rw1E#l3M@%P7-GGR5+5%VNt?%e9temKB!kEh{anEDu{wTE4J+W%1@e1r_F84wB^_eY-P5Pt=)E=ZMp4w+e+Jww$-+qZEI||+HSXX z+Sc1P+qT%Av~9I*vu(HSupPDinA$V7Bz0Emm8rL+ZcW{px+nGZ)MKgdr=CbXnfht! z>C~T6&!qmE`dgZiW=j*(veSyviqpoXO-`Gc){sWimZv?KwmI#ow7qF>q@74Rnf7to zCuyhcadyF;Y9DAHY`?@l)LvpAZXaPEZ=Y(R)0d`So4zc4Mf%3{SJF?U zf1g1zq>N!1(=uu@W@OZ6cr)rU>N9*9vonGjb2H{;EXY`tu_R-4#;qB*XLM#fknwoN zwv7E5A7*^*FgbD^;~iCwiH^yRDUNB5>5f{*BF7DmI~{jBIvwjB_d6bOY;~g&8 zIPUn>@tflh5s5_P#W*oryi9BquMh)bv)Cer#E94_ZW3P?zYxC?zY)I^e-M8X&p1s^ z$vN6N#yQqm?yPi9a8^4fIqRH0XQT59XOlDNT;N>f+~9n``H=Gw=SJry=Vs>?=abH@ z&TY=^&K=I3&KI1!oV%TSoO_-7oco<`JC8VzIX`v&=+e3LF2QAVrMm1cr_1fibPaHg zbxm~DxaPa4Yl-Uy*Nv|2t{twOt`}UpT)SO+Tzg&nT>D+GyAHVCavgFVb{%!S<2vqo z-*v)u()ESwD|ebZ-R*EY-EMcLTXOew_jdPj_jTvF3*1HS{_cV9!R|}kL)|6r;qDRc za(AV>-F>CI!+o`TiTfJ&b?)Wv>)k8etK2ua*SK$W-|oKCeYg8w_geQl_XhU^?q}S4 zdaUp9c#ji3zR1*N+A^~;OEc>;gPAKcw`4w_xj*ygENhmORiAZb*0ov7vX*DvoOMgq zty%YFb!L5;^>x;_S>I>h2>=@Dt8v`N}5ZIPamwn@)QJEa$;-O|g_KIt{-fOJqgEFF`MOCLxlrH`dgq|?&p z(ht&4(i!Pj={M;Q5AqNX?}_uodlEc4kKQAAl00UQ#bfoPdhDJIkLYoEdU&!t9#1b% qwx`I`-!s5d;u-EK^^EgWcq%5QF@Z*`aab6ulgIOSz76Sk(L^HohIo> zV@Db}NN4)y`3sHCbT!tTdm6i=m2RY4>2~@eeUi2{ayxx_e)Tdn={Ud5{F$zfwC<^{ zruuE(t=?#aT_$<e*p(nP!QFp9$8cAc4e{Ia9#!QnX za)pzHc3%2#3(Ijowfvk5V^+lF0lp*PPmLhx1HI9uh(`TC5wGFeKpkTD(G^$5a> zGp&r48qsJG2Ho9CL)oFlAigc09BTh%)-7H*J&!9`AheC;@#ulLhb1j_Z5Dz)p&HL@ z6alAtx?Zml@$h()LcNyBWRm{UbFAl3AE;p*n>6W93kkUn(Hzn~$aK74$yq#HCx^S~ z?z{L)ly@K8&h~bZDBaEk9;YuJgDobQd|W#BCC_r4n2CS8EqAqYJAIY26@Jo&-!*M~1F{-z;d~lcw9&*%_GAvyA)8P13z7owqU*pf*v>2?hh@&W zjwgs8Pjij{^P>AMDzMx@)CW6Kz0_NCR)EllVtglezPpH8VJO)2wBQ=3-q!F z@yMee@6?n>CMQ;asyD|rIDDox%G}P1hEW2W442z?T5?#YN3bQbFd5a=hU?Q%T&>p+ ztv@QFcFZpGitBMx_PKr<8mHg0pEUADJjwjc^+O#)jW)@C@!>VJC947{;&<*nW@m;l z&`nSbioAXrK?hbT5D(fKDI?*>ppTl`ey!A%RruBQ)6XK?7&S`mE2U+|!SfKb{-J!hgZcKol548B4_AR3G8X2ssUp{H=5r&Qyf1^V#(spLb9;tis37tLEOK!#y8 zx+Ki=zM*xTq95{q5gGkP5Lk3X41ZbOV|5Vm=7;Pv(G_vj=Y0ogJl33LdaEnz%_6Vg zBp1sz^flUj0r>YS*AN;VM(dV&{|Lle=dGHyxTasI+)IPMN4^R;Cz+*w7J=r1n?lMq9WgWuG(1X z49LsgTD-f7lRZgyGve&Aunrgf{!G`I&h6Nyt!sR_}cgo2=icv1*^E;f1Wd$Pfu3Ys=jw@Gj-uPpBR75Yk8)hf$ukM)Dnhbk8M2*3WreX5*oTJ5F_dCJryM z#whPizK)&SCv1Vrm<_f)sj^kKQ*X4F@729Dx(FlLEj8`t%(hNKo2eyu}Vc7bEm(dQ;yGhClL zXvLf8%hr`xKh_F)ayBtclyI*=lURXAj5r_FBi diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 3f09790..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index aa38f86ba2610ef2aff9b9ba9b2bdfcdfaf38147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7234 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib deleted file mode 100644 index 994d4c3..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,67 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index c82d3581bf07ad42836237f2cd3ea55ca48b73b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10220 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 O_|R9B- - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index ac298ce7e33ac2b2b9e3971c5a730f431ed872a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12535 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 &-a!7R(}MG2KUBgXUDll+r+*ztt;Vw2g`>-E2it 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/relaunch b/Mac/Sparkle.framework/Versions/A/Resources/relaunch deleted file mode 100755 index e7b96d61466005ca15b235b527e3ceb5d4819283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58924 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2b3d425..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 1d4655c593e467e2972b1800808d53a152f4e56b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7675 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2b3d425..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 103b1cf8478a00db14aafa192b05f1868c294c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10895 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 SGKqLr0)O - - - - IBClasses - - - CLASS - NSObject - LANGUAGE - ObjC - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index 5132e29..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index c09d9e70d19c579ac605ff48aaee067448e0cea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12898 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 lomi4xP~K - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index c5a067e..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 53cb91a9b32fc4ddcc2a4506d3ae1c0458085256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7474 zcmbtY2Y6If_CNPdd(+>{ym=2o8>-ZhLJ376g-9eB0uw?fnan)Mz+@&&0YXHtB49x* zh=>I+0Yt@yy&|kwSZvr3!LIA7>$0r6cJ{pYCLs#C|L^-xzRbLG&$*}m?(g2Z#%Ls& z%E@^H2vE?09t>avGgxN!St=)zk$9}CPb%Ixt4}Zys*m8KnSJ7Qi{wx$=?1c9+iPF~ zZeCeYw)QX_Oa&RK;hp}#WVuNW7iNU+Z{a)m4}1?lz>n|~F%m1W5j)|D zKqTTLJ;`8_OY+EAaxNK1ib*M%Ov=d=QblHvS`s9SNSrJuO=JyOOD-eVlIzG;vW>Ko z-Q;faIC+BXCC`w*kmtclULXg_U&$fz5_y%pM&2Yx$-CqO@*(+>{F8h`z9rw0|B#=l zj_Rp_+Nhm6sF#XVqJ3$9I)DzMqv#|$gU+P0=xjQN&ZYC{d|E?mX^_^@5M4kcl+jJ} zM!K2aL~o|I&|B#ix|MDtqv&n4g|^b|bO+r@Z>PKH9rR9mH@%NOFuhMK9gV)vyTJ|) zZ~_l5aDxW~@PY^ubb`*11zn&kbc62D1ANdEdO>gK1AU<%oCEz~01SjdFc^kFHVlQF zYJXr_Jf5oV6N(0t$$9?36fLuux}=)JV&%D<65(;1xjGn25TTaf_E@CLz0;6Hfd{mWAqNHa2%(i@>mt{r8 z@lZV29!X{TaWEbxU=TB{mt>}G+8jkt+zQ1|0%OpvigYT7(Fw?@>HYwIYm%jK9;?~~ zlb{UFhsjV572t;{%*;Bo`K*@Ju?UN@_!~IORG0<WQ#L%~R3=Is# z(}|Eg!yhOQ*2z)U2}5UL(h-=2lCxnB%!PR{A8Mc$f=~w`2!jj@pjIs|CG^weWMe!Q zmJ_H#bq-6iSdKZ*QOJrh9PQN?Zh1%vSk)y#TtdMs5 z@^Em6S>1Z_D=;tf@SSep~n#+#CRSPT^BlDaCU&Tm#p_b+7@hhmDw8CEWO<^a`ePf$AJ{_nt5i72=1vTzX+{c{&sc2hU3c zu`aZNz7aOJz-AbOqDu2uPVJ&SzZJG@hb^!bwyCAA*{-;QUKOfPq}*gmN)u^;)*a9a z+hGUngfVD@CWHZN3zGsU@-oa@du`5(X#SOB))J#NJ$JyJt#BvY1!K^E^e9r7k;fke z2IC1#q4rd}J>5%p!#&td_px~_3)^MxG1!BVdH^1Thu~p&1RjOQ;Bj~Yp2Vhk8unsY z?SuXB7kCy9V0k?U&!cl%BPe#_O(2wz<=8Zw6!WLOsfwhcGWs;5N)2)Qa}}xD^}zV#;`okYa$U65DVNo5?)x#^spB zuB;22%~Ljub+6$&H85Sbi#A2Cvu;(2MQsT87OT1)-i9Oa4jjdHJO;;^kL9rO zte9EYBvx@WgHrD!PJPe;sXl^_5v4wb&){zwT47^N3`bNLMW;&=!G%>#jdBv59?JTg z*#OqlMQkekXj6}ee=yTd_!|BRC*WUj68_D4vEHl?>&yDFb8s0gY;26mzRHqPUt=(t zlI!BZMA(-?ou}XV&pY#7u3w&6<(n7_1sjv;C>CSbR~b*HF#nOply7NncHWsXSevC0 zLIi9f8>$F>K|^ zBPu@rjJWs<{EDb}iU1*m5*_|iq9+E#c(so3w=f!67*p;;2wfQ8!dL{?OIhKRh&kCj zuz_xhh`_y$Rgytr0uWqEByQo~Ew6FI|`1tv!cV1B_UydIf}AnBD^SuP~KNgvXe^n*)Ce>g%0l0j-m zD&4s-5l_d$#qnr7fwolPN~&IKkbN#2&O9ui<+%9?*p8z+ATh}%LrG3Y$Q|b5I-%N* zpgW`}9u2<<4w6rXk>O+n8A%GrC^DLi!C0&FAcUyDfyQ7+0Rr_#Nr|%D;1(bnU#KQ% z6f5A3Y$O{|9caQrZHDvseg0k|0TvYPV2iC2V3Fr&2AI~7P`wWcMj{pT z#T%yD&+fpLWF5Jxg9Byke57<8L!8&n=yLxL4s1{zxIuN`MzR?lI7V(Ew~{Ttb)cM0 zMh7OH>439?0}*6(nN^Ckux^!S_h2Wvo$Tu1fuBwJod*aR!wWRTP@F0FQ%*|mQ9ZaH z4v;;ViU-L8I8GiRkCMkadN37{qLLM{3iJRFaov-~PDM&Lt~?kH2YvN&gHMTmh5#u9 z4{4>crBRmaV8R#7Y;=-~Q@)6A0dDkCk+6)o>mW~(r^wT7K&hfZfK5{t?PZZvs9x*q zePn+N*{}2-GGmR2sqm|9E3`4sk^`;e0C`T`A7vOoVImQ1LdZ~mXP+h&n#7B+qgCT~ z$jzFYk-n=io10gFmm^1F*ia-lSHaw2D{J_y=KSnoIe7(n@}T?ztnAY_$Wd_5MqVbb zw2)Ua>qmxQ$qkLl3S7NR-F0f?4wKhg$?N0|Wu&08zbR?tVF=CtixMi^tE1!{b^lb% zYUX6(?T;^0!Ta==1p9W;pr=Y`|`cq&t6qu<7Law_?Ve5`EO$S34e@)`LX`5aUJ z1sp(zh1=cAV5%OkiqK+}+;vq=%-puySgjrUuzD6^3)uoz!IaV^Uy*+R(gs{W1NFg# z99HLzg=7{sYtEk_|86D!A}1B+JNX0ClX9X&UJy)2Q%TgVfIjXI)ODln=1<1e@V#+Q zla@#O)SqN_hb=X3G@7(+^>p=R4d3<825HuPPkw48Kad|4>omIld%u52*Z*kP8F7Xl zMCS%O-8tnsvE!QZkawCs0JR6a{P(atP=7n11XXi_(* zCZ8d#z6WV_EgVBKU4f=0ky3|Hc^0~EWs?*+JRPCuFg;UtB^_v)nh!dVJlCSMblU_& zlnH9pzaIGA_J0r5qB`Y|cKFX?);75@EWP_IhAHxAGfmN=8aED|Iv-`}WLi!usGm-u zm2@hdMgz2pPN&tZiLGGG>;kruUC1tCj9ttwVXN4sHGIFybh6&3VU@3cru`IP{LLyg zpoTxcxLyt|_7%mK`}+U?&~(6@KuS4G@+k?Q(;=4FCVynj>3ukw;?#Q9*Vd3o|5cdv zDg4#f|2O$jX!C$-4dv!_n0H9-TxBD1PSQ7JSqwW_X=*%lP*v3M-Tuf9W$7ExmMxj3 z@rVjft}y!b9j+I%^u4@*=TJxSG^$K3uqk*RH3?6pYBNPwo+-H=nAch?y7_ogrIcJ8 z&#BCKT4l|YVO^#O>FGRQqH3qB=%sWuT|?K>%jo6w3VJ17N3Wvm>DBZadM&+g$=0!}*m`y~yM|rMu45b6^=u=%fo)2H-OZ}n18{GL0PIn(ajl^b(uZ2;L+V;r zR-~N+mLQ=94$pRb;Tdi&9u$tpqrGW(B)5RvMebJ*p)DBDfwUBBx0Xif3iNXWy_Y^k zU!@<>pLIr^N9WZ^y3V>Tx^B82x}Lh;y1u$|bOUsQbVGDQb-B8H-EiGV-2`2^&abP~ zMRW;Wvu=&e@Oqb{!9IL z25Qh7j0VnNHP{VKgUc|`P-9qZxY%%mVTa*S!$HHFhW8EsFq|^lj9JDW#-7IB#=gdL zj022=j6;k=jk(5rV}Y^IILo-mxWu^Jc(HMnah-9!@mk{+5%ED=@ZjQ(<#o( zb>W6`qqvFOd0ZJcnXBNYaaCM3Hhqo=4|t5^H}pZ^8|CDx!63>Jjq;Uo@}l#SDR;=W%ELF z#Jt$tV2+!Yn6EP5VLopD)*@Q+E$3SnTauP$%PPxy%LdCv%O=Za%NEO4%WlgPmZvOx zE&D7lT8>*jvwUg!)oQXjtXbBc)`8aH)l&U&|XpY#x2#93N3F-KA6h@Qeq;U4ddfy@dRr&k5ZiEDkmd&YBN+lSf%*-=g^=D#vQaTE{xaM#p`QJ&xBMZ#v#~yyJM+ z@t)&-$A^xO9X~sBogdd9);pItlg^ZLqjQsUv-4)> zt3HLtt2kyVS zPk16+$Zc29uyuH_6qxiqrx%aJ>di4BjFR_GvRaL3*jr_YvF`&Qus;u z#VdL{d9%D-z1_V&Z!d2jZ$EE;??CThZ?<=acf0pK?~~q-yx)jkv8y;x94VHFVX;As zi;ZHF*eqTkt`^sdd&CFDhs8(5$Hgbbr^RQ){o=FYbK(o)LGh6IviPcaSbRf#OFSYT z6+ad~m3YZ536dyvlCq?(Qg_KG^^*EX{iOcVKxwd)E#*jg(lBX+R3MF(#!BO)2~v?% zB9%&$r1Pb6$uCt(v!prFJgG(sN+C&>Vp5~DL|P$TAgz?vNS8^MOV>%8)U7fgpHn~d LVePl=TiW?wt9#5* diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib deleted file mode 100644 index 018710a..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,39 +0,0 @@ -{ - IBClasses = ( - { - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - CLASS = NSApplication; - LANGUAGE = ObjC; - SUPERCLASS = NSResponder; - }, - { - CLASS = NSObject; - LANGUAGE = ObjC; - }, - { - ACTIONS = { - installUpdate = id; - remindMeLater = id; - skipThisVersion = id; - }; - CLASS = SUUpdateAlert; - LANGUAGE = ObjC; - OUTLETS = { - delegate = id; - description = NSTextField; - releaseNotesView = WebView; - }; - SUPERCLASS = SUWindowController; - }, - { - CLASS = SUWindowController; - LANGUAGE = ObjC; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 6b787d4..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBDocumentLocation - 69 14 356 240 0 0 1280 778 - IBFramework Version - 489.0 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 7e6d490e723329c1372940af22e3d49bc0ee5da0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10180 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 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib deleted file mode 100644 index 5220a22..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index c5a067e..0000000 --- a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 64babac12911fdb05ddb63ef96193137c91f3ddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13483 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 C^-$vg diff --git a/Mac/Sparkle.framework/Versions/A/Sparkle b/Mac/Sparkle.framework/Versions/A/Sparkle deleted file mode 100755 index 0db0a8f01fb6f1cf39bbe427ac76153793a26a3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463540 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

        B-YH*!3RdDu#}q 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 diff --git a/Mac/Sparkle.framework/Versions/Current b/Mac/Sparkle.framework/Versions/Current deleted file mode 120000 index 8c7e5a6..0000000 --- a/Mac/Sparkle.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/Mac/TB_SendTemplate.png b/Mac/TB_SendTemplate.png deleted file mode 100644 index b2602fe20b5e4b6ca5883517c734262b4302e25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3144 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 iJ*(X&mjCWN{xbl=in9fpvmGG-0000 -#import -#import "Constants.h" - -@interface ViewDelegate : NSObject { - WebView *timelineView; - WebView *oauthView; - NSMutableArray *conversationViews; -} - -@property (nonatomic, assign) WebView *timelineView; -@property (nonatomic, assign) WebView *oauthView; -@property (nonatomic, assign) NSMutableArray *conversationViews; -@end diff --git a/Mac/ViewDelegate.m b/Mac/ViewDelegate.m deleted file mode 100644 index 8a4e6af..0000000 --- a/Mac/ViewDelegate.m +++ /dev/null @@ -1,134 +0,0 @@ -// -// ViewDelegate.m -// bungloo -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "ViewDelegate.h" - - -@implementation ViewDelegate - -@synthesize timelineView, oauthView, conversationViews; - -- (id)init -{ - self = [super init]; - if (self) { - self.conversationViews = [[NSMutableArray alloc] init]; - } - return self; -} - -- (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)message { - - if (![message isKindOfClass:[NSDictionary class]]) return; - - NSString *viewName = @"TimelineView"; - if (sender == oauthView) viewName = @"OauthView"; - else if(sender != timelineView) viewName = @"ConversationView"; - - NSLog(@"js<%@>: %@:%@: %@", - viewName, - [[message objectForKey:@"sourceURL"] lastPathComponent], - [message objectForKey:@"lineNumber"], - [message objectForKey:@"message"] - ); -} - -- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { - NSString *viewName = @"TimelineView"; - if (sender == oauthView) viewName = @"OauthView"; - else if (sender != timelineView) viewName = @"ConversationView"; - - NSLog(@"jsa<%@>: %@", viewName, message); -} - -- (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { - NSInteger result = NSRunCriticalAlertPanel(NSLocalizedString(@"Bungloo", @""), // title - message, // message - NSLocalizedString(@"OK", @""), // default button - NSLocalizedString(@"Cancel", @""), // alt button - nil); - return NSAlertDefaultReturn == result; - return NO; -} - -- (void)webView:(WebView *)sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id )listener { - - NSArray *frames = [NSArray arrayWithObjects:timelineView.mainFrame, oauthView.mainFrame, nil]; - - // If it is clicked from one of the views the open default browser - if ([frames indexOfObject:frame] != NSNotFound) { - [listener ignore]; - [[NSWorkspace sharedWorkspace] openURL:[request URL]]; - } else { // otherwies load the iframe stuff like YouTube or vimeo - [listener use]; - } -} - -- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { - - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSString *pathToJsPlugin = [@"~/Library/Application Support/bungloo/Plugin.js" stringByExpandingTildeInPath]; - NSString *pathToCssPlugin = [@"~/Library/Application Support/bungloo/Plugin.css" stringByExpandingTildeInPath]; - - if([fileManager fileExistsAtPath:pathToCssPlugin]) - { - [sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setTimeout(function() { loadCssPlugin('file://localhost%@') }, 1000);", pathToCssPlugin]]; - } - - if([fileManager fileExistsAtPath:pathToJsPlugin]) - { - [sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setTimeout(function() { loadJsPlugin('file://localhost%@') }, 1000);", pathToJsPlugin]]; - } - - [sender stringByEvaluatingJavaScriptFromString:@"var OS_TYPE = 'mac';"]; - - if (sender == oauthView) { - - [oauthView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('oauth') }"]; - - } else if([conversationViews containsObject:sender]) { - - [sender stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('conversation-standalone', function() { bungloo.conversation.showStatusFromController(); }) }"]; - - } else { - - [sender stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('timeline') }"]; - } -} - -- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems -{ - //remove reload menu item - NSMutableArray *menuItems = [NSMutableArray arrayWithArray:defaultMenuItems]; - for (NSMenuItem* item in defaultMenuItems) { - if ([item tag] == WebMenuItemTagReload) { - [menuItems removeObject:item]; - break; - } - } - - return menuItems; -} - -- (void)reload:(id)sender { - [timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.timeline.getNewData();"]; -} - -- (NSString *)pluginURL -{ - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSString *pathToPlugin = [@"~/Library/Application Support/Bungloo/Plugin.js" stringByExpandingTildeInPath]; - - if([fileManager fileExistsAtPath:pathToPlugin]) - { - return [NSString stringWithFormat:@"%@", [NSURL fileURLWithPath:pathToPlugin]]; - } - return nil; -} - -@end diff --git a/Mac/main.m b/Mac/main.m deleted file mode 100644 index 75ec058..0000000 --- a/Mac/main.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// main.m -// bungloo -// -// Created by Jeena on 16.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import - -int main(int argc, char *argv[]) -{ - return NSApplicationMain(argc, (const char **) argv); -} diff --git a/Mac/publish/Appcast.xml b/Mac/publish/Appcast.xml deleted file mode 100755 index 70c308e..0000000 --- a/Mac/publish/Appcast.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - Bungloo's Changelog - http://jabs.nu/Bungloo/download/Appcast.xml - Most recent changes with links to updates. - en - - Version 1.4.3 - 10.5.0 - http://jabs.nu/bungloo/download/ReleaseNotes.html - Sun, 28 Apr 2013 10:23:47 +0200 - - - - diff --git a/Mac/publish/ReleaseNotes.html b/Mac/publish/ReleaseNotes.html deleted file mode 100644 index 95df15c..0000000 --- a/Mac/publish/ReleaseNotes.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - Tentia Release Notes - - - - -

        Bungloo 1.4.3

        - -

        Fixed bug with wrongly showing unread mentions

        -

        Other smaller bugfixes

        - -
        - -

        Bungloo 1.4.0

        - -

        Added scroll to load more posts

        -

        Added doubleclick for conversation in new window

        -

        Added synchronized "read mentions" cursor

        -

        Added "show next view" shortcut

        -

        New possibilities for plugins

        -

        Inverted "from" label position

        -

        Bugfixes

        - -
        - -

        Bungloo 1.3.0

        - -

        Changed to one window

        -

        Added search (skate.io)

        -

        Bugfixes

        - -
        - -

        Bungloo 1.2.2

        - -

        Fixed crash on Snow Leopard while opening new post window

        -

        Map is not shown anymore when coordinates are empty

        - -
        - -

        Bungloo 1.2.1

        - -

        Fixed problems with case sensitive file systems, thanks to ^http://ck.kennt-wayne.de

        - -
        - -

        Bungloo 1.2.0

        - -

        Inline video for YouTube and Vimeo + inline sound for SoundCloud, sadly some buttons in the widgets still don't work but you can watch the videos and hear the music :)

        -

        Better handling of non square avatars

        -

        Bugfixes, now loading more profiles correctly

        -

        Multiple mentions now are added behind a /cc while responding

        -

        Bugfix, better handling of - in entities

        - -
        - -

        Bungloo 1.1.0

        - -

        Moved time ago so it is always visible

        -

        Implemented thumbnails for linked images and videos

        -

        Added a map to posts with position

        -

        Links now are only linked if they start with http

        -

        Smaller bugfixes

        - -
        - -

        Bungloo 1.0.0

        - -

        Automatic updade doesn't work, please download Bungloo from here: Bungloo.app.zip and then remove the old Tentia from your Applications directory.

        -

        Renamed the application from Tentia to Bungloo as proposed by ^nn.tent.is - (Thank you for that!). Watch OfficeHours 2013-01-22 - if you want to know why it needed to be renamed

        -

        Added new icon by http://www.fasticon.com

        -

        Smaller bugfixes

        -

        Allowing empty text if location or image is present

        -

        Changed the look of names

        -

        Shows in profile if entity is following you

        -

        Added "follows since 'timeago'" to following/followers lists, thanks for the - pullrequest ^nn.tent.is

        -

        Temporarily highlights a reposted post

        - - -
        - -

        Tentia 0.6.2

        - -

        Added possibility to show followings and followers to profile view. Just click on the number.

        - -
        - -

        Tentia 0.6.1

        - -

        Removed shaddows from posts like discussed with ^kevinkleinman.tent.is, more UI changes to come

        -

        Thanks to ^nn.tent.is for fixing the bug which would send on Cmd+something

        -

        Smaller bugfixes.

        - -
        - -

        Tentia 0.6.0

        - -

        Reposts are now collected

        -

        Open profile is now Cmd U

        -

        Sending mentions read cursor, therefor you need to reauthenticate

        -

        Fixed entity detection which contain dot at the end

        -

        Profiles with no name are linked now

        -

        Using open street map now when clicking on the pin

        - -
        - -

        Tentia 0.5.4

        - -

        Fixed critical bug which prevented finding mentions in text

        - -
        - -

        Tentia 0.5.3

        - -

        Fixed problem where deleted posts weren't removed from Mentions

        -

        Fixed problem with localStorage on 10.7

        -

        Showind photos now on the profile

        -

        Smaller bugfixes

        - -
        - -

        Tentia 0.5.2

        - -

        Click on avatar opens profile

        -

        Added possibility to post photos (not available on basic tent.is plan)

        -

        Bugfixes

        -

        Changed app name to "Tentia on OS X", therefor you need to reauthenticate.

        - -
        - -

        Tentia 0.5.1

        - -

        Implemented private posts

        -

        Implemented cache

        -

        Support for HTML <link> element

        -

        Clicking on dock icon opens main window

        -

        Fixed conversation view loading posts

        -

        Repost is now mentioning the original post

        -

        Several bugfixes

        - -
        - -

        Tentia 0.5.0

        - -

        Added "Send" button to "New Post" window

        -

        Added Profile view

        -

        Added follow and unfollow possibility

        - -
        - -

        Tentia 0.4.2

        - -

        Removed Photo post type because the Tent protocol in version 0.1.0 does not quite support it yet

        -

        Implemented showing and making reposts

        - -
        - -

        Tentia 0.4.1

        - -

        Fixed problem where you couldn't log in again after you logged out.

        - -
        - -

        Tentia 0.4.0

        - -

        Implemented Photo post type, you can now upload a photo and see the photos others uploaded

        - -
        - -

        Tentia 0.3.1

        - -

        Security update

        -

        Thanks to ^epirat.tent.is the secret key is now saved in the OS X Keychain instead of the NSUserDefaults file

        - -
        - -

        Tentia 0.3.0

        - -

        Implemented delete own posts

        -

        Implemented remove deleted posts

        -

        Added a JS and CSS Plugin API

        -

        Implemented adding location to post

        -

        Implemented blue right border if you're mentioned in a post

        -

        Bugfixes

        - -
        - -

        Tentia 0.2.4

        - -

        Activeted spell checking

        -

        Fixed problem where Tentia would stop updating

        -

        Added a better detection of links in status texts

        -

        Hashed are linked to skate.io now

        - -
        - -

        Tentia 0.2.3

        - -

        Fixed problem where you couldn't login with a https entity

        -

        Moved Mentions and Timeline from File to Window menu item

        - -
        - -

        Tentia 0.2.2

        - -

        Resizable "New Post" window

        -

        Better authentication guidance

        -

        Fixed broken Window menu

        -

        Enter now works in "Nes Post" and is visible in all views

        -

        Bugfixes

        - -
        - -

        Tentia 0.2.1

        - -

        Sadly the automatic update from 0.2.0 will not work. Please download - this version manually from - HERE.

        -

        Working on OS X < 10.8 again

        -

        Added growl support

        -

        Bugfixes

        -

        Moved reply icon to left so it is easier to use when the scrollbar is shown

        -

        Login with the [Login] button now works

        -

        Fixed automatic updates so it will work next time again.

        - -
        - -

        Tentia 0.2.0

        - -

        Bugfixes

        -

        Implemented Notification Center

        -

        Implemented new Conversation view

        -

        Needs to reauthenticate to get all needed permissions

        - -
        - -

        Tentia 0.1.2

        -

        Bugfixes

        -

        Mentions now appear as realnames

        - -
        - -

        Tentia 0.1.1

        -

        Bugfixes

        -

        Changed to send on Cmd+Enter.

        - -
        - -

        Tentia 0.1.0

        -

        First attempt to rewrite the old Twitter client Twittia to a new and shiny Tent client Tentia.

        - - - \ No newline at end of file diff --git a/Mac/publish/dsa_pub.pem b/Mac/publish/dsa_pub.pem deleted file mode 100644 index 4c959f3..0000000 --- a/Mac/publish/dsa_pub.pem +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIDPDCCAi4GByqGSM44BAEwggIhAoIBAQDjho3c9LB9TBv/wUQSegtiD2Q/YFjK -HvJH2ndtw2MIwd9iLA4JgXuZAZHpIa+YV7vU97TCvdRmO50VkfULkRona2SjE8lR -oK3VMOkJNGlAK0MfNgDF3/KcI7W6wTZRq/QLLI9Hi1oUpfheDCrrONyvHhCRW5UD -Rm/1Y/TltWfvDi2XmzvVFc9ISnuWoAntzp0IshWeAkcpDLbXJ3u9GudVAHeowEps -+BlMHMrzKPyvviRp0skJkmYvDpZn1YI9WhI4a65hPvgGO7a0/bgc1WbI6nR9mx6f -v+L37eqXoAJ+jrd2BaxD73BH7gBidO3xEYP0oUAxi1xkh2t587yyPU9lAhUAkKxj -3QWYyr+bYg6PDQyx2XpU+hcCggEBAJjhPOB+yLjbobEKJLzdjYujO0XMKVwej6k9 -14lCems95gwjWVS8t8rLAEYcheUPsz4rAid0ONCRQYbWmMBksv6AuXYH/qQM0BcB -DXtXnTRjUkDHCyWw+/QnkiQ+oHrzsZHPO1j+gsLOvZw2dfC1DUHHqsqaW1Oq8Xu9 -q+slmwbjTuymsbgfBJ27P09PU+FM0VNVQTCEXfZTMlDsCl6o19QmRbCLAqY0VhKZ -qPeL0atvdkaczDrNReZYRHcCfa9sO74Kt/m10UW7vEL5bIjYTN7kWvLh5HAuMvZo -Ta77PJpD0X0HbPUrX0/2YXZchxt3is1Tfy03T9aO4iWE+0Qy6wYDggEGAAKCAQEA -4AxqBHt4LMlsK330/0YXhyKYJEBjDHftz8vFuyq7Zob0t5euDExqtkjnDTo9BD/m -4tOE3/12IHL8kPpB0augGHONyoCO7Fdm+CR+mWNMqg2qo5mdPxEzP74WFrryhvh3 -z/GMhBPfZ/qSbfOvI9snc2KS6Pi34L+Je1UiYt8+gmN/uF/cUTWIkOUavI6AuGIB -oCkWGpEYjAYfZkR80/pKNQq2qLc9hiUAj1VpY5B6pxlelmos+/F62Je+E6Fd1VZN -cJfvL2kp/9bPU35cye4/FGkrW94DgRBw3IpAVrnwjnglJn2JUr7BySLO7PhFfTvO -ZbWeowFp6qKpOugZ7kS//w== ------END PUBLIC KEY----- diff --git a/Mac/publish/publish.rb b/Mac/publish/publish.rb deleted file mode 100755 index b036fb8..0000000 --- a/Mac/publish/publish.rb +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env ruby -wKU -require 'time' - -def test var, message - unless var - puts message - exit - end -end - -path = File.dirname File.expand_path(__FILE__) -mac_path = File.expand_path(path + "/..") -release_path = mac_path + "/build/Release/" - -version = `defaults read \"#{release_path}/Bungloo.app/Contents/Info\" CFBundleVersion`.gsub(/\n/,'') -length = `stat -f %z \"#{release_path}/Bungloo.app.zip\"`.gsub(/\n/,'') -signature = `ruby \"#{mac_path}/../../Sparkle\ 1.5b6/Extras/Signing Tools/sign_update.rb\" \"#{release_path}/Bungloo.app.zip\" \"#{mac_path}/publish/dsa_priv.pem\"`.gsub(/\n/,'') - -test version, "Couldn't find version" -test length, "Couldn't find length" -test signature, "Couldn't find signature" - -unless File.exists? "#{release_path}/Bungloo.app/Contents/Resources/dsa_pub.pem" - puts "#{release_path}/Bungloo.app/Contents/dsa_pub.pem" - exit -end - -xml = < - - - Bungloo's Changelog - http://jabs.nu/Bungloo/download/Appcast.xml - Most recent changes with links to updates. - en - - Version #{version} - 10.5.0 - http://jabs.nu/bungloo/download/ReleaseNotes.html - #{Time.now.rfc2822} - - - - -XML - -File.open("#{path}/Appcast.xml", 'w') {|f| f.write(xml) } -system "scp \"#{release_path}/Bungloo.app.zip\" jeena@jeena.net:~/jabs.nu/public/bungloo/download/" -system "scp \"#{path}/ReleaseNotes.html\" jeena@jeena.net:~/jabs.nu/public/bungloo/download/" -system "scp \"#{path}/Appcast.xml\" jeena@jeena.net:~/jabs.nu/public/bungloo/download/" - -puts "Done." diff --git a/Mac/Icon.icns b/MacQt/Icon.icns similarity index 100% rename from Mac/Icon.icns rename to MacQt/Icon.icns diff --git a/MacQt/deploy.sh b/MacQt/deploy.sh new file mode 100755 index 0000000..d438210 --- /dev/null +++ b/MacQt/deploy.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +rm -rf bungloo +mkdir bungloo +cp -r ../Qt/* bungloo +cp -r ../WebKit bungloo +cp -r ../images bungloo +cp Icon.icns bungloo/images +cp setup.py bungloo +cp Info.plist bungloo +cd bungloo +python setup.py py2app +#mv dist/Bungloo.app .. +cd .. +#rm -rf bungloo \ No newline at end of file diff --git a/MacQt/setup.py b/MacQt/setup.py new file mode 100644 index 0000000..0c4ee4c --- /dev/null +++ b/MacQt/setup.py @@ -0,0 +1,51 @@ +""" +This is a setup.py script generated by py2applet + +Usage: + python setup.py py2app +""" + +from setuptools import setup +import os, PyQt4 + +files = [] + +for dirname, dirnames, filenames in os.walk('WebKit'): + for filename in filenames: + files += [(dirname, [os.path.join(dirname, filename)])] + +for dirname, dirnames, filenames in os.walk('images'): + for filename in filenames: + files += [(dirname, [os.path.join(dirname, filename)])] + +VERSION = "2.0.0" + +APP = ['Bungloo.py'] +OPTIONS = { + 'argv_emulation': False, + 'iconfile': 'images/Icon.icns', + 'plist': { + 'CFBundleShortVersionString': VERSION, + 'CFBundleIdentifier': "nu.jabs.apps.bungloo", + 'LSMinimumSystemVersion': "10.4", + 'CFBundleURLTypes': [ + { + 'CFBundleURLName': 'nu.jabs.apps.bungloo.handler', + 'CFBundleURLSchemes': ['bungloo'] + } + ] + }, + 'includes':['PyQt4.QtWebKit', 'PyQt4', 'PyQt4.QtCore', 'PyQt4.QtGui', 'simplejson', 'PyQt4.QtNetwork'], + 'excludes': ['PyQt4.QtDesigner', 'PyQt4.QtOpenGL', 'PyQt4.QtScript', 'PyQt4.QtSql', 'PyQt4.QtTest', 'PyQt4.QtXml', 'PyQt4.phonon'], + 'qt_plugins': 'imageformats', +} + +setup( + app=APP, + version=VERSION, + data_files=files, + options={'py2app': OPTIONS}, + setup_requires=['py2app'], +) + +print os.path.dirname(PyQt4.__file__) \ No newline at end of file diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index c9a4bf3..5fa8c58 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -2,9 +2,11 @@ import os, sys, pickle, subprocess, shutil, json from PyQt4 import QtCore, QtGui, QtWebKit, QtNetwork +from sys import platform as _platform RUNNING_LOCAL = os.path.basename(sys.argv[0]) == "Bungloo.py" RUNNING_ON_WINDOWS = os.name == "nt" +RUNNING_ON_OSX = _platform == "darwin" if RUNNING_LOCAL or RUNNING_ON_WINDOWS: import Windows, Helper, SingleApplication @@ -33,7 +35,7 @@ class Bungloo(): self.authentification_succeded() def resources_path(self): - if RUNNING_LOCAL: + if RUNNING_LOCAL and not RUNNING_ON_OSX: return os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) else: return Helper.Helper.get_resource_path() @@ -95,6 +97,7 @@ class Bungloo(): def handleMessage(self, args): # argv is just a array of words which you can get in from the outside argv = json.loads(str(args)) + print args if len(argv) > 0: if argv[0] == "--new-message": text = " ".join(argv[1:]) @@ -308,10 +311,10 @@ if __name__ == "__main__": if len(sys.argv) > 1 and sys.argv[1] == "--help": print """ Usage: bungloo [option [text]] - - Options: - --new-message [text] Opens new message window with text - --search text Opens search with text + +Options: +--new-message [text] Opens new message window with text +--search text Opens search with text """ sys.exit(1) @@ -330,7 +333,7 @@ Usage: bungloo [option [text]] app.sendMessage(json.dumps(sys.argv[1:])) sys.exit(1) - bungloo = Bungloo() - app.connect(app, QtCore.SIGNAL('messageAvailable'), bungloo.handleMessage) + app.bungloo = Bungloo() + app.connect(app, QtCore.SIGNAL('messageAvailable'), app.bungloo.handleMessage) sys.exit(app.exec_()) diff --git a/Qt/Helper.py b/Qt/Helper.py index 4d87872..02ff2b0 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -4,17 +4,21 @@ from PyQt4.QtCore import QTimer, QVariant, SIGNAL from PyQt4.QtGui import * from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply, QSslSocket from PyQt4.QtWebKit import QWebView +from sys import platform as _platform import os, sys import array class Helper: - @classmethod - def get_resource_path(cls): - if os.name == "nt": + @classmethod + def get_resource_path(cls): + + if os.name == "nt": return os.path.dirname(sys.argv[0]) - else: + elif _platform == "darwin": + return os.path.dirname(sys.argv[0]) + else: return os.path.dirname(__file__) class WebPage(QtWebKit.QWebPage): @@ -93,6 +97,8 @@ class WebViewCreator(QtWebKit.QWebView): os_type = "linux" if os.name == "nt": os_type = "windows" + elif _platform == "darwin": + os_type = "osx" frame.evaluateJavaScript("var OS_TYPE = '" + os_type + "';") js_plugin_path = os.path.expanduser('~/.config/bungloo/Plugin.js') diff --git a/Qt/SingleApplication.py b/Qt/SingleApplication.py index d9d807f..3de572c 100755 --- a/Qt/SingleApplication.py +++ b/Qt/SingleApplication.py @@ -3,9 +3,11 @@ # from http://stackoverflow.com/questions/8786136/pyqt-how-to-detect-and-close-ui-if-its-already-running from PyQt4 import QtGui, QtCore, QtNetwork +import json class SingleApplication(QtGui.QApplication): def __init__(self, argv, key): + self.bungloo = None QtGui.QApplication.__init__(self, argv) self._memory = QtCore.QSharedMemory(self) self._memory.setKey(key) @@ -54,6 +56,13 @@ class SingleApplicationWithMessaging(SingleApplication): return True return False + def event(self, event): + if isinstance(event, QtGui.QFileOpenEvent): + url = str(event.url().toString()) + args = json.dumps([url]) + self.bungloo.handleMessage(args) + return True + class Window(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) diff --git a/Qt/Windows.py b/Qt/Windows.py index 14c1161..c35339b 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -16,6 +16,7 @@ class Preferences: # image view image = QtGui.QPixmap(self.app.resources_path() + "/images/Icon.png") + print self.app.resources_path() + "/images/Icon.png" image_view = QtGui.QLabel(self.window) image_view.setGeometry(20, 20, 146, 146) image_view.setPixmap(image) From 451e15935aec4b47485549ec5d779f8918c3258f Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 5 Oct 2013 01:48:38 +0200 Subject: [PATCH 119/127] gitignore fixes --- .gitignore | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 92c6e69..f6c2133 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ -Mac/build/ -Mac/Bungloo.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate +Mac/bungloo dsa_priv.pem *.pyc .DS_Store *~ Linux/dist -Windows/bungloo \ No newline at end of file +Windows/bungloo From cc0aee95103b66fac83cb4fe4b585023890961a3 Mon Sep 17 00:00:00 2001 From: Jeena Date: Sat, 5 Oct 2013 01:49:05 +0200 Subject: [PATCH 120/127] moved mac dir --- {MacQt => Mac}/Icon.icns | Bin {MacQt => Mac}/deploy.sh | 0 {MacQt => Mac}/setup.py | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {MacQt => Mac}/Icon.icns (100%) rename {MacQt => Mac}/deploy.sh (100%) rename {MacQt => Mac}/setup.py (100%) diff --git a/MacQt/Icon.icns b/Mac/Icon.icns similarity index 100% rename from MacQt/Icon.icns rename to Mac/Icon.icns diff --git a/MacQt/deploy.sh b/Mac/deploy.sh similarity index 100% rename from MacQt/deploy.sh rename to Mac/deploy.sh diff --git a/MacQt/setup.py b/Mac/setup.py similarity index 100% rename from MacQt/setup.py rename to Mac/setup.py From ee3f4de6a58fef625cf82cb7989c062ce941afcf Mon Sep 17 00:00:00 2001 From: Jeena Date: Tue, 8 Oct 2013 05:54:24 +0200 Subject: [PATCH 121/127] fixed problems with images on os x --- .gitignore | 1 + Mac/deploy.sh | 5 +++-- Mac/setup.py | 2 -- Qt/Bungloo.py | 2 ++ Qt/SingleApplication.py | 1 + 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index f6c2133..7c99f0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +Mac/Bungloo.app Mac/bungloo dsa_priv.pem *.pyc diff --git a/Mac/deploy.sh b/Mac/deploy.sh index d438210..7fd3563 100755 --- a/Mac/deploy.sh +++ b/Mac/deploy.sh @@ -1,5 +1,6 @@ #!/bin/bash +rm -rf Bungloo.app rm -rf bungloo mkdir bungloo cp -r ../Qt/* bungloo @@ -10,6 +11,6 @@ cp setup.py bungloo cp Info.plist bungloo cd bungloo python setup.py py2app -#mv dist/Bungloo.app .. +mv dist/Bungloo.app .. cd .. -#rm -rf bungloo \ No newline at end of file +rm -rf bungloo \ No newline at end of file diff --git a/Mac/setup.py b/Mac/setup.py index 0c4ee4c..f684a7c 100644 --- a/Mac/setup.py +++ b/Mac/setup.py @@ -47,5 +47,3 @@ setup( options={'py2app': OPTIONS}, setup_requires=['py2app'], ) - -print os.path.dirname(PyQt4.__file__) \ No newline at end of file diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 5fa8c58..8f599c8 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -8,6 +8,8 @@ RUNNING_LOCAL = os.path.basename(sys.argv[0]) == "Bungloo.py" RUNNING_ON_WINDOWS = os.name == "nt" RUNNING_ON_OSX = _platform == "darwin" +print sys.argv[0] + if RUNNING_LOCAL or RUNNING_ON_WINDOWS: import Windows, Helper, SingleApplication else: diff --git a/Qt/SingleApplication.py b/Qt/SingleApplication.py index 3de572c..91c8e97 100755 --- a/Qt/SingleApplication.py +++ b/Qt/SingleApplication.py @@ -8,6 +8,7 @@ import json class SingleApplication(QtGui.QApplication): def __init__(self, argv, key): self.bungloo = None + QtGui.QApplication.setGraphicsSystem("raster") QtGui.QApplication.__init__(self, argv) self._memory = QtCore.QSharedMemory(self) self._memory.setKey(key) From a46a1dff238e9c5e7b142a53da6d95da53e27613 Mon Sep 17 00:00:00 2001 From: Jeena Date: Tue, 8 Oct 2013 06:33:15 +0200 Subject: [PATCH 122/127] removed icon from mac windows --- Mac/deploy.sh | 28 ++++++++++++++++------------ Qt/Bungloo.py | 14 ++++---------- Qt/Helper.py | 31 ++++++++++++++++++++++--------- Qt/Windows.py | 11 +++++++---- WebKit/css/default.css | 4 ++++ 5 files changed, 53 insertions(+), 35 deletions(-) diff --git a/Mac/deploy.sh b/Mac/deploy.sh index 7fd3563..44841e9 100755 --- a/Mac/deploy.sh +++ b/Mac/deploy.sh @@ -1,16 +1,20 @@ #!/bin/bash +HERE=`pwd` +TMP="/tmp" + rm -rf Bungloo.app -rm -rf bungloo -mkdir bungloo -cp -r ../Qt/* bungloo -cp -r ../WebKit bungloo -cp -r ../images bungloo -cp Icon.icns bungloo/images -cp setup.py bungloo -cp Info.plist bungloo -cd bungloo +rm -rf $TMP/bungloo +mkdir $TMP/bungloo +cp -r ../Qt/* $TMP/bungloo +cp -r ../WebKit $TMP/bungloo +cp -r ../images $TMP/bungloo +cp Icon.icns $TMP/bungloo/images +cp setup.py $TMP/bungloo +cp Info.plist $TMP/bungloo +cd $TMP/bungloo python setup.py py2app -mv dist/Bungloo.app .. -cd .. -rm -rf bungloo \ No newline at end of file +mv $TMP/bungloo/dist/Bungloo.app $HERE +cd $HERE +rm -rf $TMP/bungloo +Bungloo.app/Contents/MacOS/Bungloo \ No newline at end of file diff --git a/Qt/Bungloo.py b/Qt/Bungloo.py index 8f599c8..e76061f 100755 --- a/Qt/Bungloo.py +++ b/Qt/Bungloo.py @@ -4,15 +4,9 @@ import os, sys, pickle, subprocess, shutil, json from PyQt4 import QtCore, QtGui, QtWebKit, QtNetwork from sys import platform as _platform -RUNNING_LOCAL = os.path.basename(sys.argv[0]) == "Bungloo.py" -RUNNING_ON_WINDOWS = os.name == "nt" -RUNNING_ON_OSX = _platform == "darwin" - -print sys.argv[0] - -if RUNNING_LOCAL or RUNNING_ON_WINDOWS: +try: import Windows, Helper, SingleApplication -else: +except: from bungloo import Windows, Helper, SingleApplication class Bungloo(): @@ -37,7 +31,7 @@ class Bungloo(): self.authentification_succeded() def resources_path(self): - if RUNNING_LOCAL and not RUNNING_ON_OSX: + if Helper.Helper.is_local() and not Helper.Helper.is_mac(): return os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..')) else: return Helper.Helper.get_resource_path() @@ -320,7 +314,7 @@ Options: """ sys.exit(1) - if RUNNING_ON_WINDOWS and not RUNNING_LOCAL: + if Helper.Helper.is_windows() and not Helper.Helper.is_local(): import sys from os import path, environ, makedirs appdata = path.join(environ["TMP"], key) diff --git a/Qt/Helper.py b/Qt/Helper.py index 02ff2b0..f60c4cc 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -6,21 +6,34 @@ from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkRepl from PyQt4.QtWebKit import QWebView from sys import platform as _platform -import os, sys - -import array +import os, sys, array class Helper: @classmethod def get_resource_path(cls): - - if os.name == "nt": + if Helper.is_windows(): return os.path.dirname(sys.argv[0]) - elif _platform == "darwin": + elif Helper.is_mac(): return os.path.dirname(sys.argv[0]) else: return os.path.dirname(__file__) + @classmethod + def is_local(cls): + return os.path.basename(sys.argv[0]) == "Bungloo.py" + + @classmethod + def is_mac(cls): + return _platform == "darwin" + + @classmethod + def is_windows(cls): + return os.name == "nt" + + @classmethod + def is_linux(cls): + return not (Helper.is_windows() or Helper.is_mac()) + class WebPage(QtWebKit.QWebPage): def __init__(self, parent=0, app=None): super(QtWebKit.QWebPage, self).__init__(parent) @@ -95,9 +108,9 @@ class WebViewCreator(QtWebKit.QWebView): frame = self.page().mainFrame() if self.is_local: os_type = "linux" - if os.name == "nt": + if Helper.is_windows: os_type = "windows" - elif _platform == "darwin": + elif Helper.is_mac: os_type = "osx" frame.evaluateJavaScript("var OS_TYPE = '" + os_type + "';") @@ -115,7 +128,7 @@ class WebViewCreator(QtWebKit.QWebView): callback(ok) def handleSslErrors(self, reply, errors): - if os.name == "nt": # ignore SSL errors on Windows (yes a uggly workaround, don't know how to fix it yet) + if Helper.is_windows: # ignore SSL errors on Windows (yes a uggly workaround, don't know how to fix it yet) for error in errors: print error.errorString() reply.ignoreSslErrors(errors) diff --git a/Qt/Windows.py b/Qt/Windows.py index c35339b..d18e5ca 100644 --- a/Qt/Windows.py +++ b/Qt/Windows.py @@ -16,13 +16,13 @@ class Preferences: # image view image = QtGui.QPixmap(self.app.resources_path() + "/images/Icon.png") - print self.app.resources_path() + "/images/Icon.png" image_view = QtGui.QLabel(self.window) image_view.setGeometry(20, 20, 146, 146) image_view.setPixmap(image) image_view.setScaledContents(True) - self.window.setWindowIcon(QtGui.QIcon(image)) + if not Helper.Helper.is_mac(): + self.window.setWindowIcon(QtGui.QIcon(image)) # info text info_text = QtGui.QLabel(self.window) @@ -85,7 +85,9 @@ class Timeline: self.window = Helper.RestorableWindow(action, self.app) self.window.setWindowTitle(title) - self.window.setWindowIcon(QtGui.QIcon(self.app.resources_path() + "/images/Icon.png")) + + if not Helper.Helper.is_mac(): + self.window.setWindowIcon(QtGui.QIcon(self.app.resources_path() + "/images/Icon.png")) self.webView = Helper.WebViewCreator(self.app, True, self.window) self.webView.load_local(self.load_finished) @@ -341,7 +343,8 @@ class NewPost(Helper.RestorableWindow): self.activateWindow() self.raise_() - self.setWindowIcon(QtGui.QIcon(self.app.resources_path() + "/images/Icon.png")) + if not Helper.Helper.is_mac(): + self.setWindowIcon(QtGui.QIcon(self.app.resources_path() + "/images/Icon.png")) self.webView = Helper.WebViewCreator(self.app, True, self) self.webView.load_local(self.load_finished) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 00947da..6c07961 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -403,6 +403,10 @@ li.mentioned .post { clear: right; } +.message a:not(.name) { + text-decoration: underline; +} + header.profile button { background: #09F; float: right; From 683dc31781745ae08a8b633b53e5938a76865127 Mon Sep 17 00:00:00 2001 From: Jeena Date: Wed, 9 Oct 2013 23:52:38 +0200 Subject: [PATCH 123/127] changed config directory name for plugins --- Qt/Helper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Qt/Helper.py b/Qt/Helper.py index f60c4cc..d70b007 100644 --- a/Qt/Helper.py +++ b/Qt/Helper.py @@ -114,12 +114,12 @@ class WebViewCreator(QtWebKit.QWebView): os_type = "osx" frame.evaluateJavaScript("var OS_TYPE = '" + os_type + "';") - js_plugin_path = os.path.expanduser('~/.config/bungloo/Plugin.js') + js_plugin_path = os.path.expanduser('~/.config/bungloo2/Plugin.js') if os.access(js_plugin_path, os.R_OK): func = "setTimeout(function() { loadJsPlugin('file://localhost/" + js_plugin_path + "') }, 1000);" frame.evaluateJavaScript(func) - css_plugin_path = os.path.expanduser('~/.config/bungloo/Plugin.css') + css_plugin_path = os.path.expanduser('~/.config/bungloo2/Plugin.css') if os.access(css_plugin_path, os.R_OK): func = "setTimeout(function() { loadCssPlugin('file://localhost/" + css_plugin_path + "') }, 1000);" frame.evaluateJavaScript(func) From 40307c8619f4e6574cb756f57c7fa51afc4ead6a Mon Sep 17 00:00:00 2001 From: Jeena Date: Thu, 10 Oct 2013 10:24:59 +0200 Subject: [PATCH 124/127] added a bit padding to paragraphs --- WebKit/css/default.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 6c07961..803d376 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -188,6 +188,10 @@ p { word-wrap: break-word; } +p + p { + padding-top: 0.5em; +} + .image { float: left; margin-left: 2px; From 3e4f24c9274a88cc322a32da8665cc5a92fd661f Mon Sep 17 00:00:00 2001 From: Jeena Date: Thu, 10 Oct 2013 10:25:26 +0200 Subject: [PATCH 125/127] now honoring updates --- WebKit/scripts/controller/Timeline.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index c2264a7..da16564 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -75,17 +75,16 @@ function(Core, APICalls, HostApp, URI) { if(!append) { this.since_id = status.id; this.since_id_entity = status.entity; - this.since_time = status.received_at; + //this.since_time = status.received_at; + this.since_time = status.version.received_at; } - - // if(status.id == "vBf0UALAJ97LnvJN4f6sBw") debug(status); - if (status.type.startsWith("https://tent.io/types/status/v0#")) { var new_node = this.getStatusDOMElement(status, _statuses.refs); - - if (!document.getElementById(new_node.id)) { + var old_node = document.getElementById(new_node.id); + + if (!old_node) { if(!append && this.body.childNodes.length > 0) { if(this.body.childNodes.length > this.max_length) { @@ -99,6 +98,9 @@ function(Core, APICalls, HostApp, URI) { this.body.appendChild(new_node); } + } else { + debug(new_node.id); + old_node.parentNode.replaceChild(new_node, old_node); } } else if (status.type == "https://tent.io/types/delete/v0#") { @@ -138,6 +140,7 @@ function(Core, APICalls, HostApp, URI) { uri.addSearch("limit", this.posts_limit); uri.addSearch("max_refs", 20); uri.addSearch("profiles", "entity"); + uri.addSearch("sort_by", "version.received_at"); if(this.since_time) { uri.addSearch("since", this.since_time); From b34531e92e2c4d2cc837383459d871f297d3e2c3 Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 10 Oct 2013 20:15:10 +0200 Subject: [PATCH 126/127] Made the text in #new_post_container div transparent --- WebKit/css/default.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 803d376..8f2050b 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -471,7 +471,7 @@ p.noresult { #new_post_container td { position: relative; height: 90%; } #new_post_container .text td { background: white; } #new_post_container textarea { resize: none; box-sizing: border-box; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; background: transparent; outline: none; } -#new_post_container div { box-sizing: border-box; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; background: white; color: white; padding: 2px; } +#new_post_container div { box-sizing: border-box; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; background: white; color: transparent; padding: 2px; } #new_post_container div span { background: #D8DFEA; } #suggestions { width: 100%; position: absolute; left: 0; bottom: 0; background: #efefef; list-style-type: none; padding: 0; margin: 0; border-top: 1px solid #ccc; } From 21ae3348b93982fc4789a1a351d3784b52851396 Mon Sep 17 00:00:00 2001 From: Paolo Date: Mon, 14 Oct 2013 20:54:19 +0200 Subject: [PATCH 127/127] Inline mentions dot underlined --- WebKit/css/default.css | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/WebKit/css/default.css b/WebKit/css/default.css index 8f2050b..2d314ec 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -397,10 +397,7 @@ li.mentioned .post { .name { font-weight: bold; -} - -.name + .name:before { - content: ", "; + border-bottom: 1px dotted ; } .message {