diff --git a/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.pbxproj b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4745772 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.pbxproj @@ -0,0 +1,304 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + C39B4D0E1683559F002F6691 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C39B4D0D1683559F002F6691 /* Cocoa.framework */; }; + C39B4D181683559F002F6691 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C39B4D161683559F002F6691 /* InfoPlist.strings */; }; + C39B4D1A1683559F002F6691 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C39B4D191683559F002F6691 /* main.m */; }; + C39B4D1E168355A0002F6691 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = C39B4D1C168355A0002F6691 /* Credits.rtf */; }; + C39B4D21168355A0002F6691 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C39B4D20168355A0002F6691 /* AppDelegate.m */; }; + C39B4D24168355A1002F6691 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C39B4D22168355A1002F6691 /* MainMenu.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + C39B4D091683559F002F6691 /* Just Another Simple Renamer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Just Another Simple Renamer.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + C39B4D0D1683559F002F6691 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + C39B4D101683559F002F6691 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + C39B4D111683559F002F6691 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + C39B4D121683559F002F6691 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + C39B4D151683559F002F6691 /* Just Another Simple Renamer-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Just Another Simple Renamer-Info.plist"; sourceTree = ""; }; + C39B4D171683559F002F6691 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + C39B4D191683559F002F6691 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + C39B4D1B1683559F002F6691 /* Just Another Simple Renamer-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Just Another Simple Renamer-Prefix.pch"; sourceTree = ""; }; + C39B4D1D168355A0002F6691 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + C39B4D1F168355A0002F6691 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + C39B4D20168355A0002F6691 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + C39B4D23168355A1002F6691 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C39B4D061683559F002F6691 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C39B4D0E1683559F002F6691 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C39B4CFE1683559E002F6691 = { + isa = PBXGroup; + children = ( + C39B4D131683559F002F6691 /* Just Another Simple Renamer */, + C39B4D0C1683559F002F6691 /* Frameworks */, + C39B4D0A1683559F002F6691 /* Products */, + ); + sourceTree = ""; + }; + C39B4D0A1683559F002F6691 /* Products */ = { + isa = PBXGroup; + children = ( + C39B4D091683559F002F6691 /* Just Another Simple Renamer.app */, + ); + name = Products; + sourceTree = ""; + }; + C39B4D0C1683559F002F6691 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C39B4D0D1683559F002F6691 /* Cocoa.framework */, + C39B4D0F1683559F002F6691 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + C39B4D0F1683559F002F6691 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + C39B4D101683559F002F6691 /* AppKit.framework */, + C39B4D111683559F002F6691 /* CoreData.framework */, + C39B4D121683559F002F6691 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + C39B4D131683559F002F6691 /* Just Another Simple Renamer */ = { + isa = PBXGroup; + children = ( + C39B4D1F168355A0002F6691 /* AppDelegate.h */, + C39B4D20168355A0002F6691 /* AppDelegate.m */, + C39B4D22168355A1002F6691 /* MainMenu.xib */, + C39B4D141683559F002F6691 /* Supporting Files */, + ); + path = "Just Another Simple Renamer"; + sourceTree = ""; + }; + C39B4D141683559F002F6691 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + C39B4D151683559F002F6691 /* Just Another Simple Renamer-Info.plist */, + C39B4D161683559F002F6691 /* InfoPlist.strings */, + C39B4D191683559F002F6691 /* main.m */, + C39B4D1B1683559F002F6691 /* Just Another Simple Renamer-Prefix.pch */, + C39B4D1C168355A0002F6691 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C39B4D081683559F002F6691 /* Just Another Simple Renamer */ = { + isa = PBXNativeTarget; + buildConfigurationList = C39B4D27168355A1002F6691 /* Build configuration list for PBXNativeTarget "Just Another Simple Renamer" */; + buildPhases = ( + C39B4D051683559F002F6691 /* Sources */, + C39B4D061683559F002F6691 /* Frameworks */, + C39B4D071683559F002F6691 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Just Another Simple Renamer"; + productName = "Just Another Simple Renamer"; + productReference = C39B4D091683559F002F6691 /* Just Another Simple Renamer.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C39B4D001683559E002F6691 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = Nope; + }; + buildConfigurationList = C39B4D031683559E002F6691 /* Build configuration list for PBXProject "Just Another Simple Renamer" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = C39B4CFE1683559E002F6691; + productRefGroup = C39B4D0A1683559F002F6691 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C39B4D081683559F002F6691 /* Just Another Simple Renamer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C39B4D071683559F002F6691 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C39B4D181683559F002F6691 /* InfoPlist.strings in Resources */, + C39B4D1E168355A0002F6691 /* Credits.rtf in Resources */, + C39B4D24168355A1002F6691 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C39B4D051683559F002F6691 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C39B4D1A1683559F002F6691 /* main.m in Sources */, + C39B4D21168355A0002F6691 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + C39B4D161683559F002F6691 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + C39B4D171683559F002F6691 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + C39B4D1C168355A0002F6691 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + C39B4D1D168355A0002F6691 /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + C39B4D22168355A1002F6691 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + C39B4D23168355A1002F6691 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C39B4D25168355A1002F6691 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + C39B4D26168355A1002F6691 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + SDKROOT = macosx; + }; + name = Release; + }; + C39B4D28168355A1002F6691 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Just Another Simple Renamer/Just Another Simple Renamer-Prefix.pch"; + INFOPLIST_FILE = "Just Another Simple Renamer/Just Another Simple Renamer-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + C39B4D29168355A1002F6691 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Just Another Simple Renamer/Just Another Simple Renamer-Prefix.pch"; + INFOPLIST_FILE = "Just Another Simple Renamer/Just Another Simple Renamer-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C39B4D031683559E002F6691 /* Build configuration list for PBXProject "Just Another Simple Renamer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C39B4D25168355A1002F6691 /* Debug */, + C39B4D26168355A1002F6691 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C39B4D27168355A1002F6691 /* Build configuration list for PBXNativeTarget "Just Another Simple Renamer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C39B4D28168355A1002F6691 /* Debug */, + C39B4D29168355A1002F6691 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = C39B4D001683559E002F6691 /* Project object */; +} diff --git a/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..cb93620 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..87d5584 Binary files /dev/null and b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/WorkspaceSettings.xcsettings b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..bfffcfe --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/project.xcworkspace/xcuserdata/administrator.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ + + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..05301bc --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/Just Another Simple Renamer.xcscheme b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/Just Another Simple Renamer.xcscheme new file mode 100644 index 0000000..be1f390 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/Just Another Simple Renamer.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/xcschememanagement.plist b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..dc05137 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer.xcodeproj/xcuserdata/administrator.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Just Another Simple Renamer.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + C39B4D081683559F002F6691 + + primary + + + + + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/AppDelegate.h b/Just Another Simple Renamer/Just Another Simple Renamer/AppDelegate.h new file mode 100644 index 0000000..74570cb --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/AppDelegate.h @@ -0,0 +1,28 @@ +// +// AppDelegate.h +// Just Another Simple Renamer +// +// Created by Администратор on 12/20/12. +// Copyright (c) 2012 Nope. All rights reserved. +// + +#import + +@interface AppDelegate : NSObject { + NSMutableArray *ResultFileNames, *SourceFilesArray; +} + +@property (assign) IBOutlet NSWindow *window; + +@property (weak) IBOutlet NSTextField *PrefixName; +@property (weak) IBOutlet NSTextField *CounterMask; +@property (weak) IBOutlet NSTextField *CounterStartFrom; +@property (weak) IBOutlet NSTableView *SourceTableView; +@property (weak) IBOutlet NSTableView *ResultTableView; + +- (IBAction)addFiles:(id)sender; +- (IBAction)addFolder:(id)sender; +- (IBAction)clearList:(id)sender; +- (IBAction)goRename:(id)sender; + +@end diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/AppDelegate.m b/Just Another Simple Renamer/Just Another Simple Renamer/AppDelegate.m new file mode 100644 index 0000000..2069321 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/AppDelegate.m @@ -0,0 +1,100 @@ +// +// AppDelegate.m +// Just Another Simple Renamer +// +// Created by Администратор on 12/20/12. +// Copyright (c) 2012 Nope. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + ResultFileNames = [NSMutableArray array]; + SourceFilesArray = [NSMutableArray array]; + // Insert code here to initialize your application +} + +- (IBAction)addFiles:(id)sender { + NSOpenPanel* openDialog = [NSOpenPanel openPanel]; + [openDialog setAllowsMultipleSelection:YES]; + if ([openDialog runModal] == NSOKButton) { + [SourceFilesArray addObjectsFromArray:[openDialog URLs]]; + } + [_SourceTableView reloadData]; +} + +- (IBAction)addFolder:(id)sender { + NSOpenPanel* openDialog = [NSOpenPanel openPanel]; + NSError *error = nil; + NSArray *URLList; + [openDialog setCanChooseFiles:NO]; + [openDialog setCanChooseDirectories:YES]; + if ([openDialog runModal] == NSOKButton) { + //Получаем список URL'ов + URLList = [[NSFileManager defaultManager] + contentsOfDirectoryAtURL:[[openDialog URLs]objectAtIndex:0] + includingPropertiesForKeys:[NSArray array] + options:(NSDirectoryEnumerationSkipsHiddenFiles) + error:&error]; + //Добавляем только файлы, папки не берем + for (NSURL *fileURL in URLList) { + NSNumber *isDirectory = nil; + [fileURL getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil]; + if (![isDirectory boolValue]) { + [SourceFilesArray addObject:fileURL]; + } + } + } + [_SourceTableView reloadData]; +} + +- (IBAction)clearList:(id)sender { + [SourceFilesArray removeAllObjects]; + [_SourceTableView reloadData]; +} + +- (IBAction)goRename:(id)sender { + if ([SourceFilesArray count] >0) { + [ResultFileNames removeAllObjects]; //Очищаем массив каждый раз, т.к. таблица целевых имен должна динамически реагировать на изменения в полях ввода + for (NSInteger i = [_CounterStartFrom integerValue]; [ResultFileNames count] < [SourceFilesArray count]; i++) { + NSString *str = [NSString stringWithString:[_PrefixName stringValue]]; + str = [str stringByAppendingString:[NSString stringWithFormat:[_CounterMask stringValue], i]]; + [ResultFileNames addObject:str]; + } + } + + [_ResultTableView reloadData]; +} + +-(NSInteger)numberOfRowsInTableView:(NSTableView*) SomeTableView { + if (SomeTableView == _SourceTableView) { + return [SourceFilesArray count]; + } + else if (SomeTableView == _ResultTableView) { + return [ResultFileNames count]; + } + else { + NSLog(@"numberOfRowsInTableView returning 0"); + return 0; + } +} + +-(id)tableView:(NSTableView*) SomeTableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { + if (SomeTableView == _SourceTableView) { + NSString *v = [[[SourceFilesArray objectAtIndex:row] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + return v; + } + else if (SomeTableView == _ResultTableView) { + return [ResultFileNames objectAtIndex:row]; + } + else { + NSLog(@"objectValueForTableColumn returning 0"); + return 0; + } +} + +@end diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/Just Another Simple Renamer-Info.plist b/Just Another Simple Renamer/Just Another Simple Renamer/Just Another Simple Renamer-Info.plist new file mode 100644 index 0000000..f2722ee --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/Just Another Simple Renamer-Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + Nope.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.business + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 Nope. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/Just Another Simple Renamer-Prefix.pch b/Just Another Simple Renamer/Just Another Simple Renamer/Just Another Simple Renamer-Prefix.pch new file mode 100644 index 0000000..120293a --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/Just Another Simple Renamer-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'Just Another Simple Renamer' target in the 'Just Another Simple Renamer' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/SourceTableViewController.h b/Just Another Simple Renamer/Just Another Simple Renamer/SourceTableViewController.h new file mode 100644 index 0000000..31cc312 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/SourceTableViewController.h @@ -0,0 +1,13 @@ +// +// SourceTableViewController.h +// Just Another Simple Renamer +// +// Created by Администратор on 12/24/12. +// Copyright (c) 2012 Nope. All rights reserved. +// + +#import + +@interface SourceTableViewController : NSObject + +@end diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/SourceTableViewController.m b/Just Another Simple Renamer/Just Another Simple Renamer/SourceTableViewController.m new file mode 100644 index 0000000..b26d7f5 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/SourceTableViewController.m @@ -0,0 +1,13 @@ +// +// SourceTableViewController.m +// Just Another Simple Renamer +// +// Created by Администратор on 12/24/12. +// Copyright (c) 2012 Nope. All rights reserved. +// + +#import "SourceTableViewController.h" + +@implementation SourceTableViewController + +@end diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/Credits.rtf b/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/InfoPlist.strings b/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/MainMenu.xib b/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/MainMenu.xib new file mode 100644 index 0000000..e97b9a8 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/en.lproj/MainMenu.xib @@ -0,0 +1,4974 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSButton + NSButtonCell + NSCustomObject + NSMenu + NSMenuItem + NSScrollView + NSScroller + NSTableColumn + NSTableHeaderView + NSTableView + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + Just Another Simple Renamer + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Just Another Simple Renamer + + + + About Just Another Simple Renamer + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Just Another Simple Renamer + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Just Another Simple Renamer + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save… + s + 1048576 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find and Replace… + f + 1572864 + 2147483647 + + + 12 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + + + Font + + 2147483647 + + + submenuAction: + + Font + + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligatures + + 2147483647 + + + submenuAction: + + Ligatures + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + Just Another Simple Renamer Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 15 + 2 + {{335, 390}, {757, 439}} + 1954021376 + Just Another Simple Renamer + NSWindow + + + + + 256 + + + + 268 + {{14, 391}, {148, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Добавить файлы + + LucidaGrande + 13 + 1044 + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{162, 391}, {143, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Добавить папку + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{305, 391}, {149, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Очистить список + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + + + + 2304 + + + + 256 + {551, 313} + + + + _NS:13 + YES + NO + YES + + + 256 + {551, 17} + + + + _NS:16 + + + + + -2147483392 + {{224, 0}, {16, 17}} + + + + _NS:19 + + + + 546.0078125 + 40 + 1000 + + 75497536 + 2048 + Путь + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 338690112 + 1024 + Text Cell + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + 3 + YES + + + + 3 + 2 + + 3 + MQA + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + -702545920 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {551, 313}} + + + + _NS:11 + + + 4 + + + + -2147483392 + {{224, 17}, {15, 102}} + + + + _NS:58 + NO + + _doScroller: + 0.95207667731629397 + + + + -2147483392 + {{1, 315}, {551, 15}} + + + + _NS:60 + NO + 1 + + _doScroller: + 1 + 0.9963833634719711 + + + + 2304 + + + + {{1, 0}, {551, 17}} + + + + _NS:15 + + + 4 + + + + {{20, 47}, {553, 331}} + + + + _NS:9 + 133682 + + + + + + QSAAAEEgAABBmAAAQZgAAA + 0.25 + 4 + 1 + + + + 268 + + + + 2304 + + + + 256 + {155, 313} + + + + _NS:13 + YES + NO + YES + + + 256 + {155, 17} + + + + _NS:16 + + + + + -2147483392 + {{224, 0}, {16, 17}} + + + + _NS:19 + + + + 152 + 40 + 1000 + + 75497536 + 2048 + Новое имя файла + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337641536 + 2048 + Text Cell + + + + + + 3 + YES + + + + 3 + 2 + + + 17 + -700448768 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {155, 313}} + + + + _NS:11 + + + 4 + + + + -2147483392 + {{224, 17}, {15, 102}} + + + + _NS:58 + NO + + _doScroller: + 37 + 0.1947367936372757 + + + + -2147483392 + {{1, 119}, {223, 15}} + + + + _NS:60 + NO + 1 + + _doScroller: + 0.57142859697341919 + + + + 2304 + + + + {{1, 0}, {155, 17}} + + + + _NS:15 + + + 4 + + + + {{580, 47}, {157, 331}} + + + + _NS:9 + 133682 + + + + + + QSAAAEEgAABBmAAAQZgAAA + 0.25 + 4 + 1 + + + + 268 + {{17, 20}, {62, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Префикс + + _NS:1535 + + + 6 + System + controlColor + + + + + NO + + + + 268 + {{84, 17}, {96, 22}} + + + + _NS:9 + YES + + -1804599231 + 4195328 + + + IMG_ + _NS:9 + + YES + + 6 + System + textBackgroundColor + + + + 6 + System + textColor + + + + NO + + + + 268 + {{185, 20}, {105, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Маска счетчика + + _NS:1535 + + + + + NO + + + + 268 + {{295, 17}, {96, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + %04d + _NS:9 + + YES + + + + NO + + + + 268 + {{396, 20}, {81, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Начиная с... + + _NS:1535 + + + + + NO + + + + 268 + {{482, 17}, {96, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + 1 + _NS:9 + + YES + + + + NO + + + + 268 + {{681, 9}, {62, 32}} + + + _NS:9 + YES + + 67108864 + 134217728 + Go! + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + {757, 439} + + + + + {{0, 0}, {1280, 1002}} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSFontManager + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + saveDocument: + + + + 362 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + performFindPanelAction: + + + + 535 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + window + + + + 532 + + + + addFiles: + + + + 651 + + + + addFolder: + + + + 652 + + + + clearList: + + + + 653 + + + + goRename: + + + + 654 + + + + PrefixName + + + + 655 + + + + CounterMask + + + + 656 + + + + CounterStartFrom + + + + 657 + + + + SourceTableView + + + + 669 + + + + ResultTableView + + + + 670 + + + + dataSource + + + + 664 + + + + delegate + + + + 665 + + + + dataSource + + + + 666 + + + + delegate + + + + 667 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + 75 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 580 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 12 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 12 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 184 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 20 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + + 377 + + + + + + + + 388 + + + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + + + + 451 + + + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 496 + + + + + + + + 497 + + + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 534 + + + + + 550 + + + + + + + + 551 + + + + + 554 + + + + + 555 + + + + + 556 + + + + + + + + 557 + + + + + 558 + + + + + 559 + + + + + 560 + + + + + + + + 561 + + + + + 562 + + + + + 563 + + + + + 564 + + + + + + + + + + + 565 + + + + + + + + 566 + + + + + 567 + + + + + 568 + + + + + 569 + + + + + + + + 572 + + + + + 580 + + + + + 583 + + + + + + + + + + + 584 + + + + + + + + 585 + + + + + 586 + + + + + 587 + + + + + 588 + + + + + + + + 591 + + + + + 593 + + + + + 596 + + + + + 607 + + + + + + + + 608 + + + + + 612 + + + + + 615 + + + + + 618 + + + + + 620 + + + + + 621 + + + + + + 7 + 0 + + 0 + 1 + + 96 + + 1000 + + 3 + 9 + 1 + + + + + + 622 + + + + + 623 + + + + + 624 + + + + + 627 + + + + + 628 + + + + + + + + 629 + + + + + 630 + + + + + 631 + + + + + 632 + + + + + 7 + 0 + + 0 + 1 + + 96 + + 1000 + + 3 + 9 + 1 + + + + + + + 633 + + + + + 634 + + + + + 635 + + + + + 636 + + + + + 637 + + + + + + + + 638 + + + + + 639 + + + + + 640 + + + + + 641 + + + + + + 7 + 0 + + 0 + 1 + + 96 + + 1000 + + 3 + 9 + 1 + + + + + + 642 + + + + + 643 + + + + + 644 + + + + + 645 + + + + + 646 + + + + + + + + 647 + + + + + 648 + + + + + 649 + + + + + 650 + + + + + 662 + + + + + 663 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + ResultTableView + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 672 + + + + + AppDelegate + NSObject + + id + id + id + id + + + + addFiles: + id + + + addFolder: + id + + + clearList: + id + + + goRename: + id + + + + NSTextField + NSTextField + NSTextField + NSTableView + NSTableView + NSWindow + + + + CounterMask + NSTextField + + + CounterStartFrom + NSTextField + + + PrefixName + NSTextField + + + ResultTableView + NSTableView + + + SourceTableView + NSTableView + + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/Just Another Simple Renamer/Just Another Simple Renamer/main.m b/Just Another Simple Renamer/Just Another Simple Renamer/main.m new file mode 100644 index 0000000..65cf4e4 --- /dev/null +++ b/Just Another Simple Renamer/Just Another Simple Renamer/main.m @@ -0,0 +1,14 @@ +// +// main.m +// Just Another Simple Renamer +// +// Created by Администратор on 12/20/12. +// Copyright (c) 2012 Nope. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/Just Another Simple Renamer/SourceTableViewController.h b/Just Another Simple Renamer/SourceTableViewController.h new file mode 100644 index 0000000..31cc312 --- /dev/null +++ b/Just Another Simple Renamer/SourceTableViewController.h @@ -0,0 +1,13 @@ +// +// SourceTableViewController.h +// Just Another Simple Renamer +// +// Created by Администратор on 12/24/12. +// Copyright (c) 2012 Nope. All rights reserved. +// + +#import + +@interface SourceTableViewController : NSObject + +@end diff --git a/Just Another Simple Renamer/SourceTableViewController.m b/Just Another Simple Renamer/SourceTableViewController.m new file mode 100644 index 0000000..b26d7f5 --- /dev/null +++ b/Just Another Simple Renamer/SourceTableViewController.m @@ -0,0 +1,13 @@ +// +// SourceTableViewController.m +// Just Another Simple Renamer +// +// Created by Администратор on 12/24/12. +// Copyright (c) 2012 Nope. All rights reserved. +// + +#import "SourceTableViewController.h" + +@implementation SourceTableViewController + +@end diff --git a/README.md b/README.md index 58d96e8..511c260 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,62 @@ -osx-project-3 -============= -OS X Development Course, Project 3 \ No newline at end of file +#Update 4/01/13 +* При добавлении папки теперь в список попадает перечень файлов внутри нее, исключая скрытые файлы и папки. +* По нажатию на кнопку "Go!" генерируется список новых имен для файлов. В дальнейшем список будет генерироваться автоматически при любых изменениях в полях ввода. +* Имена файлов на русском языке теперь отображаются корректно. + + +#Текущее состояние +Программа толком еще не работает, и переименовывать файлы еще не умеет. +Все, что пока она может - это добавлять в список файлы и папки. + +Больше всего времени потратил на понимание того, как работать с двумя TableView одновременно. Был уверен, что не обязательно делать outlet, если из таблицы не нужно получать данные. Это до сих пор для меня вопрос, но без создания outlet'ов не удалось ничего сделать. Сейчас реализация тоже не самая правильная. + +Также, массу времени потратил на понимание того, как выделить имя файла из URL, потом открыл для себя NSFileManager, но было поздно. сдаю, как есть. + +Что предстоит исправить в программе: + +* необходимо переписать numberOfRowsInTableView: и tableView:objectValueForTableColumn:row: - вынести в отдельные файлы, и сделать отдельный контроллер для каждого TableView; +* возможно, создать отдельный класс для хранения имен файлов, в котором будут храниться распарсенные из URL имена файлов - отдельно путь, отдельно - имя и отдельно - расширение; +* возможно, вынести обновление TableView отдельно, чтоб TableView обновлялись при любом изменении массивов; +* переписать получение списка файлов из директории - отбрасывая директории из результатов, или обрабатывая вложенные директории, как вариант, и заполнить все параметры вызова; +* сделать нормальный вывод имен файлов в таблицах, т.к. сейчас он нечитаем. + +Это пока все, что я вижу. + +#Задача +Иногда возникает задача группового переименования большого количества файлов по определенной формуле. Существует ряд программ, занимающихся переименованием файлов, но большая часть их не бесплатны, или сложны в освоении. Эта программа призвана решить задачу переименования файлов максимально просто. + +#Описание +Программа позволяет задать префикс имени файла, и добавить к нему счетчик. При необходимости, также, можно сменить расширение файлов. Такой алгоритм переименования будет интересен, в первую очередь, фотографам, у которых большое количество файлов с именами вида IMG_0001.jpg (двое уже ждут такую). + +#Пример использования +Разные фотоаппараты, в зависимости от настройки, именуют файлы по-разному. Часто бывает такая ситуация, когда во время съемки фотоаппарат создает на карте памяти новую папку, и начинает нумерацию файлов с нуля. Если все файлы этой съемки скопировать в одну папку, то порядок их следования не будет соответствовать хронологии. Для того, чтоб порядок следования файлов соответствовал порядку съемки, их необходимо упорядочить. Т.е. переименовать. Данная простая утилита позволяет переименовать файлы в нужном порядке за 3 простых действия: + + * выбрать файлы для переименования; + * задать префикс и счетчик; + * нажать кнопку "Go". + +#Описание поведения +По нажатию на кнопку "Добавить файлы" открывается окно выбора файлов (NSOpenPanel). Должна быть возможность выбора нескольких файлов. Возвращаемые массив копируем в отдельный mutable array (или добавляем - тут подумать, какую коллекцию лучше использовать) и отображаем в левой таблице. Необходимо учесть, чтоб один и тот же файл не попадал дважды в список. + +По нажатию на кнопку "Добавить папку" необходимо получить перечень файлов, дальше все аналогично предыдущему пункту. + +По нажатию на кнопку "Очистить список" - очистить mutable array и таблицы. + +В поле "Префикс" указываем любой допустимый префикс. + +В поле "Маска счетчика" указываем маску - по сути, число разрядов. (подумать, не лучше ли заменить на просто число разрядов) + +В поле "Начиная с" указываем стартовое число счетчика. Этим числом потом проинициализируем счетчик в цикле. +По мере ввода новые имена должны отображаться в правой таблице. + +(подумать, на каком этапе контролировать входные значения в полях - по мере ввода, или по нажатию на Go!) + +По нажатию на кнопку "Go!" запускается процедура переименования файлов. Общая идея в том, чтоб при помощи NSFileManager movePath:toPath:handler: присвоить файлам новые имена. Это будет реализовано либо в один цикл, либо в два (отдельно для генерации полных имен с путем и для перемещения). +По факту переименования записи из обеих таблиц должны исчезать. Когда таблицы очистятся - переименование завершено. + +Идеи, которые необходимо проработать: + +* сортировка файлов перед переименованием по различным признакам; +* удаление отдельных файлов или групп файлов из списка перед переименованием; +* указание другого пути для сохранения переименованных файлов. \ No newline at end of file