From 838aee17e7c8e1f8d8b6da6c47f1bc69f248195b Mon Sep 17 00:00:00 2001 From: dynaflash Date: Mon, 21 May 2007 16:50:21 +0000 Subject: [PATCH] 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 --- macosx/Controller.h | 5 + macosx/Controller.mm | 29 ++-- macosx/English.lproj/MainMenu.nib/classes.nib | 11 +- macosx/English.lproj/MainMenu.nib/info.nib | 6 +- macosx/English.lproj/MainMenu.nib/keyedobjects.nib | Bin 133627 -> 134165 bytes macosx/English.lproj/OutputPanel.nib/classes.nib | 13 ++ macosx/English.lproj/OutputPanel.nib/info.nib | 22 +++ .../English.lproj/OutputPanel.nib/keyedobjects.nib | Bin 0 -> 6014 bytes macosx/HBOutputPanelController.h | 30 ++++ macosx/HBOutputPanelController.m | 95 +++++++++++ macosx/HBOutputRedirect.h | 60 +++++++ macosx/HBOutputRedirect.m | 190 +++++++++++++++++++++ macosx/HandBrake.xcodeproj/project.pbxproj | 28 +++ macosx/PrefsController.m | 1 + 14 files changed, 475 insertions(+), 15 deletions(-) create mode 100644 macosx/English.lproj/OutputPanel.nib/classes.nib create mode 100644 macosx/English.lproj/OutputPanel.nib/info.nib create mode 100644 macosx/English.lproj/OutputPanel.nib/keyedobjects.nib create mode 100644 macosx/HBOutputPanelController.h create mode 100644 macosx/HBOutputPanelController.m create mode 100644 macosx/HBOutputRedirect.h create mode 100644 macosx/HBOutputRedirect.m 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 a3c716c38aac57c1e82bc46fc5a155c1b4023bde..d4920859282f4234efbcc4b5b419d6fc4f899d75 100644 GIT binary patch delta 73063 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 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 0000000000000000000000000000000000000000..f1c251939556bc181c8e2e25d2b4a179f7a1cf71 GIT binary patch literal 6014 zcmZ`-33wD$wm#=pcUSLSRgeH85JC_!5VEj@oh$?*B!P4mAc4^7E|Mml?$8S)#tc`* zpx`bzt|K;xK6ng+j2n*6PZ7m^1RTX>+!zrY_jSb4IaSpO=zA~uy8Bkux##?6Kew7Y zLcv%(H}@DIFc825X0U(=_N7_AsJ}J1R*f#nqOVvm60XULM>>{dMVeQu{&=iO@>F^k zs9kEHC`G6M_HKI>tYBMSUYui)1$=QI$Gy^KaDWr?U=mD*888!yU@lZaJw%`b)<6{2 z!Xn=uI2td& zv6zPejoP$MJhV!r-7vd6Jipy{Xw$N`Y1~G)~7{Lx)gHcT2TD%0;Bd5=m zxCw858lE1aS#3x_u_th7$3pM@F_fqhwvGE0bj&d@d&<#Z{l0{4?Kxq;*WTM z3CskCnVDIb$n4C;MzB1V4^OfJHjzzYli3tj$fmMsY&x64X0lnVh?TN=wOQdrDDVLB_Urdrp65FWtHBl zU?4_*jWtwyD}C*%zFuDGO_6C&{x?f)kHMhPV9+O9s`S1EcqL--NV}oYl0Ma% zB&oc(B;t?w`c*grvk1X#m_t5DWlwAy7Y!N3P_i9LpcJN)fh!VmA6e9^#%n9R^lj`c zgUb709?XYwxEL0|La5+2UcsyQV(#ZEZ{@>}!6H~pGOED~HBbw=WVKQ?77vDfadJa_ zrFWsPSq%|LZzK`*tK7~P@P(Yc4NG7tEQ1DUgypaTnqVdPh)*;4Apk0@f);3nAgqQq z2thl9n7hrZYIC9`!w7+l@fq`d z;XrZJ*QS!i^oTeDF)~LS5+pk(7LSs0HJW7ZF}$}9I=4e7bis7p3Vr_52{mi$i(}9Y zmqHIQ`W@vmhs!7qyou(u#K%ZfEu^c}SVtrrP@^PTj~p&@;B$GI5d&91B7^lbl0~*Dd@>)rth-=xffkIDdR~KP z;V?W0&y%h%kd80G%kT5&dc;TR#$fxp4)Q^LEjB88XA`LFQC_<6)@1Rr)(=g~#`--Ng5 z*7kreMhVo_fjya%uDAbIb@2U;Qw=`UnOaY}&ZL|hFRnb0IDRPujw)9}Ly%@0rW z!F;%pSs%lx?QjZC>y1dlHdGCy2_UbQD-1qMSUHu zdcmXeUg<3l$JD4+SoPS`Z!HXl+s^XQ^{ntk+sd9!LTor7MgU6q7U_O(#m7qHnuR+g_Xt zeAH2xg-&AVLJ0>DSxy`E`6Rm0!!P9Hl1ORFFW_T%&TBM!r6FQE5f8$_@FWgF6IBJB zuhucOyr+N%U@geanQZ(`C4A?I zg~5KHzLuQ4Z+oy%2+VkkZaFHGWvdebZo`ZZtpqFsHuUWDUuKoYZY9M9(kNzB0s zJeTM398#xNtFa+U$)i}HTY4f5mnLer)$@wWax-!>@(7e6V+s}~u~3U>3YNYEJe&EA zM)u~Z*|}4Cj2+YA@J=|4GjJx(!r3srVf5LJG_dGAjMha+`YS&1@9xeUmyxHpr@o5N za}(c4$@P4Xw~&1y&l>6|1!Biq-U~!CI`tdW|*_)u%S<0X4p8iyEgzk#1?K zrAp>(4nT{UG6J8?XEjM_-DD3!qHB>iiOSlk9;&;2Lx2HkHMZ@*HUm(9Lo>?lxvuHklrnV~XKgq3=-QJYT}ocQMmJ@O zE+{{b3VdGvR2nwU>n_Ndn44diuVxn%l6lTvr1-@!p2WBoZ&YJaW0Tt65u(=8K=rd4(EIlv90( zaWAjuK3-F!-O)=vZh^`qZpB-8EpOt(-@x1OcD#dF-ideNABb%)Zo_*piQ9?!y||N@ zYI~^+RfN^{NI2+U81d^xl}4DkYZAe=6_J28kWx@oh0EKi!%-ObJtMbP1UuD$exFw> z>uE+*faVfj$CnVaM!tf2Ye}S|E2AhBN{xg^@xOr14!8?<r~z!#bev?m=UpQeZi@n zxBkx%C2m3DR!hm_C(n>$430ICMLy~}%@JQTK-}qgg>U1D`*16re>OlH_7Y$% ztn5?~B+@vY0xac_kKlAtn<|W5A8WgMA(y6RFMV&oUZQ5S$4=i0t!bCW{VP1N6K~PE z@6zarpT;{~r%utF(P)0cf8)>i3j>Bc!aMjH9_29}=WPuJa{W|6A#Bt!40Ed_%)&RM(h#9qlmCqgfQ-vD$vB!IazI?@S|3{e5| zNSVb1QzD?+X|ah^O4m<}wRC2*^()6RbWUs}%VeWi78}hjU}G?wjb#_HY&MRKXE|&F z@8Xy6Zhk56;lJbSsjYH;8NZxg!8h#SI96*DHobQmLT^UK(MzUjbogBib#yje zrN7qsD}I1KGl>mlW9U`PVzz>U;9G~Z`_)cmCRp!tybS@Uz|Bj(r4ubYos?3Q#(rX|-h!!p-WX<24zwInR-EM1mv zOOIu}vD^jpEJXR`K`ZZQ>o`UE($|Dee&WicgC#im!{O z#IMC4#2>|<#GkETO|y=&jp|=D*5lUqt*5P@TYs?r+cw-b$u`qgZ(D8avE5|bX}jOH+qTEH*S62L-}a#G zVcXNT7j4IFZ`=NEd(U>t_L=QFyI{B2t@bqgFngvw%YK19+dket!JcO?vsc?!+MDeG z`zm{@Jz~Gse!G3A{eJu7_9yI5+7H?f*^k>lu%EPl<3NYSVRhIY9*680;7D_fbmTZD zI;J~jI?5ai9Lq4e{}xhLf84O zF|J(KR9Bg6xoefH-F2nw2G<_fL$1eMFT37!eds#vMz`c1=^o`C?H=PE>&|zVxaYd( zxy#)P+>P!P?v?Ilcfg%+_qaE>Z*bq_-r~N+eXIK}_fGe2_a66N_dfR#_i^`0_Zg4b zBYB2-MtHJ3V?EiP@tz5uJWqjVuBY1L^Y}fgr^OTTT;|#2xzV%3^N8n==ULBlo)y^utE0imhjmp)^P0G#6R^<=M-O4@6E@ii} WM|ntj%y^r@SnBuUU%%Z@p8pStYV-d9 literal 0 HcmV?d00001 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]; -- 2.11.0