perian / CPFPerianPrefPaneController.h

/* CPFPerianPrefPaneController */

#import <Cocoa/Cocoa.h>
#import <PreferencePanes/NSPreferencePane.h>
#import <Security/Security.h>

#define ComponentInfoPlist @"ComponentInfo.plist"
#define ObsoletesKey @"obsoletes"
#define HumanReadableNameKey @"HumanReadableName"
#define PERIAN_NO_BUNDLE_ID_FORMAT @"org.perian.No.Bundle.ID.%@"

#define ComponentInfoDictionaryKey	@"Components"

#define BundleVersionKey @"CFBundleVersion"
#define BundleIdentifierKey @"CFBundleIdentifier"

#define ComponentNameKey @"Name"
#define ComponentArchiveNameKey @"ArchiveName"
#define ComponentTypeKey @"Type"

typedef enum
	InstallStatusInstalledInWrongLocation = 0,
	InstallStatusNotInstalled = 1,
	InstallStatusOutdatedWithAnotherInWrongLocation = 2,
	InstallStatusOutdated = 3,
	InstallStatusInstalledInBothLocations = 4,
	InstallStatusInstalled = 5
} InstallStatus;

InstallStatus inline currentInstallStatus(InstallStatus status)
	return (status | 1);

BOOL inline isWrongLocationInstalled(InstallStatus status)
	return ((status & 1) == 0);

InstallStatus inline setWrongLocationInstalled(InstallStatus status)
	return (status & ~1);

typedef enum
} ComponentType;

@interface CPFPerianPrefPaneController : NSPreferencePane
	//General Pane
	IBOutlet NSButton					*button_install;
	IBOutlet NSTextField				*textField_installStatus;
	IBOutlet NSProgressIndicator		*progress_install;
	IBOutlet NSTextField				*textField_currentVersion;
	IBOutlet NSButton					*button_updateCheck;
	IBOutlet NSProgressIndicator		*progress_updateCheck;
	IBOutlet NSButton					*button_autoUpdateCheck;
	//AC3 Settings in General Pane
	IBOutlet NSPopUpButton				*popup_ac3DynamicRangeType;
	IBOutlet NSPopUpButton				*popup_outputMode;
	IBOutlet NSWindow					*window_dynRangeSheet;
    IBOutlet NSTextField                *textField_ac3DynamicRangeValue;
    IBOutlet NSSlider                   *slider_ac3DynamicRangeSlider;
	IBOutlet NSButton					*button_loadExternalSubtitles;
	IBOutlet NSTextView					*textView_about;
	IBOutlet NSButton					*button_website;
	IBOutlet NSButton					*button_donate;
	IBOutlet NSButton					*button_forum;
	InstallStatus						installStatus; //This is only marked as installed if everything is installed
	BOOL								userInstalled;
	AuthorizationRef					auth;
	NSMutableString						*errorString;
	NSArray								*componentReplacementInfo;
	NSURL								*perianForumURL;
	NSURL								*perianDonateURL;
	NSURL								*perianWebSiteURL;
	CFStringRef							perianAppID;
	CFStringRef							a52AppID;
	float								nextDynValue;
//General Pane
- (IBAction)installUninstall:(id)sender;
- (IBAction)updateCheck:(id)sender;
- (IBAction)setAutoUpdateCheck:(id)sender;
- (IBAction)setLoadExternalSubtitles:(id)sender;

//AC3 Settings
- (IBAction)setAC3DynamicRangePopup:(id)sender;
- (IBAction)set2ChannelModePopup:(id)sender;

- (IBAction)setAC3DynamicRangeValue:(id)sender;
- (IBAction)setAC3DynamicRangeSlider:(id)sender;
- (IBAction)cancelDynRangeSheet:(id)sender;
- (IBAction)saveDynRangeSheet:(id)sender;

//Component List
- (NSString *)checkComponentStatusByBundleIdentifier:(NSString *)bundleID;

- (IBAction)launchWebsite:(id)sender;
- (IBAction)launchDonate:(id)sender;
- (IBAction)launchForum:(id)sender;

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.