-/* $Id: Controller.h,v 1.14 2004/02/13 13:45:51 titer Exp $
+/* $Id: Controller.h,v 1.35 2005/08/01 14:29:50 titer Exp $
This file is part of the HandBrake source code.
Homepage: <http://handbrake.m0k.org/>.
It may be used under the terms of the GNU General Public License. */
-#include <Cocoa/Cocoa.h>
+#import <Cocoa/Cocoa.h>
+#import <Growl/Growl.h>
-#include "HandBrake.h"
-#include "PictureGLView.h"
-#include "TargetSizeField.h"
+#include "hb.h"
-@interface HBController : NSObject
+#import "ChapterTitles.h"
+#import "PictureController.h"
+#import "HBQueueController.h"
+#import "MVMenuButton.h"
+#import "HBAdvancedController.h"
+#import "HBPreferencesController.h"
+
+@class HBOutputPanelController;
+
+@interface HBController : NSObject <GrowlApplicationBridgeDelegate>
{
IBOutlet NSWindow * fWindow;
+ NSToolbar * toolbar;
+
+ /* Picture panel */
+ PictureController * fPictureController;
+
+ /* Advanced options tab */
+ HBAdvancedController * fAdvancedOptions;
+ IBOutlet NSBox * fAdvancedView;
- /* Scan view */
- IBOutlet NSView * fScView;
- IBOutlet NSTextField * fScWelcomeField;
- IBOutlet NSTextField * fScSelectField;
- IBOutlet NSMatrix * fScMatrix;
- IBOutlet NSButtonCell * fScDetectedCell;
- IBOutlet NSPopUpButton * fScDetectedPopUp;
- IBOutlet NSButtonCell * fScFolderCell;
- IBOutlet NSTextField * fScFolderField;
- IBOutlet NSButton * fScBrowseButton;
- IBOutlet NSTextField * fScStatusField;
- IBOutlet NSProgressIndicator * fScProgress;
- IBOutlet NSButton * fScOpenButton;
-
- IBOutlet NSView * fTempView;
-
- /* Rip view */
- IBOutlet NSView * fRipView;
-
- /* General box */
- IBOutlet NSTextField * fRipGeneralField;
- IBOutlet NSTextField * fRipTitleField;
- IBOutlet NSPopUpButton * fRipTitlePopUp;
- IBOutlet NSTextField * fRipFormatField;
- IBOutlet NSPopUpButton * fRipFormatPopUp;
- IBOutlet NSTextField * fRipFileField1;
- IBOutlet NSTextField * fRipFileField2;
- IBOutlet NSButton * fRipBrowseButton;
-
+ HBPreferencesController * fPreferencesController;
+
+ /* Queue panel */
+ HBQueueController * fQueueController;
+ IBOutlet NSTextField * fQueueStatus;
+
+ /* Output panel */
+ HBOutputPanelController *outputPanel;
+
+ /* Source box */
+ IBOutlet NSProgressIndicator * fScanIndicator;
+ NSString * sourceDisplayName;
+ IBOutlet NSTextField * fSrcDVD2Field;
+ IBOutlet NSTextField * fSrcTitleField;
+ IBOutlet NSPopUpButton * fSrcTitlePopUp;
+ IBOutlet NSTextField * fSrcChapterField;
+ IBOutlet NSPopUpButton * fSrcChapterStartPopUp;
+ IBOutlet NSTextField * fSrcChapterToField;
+ IBOutlet NSPopUpButton * fSrcChapterEndPopUp;
+ IBOutlet NSTextField * fSrcDuration1Field;
+ IBOutlet NSTextField * fSrcDuration2Field;
+
+ /* Destination box */
+ IBOutlet NSTextField * fDstFormatField;
+ IBOutlet NSPopUpButton * fDstFormatPopUp;
+ IBOutlet NSButton * fDstMpgLargeFileCheck;
+ IBOutlet NSTextField * fDstCodecsField;
+ IBOutlet NSPopUpButton * fDstCodecsPopUp;
+ IBOutlet NSTextField * fDstFile1Field;
+ IBOutlet NSTextField * fDstFile2Field;
+ IBOutlet NSButton * fDstBrowseButton;
+
/* Video box */
- IBOutlet NSTextField * fRipVideoField;
- IBOutlet NSTextField * fRipEncoderField;
- IBOutlet NSPopUpButton * fRipEncoderPopUp;
- IBOutlet NSTextField * fRipBitrateField;
- IBOutlet NSMatrix * fRipVideoMatrix;
- IBOutlet NSButtonCell * fRipCustomCell;
- IBOutlet NSTextField * fRipCustomField;
- IBOutlet NSButtonCell * fRipTargetCell;
- IBOutlet HBTargetSizeField * fRipTargetField;
- IBOutlet NSButton * fRipTwoPassCheck;
- IBOutlet NSButton * fRipCropButton;
+ IBOutlet NSTextField * fVidRateField;
+ IBOutlet NSPopUpButton * fVidRatePopUp;
+ IBOutlet NSTextField * fVidEncoderField;
+ IBOutlet NSPopUpButton * fVidEncoderPopUp;
+ IBOutlet NSTextField * fVidQualityField;
+ IBOutlet NSMatrix * fVidQualityMatrix;
+ IBOutlet NSButtonCell * fVidTargetCell;
+ IBOutlet NSTextField * fVidTargetSizeField;
+ IBOutlet NSButtonCell * fVidBitrateCell;
+ IBOutlet NSTextField * fVidBitrateField;
+ IBOutlet NSButtonCell * fVidConstantCell;
+ IBOutlet NSSlider * fVidQualitySlider;
+ IBOutlet NSButton * fVidGrayscaleCheck;
+ IBOutlet NSButton * fVidTwoPassCheck;
+ IBOutlet NSButton * fVidTurboPassCheck;
+
+ /* Picture Settings box */
+ IBOutlet NSTextField * fPicLabelSettings;
+ IBOutlet NSTextField * fPicLabelSrc;
+ IBOutlet NSTextField * fPicLabelOutp;
+ IBOutlet NSTextField * fPicLabelAr;
+ IBOutlet NSTextField * fPicLabelSrcX;
+ IBOutlet NSTextField * fPicLabelOutputX;
+ IBOutlet NSTextField * fPicLabelAutoCrop;
+ IBOutlet NSTextField * fPicLabelDetelecine;
+ IBOutlet NSTextField * fPicLabelDeinterlace;
+ IBOutlet NSTextField * fPicLabelDenoise;
+
+ IBOutlet NSTextField * fPicSrcWidth;
+ IBOutlet NSTextField * fPicSrcHeight;
+ IBOutlet NSTextField * fPicSettingWidth;
+ IBOutlet NSTextField * fPicSettingHeight;
+ IBOutlet NSTextField * fPicSettingDeinterlace;
+ IBOutlet NSTextField * fPicSettingARkeep;
+ IBOutlet NSTextField * fPicSettingPAR;
+ IBOutlet NSTextField * fPicSettingAutoCrop;
+ IBOutlet NSTextField * fPicSettingDetelecine;
+ IBOutlet NSTextField * fPicSettingDenoise;
+ IBOutlet NSTextField * fPicLabelAnamorphic;
+ IBOutlet NSTextField * fPicLabelPAROutputX;
+ IBOutlet NSTextField * fPicSettingPARWidth;
+ IBOutlet NSTextField * fPicSettingPARHeight;
+ /* Picture variables */
+ int PicOrigOutputWidth;
+ int PicOrigOutputHeight;
+ int AutoCropTop;
+ int AutoCropBottom;
+ int AutoCropLeft;
+ int AutoCropRight;
+ /* Subtitles box */
+ IBOutlet NSTextField * fSubField;
+ IBOutlet NSPopUpButton * fSubPopUp;
+ IBOutlet NSButton * fSubForcedCheck;
+
/* Audio box */
- IBOutlet NSTextField * fRipAudioField;
- IBOutlet NSTextField * fRipLang1Field;
- IBOutlet NSPopUpButton * fRipLang1PopUp;
- IBOutlet NSTextField * fRipLang2Field;
- IBOutlet NSPopUpButton * fRipLang2PopUp;
- IBOutlet NSTextField * fRipAudBitField;
- IBOutlet NSPopUpButton * fRipAudBitPopUp;
-
+ IBOutlet NSTextField * fAudLang1Field;
+ IBOutlet NSPopUpButton * fAudLang1PopUp;
+ IBOutlet NSTextField * fAudLang2Field;
+ IBOutlet NSPopUpButton * fAudLang2PopUp;
+ /* New Audio Mix PopUps */
+ IBOutlet NSTextField * fAudTrack1MixLabel;
+ IBOutlet NSPopUpButton * fAudTrack1MixPopUp;
+ IBOutlet NSTextField * fAudTrack2MixLabel;
+ IBOutlet NSPopUpButton * fAudTrack2MixPopUp;
+
+ IBOutlet NSTextField * fAudRateField;
+ IBOutlet NSPopUpButton * fAudRatePopUp;
+ IBOutlet NSTextField * fAudBitrateField;
+ IBOutlet NSPopUpButton * fAudBitratePopUp;
+
+ /* Chapters box */
+ IBOutlet NSButton * fCreateChapterMarkers;
+ IBOutlet NSTableView * fChapterTable;
+ ChapterTitles * fChapterTitlesDelegate;
+
/* Bottom */
- IBOutlet NSTextField * fRipStatusField;
- IBOutlet NSTextField * fRipInfoField;
- IBOutlet NSProgressIndicator * fRipProgress;
- IBOutlet NSButton * fRipPauseButton;
- IBOutlet NSButton * fRipRipButton;
-
- /* "Done" alert panel */
- IBOutlet NSPanel * fDonePanel;
-
- /* Crop & scale panel */
- IBOutlet NSPanel * fPicturePanel;
- IBOutlet HBPictureGLView * fPictureGLView;
- IBOutlet NSTextField * fWidthField1;
- IBOutlet NSTextField * fWidthField2;
- IBOutlet NSStepper * fWidthStepper;
- IBOutlet NSButton * fDeinterlaceCheck;
- IBOutlet NSTextField * fTopField1;
- IBOutlet NSTextField * fTopField2;
- IBOutlet NSStepper * fTopStepper;
- IBOutlet NSTextField * fBottomField1;
- IBOutlet NSTextField * fBottomField2;
- IBOutlet NSStepper * fBottomStepper;
- IBOutlet NSTextField * fLeftField1;
- IBOutlet NSTextField * fLeftField2;
- IBOutlet NSStepper * fLeftStepper;
- IBOutlet NSTextField * fRightField1;
- IBOutlet NSTextField * fRightField2;
- IBOutlet NSStepper * fRightStepper;
- IBOutlet NSButton * fPreviousButton;
- IBOutlet NSButton * fNextButton;
- IBOutlet NSButton * fAutocropButton;
- IBOutlet NSButton * fOpenGLCheck;
- IBOutlet NSTextField * fInfoField;
- IBOutlet NSButton * fCloseButton;
- int fPicture;
-
- HBHandle * fHandle;
- int fTitle;
- int fTitleCount;
- HBList * fTitleList;
- float fPosition;
- int fPass;
- int fPassCount;
- float fCurFrameRate;
- float fAvgFrameRate;
- int fRemainingTime;
- int fResult;
+ IBOutlet NSButton * fPictureButton;
+ IBOutlet NSTextField * fStatusField;
+ IBOutlet NSProgressIndicator * fRipIndicator;
+ BOOL fRipIndicatorShown;
+
+ /* User Preset variables here */
+
+ IBOutlet NSDrawer * fPresetDrawer;
+ IBOutlet NSTextField * fPresetNewName;
+ IBOutlet NSTextField * fPresetNewDesc;
+ IBOutlet NSPopUpButton * fPresetNewPicSettingsPopUp;
+ IBOutlet NSTextField * fPresetSelectedDisplay;
+
+ NSString * AppSupportDirectory;
+ NSString * UserPresetsFile;
+ NSMutableArray * UserPresets;
+ NSMutableArray * UserPresetssortedArray;
+ NSMutableDictionary * chosenPreset;
+ int curUserPresetChosenNum;
+
+ int presetHbDefault; // this is 1 in "Default" preset key
+ int presetUserDefault;// this is 2 in "Default" preset key
+ IBOutlet NSPanel * fAddPresetPanel;
+ IBOutlet NSTableView * tableView;
+ IBOutlet NSButton * fPresetsAdd;
+ IBOutlet NSButton * fPresetsDelete;
+ IBOutlet MVMenuButton * fPresetsActionButton;
+ IBOutlet NSMenu * fPresetsActionMenu;
+
+ hb_handle_t * fHandle;
+ hb_title_t * fTitle;
+ /* integer to set to determine the previous state
+ of encode 0==idle, 1==encoding, 2==cancelled*/
+ int fEncodeState;
+ int currentScanCount;
+ int currentSuccessfulScanCount;
+ int SuccessfulScan;
+ NSString * currentSource;
+
+ hb_job_t * fLastKnownCurrentJob;
}
-- (IBAction) ScanMatrixChanged: (id) sender;
-- (IBAction) BrowseDVD: (id) sender;
-- (void) BrowseDVDDone: (NSOpenPanel *) sheet
+- (void) TranslateStrings;
+
+- (void) updateUI: (NSTimer *) timer;
+- (void) enableUI: (bool) enable;
+- (IBAction) showNewScan: (id) sender;
+- (IBAction) showScanPanel: (id) sender;
+- (IBAction) browseSources: (id) sender;
+- (void) browseSourcesDone: (NSOpenPanel *) sheet
returnCode: (int) returnCode contextInfo: (void *) contextInfo;
-- (IBAction) Scan: (id) sender;
-
-- (IBAction) TitlePopUpChanged: (id) sender;
-- (IBAction) FormatPopUpChanged: (id) sender;
-- (IBAction) VideoMatrixChanged: (id) sender;
-- (IBAction) AudioPopUpChanged: (id) sender;
-- (IBAction) BrowseFile: (id) sender;
-- (void) BrowseFileDone: (NSSavePanel *) sheet
+
+- (IBAction) titlePopUpChanged: (id) sender;
+- (IBAction) chapterPopUpChanged: (id) sender;
+
+- (IBAction) formatPopUpChanged: (id) sender;
+- (IBAction) codecsPopUpChanged: (id) sender;
+- (IBAction) encoderPopUpChanged: (id) sender;
+- (IBAction) twoPassCheckboxChanged: (id) sender;
+- (IBAction) videoFrameRateChanged: (id) sender;
+- (IBAction) setEnabledStateOfAudioMixdownControls: (id) sender;
+- (IBAction) addAllAudioTracksToPopUp: (id) sender;
+- (IBAction) selectAudioTrackInPopUp: (id) sender searchPrefixString: (NSString *) searchPrefixString selectIndexIfNotFound: (int) selectIndexIfNotFound;
+- (IBAction) audioTrackPopUpChanged: (id) sender;
+- (IBAction) audioTrackPopUpChanged: (id) sender mixdownToUse: (int) mixdownToUse;
+- (IBAction) audioTrackMixdownChanged: (id) sender;
+- (IBAction) subtitleSelectionChanged: (id) sender;
+
+- (IBAction) browseFile: (id) sender;
+- (void) browseFileDone: (NSSavePanel *) sheet
+ returnCode: (int) returnCode contextInfo: (void *) contextInfo;
+
+- (IBAction) videoMatrixChanged: (id) sender;
+- (IBAction) qualitySliderChanged: (id) sender;
+
+- (IBAction) showPicturePanel: (id) sender;
+- (IBAction) calculatePictureSizing: (id) sender;
+- (IBAction) openMainWindow: (id) sender;
+
+- (IBAction) addToQueue: (id) sender;
+- (void) overwriteAddToQueueAlertDone: (NSWindow *) sheet
returnCode: (int) returnCode contextInfo: (void *) contextInfo;
-- (IBAction) ShowPicturePanel: (id) sender;
-- (IBAction) ClosePanel: (id) sender;
+- (void) doAddToQueue;
+
+- (IBAction) showQueueWindow:(id)sender;
+
+- (IBAction)showPreferencesWindow:(id)sender;
+
- (IBAction) Rip: (id) sender;
-- (void) OverwriteAlertDone: (NSWindow *) sheet
+- (void) overWriteAlertDone: (NSWindow *) sheet
returnCode: (int) returnCode contextInfo: (void *) contextInfo;
-- (void) _Rip;
+- (void) updateAlertDone: (NSWindow *) sheet
+ returnCode: (int) returnCode contextInfo: (void *) contextInfo;
+- (void) doRip;
+
- (IBAction) Cancel: (id) sender;
-- (void) _Cancel: (NSWindow *) sheet returnCode: (int) returnCode
- contextInfo: (void *) contextInfo;
+- (void) doCancelCurrentJob;
+
- (IBAction) Pause: (id) sender;
-- (IBAction) Resume: (id) sender;
-- (IBAction) PreviousPicture: (id) sender;
-- (IBAction) NextPicture: (id) sender;
-- (IBAction) UpdatePicture: (id) sender;
-- (IBAction) AutoCrop: (id) sender;
+- (IBAction) calculateBitrate: (id) sender;
+- (void) controlTextDidChange: (NSNotification *) notification;
+
+- (IBAction) openHomepage: (id) sender;
+- (IBAction) openForums: (id) sender;
+- (IBAction) openUserGuide: (id) sender;
+
+// Preset Methods Here
+- (void) loadPresets;
+- (IBAction) customSettingUsed: (id) sender;
+- (IBAction) showAddPresetPanel: (id) sender;
+- (IBAction) closeAddPresetPanel: (id) sender;
+- (NSDictionary *)createPreset;
+- (NSDictionary *)createIpodLowPreset;
+- (NSDictionary *)createIpodHighPreset;
+- (NSDictionary *)createAppleTVPreset;
+- (NSDictionary *)createPSThreePreset;
+- (NSDictionary *)createPSPPreset;
+- (NSDictionary *)createNormalPreset;
+- (NSDictionary *)createClassicPreset;
+- (NSDictionary *)createQuickTimePreset;
+- (NSDictionary *)createFilmPreset;
+- (NSDictionary *)createTelevisionPreset;
+- (NSDictionary *)createAnimationPreset;
+- (NSDictionary *)createBedlamPreset;
+- (NSDictionary *)createiPhonePreset;
+- (NSDictionary *)createDeuxSixQuatrePreset;
+- (NSDictionary *)createBrokePreset;
+- (NSDictionary *)createBlindPreset;
+- (NSDictionary *)createCRFPreset;
+
+- (IBAction) revertPictureSizeToMax:(id)sender;
+
+- (IBAction)setDefaultPreset:(id)sender;
+- (IBAction)selectDefaultPreset:(id)sender;
+- (void) savePreset;
+- (IBAction)addFactoryPresets:(id)sender;
+- (IBAction)deleteFactoryPresets:(id)sender;
+- (IBAction)addUserPreset:(id)sender;
+- (void)addPreset;
+- (IBAction)insertPreset:(id)sender;
+- (IBAction)deletePreset:(id)sender;
+- (IBAction)getDefaultPresets:(id)sender;
+- (IBAction)tableViewSelected:(id)sender;
-- (void) DetectDrives: (NSNotification *) notification;
+// NSTableDataSource methods
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView;
+- (id)tableView:(NSTableView *)aTableView
+ objectValueForTableColumn:(NSTableColumn *)aTableColumn
+ row:(int)rowIndex;
+- (void)tableView:(NSTableView *)aTableView
+ setObjectValue:(id)anObject
+ forTableColumn:(NSTableColumn *)aTableColumn
+ row:(int)rowIndex;
+// To determine user presets cell display properties
+- (void)tableView:(NSTableView *)aTableView
+ willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn
+ row:(int)rowIndex;
-/* libhb callbacks */
-- (void) Scanning: (id) sender;
-- (void) ScanDone: (id) sender;
-- (void) Encoding: (id) sender;
-- (void) RipDone: (id) sender;
+// Growl methods
+- (NSDictionary *) registrationDictionaryForGrowl;
+-(IBAction)showGrowlDoneNotification:(id)sender;
+- (IBAction)showDebugOutputPanel:(id)sender;
+- (void)setupToolbar;
+- (void) remindUserOfSleepOrShutdown;
@end