From da3e9e2a95293ac485cd2b403a22864b3dd92938 Mon Sep 17 00:00:00 2001 From: dynaflash Date: Thu, 30 Oct 2008 18:11:58 +0000 Subject: [PATCH] MacGui: Acivity Logs for individual encodes initial implementation - Individual activity logs are saved in the file format "YYYY-MM-DD HH-MM-SS mymoviename.txt". - Default directory is "~/Library/Application Support/HandBrake/EncodeLogs/". - Advanced preference available to alternatively put them in the users output movie directory with the output movie (by default set to "off"). - Renamed the existing contextual menu items for the Activity Window to better reflect choices (function remains the same) as follows: -- "Copy All Output" -> "Copy Window Contents". -- "Clear Output" -> "Clear Window Contents". -- "Open Log File" -> "Open Log File For This Session". -- "Clear Log File" -> "Clear Log File For This Session". - Added "Open Individual Log File Directory" to the Activity Window contextual menu to open this directory with the Finder - Also commented out some macgui based activity log messages that were used to troubleshoot the new queue. - Note: the individual activity logs are in addition to the existing session based activity log. If you do a scan of a new source during encoding, the new source scan log messages will be intermixed with the encode log messages as I have no clue how to separate stderr/stdout based on which instance of libhb is sending the messages. git-svn-id: svn://localhost/HandBrake/trunk@1881 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- macosx/Controller.mm | 17 +- macosx/English.lproj/OutputPanel.xib | 395 +++++++++++------------------------ macosx/English.lproj/Preferences.xib | 74 +++++-- macosx/HBOutputPanelController.h | 6 + macosx/HBOutputPanelController.m | 81 ++++++- macosx/HBPreferencesController.m | 1 + 6 files changed, 284 insertions(+), 290 deletions(-) diff --git a/macosx/Controller.mm b/macosx/Controller.mm index 2e7a93c8..5901249e 100644 --- a/macosx/Controller.mm +++ b/macosx/Controller.mm @@ -748,8 +748,11 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [fWindow setFrame:frame display:YES animate:YES]; fRipIndicatorShown = NO; } - - /* Check to see if the encode state has not been cancelled + /* Since we are done with this encode, tell output to stop writing to the + * individual encode log + */ + [outputPanel endEncodeLog]; + /* Check to see if the encode state has not been cancelled to determine if we should check for encode done notifications */ if( fEncodeState != 2 ) { @@ -2054,8 +2057,10 @@ fWorkingCount = 0; /* Here we actually tell hb_scan to perform the source scan, using the path to source and title number*/ - (void) performNewQueueScan:(NSString *) scanPath scanTitleNum: (int) scanTitleNum { - //NSRunAlertPanel(@"Hello!", @"We are now performing a new queue scan!", @"OK", nil, nil); - + /* Tell HB to output a new activity log file for this encode */ + [outputPanel startEncodeLog:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"DestinationPath"]]; + + /* use a bool to determine whether or not we can decrypt using vlc */ BOOL cancelScanDecrypt = 0; /* set the bool so that showNewScan knows to apply the appropriate queue @@ -2437,10 +2442,10 @@ fWorkingCount = 0; } NSMutableDictionary * queueToApply = [QueueFileArray objectAtIndex:currentQueueEncodeIndex]; - [self writeToActivityLog: "processNewQueueEncode currentQueueEncodeIndex is: %d", currentQueueEncodeIndex]; + //[self writeToActivityLog: "processNewQueueEncode currentQueueEncodeIndex is: %d", currentQueueEncodeIndex]; [self writeToActivityLog: "processNewQueueEncode number of passes expected is: %d", ([[queueToApply objectForKey:@"VideoTwoPass"] intValue] + 1)]; job->file = [[queueToApply objectForKey:@"DestinationPath"] UTF8String]; - [self writeToActivityLog: "processNewQueueEncode sending to prepareJob"]; + //[self writeToActivityLog: "processNewQueueEncode sending to prepareJob"]; [self prepareJob]; if( [[queueToApply objectForKey:@"SubtitlesForced"] intValue] == 1 ) job->subtitle_force = 1; diff --git a/macosx/English.lproj/OutputPanel.xib b/macosx/English.lproj/OutputPanel.xib index f7d73845..6fcd19c5 100644 --- a/macosx/English.lproj/OutputPanel.xib +++ b/macosx/English.lproj/OutputPanel.xib @@ -1,17 +1,18 @@ - + 1050 - 9C7010 - 629 - 949.26 + 9F33 + 670 + 949.34 352.00 YES + YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -19,7 +20,7 @@ HBOutputPanelController - FirstResponder + FirstResponder NSApplication @@ -54,7 +55,7 @@ 2322 - {{0, 20}, {363, 346}} + {363, 14} @@ -90,13 +91,13 @@ YES NSBackgroundColor - NSColor + NSColor YES 6 - System + System selectedTextBackgroundColor 3 @@ -105,7 +106,7 @@ 6 - + System selectedTextColor @@ -116,7 +117,7 @@ YES YES - + NSColor NSUnderline @@ -131,13 +132,12 @@ 6 - {378, 1e+07} - {83, 346} + {743, 1e+07} + {83, 0} {{1, 1}, {363, 371}} - {{0, 20}, {363, 371}} @@ -154,7 +154,7 @@ {{364, 1}, {15, 371}} - _doScroller: + _doScroller: 6.003236e-01 @@ -164,7 +164,7 @@ 1 - + _doScroller: 1.000000e+00 9.456522e-01 @@ -191,59 +191,79 @@ YES - Copy All Output - + Copy Window Contents + 1048576 2147483647 - NSImage + NSImage NSMenuCheckmark - - + + NSImage NSMenuMixedState - Clear Output - + Clear Window Contents + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + - Open Log File - + Open Log File For This Session + 1048576 2147483647 - + - Clear Log File - + Clear Log File For This Session + 1048576 2147483647 - + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Open Individual Log File Directory + + 1048576 + 2147483647 + + - + @@ -251,7 +271,7 @@ YES - delegate + delegate @@ -259,7 +279,7 @@ - + delegate @@ -321,6 +341,14 @@ 41 + + + openEncodeLogDirectory: + + + + 44 + @@ -396,6 +424,8 @@ + + ContextMenu @@ -435,6 +465,16 @@ + + 42 + + + + + 43 + + + @@ -445,6 +485,7 @@ -2.IBPluginDependency -3.IBPluginDependency -3.ImportedFromIB2 + 11.IBEditorWindowLastContentRect 11.IBPluginDependency 11.ImportedFromIB2 12.IBPluginDependency @@ -463,6 +504,10 @@ 37.ImportedFromIB2 39.IBShouldRemoveOnLegacySave 40.IBShouldRemoveOnLegacySave + 42.IBPluginDependency + 42.ImportedFromIB2 + 43.IBPluginDependency + 43.ImportedFromIB2 5.IBPluginDependency 5.ImportedFromIB2 5.windowTemplate.hasMaxSize @@ -474,35 +519,40 @@ YES - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{319, 676}, {358, 123}} + 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 {3.40282e+38, 3.40282e+38} {214.502, 107} - + com.apple.InterfaceBuilder.CocoaPlugin @@ -526,61 +576,17 @@ - 41 + 44 YES - - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - - - IBUserSource - - - - - HBOutputPanelController - NSWindowController - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - + FirstResponder + NSObject - IBProjectSource - HBOutputPanelController.h + IBUserSource + @@ -594,15 +600,17 @@ clearOutput: copyAllOutputToPasteboard: openActivityLogFile: + openEncodeLogDirectory: showOutputPanel: YES - id - - - - + id + id + id + id + id + id @@ -610,189 +618,36 @@ NSTextView + IBProjectSource + HBOutputPanelController.h + + + + HBOutputPanelController + NSWindowController + IBUserSource - NSObject - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - + NSObject - + IBProjectSource PictureController.h - - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - + NSObject - - + IBUserSource + 0 - ../../HandBrake.xcodeproj + ../HandBrake.xcodeproj 3 - - YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxCoAAsADAAxADUANgA8AD0A -QQBFAFEAWQBvAIMAhACOAJYAmwCfAKIApgCqAK4AsACyAMIAyADLAM4AtgDKANcA3gDfAOAA4wDoAOkA -7AD0AIkA9QD5APwA/QD+AQMBBAEIAQ0BKAEpASoBKwEuAS8BMAE3ATsBTQFTAVcBWAFZAV4BXwFhAWQB -bwFwAXEBdQF/AYABgQGEAYUBhwGIAS4BiQGMAY0BkgGiAakAngGqAa8BsAGxAbQBuAG5AbwBvQHAAcUB -zAHNAc4B0wHaAdsB3AHhAeIB6gH1AfwB/QH/AgACBQIGAgsCEAIRAiECJAIlAicCNwJIAlkCWgJbAlwC -XQJeAl8CYAJhAmICYwJkAmUCZgJnAmoCbQKHAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArAC -sQKyAGgCswK0ArUCtgK3AroCvQLAVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAb -ABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNP -YmplY3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlND -b25uZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNd -TlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5T -VmlzaWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lO -U05leHRPaWRcTlNPaWRzVmFsdWVzgAKAp4B0gIqApoAIgHmABYCJgIuAeoCkgACABoB4gKUQK4CM0gAO -ADIAMwA0W05TQ2xhc3NOYW1lgASAA18QF0hCT3V0cHV0UGFuZWxDb250cm9sbGVy0gA3ADgAOQA6WCRj -bGFzc2VzWiRjbGFzc25hbWWiADoAO15OU0N1c3RvbU9iamVjdFhOU09iamVjdF8QEElCQ29jb2FGcmFt -ZXdvcmvSAA4APgA/AEBaTlMub2JqZWN0c4AHoNIANwA4AEIAQ6MAQwBEADtcTlNNdXRhYmxlU2V0VU5T -U2V00gAOAD4ARgBHgBSpAEgASQBKAEsATABNAE4ATwBQgAmAL4BRgF+AY4BngG+AcYBy1AAOAFIAUwBU -AFUAHwBXAFhdTlNEZXN0aW5hdGlvblhOU1NvdXJjZVdOU0xhYmVsgC6AAoAKgC3bAFoADgBbAFwAXQBe -AF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABkACtfEA9OU05leHRSZXNwb25kZXJXTlNGcmFtZV8Q -D05TVGV4dENvbnRhaW5lcllOU1RWRmxhZ3NcTlNTaGFyZWREYXRhWE5TdkZsYWdzWU5TTWF4U2l6ZVhO -U01pbml6ZVtOU1N1cGVydmlld1pOU0RlbGVnYXRlgAuALIAMgA0QBoAXEQkSgCqAK4ALgADcAFoADgBb -AHAAcQByAHMAXwB0AHUAYgB2AHcAeAB5AHoAewB8AH0AfgBXAIAAdwBXWE5TQm91bmRzWE5TQ3Vyc29y -WU5TY3ZGbGFnc1pOU1N1YnZpZXdzWU5TRG9jVmlld1lOU0JHQ29sb3JdTlNOZXh0S2V5Vmlld4A5gEGA -PIA9gD4QBIA7EQkAgAqAGIA5gApfEBV7ezAsIDIwfSwgezM2MywgMzQ2fX3VAIUADgCGAIcAiACJAIoA -VwCMAI1ZTlNUQ0ZsYWdzWk5TVGV4dFZpZXdXTlNXaWR0aF8QD05TTGF5b3V0TWFuYWdlchABgBaACiNA -drAAAAAAAIAO1QAOAI8AkACRAGMAkgCTAJQAaAArXxAQTlNUZXh0Q29udGFpbmVyc11OU1RleHRTdG9y -YWdlWU5TTE1GbGFnc4AVgBOAD4AA0wAOAJcAYwCYAJkAK1hOU1N0cmluZ4ASgBCAANIADgCcAJ0AnllO -Uy5zdHJpbmeAEVDSADcAOACgAKGjAKEAlwA7XxAPTlNNdXRhYmxlU3RyaW5n0gA3ADgAowCQpACQAKQA -pQA7XxAZTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZ18QEk5TQXR0cmlidXRlZFN0cmluZ9IADgA+AEYA -qIAUoQBngA3SADcAOACrAKyjAKwArQA7Xk5TTXV0YWJsZUFycmF5V05TQXJyYXnSADcAOACvAIiiAIgA -O9IANwA4ALEAXKIAXAA72AAOALMAtAC1ALYAtwC4ALkAugC7ACsAvQCAAL8AKwDBV05TRmxhZ3NfEBdO -U0RlZmF1bHRQYXJhZ3JhcGhTdHlsZV8QEE5TSW5zZXJ0aW9uQ29sb3JfEBFOU0JhY2tncm91bmRDb2xv -cl8QFE5TU2VsZWN0ZWRBdHRyaWJ1dGVzXxASTlNNYXJrZWRBdHRyaWJ1dGVzXxAQTlNMaW5rQXR0cmli -dXRlc4ApEStlgACAGoAYgBuAAIAl0wAOAMMAxADFAMYAx1xOU0NvbG9yU3BhY2VXTlNXaGl0ZYAZEANC -MQDSADcAOADJAMqiAMoAO1dOU0NvbG9y0wAOAMMAxADFAMYAzYAZQjAA0wAOAM8APgDQANEA1FdOUy5r -ZXlzgCSiANIA04AcgB2iANUA1oAegCLVAA4AygDDANgA2QDFANsAaADcAN1bTlNDb2xvck5hbWVdTlND -YXRhbG9nTmFtZYAZgCGAIIAfVlN5c3RlbV8QG3NlbGVjdGVkVGV4dEJhY2tncm91bmRDb2xvctMADgDD -AMQAxQDGAOKAGUswLjY2NjY2NjY5ANUADgDKAMMA2ADZAMUAvQBoAOYA3YAZgBqAI4AfXxARc2VsZWN0 -ZWRUZXh0Q29sb3LSADcAOADqAOuiAOsAO1xOU0RpY3Rpb25hcnnTAA4AzwA+ANAA7gDxgCSiAO8A04Am -gB2iAPIA84AngChbTlNVbmRlcmxpbmXTAA4AwwD2AMUAiQD4VU5TUkdCgBlGMCAwIDEA0gA3ADgA+gD7 -ogD7ADtfEBROU1RleHRWaWV3U2hhcmVkRGF0YVx7Mzc4LCAxZSswN31ZezgzLCAzNDZ90gA3ADgA/wCG -pQCGAQABAQECADtWTlNUZXh0Vk5TVmlld1tOU1Jlc3BvbmRlclhkZWxlZ2F0ZdIANwA4AQUBBqMBBgEH -ADtfEBROU05pYk91dGxldENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctQADgBSAFMAVABVAQoAHwEMgC6A -MIACgFDeAQ4ADgEPARABEQESARMBFAEVAGABFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEm -ASdcTlNXaW5kb3dWaWV3XxAWTlNXaW5kb3dDb250ZW50TWF4U2l6ZVxOU1NjcmVlblJlY3RdTlNXaW5k -b3dUaXRsZVlOU1dURmxhZ3NdTlNXaW5kb3dDbGFzc18QFk5TV2luZG93Q29udGVudE1pblNpemVcTlNX -aW5kb3dSZWN0XxAPTlNXaW5kb3dCYWNraW5nXxARTlNXaW5kb3dTdHlsZU1hc2tZTlNNaW5TaXplW05T -Vmlld0NsYXNzgDeAT4A1gEyAMhP/////8HgAAIAzgDaAMYBOEAIQD4BNgDRfEBh7ezE1NSwgNzcyfSwg -ezM3OSwgMzcxfX1fEBtBY3Rpdml0eSBXaW5kb3cgLSBIYW5kQnJha2VXTlNQYW5lbNIADgCcAJ0BLYAR -VFZpZXdfEBp7My40MDI4MmUrMzgsIDMuNDAyODJlKzM4fV57MjE0LjUwMiwgMTA3fdUAWgAOAHMAXwEx -ACsBMwE0ATUBNltOU0ZyYW1lU2l6ZYAAgEuAOBEBAIBK0gAOAD4ARgE5gBShAHeAOdwAWgE8AA4AWwE9 -AHMBPgBfAGIBPwB2AUABGgFCAUMBRAFFAUYBRwFIARoBSgBkAGRbTlNIU2Nyb2xsZXJYTlNzRmxhZ3Nc -TlNTY3JvbGxBbXRzW05TVlNjcm9sbGVyXU5TQ29udGVudFZpZXeAN4BGgEmASBASgDpPEBAAAAAAAAAA -AAAAAAAAAAAAEQESgDeAQoALgAvSAA4APgBGAU+AFKMAZAFKAUKAC4BCgEbSAA4APgBGAVWAFKEAV4AK -XxAUe3sxLCAxfSwgezM2MywgMzcxfX1fEBV7ezAsIDIwfSwgezM2MywgMzcxfX3TAA4BWgFbAVwBXQCJ -WU5TSG90U3BvdFxOU0N1cnNvclR5cGWAQIA/V3s0LCAtNX3SADcAOAFgAHGiAHEAO9IANwA4AWIBY6QB -YwEBAQIAO1pOU0NsaXBWaWV32ABaAWUADgBbAF8BZgBiAWcAdwB3AWoBawE1AWwAdwFuWE5TVGFyZ2V0 -WE5TQWN0aW9uWU5TUGVyY2VudIA5gDmARYBDgESAOSM/4zXZ4AAAAF8QFXt7MzY0LCAxfSwgezE1LCAz -NzF9fVxfZG9TY3JvbGxlcjrSADcAOAFyAXOlAXMBdAEBAQIAO1pOU1Njcm9sbGVyWU5TQ29udHJvbNoA -WgFlAA4AWwE9AF8BZgBiAXYBZwB3AHcBagF6AIkBNQFsAHcBfQF+Wk5TQ3VyVmFsdWWAOYA5gEWAR4BE -gDkjP/AAAAAAAAAjP+5CyGAAAABfEBh7ey0xMDAsIC0xMDB9LCB7ODcsIDE4fX1fEBV7ezAsIC0xfSwg -ezM4MCwgMzczfX3SADcAOAGCAYOkAYMBAQECADtcTlNTY3JvbGxWaWV3WnszNzksIDM3MX3SADcAOAGG -AQGjAQEBAgA7XxAWe3swLCAwfSwgezE5MjAsIDExNzh9fV57MjE0LjUwMiwgMTI5fdIANwA4AYoBi6IB -iwA7XxAQTlNXaW5kb3dUZW1wbGF0ZVZ3aW5kb3fUAA4AUgBTAFQBjgAfAZABkYBegAKAUoBd2AAOAZMB -lAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhV05TVGl0bGVfEBFOU0tleUVxdWl2TW9kTWFza1pOU0tl -eUVxdWl2XU5TTW5lbW9uaWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJbWFnZVZOU01lbnWAXIBUEgAQAACA -VRJ/////gFaAWoBT1AAOAZMBowGkAaUBpgGdAahWTlNOYW1lW05TTWVudUl0ZW1zgG2AaIBVgGlfEA9D -b3B5IEFsbCBPdXRwdXTTAA4AMgGrAawBrQGuXk5TUmVzb3VyY2VOYW1lgFmAV4BYV05TSW1hZ2VfEA9O -U01lbnVDaGVja21hcmvSADcAOAGyAbOiAbMAO18QEE5TQ3VzdG9tUmVzb3VyY2XTAA4AMgGrAawBrQG3 -gFmAV4BbXxAQTlNNZW51TWl4ZWRTdGF0ZdIANwA4AboBu6IBuwA7Wk5TTWVudUl0ZW1fEBpjb3B5QWxs -T3V0cHV0VG9QYXN0ZWJvYXJkOtIANwA4Ab4Bv6MBvwEHADtfEBVOU05pYkNvbnRyb2xDb25uZWN0b3LU -AA4AUgBTAFQBjgAfAcMBxIBegAKAYIBi2AAOAZMBlAGVAZYBlwGYAZkBmgHHAZwBnQGeAZ8BoAGhgFyA -YYBVgFaAWoBTXU9wZW4gTG9nIEZpbGVfEBRvcGVuQWN0aXZpdHlMb2dGaWxlOtQADgBSAFMAVAGOAB8B -0QHSgF6AAoBkgGbYAA4BkwGUAZUBlgGXAZgBmQGaAdUBnAGdAZ4BnwGgAaGAXIBlgFWAVoBagFNcQ2xl -YXIgT3V0cHV0XGNsZWFyT3V0cHV0OtQADgBSAFMAVABVAaEAVwHggC6AU4AKgG5UTWVuddIADgA+AEYB -5IAUpQGQAdEB5wHDAemAUoBkgGqAYIBr2gAOAZMBlAHrAZUB7AGWAZcBmAGZAZoBnQGcAe8BnQHvAZ4B -nwGgAaFdTlNJc1NlcGFyYXRvclxOU0lzRGlzYWJsZWSAXIBVCYBVCYBWgFqAU9gADgGTAZQBlQGWAZcB -mAGZAZoB9wGcAZ0BngGfAaABoYBcgGyAVYBWgFqAU15DbGVhciBMb2cgRmlsZdIANwA4Af4BmaIBmQA7 -VG1lbnXUAA4AUgBTAFQBjgAfAekCBIBegAKAa4BwXxAVY2xlYXJBY3Rpdml0eUxvZ0ZpbGU61AAOAFIA -UwBUAFUAHwEKAFiALoACgDCALdQADgBSAFMAVABVAFcAHwIPgC6ACoACgHNYdGV4dFZpZXfSAA4APgIS -AhOAd60BkAEKAFcBSgIYAaEB6QB3AdEBQgHDARoB54BSgDCACoBCgHWAU4BrgDmAZIBGgGCAN4Bq0gAO -ADIAMwIjgASAdl1OU0FwcGxpY2F0aW9u0gA3ADgCJgCtogCtADvSAA4APgISAimAd60BoQAfAHcAdwAf -AB8BoQEaAaEAdwGhAQoBoYBTgAKAOYA5gAKAAoBTgDeAU4A5gFOAMIBT0gAOAD4CEgI5gHeuAZABCgBX -AUoCGAGhAekAdwHRAcMAHwFCARoB54BSgDCACoBCgHWAU4BrgDmAZIBggAKARoA3gGrSAA4APgISAkqA -d64CSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYgHuAfIB9gH6Af4CAgIGAgoCDgISAhYCGgIeAiF8Q -G01lbnUgSXRlbSAoQ29weSBBbGwgT3V0cHV0KVtPdXRwdXRQYW5lbFlUZXh0IFZpZXdfEBFWZXJ0aWNh -bCBTY3JvbGxlcltBcHBsaWNhdGlvbltDb250ZXh0TWVudV8QGk1lbnUgSXRlbSAoQ2xlYXIgTG9nIEZp -bGUpW1Njcm9sbCBWaWV3XxAYTWVudSBJdGVtIChDbGVhciBPdXRwdXQpXxAZTWVudSBJdGVtIChPcGVu -IExvZyBGaWxlKVxGaWxlJ3MgT3duZXJfEBNIb3Jpem9udGFsIFNjcm9sbGVyXENvbnRlbnQgVmlld1lT -ZXBhcmF0b3LSAA4APgISAmmAd6DSAA4APgISAmyAd6DSAA4APgISAm+Ad68QFwBLAZAASQBKAE0BCgBQ -AFcBSgIYAaEB6QB3AEwB0QFCAB8BwwEaAecASABOAE+AX4BSgC+AUYBngDCAcoAKgEKAdYBTgGuAOYBj -gGSARoACgGCAN4BqgAmAb4Bx0gAOAD4CEgKJgHevEBcCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKX -ApgCmQKaApsCnAKdAp4CnwKggI2AjoCPgJCAkYCSgJOAlICVgJaAl4CYgJmAmoCbgJyAnYCegJ+AoICh -gKKAoxAiEBgQKRAgEBYQBRAXEBQQJxP//////////RALECMQExAbEAwQKBAqECEQJRAVECQQEdIADgA+ -AEYCuYAUoNIADgA+AhICvIB3oNIADgA+AhICv4B3oNIANwA4AsECwqICwgA7Xk5TSUJPYmplY3REYXRh -AAgAGQAiACcAMQA6AD8ARABSAFQAZgG5Ab8CCgIRAhgCJgI4AlQCYgJuAnoCiAKTAqECvQLLAt4C8AMK -AxQDIQMjAyUDJwMpAysDLQMvAzEDMwM1AzcDOQM7Az0DPwNBA0MDRQNOA1oDXANeA3gDgQOKA5UDmgOp -A7IDxQPOA9kD2wPcA+UD7AP5A/8ECAQKBB0EHwQhBCMEJQQnBCkEKwQtBC8EQAROBFcEXwRhBGMEZQRn -BJQEpgSuBMAEygTXBOAE6gTzBP8FCgUMBQ4FEAUSBRQFFgUZBRsFHQUfBSEFUgVbBWQFbgV5BYMFjQWb -BZ0FnwWhBaMFpQWnBakFrAWuBbAFsgW0BcwF4QXrBfYF/gYQBhIGFAYWBh8GIQY2BkkGVwZhBmMGZQZn -BmkGdgZ/BoEGgwaFBo4GmAaaBpsGpAarBr0GxgbPBusHAAcJBwsHDgcQBxkHIAcvBzcHQAdFB04HUwd0 -B3wHlgepB70H1AfpB/wH/ggBCAMIBQgHCAkICwgNCBoIJwgvCDEIMwg2CD8IRAhMCFkIWwheCGsIcwh1 -CHoIfAh+CIMIhQiHCJwIqAi2CLgIugi8CL4IxQjjCPAI8gj+CRMJFQkXCRkJGwkvCTgJPQlKCVcJWQle -CWAJYglnCWkJawl3CYQJigmMCZMJnAmhCbgJxQnPCdgJ4wnqCfEJ/QoGCg8KFgotCjwKTQpPClEKUwpV -Co4Kmwq0CsEKzwrZCucLAAsNCx8LMws9C0kLSwtNC08LUQtTC1wLXgtgC2ILZAtmC2gLagtsC4cLpQut -C7YLuAu9C9oL6Qv+DAoMDAwODBAMEwwVDB4MIAwjDCUMVgxiDGsMeAyEDJIMlAyWDJgMmgycDJ4MsQy0 -DLYMuAy6DLwMxQzHDM4M0AzSDNQM3QzfDOIM5Az7DRMNIA0qDTcNOQ07DUMNTA1RDVoNYw1uDY8NmA2h -DasNrQ2vDbENsw21DbcNwA3YDeUN7g35DgQODg43DkIORA5GDkgOSg5MDk4OVw5gDnsOkw6cDqUOsg69 -DsYOzQ7mDvUO/g8DDxYPHQ8uDzAPMg80DzYPVw9fD3MPfg+MD5YPow+qD6wPrg+zD7UPug+8D74PwA/R -D9gP5A/mD+gP6g/sD/4QCxAaEBwQHhAgECgQOhBDEEgQWxBoEGoQbBBuEIEQihCPEJoQtxDAEMcQ3xDw -EPIQ9BD2EPgRGREbER0RHxEhESMRJREzEUoRWxFdEV8RYRFjEYQRhhGIEYoRjBGOEZARnRGqEbsRvRG/ -EcERwxHIEdER0xHeEeAR4hHkEeYR6BIREh8SLBIuEjASMRIzEjQSNhI4EjoSWxJdEl8SYRJjEmUSZxJ2 -En8ShBKJEpoSnBKeEqASohK6EssSzRLPEtES0xLkEuYS6BLqEuwS9RL+EwATGxMdEx8TIRMjEyUTJxMp -EysTLRMvEzETMxM1Ez4TQBNCE1ATWRNeE2cTaROEE4YTiBOKE4wTjhOQE5ITlBOWE5gTmhOcE54TpxOp -E8YTyBPKE8wTzhPQE9IT1BPWE9gT2hPcE94T4BPiE+sT7RQKFAwUDhQQFBIUFBQWFBgUGhQcFB4UIBQi -FCQUJhREFFAUWhRuFHoUhhSjFK8UyhTmFPMVCRUWFSAVKRUrFSwVNRU3FTgVQRVDFXQVdhV4FXoVfBV+ -FYAVghWEFYYViBWKFYwVjhWQFZIVlBWWFZgVmhWcFZ4VoBWiFasVrRXeFeAV4hXkFeYV6BXqFewV7hXw -FfIV9BX2FfgV+hX8Ff4WABYCFgQWBhYIFgoWDBYOFhAWEhYUFhYWGBYaFhwWHhYnFikWKxYtFi8WMRYz -FjUWNxY5FjsWPRY/FkgWShZLFlQWVhZXFmAWYhZjFmwWcQAAAAAAAAICAAAAAAAAAsMAAAAAAAAAAAAA -AAAAABaAA - diff --git a/macosx/English.lproj/Preferences.xib b/macosx/English.lproj/Preferences.xib index 4dec6a08..800d4088 100644 --- a/macosx/English.lproj/Preferences.xib +++ b/macosx/English.lproj/Preferences.xib @@ -2,15 +2,15 @@ 1050 - 9E17 + 9F33 670 - 949.33 + 949.34 352.00 YES - - + + YES @@ -49,12 +49,6 @@ {3.40282e+38, 3.40282e+38} - - YES - PixelRatio - Anamorphic - DefAnamorphic - YES @@ -770,6 +764,27 @@ + + + 256 + {{83, 108}, {367, 18}} + + YES + + 67239424 + 0 + Put individual encode logs in same location as movie + + + 1211912703 + 2 + + + + 200 + 25 + + {500, 184} @@ -994,6 +1009,22 @@ 330 + + + value: values.EncodeLogLocation + + + + + + value: values.EncodeLogLocation + value + values.EncodeLogLocation + 2 + + + 349 + @@ -1195,6 +1226,7 @@ YES + Advanced @@ -1369,6 +1401,20 @@ + + 347 + + + YES + + + + + + 348 + + + @@ -1437,6 +1483,8 @@ 325.IBPluginDependency 326.IBPluginDependency 327.IBPluginDependency + 347.IBPluginDependency + 347.ImportedFromIB2 5.IBPluginDependency 5.ImportedFromIB2 5.windowTemplate.hasMaxSize @@ -1462,7 +1510,7 @@ {{0, 726}, {500, 108}} com.apple.InterfaceBuilder.CocoaPlugin - {{42, 604}, {500, 184}} + {{110, 672}, {500, 184}} com.apple.InterfaceBuilder.CocoaPlugin {{0, 650}, {500, 184}} @@ -1514,6 +1562,8 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {3.40282e+38, 3.40282e+38} @@ -1544,7 +1594,7 @@ - 340 + 349 diff --git a/macosx/HBOutputPanelController.h b/macosx/HBOutputPanelController.h index 97e1d6f2..dc76e2a9 100644 --- a/macosx/HBOutputPanelController.h +++ b/macosx/HBOutputPanelController.h @@ -21,12 +21,18 @@ /// Path to log text file. NSString *outputLogFile; + /// Path to individual log text file. + NSString *outputLogFileForEncode; + BOOL encodeLogOn; } - (IBAction)showOutputPanel:(id)sender; - (IBAction)clearOutput:(id)sender; - (IBAction)copyAllOutputToPasteboard:(id)sender; - (IBAction)openActivityLogFile:(id)sender; +- (IBAction)openEncodeLogDirectory:(id)sender; - (IBAction)clearActivityLogFile:(id)sender; +- (void) startEncodeLog:(NSString *) logPath; +- (void) endEncodeLog; @end diff --git a/macosx/HBOutputPanelController.m b/macosx/HBOutputPanelController.m index f5af6d49..13203d3f 100644 --- a/macosx/HBOutputPanelController.m +++ b/macosx/HBOutputPanelController.m @@ -60,7 +60,6 @@ /* We overwrite the existing output log with the date for starters the output log to start fresh with the new session */ /* Use the current date and time for the new output log header */ NSString *startOutputLogString = [NSString stringWithFormat: @"HandBrake Activity Log for Session (Cleared): %@\n\n", [[NSDate date] descriptionWithCalendarFormat:nil timeZone:nil locale:nil]]; - [startOutputLogString writeToFile:outputLogFile atomically:YES encoding:NSUTF8StringEncoding error:NULL]; [[HBOutputRedirect stderrRedirect] addListener:self]; @@ -70,6 +69,8 @@ [[textView layoutManager] replaceTextStorage:outputTextStorage]; [[textView enclosingScrollView] setLineScroll:10]; [[textView enclosingScrollView] setPageScroll:20]; + + encodeLogOn = NO; } return self; } @@ -96,6 +97,56 @@ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"OutputPanelIsOpen"]; } +- (void) startEncodeLog:(NSString *) logPath +{ + encodeLogOn = YES; + NSString *outputFileForEncode = logPath ; + /* Since the destination path matches the extension of the output file, replace the + * output movie extension and replace it with ".txt" + */ + NSFileManager * fileManager = [NSFileManager defaultManager]; + /* Establish the log file location to write to */ + /* We are initially using a .txt file as opposed to a .log file since it will open by + * default with the users text editor instead of the .log default Console.app, should + * create less confusion for less experienced users when we ask them to paste the log for support + */ + /* We need to get the current time in YY-MM-DD HH-MM-SS format to put at the beginning of the name of the log file */ + time_t _now = time( NULL ); + struct tm * now = localtime( &_now ); + NSString *dateForLogTitle = [NSString stringWithFormat:@"%02d-%02d-%02d %02d-%02d-%02d",now->tm_year + 1900, now->tm_mon, now->tm_mday,now->tm_hour, now->tm_min, now->tm_sec]; + + /* Assemble the new log file name as YY-MM-DD HH-MM-SS mymoviename.txt */ + NSString *outputDateFileName = [NSString stringWithFormat:@"%@ %@.txt",dateForLogTitle,[[outputFileForEncode lastPathComponent] stringByDeletingPathExtension]]; + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"EncodeLogLocation"]) // if we are putting it in the same directory with the movie + { + + outputLogFileForEncode = [[NSString stringWithFormat:@"%@/%@",[outputFileForEncode stringByDeletingLastPathComponent],outputDateFileName] retain]; + } + else // if we are putting it in the default ~/Libraries/Application Support/HandBrake/EncodeLogs logs directory + { + NSString *libraryDir = [NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, + NSUserDomainMask, + YES ) objectAtIndex:0]; + NSString *encodeLogDirectory = [[[libraryDir stringByAppendingPathComponent:@"Application Support"] stringByAppendingPathComponent:@"HandBrake"] stringByAppendingPathComponent:@"EncodeLogs"]; + if( ![[NSFileManager defaultManager] fileExistsAtPath:encodeLogDirectory] ) + { + [[NSFileManager defaultManager] createDirectoryAtPath:encodeLogDirectory + attributes:nil]; + } + outputLogFileForEncode = [[NSString stringWithFormat:@"%@/%@",encodeLogDirectory,outputDateFileName] retain]; + } + [fileManager createFileAtPath:outputLogFileForEncode contents:nil attributes:nil]; + + /* Similar to the regular activity log, we print a header containing the date and time of the encode as well as what directory it was encoded to */ + NSString *startOutputLogString = [NSString stringWithFormat: @"HandBrake Activity Log for %@: %@\n\n",outputFileForEncode, [[NSDate date] descriptionWithCalendarFormat:nil timeZone:nil locale:nil]]; + [startOutputLogString writeToFile:outputLogFileForEncode atomically:YES encoding:NSUTF8StringEncoding error:NULL]; +} + +- (void) endEncodeLog +{ + encodeLogOn = NO; +} + /** * Displays text received from HBOutputRedirect in the text view. */ @@ -120,7 +171,12 @@ fprintf(f, "%s", [text UTF8String]); fclose(f); - + if (encodeLogOn == YES && outputLogFileForEncode != nil) + { + FILE *e = fopen([outputLogFileForEncode UTF8String], "a"); + fprintf(e, "%s", [text UTF8String]); + fclose(e); + } /* Below uses Objective-C to write to the file, though it is slow and uses * more memory than the c function above. For now, leaving this in here * just in case and commented out. @@ -178,6 +234,27 @@ [myScript release]; } +/** + * Opens the activity log txt file in users default editor. + */ +- (IBAction)openEncodeLogDirectory:(id)sender +{ + /* Opens the activity window log file in the users default text editor */ + NSString *libraryDir = [NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, + NSUserDomainMask, + YES ) objectAtIndex:0]; + NSString *encodeLogDirectory = [[[libraryDir stringByAppendingPathComponent:@"Application Support"] stringByAppendingPathComponent:@"HandBrake"] stringByAppendingPathComponent:@"EncodeLogs"]; + if( ![[NSFileManager defaultManager] fileExistsAtPath:encodeLogDirectory] ) + { + [[NSFileManager defaultManager] createDirectoryAtPath:encodeLogDirectory + attributes:nil]; + } + + NSAppleScript *myScript = [[NSAppleScript alloc] initWithSource: [NSString stringWithFormat: @"%@%@%@", @"tell application \"Finder\" to open (POSIX file \"", encodeLogDirectory, @"\")"]]; + [myScript executeAndReturnError: nil]; + [myScript release]; +} + - (IBAction)clearActivityLogFile:(id)sender { /* We overwrite the existing output log with the new date and time header */ diff --git a/macosx/HBPreferencesController.m b/macosx/HBPreferencesController.m index 88cbfbd1..701b95fe 100644 --- a/macosx/HBPreferencesController.m +++ b/macosx/HBPreferencesController.m @@ -50,6 +50,7 @@ @"Alert Window", @"AlertWhenDone", @"1", @"LoggingLevel", @"4:10:15:9:10:35:9", @"DecombCustomString", + @"NO", @"EncodeLogLocation", nil]]; } -- 2.11.0