From 6c1799b48e3df995fc8933937880d72f36eefa80 Mon Sep 17 00:00:00 2001 From: 4pcbr Date: Thu, 6 Dec 2012 14:11:00 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 630317e..95fd1ed 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,21 @@ -Проект 2. Идея и интерфейс приложения -============= +##Видео-плеер для iptv -Придумайте приложение для OS X, разработайте графический интерфейс и сдайте: +### Описание -1. Подробное описание в README.md или PDF. Описание должно включать: - * Проблему, которую решает приложение - * Аудитория приложения - * Пример сценария использования приложения - * Описание поведения (что происходит при загрузке, что происходит при нажатии на кнопку Х, и так далее). -2. Вся папка с проектом, в которой обязательно должен быть .xib-файл с графическим интерфейсом. +Приложение представляет собой видео-плеер в бекграунде и прозрачный браузер в форграунде. -[Сдать работу](https://u.hexlet.org/courses/4/assignments/6) \ No newline at end of file +Браузер взаимодействует с неким серверным api, получает список фильмов/роликов, предоставляет информацию о них. + +Между браузером и видео-плеером есть api-мостик, реализующий кнопки пульта управления. Реализация обратной связи имеет смысл при расширении функционала до железного пульта на базе, например, arduino. Или какого-нибудь интересного носителя типа кинекта. + +### Решаемые задачи + +Подобное решение применяется в iptv на сеттопбоксах, правда, линуксовых. Оно позволяет легко настраивать и обновлять скины, использовать сложные браузерные технологии, удобно работать с API и т.п. + +### Аудитория приложения + +Скажем, производители очередных киллеров Apple TV ))) + +### Сценарий использования + +Приложение запускается, плеер проигрывает приветственный ролик. В этот момент браузер получает данные с сервера, отрисовывает менюшку и предлагает ролик на выбор. Зритель выбирает ролик, перелистывая меню. При нажатии на ролик плеер начинает его проигрывать. Меню самого плеера ( play, stop, pause, etc ) тоже можно сделать в браузере. Может быть открыто единственный инстанс приложения. При закрытии приложение выходит. Приложение поддерживает полноэкранный режим. Мета-информация о видео содержится в серверном апи. \ No newline at end of file From bf48ecdb991802a9feccbe5ee192dd20825ee484 Mon Sep 17 00:00:00 2001 From: 4pcbr Date: Thu, 6 Dec 2012 14:54:10 +0400 Subject: [PATCH 2/3] =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=BE=D0=BA=D0=BD=D0=BE=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IPTVBrowser.xcodeproj/project.pbxproj | 312 ++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 11916 bytes .../xcschemes/IPTVBrowser.xcscheme | 86 + .../xcschemes/xcschememanagement.plist | 22 + IPTVBrowser/IPTVBrowser/AppDelegate.h | 15 + IPTVBrowser/IPTVBrowser/AppDelegate.m | 18 + .../IPTVBrowser/IPTVBrowser-Info.plist | 36 + .../IPTVBrowser/IPTVBrowser-Prefix.pch | 7 + IPTVBrowser/IPTVBrowser/en.lproj/Credits.rtf | 29 + .../IPTVBrowser/en.lproj/InfoPlist.strings | 2 + IPTVBrowser/IPTVBrowser/en.lproj/MainMenu.xib | 3499 +++++++++++++++++ IPTVBrowser/IPTVBrowser/main.m | 14 + 13 files changed, 4047 insertions(+) create mode 100644 IPTVBrowser/IPTVBrowser.xcodeproj/project.pbxproj create mode 100644 IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/xcuserdata/4pcbr.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 IPTVBrowser/IPTVBrowser.xcodeproj/xcuserdata/4pcbr.xcuserdatad/xcschemes/IPTVBrowser.xcscheme create mode 100644 IPTVBrowser/IPTVBrowser.xcodeproj/xcuserdata/4pcbr.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 IPTVBrowser/IPTVBrowser/AppDelegate.h create mode 100644 IPTVBrowser/IPTVBrowser/AppDelegate.m create mode 100644 IPTVBrowser/IPTVBrowser/IPTVBrowser-Info.plist create mode 100644 IPTVBrowser/IPTVBrowser/IPTVBrowser-Prefix.pch create mode 100644 IPTVBrowser/IPTVBrowser/en.lproj/Credits.rtf create mode 100644 IPTVBrowser/IPTVBrowser/en.lproj/InfoPlist.strings create mode 100644 IPTVBrowser/IPTVBrowser/en.lproj/MainMenu.xib create mode 100644 IPTVBrowser/IPTVBrowser/main.m diff --git a/IPTVBrowser/IPTVBrowser.xcodeproj/project.pbxproj b/IPTVBrowser/IPTVBrowser.xcodeproj/project.pbxproj new file mode 100644 index 0000000..86914aa --- /dev/null +++ b/IPTVBrowser/IPTVBrowser.xcodeproj/project.pbxproj @@ -0,0 +1,312 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 6654E1A91670B02A008C08A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6654E1A81670B02A008C08A4 /* Cocoa.framework */; }; + 6654E1B31670B02A008C08A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6654E1B11670B02A008C08A4 /* InfoPlist.strings */; }; + 6654E1B51670B02A008C08A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6654E1B41670B02A008C08A4 /* main.m */; }; + 6654E1B91670B02A008C08A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 6654E1B71670B02A008C08A4 /* Credits.rtf */; }; + 6654E1BC1670B02A008C08A4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6654E1BB1670B02A008C08A4 /* AppDelegate.m */; }; + 6654E1BF1670B02A008C08A4 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6654E1BD1670B02A008C08A4 /* MainMenu.xib */; }; + 6654E1C61670B0A6008C08A4 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6654E1C51670B0A6008C08A4 /* QTKit.framework */; }; + 6654E1C81670B0AB008C08A4 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6654E1C71670B0AB008C08A4 /* WebKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 6654E1A41670B02A008C08A4 /* IPTVBrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IPTVBrowser.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6654E1A81670B02A008C08A4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 6654E1AB1670B02A008C08A4 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 6654E1AC1670B02A008C08A4 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 6654E1AD1670B02A008C08A4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 6654E1B01670B02A008C08A4 /* IPTVBrowser-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "IPTVBrowser-Info.plist"; sourceTree = ""; }; + 6654E1B21670B02A008C08A4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 6654E1B41670B02A008C08A4 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 6654E1B61670B02A008C08A4 /* IPTVBrowser-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "IPTVBrowser-Prefix.pch"; sourceTree = ""; }; + 6654E1B81670B02A008C08A4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + 6654E1BA1670B02A008C08A4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 6654E1BB1670B02A008C08A4 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 6654E1BE1670B02A008C08A4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + 6654E1C51670B0A6008C08A4 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; + 6654E1C71670B0AB008C08A4 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6654E1A11670B02A008C08A4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6654E1C81670B0AB008C08A4 /* WebKit.framework in Frameworks */, + 6654E1C61670B0A6008C08A4 /* QTKit.framework in Frameworks */, + 6654E1A91670B02A008C08A4 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6654E1991670B02A008C08A4 = { + isa = PBXGroup; + children = ( + 6654E1C71670B0AB008C08A4 /* WebKit.framework */, + 6654E1C51670B0A6008C08A4 /* QTKit.framework */, + 6654E1AE1670B02A008C08A4 /* IPTVBrowser */, + 6654E1A71670B02A008C08A4 /* Frameworks */, + 6654E1A51670B02A008C08A4 /* Products */, + ); + sourceTree = ""; + }; + 6654E1A51670B02A008C08A4 /* Products */ = { + isa = PBXGroup; + children = ( + 6654E1A41670B02A008C08A4 /* IPTVBrowser.app */, + ); + name = Products; + sourceTree = ""; + }; + 6654E1A71670B02A008C08A4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6654E1A81670B02A008C08A4 /* Cocoa.framework */, + 6654E1AA1670B02A008C08A4 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 6654E1AA1670B02A008C08A4 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 6654E1AB1670B02A008C08A4 /* AppKit.framework */, + 6654E1AC1670B02A008C08A4 /* CoreData.framework */, + 6654E1AD1670B02A008C08A4 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 6654E1AE1670B02A008C08A4 /* IPTVBrowser */ = { + isa = PBXGroup; + children = ( + 6654E1BA1670B02A008C08A4 /* AppDelegate.h */, + 6654E1BB1670B02A008C08A4 /* AppDelegate.m */, + 6654E1BD1670B02A008C08A4 /* MainMenu.xib */, + 6654E1AF1670B02A008C08A4 /* Supporting Files */, + ); + path = IPTVBrowser; + sourceTree = ""; + }; + 6654E1AF1670B02A008C08A4 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 6654E1B01670B02A008C08A4 /* IPTVBrowser-Info.plist */, + 6654E1B11670B02A008C08A4 /* InfoPlist.strings */, + 6654E1B41670B02A008C08A4 /* main.m */, + 6654E1B61670B02A008C08A4 /* IPTVBrowser-Prefix.pch */, + 6654E1B71670B02A008C08A4 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6654E1A31670B02A008C08A4 /* IPTVBrowser */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6654E1C21670B02A008C08A4 /* Build configuration list for PBXNativeTarget "IPTVBrowser" */; + buildPhases = ( + 6654E1A01670B02A008C08A4 /* Sources */, + 6654E1A11670B02A008C08A4 /* Frameworks */, + 6654E1A21670B02A008C08A4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = IPTVBrowser; + productName = IPTVBrowser; + productReference = 6654E1A41670B02A008C08A4 /* IPTVBrowser.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6654E19B1670B02A008C08A4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = whitebox; + }; + buildConfigurationList = 6654E19E1670B02A008C08A4 /* Build configuration list for PBXProject "IPTVBrowser" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 6654E1991670B02A008C08A4; + productRefGroup = 6654E1A51670B02A008C08A4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 6654E1A31670B02A008C08A4 /* IPTVBrowser */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 6654E1A21670B02A008C08A4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6654E1B31670B02A008C08A4 /* InfoPlist.strings in Resources */, + 6654E1B91670B02A008C08A4 /* Credits.rtf in Resources */, + 6654E1BF1670B02A008C08A4 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6654E1A01670B02A008C08A4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6654E1B51670B02A008C08A4 /* main.m in Sources */, + 6654E1BC1670B02A008C08A4 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 6654E1B11670B02A008C08A4 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 6654E1B21670B02A008C08A4 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 6654E1B71670B02A008C08A4 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 6654E1B81670B02A008C08A4 /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + 6654E1BD1670B02A008C08A4 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 6654E1BE1670B02A008C08A4 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 6654E1C01670B02A008C08A4 /* 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; + }; + 6654E1C11670B02A008C08A4 /* 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; + }; + 6654E1C31670B02A008C08A4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "IPTVBrowser/IPTVBrowser-Prefix.pch"; + INFOPLIST_FILE = "IPTVBrowser/IPTVBrowser-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 6654E1C41670B02A008C08A4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "IPTVBrowser/IPTVBrowser-Prefix.pch"; + INFOPLIST_FILE = "IPTVBrowser/IPTVBrowser-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6654E19E1670B02A008C08A4 /* Build configuration list for PBXProject "IPTVBrowser" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6654E1C01670B02A008C08A4 /* Debug */, + 6654E1C11670B02A008C08A4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6654E1C21670B02A008C08A4 /* Build configuration list for PBXNativeTarget "IPTVBrowser" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6654E1C31670B02A008C08A4 /* Debug */, + 6654E1C41670B02A008C08A4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6654E19B1670B02A008C08A4 /* Project object */; +} diff --git a/IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..a86ece3 --- /dev/null +++ b/IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/xcuserdata/4pcbr.xcuserdatad/UserInterfaceState.xcuserstate b/IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/xcuserdata/4pcbr.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..42f5798eb4eeec36c835765708c5778a128fec2e GIT binary patch literal 11916 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IPTVBrowser/IPTVBrowser.xcodeproj/xcuserdata/4pcbr.xcuserdatad/xcschemes/xcschememanagement.plist b/IPTVBrowser/IPTVBrowser.xcodeproj/xcuserdata/4pcbr.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..1edbca8 --- /dev/null +++ b/IPTVBrowser/IPTVBrowser.xcodeproj/xcuserdata/4pcbr.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + IPTVBrowser.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 6654E1A31670B02A008C08A4 + + primary + + + + + diff --git a/IPTVBrowser/IPTVBrowser/AppDelegate.h b/IPTVBrowser/IPTVBrowser/AppDelegate.h new file mode 100644 index 0000000..e180366 --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/AppDelegate.h @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// IPTVBrowser +// +// Created by 4pcbr on 12/6/12. +// Copyright (c) 2012 whitebox. All rights reserved. +// + +#import + +@interface AppDelegate : NSObject + +@property (assign) IBOutlet NSWindow *window; + +@end diff --git a/IPTVBrowser/IPTVBrowser/AppDelegate.m b/IPTVBrowser/IPTVBrowser/AppDelegate.m new file mode 100644 index 0000000..59e0337 --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/AppDelegate.m @@ -0,0 +1,18 @@ +// +// AppDelegate.m +// IPTVBrowser +// +// Created by 4pcbr on 12/6/12. +// Copyright (c) 2012 whitebox. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + // Insert code here to initialize your application +} + +@end diff --git a/IPTVBrowser/IPTVBrowser/IPTVBrowser-Info.plist b/IPTVBrowser/IPTVBrowser/IPTVBrowser-Info.plist new file mode 100644 index 0000000..b8ceb92 --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/IPTVBrowser-Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + io.whitebox.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.video + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 whitebox. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/IPTVBrowser/IPTVBrowser/IPTVBrowser-Prefix.pch b/IPTVBrowser/IPTVBrowser/IPTVBrowser-Prefix.pch new file mode 100644 index 0000000..f33be5e --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/IPTVBrowser-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'IPTVBrowser' target in the 'IPTVBrowser' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/IPTVBrowser/IPTVBrowser/en.lproj/Credits.rtf b/IPTVBrowser/IPTVBrowser/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/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/IPTVBrowser/IPTVBrowser/en.lproj/InfoPlist.strings b/IPTVBrowser/IPTVBrowser/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/IPTVBrowser/IPTVBrowser/en.lproj/MainMenu.xib b/IPTVBrowser/IPTVBrowser/en.lproj/MainMenu.xib new file mode 100644 index 0000000..3c7479f --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/en.lproj/MainMenu.xib @@ -0,0 +1,3499 @@ + + + + 1080 + 12C3006 + 2844 + 1187.34 + 625.00 + + 2844 + 1810 + 1810 + + + IBNSLayoutConstraint + NSCustomObject + NSMenu + NSMenuItem + NSView + NSWindowTemplate + QTMovieView + WebView + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.QTKitIBPlugin + com.apple.WebKitIBPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + IPTVBrowser + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + IPTVBrowser + + + + About IPTVBrowser + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide IPTVBrowser + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit IPTVBrowser + 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 + + + + IPTVBrowser Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 15 + 2 + {{335, 390}, {779, 592}} + 1954021376 + IPTVBrowser + NSWindow + + + + + 256 + + + + 268 + + Apple URL pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSFilenamesPboardType + QTMoviePasteboardType + + {779, 592} + + + + _NS:9 + + 3 + MAA + + + + + + + + + 256 + + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple URL pasteboard type + Apple Web Archive pasteboard type + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + WebURLsWithTitlesPboardType + public.png + public.url + public.url-name + + {779, 592} + + + + _NS:9 + + + + + + + + + + + YES + YES + + + {779, 592} + + + + + {{0, 0}, {2560, 1418}} + {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 + + + + + + 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 + + + + + + 4 + 0 + + 4 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 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 + + + + + 536 + + + + + + 539 + + + + + 540 + + + + + 541 + + + + + 542 + + + + + 543 + + + + + + 546 + + + + + 547 + + + + + 548 + + + + + 549 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + 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.QTKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.WebKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 549 + + + + + AppDelegate + NSObject + + window + NSWindow + + + window + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + WebView + + reloadFromOrigin: + id + + + reloadFromOrigin: + + reloadFromOrigin: + id + + + + IBProjectSource + ./Classes/WebView.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/IPTVBrowser/IPTVBrowser/main.m b/IPTVBrowser/IPTVBrowser/main.m new file mode 100644 index 0000000..7ebfc8f --- /dev/null +++ b/IPTVBrowser/IPTVBrowser/main.m @@ -0,0 +1,14 @@ +// +// main.m +// IPTVBrowser +// +// Created by 4pcbr on 12/6/12. +// Copyright (c) 2012 whitebox. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} From f7e5c2be1942ebbc3c78bad0d1f3dc6f1028439a Mon Sep 17 00:00:00 2001 From: 4pcbr Date: Thu, 6 Dec 2012 14:55:09 +0400 Subject: [PATCH 3/3] FINAL --- .../UserInterfaceState.xcuserstate | Bin 11916 -> 11912 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/xcuserdata/4pcbr.xcuserdatad/UserInterfaceState.xcuserstate b/IPTVBrowser/IPTVBrowser.xcodeproj/project.xcworkspace/xcuserdata/4pcbr.xcuserdatad/UserInterfaceState.xcuserstate index 42f5798eb4eeec36c835765708c5778a128fec2e..d426479d5fbf367ae445d66fa16dee4384be2380 100644 GIT binary patch delta 1213 zcmW;33v5nT007|sZ>^>^z31L@?m73Kd+s^+Z+w`81+gir5;rjn?%TlnAp&5 zKl5noQ8mwXU2P3bS7xFs6OT-gqKw&0r|D=sMn_Donr_09ec#5s!n}iZF+c`;2UH*< zm=x?2Ob({3)M^@Hsyjtb%TGz|-%F(QOR6c+Rz^mqCHJW@;6oJNq?Kx4XuGuvZI4!| zRckfcaqX0LT05)NX&1EXT7&kR)~NjjB7qKkFcb^}Bfuz-0mgujz&fxAYzAAvRCg0+VI$s1 zG^QC#j4GqnIANSO>WxdrWuw9P-MDQ$Fj|c^quuC$0J^X{>;Zei1egf>!vSz091MrR zbeIVz!C7z_Tnh`~dbkO0hFjnPcnqF|Kfu%QEUbf#unD%nNANLhg@40m@FnVmqR^`- z8etT6kc$NJQFqh>^+ahX9c7_OXbPH&^3W{w7Mg<=p=D?-T89cy5!!)1L!YB^^d+i5 z`_Msj2z`eRqtoadx_~aCpU}_f8oG{}Q44BE&(RArV7_8@HoKTHCNq_pYG#^q%~j@V zbFEom7MT_1zOZ@7JZUzYkIcvB6Z5IrhNE#;+zo43#}G3d!V1UXc-#y3#i=+Ar{m#x zB+kMU@I*Wd&%;ac2Y5No$J_7@ybG7&GQ1a8;cC1e*W#P_4(UcP8AQ^_JhGImCmTsI zDIuSdZDa@8MM_B-373-^QcI4IqvRMlNluY7q>h{?_2d${V+Ad0^|9Wx-m}(NyRD#5adwObu_vOU9|Z@+6Vv=`e;?4|Z6_8NPgU1&e00osMe(AQ`z z1=OYvb*Z3|hG-H^q5WtYeS;1P)6q1Oj-%u0L3)CoqZjB!`XjwUuhJ%ZlQz@a^e+8_ zK5#5&xUnGwaH_F^%brvk+4(jwP@}mc)|TK$gMAvGFXM z<*-~fo#nB)ET64m1+0i|U}db5Rk3Oo-p>xOBkT-2&+6GFc9s3Yeq{~pCcDS}bvwJ7 z`?{Oz=C}*o6>h%!q5HAB!7X-6+^z0*cc;6@t#qs0Y97T6?r@h2E_sM2@I;=(lX+jB z%Cq@$UckTQ-}6)a9KXhI@FsqX-{trDpZt*s3M(uIixDDQOcqncbTL!R77N7+Q6P%N z7O_q26y@S8u}4&jD$yvOd9fbxJTK&R_u{<-FVP$54f95N8D6G0(VODsdNaJ4UV&HZ zHG3`IL$B3)DWhZ;*;U3$Q(DrITzWEICdf27QjV45IIY-Ww^WnLol*&-qYO=~vx$12-U%jIis6}eATCECIao~Ru5rM$g_j{vY$$y~UU6KF* delta 1217 zcmW;33v7*7902g!)@$vw-{btxIp00^eCK?p{k{}+xvpxvu7*v$Qc9^u)q9f&*$@-) zxVFrcwoEb4nbp?NbY&{6Ogu6v@hD@)n5Lug7#%USYPv1i?^jeES zDiqZxDjd~!WuWFpTxEy&DNFmN^$Vt^$UYgNU}{Z?wlXHBU+?sq1oRjp8?;^8SK1z} zLfflVYSr2i?WA@_tJBVD=e0}PE$z1Uo7SNHrFYh`-c28@57CF|BlH}7l>U*vR^Om+ z)Hmx}^lf^%{;j@W|4u)u-_-Bu?M5e~ixF#>1{lOhG*XNVW3VyG7;WSk`e z)E^B%gU~xD8|9)2XeL^Q)}Ru!4sAdi(PnfIoj|A2kEjlvL+4QgYDCTG8G4Rd(BJ44 z#6TB_h1Ve-7(^r}NP=$A1A0O)$bxLhg9$JRCc|`?3Gc#eSP08t4XlM?D246t1$+tR z@HJGxemDe&;d?j=b#MVL!DaXveu0~C3!0!A+OQ8t;|};W9EZE&1nl7MI1}gMId~Ob zjo08}T#763{s=ydPva*13_r&&@JrlE;)zBKf(Ry*I3$^LCn+RIdXo&2NwP>b8A^te zJTi`qCo{=hvV<%p%SnW6CELkPvWx5{`$!e3CI?6@xl0~UgEBghX4AQJ30+4&qh)jx z{hV&4+v!fai|(e8a(aZ;(qr^EJwZ>?GxRJyPcPDXdWAl)I$FZ&XT5EGXcbv|tmD=- ztI>L3J+dBK&DIO+rPXS+S?&Hb|1|$R{|EjB{zd-9{w4lT{YCz@{u2L7)`4|p2~1}u z17CcAYh{yR3=bXAjvQ z>`8zJh6WY~DgyO^hk=$rYoIOg5BKqC9>+CqaKtfByovQ~7j0hevo3FXp9uJ>ShMc@?kbkpui7KgQ4Ui@cs+;n(>M{wu%D@A60dUpvl5 zc3(TwF0kj@E9{89(*D?9Z@D^-dxyQ(uC%M{Y7r}lkV1(h;fZ7s5@C@l(nN;H z6!~JgC>Ay12XRJR5I4mg(J1bThvKpLQ#_L$C6CBKa+u7Q6Xj$%RnCyJj_Cv(*GYDII6)`mgq;D-5NEiPoiGtHUd6g#y} zlhf=xby`%6id9{ercC8mTuGIvToqIym8FKO(Q2$3uOgGwbTv!OR&&%`wMZ>ft5j*y zlcc9ft!`&G-UU~=z1%)-s+;a+y8YdO?nrmEo9E`c6Ws#0(4Fdj;_h>=y6s*kFTo?8 z^b)-kFYKjzBfK0h-<#+ac!l13-aPMpZ@#zCTjZ_wO1v`P|DvOPzKsil5Vh$)*$7}t