X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBQueueController.h;h=51e01f66dec54d12ad8f20ead45dfc5bfa994bc3;hb=240cf3308bf21be4d1918a71a5510d07e7d6d85b;hp=a2e5b999892895e98c083c3b2980541069946f9a;hpb=7421532edc15efa38d1662ac4a0ef33584831f45;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/macosx/HBQueueController.h b/macosx/HBQueueController.h index a2e5b999..51e01f66 100644 --- a/macosx/HBQueueController.h +++ b/macosx/HBQueueController.h @@ -1,40 +1,20 @@ /* HBQueueController This file is part of the HandBrake source code. - Homepage: . + Homepage: . It may be used under the terms of the GNU General Public License. */ -#include +#import #include "hb.h" @class HBController; -@class HBJob; -@class HBJobGroup; + #define HB_QUEUE_DRAGGING 0 // <--- NOT COMPLETELY FUNCTIONAL YET #define HB_OUTLINE_METRIC_CONTROLS 0 // for tweaking the outline cell spacings -// hb_job_t contains a sequence_id field. The high word is a unique job group id. -// The low word contains the "sequence id" which is a value starting at 0 and -// incremented for each pass in the job group. Use the function below to create and -// interpret a sequence_id field. -int MakeJobID(int jobGroupID, int sequenceNum); -bool IsFirstPass(int jobID); -typedef enum _HBQueueJobGroupStatus -{ - HBStatusNone = 0, - HBStatusPending = 1, - HBStatusWorking = 2, - HBStatusCompleted = 3, - HBStatusCanceled = 4 -} HBQueueJobGroupStatus; - -// Notification sent whenever the status of a HBJobGroup changes (via setStatus). The -// user info contains one object, @"HBOldJobGroupStatus", which is an NSNumber -// containing the previous status of the job group. -extern NSString * HBJobGroupStatusNotification; //------------------------------------------------------------------------------------ // As usual, we need to subclass NSOutlineView to handle a few special cases: @@ -56,160 +36,31 @@ extern NSString * HBJobGroupStatusNotification; @interface HBQueueOutlineView : NSOutlineView { -#if HB_QUEUE_DRAGGING -BOOL fIsDragging; -#endif -} -#if HB_QUEUE_DRAGGING -- (BOOL) isDragging; -#endif -@end -//------------------------------------------------------------------------------------ -// HBJob is the UI's equivalent to libhb's hb_job_t struct. It is used mainly for -// drawing the job's description. HBJob are referred to in the UI as 'passes'. -//------------------------------------------------------------------------------------ +BOOL fIsDragging; -@interface HBJob : NSObject -{ - HBJobGroup *jobGroup; // The group this job belongs to - - // The following fields match up with similar fields found in hb_job_t and it's - // various substructures. -@public - // from hb_job_s - int sequence_id; // This is how we xref to the jobs inside libhb - - int chapter_start; - int chapter_end; - int chapter_markers; - int crop[4]; - int deinterlace; - int width; // source dimensions - int height; - int output_width; // output dimensions - int output_height; - int anamorphic_width; // anamorphic dimensions - int anamorphic_height; - int keep_ratio; - int grayscale; - int pixel_ratio; - int pixel_aspect_width; - int pixel_aspect_height; - int vcodec; - float vquality; - int vbitrate; - int vrate; - int vrate_base; - int pass; - int h264_level; - int crf; - NSString *x264opts; - - int audio_mixdowns[8]; - int acodec; - int abitrate; - int arate; - int subtitle; - - int mux; - NSString *file; - - // from hb_title_s - NSString *titleName; - int titleIndex; - int titleWidth; - int titleHeight; - - // from hb_subtitle_s - NSString *subtitleLang; } -+ (HBJob*) jobWithLibhbJob: (hb_job_t *) job; -- (id) initWithLibhbJob: (hb_job_t *) job; -- (HBJobGroup *) jobGroup; -- (void) setJobGroup: (HBJobGroup *)aJobGroup; -- (NSMutableAttributedString *) attributedDescriptionWithIcon: (BOOL)withIcon - withTitle: (BOOL)withTitle - withPassName: (BOOL)withPassName - withFormatInfo: (BOOL)withFormatInfo - withDestination: (BOOL)withDestination - withPictureInfo: (BOOL)withPictureInfo - withVideoInfo: (BOOL)withVideoInfo - withx264Info: (BOOL)withx264Info - withAudioInfo: (BOOL)withAudioInfo - withSubtitleInfo: (BOOL)withSubtitleInfo; - -// Attributes used by attributedDescriptionWithIcon::::::::: -+ (NSMutableParagraphStyle *) descriptionParagraphStyle; -+ (NSDictionary *) descriptionDetailAttribute; -+ (NSDictionary *) descriptionDetailBoldAttribute; -+ (NSDictionary *) descriptionTitleAttribute; -+ (NSDictionary *) descriptionShortHeightAttribute; +- (BOOL) isDragging; @end -//------------------------------------------------------------------------------------ -// HBJobGroup is what's referred to in the UI as an 'encode'. A job group contains -// multiple HBJobs, one for each 'pass' of the encode. Whereas libhb keeps a simple -// list of jobs in it's queue, the queue controller presents them to the user as a -// series of encodes and passes (HBJObGroups and HBJobs). -//------------------------------------------------------------------------------------ - -@interface HBJobGroup : NSObject -{ - NSMutableArray *fJobs; // array of HBJob - NSMutableAttributedString *fDescription; - BOOL fNeedsDescription; - float fLastDescriptionHeight; - float fLastDescriptionWidth; - HBQueueJobGroupStatus fStatus; - NSString *fPresetName; -} - -// Creating a job group -+ (HBJobGroup *) jobGroup; - -// Adding jobs -- (void) addJob: (HBJob *)aJob; - -// Querying a job group -- (unsigned int) count; -- (HBJob *) jobAtIndex: (unsigned)index; -- (unsigned int) indexOfJob: (HBJob *)aJob; -- (NSEnumerator *) jobEnumerator; -- (void) setStatus: (HBQueueJobGroupStatus)status; -- (HBQueueJobGroupStatus) status; -- (void) setPresetName: (NSString *)name; -- (NSString *) presetName; -- (NSString *) destinationPath; -- (NSString *) name; - -// Creating a description -- (void) setNeedsDescription: (BOOL)flag; -- (NSMutableAttributedString *) attributedDescription; -- (float) heightOfDescriptionForWidth:(float)width; -- (float) lastDescriptionHeight; -@end -//------------------------------------------------------------------------------------ -@interface HBQueueController : NSObject +@interface HBQueueController : NSWindowController { - hb_handle_t *fHandle; // reference to libhb + hb_handle_t *fQueueEncodeLibhb; // reference to libhb HBController *fHBController; // reference to HBController - NSMutableArray *fJobGroups; // libhb's job list organized in a hierarchy of HBJobGroup and HBJob - HBJobGroup *fCurrentJobGroup; // the HJobGroup currently being processed by libhb - HBJob *fCurrentJob; // the HJob (pass) currently being processed by libhb - int fCurrentJobID; // this is how we track when hbib has started processing a different job. This is the job's sequence_id. - - unsigned int fPendingCount; // Number of various kinds of job groups in fJobGroups. - unsigned int fCompletedCount; // Don't access these directly as they may not always be up-to-date. - unsigned int fCanceledCount; // Use the accessor functions instead. - unsigned int fWorkingCount; + NSMutableArray *fJobGroups; // mirror image of the queue array from controller.mm + + int fEncodingQueueItem; // corresponds to the index of fJobGroups encoding item + int fPendingCount; // Number of various kinds of job groups in fJobGroups. + int fCompletedCount; + int fCanceledCount; + int fWorkingCount; BOOL fJobGroupCountsNeedUpdating; - + BOOL fCurrentJobPaneShown; // NO when fCurrentJobPane has been shifted out of view (see showCurrentJobPane) NSMutableIndexSet *fSavedExpandedItems; // used by save/restoreOutlineViewState to preserve which items are expanded NSMutableIndexSet *fSavedSelectedItems; // used by save/restoreOutlineViewState to preserve which items are selected @@ -218,8 +69,8 @@ BOOL fIsDragging; #endif NSTimer *fAnimationTimer; // animates the icon of the current job in the queue outline view int fAnimationIndex; // used to generate name of image used to animate the current job in the queue outline view - - // +---------------fQueueWindow----------------+ + + // +------------------window-------------------+ // |+-------------fCurrentJobPane-------------+| // || || // || || @@ -235,8 +86,6 @@ BOOL fIsDragging; // || || // |+-----------------------------------------+| // +-------------------------------------------+ - - IBOutlet NSWindow *fQueueWindow; // fCurrentJobPane - visible only when processing a job IBOutlet NSView *fCurrentJobPane; @@ -244,50 +93,58 @@ BOOL fIsDragging; IBOutlet NSTextField *fJobDescTextField; IBOutlet NSProgressIndicator *fProgressBar; IBOutlet NSTextField *fProgressTextField; - + // fQueuePane - always visible; fills entire window when fCurrentJobPane is hidden IBOutlet NSView *fQueuePane; IBOutlet HBQueueOutlineView *fOutlineView; IBOutlet NSTextField *fQueueCountField; + NSArray *fDraggedNodes; + BOOL fIsDragging; #if HB_OUTLINE_METRIC_CONTROLS IBOutlet NSSlider *fIndentation; // debug IBOutlet NSSlider *fSpacing; // debug #endif - + } - (void)setHandle: (hb_handle_t *)handle; - (void)setHBController: (HBController *)controller; -- (void)libhbStateChanged: (hb_state_t &)state; -- (void)libhbWillStop; -// Adding items to the queue -- (void) addJobGroup: (HBJobGroup *) aJobGroup; +- (void)setupToolbar; + +- (void)setQueueArray: (NSMutableArray *)QueueFileArray; +- (id)outlineView:(NSOutlineView *)fOutlineView child:(NSInteger)index ofItem:(id)item; -// Getting the currently processing job group -- (HBJobGroup *) currentJobGroup; -- (HBJob *) currentJob; +- (BOOL)outlineView:(NSOutlineView *)fOutlineView isItemExpandable:(id)item; -// Getting job groups -- (HBJobGroup *) pendingJobGroupWithDestinationPath: (NSString *)path; +- (BOOL)outlineView:(NSOutlineView *)fOutlineView shouldExpandItem:(id)item; -// Getting queue statistics -- (unsigned int) pendingCount; -- (unsigned int) completedCount; -- (unsigned int) canceledCount; -- (unsigned int) workingCount; +- (NSInteger)outlineView:(NSOutlineView *)fOutlineView numberOfChildrenOfItem:(id)item; + +- (id)outlineView:(NSOutlineView *)fOutlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; + +- (void)outlineView:(NSOutlineView *)fOutlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item; + +/* Animate the icon for the current encode */ +- (void) animateWorkingEncodeIconInQueue; +- (void) startAnimatingCurrentWorkingEncodeInQueue; +- (void) stopAnimatingCurrentJobGroupInQueue; +- (void)setQueueStatusString: (NSString *)statusString; - (IBAction)showQueueWindow: (id)sender; -- (IBAction)removeSelectedJobGroups: (id)sender; -- (IBAction)revealSelectedJobGroups: (id)sender; -- (IBAction)cancelCurrentJob: (id)sender; -- (IBAction)toggleStartCancel: (id)sender; -- (IBAction)togglePauseResume: (id)sender; + + +/* control encodes in the window */ +- (IBAction)removeSelectedQueueItem: (id)sender; +- (IBAction)revealSelectedQueueItem: (id)sender; #if HB_OUTLINE_METRIC_CONTROLS - (IBAction)imageSpacingChanged: (id)sender; - (IBAction)indentChanged: (id)sender; #endif -@end + + + +@end