diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..e3872e3 Binary files /dev/null and b/.DS_Store differ diff --git a/PodcastCutter/.DS_Store b/PodcastCutter/.DS_Store new file mode 100644 index 0000000..8bc78ab Binary files /dev/null and b/PodcastCutter/.DS_Store differ diff --git a/PodcastCutter/PodcastCutter.xcodeproj/project.pbxproj b/PodcastCutter/PodcastCutter.xcodeproj/project.pbxproj new file mode 100644 index 0000000..46bdfe3 --- /dev/null +++ b/PodcastCutter/PodcastCutter.xcodeproj/project.pbxproj @@ -0,0 +1,485 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 7D0973C2166E739700512545 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D0973C1166E739700512545 /* Cocoa.framework */; }; + 7D0973CC166E739700512545 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D0973CA166E739700512545 /* InfoPlist.strings */; }; + 7D0973CE166E739700512545 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0973CD166E739700512545 /* main.m */; }; + 7D0973D2166E739700512545 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 7D0973D0166E739700512545 /* Credits.rtf */; }; + 7D0973D5166E739700512545 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0973D4166E739700512545 /* AppDelegate.m */; }; + 7D0973D8166E739700512545 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D0973D6166E739700512545 /* MainMenu.xib */; }; + 7D0973E0166E739700512545 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D0973DF166E739700512545 /* SenTestingKit.framework */; }; + 7D0973E1166E739700512545 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D0973C1166E739700512545 /* Cocoa.framework */; }; + 7D0973E9166E739700512545 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D0973E7166E739700512545 /* InfoPlist.strings */; }; + 7D0973EC166E739700512545 /* PodcastCutterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0973EB166E739700512545 /* PodcastCutterTests.m */; }; + 7D0973F6166E808E00512545 /* Readme in Resources */ = {isa = PBXBuildFile; fileRef = 7D0973F5166E808E00512545 /* Readme */; }; + 7D5334001672952500590405 /* CueParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D5333FF1672952500590405 /* CueParser.m */; }; + 7DD2941B169870C900FDFCB3 /* TableViewContraller.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DD2941A169870C900FDFCB3 /* TableViewContraller.m */; }; + 7DD2941F1698815B00FDFCB3 /* Mp3Arrays.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DD2941E1698815B00FDFCB3 /* Mp3Arrays.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7D0973E2166E739700512545 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7D0973B4166E739700512545 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7D0973BC166E739700512545; + remoteInfo = PodcastCutter; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 7D0973BD166E739700512545 /* PodcastCutter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PodcastCutter.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7D0973C1166E739700512545 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 7D0973C4166E739700512545 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 7D0973C5166E739700512545 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 7D0973C6166E739700512545 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 7D0973C9166E739700512545 /* PodcastCutter-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PodcastCutter-Info.plist"; sourceTree = ""; }; + 7D0973CB166E739700512545 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 7D0973CD166E739700512545 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 7D0973CF166E739700512545 /* PodcastCutter-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PodcastCutter-Prefix.pch"; sourceTree = ""; }; + 7D0973D1166E739700512545 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + 7D0973D3166E739700512545 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 7D0973D4166E739700512545 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 7D0973D7166E739700512545 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + 7D0973DE166E739700512545 /* PodcastCutterTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PodcastCutterTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + 7D0973DF166E739700512545 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 7D0973E6166E739700512545 /* PodcastCutterTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PodcastCutterTests-Info.plist"; sourceTree = ""; }; + 7D0973E8166E739700512545 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 7D0973EA166E739700512545 /* PodcastCutterTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PodcastCutterTests.h; sourceTree = ""; }; + 7D0973EB166E739700512545 /* PodcastCutterTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PodcastCutterTests.m; sourceTree = ""; }; + 7D0973F5166E808E00512545 /* Readme */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Readme; path = PodcastCutterTests/Readme; sourceTree = SOURCE_ROOT; }; + 7D5333FE1672952500590405 /* CueParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CueParser.h; sourceTree = ""; }; + 7D5333FF1672952500590405 /* CueParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CueParser.m; sourceTree = ""; }; + 7DD29419169870C900FDFCB3 /* TableViewContraller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewContraller.h; sourceTree = ""; }; + 7DD2941A169870C900FDFCB3 /* TableViewContraller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewContraller.m; sourceTree = ""; }; + 7DD2941D1698815B00FDFCB3 /* Mp3Arrays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Mp3Arrays.h; sourceTree = ""; }; + 7DD2941E1698815B00FDFCB3 /* Mp3Arrays.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Mp3Arrays.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7D0973BA166E739700512545 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D0973C2166E739700512545 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7D0973DA166E739700512545 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D0973E0166E739700512545 /* SenTestingKit.framework in Frameworks */, + 7D0973E1166E739700512545 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7D0973B2166E739700512545 = { + isa = PBXGroup; + children = ( + 7D0973C7166E739700512545 /* PodcastCutter */, + 7D0973E4166E739700512545 /* PodcastCutterTests */, + 7D0973C0166E739700512545 /* Frameworks */, + 7D0973BE166E739700512545 /* Products */, + ); + sourceTree = ""; + }; + 7D0973BE166E739700512545 /* Products */ = { + isa = PBXGroup; + children = ( + 7D0973BD166E739700512545 /* PodcastCutter.app */, + 7D0973DE166E739700512545 /* PodcastCutterTests.octest */, + ); + name = Products; + sourceTree = ""; + }; + 7D0973C0166E739700512545 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7D0973C1166E739700512545 /* Cocoa.framework */, + 7D0973DF166E739700512545 /* SenTestingKit.framework */, + 7D0973C3166E739700512545 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7D0973C3166E739700512545 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 7D0973C4166E739700512545 /* AppKit.framework */, + 7D0973C5166E739700512545 /* CoreData.framework */, + 7D0973C6166E739700512545 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 7D0973C7166E739700512545 /* PodcastCutter */ = { + isa = PBXGroup; + children = ( + 7D0973F5166E808E00512545 /* Readme */, + 7D0973D3166E739700512545 /* AppDelegate.h */, + 7D0973D4166E739700512545 /* AppDelegate.m */, + 7DD29419169870C900FDFCB3 /* TableViewContraller.h */, + 7DD2941D1698815B00FDFCB3 /* Mp3Arrays.h */, + 7DD2941E1698815B00FDFCB3 /* Mp3Arrays.m */, + 7DD2941A169870C900FDFCB3 /* TableViewContraller.m */, + 7D5333FE1672952500590405 /* CueParser.h */, + 7D5333FF1672952500590405 /* CueParser.m */, + 7D0973D6166E739700512545 /* MainMenu.xib */, + 7D0973C8166E739700512545 /* Supporting Files */, + ); + path = PodcastCutter; + sourceTree = ""; + }; + 7D0973C8166E739700512545 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 7D0973C9166E739700512545 /* PodcastCutter-Info.plist */, + 7D0973CA166E739700512545 /* InfoPlist.strings */, + 7D0973CD166E739700512545 /* main.m */, + 7D0973CF166E739700512545 /* PodcastCutter-Prefix.pch */, + 7D0973D0166E739700512545 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 7D0973E4166E739700512545 /* PodcastCutterTests */ = { + isa = PBXGroup; + children = ( + 7D0973EA166E739700512545 /* PodcastCutterTests.h */, + 7D0973EB166E739700512545 /* PodcastCutterTests.m */, + 7D0973E5166E739700512545 /* Supporting Files */, + ); + path = PodcastCutterTests; + sourceTree = ""; + }; + 7D0973E5166E739700512545 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 7D0973E6166E739700512545 /* PodcastCutterTests-Info.plist */, + 7D0973E7166E739700512545 /* InfoPlist.strings */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7D0973BC166E739700512545 /* PodcastCutter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7D0973EF166E739700512545 /* Build configuration list for PBXNativeTarget "PodcastCutter" */; + buildPhases = ( + 7D0973B9166E739700512545 /* Sources */, + 7D0973BA166E739700512545 /* Frameworks */, + 7D0973BB166E739700512545 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PodcastCutter; + productName = PodcastCutter; + productReference = 7D0973BD166E739700512545 /* PodcastCutter.app */; + productType = "com.apple.product-type.application"; + }; + 7D0973DD166E739700512545 /* PodcastCutterTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7D0973F2166E739700512545 /* Build configuration list for PBXNativeTarget "PodcastCutterTests" */; + buildPhases = ( + 7D0973D9166E739700512545 /* Sources */, + 7D0973DA166E739700512545 /* Frameworks */, + 7D0973DB166E739700512545 /* Resources */, + 7D0973DC166E739700512545 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 7D0973E3166E739700512545 /* PBXTargetDependency */, + ); + name = PodcastCutterTests; + productName = PodcastCutterTests; + productReference = 7D0973DE166E739700512545 /* PodcastCutterTests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7D0973B4166E739700512545 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = "Arthur Belous"; + }; + buildConfigurationList = 7D0973B7166E739700512545 /* Build configuration list for PBXProject "PodcastCutter" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7D0973B2166E739700512545; + productRefGroup = 7D0973BE166E739700512545 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7D0973BC166E739700512545 /* PodcastCutter */, + 7D0973DD166E739700512545 /* PodcastCutterTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7D0973BB166E739700512545 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D0973CC166E739700512545 /* InfoPlist.strings in Resources */, + 7D0973D2166E739700512545 /* Credits.rtf in Resources */, + 7D0973D8166E739700512545 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7D0973DB166E739700512545 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D0973E9166E739700512545 /* InfoPlist.strings in Resources */, + 7D0973F6166E808E00512545 /* Readme in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 7D0973DC166E739700512545 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7D0973B9166E739700512545 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D0973CE166E739700512545 /* main.m in Sources */, + 7D0973D5166E739700512545 /* AppDelegate.m in Sources */, + 7D5334001672952500590405 /* CueParser.m in Sources */, + 7DD2941B169870C900FDFCB3 /* TableViewContraller.m in Sources */, + 7DD2941F1698815B00FDFCB3 /* Mp3Arrays.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7D0973D9166E739700512545 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D0973EC166E739700512545 /* PodcastCutterTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 7D0973E3166E739700512545 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 7D0973BC166E739700512545 /* PodcastCutter */; + targetProxy = 7D0973E2166E739700512545 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 7D0973CA166E739700512545 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 7D0973CB166E739700512545 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 7D0973D0166E739700512545 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 7D0973D1166E739700512545 /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + 7D0973D6166E739700512545 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 7D0973D7166E739700512545 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + 7D0973E7166E739700512545 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 7D0973E8166E739700512545 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 7D0973ED166E739700512545 /* 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; + }; + 7D0973EE166E739700512545 /* 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; + }; + 7D0973F0166E739700512545 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PodcastCutter/PodcastCutter-Prefix.pch"; + INFOPLIST_FILE = "PodcastCutter/PodcastCutter-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 7D0973F1166E739700512545 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PodcastCutter/PodcastCutter-Prefix.pch"; + INFOPLIST_FILE = "PodcastCutter/PodcastCutter-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 7D0973F3166E739700512545 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/PodcastCutter.app/Contents/MacOS/PodcastCutter"; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\""; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PodcastCutter/PodcastCutter-Prefix.pch"; + INFOPLIST_FILE = "PodcastCutterTests/PodcastCutterTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + 7D0973F4166E739700512545 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/PodcastCutter.app/Contents/MacOS/PodcastCutter"; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\""; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "PodcastCutter/PodcastCutter-Prefix.pch"; + INFOPLIST_FILE = "PodcastCutterTests/PodcastCutterTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7D0973B7166E739700512545 /* Build configuration list for PBXProject "PodcastCutter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7D0973ED166E739700512545 /* Debug */, + 7D0973EE166E739700512545 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7D0973EF166E739700512545 /* Build configuration list for PBXNativeTarget "PodcastCutter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7D0973F0166E739700512545 /* Debug */, + 7D0973F1166E739700512545 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7D0973F2166E739700512545 /* Build configuration list for PBXNativeTarget "PodcastCutterTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7D0973F3166E739700512545 /* Debug */, + 7D0973F4166E739700512545 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7D0973B4166E739700512545 /* Project object */; +} diff --git a/PodcastCutter/PodcastCutter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/PodcastCutter/PodcastCutter.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..99b00ea --- /dev/null +++ b/PodcastCutter/PodcastCutter.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/PodcastCutter/PodcastCutter.xcodeproj/project.xcworkspace/xcuserdata/arthurbelous.xcuserdatad/UserInterfaceState.xcuserstate b/PodcastCutter/PodcastCutter.xcodeproj/project.xcworkspace/xcuserdata/arthurbelous.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..7377cef Binary files /dev/null and b/PodcastCutter/PodcastCutter.xcodeproj/project.xcworkspace/xcuserdata/arthurbelous.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..55c877e --- /dev/null +++ b/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,20 @@ + + + + + + + diff --git a/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcschemes/PodcastCutter.xcscheme b/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcschemes/PodcastCutter.xcscheme new file mode 100644 index 0000000..70d6f95 --- /dev/null +++ b/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcschemes/PodcastCutter.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcschemes/xcschememanagement.plist b/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..133817e --- /dev/null +++ b/PodcastCutter/PodcastCutter.xcodeproj/xcuserdata/arthurbelous.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + PodcastCutter.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 7D0973BC166E739700512545 + + primary + + + 7D0973DD166E739700512545 + + primary + + + + + diff --git a/PodcastCutter/PodcastCutter/AppDelegate.h b/PodcastCutter/PodcastCutter/AppDelegate.h new file mode 100644 index 0000000..0b1c9d9 --- /dev/null +++ b/PodcastCutter/PodcastCutter/AppDelegate.h @@ -0,0 +1,28 @@ +// +// AppDelegate.h +// PodcastCutter +// +// Created by Arthur Belous on 04.12.12. +// Copyright (c) 2012 Arthur Belous. All rights reserved. +// + +#import +#import "CueParser.h" + +@interface AppDelegate : NSObject +{ +NSMutableArray *arrayOfMp3Index; +NSMutableArray *arrayOfMp3Title; +NSMutableArray *arrayOfMp3Performer; + NSMutableArray *arrayOfMp3Track;} +@property (assign) IBOutlet NSWindow *window; + +-(NSString*) OpenFile; + + +@property (weak) IBOutlet NSTextField *albumArtist; +@property (weak) IBOutlet NSTextField *albumTitle; +@property (weak) IBOutlet NSComboBox *genreTypeList; + + +@end diff --git a/PodcastCutter/PodcastCutter/AppDelegate.m b/PodcastCutter/PodcastCutter/AppDelegate.m new file mode 100644 index 0000000..d9ed538 --- /dev/null +++ b/PodcastCutter/PodcastCutter/AppDelegate.m @@ -0,0 +1,56 @@ +// +// AppDelegate.m +// PodcastCutter +// +// Created by Arthur Belous on 04.12.12. +// Copyright (c) 2012 Arthur Belous. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +-(NSString*) OpenFile // Select file in NSOpenPanel for get path of *.cue or *.mp3 files +{ + NSString *FilePath; + // Define file types for our app, exclud all the other extension formats + NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"cue", @"Cue", @"CUE", nil]; + + // Create instance of NSOpenPanel + NSOpenPanel *myOpenPanel = [NSOpenPanel openPanel]; + + //Set parameters for our open panel + [myOpenPanel setAllowsMultipleSelection:NO]; + [myOpenPanel setAllowedFileTypes:fileTypes]; + [myOpenPanel setAllowsOtherFileTypes:NO]; + + if ( [myOpenPanel runModal] == NSOKButton ) + { + FilePath = [[myOpenPanel URL]path]; // Get file path of selected *.cue file + } + return FilePath; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + NSAlert *alert = [[NSAlert alloc] init]; + [alert setMessageText:@"Please , choose a *.cue file for cutting ! "]; + [alert runModal]; + + NSString *SelectedFileIs = [self OpenFile]; + + + [mycueparser ParseCueFile:SelectedFileIs ]; + + + + NSString * albumArtist = [mycueparser RetMp3Performer]; + [self.albumArtist setStringValue:albumArtist]; + + NSString * album = [mycueparser RetMp3Title]; + [self.albumTitle setStringValue:album]; + + //[self.genreTypeList setValuesForKeysWithDictionary:<#(NSDictionary *)#>] +} + +@end diff --git a/PodcastCutter/PodcastCutter/CueParser.h b/PodcastCutter/PodcastCutter/CueParser.h new file mode 100644 index 0000000..e295acc --- /dev/null +++ b/PodcastCutter/PodcastCutter/CueParser.h @@ -0,0 +1,14 @@ +// +// CueParser.h +// PodcastCutter +// +// Created by Arthur Belous on 07.12.12. +// Copyright (c) 2012 Arthur Belous. All rights reserved. +// + +#import + +@interface CueParser : NSObject + +-(void) ParseCueFile:(NSString *)Filepath; +@end \ No newline at end of file diff --git a/PodcastCutter/PodcastCutter/CueParser.m b/PodcastCutter/PodcastCutter/CueParser.m new file mode 100644 index 0000000..6e94381 --- /dev/null +++ b/PodcastCutter/PodcastCutter/CueParser.m @@ -0,0 +1,80 @@ +// +// CueParser.m +// PodcastCutter +// +// Created by Arthur Belous on 07.12.12. +// Copyright (c) 2012 Arthur Belous. All rights reserved. +// + +#import "CueParser.h" +#import "Mp3Arrays.h" + + +@implementation CueParser + +-(void) ParseCueFile:(NSString*)fileLocationPath +{ + Mp3Arrays * ma = [[Mp3Arrays alloc] init]; + NSError *error = nil; + NSString * cueFile = [NSString stringWithContentsOfFile:fileLocationPath encoding:NSUTF8StringEncoding error:&error]; + NSArray* arrayOfLines = [cueFile componentsSeparatedByString:@"\n"]; + for (int s = 0; s < 4; s ++) + { + NSString * WordsInLine = [arrayOfLines objectAtIndex: s]; + + char c = '"'; + NSString *separator = [NSString stringWithFormat:@"%c", c]; + NSArray * WordsInLineNntoArray = [WordsInLine componentsSeparatedByString:separator]; + for (int v = 0; v< WordsInLineNntoArray.count; v++) + { + NSString *w = [WordsInLineNntoArray objectAtIndex:v]; + NSString *withoutSpase = [w stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + if ([withoutSpase hasPrefix:@"PERFORMER"]) + { + NSString * tempPerformer = [WordsInLineNntoArray objectAtIndex:v+1]; + [ma setAlbumPerformer:tempPerformer]; + } + if ([withoutSpase hasPrefix:@"TITLE"]) + { + NSString *tempTitle = [WordsInLineNntoArray objectAtIndex:v+1]; + [ma setAlbumTitle:tempTitle]; + } + } + for (int i = 3; i < arrayOfLines.count; i ++) + { + NSString * WordsInLine = [arrayOfLines objectAtIndex: i]; + + char s = '"'; + NSString *separator = [NSString stringWithFormat:@"%c", s]; + NSArray * WordsInLineNntoArray = [WordsInLine componentsSeparatedByString:separator]; + for (int x = 0; x< WordsInLineNntoArray.count; x++) + { + NSString *w = [WordsInLineNntoArray objectAtIndex:x]; + NSString *withoutSpase = [w stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + if ([withoutSpase hasPrefix:@"PERFORMER"]) + { + + NSString * trackPerformer = [WordsInLineNntoArray objectAtIndex:x+1]; + [ma insertIntoPerformerArray:trackPerformer]; + } + if ([withoutSpase hasPrefix:@"TITLE"]) + { + NSString * trackTitle = [WordsInLineNntoArray objectAtIndex:x+1]; + [ma insertIntoTitelArray:trackTitle]; + } + if ([withoutSpase hasPrefix:@"TRACK"]) + { + NSString *trackArrayItem = [withoutSpase substringWithRange:NSMakeRange(6, 2)]; + [ma insertIntoTrackArray:trackArrayItem]; + } + if ([withoutSpase hasPrefix:@"INDEX"]) + { + NSString *indexArrayItem = [withoutSpase substringFromIndex:10]; + [ma insertIntoIndexArray:indexArrayItem]; + } + } + } +} +} + +@end diff --git a/PodcastCutter/PodcastCutter/Mp3Arrays.h b/PodcastCutter/PodcastCutter/Mp3Arrays.h new file mode 100644 index 0000000..ac10b95 --- /dev/null +++ b/PodcastCutter/PodcastCutter/Mp3Arrays.h @@ -0,0 +1,32 @@ +// +// Mp3Arrays.h +// PodcastCutter +// +// Created by Arthur Belous on 05.01.13. +// Copyright (c) 2013 Arthur Belous. All rights reserved. +// + +#import + +@interface Mp3Arrays : NSObject +{ + NSMutableArray *arrayOfMp3Index; + NSMutableArray *arrayOfMp3Title; + NSMutableArray *arrayOfMp3Performer; + NSMutableArray *arrayOfMp3Track; + NSString * MP3Performer; + NSString * MP3Title; +} +-(void) insertIntoIndexArray:(NSString*) index; +-(void) insertIntoTitelArray:(NSString*) title; +-(void) insertIntoPerformerArray:(NSString*) performer; +-(void) insertIntoTrackArray:(NSString*) track; +-(void) setAlbumPerformer:(NSString*) albumPerformer; +-(void) setAlbumTitle:(NSString*) albumTitle; +-( NSMutableArray *) ReturnIndexArray; +-(NSMutableArray *) ReturnPerformerArray; +-(NSMutableArray*) ReturnTrackArray; +-(NSMutableArray*) ReturnTitleArray; +-(NSString*) RetMp3Performer; +-(NSString*) RetMp3Title; +@end diff --git a/PodcastCutter/PodcastCutter/Mp3Arrays.m b/PodcastCutter/PodcastCutter/Mp3Arrays.m new file mode 100644 index 0000000..a71e82c --- /dev/null +++ b/PodcastCutter/PodcastCutter/Mp3Arrays.m @@ -0,0 +1,100 @@ +// +// Mp3Arrays.m +// PodcastCutter +// +// Created by Arthur Belous on 05.01.13. +// Copyright (c) 2013 Arthur Belous. All rights reserved. +// + +#import "Mp3Arrays.h" + +@implementation Mp3Arrays +-(void) insertIntoIndexArray:(NSString*) index +{ + NSInteger indexArraySize = [arrayOfMp3Index count]; + if (indexArraySize !=0) + { + indexArraySize ++; + [arrayOfMp3Index insertObject:index atIndex:indexArraySize]; + } + else + { + [arrayOfMp3Index insertObject:index atIndex:indexArraySize]; + } + +} +-(void) insertIntoTitelArray:(NSString*) title +{ + NSInteger titleArraySize = [arrayOfMp3Title count]; + if (titleArraySize !=0) + { + titleArraySize ++; + [arrayOfMp3Title insertObject:title atIndex:titleArraySize]; + } + else + { + [arrayOfMp3Title insertObject:title atIndex:titleArraySize]; + } +} +-(void) insertIntoPerformerArray:(NSString*) performer +{ + NSInteger PerformerArraySize = [arrayOfMp3Performer count]; + if (PerformerArraySize != 0) + { + PerformerArraySize ++; + [arrayOfMp3Performer insertObject:performer atIndex:PerformerArraySize]; + } + else + { + [arrayOfMp3Performer insertObject:performer atIndex:PerformerArraySize]; + } +} +-(void) insertIntoTrackArray:(NSString*) track +{ + NSInteger trackArraySize = [arrayOfMp3Track count]; + if (trackArraySize !=0) + { + trackArraySize ++; + [arrayOfMp3Track insertObject:track atIndex:trackArraySize]; + } + else + { + [arrayOfMp3Track insertObject:track atIndex:trackArraySize]; + } +} + +-(void) setAlbumPerformer:(NSString*) albumPerformer +{ + MP3Performer = albumPerformer; +} +-(void) setAlbumTitle:(NSString*) albumTitle +{ + MP3Title = albumTitle; +} + +-( NSMutableArray *) ReturnIndexArray +{ + return arrayOfMp3Index; +} +-(NSMutableArray *) ReturnPerformerArray +{ + return arrayOfMp3Performer; +} +-(NSMutableArray*) ReturnTrackArray +{ + return arrayOfMp3Track; +} +-(NSMutableArray*) ReturnTitleArray +{ + return arrayOfMp3Title; +} +-(NSString*) RetMp3Performer +{ + return MP3Performer; +} +-(NSString*) RetMp3Title +{ + return MP3Title; +} + +@end diff --git a/PodcastCutter/PodcastCutter/PodcastCutter-Info.plist b/PodcastCutter/PodcastCutter/PodcastCutter-Info.plist new file mode 100644 index 0000000..e8b48f8 --- /dev/null +++ b/PodcastCutter/PodcastCutter/PodcastCutter-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + Home.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 Arthur Belous. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/PodcastCutter/PodcastCutter/PodcastCutter-Prefix.pch b/PodcastCutter/PodcastCutter/PodcastCutter-Prefix.pch new file mode 100644 index 0000000..afda846 --- /dev/null +++ b/PodcastCutter/PodcastCutter/PodcastCutter-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'PodcastCutter' target in the 'PodcastCutter' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/PodcastCutter/PodcastCutter/TableViewContraller.h b/PodcastCutter/PodcastCutter/TableViewContraller.h new file mode 100644 index 0000000..3a5d01e --- /dev/null +++ b/PodcastCutter/PodcastCutter/TableViewContraller.h @@ -0,0 +1,19 @@ +// +// TableViewContraller.h +// PodcastCutter +// +// Created by Arthur Belous on 05.01.13. +// Copyright (c) 2013 Arthur Belous. All rights reserved. +// + +#import + +@interface TableViewContraller : NSObject +{ + @private + IBOutlet NSTableView *tableView; + NSMutableArray * tableArray; +} +-(NSInteger) numberOfRowsInTableView:(NSTableView*) tableView; + +@end diff --git a/PodcastCutter/PodcastCutter/TableViewContraller.m b/PodcastCutter/PodcastCutter/TableViewContraller.m new file mode 100644 index 0000000..0c5ad61 --- /dev/null +++ b/PodcastCutter/PodcastCutter/TableViewContraller.m @@ -0,0 +1,33 @@ +// +// TableViewContraller.m +// PodcastCutter +// +// Created by Arthur Belous on 05.01.13. +// Copyright (c) 2013 Arthur Belous. All rights reserved. +// + +#import "TableViewContraller.h" +#import "CueParser.h" +#import "Mp3Arrays.h" + +@implementation TableViewContraller + +-(id) init +{ + self = [super init]; + if (self) + { + + } + return self; + Mp3Arrays * mp = [[Mp3Arrays alloc] init]; + tableArray = [[NSMutableArray alloc]init]; +} + +-(NSInteger) numberOfRowsInTableView:(NSTableView*) tableView +{ + return [mp ] +} + + +@end diff --git a/PodcastCutter/PodcastCutter/en.lproj/Credits.rtf b/PodcastCutter/PodcastCutter/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/PodcastCutter/PodcastCutter/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/PodcastCutter/PodcastCutter/en.lproj/InfoPlist.strings b/PodcastCutter/PodcastCutter/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/PodcastCutter/PodcastCutter/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/PodcastCutter/PodcastCutter/en.lproj/MainMenu.xib b/PodcastCutter/PodcastCutter/en.lproj/MainMenu.xib new file mode 100644 index 0000000..e395bca --- /dev/null +++ b/PodcastCutter/PodcastCutter/en.lproj/MainMenu.xib @@ -0,0 +1,5879 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSButton + NSButtonCell + NSComboBox + NSComboBoxCell + NSCustomObject + NSImageCell + NSImageView + NSMenu + NSMenuItem + NSScrollView + NSScroller + NSTableColumn + NSTableHeaderView + NSTableView + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + PodcastCutter + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + PodcastCutter + + + + About PodcastCutter + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide PodcastCutter + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit PodcastCutter + 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 + + + + PodcastCutter Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 15 + 2 + {{335, 390}, {641, 547}} + 1954021376 + PodcastCutter + NSWindow + + + + + 256 + + + + 268 + + + + 2304 + + + + 256 + + {611, 228} + + + + _NS:13 + YES + NO + YES + + + 256 + {611, 17} + + + + _NS:16 + + + + + -2147483392 + {{224, 0}, {16, 17}} + + _NS:19 + + + + 40 + 40 + 1000 + + 75497536 + 2048 + Track + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337641536 + 2048 + Text Cell + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + 3 + YES + + + + 155 + 40 + 1000 + + 75497536 + 2048 + Performer + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337641536 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 194.0390625 + 40 + 1000 + + 75497536 + 2048 + Trackname + + + + + + 337641536 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 93.484375 + 40 + 1000 + + 75497536 + 2048 + Start Time + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337641536 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 114 + 40 + 1000 + + 75497536 + 2048 + End Time + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337641536 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3 + 2 + + 6 + System + _sourceListBackgroundColor + + 6 + System + alternateSelectedControlColor + + 1 + MCAwIDEAA + + + + + 1 + MSAxIDEAA + + 17 + -155189248 + + + 1 + 4 + 15 + 0 + YES + -1 + 1 + 1 + + + {{1, 17}, {611, 228}} + + + + _NS:11 + + + 6 + + + + -2147483392 + {{224, 17}, {15, 102}} + + + + _NS:58 + NO + + _doScroller: + 37 + 0.1947367936372757 + 1 + + + + -2147483392 + {{1, 229}, {611, 16}} + + + + _NS:60 + NO + 1 + + _doScroller: + 0.90117994100294985 + 1 + + + + 2304 + + + + {{1, 0}, {611, 17}} + + + + _NS:15 + + + 4 + + + {{14, 66}, {613, 246}} + + + + _NS:9 + 2610 + + + + + 1 + QSAAAEEgAABBmAAAQZgAAA + 0.25 + 4 + 1 + + + + 268 + {{11, 31}, {198, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Путь для сохранения файлов: + + _NS:1535 + + + 6 + System + controlColor + + + + + NO + + + + 268 + {{258, 24}, {147, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + or Save As + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{211, 31}, {48, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + \Music + + _NS:1535 + + + + + NO + + + + 268 + {{17, 521}, {6, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + + + _NS:1535 + + + + + NO + + + + 268 + {{11, 523}, {84, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Album Artist + + _NS:1535 + + + + + NO + + + + 268 + {{11, 480}, {168, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Album + + _NS:1535 + + + + + NO + + + + 268 + {{11, 438}, {42, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Genre + + _NS:1535 + + + + + NO + + + + 268 + {{11, 399}, {73, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Comments + + _NS:1535 + + + + + NO + + + + 268 + {{512, 24}, {121, 32}} + + + _NS:9 + YES + + 67108864 + 134217728 + Cut + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + {{493, 385}, {137, 137}} + + + + _NS:9 + YES + + 134217728 + 33554432 + _NS:9 + 0 + 0 + 2 + NO + + NO + YES + + + + 268 + {{11, 357}, {32, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Year + + _NS:1535 + + + + + NO + + + + 268 + {{493, 521}, {49, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Atwork + + _NS:1535 + + + + + NO + + + + 268 + {{14, 332}, {106, 26}} + + + + _NS:9 + YES + + 342884416 + 272630784 + + + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 5 + YES + + + + 274 + {13, 0} + + + _NS:24 + YES + NO + YES + + + 10 + 10 + 1000 + + 75497472 + 0 + + + LucidaGrande + 12 + 16 + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 338690112 + 1024 + + + YES + + + + 3 + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 19 + tableViewAction: + -765427712 + + + + 1 + 15 + 0 + YES + 0 + 1 + + + NO + + + + 268 + {{14, 497}, {474, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + _NS:9 + + YES + + + 6 + System + textColor + + + + NO + + + + 268 + {{14, 456}, {474, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + _NS:9 + + YES + + + + NO + + + + 268 + {{14, 375}, {474, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + _NS:9 + + YES + + + + NO + + + + 268 + {{11, 311}, {85, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + List of songs + + _NS:1535 + + + + + NO + + + + 268 + {{14, 415}, {477, 26}} + + + + _NS:9 + YES + + 342884416 + 272630784 + + + _NS:9 + + YES + + + 5 + YES + + Trance + R&B + Tehno + Pop + + + + + 274 + {13, 84} + + + _NS:24 + YES + NO + YES + + + 10 + 10 + 1000 + + 75497472 + 0 + + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 338690112 + 1024 + + + YES + + + + 3 + YES + + + + 3 + 2 + + + 19 + tableViewAction: + -765427712 + + + + 1 + 15 + 0 + YES + 0 + 1 + + + NO + + + {641, 547} + + + + + {{0, 0}, {1440, 878}} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSTabView + + + 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 + + + + SavePath + + + + 643 + + + + CutFile: + + + + 1082 + + + + SaveAs: + + + + 1083 + + + + ChangeYear: + + + + 1084 + + + + ChangeAtwork: + + + + 1085 + + + + ChangeAlbumArtist: + + + + 1086 + + + + ChangeAlbum: + + + + 1087 + + + + ChangeGenre: + + + + 1101 + + + + ChangeAlbum: + + + + 1105 + + + + Album + + + + 1167 + + + + Genre + + + + 1168 + + + + Comments + + + + 1169 + + + + Year + + + + 1170 + + + + Table + + + + 1178 + + + + AlbumArtist + + + + 1184 + + + + AlbArtst + + + + 1187 + + + + albumTitle + + + + 1188 + + + + genreTypeList + + + + 1189 + + + + tableView + + + + 1190 + + + + dataSource + + + + 1237 + + + + delegate + + + + 1238 + + + + + + 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 + + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 4 + 0 + + 4 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 4 + 0 + + 4 + 1 + + 31 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 4 + 0 + + 4 + 1 + + 66 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 235 + + 1000 + + 3 + 9 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 5 + 22 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 191 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 173 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 150 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 131 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 108 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 92 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 69 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 50 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 28 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 9 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 7 + + 1000 + + 3 + 9 + 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 + + + + + 536 + + + + + + + + + + + 537 + + + + + + + + + + + + 538 + + + + + 539 + + + + + 540 + + + + + 541 + + + + + + + + 542 + + + + + + + + 543 + + + + + 544 + + + + + 551 + + + + + 554 + + + + + + + + 555 + + + + + 558 + + + + + + 7 + 0 + + 0 + 1 + + 135 + + 1000 + + 3 + 9 + 1 + + + + + + 559 + + + + + 564 + + + + + + + + 565 + + + + + 568 + + + + + + + + 569 + + + + + 571 + + + + + 584 + + + + + + 7 + 0 + + 0 + 1 + + 162 + + 1000 + + 3 + 9 + 1 + + + + + + 585 + + + + + 588 + + + + + 589 + + + + + + + + 590 + + + + + 606 + + + + + + + + 607 + + + + + 610 + + + + + + + + 611 + + + + + 631 + + + + + + 7 + 0 + + 0 + 1 + + 109 + + 1000 + + 3 + 9 + 1 + + + + + + 632 + + + + + 758 + + + + + + 8 + 0 + + 0 + 1 + + 131 + + 1000 + + 3 + 9 + 1 + + + + 7 + 0 + + 0 + 1 + + 131 + + 1000 + + 3 + 9 + 1 + + + + + + 759 + + + + + 816 + + + + + + + + 817 + + + + + 826 + + + + + + + + 827 + + + + + 834 + + + + + 839 + + + + + 914 + + + + + 922 + + + + + 924 + + + + + 927 + + + + + + 7 + 0 + + 0 + 1 + + 103 + + 1000 + + 3 + 9 + 1 + + + + + + 928 + + + + + 946 + + + + + + 7 + 0 + + 0 + 1 + + 474 + + 1000 + + 3 + 9 + 1 + + + + + + 948 + + + + + 958 + + + + + 959 + + + + + 960 + + + + + 966 + + + + + + + + 967 + + + + + 1000 + + + + + 1003 + + + + + 1005 + + + + + 1008 + + + + + 1009 + + + + + 1010 + + + + + 1011 + + + + + 1012 + + + + + 1019 + + + + + 1029 + + + + + 1048 + + + + + 1057 + + + + + + + + 1058 + + + + + 1059 + + + + + 1060 + + + + + 1061 + + + + + 1063 + + + + + 1068 + + + + + 1069 + + + + + 1073 + + + + + 1078 + + + + + 1079 + + + + + 1090 + + + + + + + + 1092 + + + + + 1094 + + + + + 1096 + + + + + 1097 + + + + + 1100 + + + + + 1103 + + + + + + + + 1104 + + + + + 1109 + + + + + 1111 + + + + + 1112 + + + + + 1116 + + + + + 1118 + + + + + 1119 + + + + + 1121 + + + + + 1122 + + + + + 1123 + + + + + 1124 + + + + + 1151 + + + + + 1152 + + + + + 1154 + + + + + 1164 + + + + + 1165 + + + + + 1172 + + + + + + + + 1173 + + + + + 1174 + + + + + + + + 1175 + + + + + 1176 + + + + + + + + 1177 + + + + + 1236 + + + + + + + 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 + + Trance + R&B + Tehno + Pop + + 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 + {{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 + + 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 + + + + + + 1238 + + + + + AppDelegate + NSObject + + NSTextField + NSTextField + NSComboBox + NSWindow + + + + albumArtist + NSTextField + + + albumTitle + NSTextField + + + genreTypeList + NSComboBox + + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/PodcastCutter/PodcastCutter/main.m b/PodcastCutter/PodcastCutter/main.m new file mode 100644 index 0000000..7472941 --- /dev/null +++ b/PodcastCutter/PodcastCutter/main.m @@ -0,0 +1,14 @@ +// +// main.m +// PodcastCutter +// +// Created by Arthur Belous on 04.12.12. +// Copyright (c) 2012 Arthur Belous. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/PodcastCutter/PodcastCutterTests/PodcastCutterTests-Info.plist b/PodcastCutter/PodcastCutterTests/PodcastCutterTests-Info.plist new file mode 100644 index 0000000..6ed2157 --- /dev/null +++ b/PodcastCutter/PodcastCutterTests/PodcastCutterTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + Home.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/PodcastCutter/PodcastCutterTests/PodcastCutterTests.h b/PodcastCutter/PodcastCutterTests/PodcastCutterTests.h new file mode 100644 index 0000000..a68ab36 --- /dev/null +++ b/PodcastCutter/PodcastCutterTests/PodcastCutterTests.h @@ -0,0 +1,13 @@ +// +// PodcastCutterTests.h +// PodcastCutterTests +// +// Created by Arthur Belous on 04.12.12. +// Copyright (c) 2012 Arthur Belous. All rights reserved. +// + +#import + +@interface PodcastCutterTests : SenTestCase + +@end diff --git a/PodcastCutter/PodcastCutterTests/PodcastCutterTests.m b/PodcastCutter/PodcastCutterTests/PodcastCutterTests.m new file mode 100644 index 0000000..6985923 --- /dev/null +++ b/PodcastCutter/PodcastCutterTests/PodcastCutterTests.m @@ -0,0 +1,32 @@ +// +// PodcastCutterTests.m +// PodcastCutterTests +// +// Created by Arthur Belous on 04.12.12. +// Copyright (c) 2012 Arthur Belous. All rights reserved. +// + +#import "PodcastCutterTests.h" + +@implementation PodcastCutterTests + +- (void)setUp +{ + [super setUp]; + + // Set-up code here. +} + +- (void)tearDown +{ + // Tear-down code here. + + [super tearDown]; +} + +- (void)testExample +{ + STFail(@"Unit tests are not implemented yet in PodcastCutterTests"); +} + +@end diff --git a/PodcastCutter/PodcastCutterTests/Readme b/PodcastCutter/PodcastCutterTests/Readme new file mode 100644 index 0000000..0d13015 --- /dev/null +++ b/PodcastCutter/PodcastCutterTests/Readme @@ -0,0 +1,26 @@ +Проблема (Задача) + В мире существует множество музыкальных подкастов (например A State of Trance, Trance Around the World и т.д.). В основном эти подкасты можно скачать из сети интернет как единый файл. + Допустим вам не удобно слушать весь подкаст одним файлом, или из всего подкаста вам понравилась одна две песни. Что делать дальше? Хранить весь подкаст у себя на маке или в ручную резать мр3 файл? +Для облегчения жизни рядового пользователя –меломана существует Cue sheet, файл cue — файл с метаданными, которые описывают раскладку треков CD или DVD. Файлы cue имеют текстовый формат и, как правило, расширение .cue. С помощью этих файлов можно произвести резку файла подкаста на отдельные файлы. + +Решение проблемы – создания приложения которое позволит выполнив 1-3 действия с легкость разбить один мр3 файл на отдельные треки на основании описания в файле cue. ПС файлы можно взять на сайте http://cuenation.com/ +ПС – до обновления на Lion был отличный cue splitter, но в данный момент Power PC не поддерживается а само приложение не обновляли с 2006 года, есть платные варианты но это не наш метод  +Аудитория +Все пользователи скачивающие подкасты (точные данные сказать не могу, но судя по количеству запросов в гугле на слово cue splitter более 5 млн + +Пример сценария использования приложения +Пользователь скачал подкаст (обычно на торентах он идет вместе с cue файлом – многие музыкальные плееры умеют работать с ним если нет скачивает) кликает по cue файлу или напрямую запускает приложении (после выбрав файл) подгрузка mp3 происходит автоматически или тоже по выбору и в конце после нажатия на CUT происходит резка в заранее определенную директорию. Дальше пользователь может подгрузить другие файлы подкастов или завершить работу приложения + +Описание поведения  +Пользователь кликает на файл cue (в дальнейшем возможно реализация drug&drop) – открывается мое приложение и если cue файл находится в той же аудитории и имеет такое же имя то приложение автоматически подгружает mp3 , если нет то открывается окно для выбора mp3 файла для резки) +Пользователь видит всю необходимую ему информация – год, название альбома(подкаста) автора, жанр и список треков … (возможно в дальнейшем если успею у пользователя будет возможность править информация) +Все что осталось сделать пользователю выбрать директорию, куда будет сохранен файл (или использовать стандартную) и нажать кнопку «CUT» +После чего произойдет разбитие подкаста на отдельные файлы. (Логическая организация файлов будет где то примерно такая – название подкаста\год\номер выпуска. +По нажатию на кнопку Х – всплывает окно подтверждения, при сворачивании нечего не происходит. + +НУ И НА ПОСЛЕДОК – что можно улучшить в дальнейшем +Интерфейс +Минимизировать количество действий выполняемых пользователей, +Добавить ссылки на ресурсы с подкастами и cue +Добавить возможность прослушать отдельный трек в приложении перед резкой +Возможность коректировать информацию – год, название итд diff --git a/PodcastCutter/PodcastCutterTests/en.lproj/InfoPlist.strings b/PodcastCutter/PodcastCutterTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/PodcastCutter/PodcastCutterTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ +