OSDN Git Service

MacGui: version the dhlib target in Xcode to 0.9.1
[handbrake-jp/handbrake-jp-git.git] / macosx / Controller.h
1 /* $Id: Controller.h,v 1.35 2005/08/01 14:29:50 titer Exp $
2
3    This file is part of the HandBrake source code.
4    Homepage: <http://handbrake.m0k.org/>.
5    It may be used under the terms of the GNU General Public License. */
6
7 #include <Cocoa/Cocoa.h>
8 #include <Growl/Growl.h>
9
10 #include "hb.h"
11
12
13 #include "ChapterTitles.h"
14 #include "PictureController.h"
15 #include "QueueController.h"
16 #import "MVMenuButton.h"
17 @class HBOutputPanelController;
18
19 @interface HBController : NSObject <GrowlApplicationBridgeDelegate>
20
21 {
22     IBOutlet NSWindow            * fWindow;
23         
24     /* Picture panel */
25     IBOutlet PictureController   * fPictureController;
26     IBOutlet NSPanel             * fPicturePanel;
27         
28     /* Queue panel */
29     IBOutlet QueueController     * fQueueController;
30     IBOutlet NSPanel             * fQueuePanel;
31     IBOutlet NSTextField         * fQueueStatus;
32         
33         /* Menu Items */
34         /* File Menu */
35         IBOutlet NSMenu * fMenuBarFileMenu;
36         IBOutlet NSMenuItem * fMenuOpenSource;
37         IBOutlet NSMenuItem * fMenuAddToQueue;
38         IBOutlet NSMenuItem * fMenuStartEncode;
39         IBOutlet NSMenuItem * fMenuPauseEncode;
40         /* Window Menu */
41         IBOutlet NSMenu * fMenuBarWindowMenu;
42         IBOutlet NSMenuItem * fMenuPresetsDrawerToggle;
43         IBOutlet NSMenuItem * fMenuQueuePanelShow;
44         IBOutlet NSMenuItem * fMenuPicturePanelShow;
45         IBOutlet NSMenuItem * fMenuActivityWindowShow;
46         
47     /* Source box */
48         IBOutlet NSProgressIndicator * fScanIndicator;
49         NSString                     * sourceDisplayName;
50         IBOutlet NSTextField         * fScanStatus;
51     IBOutlet NSTextField         * fSrcDVD1Field;
52     IBOutlet NSTextField         * fSrcDVD2Field;
53     IBOutlet NSTextField         * fSrcTitleField;
54     IBOutlet NSPopUpButton       * fSrcTitlePopUp;
55     IBOutlet NSTextField         * fSrcChapterField;
56     IBOutlet NSPopUpButton       * fSrcChapterStartPopUp;
57     IBOutlet NSTextField         * fSrcChapterToField;
58     IBOutlet NSPopUpButton       * fSrcChapterEndPopUp;
59     IBOutlet NSTextField         * fSrcDuration1Field;
60     IBOutlet NSTextField         * fSrcDuration2Field;
61         
62     /* Destination box */
63     IBOutlet NSTextField         * fDstFormatField;
64         IBOutlet NSPopUpButton       * fDstFormatPopUp;
65         IBOutlet NSButton            * fDstMpgLargeFileCheck;
66     IBOutlet NSTextField         * fDstCodecsField;
67     IBOutlet NSPopUpButton       * fDstCodecsPopUp;
68     IBOutlet NSTextField         * fDstFile1Field;
69     IBOutlet NSTextField         * fDstFile2Field;
70     IBOutlet NSButton            * fDstBrowseButton;
71         
72     /* Video box */
73     IBOutlet NSTextField         * fVidRateField;
74     IBOutlet NSPopUpButton       * fVidRatePopUp;
75     IBOutlet NSTextField         * fVidEncoderField;
76     IBOutlet NSPopUpButton       * fVidEncoderPopUp;
77     IBOutlet NSTextField         * fVidQualityField;
78     IBOutlet NSMatrix            * fVidQualityMatrix;
79     IBOutlet NSButtonCell        * fVidTargetCell;
80     IBOutlet NSTextField         * fVidTargetSizeField;
81     IBOutlet NSButtonCell        * fVidBitrateCell;
82     IBOutlet NSTextField         * fVidBitrateField;
83     IBOutlet NSButtonCell        * fVidConstantCell;
84     IBOutlet NSSlider            * fVidQualitySlider;
85     IBOutlet NSButton            * fVidGrayscaleCheck;
86     IBOutlet NSButton            * fVidTwoPassCheck;
87     IBOutlet NSButton            * fVidTurboPassCheck;
88         
89         /* Picture Settings box */
90         IBOutlet NSTextField         * fPicLabelSettings;
91         IBOutlet NSTextField         * fPicLabelSrc;
92         IBOutlet NSTextField         * fPicLabelOutp;
93         IBOutlet NSTextField         * fPicLabelAr;
94         IBOutlet NSTextField         * fPicLabelDeinter;
95         IBOutlet NSTextField         * fPicLabelSrcX;
96         IBOutlet NSTextField         * fPicLabelOutputX;
97         
98         IBOutlet NSTextField         * fPicSrcWidth;
99         IBOutlet NSTextField         * fPicSrcHeight;
100         IBOutlet NSTextField         * fPicSettingWidth;
101         IBOutlet NSTextField         * fPicSettingHeight;
102         IBOutlet NSTextField         * fPicSettingARkeep;
103         IBOutlet NSTextField         * fPicSettingPAR;
104         IBOutlet NSTextField         * fPicSettingDeinterlace;
105         IBOutlet NSTextField         * fPicSettingDeinterlaceDsply;
106         IBOutlet NSTextField         * fPicSettingARkeepDsply;
107         IBOutlet NSTextField         * fPicSettingPARDsply;
108         IBOutlet NSTextField         * fPicSettingAutoCropLabel;
109         IBOutlet NSTextField         * fPicSettingAutoCrop;
110         IBOutlet NSTextField         * fPicSettingAutoCropDsply;
111         IBOutlet NSTextField         * fPicSettingDetelecine;
112         IBOutlet NSTextField         * fPicSettingDetelecineLabel;
113         IBOutlet NSTextField         * fPicSettingDenoise;
114         IBOutlet NSTextField         * fPicSettingDenoiseDsply;
115         IBOutlet NSTextField         * fPicSettingDenoiseLabel;
116
117         IBOutlet NSTextField         * fPicLabelAnamorphic;
118         IBOutlet NSTextField         * fPicLabelPAROutp;
119         IBOutlet NSTextField         * fPicLabelPAROutputX;
120         IBOutlet NSTextField         * fPicSettingPARWidth;
121         IBOutlet NSTextField         * fPicSettingPARHeight;
122     /* Picture variables */
123         int                        PicOrigOutputWidth;
124         int                        PicOrigOutputHeight;
125         int                        AutoCropTop;
126         int                        AutoCropBottom;
127         int                        AutoCropLeft;
128         int                        AutoCropRight;
129     /* Subtitles box */
130     IBOutlet NSTextField         * fSubField;
131     IBOutlet NSPopUpButton       * fSubPopUp;
132         IBOutlet NSButton            * fSubForcedCheck;
133         
134     /* Audio box */
135     IBOutlet NSTextField         * fAudLang1Field;
136     IBOutlet NSPopUpButton       * fAudLang1PopUp;
137     IBOutlet NSTextField         * fAudLang2Field;
138     IBOutlet NSPopUpButton       * fAudLang2PopUp;
139         /* New Audio Mix PopUps */
140         IBOutlet NSTextField         * fAudTrack1MixLabel;
141         IBOutlet NSPopUpButton       * fAudTrack1MixPopUp;
142     IBOutlet NSTextField         * fAudTrack2MixLabel;
143         IBOutlet NSPopUpButton       * fAudTrack2MixPopUp;
144         
145         IBOutlet NSTextField         * fAudRateField;
146     IBOutlet NSPopUpButton       * fAudRatePopUp;
147     IBOutlet NSTextField         * fAudBitrateField;
148     IBOutlet NSPopUpButton       * fAudBitratePopUp;
149     
150     /* Chapters box */
151     IBOutlet NSButton            * fCreateChapterMarkers;
152     IBOutlet NSTableView         * fChapterTable;
153         ChapterTitles                * fChapterTitlesDelegate;
154         
155     /* Bottom */
156     IBOutlet NSButton            * fPictureButton;
157     IBOutlet NSTextField         * fStatusField;
158     IBOutlet NSProgressIndicator * fRipIndicator;
159     IBOutlet NSButton            * fShowQuButton;
160     IBOutlet NSButton            * fAddToQuButton;
161     IBOutlet NSButton            * fPauseButton;
162     IBOutlet NSButton            * fRipButton;
163         
164         /* Advanced Tab for opts fX264optView*/
165         IBOutlet NSView              * fX264optView;
166         IBOutlet NSTextField         * fX264optViewTitleLabel;
167         IBOutlet NSTextField         * fDisplayX264OptionsLabel;
168         IBOutlet NSTextField         * fDisplayX264Options;
169         IBOutlet NSTextField         * fX264optBframesLabel;
170         IBOutlet NSPopUpButton       * fX264optBframesPopUp;
171         IBOutlet NSTextField         * fX264optRefLabel;
172         IBOutlet NSPopUpButton       * fX264optRefPopUp;
173         IBOutlet NSTextField         * fX264optNfpskipLabel;
174         IBOutlet NSButton            * fX264optNfpskipSwitch;
175         IBOutlet NSTextField         * fX264optNodctdcmtLabel;
176         IBOutlet NSButton            * fX264optNodctdcmtSwitch;
177         IBOutlet NSTextField         * fX264optSubmeLabel;
178         IBOutlet NSPopUpButton       * fX264optSubmePopUp;
179         IBOutlet NSTextField         * fX264optTrellisLabel;
180         IBOutlet NSPopUpButton       * fX264optTrellisPopUp;
181     IBOutlet NSTextField         * fX264optMixedRefsLabel;
182     IBOutlet NSButton            * fX264optMixedRefsSwitch;
183     IBOutlet NSTextField         * fX264optMotionEstLabel;
184     IBOutlet NSPopUpButton       * fX264optMotionEstPopUp;
185     IBOutlet NSTextField         * fX264optMERangeLabel;
186     IBOutlet NSPopUpButton       * fX264optMERangePopUp;
187     IBOutlet NSTextField         * fX264optWeightBLabel;
188     IBOutlet NSButton            * fX264optWeightBSwitch;
189     IBOutlet NSTextField         * fX264optBRDOLabel;
190     IBOutlet NSButton            * fX264optBRDOSwitch;
191     IBOutlet NSTextField         * fX264optBPyramidLabel;
192     IBOutlet NSButton            * fX264optBPyramidSwitch;
193     IBOutlet NSTextField         * fX264optBiMELabel;
194     IBOutlet NSButton            * fX264optBiMESwitch;
195     IBOutlet NSTextField         * fX264optDirectPredLabel;
196     IBOutlet NSPopUpButton       * fX264optDirectPredPopUp;
197     IBOutlet NSTextField         * fX264optDeblockLabel;
198     IBOutlet NSPopUpButton       * fX264optAlphaDeblockPopUp;
199     IBOutlet NSPopUpButton       * fX264optBetaDeblockPopUp;
200     IBOutlet NSTextField         * fX264optAnalyseLabel;
201     IBOutlet NSPopUpButton       * fX264optAnalysePopUp;
202     IBOutlet NSTextField         * fX264opt8x8dctLabel;
203     IBOutlet NSButton            * fX264opt8x8dctSwitch;
204     IBOutlet NSTextField         * fX264optCabacLabel;
205     IBOutlet NSButton            * fX264optCabacSwitch;
206     
207         /* User Preset variables here */
208         
209         IBOutlet NSDrawer            * fPresetDrawer;
210         IBOutlet NSTextField         * fPresetNewName;
211         IBOutlet NSTextField         * fPresetNewDesc;
212         IBOutlet NSPopUpButton       * fPresetNewPicSettingsPopUp;
213         IBOutlet NSTextField         * fPresetSelectedDisplay;
214         
215         NSString                     * AppSupportDirectory;
216         NSString                     * UserPresetsFile;
217         NSMutableArray               * UserPresets;
218         NSMutableArray               * UserPresetssortedArray;
219         NSMutableDictionary          * chosenPreset;
220     int                            curUserPresetChosenNum;
221          
222         int                            presetHbDefault; // this is 1 in "Default" preset key
223         int                            presetUserDefault;// this is 2 in "Default" preset key
224     IBOutlet NSPanel             * fAddPresetPanel;
225         IBOutlet NSTableView         * tableView;
226         IBOutlet NSButton            * fPresetsAdd;
227         IBOutlet NSButton            * fPresetsDelete;
228     IBOutlet MVMenuButton        * fPresetsActionButton;
229     IBOutlet NSMenu              * fPresetsActionMenu;
230         
231     hb_handle_t                  * fHandle;
232         hb_title_t                   * fTitle;
233     /* integer to set to determine the previous state
234                 of encode 0==idle, 1==encoding, 2==cancelled*/
235     int                            fEncodeState;
236         int                            currentScanCount;
237         int                            currentSuccessfulScanCount;
238         NSString                      * currentSource;
239         HBOutputPanelController       *outputPanel;
240         
241         BOOL                         startButtonEnabled;
242     BOOL                         pauseButtonEnabled;
243     BOOL                         addToQueueButtonEnabled;
244         BOOL                         stopOrStart;
245         BOOL                         resumeOrPause;
246 }
247
248 - (void)     TranslateStrings;
249
250 - (void)     updateUI: (NSTimer *) timer;
251 - (void)     enableUI: (bool) enable;
252 - (IBAction) showNewScan: (id) sender;
253 - (IBAction) showScanPanel: (id) sender;
254 - (IBAction) browseSources: (id) sender;
255 - (void) browseSourcesDone: (NSOpenPanel *) sheet
256     returnCode: (int) returnCode contextInfo: (void *) contextInfo;
257     
258 - (IBAction) titlePopUpChanged: (id) sender;
259 - (IBAction) chapterPopUpChanged: (id) sender;
260
261 - (IBAction) formatPopUpChanged: (id) sender;
262 - (IBAction) codecsPopUpChanged: (id) sender;
263 - (IBAction) encoderPopUpChanged: (id) sender;
264 - (IBAction) twoPassCheckboxChanged: (id) sender;
265 - (IBAction) videoFrameRateChanged: (id) sender;
266 - (IBAction) setEnabledStateOfAudioMixdownControls: (id) sender;
267 - (IBAction) addAllAudioTracksToPopUp: (id) sender;
268 - (IBAction) selectAudioTrackInPopUp: (id) sender searchPrefixString: (NSString *) searchPrefixString selectIndexIfNotFound: (int) selectIndexIfNotFound;
269 - (IBAction) audioTrackPopUpChanged: (id) sender;
270 - (IBAction) audioTrackPopUpChanged: (id) sender mixdownToUse: (int) mixdownToUse;
271 - (IBAction) audioTrackMixdownChanged: (id) sender;
272 - (IBAction) subtitleSelectionChanged: (id) sender;
273
274 - (IBAction) browseFile: (id) sender;
275 - (void)     browseFileDone: (NSSavePanel *) sheet
276     returnCode: (int) returnCode contextInfo: (void *) contextInfo;
277
278 - (IBAction) videoMatrixChanged: (id) sender;
279 - (IBAction) qualitySliderChanged: (id) sender;
280
281 - (IBAction) showPicturePanel: (id) sender;
282 - (IBAction) calculatePictureSizing: (id) sender;
283 - (IBAction) openMainWindow: (id) sender;
284
285 - (IBAction) addToQueue: (id) sender;
286 - (IBAction) showQueuePanel: (id) sender;
287
288 - (IBAction) Rip: (id) sender;
289 - (void)     overWriteAlertDone: (NSWindow *) sheet
290     returnCode: (int) returnCode contextInfo: (void *) contextInfo;
291 - (void)     updateAlertDone: (NSWindow *) sheet
292     returnCode: (int) returnCode contextInfo: (void *) contextInfo;
293 - (void)     _Rip;
294 - (IBAction) Cancel: (id) sender;
295 - (void)     _Cancel: (NSWindow *) sheet returnCode: (int) returnCode
296     contextInfo: (void *) contextInfo;
297 - (IBAction) Pause: (id) sender;
298
299 - (IBAction) calculateBitrate: (id) sender;
300 - (void) controlTextDidBeginEditing: (NSNotification *) notification;
301 - (void) controlTextDidEndEditing: (NSNotification *) notification;
302 - (void) controlTextDidChange: (NSNotification *) notification;
303
304 - (IBAction) openHomepage: (id) sender;
305 - (IBAction) openForums:   (id) sender;
306 - (IBAction) openUserGuide:   (id) sender;
307
308 // x264 Advanced Panel Methods
309 - (IBAction) X264AdvancedOptionsSet: (id) sender;
310 - (IBAction) X264AdvancedOptionsStandardizeOptString: (id) sender;
311 - (IBAction) X264AdvancedOptionsSetCurrentSettings: (id) sender;
312 - (NSString *)  X264AdvancedOptionsStandardizeOptNames:(NSString *) cleanOptNameString;
313 - (IBAction) X264AdvancedOptionsChanged: (id) sender;
314
315 // Preset Methods Here
316 - (void) loadPresets;
317 - (IBAction) customSettingUsed: (id) sender;
318 - (IBAction) showAddPresetPanel: (id) sender;
319 - (IBAction) closeAddPresetPanel: (id) sender;
320 - (NSDictionary *)createPreset;
321 - (NSDictionary *)createIpodLowPreset;
322 - (NSDictionary *)createIpodHighPreset;
323 - (NSDictionary *)createAppleTVPreset;
324 - (NSDictionary *)createPSThreePreset;  
325 - (NSDictionary *)createPSPPreset;
326 - (NSDictionary *)createNormalPreset;
327 - (NSDictionary *)createClassicPreset;
328 - (NSDictionary *)createQuickTimePreset;
329 - (NSDictionary *)createFilmPreset;
330 - (NSDictionary *)createTelevisionPreset;
331 - (NSDictionary *)createAnimationPreset;
332 - (NSDictionary *)createBedlamPreset;
333 - (NSDictionary *)createiPhonePreset;
334 - (NSDictionary *)createDeuxSixQuatrePreset;
335 - (NSDictionary *)createBrokePreset;
336 - (NSDictionary *)createBlindPreset;
337 - (NSDictionary *)createCRFPreset;
338
339 - (IBAction) revertPictureSizeToMax:(id)sender;
340
341 - (IBAction)setDefaultPreset:(id)sender;
342 - (IBAction)selectDefaultPreset:(id)sender;
343 - (void) savePreset;
344 - (IBAction)addFactoryPresets:(id)sender;
345 - (IBAction)deleteFactoryPresets:(id)sender;
346 - (IBAction)addUserPreset:(id)sender;
347 - (void)addPreset;
348 - (IBAction)insertPreset:(id)sender;
349 - (IBAction)deletePreset:(id)sender;
350 - (IBAction)getDefaultPresets:(id)sender;
351 - (IBAction)tableViewSelected:(id)sender;
352
353 // NSTableDataSource methods
354 - (int)numberOfRowsInTableView:(NSTableView *)aTableView;
355 - (id)tableView:(NSTableView *)aTableView
356       objectValueForTableColumn:(NSTableColumn *)aTableColumn
357       row:(int)rowIndex;
358 - (void)tableView:(NSTableView *)aTableView
359         setObjectValue:(id)anObject
360         forTableColumn:(NSTableColumn *)aTableColumn
361         row:(int)rowIndex;
362 // To determine user presets cell display properties
363 - (void)tableView:(NSTableView *)aTableView
364                 willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn
365                  row:(int)rowIndex;
366
367 // Growl methods
368 - (NSDictionary *) registrationDictionaryForGrowl;
369 -(IBAction)showGrowlDoneNotification:(id)sender;
370 - (IBAction)showDebugOutputPanel:(id)sender;
371 - (void)setupToolbar;
372 @end
373