| 1 | /* |
|---|
| 2 | * $Id$ |
|---|
| 3 | * |
|---|
| 4 | * Copyright (C) 2005, 2006 Stephen F. Booth <me@sbooth.org> |
|---|
| 5 | * |
|---|
| 6 | * This program is free software; you can redistribute it and/or modify |
|---|
| 7 | * it under the terms of the GNU General Public License as published by |
|---|
| 8 | * the Free Software Foundation; either version 2 of the License, or |
|---|
| 9 | * (at your option) any later version. |
|---|
| 10 | * |
|---|
| 11 | * This program is distributed in the hope that it will be useful, |
|---|
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 14 | * GNU General Public License for more details. |
|---|
| 15 | * |
|---|
| 16 | * You should have received a copy of the GNU General Public License |
|---|
| 17 | * along with this program; if not, write to the Free Software |
|---|
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|---|
| 19 | */ |
|---|
| 20 | |
|---|
| 21 | #import <Cocoa/Cocoa.h> |
|---|
| 22 | #import "TagArrayControllerDelegateMethods.h" |
|---|
| 23 | #import "AddTagSheetDelegateMethods.h" |
|---|
| 24 | #import "GuessTagsSheetDelegateMethods.h" |
|---|
| 25 | #import "RenameFilesSheetDelegateMethods.h" |
|---|
| 26 | #import "FileSelectionSheetDelegateMethods.h" |
|---|
| 27 | #import "FileArrayController.h" |
|---|
| 28 | #import "TagArrayController.h" |
|---|
| 29 | |
|---|
| 30 | enum { |
|---|
| 31 | kSaveMenuItemTag = 1, |
|---|
| 32 | kRevertMenuItemTag = 2, |
|---|
| 33 | kOpenMenuItemTag = 3, |
|---|
| 34 | kToggleDrawerMenuItemTag = 4, |
|---|
| 35 | kSelectNextMenuItemTag = 5, |
|---|
| 36 | kSelectPreviousMenuItemTag = 6, |
|---|
| 37 | kCloseMenuItemTag = 7, |
|---|
| 38 | kSelectAllFilesMenuItemTag = 8, |
|---|
| 39 | kBasicTabMenuItemTag = 9, |
|---|
| 40 | kAdvancedTabMenuItemTag = 10, |
|---|
| 41 | kTabularTabMenuItemTag = 11, |
|---|
| 42 | kNewTagMenuItemTag = 12, |
|---|
| 43 | kDeleteTagMenuItemTag = 13, |
|---|
| 44 | kGuessTagsMenuItemTag = 14, |
|---|
| 45 | |
|---|
| 46 | kSortByFilenameMenuItemTag = 15, |
|---|
| 47 | kSortByTitleMenuItemTag = 16, |
|---|
| 48 | kSortByArtistMenuItemTag = 17, |
|---|
| 49 | kSortByAlbumMenuItemTag = 18, |
|---|
| 50 | kSortByYearMenuItemTag = 19, |
|---|
| 51 | kSortByGenreMenuItemTag = 20, |
|---|
| 52 | kSortByComposerMenuItemTag = 21, |
|---|
| 53 | kSortByTrackNumberMenuItemTag = 22, |
|---|
| 54 | kSortByDiscNumberMenuItemTag = 23, |
|---|
| 55 | |
|---|
| 56 | kAddTagsFromFileMenuItemTag = 24, |
|---|
| 57 | kRenameFilesMenuItemTag = 25, |
|---|
| 58 | kCopySelectedTagsMenuItemTag = 26 |
|---|
| 59 | }; |
|---|
| 60 | |
|---|
| 61 | enum { |
|---|
| 62 | kBasicTabViewItemIndex = 0, |
|---|
| 63 | kAdvancedTabViewItemIndex = 1, |
|---|
| 64 | kTabularTabViewItemIndex = 2 |
|---|
| 65 | }; |
|---|
| 66 | |
|---|
| 67 | @interface TagEditor : NSWindowController <TagArrayControllerDelegateMethods, AddTagSheetDelegateMethods, GuessTagsSheetDelegateMethods, RenameFilesSheetDelegateMethods, FileSelectionSheetDelegateMethods> |
|---|
| 68 | { |
|---|
| 69 | NSArray *_validKeys; |
|---|
| 70 | NSMutableArray *_files; |
|---|
| 71 | |
|---|
| 72 | IBOutlet FileArrayController *_filesController; |
|---|
| 73 | IBOutlet TagArrayController *_tagsController; |
|---|
| 74 | IBOutlet NSArrayController *_selectedFilesController; |
|---|
| 75 | |
|---|
| 76 | IBOutlet NSDrawer *_filesDrawer; |
|---|
| 77 | IBOutlet NSTableView *_tagsTable; |
|---|
| 78 | IBOutlet NSTableView *_tabularTagsTable; |
|---|
| 79 | IBOutlet NSTabView *_tabView; |
|---|
| 80 | IBOutlet NSPopUpButton *_sortFilesPopUpButton; |
|---|
| 81 | |
|---|
| 82 | IBOutlet NSTextField *_titleTextField; |
|---|
| 83 | IBOutlet NSTextField *_artistTextField; |
|---|
| 84 | IBOutlet NSTextField *_albumTextField; |
|---|
| 85 | IBOutlet NSTextField *_yearTextField; |
|---|
| 86 | IBOutlet NSTextField *_genreTextField; |
|---|
| 87 | IBOutlet NSTextField *_composerTextField; |
|---|
| 88 | IBOutlet NSTextField *_MCNTextField; |
|---|
| 89 | IBOutlet NSTextField *_ISRCTextField; |
|---|
| 90 | IBOutlet NSTextField *_encoderTextField; |
|---|
| 91 | IBOutlet NSTextField *_commentTextField; |
|---|
| 92 | IBOutlet NSTextField *_customTextField; |
|---|
| 93 | IBOutlet NSTextField *_trackNumberTextField; |
|---|
| 94 | IBOutlet NSTextField *_trackTotalTextField; |
|---|
| 95 | IBOutlet NSTextField *_discNumberTextField; |
|---|
| 96 | IBOutlet NSTextField *_discTotalTextField; |
|---|
| 97 | } |
|---|
| 98 | |
|---|
| 99 | + (TagEditor *) sharedEditor; |
|---|
| 100 | |
|---|
| 101 | - (IBAction) selectBasicTab:(id)sender; |
|---|
| 102 | - (IBAction) selectAdvancedTab:(id)sender; |
|---|
| 103 | - (IBAction) selectTabularTab:(id)sender; |
|---|
| 104 | |
|---|
| 105 | - (IBAction) toggleFilesDrawer:(id)sender; |
|---|
| 106 | - (IBAction) openFilesDrawer:(id)sender; |
|---|
| 107 | - (IBAction) closeFilesDrawer:(id)sender; |
|---|
| 108 | |
|---|
| 109 | - (IBAction) openDocument:(id)sender; |
|---|
| 110 | - (IBAction) saveDocument:(id)sender; |
|---|
| 111 | - (IBAction) revertDocumentToSaved:(id)sender; |
|---|
| 112 | - (IBAction) performClose:(id)sender; |
|---|
| 113 | |
|---|
| 114 | - (IBAction) selectNextFile:(id)sender; |
|---|
| 115 | - (IBAction) selectPreviousFile:(id)sender; |
|---|
| 116 | - (IBAction) selectAllFiles:(id)sender; |
|---|
| 117 | - (IBAction) sortFiles:(id)sender; |
|---|
| 118 | |
|---|
| 119 | - (unsigned) countOfFiles; |
|---|
| 120 | - (unsigned) countOfSelectedFiles; |
|---|
| 121 | - (KeyValueTaggedFile *) objectInFilesAtIndex:(unsigned)index; |
|---|
| 122 | |
|---|
| 123 | - (BOOL) addFile:(NSString *)filename; |
|---|
| 124 | - (BOOL) addFile:(NSString *)filename atIndex:(unsigned)index; |
|---|
| 125 | |
|---|
| 126 | - (void) openFilesDrawerIfNeeded; |
|---|
| 127 | |
|---|
| 128 | - (IBAction) newTag:(id)sender; |
|---|
| 129 | - (IBAction) addTagsFromFile:(id)sender; |
|---|
| 130 | - (IBAction) renameFiles:(id)sender; |
|---|
| 131 | - (IBAction) guessTags:(id)sender; |
|---|
| 132 | - (IBAction) copySelectedTags:(id)sender; |
|---|
| 133 | - (IBAction) deleteTag:(id)sender; |
|---|
| 134 | - (IBAction) delete:(id)sender; |
|---|
| 135 | |
|---|
| 136 | - (void) setValue:(NSString *)value forTag:(NSString *)tag; |
|---|
| 137 | - (void) addValue:(NSString *)value forTag:(NSString *)tag; |
|---|
| 138 | - (void) updateTag:(NSString *)tag withValue:(NSString *)currentValue toValue:(NSString *)newValue; |
|---|
| 139 | - (void) renameTag:(NSString *)currentTag withValue:(NSString *)currentValue toTag:(NSString *)newTag; |
|---|
| 140 | |
|---|
| 141 | - (void) guessTagsUsingPattern:(NSString *)pattern; |
|---|
| 142 | - (void) renameFilesUsingPattern:(NSString *)pattern; |
|---|
| 143 | |
|---|
| 144 | - (void) copySelectedTagsToFiles:(NSArray *)files; |
|---|
| 145 | |
|---|
| 146 | - (void) cutSelectedTagsToPasteboard; |
|---|
| 147 | - (void) copySelectedTagsToPasteboard; |
|---|
| 148 | - (void) pasteTagsFromPasteboard; |
|---|
| 149 | |
|---|
| 150 | - (BOOL) applicationShouldTerminate; |
|---|
| 151 | |
|---|
| 152 | - (BOOL) dirty; |
|---|
| 153 | - (BOOL) selectionDirty; |
|---|
| 154 | |
|---|
| 155 | - (NSArray *) genres; |
|---|
| 156 | |
|---|
| 157 | @end |
|---|
| 158 | |
|---|
| 159 | @interface TagEditor (ScriptingAdditions) |
|---|
| 160 | |
|---|
| 161 | - (void) saveFile:(KeyValueTaggedFile *)file; |
|---|
| 162 | - (void) closeFile:(KeyValueTaggedFile *)file saveOptions:(NSSaveOptions)saveOptions; |
|---|
| 163 | |
|---|
| 164 | @end |
|---|