summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
Diffstat (limited to 'macosx')
-rw-r--r--macosx/Controller.h2
-rw-r--r--macosx/Controller.m159
-rw-r--r--macosx/HBOutputPanelController.m14
-rw-r--r--macosx/HBPreviewController.m3
-rw-r--r--macosx/HBQueueController.mm3
-rw-r--r--macosx/HBUtilities.h15
-rw-r--r--macosx/HBUtilities.m29
7 files changed, 111 insertions, 114 deletions
diff --git a/macosx/Controller.h b/macosx/Controller.h
index 816c77cfd..01ba45f07 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -168,7 +168,6 @@ BOOL fIsDragging;
IBOutlet NSButton * fPresetNewFolderCheck;
IBOutlet NSTextField * fPresetSelectedDisplay;
- NSString * AppSupportDirectory;
NSString * UserPresetsFile;
NSMutableArray * UserPresets;
NSMutableArray * UserPresetssortedArray;
@@ -225,7 +224,6 @@ BOOL fIsDragging;
- (int) getPidnum;
- (IBAction) showAboutPanel:(id)sender;
-- (void) writeToActivityLog:(const char *) format, ...;
- (IBAction) browseSources: (id) sender;
- (void) browseSourcesDone: (NSOpenPanel *) sheet
returnCode: (int) returnCode contextInfo: (void *) contextInfo;
diff --git a/macosx/Controller.m b/macosx/Controller.m
index d86b855cd..f7a30d903 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -47,23 +47,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
+ (unsigned int) maximumNumberOfAllowedAudioTracks { return maximumNumberOfAllowedAudioTracks; }
-- (NSString *)appSupportPath
-{
- NSFileManager *fileManager = [NSFileManager defaultManager];
- NSString *appSupportPath = nil;
-
- NSArray *allPaths = NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory,
- NSUserDomainMask,
- YES );
- if( [allPaths count] )
- appSupportPath = [[allPaths objectAtIndex:0] stringByAppendingPathComponent:@"HandBrake"];
-
- if( ![fileManager fileExistsAtPath:appSupportPath] )
- [fileManager createDirectoryAtPath:appSupportPath withIntermediateDirectories:YES attributes:nil error:NULL];
-
- return appSupportPath;
-}
-
- (id)init
{
self = [super init];
@@ -80,12 +63,9 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[HBPreferencesController registerUserDefaults];
fHandle = NULL;
fQueueEncodeLibhb = NULL;
- /* Check for check for the app support directory here as
- * outputPanel needs it right away, as may other future methods
- */
- AppSupportDirectory = [self appSupportPath];
+
/* Check for and create the App Support Preview directory if necessary */
- NSString *PreviewDirectory = [AppSupportDirectory stringByAppendingPathComponent:@"Previews"];
+ NSString *PreviewDirectory = [[HBUtilities appSupportPath] stringByAppendingPathComponent:@"Previews"];
if( ![[NSFileManager defaultManager] fileExistsAtPath:PreviewDirectory] )
{
[[NSFileManager defaultManager] createDirectoryAtPath:PreviewDirectory
@@ -104,7 +84,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
fPreferencesController = [[HBPreferencesController alloc] init];
/* Lets report the HandBrake version number here to the activity log and text log file */
NSString *versionStringFull = [[NSString stringWithFormat: @"Handbrake Version: %@", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]] stringByAppendingString: [NSString stringWithFormat: @" (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]];
- [self writeToActivityLog: "%s", [versionStringFull UTF8String]];
+ [HBUtilities writeToActivityLog: "%s", [versionStringFull UTF8String]];
/* Load the dockTile and instiante initial text fields */
dockTile = [[NSApplication sharedApplication] dockTile];
@@ -274,8 +254,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
* preview encode is initiated. */
if (hbInstanceNum == 1)
{
- NSString *PreviewDirectory = [NSString stringWithFormat:@"~/Library/Application Support/HandBrake/Previews"];
- PreviewDirectory = [PreviewDirectory stringByExpandingTildeInPath];
+ NSString *PreviewDirectory = [[HBUtilities appSupportPath] stringByAppendingPathComponent:@"Previews"];
NSError *error;
NSArray *files = [ [NSFileManager defaultManager] contentsOfDirectoryAtPath: PreviewDirectory error: &error ];
for( NSString *file in files )
@@ -286,7 +265,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
if( error )
{
//an error occurred
- [self writeToActivityLog: "Could not remove existing preview at : %s",[file UTF8String] ];
+ [HBUtilities writeToActivityLog: "Could not remove existing preview at : %s",[file UTF8String] ];
}
}
}
@@ -454,7 +433,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
NSRunningApplication *thisInstance = [NSRunningApplication currentApplication];
NSString *thisInstanceAppPath = [[NSBundle mainBundle] bundlePath];
- [self writeToActivityLog: "hbInstances path to this instance: %s", [thisInstanceAppPath UTF8String]];
+ [HBUtilities writeToActivityLog: "hbInstances path to this instance: %s", [thisInstanceAppPath UTF8String]];
int hbInstances = 0;
NSString *runningInstanceAppPath;
@@ -465,16 +444,16 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
/*Report the path to each active instances app path */
runningInstancePidNum = [runningInstance processIdentifier];
runningInstanceAppPath = [[runningInstance bundleURL] path];
- [self writeToActivityLog: "hbInstance found instance pidnum: %d at path: %s", runningInstancePidNum, [runningInstanceAppPath UTF8String]];
+ [HBUtilities writeToActivityLog: "hbInstance found instance pidnum: %d at path: %s", runningInstancePidNum, [runningInstanceAppPath UTF8String]];
/* see if this is us*/
if ([runningInstance isEqual: thisInstance])
{
/* If so this is our pidnum */
- [self writeToActivityLog: "hbInstance MATCH FOUND, our pidnum is: %d", runningInstancePidNum];
+ [HBUtilities writeToActivityLog: "hbInstance MATCH FOUND, our pidnum is: %d", runningInstancePidNum];
/* Get the PID number for this hb instance, used in multi instance encoding */
pidNum = runningInstancePidNum;
/* Report this pid to the activity log */
- [self writeToActivityLog: "Pid for this instance: %d", pidNum];
+ [HBUtilities writeToActivityLog: "Pid for this instance: %d", pidNum];
/* Tell fQueueController what our pidNum is */
[fQueueController setPidNum:pidNum];
}
@@ -536,10 +515,10 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
- (void) didDimissReloadQueue: (NSWindow *)sheet returnCode: (int)returnCode contextInfo: (void *)contextInfo
{
- [self writeToActivityLog: "didDimissReloadQueue number of hb instances:%d", hbInstanceNum];
+ [HBUtilities writeToActivityLog: "didDimissReloadQueue number of hb instances:%d", hbInstanceNum];
if (returnCode == NSAlertOtherReturn)
{
- [self writeToActivityLog: "didDimissReloadQueue NSAlertOtherReturn Chosen"];
+ [HBUtilities writeToActivityLog: "didDimissReloadQueue NSAlertOtherReturn Chosen"];
[self clearQueueAllItems];
/* We show whichever open source window specified in LaunchSourceBehavior preference key */
@@ -555,7 +534,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
}
else
{
- [self writeToActivityLog: "didDimissReloadQueue First Button Chosen"];
+ [HBUtilities writeToActivityLog: "didDimissReloadQueue First Button Chosen"];
if (hbInstanceNum == 1)
{
@@ -859,7 +838,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[fScanIndicator setDoubleValue: 0.0];
[fScanIndicator setHidden: YES];
[fScanHorizontalLine setHidden: NO];
- [self writeToActivityLog:"ScanDone state received from fHandle"];
+ [HBUtilities writeToActivityLog:"ScanDone state received from fHandle"];
[self showNewScan:nil];
[[fWindow toolbar] validateVisibleItems];
@@ -940,7 +919,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
#define p s.param.scandone
case HB_STATE_SCANDONE:
{
- [self writeToActivityLog:"ScanDone state received from fQueueEncodeLibhb"];
+ [HBUtilities writeToActivityLog:"ScanDone state received from fQueueEncodeLibhb"];
[self processNewQueueEncode];
[[fWindow toolbar] validateVisibleItems];
@@ -1238,23 +1217,6 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
}
}
-/* We use this to write messages to stderr from the macgui which show up in the activity window and log*/
-- (void) writeToActivityLog:(const char *) format, ...
-{
- va_list args;
- va_start(args, format);
- if (format != nil)
- {
- char str[1024];
- vsnprintf( str, 1024, format, args );
-
- time_t _now = time( NULL );
- struct tm * now = localtime( &_now );
- fprintf(stderr, "[%02d:%02d:%02d] macgui: %s\n", now->tm_hour, now->tm_min, now->tm_sec, str );
- }
- va_end(args);
-}
-
#pragma mark -
#pragma mark Toolbar
// ============================================================
@@ -1613,7 +1575,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
NSString *sendToApp = [[NSUserDefaults standardUserDefaults] objectForKey: @"SendCompletedEncodeToApp"];
if (![sendToApp isEqualToString:@"None"])
{
- [self writeToActivityLog: "trying to send encode to: %s", [sendToApp UTF8String]];
+ [HBUtilities writeToActivityLog: "trying to send encode to: %s", [sendToApp UTF8String]];
NSAppleScript *myScript = [[NSAppleScript alloc] initWithSource: [NSString stringWithFormat: @"%@%@%@%@%@", @"tell application \"",sendToApp,@"\" to open (POSIX file \"", filePath, @"\")"]];
[myScript executeAndReturnError: nil];
[myScript release];
@@ -1763,11 +1725,11 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
/* We check to see if the chosen file at path is a package */
if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:[url path]])
{
- [self writeToActivityLog: "trying to open a package at: %s", [[url path] UTF8String]];
+ [HBUtilities writeToActivityLog: "trying to open a package at: %s", [[url path] UTF8String]];
/* We check to see if this is an .eyetv package */
if ([[url pathExtension] isEqualToString: @"eyetv"])
{
- [self writeToActivityLog:"trying to open eyetv package"];
+ [HBUtilities writeToActivityLog:"trying to open eyetv package"];
/* We're looking at an EyeTV package - try to open its enclosed
.mpg media file */
browsedSourceDisplayName = [[[url URLByDeletingPathExtension] lastPathComponent] retain];
@@ -1780,13 +1742,13 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
{
/* Found an mpeg inside the eyetv package, make it our scan path
and call performScan on the enclosed mpeg */
- [self writeToActivityLog:"found mpeg in eyetv package"];
+ [HBUtilities writeToActivityLog:"found mpeg in eyetv package"];
[self performScan:mpgname scanTitleNum:0];
}
else
{
/* We did not find an mpeg file in our package, so we do not call performScan */
- [self writeToActivityLog:"no valid mpeg in eyetv package"];
+ [HBUtilities writeToActivityLog:"no valid mpeg in eyetv package"];
}
}
/* We check to see if this is a .dvdmedia package */
@@ -1794,13 +1756,13 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
{
/* path IS a package - but dvdmedia packages can be treaded like normal directories */
browsedSourceDisplayName = [[[url URLByDeletingPathExtension] lastPathComponent] retain];
- [self writeToActivityLog:"trying to open dvdmedia package"];
+ [HBUtilities writeToActivityLog:"trying to open dvdmedia package"];
[self performScan:[url path] scanTitleNum:0];
}
else
{
/* The package is not an eyetv package, so we do not call performScan */
- [self writeToActivityLog:"unable to open package"];
+ [HBUtilities writeToActivityLog:"unable to open package"];
}
}
else // path is not a package, so we treat it as a dvd parent folder or VIDEO_TS folder
@@ -1808,13 +1770,13 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
/* path is not a package, so we call perform scan directly on our file */
if ([[url lastPathComponent] isEqualToString: @"VIDEO_TS"])
{
- [self writeToActivityLog:"trying to open video_ts folder (video_ts folder chosen)"];
+ [HBUtilities writeToActivityLog:"trying to open video_ts folder (video_ts folder chosen)"];
/* If VIDEO_TS Folder is chosen, choose its parent folder for the source display name*/
browsedSourceDisplayName = [[[url URLByDeletingLastPathComponent] lastPathComponent] retain];
}
else
{
- [self writeToActivityLog:"trying to open video_ts folder (parent directory chosen)"];
+ [HBUtilities writeToActivityLog:"trying to open video_ts folder (parent directory chosen)"];
/* if not the VIDEO_TS Folder, we can assume the chosen folder is the source name */
/* make sure we remove any path extension as this can also be an '.mpg' file */
browsedSourceDisplayName = [[url lastPathComponent] retain];
@@ -1895,7 +1857,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
// The chosen path was actually on a DVD, so use the raw block
// device path instead.
path = [detector devicePath];
- [self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]];
+ [HBUtilities writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
@@ -1910,7 +1872,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
/*compatible vlc not found, so we set the bool to cancel scanning to 1 */
cancelScanDecrypt = 1;
- [self writeToActivityLog: "libdvdcss.2.dylib not found for decrypting physical dvd"];
+ [HBUtilities writeToActivityLog: "libdvdcss.2.dylib not found for decrypting physical dvd"];
NSInteger status;
status = NSRunAlertPanel(@"Please note that HandBrake does not support the removal of copy-protection from DVD Discs. You can if you wish install libdvdcss or any other 3rd party software for this function.",
@"Videolan.org provides libdvdcss if you are not currently using another solution.", @"Get libdvdcss.pkg", @"Cancel Scan", @"Attempt Scan Anyway");
@@ -1924,27 +1886,27 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
else if (status == NSAlertAlternateReturn)
{
/* User chose to cancel the scan */
- [self writeToActivityLog: "Cannot open physical dvd, scan cancelled"];
+ [HBUtilities writeToActivityLog: "Cannot open physical dvd, scan cancelled"];
}
else
{
/* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */
cancelScanDecrypt = 0;
- [self writeToActivityLog:"User overrode copy-protection warning - trying to open physical dvd without decryption"];
+ [HBUtilities writeToActivityLog:"User overrode copy-protection warning - trying to open physical dvd without decryption"];
}
}
else if (dvdcss != NULL)
{
/* VLC was found in /Applications so all is well, we can carry on using vlc's libdvdcss.dylib for decrypting if needed */
- [self writeToActivityLog: "libdvdcss.2.dylib found for decrypting physical dvd"];
+ [HBUtilities writeToActivityLog: "libdvdcss.2.dylib found for decrypting physical dvd"];
dlclose(dvdcss);
}
else
{
/* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */
cancelScanDecrypt = 0;
- [self writeToActivityLog:"Copy-protection warning disabled in preferences - trying to open physical dvd without decryption"];
+ [HBUtilities writeToActivityLog:"Copy-protection warning disabled in preferences - trying to open physical dvd without decryption"];
}
}
@@ -1966,13 +1928,13 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
}
if (scanTitleNum > 0)
{
- [self writeToActivityLog: "scanning specifically for title: %d", scanTitleNum];
+ [HBUtilities writeToActivityLog: "scanning specifically for title: %d", scanTitleNum];
}
else
{
// minimum title duration doesn't apply to title-specific scan
// it doesn't apply to batch scan either, but we can't tell it apart from DVD & BD folders here
- [self writeToActivityLog: "scanning titles with a duration of %d seconds or more", min_title_duration_seconds];
+ [HBUtilities writeToActivityLog: "scanning titles with a duration of %d seconds or more", min_title_duration_seconds];
}
hb_system_sleep_prevent(fHandle);
@@ -2023,16 +1985,16 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
if (applyQueueToScan == YES)
{
/* we are a rescan of an existing queue item and need to apply the queued settings to the scan */
- [self writeToActivityLog: "showNewScan: This is a queued item rescan"];
+ [HBUtilities writeToActivityLog: "showNewScan: This is a queued item rescan"];
}
else if (applyQueueToScan == NO)
{
- [self writeToActivityLog: "showNewScan: This is a new source item scan"];
+ [HBUtilities writeToActivityLog: "showNewScan: This is a new source item scan"];
}
else
{
- [self writeToActivityLog: "showNewScan: cannot grok scan status"];
+ [HBUtilities writeToActivityLog: "showNewScan: cannot grok scan status"];
}
/* We increment the successful scancount here by one,
@@ -2140,7 +2102,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
if (applyQueueToScan == YES)
{
/* we are a rescan of an existing queue item and need to apply the queued settings to the scan */
- [self writeToActivityLog: "showNewScan: calling applyQueueSettingsToMainWindow"];
+ [HBUtilities writeToActivityLog: "showNewScan: calling applyQueueSettingsToMainWindow"];
[self applyQueueSettingsToMainWindow:nil];
}
@@ -2226,7 +2188,7 @@ static void queueFSEventStreamCallback(
/* Define variables and create a CFArray object containing
CFString objects containing paths to watch.
*/
- CFStringRef mypath = (CFStringRef) [[self appSupportPath] stringByAppendingPathComponent:@"Queue"];
+ CFStringRef mypath = (CFStringRef) [[HBUtilities appSupportPath] stringByAppendingPathComponent:@"Queue"];
CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void **)&mypath, 1, NULL);
FSEventStreamContext callbackCtx;
@@ -2266,7 +2228,7 @@ static void queueFSEventStreamCallback(
{
/* We declare the default NSFileManager into fileManager */
NSFileManager *fileManager = [NSFileManager defaultManager];
- NSString *appSupportPath = [self appSupportPath];
+ NSString *appSupportPath = [HBUtilities appSupportPath];
/* We define the location of the user presets file */
QueueFile = [[appSupportPath stringByAppendingPathComponent:@"Queue/Queue.plist"] retain];
@@ -2301,7 +2263,7 @@ static void queueFSEventStreamCallback(
- (void)reloadQueue
{
- [self writeToActivityLog:"Queue reloaded"];
+ [HBUtilities writeToActivityLog:"Queue reloaded"];
NSMutableArray * tempQueueArray = [[NSMutableArray alloc] initWithContentsOfFile:QueueFile];
[QueueFileArray setArray:tempQueueArray];
@@ -2414,7 +2376,7 @@ fWorkingCount = 0;
{
nextPendingFound = YES;
nextPendingIndex = [QueueFileArray indexOfObject: tempObject];
- [self writeToActivityLog: "getNextPendingQueueIndex next pending encode index is:%d", nextPendingIndex];
+ [HBUtilities writeToActivityLog: "getNextPendingQueueIndex next pending encode index is:%d", nextPendingIndex];
}
i++;
}
@@ -2732,7 +2694,7 @@ fWorkingCount = 0;
currentQueueEncodeIndex = newQueueItemIndex;
/* now we mark the queue item as Status = 1 ( being encoded ) so another instance can not come along and try to scan it while we are scanning */
[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:1] forKey:@"Status"];
- [self writeToActivityLog: "incrementQueueItemDone new pending items found: %d", currentQueueEncodeIndex];
+ [HBUtilities writeToActivityLog: "incrementQueueItemDone new pending items found: %d", currentQueueEncodeIndex];
[self saveQueueFileItem];
/* now we can go ahead and scan the new pending queue item */
[self performNewQueueScan:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SourcePath"] scanTitleNum:[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"TitleNumber"]intValue]];
@@ -2740,7 +2702,7 @@ fWorkingCount = 0;
}
else
{
- [self writeToActivityLog: "incrementQueueItemDone there are no more pending encodes"];
+ [HBUtilities writeToActivityLog: "incrementQueueItemDone there are no more pending encodes"];
/* Done encoding, allow system sleep for the encode handle */
hb_system_sleep_allow(fQueueEncodeLibhb);
/*
@@ -2782,7 +2744,7 @@ fWorkingCount = 0;
}
if (scanTitleNum > 0)
{
- [self writeToActivityLog: "scanning specifically for title: %d", scanTitleNum];
+ [HBUtilities writeToActivityLog: "scanning specifically for title: %d", scanTitleNum];
}
/*
* Only scan 10 previews before an encode - additional previews are
@@ -2803,12 +2765,12 @@ fWorkingCount = 0;
if( !hb_list_count( list ) )
{
- [self writeToActivityLog: "processNewQueueEncode WARNING nothing found in the title list"];
+ [HBUtilities writeToActivityLog: "processNewQueueEncode WARNING nothing found in the title list"];
}
NSMutableDictionary * queueToApply = [QueueFileArray objectAtIndex:currentQueueEncodeIndex];
- [self writeToActivityLog: "Preset: %s", [[queueToApply objectForKey:@"PresetName"] UTF8String]];
- [self writeToActivityLog: "processNewQueueEncode number of passes expected is: %d", ([[queueToApply objectForKey:@"VideoTwoPass"] intValue] + 1)];
+ [HBUtilities writeToActivityLog: "Preset: %s", [[queueToApply objectForKey:@"PresetName"] UTF8String]];
+ [HBUtilities writeToActivityLog: "processNewQueueEncode number of passes expected is: %d", ([[queueToApply objectForKey:@"VideoTwoPass"] intValue] + 1)];
hb_job_set_file(job, [[queueToApply objectForKey:@"DestinationPath"] UTF8String]);
[self prepareJob];
@@ -2887,7 +2849,7 @@ fWorkingCount = 0;
- (void)rescanQueueItemToMainWindow:(NSString *) scanPath scanTitleNum: (NSUInteger) scanTitleNum selectedQueueItem: (NSUInteger) selectedQueueItem
{
fqueueEditRescanItemNum = selectedQueueItem;
- [self writeToActivityLog: "rescanQueueItemToMainWindow: Re-scanning queue item at index:%d",fqueueEditRescanItemNum];
+ [HBUtilities writeToActivityLog: "rescanQueueItemToMainWindow: Re-scanning queue item at index:%d",fqueueEditRescanItemNum];
applyQueueToScan = YES;
/* Make sure we release the display name before reassigning it */
[browsedSourceDisplayName release];
@@ -2907,7 +2869,7 @@ fWorkingCount = 0;
hb_job_t * job = fTitle->job;
if (queueToApply)
{
- [self writeToActivityLog: "applyQueueSettingsToMainWindow: queue item found"];
+ [HBUtilities writeToActivityLog: "applyQueueSettingsToMainWindow: queue item found"];
}
/* Set title number and chapters */
/* since the queue only scans a single title, its already been selected in showNewScan
@@ -3103,7 +3065,7 @@ fWorkingCount = 0;
//applyQueueToScan = NO;
/* Not that source is loaded and settings applied, delete the queue item from the queue */
- [self writeToActivityLog: "applyQueueSettingsToMainWindow: deleting queue item:%d",fqueueEditRescanItemNum];
+ [HBUtilities writeToActivityLog: "applyQueueSettingsToMainWindow: deleting queue item:%d",fqueueEditRescanItemNum];
[self removeQueueFileItem:fqueueEditRescanItemNum];
}
@@ -3171,7 +3133,7 @@ bool one_burned = FALSE;
* Commented out but left in for initial commit. */
- [self writeToActivityLog: "Foreign Language Search: %d", 1];
+ [HBUtilities writeToActivityLog: "Foreign Language Search: %d", 1];
job->indepth_scan = 1;
@@ -3458,14 +3420,14 @@ bool one_burned = FALSE;
if([[queueToApply objectForKey:@"fEncodeStartStop"] intValue] == 0)
{
/* Chapter selection */
- [self writeToActivityLog: "Start / Stop set to chapters"];
+ [HBUtilities writeToActivityLog: "Start / Stop set to chapters"];
job->chapter_start = [[queueToApply objectForKey:@"JobChapterStart"] intValue];
job->chapter_end = [[queueToApply objectForKey:@"JobChapterEnd"] intValue];
}
else if ([[queueToApply objectForKey:@"fEncodeStartStop"] intValue] == 1)
{
/* we are pts based start / stop */
- [self writeToActivityLog: "Start / Stop set to seconds…"];
+ [HBUtilities writeToActivityLog: "Start / Stop set to seconds…"];
/* Point A to Point B. Time to time in seconds.*/
/* get the start seconds from the start seconds field */
@@ -3479,7 +3441,7 @@ bool one_burned = FALSE;
else if ([[queueToApply objectForKey:@"fEncodeStartStop"] intValue] == 2)
{
/* we are frame based start / stop */
- [self writeToActivityLog: "Start / Stop set to frames…"];
+ [HBUtilities writeToActivityLog: "Start / Stop set to frames…"];
/* Point A to Point B. Frame to frame */
/* get the start frame from the start frame field */
@@ -3725,7 +3687,7 @@ bool one_burned = FALSE;
/* if we are on the first track and using "Foreign Audio Search" */
if (i == 0 && subtitle == 1)
{
- [self writeToActivityLog: "Foreign Language Search: %d", 1];
+ [HBUtilities writeToActivityLog: "Foreign Language Search: %d", 1];
job->indepth_scan = 1;
@@ -3995,7 +3957,7 @@ bool one_burned = FALSE;
hb_add_filter(job, filter, [[NSString stringWithFormat:@"%d:%d:%d",
fps_mode, fps_num, fps_den] UTF8String]);
- [self writeToActivityLog: "prepareJob exiting"];
+ [HBUtilities writeToActivityLog: "prepareJob exiting"];
}
@@ -4089,7 +4051,7 @@ bool one_burned = FALSE;
*/
- (IBAction) Rip: (id) sender
{
- [self writeToActivityLog: "Rip: Pending queue count is %d", fPendingCount];
+ [HBUtilities writeToActivityLog: "Rip: Pending queue count is %d", fPendingCount];
/* Rip or Cancel ? */
hb_state_t s;
hb_get_state2( fQueueEncodeLibhb, &s );
@@ -4306,7 +4268,7 @@ bool one_burned = FALSE;
currentQueueEncodeIndex = newQueueItemIndex;
/* now we mark the queue item as Status = 1 ( being encoded ) so another instance can not come along and try to scan it while we are scanning */
[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] setObject:[NSNumber numberWithInt:1] forKey:@"Status"];
- [self writeToActivityLog: "incrementQueueItemDone new pending items found: %d", currentQueueEncodeIndex];
+ [HBUtilities writeToActivityLog: "incrementQueueItemDone new pending items found: %d", currentQueueEncodeIndex];
[self saveQueueFileItem];
/* now we can go ahead and scan the new pending queue item */
[self performNewQueueScan:[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SourcePath"] scanTitleNum:[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"TitleNumber"]intValue]];
@@ -4314,7 +4276,7 @@ bool one_burned = FALSE;
}
else
{
- [self writeToActivityLog: "incrementQueueItemDone there are no more pending encodes"];
+ [HBUtilities writeToActivityLog: "incrementQueueItemDone there are no more pending encodes"];
}
}
@@ -4338,7 +4300,7 @@ bool one_burned = FALSE;
[self saveQueueFileItem];
// so now lets move to
currentQueueEncodeIndex++ ;
- [self writeToActivityLog: "cancelling current job and stopping the queue"];
+ [HBUtilities writeToActivityLog: "cancelling current job and stopping the queue"];
}
- (IBAction) Pause: (id) sender
{
@@ -5675,8 +5637,7 @@ return YES;
/* We declare the default NSFileManager into fileManager */
NSFileManager * fileManager = [NSFileManager defaultManager];
/* We define the location of the user presets file */
- UserPresetsFile = @"~/Library/Application Support/HandBrake/UserPresets.plist";
- UserPresetsFile = [[UserPresetsFile stringByExpandingTildeInPath]retain];
+ UserPresetsFile = [[[HBUtilities appSupportPath] stringByAppendingPathComponent:@"UserPresets.plist"] retain];
/* We check for the presets.plist */
if ([fileManager fileExistsAtPath:UserPresetsFile] == 0)
{
@@ -6405,7 +6366,7 @@ return YES;
i++;
}
/* report the built in preset updating to the activity log */
- [self writeToActivityLog: "built in presets updated to build number: %d", [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]];
+ [HBUtilities writeToActivityLog: "built in presets updated to build number: %d", [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]];
[self sortPresets];
[self addPreset];
diff --git a/macosx/HBOutputPanelController.m b/macosx/HBOutputPanelController.m
index 2b9fcfec5..c59d70ac1 100644
--- a/macosx/HBOutputPanelController.m
+++ b/macosx/HBOutputPanelController.m
@@ -7,6 +7,7 @@
#import "HBOutputPanelController.h"
#import "HBOutputRedirect.h"
+#import "HBUtilities.h"
/// Maximum amount of characters that can be shown in the view.
// Original value used by cleaner
@@ -48,8 +49,7 @@
* 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
*/
- outputLogFile = @"~/Library/Application Support/HandBrake/HandBrake-activitylog.txt";
- outputLogFile = [[outputLogFile stringByExpandingTildeInPath]retain];
+ outputLogFile = [[[HBUtilities appSupportPath] stringByAppendingPathComponent:@"HandBrake-activitylog.txt"] retain];
/* We check for an existing output log file here */
if( [fileManager fileExistsAtPath:outputLogFile] == 0 )
@@ -131,10 +131,7 @@
}
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"];
+ NSString *encodeLogDirectory = [[HBUtilities appSupportPath] stringByAppendingPathComponent:@"EncodeLogs"];
if( ![[NSFileManager defaultManager] fileExistsAtPath:encodeLogDirectory] )
{
[[NSFileManager defaultManager] createDirectoryAtPath:encodeLogDirectory
@@ -252,10 +249,7 @@
- (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"];
+ NSString *encodeLogDirectory = [[HBUtilities appSupportPath] stringByAppendingPathComponent:@"EncodeLogs"];
if( ![[NSFileManager defaultManager] fileExistsAtPath:encodeLogDirectory] )
{
[[NSFileManager defaultManager] createDirectoryAtPath:encodeLogDirectory
diff --git a/macosx/HBPreviewController.m b/macosx/HBPreviewController.m
index 76d756a0f..d13254ddc 100644
--- a/macosx/HBPreviewController.m
+++ b/macosx/HBPreviewController.m
@@ -6,6 +6,7 @@
#import "HBPreviewController.h"
#import "HBPreviewGenerator.h"
+#import "HBUtilities.h"
#import "Controller.h"
#import <QTKit/QTKit.h>
@@ -821,7 +822,7 @@ typedef enum ViewMode : NSUInteger {
if (!movie)
{
- [self.delegate writeToActivityLog: "showMoviePreview: Unable to open movie"];
+ [HBUtilities writeToActivityLog: "showMoviePreview: Unable to open movie"];
[self switchViewToMode:ViewModePicturePreview];
}
else
diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm
index bb95733e9..120afbda6 100644
--- a/macosx/HBQueueController.mm
+++ b/macosx/HBQueueController.mm
@@ -7,6 +7,7 @@
#import "HBQueueController.h"
#import "Controller.h"
#import "HBImageAndTextCell.h"
+#import "HBUtilities.h"
#define HB_ROW_HEIGHT_TITLE_ONLY 17.0
#define HB_ROW_HEIGHT_FULL_DESCRIPTION 200.0
@@ -243,7 +244,7 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe
- (void)setPidNum: (int)myPidnum
{
pidNum = myPidnum;
- [fHBController writeToActivityLog: "HBQueueController : My Pidnum is %d", pidNum];
+ [HBUtilities writeToActivityLog: "HBQueueController : My Pidnum is %d", pidNum];
}
#pragma mark -
diff --git a/macosx/HBUtilities.h b/macosx/HBUtilities.h
index d1fc9888d..f3f39501b 100644
--- a/macosx/HBUtilities.h
+++ b/macosx/HBUtilities.h
@@ -9,7 +9,20 @@
@interface HBUtilities : NSObject
/**
- * Genetares a file name automatically based on the inputs,
+ * Returns the path of the current <user>/Library/Application Support/HandBrake folder.
+ */
++ (NSString *)appSupportPath;
+
+/**
+ * Writes a message to standard error.
+ * The message will show up in the output panel and in the activity log.
+ *
+ * @param format a standard c format string with varargs.
+ */
++ (void)writeToActivityLog:(const char *)format, ...;
+
+/**
+ * Generates a file name automatically based on the inputs,
* it can be configured with NSUserDefaults.
*
* @param sourceName the name of the source file
diff --git a/macosx/HBUtilities.m b/macosx/HBUtilities.m
index 47666f923..1ccd78630 100644
--- a/macosx/HBUtilities.m
+++ b/macosx/HBUtilities.m
@@ -9,6 +9,35 @@
@implementation HBUtilities
++ (NSString *)appSupportPath
+{
+ NSString *appSupportPath = [[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory,
+ NSUserDomainMask,
+ YES) firstObject] stringByAppendingPathComponent:@"HandBrake"];
+
+ NSFileManager *fileManager = [NSFileManager defaultManager];
+ if (![fileManager fileExistsAtPath:appSupportPath])
+ [fileManager createDirectoryAtPath:appSupportPath withIntermediateDirectories:YES attributes:nil error:NULL];
+
+ return appSupportPath;
+}
+
++ (void)writeToActivityLog:(const char *)format, ...
+{
+ va_list args;
+ va_start(args, format);
+ if (format != nil)
+ {
+ char str[1024];
+ vsnprintf(str, 1024, format, args);
+
+ time_t _now = time(NULL);
+ struct tm *now = localtime(&_now);
+ fprintf(stderr, "[%02d:%02d:%02d] macgui: %s\n", now->tm_hour, now->tm_min, now->tm_sec, str);
+ }
+ va_end(args);
+}
+
+ (NSString *)automaticNameForSource:(NSString *)sourceName
title:(NSUInteger)title
chapters:(NSRange)chaptersRange