From: dynaflash Date: Mon, 21 May 2007 16:50:21 +0000 (+0000) Subject: MacGui: Debug Window to read libhb output like cli in inspector window X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=838aee17e7c8e1f8d8b6da6c47f1bc69f248195b;p=handbrake-jp%2Fhandbrake-jp-git.git MacGui: Debug Window to read libhb output like cli in inspector window - Thank You Cleaner!! - Adds Debug Output to Window menu - Adds Verbose pref to preferences menu - MacGui now reads output from libhb like cli - May add pref to open Debug Output window upon launch - All credit goes to Cleaner, Thank You! git-svn-id: svn://localhost/HandBrake/trunk@592 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- diff --git a/macosx/Controller.h b/macosx/Controller.h index 0e846bd9..89755bdb 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -15,6 +15,8 @@ #include "PictureController.h" #include "QueueController.h" +@class HBOutputPanelController; + @interface HBController : NSObject { @@ -194,6 +196,8 @@ /* integer to set to determine the previous state of encode 0==idle, 1==encoding, 2==cancelled*/ int fEncodeState; + + HBOutputPanelController *outputPanel; } - (void) TranslateStrings; @@ -295,6 +299,7 @@ // Growl methods - (NSDictionary *) registrationDictionaryForGrowl; -(IBAction)showGrowlDoneNotification:(id)sender; +- (IBAction)showDebugOutputPanel:(id)sender; @end diff --git a/macosx/Controller.mm b/macosx/Controller.mm index e4d9cbb3..952514a4 100644 --- a/macosx/Controller.mm +++ b/macosx/Controller.mm @@ -6,6 +6,7 @@ #include "Controller.h" #include "a52dec/a52.h" +#import "HBOutputPanelController.h" #define _(a) NSLocalizedString(a,NULL) @@ -36,21 +37,20 @@ static int FormatSettings[3][4] = { self = [super init]; fHandle = NULL; + outputPanel = [[HBOutputPanelController alloc] init]; return self; } - (void) applicationDidFinishLaunching: (NSNotification *) notification { - - int build; char * version; + // Init libhb + int debugLevel = [[NSUserDefaults standardUserDefaults] boolForKey:@"ShowVerboseOutput"] ? HB_DEBUG_ALL : HB_DEBUG_NONE; + fHandle = hb_init(debugLevel, [[NSUserDefaults standardUserDefaults] boolForKey:@"CheckForUpdates"]); - /* Init libhb */ - fHandle = hb_init( HB_DEBUG_NONE, [[NSUserDefaults - standardUserDefaults] boolForKey:@"CheckForUpdates"] ); - /* Set the Growl Delegate */ + // Set the Growl Delegate HBController *hbGrowlDelegate = [[HBController alloc] init]; [GrowlApplicationBridge setGrowlDelegate: hbGrowlDelegate]; /* Init others controllers */ @@ -93,13 +93,17 @@ static int FormatSettings[3][4] = { [self Cancel: NULL]; return NSTerminateCancel; - } - - /* Clean up */ - hb_close( &fHandle ); + } return NSTerminateNow; } +- (void)applicationWillTerminate:(NSNotification *)aNotification +{ + [outputPanel release]; + hb_close(&fHandle); +} + + - (void) awakeFromNib { [fWindow center]; @@ -3347,5 +3351,10 @@ id theRecord, theValue; URLWithString:@"http://handbrake.m0k.org/trac/wiki/HandBrakeGuide"]]; } +- (IBAction)showDebugOutputPanel:(id)sender +{ + [outputPanel showOutputPanel:nil]; +} + @end diff --git a/macosx/English.lproj/MainMenu.nib/classes.nib b/macosx/English.lproj/MainMenu.nib/classes.nib index ed1144ba..6569a8d0 100644 --- a/macosx/English.lproj/MainMenu.nib/classes.nib +++ b/macosx/English.lproj/MainMenu.nib/classes.nib @@ -2,14 +2,15 @@ IBClasses = ( { ACTIONS = { + AddAllAudioTracksToPopUp = id; AddFactoryPresets = id; - AddPreset = id; AddToQueue = id; AddUserPreset = id; AudioTrackMixdownChanged = id; AudioTrackPopUpChanged = id; BrowseFile = id; CalculateBitrate = id; + CalculatePictureSizing = id; Cancel = id; ChapterPopUpChanged = id; CloseAddPresetPanel = id; @@ -17,7 +18,6 @@ CustomSettingUsed = id; DeleteFactoryPresets = id; DeletePreset = id; - EnableQueue = id; EncoderPopUpChanged = id; FormatPopUpChanged = id; InsertPreset = id; @@ -26,7 +26,9 @@ OpenUserGuide = id; Pause = id; QualitySliderChanged = id; + RevertPictureSizeToMax = id; Rip = id; + SetEnabledStateOfAudioMixdownControls = id; ShowAddPresetPanel = id; ShowPicturePanel = id; ShowQueuePanel = id; @@ -35,6 +37,10 @@ VideoMatrixChanged = id; X264AdvancedOptionsChanged = id; X264AdvancedOptionsSet = id; + X264AdvancedOptionsSetCurrentSettings = id; + X264AdvancedOptionsStandardizeOptString = id; + showDebugOutputPanel = id; + showGrowlDoneNotification = id; tableViewSelected = id; }; CLASS = HBController; @@ -94,7 +100,6 @@ fPresetDrawer = NSDrawer; fPresetNewName = NSTextField; fPresetNewPicSettingsPopUp = NSPopUpButton; - fPresetSaveButton = NSButton; fPresetSelectedDisplay = NSTextField; fPresetsAdd = NSButton; fPresetsDelete = NSButton; diff --git a/macosx/English.lproj/MainMenu.nib/info.nib b/macosx/English.lproj/MainMenu.nib/info.nib index 899a5aca..974d9409 100644 --- a/macosx/English.lproj/MainMenu.nib/info.nib +++ b/macosx/English.lproj/MainMenu.nib/info.nib @@ -9,7 +9,7 @@ 1843 863 409 220 592 0 0 1920 1058 29 - 1793 762 365 44 1440 0 1280 1024 + 281 404 365 44 0 0 1280 778 IBFramework Version 446.1 @@ -19,10 +19,12 @@ IBOpenObjects + 1438 + 29 21 IBSystem Version - 8L127 + 8P2137 IBUserGuides 21 diff --git a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib index a3c716c3..d4920859 100644 Binary files a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib and b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib differ diff --git a/macosx/English.lproj/OutputPanel.nib/classes.nib b/macosx/English.lproj/OutputPanel.nib/classes.nib new file mode 100644 index 00000000..f9f53db9 --- /dev/null +++ b/macosx/English.lproj/OutputPanel.nib/classes.nib @@ -0,0 +1,13 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = {clearOutput = id; copyAllOutputToPasteboard = id; showOutputPanel = id; }; + CLASS = HBOutputPanelController; + LANGUAGE = ObjC; + OUTLETS = {outputPanel = NSPanel; textView = NSTextView; }; + SUPERCLASS = NSObject; + } + ); + IBVersion = 1; +} \ No newline at end of file diff --git a/macosx/English.lproj/OutputPanel.nib/info.nib b/macosx/English.lproj/OutputPanel.nib/info.nib new file mode 100644 index 00000000..6f7e1db5 --- /dev/null +++ b/macosx/English.lproj/OutputPanel.nib/info.nib @@ -0,0 +1,22 @@ + + + + + IBDocumentLocation + 69 7 356 240 0 0 1280 778 + IBEditorPositions + + 11 + 86 296 145 68 0 0 1280 778 + + IBFramework Version + 446.1 + IBOpenObjects + + 5 + 11 + + IBSystem Version + 8P2137 + + diff --git a/macosx/English.lproj/OutputPanel.nib/keyedobjects.nib b/macosx/English.lproj/OutputPanel.nib/keyedobjects.nib new file mode 100644 index 00000000..f1c25193 Binary files /dev/null and b/macosx/English.lproj/OutputPanel.nib/keyedobjects.nib differ diff --git a/macosx/HBOutputPanelController.h b/macosx/HBOutputPanelController.h new file mode 100644 index 00000000..c2b6bd75 --- /dev/null +++ b/macosx/HBOutputPanelController.h @@ -0,0 +1,30 @@ +/** + * @file + * @date 18.5.2007 + * + * Interface of class HBOutputPanelController. + */ + +#import + +/** + * This class implements a panel that displays all text that is written + * to stderr. User can easily copy the text to pasteboard from context menu. + */ +@interface HBOutputPanelController : NSObject +{ + /// Panel that displays debug output. + IBOutlet NSPanel *outputPanel; + + /// Textview that displays debug output. + IBOutlet NSTextView *textView; + + /// Text storage for the debug output. + NSTextStorage *outputTextStorage; +} + +- (IBAction)showOutputPanel:(id)sender; +- (IBAction)clearOutput:(id)sender; +- (IBAction)copyAllOutputToPasteboard:(id)sender; + +@end diff --git a/macosx/HBOutputPanelController.m b/macosx/HBOutputPanelController.m new file mode 100644 index 00000000..19549865 --- /dev/null +++ b/macosx/HBOutputPanelController.m @@ -0,0 +1,95 @@ +/** + * @file + * @date 18.5.2007 + * + * Implementation of class HBOutputPanelController. + */ + +#import "HBOutputPanelController.h" +#import "HBOutputRedirect.h" + +/// Maximum amount of characters that can be shown in the view. +#define TextStorageUpperSizeLimit 20000 + +/// When old output is removed, this is the amount of characters that will be +/// left in outputTextStorage. +#define TextStorageLowerSizeLimit 15000 + +@implementation HBOutputPanelController + +/** + * Initializes the object, creates outputTextStorage and starts redirection of stderr. + */ +- (id)init +{ + if (self = [super init]) + { + outputTextStorage = [[NSTextStorage alloc] init]; + [[HBOutputRedirect stderrRedirect] addListener:self]; + } + return self; +} + +/** + * Stops redirection of stderr and releases resources. + */ +- (void)dealloc +{ + [[HBOutputRedirect stderrRedirect] removeListener:self]; + [outputTextStorage release]; + [outputPanel release]; + [super dealloc]; +} + +/** + * Loads output panel from OutputPanel.nib and shwos it. + */ +- (IBAction)showOutputPanel:(id)sender +{ + if (!outputPanel) + { + BOOL loadSucceeded = [NSBundle loadNibNamed:@"OutputPanel" owner:self] && outputPanel; + NSAssert(loadSucceeded, @"Could not open nib file"); + + [outputPanel setFrameAutosaveName:@"OutputPanelFrame"]; + [[textView layoutManager] replaceTextStorage:outputTextStorage]; + } + + [textView scrollRangeToVisible:NSMakeRange([outputTextStorage length], 0)]; + [outputPanel orderFront:nil]; +} + +/** + * Displays text received from HBOutputRedirect in the text view. + */ +- (void)stderrRedirect:(NSString *)text +{ + NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:text]; + [outputTextStorage appendAttributedString:attributedString]; + [attributedString release]; + + if ([outputTextStorage length] > TextStorageUpperSizeLimit) + [outputTextStorage deleteCharactersInRange:NSMakeRange(0, [outputTextStorage length] - TextStorageLowerSizeLimit)]; + + [textView scrollRangeToVisible:NSMakeRange([outputTextStorage length], 0)]; +} + +/** + * Clears the output window. + */ +- (IBAction)clearOutput:(id)sender +{ + [outputTextStorage deleteCharactersInRange:NSMakeRange(0, [outputTextStorage length])]; +} + +/** + * Copies all text in the output window to pasteboard. + */ +- (IBAction)copyAllOutputToPasteboard:(id)sender +{ + NSPasteboard *pboard = [NSPasteboard generalPasteboard]; + [pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; + [pboard setString:[outputTextStorage string] forType:NSStringPboardType]; +} + +@end diff --git a/macosx/HBOutputRedirect.h b/macosx/HBOutputRedirect.h new file mode 100644 index 00000000..562f0940 --- /dev/null +++ b/macosx/HBOutputRedirect.h @@ -0,0 +1,60 @@ +/** + * @file + * @date 17.5.2007 + * + * Interface of class HBOutputRedirect. + */ + +#import + +/** + * This class is used to redirect @c stdout and @c stderr outputs. It is never + * created directly; @c stdoutRedirect and @c stderrRedirect class methods + * should be use instead. + * + * @note Redirection is done by replacing @c _write functions for @c stdout and + * @c stderr streams. Because of this messages written by NSLog(), for + * example are not redirected. I consider this a good thing, but if more + * universal redirecting is needed, it can be done at file descriptor + * level. + */ +@interface HBOutputRedirect : NSObject +{ + /// Set that contains all registered listeners for this output. + NSMutableSet *listeners; + + /// Selector that is called on listeners to forward the output. + SEL forwardingSelector; + + /// Output stream (@c stdout or @c stderr) redirected by this object. + FILE *stream; + + /// Pointer to old write function for the stream. + int (*oldWriteFunc)(void *, const char *, int); + + NSLock *lock; +} + ++ (id)stdoutRedirect; ++ (id)stderrRedirect; + +- (void)addListener:(id)aListener; +- (void)removeListener:(id)aListener; + +@end + +/* Here is another technique to redirect stderr, but it is done at lower level + which also redirects NSLog() and other writes that are done directly to the + file descriptor. This method is not used by HBOutputRedirect, but should + be easy to implement if needed. Code is untested, but this is shows basic + idea for future reference. + + // Create a pipe + NSPipe *pipe = [[NSPipe alloc] init]; + + // Connect stderr to the writing end of the pipe + dup2([[pipe fileHandleForWriting] fileDescriptor], STDERR_FILENO); + + // Get reading end of the pipe, we can use this to read stderr + NSFileHandle *fh = [pipe fileHandleForReading]; +*/ diff --git a/macosx/HBOutputRedirect.m b/macosx/HBOutputRedirect.m new file mode 100644 index 00000000..4fab9016 --- /dev/null +++ b/macosx/HBOutputRedirect.m @@ -0,0 +1,190 @@ +/** + * @file + * @date 17.5.2007 + * + * Implementation of class HBOutputRedirect. + */ + +#import "HBOutputRedirect.h" + +/// Global pointer to HBOutputRedirect object that manages redirects for stdout. +static HBOutputRedirect *g_stdoutRedirect = nil; + +/// Global pointer to HBOutputRedirect object that manages redirects for stderr. +static HBOutputRedirect *g_stderrRedirect = nil; + +@interface HBOutputRedirect (Private) +- (id)initWithStream:(FILE *)aStream selector:(SEL)aSelector; +- (void)startRedirect; +- (void)stopRedirect; +- (void)forwardOutput:(NSData *)data; +@end + +/** + * Function that replaces stdout->_write and forwards stdout to g_stdoutRedirect. + */ +int stdoutwrite(void *inFD, const char *buffer, int size) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSData *data = [[NSData alloc] initWithBytes:buffer length:size]; + [g_stdoutRedirect performSelectorOnMainThread:@selector(forwardOutput:) withObject:data waitUntilDone:NO]; + [data release]; + [pool release]; + return size; +} + +/** + * Function that replaces stderr->_write and forwards stderr to g_stderrRedirect. + */ +int stderrwrite(void *inFD, const char *buffer, int size) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSData *data = [[NSData alloc] initWithBytes:buffer length:size]; + [g_stderrRedirect performSelectorOnMainThread:@selector(forwardOutput:) withObject:data waitUntilDone:NO]; + [data release]; + [pool release]; + return size; +} + +@implementation HBOutputRedirect + +/** + * Returns HBOutputRedirect object used to redirect stdout. + */ ++ (id)stdoutRedirect +{ + if (!g_stdoutRedirect) + g_stdoutRedirect = [[HBOutputRedirect alloc] initWithStream:stdout selector:@selector(stdoutRedirect:)]; + + return g_stdoutRedirect; +} + +/** + * Returns HBOutputRedirect object used to redirect stderr. + */ ++ (id)stderrRedirect +{ + if (!g_stderrRedirect) + g_stderrRedirect = [[HBOutputRedirect alloc] initWithStream:stderr selector:@selector(stderrRedirect:)]; + + return g_stderrRedirect; +} + +/** + * Adds specified object as listener for this output. Method @c stdoutRedirect: + * or @c stderrRedirect: of the listener is called to redirect the output. + */ +- (void)addListener:(id)aListener +{ + NSAssert2([aListener respondsToSelector:forwardingSelector], @"Object %@ doesn't respond to selector \"%@\"", aListener, NSStringFromSelector(forwardingSelector)); + + if (![listeners containsObject:aListener]) + { + [listeners addObject:aListener]; + [aListener release]; + } + + if ([listeners count] > 0) + [self startRedirect]; +} + +/** + * Stops forwarding for this output to the specified listener object. + */ +- (void)removeListener:(id)aListener +{ + if ([listeners containsObject:aListener]) + { + [aListener retain]; + [listeners removeObject:aListener]; + } + + // If last listener is removed, stop redirecting output and autorelease + // self. Remember to set proper global pointer to NULL so the object is + // recreated again when needed. + if ([listeners count] == 0) + { + [self stopRedirect]; + [self autorelease]; + + if (self == g_stdoutRedirect) + g_stdoutRedirect = NULL; + else if (self == g_stderrRedirect) + g_stderrRedirect = NULL; + } +} + +@end + +@implementation HBOutputRedirect (Private) + +/** + * Private constructor which should not be called from outside. This is used to + * initialize the class at @c stdoutRedirect and @c stderrRedirect. + * + * @param aStream Stream that wil be redirected (stdout or stderr). + * @param aSelector Selector that will be called in listeners to redirect the stream. + * + * @return New HBOutputRedirect object. + */ +- (id)initWithStream:(FILE *)aStream selector:(SEL)aSelector +{ + if (self = [super init]) + { + listeners = [[NSMutableSet alloc] init]; + forwardingSelector = aSelector; + stream = aStream; + oldWriteFunc = NULL; + lock = [[NSLock alloc] init]; + } + return self; +} + +/** + * Frees all the listeners and deallocs the object. + */ +- (void)dealloc +{ + [listeners release]; + [super dealloc]; +} + +/** + * Starts redirecting the stream by redirecting its output to function + * @c stdoutwrite() or @c stderrwrite(). Old _write function is stored to + * @c oldWriteFunc so it can be restored. + */ +- (void)startRedirect +{ + if (!oldWriteFunc) + { + oldWriteFunc = stream->_write; + stream->_write = stream == stdout ? stdoutwrite : stderrwrite; + } +} + +/** + * Stops redirecting of the stream by returning the stream's _write function + * to original. + */ +- (void)stopRedirect +{ + if (oldWriteFunc) + { + stream->_write = oldWriteFunc; + oldWriteFunc = NULL; + } +} + +/** + * Called from @c stdoutwrite() and @c stderrwrite() to forward the output to + * listeners. + */ +- (void)forwardOutput:(NSData *)data +{ + NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; + [listeners makeObjectsPerformSelector:forwardingSelector withObject:string]; + [string release]; +} + +@end diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index 43f2ccb5..e978dc9f 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -69,6 +69,11 @@ 0DFF0B790B6BC72A00549488 /* deca52.c in Sources */ = {isa = PBXBuildFile; fileRef = 526FBC9D0B4CAB100064E04C /* deca52.c */; }; 0DFF0B7A0B6BC72A00549488 /* decavcodec.c in Sources */ = {isa = PBXBuildFile; fileRef = 526FBC9E0B4CAB100064E04C /* decavcodec.c */; }; 0DFF0C100B6BCEE800549488 /* test.c in Sources */ = {isa = PBXBuildFile; fileRef = 526FBC760B4CA8F40064E04C /* test.c */; }; + 253886010BFE0A5B0064E995 /* HBOutputRedirect.h in Headers */ = {isa = PBXBuildFile; fileRef = 253885FF0BFE0A5B0064E995 /* HBOutputRedirect.h */; }; + 253886020BFE0A5B0064E995 /* HBOutputRedirect.m in Sources */ = {isa = PBXBuildFile; fileRef = 253886000BFE0A5B0064E995 /* HBOutputRedirect.m */; }; + 2538860C0BFE0B730064E995 /* OutputPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2538860A0BFE0B730064E995 /* OutputPanel.nib */; }; + 253886170BFE0C160064E995 /* HBOutputPanelController.h in Headers */ = {isa = PBXBuildFile; fileRef = 253886150BFE0C160064E995 /* HBOutputPanelController.h */; }; + 253886180BFE0C160064E995 /* HBOutputPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 253886160BFE0C160064E995 /* HBOutputPanelController.m */; }; 4D1125D809D72FD200E0657B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D1125D709D72FD200E0657B /* libz.dylib */; }; 4D1125D909D72FD200E0657B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D1125D709D72FD200E0657B /* libz.dylib */; }; 4D1EA2EA0993B09A00FDC1A2 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.mm */; }; @@ -182,6 +187,11 @@ 0DFF0B720B6BC6E600549488 /* libhb.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhb.a; sourceTree = BUILT_PRODUCTS_DIR; }; 0DFF0C0A0B6BCEC200549488 /* HandBrakeCLI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = HandBrakeCLI; sourceTree = BUILT_PRODUCTS_DIR; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 253885FF0BFE0A5B0064E995 /* HBOutputRedirect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HBOutputRedirect.h; sourceTree = ""; }; + 253886000BFE0A5B0064E995 /* HBOutputRedirect.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = HBOutputRedirect.m; sourceTree = ""; }; + 2538860B0BFE0B730064E995 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/OutputPanel.nib; sourceTree = ""; }; + 253886150BFE0C160064E995 /* HBOutputPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBOutputPanelController.h; sourceTree = ""; }; + 253886160BFE0C160064E995 /* HBOutputPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBOutputPanelController.m; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; 29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; @@ -311,6 +321,7 @@ 29B97318FDCFA39411CA2CEA /* MainMenu.nib */, 4D1EA3000993B13700FDC1A2 /* Express.nib */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + 2538860A0BFE0B730064E995 /* OutputPanel.nib */, ); name = Resources; sourceTree = ""; @@ -397,6 +408,10 @@ 4D2AE78A09CCB24C007E18F6 /* DriveDetector.h */, 593034E90BBA39A100172349 /* ChapterTitles.h */, 593034EA0BBA39A100172349 /* ChapterTitles.m */, + 253885FF0BFE0A5B0064E995 /* HBOutputRedirect.h */, + 253886000BFE0A5B0064E995 /* HBOutputRedirect.m */, + 253886150BFE0C160064E995 /* HBOutputPanelController.h */, + 253886160BFE0C160064E995 /* HBOutputPanelController.m */, ); name = "HandBrake Sources"; sourceTree = ""; @@ -440,6 +455,8 @@ 4DD93F93082036E8008E1322 /* QueueController.h in Headers */, 4DD93F94082036E8008E1322 /* PrefsController.h in Headers */, 4D2AEA2A09CCB8FC007E18F6 /* DriveDetector.h in Headers */, + 253886010BFE0A5B0064E995 /* HBOutputRedirect.h in Headers */, + 253886170BFE0C160064E995 /* HBOutputPanelController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -574,6 +591,7 @@ 4DD93F96082036E8008E1322 /* MainMenu.nib in Resources */, 4DD93F97082036E8008E1322 /* InfoPlist.strings in Resources */, 0DFA5C7B0B8DD1E90020BC09 /* HandBrake.icns in Resources */, + 2538860C0BFE0B730064E995 /* OutputPanel.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -687,6 +705,8 @@ 4DD93F9F082036E8008E1322 /* QueueController.mm in Sources */, 4DD93FA0082036E8008E1322 /* PrefsController.m in Sources */, 4D2AEA2909CCB8F9007E18F6 /* DriveDetector.m in Sources */, + 253886020BFE0A5B0064E995 /* HBOutputRedirect.m in Sources */, + 253886180BFE0C160064E995 /* HBOutputPanelController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -719,6 +739,14 @@ name = InfoPlist.strings; sourceTree = ""; }; + 2538860A0BFE0B730064E995 /* OutputPanel.nib */ = { + isa = PBXVariantGroup; + children = ( + 2538860B0BFE0B730064E995 /* English */, + ); + name = OutputPanel.nib; + sourceTree = ""; + }; 29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = { isa = PBXVariantGroup; children = ( diff --git a/macosx/PrefsController.m b/macosx/PrefsController.m index 2af83fb3..09414e1d 100644 --- a/macosx/PrefsController.m +++ b/macosx/PrefsController.m @@ -32,6 +32,7 @@ defSrcDirectory, @"LastSourceDirectory", @"NO", @"DefaultAutoNaming", @"NO", @"DefaultChapterMarkers", + @"NO", @"ShowVerboseOutput", nil]; [defaults registerDefaults: appDefaults];