From 5fe28ee86c29cf3b6c6425702b2b8617caa774b6 Mon Sep 17 00:00:00 2001 From: zx Date: Tue, 3 Sep 2024 00:13:00 -0400 Subject: [PATCH] feat: INJECTION !! PYZULE FINALLY DOESNT SUCK! --- .ruff.toml | 2 +- extras/Cephei.framework/Cephei | Bin 0 -> 107216 bytes extras/Cephei.framework/Headers/Cephei.h | 8 + .../Headers/HBOutputForShellCommand.h | 19 + .../Cephei.framework/Headers/HBPreferences.h | 529 ++++++++++++++++++ .../Headers/HBRespringController.h | 26 + .../Headers/NSDictionary+HBAdditions.h | 20 + .../Headers/NSString+HBAdditions.h | 34 ++ extras/Cephei.framework/Info.plist | 28 + extras/CepheiPrefs.framework/CepheiPrefs | Bin 0 -> 198208 bytes extras/CepheiPrefs.framework/DemoAbout.plist | 144 +++++ extras/CepheiPrefs.framework/DemoRoot.plist | 422 ++++++++++++++ .../Headers/CepheiPrefs.h | 18 + .../Headers/HBAboutListController.h | 113 ++++ .../Headers/HBAppearanceSettings.h | 167 ++++++ .../Headers/HBDiscreteSliderTableCell.h | 46 ++ .../Headers/HBImageTableCell.h | 45 ++ .../Headers/HBInitialsLinkTableCell.h | 8 + .../Headers/HBLinkTableCell.h | 129 +++++ .../Headers/HBListController+Actions.h | 42 ++ .../Headers/HBListController.h | 260 +++++++++ .../Headers/HBListItemsController.h | 10 + .../Headers/HBPackageNameHeaderCell.h | 114 ++++ .../Headers/HBPackageTableCell.h | 63 +++ .../Headers/HBRootListController.h | 38 ++ .../Headers/HBSpinnerTableCell.h | 35 ++ .../Headers/HBStepperTableCell.h | 52 ++ .../Headers/HBSupportController.h | 77 +++ .../Headers/HBTintedTableCell.h | 43 ++ .../Headers/HBTwitterCell.h | 83 +++ .../PSListController+HBTintAdditions.h | 20 + extras/CepheiPrefs.framework/Info.plist | 30 + .../ar.lproj/Common.strings | 67 +++ .../ar.lproj/PackageCell.strings | 13 + .../ar.lproj/PackageNameHeaderCell.strings | 13 + .../ar.lproj/Support.strings | 21 + .../ca.lproj/Common.strings | 67 +++ .../ca.lproj/PackageCell.strings | 13 + .../ca.lproj/PackageNameHeaderCell.strings | 13 + .../ca.lproj/Support.strings | 13 + .../cs.lproj/Common.strings | 67 +++ .../cs.lproj/PackageCell.strings | 13 + .../cs.lproj/PackageNameHeaderCell.strings | 13 + .../cs.lproj/Support.strings | 13 + .../da.lproj/Common.strings | 67 +++ .../da.lproj/PackageCell.strings | 13 + .../da.lproj/PackageNameHeaderCell.strings | 13 + .../da.lproj/Support.strings | 13 + .../de.lproj/Common.strings | 67 +++ .../de.lproj/PackageCell.strings | 13 + .../de.lproj/PackageNameHeaderCell.strings | 13 + .../de.lproj/Support.strings | 21 + .../el.lproj/Common.strings | 67 +++ .../el.lproj/PackageCell.strings | 13 + .../el.lproj/PackageNameHeaderCell.strings | 13 + .../el.lproj/Support.strings | 13 + .../en.lproj/Common.strings | 67 +++ .../en.lproj/PackageCell.strings | 13 + .../en.lproj/PackageNameHeaderCell.strings | 13 + .../en.lproj/Support.strings | 21 + .../en_AU.lproj/Common.strings | 67 +++ .../en_AU.lproj/PackageCell.strings | 13 + .../en_AU.lproj/PackageNameHeaderCell.strings | 13 + .../en_AU.lproj/Support.strings | 21 + .../en_GB.lproj/Common.strings | 67 +++ .../en_GB.lproj/PackageCell.strings | 13 + .../en_GB.lproj/PackageNameHeaderCell.strings | 13 + .../en_GB.lproj/Support.strings | 21 + extras/CepheiPrefs.framework/entry.plist | 21 + .../es.lproj/Common.strings | 67 +++ .../es.lproj/PackageCell.strings | 13 + .../es.lproj/PackageNameHeaderCell.strings | 13 + .../es.lproj/Support.strings | 21 + .../es_MX.lproj/Common.strings | 67 +++ .../es_MX.lproj/PackageCell.strings | 13 + .../es_MX.lproj/PackageNameHeaderCell.strings | 13 + .../es_MX.lproj/Support.strings | 21 + .../fi.lproj/Common.strings | 67 +++ .../fi.lproj/PackageCell.strings | 13 + .../fi.lproj/PackageNameHeaderCell.strings | 13 + .../fi.lproj/Support.strings | 13 + .../fr.lproj/Common.strings | 67 +++ .../fr.lproj/PackageCell.strings | 13 + .../fr.lproj/PackageNameHeaderCell.strings | 13 + .../fr.lproj/Support.strings | 21 + .../fr_CA.lproj/Common.strings | 67 +++ .../fr_CA.lproj/PackageCell.strings | 13 + .../fr_CA.lproj/PackageNameHeaderCell.strings | 13 + .../fr_CA.lproj/Support.strings | 21 + .../he.lproj/Common.strings | 66 +++ .../he.lproj/PackageCell.strings | 13 + .../he.lproj/PackageNameHeaderCell.strings | 13 + .../he.lproj/Support.strings | 13 + extras/CepheiPrefs.framework/heart.png | Bin 0 -> 362 bytes extras/CepheiPrefs.framework/heart@2x.png | Bin 0 -> 792 bytes extras/CepheiPrefs.framework/heart@3x.png | Bin 0 -> 1262 bytes .../hi.lproj/Common.strings | 67 +++ .../hi.lproj/PackageCell.strings | 13 + .../hi.lproj/PackageNameHeaderCell.strings | 13 + .../hi.lproj/Support.strings | 13 + .../hr.lproj/Common.strings | 67 +++ .../hr.lproj/PackageCell.strings | 13 + .../hr.lproj/PackageNameHeaderCell.strings | 13 + .../hr.lproj/Support.strings | 13 + .../hu.lproj/Common.strings | 67 +++ .../hu.lproj/PackageCell.strings | 13 + .../hu.lproj/PackageNameHeaderCell.strings | 13 + .../hu.lproj/Support.strings | 13 + extras/CepheiPrefs.framework/icon.png | Bin 0 -> 192 bytes extras/CepheiPrefs.framework/icon@2x.png | Bin 0 -> 295 bytes extras/CepheiPrefs.framework/icon@3x.png | Bin 0 -> 362 bytes .../id.lproj/Common.strings | 67 +++ .../id.lproj/PackageCell.strings | 13 + .../id.lproj/PackageNameHeaderCell.strings | 13 + .../id.lproj/Support.strings | 21 + .../it.lproj/Common.strings | 66 +++ .../it.lproj/PackageCell.strings | 13 + .../it.lproj/PackageNameHeaderCell.strings | 13 + .../it.lproj/Support.strings | 21 + .../ja.lproj/Common.strings | 67 +++ .../ja.lproj/PackageCell.strings | 13 + .../ja.lproj/PackageNameHeaderCell.strings | 13 + .../ja.lproj/Support.strings | 13 + .../ko.lproj/Common.strings | 67 +++ .../ko.lproj/PackageCell.strings | 13 + .../ko.lproj/PackageNameHeaderCell.strings | 13 + .../ko.lproj/Support.strings | 21 + .../ms.lproj/Common.strings | 67 +++ .../ms.lproj/PackageCell.strings | 13 + .../ms.lproj/PackageNameHeaderCell.strings | 13 + .../ms.lproj/Support.strings | 21 + .../nb.lproj/Common.strings | 67 +++ .../nb.lproj/PackageCell.strings | 13 + .../nb.lproj/PackageNameHeaderCell.strings | 13 + .../nb.lproj/Support.strings | 13 + .../nl.lproj/Common.strings | 67 +++ .../nl.lproj/PackageCell.strings | 13 + .../nl.lproj/PackageNameHeaderCell.strings | 13 + .../nl.lproj/Support.strings | 21 + extras/CepheiPrefs.framework/package.png | Bin 0 -> 488 bytes extras/CepheiPrefs.framework/package@2x.png | Bin 0 -> 909 bytes extras/CepheiPrefs.framework/package@3x.png | Bin 0 -> 1317 bytes .../pl.lproj/Common.strings | 67 +++ .../pl.lproj/PackageCell.strings | 13 + .../pl.lproj/PackageNameHeaderCell.strings | 13 + .../pl.lproj/Support.strings | 21 + .../pt.lproj/Common.strings | 66 +++ .../pt.lproj/PackageCell.strings | 13 + .../pt.lproj/PackageNameHeaderCell.strings | 13 + .../pt.lproj/Support.strings | 21 + .../pt_PT.lproj/Common.strings | 67 +++ .../pt_PT.lproj/PackageCell.strings | 13 + .../pt_PT.lproj/PackageNameHeaderCell.strings | 13 + .../pt_PT.lproj/Support.strings | 13 + .../ro.lproj/Common.strings | 67 +++ .../ro.lproj/PackageCell.strings | 13 + .../ro.lproj/PackageNameHeaderCell.strings | 13 + .../ro.lproj/Support.strings | 21 + .../ru.lproj/Common.strings | 67 +++ .../ru.lproj/PackageCell.strings | 13 + .../ru.lproj/PackageNameHeaderCell.strings | 13 + .../ru.lproj/Support.strings | 21 + extras/CepheiPrefs.framework/safari.png | Bin 0 -> 434 bytes extras/CepheiPrefs.framework/safari@2x.png | Bin 0 -> 916 bytes extras/CepheiPrefs.framework/safari@3x.png | Bin 0 -> 1353 bytes .../sk.lproj/Common.strings | 67 +++ .../sk.lproj/PackageCell.strings | 13 + .../sk.lproj/PackageNameHeaderCell.strings | 13 + .../sk.lproj/Support.strings | 13 + .../sv.lproj/Common.strings | 67 +++ .../sv.lproj/PackageCell.strings | 13 + .../sv.lproj/PackageNameHeaderCell.strings | 13 + .../sv.lproj/Support.strings | 13 + .../th.lproj/Common.strings | 67 +++ .../th.lproj/PackageCell.strings | 13 + .../th.lproj/PackageNameHeaderCell.strings | 13 + .../th.lproj/Support.strings | 21 + .../tr.lproj/Common.strings | 67 +++ .../tr.lproj/PackageCell.strings | 13 + .../tr.lproj/PackageNameHeaderCell.strings | 13 + .../tr.lproj/Support.strings | 21 + extras/CepheiPrefs.framework/twitter.png | Bin 0 -> 248 bytes extras/CepheiPrefs.framework/twitter@2x.png | Bin 0 -> 451 bytes extras/CepheiPrefs.framework/twitter@3x.png | Bin 0 -> 621 bytes .../uk.lproj/Common.strings | 63 +++ .../uk.lproj/PackageCell.strings | 13 + .../uk.lproj/PackageNameHeaderCell.strings | 13 + .../uk.lproj/Support.strings | 13 + .../vi.lproj/Common.strings | 67 +++ .../vi.lproj/PackageCell.strings | 13 + .../vi.lproj/PackageNameHeaderCell.strings | 13 + .../vi.lproj/Support.strings | 13 + .../zh_CN.lproj/Common.strings | 63 +++ .../zh_CN.lproj/PackageCell.strings | 13 + .../zh_CN.lproj/PackageNameHeaderCell.strings | 13 + .../zh_CN.lproj/Support.strings | 13 + .../zh_HK.lproj/Common.strings | 63 +++ .../zh_HK.lproj/PackageCell.strings | 13 + .../zh_HK.lproj/PackageNameHeaderCell.strings | 13 + .../zh_HK.lproj/Support.strings | 13 + .../zh_TW.lproj/Common.strings | 67 +++ .../zh_TW.lproj/PackageCell.strings | 13 + .../zh_TW.lproj/PackageNameHeaderCell.strings | 13 + .../zh_TW.lproj/Support.strings | 21 + extras/CepheiUI.framework/CepheiUI | Bin 0 -> 69024 bytes extras/CepheiUI.framework/Headers/CepheiUI.h | 2 + .../Headers/CompactConstraint.h | 7 + .../NSLayoutConstraint+CompactConstraint.h | 29 + .../Headers/UIColor+HBAdditions.h | 79 +++ .../Headers/UIView+CompactConstraint.h | 29 + extras/CepheiUI.framework/Info.plist | Bin 0 -> 391 bytes extras/Orion.framework/Info.plist | 28 + extras/Orion.framework/Orion | Bin 0 -> 216448 bytes src/__main__.py | 10 +- src/cyan.py | 30 +- src/tbhtypes.py | 221 +++++++- src/tbhutils.py | 60 +- tools/compressIPA.sh | 5 + 218 files changed, 7414 insertions(+), 19 deletions(-) create mode 100644 extras/Cephei.framework/Cephei create mode 100644 extras/Cephei.framework/Headers/Cephei.h create mode 100644 extras/Cephei.framework/Headers/HBOutputForShellCommand.h create mode 100644 extras/Cephei.framework/Headers/HBPreferences.h create mode 100644 extras/Cephei.framework/Headers/HBRespringController.h create mode 100644 extras/Cephei.framework/Headers/NSDictionary+HBAdditions.h create mode 100644 extras/Cephei.framework/Headers/NSString+HBAdditions.h create mode 100644 extras/Cephei.framework/Info.plist create mode 100644 extras/CepheiPrefs.framework/CepheiPrefs create mode 100644 extras/CepheiPrefs.framework/DemoAbout.plist create mode 100644 extras/CepheiPrefs.framework/DemoRoot.plist create mode 100644 extras/CepheiPrefs.framework/Headers/CepheiPrefs.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBAboutListController.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBAppearanceSettings.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBDiscreteSliderTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBImageTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBInitialsLinkTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBLinkTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBListController+Actions.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBListController.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBListItemsController.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBPackageNameHeaderCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBPackageTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBRootListController.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBSpinnerTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBStepperTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBSupportController.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBTintedTableCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/HBTwitterCell.h create mode 100644 extras/CepheiPrefs.framework/Headers/PSListController+HBTintAdditions.h create mode 100644 extras/CepheiPrefs.framework/Info.plist create mode 100644 extras/CepheiPrefs.framework/ar.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/ar.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/ar.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/ar.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/ca.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/ca.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/ca.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/ca.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/cs.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/cs.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/cs.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/cs.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/da.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/da.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/da.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/da.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/de.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/de.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/de.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/de.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/el.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/el.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/el.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/el.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/en.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/en.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/en.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/en.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/en_AU.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/en_AU.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/en_AU.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/en_AU.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/en_GB.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/en_GB.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/en_GB.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/en_GB.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/entry.plist create mode 100644 extras/CepheiPrefs.framework/es.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/es.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/es.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/es.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/es_MX.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/es_MX.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/es_MX.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/es_MX.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/fi.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/fi.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/fi.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/fi.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/fr.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/fr.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/fr.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/fr.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/fr_CA.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/fr_CA.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/fr_CA.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/fr_CA.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/he.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/he.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/he.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/he.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/heart.png create mode 100644 extras/CepheiPrefs.framework/heart@2x.png create mode 100644 extras/CepheiPrefs.framework/heart@3x.png create mode 100644 extras/CepheiPrefs.framework/hi.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/hi.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/hi.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/hi.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/hr.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/hr.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/hr.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/hr.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/hu.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/hu.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/hu.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/hu.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/icon.png create mode 100644 extras/CepheiPrefs.framework/icon@2x.png create mode 100644 extras/CepheiPrefs.framework/icon@3x.png create mode 100644 extras/CepheiPrefs.framework/id.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/id.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/id.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/id.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/it.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/it.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/it.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/it.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/ja.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/ja.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/ja.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/ja.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/ko.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/ko.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/ko.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/ko.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/ms.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/ms.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/ms.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/ms.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/nb.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/nb.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/nb.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/nb.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/nl.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/nl.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/nl.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/nl.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/package.png create mode 100644 extras/CepheiPrefs.framework/package@2x.png create mode 100644 extras/CepheiPrefs.framework/package@3x.png create mode 100644 extras/CepheiPrefs.framework/pl.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/pl.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/pl.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/pl.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/pt.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/pt.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/pt.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/pt.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/pt_PT.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/pt_PT.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/pt_PT.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/pt_PT.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/ro.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/ro.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/ro.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/ro.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/ru.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/ru.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/ru.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/ru.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/safari.png create mode 100644 extras/CepheiPrefs.framework/safari@2x.png create mode 100644 extras/CepheiPrefs.framework/safari@3x.png create mode 100644 extras/CepheiPrefs.framework/sk.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/sk.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/sk.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/sk.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/sv.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/sv.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/sv.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/sv.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/th.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/th.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/th.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/th.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/tr.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/tr.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/tr.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/tr.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/twitter.png create mode 100644 extras/CepheiPrefs.framework/twitter@2x.png create mode 100644 extras/CepheiPrefs.framework/twitter@3x.png create mode 100644 extras/CepheiPrefs.framework/uk.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/uk.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/uk.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/uk.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/vi.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/vi.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/vi.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/vi.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/zh_CN.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/zh_CN.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/zh_CN.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/zh_CN.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/zh_HK.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/zh_HK.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/zh_HK.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/zh_HK.lproj/Support.strings create mode 100644 extras/CepheiPrefs.framework/zh_TW.lproj/Common.strings create mode 100644 extras/CepheiPrefs.framework/zh_TW.lproj/PackageCell.strings create mode 100644 extras/CepheiPrefs.framework/zh_TW.lproj/PackageNameHeaderCell.strings create mode 100644 extras/CepheiPrefs.framework/zh_TW.lproj/Support.strings create mode 100644 extras/CepheiUI.framework/CepheiUI create mode 100644 extras/CepheiUI.framework/Headers/CepheiUI.h create mode 100644 extras/CepheiUI.framework/Headers/CompactConstraint.h create mode 100644 extras/CepheiUI.framework/Headers/NSLayoutConstraint+CompactConstraint.h create mode 100644 extras/CepheiUI.framework/Headers/UIColor+HBAdditions.h create mode 100644 extras/CepheiUI.framework/Headers/UIView+CompactConstraint.h create mode 100644 extras/CepheiUI.framework/Info.plist create mode 100644 extras/Orion.framework/Info.plist create mode 100755 extras/Orion.framework/Orion create mode 100644 tools/compressIPA.sh diff --git a/.ruff.toml b/.ruff.toml index 23f9b37..103ce44 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -3,5 +3,5 @@ indent-width = 2 target-version = "py312" [lint] -select = ["W", "E", "F", "C"] +select = ["W", "E", "F"] diff --git a/extras/Cephei.framework/Cephei b/extras/Cephei.framework/Cephei new file mode 100644 index 0000000000000000000000000000000000000000..51eeef1fac99c4a58a39ea56b98aa7307b295283 GIT binary patch literal 107216 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 + +NS_ASSUME_NONNULL_BEGIN + +/// Executes a shell command and returns its output. +/// +/// @param command The shell command to run. +/// @param returnCode A pointer to an integer that will contain the return code of the command. +/// @return The output of the provided command. +FOUNDATION_EXPORT NSString * _Nullable HBOutputForShellCommandWithReturnCode(NSString *command, int *returnCode); + +/// Executes a shell command and returns its output. +/// +/// @param command The shell command to run. +/// @return The output of the provided command, or nil if the command returned with a code other +/// than 0. +FOUNDATION_EXPORT NSString * _Nullable HBOutputForShellCommand(NSString *command); + +NS_ASSUME_NONNULL_END diff --git a/extras/Cephei.framework/Headers/HBPreferences.h b/extras/Cephei.framework/Headers/HBPreferences.h new file mode 100644 index 0000000..6bd3bdb --- /dev/null +++ b/extras/Cephei.framework/Headers/HBPreferences.h @@ -0,0 +1,529 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^HBPreferencesChangeCallback)(void); + +typedef void (^HBPreferencesValueChangeCallback)(NSString *key, id _Nullable value); + +/// The HBPreferences class in Cephei provides an interface for managing user-defined +/// preferences of a tweak, and the default values used when the user has not yet changed a value. +/// +/// `HBPreferences` is very similar to `NSUserDefaults`, however it is specifically tailored to iOS +/// tweak development, since tweaks may be loaded into a sandboxed process (most obviously, App +/// Store apps, but also system apps like Safari), or one that runs as the `root` user (for +/// instance, iFile, although these apps are slowly changing their model so they now run as mobile). +/// In both of these cases, using `NSUserDefaults` will result in reading from preferences inside +/// the sandbox, or inside `root`’s home directory; both of which are not what is expected. +/// +/// Advantages `HBPreferences` has over `NSUserDefaults` are: +/// +/// - Directly reading the property list from the `mobile` user’s home directory, to support +/// sandboxed apps and apps running as `root`. +/// - Intuitive method of setting a default preference value. +/// - Updating of the app/tweak’s variables when preferences are changed. +/// - Keyed subscripting is allowed, which enables simple array syntax. +/// - Values in the preferences plist are called preferences, not defaults, to avoid ambiguity - +/// `NSUserDefaults` uses “defaults” to refer to both preferences themselves and the fallback values +/// if a key doesn’t exist. +/// +/// Ensure you read the discussion for `-registerObject:default:forKey:` before using the automatic +/// updating mechanism. `-objectForKey:` does not update as another process updates the preferences +/// on iOS 7 or older; if you need to support older iOS versions, use the registration methods +/// instead. +/// +/// As of Cephei 1.17, HBPreferences supports Key-Value Observation. As such, you may subscribe to +/// changes made to preferences through observer callbacks. The `-registerPreferenceChangeBlock:` +/// and `-registerPreferenceChangeBlockForKey:block:` methods are provided to subscribe to +/// preference changes via a callback block since Cephei 1.3, and you can additionally observe +/// `HBPreferencesDidChangeNotification`. +/// +/// ### Example usage +/// In Objective-C/Logos: +/// +/// ```logos +/// HBPreferences *preferences; +/// BOOL doThing; +/// +/// %ctor { +/// preferences = [[HBPreferences alloc] initWithIdentifier:@"ws.hbang.common.demo"]; +/// [preferences registerDefaults:@{ +/// @"Enabled": @YES, +/// @"AnotherSetting": @1.f +/// }]; +/// +/// [preferences registerBool:&doThing default:NO forKey:@"DoThing"]; +/// +/// NSLog(@"Am I enabled? %i", [preferences boolForKey:@"Enabled"]); +/// NSLog(@"Can I do thing? %i", doThing); +/// } +/// ``` +/// +/// In Swift: +/// +/// ```swift +/// class Preferences { +/// +/// private let preferences = HBPreferences(identifier: "ws.hbang.common.demo") +/// +/// // Example using registration method +/// private(set) var canDoThing: ObjCBool = false +/// +/// // Example using custom getter and setter +/// var anotherSetting: Int { +/// get { preferences["AnotherSetting"] as? Int ?? -1 } +/// set { preferences["AnotherSetting"] = newValue } +/// } +/// +/// // Example using KVO observation +/// private var doThingObserver: NSKeyValueObserving? +/// +/// init() { +/// preferences.register(defaults: [ +/// "Enabled": true, +/// "AnotherSetting": 1 +/// ]) +/// +/// preferences.register(&canDoThing, default: false, forKey: "DoThing") +/// +/// print("Am I enabled? \(preferences["Enabled"] as? Bool ?? false)") +/// print("Can I do thing? \(canDoThing)") +/// } +/// +/// } +/// ``` +/// +/// ### References +/// * [NSUserDefaults in Practice](http://dscoder.com/defaults.html) +/// +/// ### Security +/// As of Cephei 1.12, HBPreferences restricts most Apple preferences (identifiers starting with +/// `com.apple.…`) from being read/written from a sandboxed process. This protects against a +/// malicious app using HBPreferences as a way to gather sensitive information or change system +/// preferences without the user’s knowledge. For instance, an App Store app could +/// [phish for the user’s Apple ID login](https://krausefx.com/blog/ios-privacy-stealpassword-easily-get-the-users-apple-id-password-just-by-asking), +/// creating a very real-looking login prompt by pre-filling their email address in the username box, +/// or gain access to the numbers/email addresses of people the user has recently contacted. +/// +/// There is currently no way to avoid this restriction while still using HBPreferences. If you need +/// access to Apple preferences, design your code to not need to do this from within the sandbox. +/// This could be done [using IPC](http://iphonedevwiki.net/index.php/IPC) from an unsandboxed +/// process such as SpringBoard. Avoid sending sensitive information via IPC to sandboxed apps, as +/// they can still get access to data you send through various ways. +@interface HBPreferences : NSObject + +/// @name Initializing an HBPreferences Object + +/// Creates an instance of the class for the specified identifier. +/// +/// @param identifier The identifier to be used. This is usually the same as the package identifier +/// of the tweak. +/// @return An autoreleased instance of HBPreferences for the specified identifier. ++ (instancetype)preferencesForIdentifier:(NSString *)identifier NS_SWIFT_UNAVAILABLE(""); + +/// Initializes an instance of the class for the specified identifier. +/// +/// @param identifier The identifier to be used. This is usually the same as the package identifier +/// of the tweak. +/// @return An autoreleased instance of HBPreferences for the specified identifier. +- (instancetype)initWithIdentifier:(NSString *)identifier NS_DESIGNATED_INITIALIZER; + +/// The preferences identifier provided at initialisation. +@property (nonatomic, retain, readonly) NSString *identifier; + +/// @name Synchronizing Preferences + +/// Synchronizes preferences data to prevent race conditions. +/// +/// On iOS 8.0 and later, waits until all communications between the `cfprefsd` daemon and the +/// current process have completed, preventing race conditions and guaranteeing no data will be +/// lost. Prior to iOS 8.0, writes all pending changes to disk, and reads latest preferences from +/// disk. +/// +/// Deprecated. On iOS 12.0 and later, synchronization is +/// [no longer required](https://developer.apple.com/documentation/ios-ipados-release-notes/foundation-release-notes#UserDefaults). +/// The underlying CFPreferencesSynchronize() function simply returns `YES`. +/// +/// For earlier iOS releases, do not use this method directly unless you have a specific need. +/// HBPreferences will synchronize automatically when needed. For further information on what this +/// method does and when to use it, refer to +/// [NSUserDefaults in Practice](http://dscoder.com/defaults.html) § “Sharing Defaults Between +/// Programs”. +/// +/// @return `YES` if synchronization was successful, `NO` if an error occurred. +- (BOOL)synchronize API_DEPRECATED("Synchronization is no longer required as of iOS 12", ios(5.0, 12.0)); + +/// @name Registering Default Preference Values + +/// The default preferences to be used when no value has been set by the user. +/// +/// You may modify the values of this dictionary directly. +@property (nonatomic, copy, readonly) NSMutableDictionary *defaults; + +/// Adds the contents of the specified dictionary to the defaults property. +/// +/// Merges the provided dictionary with the mutable dictionary found on the defaults property. +/// +/// @param defaultValues The dictionary of keys and values you want to register. +/// @see `defaults` +- (void)registerDefaults:(NSDictionary *)defaultValues NS_SWIFT_NAME(register(defaults:)); + +/// @name Getting Preference Values + +/// Returns a dictionary that contains all preferences that are set. +/// +/// This does not include default values. +/// +/// @return A dictionary containing all keys and values. +- (NSDictionary *)dictionaryRepresentation; + +/// Returns the object associated with the specified key. +/// +/// If the preference is not yet set, returns the default. If no default is set, returns `nil`. +/// +/// @param key The key for which to return the corresponding value. +/// @return The object associated with the specified key. +/// @warning You must manually synchronize preferences or use `-registerObject:default:forKey:` for +/// this value to be updated when running on iOS 7 or older. +- (id)objectForKey:(NSString *)key; + +/// Returns the integer value associated with the specified key. +/// +/// If the preference is not yet set, returns the default. If no default is set, returns `nil`. +/// +/// @param key The key for which to return the corresponding value. +/// @return The integer value associated with the specified key. +/// @see `-objectForKey:` +- (NSInteger)integerForKey:(NSString *)key; + +/// Returns the unsigned integer value associated with the specified key. +/// +/// If the preference is not yet set, returns the default. If no default is set, returns `nil`. +/// +/// @param key The key for which to return the corresponding value. +/// @return The unsigned integer value associated with the specified key. +/// @see `-objectForKey:` +- (NSUInteger)unsignedIntegerForKey:(NSString *)key; + +/// Returns the floating-point value associated with the specified key. +/// +/// If the preference is not yet set, returns the default. If no default is set, returns `nil`. +/// +/// @param key The key for which to return the corresponding value. +/// @return The floating-point value associated with the specified key. +/// @see `-objectForKey:` +- (CGFloat)floatForKey:(NSString *)key; + +/// Returns the double value associated with the specified key. +/// +/// If the preference is not yet set, returns the default. If no default is set, returns `nil`. +/// +/// @param key The key for which to return the corresponding value. +/// @return The double value associated with the specified key. +/// @see `-objectForKey:` +- (double)doubleForKey:(NSString *)key; + +/// Returns the Boolean value associated with the specified key. +/// +/// If the preference is not yet set, returns the default. If no default is set, returns `nil`. +/// +/// @param key The key for which to return the corresponding value. +/// @return The Boolean value associated with the specified key. +/// @see `-objectForKey:` +- (BOOL)boolForKey:(NSString *)key; + +/// Returns the value associated with a given key. +/// +/// This method behaves the same as `-objectForKey:`, and enables the preferences object to be used +/// with a subscript (square brackets). For example: +/// +/// Objective-C: +/// +/// ```objc +/// NSString *fooBar = preferences[@"FooBar"]; +/// preferences[@"Awesome"] = @YES; +/// ``` +/// +/// Swift: +/// +/// ```swift +/// let fooBar = preferences["FooBar"] as? String +/// preferences["Awesome"] = true +/// ``` +/// +/// @param key The key for which to return the corresponding value. +/// @return The value associated with the specified key. +/// @see `-objectForKey:` +- (id)objectForKeyedSubscript:(id)key; + +/// Returns the object associated with the specified key, or if no user preference is set, the +/// provided default. +/// +/// @param key The key for which to return the corresponding value. +/// @param defaultValue The default value to use when no user preference is set. +/// @return The object associated with the specified key, or the default value. +- (id)objectForKey:(NSString *)key default:(nullable id)defaultValue; + +/// Returns the integer value associated with the specified key, or if no user preference is set, +/// the provided default. +/// +/// @param key The key for which to return the corresponding value. +/// @param defaultValue The default value to use when no user preference is set. +/// @return The integer value associated with the specified key, or the default value. +/// @see `-objectForKey:default:` +- (NSInteger)integerForKey:(NSString *)key default:(NSInteger)defaultValue; + +/// Returns the unsigned integer value associated with the specified key, or if no user preference +/// is set, the provided default. +/// +/// @param key The key for which to return the corresponding value. +/// @param defaultValue The default value to use when no user preference is set. +/// @return The unsigned integer value associated with the specified key, or the default value. +/// @see `-objectForKey:default:` +- (NSUInteger)unsignedIntegerForKey:(NSString *)key default:(NSUInteger)defaultValue; + +/// Returns the floating-point value associated with the specified key, or if no user preference is +/// set, the provided default. +/// +/// @param key The key for which to return the corresponding value. +/// @param defaultValue The default value to use when no user preference is set. +/// @return The floating-point value associated with the specified key, or the default value. +/// @see `-objectForKey:default:` +- (CGFloat)floatForKey:(NSString *)key default:(CGFloat)defaultValue; + +/// Returns the double value associated with the specified key, or if no user preference is set, +/// the provided default. +/// +/// @param key The key for which to return the corresponding value. +/// @param defaultValue The default value to use when no user preference is set. +/// @return The double value associated with the specified key, or the default value. +/// @see `-objectForKey:default:` +- (double)doubleForKey:(NSString *)key default:(double)defaultValue; + +/// Returns the Boolean value associated with the specified key, or if no user preference is set, +/// the provided default. +/// +/// @param key The key for which to return the corresponding value. +/// @param defaultValue The default value to use when no user preference is set. +/// @return The Boolean value associated with the specified key, or the default value. +/// @see `-objectForKey:default:` +- (BOOL)boolForKey:(NSString *)key default:(BOOL)defaultValue; + +/// @name Setting Preference Values + +/// Sets the value of the specified key. +/// +/// You should only call these methods if you are certain that the process is running as the +/// `mobile` user. +/// +/// @param value The object to store in the preferences. +/// @param key The key with which to associate with the value. +/// @exception HBPreferencesNotMobileException Thrown when the method is called by a process not +/// running as the `mobile` user. +- (void)setObject:(nullable id)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:)); + +/// Sets the value of the specified key to the specified integer value. +/// +/// This is a convenience method that calls `-setObject:forKey:`. See the discussion of that method +/// for more details. +/// +/// @param value The integer value to store in the preferences. +/// @param key The key with which to associate with the value. +/// @see `-setObject:forKey:` +- (void)setInteger:(NSInteger)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:)); + +/// Sets the value of the specified key to the specified unsigned integer value. +/// +/// This is a convenience method that calls `-setObject:forKey:`. See the discussion of that method +/// for more details. +/// +/// @param value The unsigned integer value to store in the preferences. +/// @param key The key with which to associate with the value. +/// @see `-setObject:forKey:` +- (void)setUnsignedInteger:(NSUInteger)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:)); + +/// Sets the value of the specified key to the specified floating-point value. +/// +/// This is a convenience method that calls `-setObject:forKey:`. See the discussion of that method +/// for more details. +/// +/// @param value The floating-point value to store in the preferences. +/// @param key The key with which to associate with the value. +/// @see `-setObject:forKey:` +- (void)setFloat:(CGFloat)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:)); + +/// Sets the value of the specified key to the specified double value. +/// +/// This is a convenience method that calls `-setObject:forKey:`. See the discussion of that method +/// for more details. +/// +/// @param value The double value to store in the preferences. +/// @param key The key with which to associate with the value. +/// @see `-setObject:forKey:` +- (void)setDouble:(double)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:)); + +/// Sets the value of the specified key to the specified Boolean value. +/// +/// This is a convenience method that calls `-setObject:forKey:`. See the discussion of that method +/// for more details. +/// +/// @param value The Boolean value to store in the preferences. +/// @param key The key with which to associate with the value. +/// @see `-setObject:forKey:` +- (void)setBool:(BOOL)value forKey:(NSString *)key NS_SWIFT_NAME(set(_:forKey:)); + +/// Sets the value of the specified key to the specified value. +/// +/// This method behaves the same as `-setObject:forKey:`, and enables the preferences object to be +/// used with a subscript (square brackets). For example: +/// +/// ```objc +/// NSString *fooBar = preferences[@"FooBar"]; +/// preferences[@"Awesome"] = @YES; +/// ``` +/// +/// @param object The value to store in the preferences. +/// @param key The key with which to associate with the value. +- (void)setObject:(nullable id)object forKeyedSubscript:(id)key; + +/// @name Removing Preference Values + +/// Removes a given key and its associated value from the dictionary. +/// +/// @param key The key to remove. +- (void)removeObjectForKey:(NSString *)key NS_SWIFT_NAME(removeValue(forKey:)); + +/// Removes all stored preferences. +/// +/// This method acts in the same way as discussed in `-removeObjectForKey:`. +- (void)removeAllObjects NS_SWIFT_NAME(removeAll()); + +/// @name Registering Variables + +/// Register an object to be automatically set to the user’s preference. +/// +/// If the preference is not yet set, the object will be set to the provided default. +/// +/// You must post a Darwin notification after updating preferences for this to work. In particular, +/// it must be set to the value of identifier, followed by `/ReloadPrefs` - for instance, +/// `ws.hbang.common.demo/ReloadPrefs`. In a Preferences specifier property list, you can use the +/// `PostNotification` key on your specifiers to achieve this: +/// +/// ```xml +/// +/// … +/// PostNotification +/// ws.hbang.common.demo/ReloadPrefs +/// +/// ``` +/// +/// @param object The pointer to the object. +/// @param defaultValue The default value to be used if no user preference is set. +/// @param key The key in the preferences property list. +/// @see `-registerObject:default:forKey:` +- (void)registerObject:(_Nullable id __strong * _Nonnull)object default:(nullable id)defaultValue forKey:(NSString *)key NS_SWIFT_NAME(register(_:default:forKey:)); + +/// Register an integer value to be automatically set to the user’s preference. +/// +/// If the preference is not yet set, the object will be set to the provided default. +/// +/// @param object The pointer to the integer. +/// @param defaultValue The default value to be used if no user preference is set. +/// @param key The key in the preferences property list. +/// @see `-registerObject:default:forKey:` +- (void)registerInteger:(NSInteger *)object default:(NSInteger)defaultValue forKey:(NSString *)key NS_SWIFT_NAME(register(_:default:forKey:)); + +/// Register an unsigned integer value to be automatically set to the user’s preference. +/// +/// If the preference is not yet set, the object will be set to the provided default. +/// +/// @param object The pointer to the unsigned integer. +/// @param defaultValue The default value to be used if no user preference is set. +/// @param key The key in the preferences property list. +/// @see `-registerObject:default:forKey:` +- (void)registerUnsignedInteger:(NSUInteger *)object default:(NSUInteger)defaultValue forKey:(NSString *)key NS_SWIFT_NAME(register(_:default:forKey:)); + +/// Register a floating-point value to be automatically set to the user’s preference. +/// +/// If the preference is not yet set, the object will be set to the provided default. +/// +/// @param object The pointer to the integer. +/// @param defaultValue The default value to be used if no user preference is set. +/// @param key The key in the preferences property list. +/// @see `-registerObject:default:forKey:` +- (void)registerFloat:(CGFloat *)object default:(CGFloat)defaultValue forKey:(NSString *)key NS_SWIFT_NAME(register(_:default:forKey:)); + +/// Register a double value to be automatically set to the user’s preference. +/// +/// If the preference is not yet set, the object will be set to the provided default. +/// +/// @param object The pointer to the double. +/// @param defaultValue The default value to be used if no user preference is set. +/// @param key The key in the preferences property list. +/// @see `-registerObject:default:forKey:` +- (void)registerDouble:(double *)object default:(double)defaultValue forKey:(NSString *)key NS_SWIFT_NAME(register(_:default:forKey:)); + +/// Register a Boolean value to be automatically set to the user’s preference. +/// +/// If the preference is not yet set, the object will be set to the provided default. +/// +/// @param object The pointer to the Boolean. +/// @param defaultValue The default value to be used if no user preference is set. +/// @param key The key in the preferences property list. +/// @see `-registerObject:default:forKey:` +- (void)registerBool:(BOOL *)object default:(BOOL)defaultValue forKey:(NSString *)key NS_SWIFT_NAME(register(_:default:forKey:)); + +/// @name Preference Change Callbacks + +/// Register a block to be called when a preference change is detected. +/// +/// Blocks are called after HBPreferences’ cache of values is updated. The block will also be called +/// immediately after calling this method. See `registerObject:default:forKey:` for details on how +/// to set up callbacks. +/// +/// @param callback A block object called when the specified key’s value changes. The block object +/// takes no parameters and returns no value. +/// @see `-registerObject:default:forKey:` +- (void)registerPreferenceChangeBlock:(HBPreferencesChangeCallback)callback; + +/// Register a block to be called when a specific preference is changed. +/// +/// Blocks are called after HBPreferences’ cache of values is updated. The block will also be called +/// immediately after calling this method. See `registerObject:default:forKey:` for details on how +/// to set up callbacks. +/// +/// @param key The key to listen for. +/// @param callback A block object called when the specified key’s value changes. The block object’s +/// parameters are the key and its new value. +/// @see `-registerObject:default:forKey:` +- (void)registerPreferenceChangeBlockForKey:(NSString *)key block:(HBPreferencesValueChangeCallback)callback; + +/// Register a block to be called when a specific preference is changed. +/// +/// Blocks are called after HBPreferences’ cache of values is updated. The block will also be called +/// immediately after calling this method. See `-registerObject:default:forKey:` for details on how +/// to set up callbacks. +/// +/// Deprecated. This method signature changed in Cephei 1.17 to better support the order of +/// arguments preferred by Swift closure syntax. Use `-registerPreferenceChangeBlockForKey:block:` +/// instead. +/// +/// @param callback A block object called when the specified key’s value changes. The block object’s +/// parameters are the key and its new value. +/// @param key The key to listen for. +/// @see `-registerPreferenceChangeBlockForKey:block:` +/// @see `-registerObject:default:forKey:` +- (void)registerPreferenceChangeBlock:(HBPreferencesValueChangeCallback)callback forKey:(NSString *)key __attribute((deprecated("Use registerPreferenceChangeBlockForKey:block: instead."))); + +@end + +/// Name of an exception that occurs when attempting to set preferences from a process not running +/// as the `mobile` user. +extern NSExceptionName const HBPreferencesNotMobileException NS_SWIFT_NAME(HBPreferences.notMobileException); + +/// This notification is posted when a change is made to a registered preferences identifier. The +/// notification object is the associated HBPreferences object. +extern NSNotificationName const HBPreferencesDidChangeNotification NS_SWIFT_NAME(HBPreferences.didChangeNotification); + +NS_ASSUME_NONNULL_END diff --git a/extras/Cephei.framework/Headers/HBRespringController.h b/extras/Cephei.framework/Headers/HBRespringController.h new file mode 100644 index 0000000..c8e9fb1 --- /dev/null +++ b/extras/Cephei.framework/Headers/HBRespringController.h @@ -0,0 +1,26 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +/// The HBRespringController class in Cephei provides conveniences for restarting the system app +/// (usually SpringBoard). It also ensures battery usage statistics are not lost when performing the +/// restart. +@interface HBRespringController : NSObject + +/// Restart the system app. +/// +/// On iOS 8.0 and newer, fades out and then returns to the home screen (system remains unlocked). +/// On older iOS versions, a standard restart occurs. ++ (void)respring; + +/// Restart the system app and immediately launch a URL. +/// +/// Requires iOS 8.0 or newer. On older iOS versions, a standard restart occurs and the URL is not +/// opened. +/// +/// @param returnURL The URL to launch after restarting. ++ (void)respringAndReturnTo:(nullable NSURL *)returnURL; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/Cephei.framework/Headers/NSDictionary+HBAdditions.h b/extras/Cephei.framework/Headers/NSDictionary+HBAdditions.h new file mode 100644 index 0000000..8ba01bb --- /dev/null +++ b/extras/Cephei.framework/Headers/NSDictionary+HBAdditions.h @@ -0,0 +1,20 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +/// NSDictionary (HBAdditions) is a class category in Cephei that provides some convenience methods. +@interface NSDictionary (HBAdditions) + +/// Constructs and returns an NSString object that is the result of joining the dictionary keys and +/// values into an HTTP query string. +/// +/// On iOS 8.0 and newer, this uses the built in NSURLComponents functionality to deserialize the +/// query string. On earlier versions, uses an approximation implemented within Cephei. This +/// implementation is simplistic and does not handle edge cases that NSURLComponents does support. +/// +/// @return An NSString containing an HTTP query string. +- (NSString *)hb_queryString; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/Cephei.framework/Headers/NSString+HBAdditions.h b/extras/Cephei.framework/Headers/NSString+HBAdditions.h new file mode 100644 index 0000000..4fff26c --- /dev/null +++ b/extras/Cephei.framework/Headers/NSString+HBAdditions.h @@ -0,0 +1,34 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +/// NSString (HBAdditions) is a class category in Cephei that provides some convenience methods. +@interface NSString (HBAdditions) + +/// Returns a string encoded for an HTTP query parameter. +/// +/// This method encodes a variety of symbols that can conflict with other portions of a URL, such as +/// `&` and `=`, and other similar symbols that could otherwise be misinterpreted by some +/// implementations. +/// +/// @return A string encoded for an HTTP query parameter. +- (NSString *)hb_stringByEncodingQueryPercentEscapes; + +/// Returns a string decoded from an HTTP query parameter. +/// +/// This method decodes percent escapes, as well as spaces encoded with a `+`. +/// +/// @return A string decoded from an HTTP query parameter. +- (NSString *)hb_stringByDecodingQueryPercentEscapes; + +/// Returns a dictionary containing the HTTP query parameters in the string. +/// +/// The string is expected to be in the format `key=value&key=value`, with both keys and values +/// encoded where necessary. +/// +/// @return An NSDictionary object containing the keys and values from the query string. +- (NSDictionary *)hb_queryStringComponents; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/Cephei.framework/Info.plist b/extras/Cephei.framework/Info.plist new file mode 100644 index 0000000..5fbbb2d --- /dev/null +++ b/extras/Cephei.framework/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + Cephei + CFBundleIdentifier + ws.hbang.common + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Cephei + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTPlatformName + iphoneos + HBPackageIdentifier + ws.hbang.common + + diff --git a/extras/CepheiPrefs.framework/CepheiPrefs b/extras/CepheiPrefs.framework/CepheiPrefs new file mode 100644 index 0000000000000000000000000000000000000000..4ef33f7e4270510b58b75a712b690a41db78ddfd GIT binary patch literal 198208 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 z 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

I1u_MYEFEIH3IW674_BQ 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 DCfhs+ literal 0 HcmV?d00001 diff --git a/extras/CepheiPrefs.framework/DemoAbout.plist b/extras/CepheiPrefs.framework/DemoAbout.plist new file mode 100644 index 0000000..c39b8bf --- /dev/null +++ b/extras/CepheiPrefs.framework/DemoAbout.plist @@ -0,0 +1,144 @@ + + + + + items + + + cell + PSGroupCell + condensed + + headerCellClass + HBPackageNameHeaderCell + icon + icon.png + packageIdentifier + ws.hbang.common + packageNameOverride + Cephei + titleColor + #ffffff + subtitleColor + #aaaaaa + + + cell + PSGroupCell + + + big + + cellClass + HBLinkTableCell + height + 64 + label + HASHBANG Productions + subtitle + VISIT_WEBSITE + url + https://hashbang.productions/ + iconURL + https://hashbang.productions/favicon.ico + + + cell + PSGroupCell + label + Follow Us + + + cellClass + HBTwitterCell + label + HASHBANG Productions + user + hashbang + userID + 945654024 + + + cellClass + HBTwitterCell + label + Chariz + user + CharizTeam + userID + 3066301983 + + + cellClass + HBTwitterCell + label + Adam Demasi + user + hbkirb + userID + 103767197 + + + cell + PSGroupCell + footerText + DONATE_FOOTER + + + action + hb_sendSupportEmail + cell + PSLinkCell + cellClass + HBTintedTableCell + defaults + ws.hbang.common + label + EMAIL_SUPPORT + iconImageSystem + + name + envelope + backgroundColor + #007aff + + + + cell + PSButtonCell + cellClass + HBLinkTableCell + label + TRANSLATORS + url + https://hashbang.productions/translations/ + iconImageSystem + + name + globe + backgroundColor + #34c759 + + + + cell + PSButtonCell + cellClass + HBLinkTableCell + label + DONATE + url + https://hashbang.productions/donate/ + iconImageSystem + + name + heart + backgroundColor + #ff3b30 + + + + title + ABOUT + + diff --git a/extras/CepheiPrefs.framework/DemoRoot.plist b/extras/CepheiPrefs.framework/DemoRoot.plist new file mode 100644 index 0000000..e1451e2 --- /dev/null +++ b/extras/CepheiPrefs.framework/DemoRoot.plist @@ -0,0 +1,422 @@ + + + + + items + + + cell + PSGroupCell + headerCellClass + HBPackageNameHeaderCell + icon + icon.png + packageIdentifier + ws.hbang.common + packageNameOverride + Cephei + titleColor + #ffffff + subtitleColor + #aaaaaa + footerText + This is a demo of Cephei features. Refer to https://hbang.github.io/libcephei/ for further details. + + + cell + PSGroupCell + + + cell + PSSwitchCell + default + + defaults + ws.hbang.common.demo + key + Switch + label + Awesome + iconImageSystem + + name + switch.2 + + + + cell + PSGroupCell + + + cell + PSLinkListCell + default + 0 + defaults + ws.hbang.common.demo + detail + PSListItemsController + key + Region + label + Region + validTitles + + Worldwide + Australia + Canada + China + France + Germany + Japan + New Zealand + United Kingdom + United States + + validValues + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + + iconImageSystem + + name + globe + + + + cellClass + HBStepperTableCell + default + 5 + defaults + ws.hbang.common.demo + key + Stepper + label + %i Things + max + 15 + min + 1 + singularLabel + 1 Thing + iconImageSystem + + name + number.circle + + + + cell + PSGroupCell + label + Sliders + + + cell + PSSliderCell + default + 5 + defaults + ws.hbang.common.demo + key + Slider + label + Slider + max + 15 + min + 1 + showValue + + leftImageSystem + + name + slider.horizontal.3 + + + + cell + PSSliderCell + cellClass + HBDiscreteSliderTableCell + default + 5 + defaults + ws.hbang.common.demo + key + Discrete + label + Discrete + max + 15 + min + 1 + leftImageSystem + + name + sun.min + + rightImageSystem + + name + sun.max + + + + cell + PSGroupCell + label + HBTintedTableCell + + + action + doStuffTapped: + cell + PSButtonCell + cellClass + HBSpinnerTableCell + label + Perform Magic Tricks + iconImageSystem + + name + wand.and.stars + weight + semibold + + + + cell + PSButtonCell + cellClass + HBTintedTableCell + label + Do Something Destructive + iconImageSystem + + name + exclamationmark.triangle + weight + bold + + tintColor + #ff3b30 + + + cell + PSGroupCell + label + HBLinkTableCell + + + cellClass + HBLinkTableCell + label + HASHBANG Productions + url + https://hashbang.productions/ + + + cellClass + HBLinkTableCell + label + Avatar from URL + url + https://hashbang.productions/ + iconURL + https://repo.chariz.com/CydiaIcon@3x.png + + + cellClass + HBLinkTableCell + label + Avatar from URL, circular + subtitle + They seem like a pretty cool bunch + url + https://hashbang.productions/ + iconURL + https://repo.chariz.com/CydiaIcon@3x.png + iconCircular + + big + + + + cellClass + HBLinkTableCell + label + Avatar from URL, big + subtitle + They seem like a pretty cool bunch + url + https://hashbang.productions/ + iconURL + https://repo.chariz.com/CydiaIcon@3x.png + big + + + + cellClass + HBLinkTableCell + label + Doesn’t Exist + url + http://localhost/ + iconURL + http://localhost/ + + + cell + PSGroupCell + label + HBPackageTableCell + + + cellClass + HBPackageTableCell + label + Cephei + packageIdentifier + ws.hbang.common + iconCornerRadius + 12 + + + cellClass + HBPackageTableCell + label + Cephei + subtitle + Cephei is awesome! + packageIdentifier + ws.hbang.common + iconURL + https://repo.chariz.com/CydiaIcon@3x.png + + + cellClass + HBPackageTableCell + label + NewTerm + subtitle + NewTerm is also awesome! + packageIdentifier + ws.hbang.newterm2 + + + cellClass + HBPackageTableCell + label + Quanta + subtitle + Quanta is hyper awesome! + packageIdentifier + ws.hbang.quanta + packageRepository + https://repo.chariz.com/ + + + cellClass + HBPackageTableCell + label + Doesn’t Exist + packageIdentifier + ws.hbang.common.doesntexist + + + cell + PSGroupCell + label + HBTwitterCell + + + cellClass + HBTwitterCell + label + Mismatched username + user + NotActuallyHashbang + userID + 945654024 + + + big + + cellClass + HBTwitterCell + height + 56 + label + Big cell + user + hashbang + + + cellClass + HBTwitterCell + label + No avatar + showAvatar + + user + hashbang + + + cellClass + HBTwitterCell + label + Avatar from URL + iconURL + https://chariz.com/img/favicon.png + iconCircular + + user + hashbang + + + cellClass + HBTwitterCell + label + Monogram initials + initials + HB + user + hashbang + + + cell + PSGroupCell + label + HBAboutListController + + + cell + PSLinkCell + detail + HBDemoAboutListController + isController + + label + ABOUT + iconImageSystem + + name + info.circle + + + + title + Cephei Demo + + diff --git a/extras/CepheiPrefs.framework/Headers/CepheiPrefs.h b/extras/CepheiPrefs.framework/Headers/CepheiPrefs.h new file mode 100644 index 0000000..00e3deb --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/CepheiPrefs.h @@ -0,0 +1,18 @@ +#import "HBAboutListController.h" +#import "HBAppearanceSettings.h" +#import "HBDiscreteSliderTableCell.h" +#import "HBImageTableCell.h" +#import "HBInitialsLinkTableCell.h" +#import "HBLinkTableCell.h" +#import "HBListController.h" +#import "HBListController+Actions.h" +#import "HBListItemsController.h" +#import "HBPackageTableCell.h" +#import "HBPackageNameHeaderCell.h" +#import "HBRootListController.h" +#import "HBSpinnerTableCell.h" +#import "HBStepperTableCell.h" +#import "HBSupportController.h" +#import "HBTintedTableCell.h" +#import "HBTwitterCell.h" +#import "PSListController+HBTintAdditions.h" diff --git a/extras/CepheiPrefs.framework/Headers/HBAboutListController.h b/extras/CepheiPrefs.framework/Headers/HBAboutListController.h new file mode 100644 index 0000000..a70efd4 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBAboutListController.h @@ -0,0 +1,113 @@ +#import "HBListController.h" + +NS_ASSUME_NONNULL_BEGIN + +/// The HBAboutListController class in CepheiPrefs provides a list controller with functions +/// that would typically be used on an "about" page. It includes two class methods you can override +/// to provide a developer website and donation URL, and a class method to provide an email address +/// so the user can send the developer an email right from the tweak's settings. +/// +/// There is a sample of an HBAboutListController implemented in the Cephei demo preferences. See +/// the Cephei readme for details. +/// +/// ### Example Usage +/// ```xml +/// +/// cell +/// PSLinkCell +/// cellClass +/// HBLinkTableCell +/// label +/// Visit Website +/// url +/// https://hashbang.productions/ +/// +/// +/// cell +/// PSGroupCell +/// label +/// Experiencing issues? +/// +/// +/// action +/// hb_sendSupportEmail +/// cell +/// PSLinkCell +/// label +/// Email Support +/// +/// +/// cell +/// PSGroupCell +/// footerText +/// If you like this tweak, please consider a donation. +/// +/// +/// cell +/// PSLinkCell +/// cellClass +/// HBLinkTableCell +/// label +/// Donate +/// url +/// https://hashbang.productions/donate/ +/// +/// ``` + +@interface HBAboutListController : HBListController + +/// @name Constants + +/// The website URL to open when tapping the “visit website” cell. Override this method to return +/// your own URL. +/// +/// Deprecated. It is encouraged to use an `HBLinkTableCell` instead. +/// +/// @return By default, https://hashbang.productions/. ++ (NSURL *)hb_websiteURL __attribute((deprecated("Use an HBLinkTableCell instead."))); + +/// The website URL to open when tapping the "donate" cell. Override this method to return your own +/// URL. +/// +/// Deprecated. It is encouraged to use an `HBLinkTableCell` instead. +/// +/// @return By default, https://hashbang.productions/donate/. ++ (NSURL *)hb_donateURL __attribute((deprecated("Use an HBLinkTableCell instead."))); + +/// The email address to use in the support email composer form. Override this method to return an +/// email address. +/// +/// If this method returns nil, the package’s author email address is used. +/// +/// @return By default, nil. ++ (nullable NSString *)hb_supportEmailAddress; + +/// No longer supported. +/// +/// @return By default, nil. +/// @see `HBSupportController` ++ (nullable NSArray *)hb_supportInstructions __attribute((deprecated("TechSupport is no longer supported."))); + +/// @name Preference Specifier Actions + +/// Opens the user's browser to the URL specified by `-hb_websiteURL`. +/// +/// Deprecated. Use an `HBLinkTableCell` instead. +- (void)hb_openWebsite __attribute((deprecated("Use an HBLinkTableCell instead."))); + +/// Opens the user's browser to the URL specified by `-hb_donateURL`. +/// +/// Deprecated. Use an `HBLinkTableCell` instead. +- (void)hb_openDonate __attribute((deprecated("Use an HBLinkTableCell instead."))); + +/// Displays a support composer form. +/// +/// The `-hb_supportEmailAddress` and `-hb_supportInstructions` methods are used to provide the +/// appropriate parameters to `HBSupportController`. +/// +/// @see `HBSupportController` +- (void)hb_sendSupportEmail; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiPrefs.framework/Headers/HBAppearanceSettings.h b/extras/CepheiPrefs.framework/Headers/HBAppearanceSettings.h new file mode 100644 index 0000000..0f81b2a --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBAppearanceSettings.h @@ -0,0 +1,167 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +/// Constants indicating how to size the title of this item. +typedef NS_ENUM(NSUInteger, HBAppearanceSettingsLargeTitleStyle) { + /// Display a large title only when the current view controller is a subclass of + /// `HBRootListController`. + /// + /// This is the default mode. + HBAppearanceSettingsLargeTitleStyleRootOnly, + + /// Always display a large title. + HBAppearanceSettingsLargeTitleStyleAlways, + + /// Never display a large title. + HBAppearanceSettingsLargeTitleStyleNever +} NS_SWIFT_NAME(HBAppearanceSettings.LargeTitleStyle); + +/// The HBAppearanceSettings class in CepheiPrefs provides a model object read by other components +/// of Cephei to determine colors and other appearence settings to use in the user interface. +/// +/// Appearance settings are typically set on a view controller, via the +/// `-[PSListController(HBTintAdditions) hb_appearanceSettings]` property. This is automatically +/// managed by Cephei and provided to view controllers as they are pushed onto the stack. +/// +/// Most commonly, the API will be used by setting the `hb_appearanceSettings` property from the +/// init method. The following example sets the tint color, table view background color, and +/// customises the navigation bar with a background, title, and status bar color: +/// +/// ```objc +/// - (instancetype)init { +/// self = [super init]; +/// +/// if (self) { +/// HBAppearanceSettings *appearanceSettings = [[HBAppearanceSettings alloc] init]; +/// appearanceSettings.tintColor = [UIColor colorWithRed:66.f / 255.f green:105.f / 255.f blue:154.f / 255.f alpha:1]; +/// appearanceSettings.barTintColor = [UIColor systemRedColor]; +/// appearanceSettings.navigationBarTitleColor = [UIColor whiteColor]; +/// appearanceSettings.tableViewBackgroundColor = [UIColor colorWithWhite:242.f / 255.f alpha:1]; +/// appearanceSettings.statusBarStyle = UIStatusBarStyleLightContent; +/// self.hb_appearanceSettings = appearanceSettings; +/// } +/// +/// return self; +/// } +/// ``` + +@interface HBAppearanceSettings : NSObject + +/// @name General + +/// The tint color to use for interactable elements within the list controller. Set this property to +/// a UIColor to use. +/// +/// A nil value will cause no modification of the tint to occur. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *tintColor; + +#ifdef __IPHONE_13_0 +/// The user interface style to use. Set this property to a UIUserInterfaceStyle to use. +/// +/// @return By default, UIUserInterfaceStyleUnspecified. +@property (nonatomic, assign) UIUserInterfaceStyle userInterfaceStyle API_AVAILABLE(ios(13.0)); +#endif + +/// @name Navigation Bar + +/// The tint color to use for the navigation bar buttons, or, if invertedNavigationBar is set, the +/// background of the navigation bar. Set this property to a UIColor to use, if you don’t want to +/// use the same color as tintColor. +/// +/// A nil value will cause no modification of the navigation bar tint to occur. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *navigationBarTintColor; + +/// The color to use for the navigation bar title label. Set this property to a UIColor to use. +/// +/// A nil value will cause no modification of the navigation bar title color to occur. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *navigationBarTitleColor; + +/// The background color to use for the navigation bar. Set this property to a UIColor to use. +/// +/// A nil value will cause no modification of the navigation bar background to occur. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *navigationBarBackgroundColor; + +/// The status bar style to use. Set this property to a UIStatusBarStyle to use. +/// +/// @return By default, UIStatusBarStyleDefault. +@property (nonatomic, assign) UIStatusBarStyle statusBarStyle; + +/// The color to use for the status bar icons. Set this property to a UIColor to use. +/// +/// A nil value will cause no modification of the status bar color to occur. +/// +/// @return By default, nil. +/// @warning Setting the status bar to a custom color is no longer possible as of iOS 13. Set +/// statusBarStyle instead. +@property (nonatomic, copy, nullable) UIColor *statusBarTintColor __attribute((deprecated("Set statusBarStyle instead."))); + +/// Whether to use an inverted navigation bar. +/// +/// An inverted navigation bar has a tinted background, rather than the buttons being tinted. All +/// other interface elements will be tinted the same. +/// +/// @return By default, NO. +@property (nonatomic, assign) BOOL invertedNavigationBar __attribute((deprecated("Set navigationBarBackgroundColor and navigationBarTitleColor instead."))); + +/// Whether to use a translucent navigation bar. Set this property to YES if you want this behavior. +/// +/// @return By default, YES. +@property (nonatomic, assign) BOOL translucentNavigationBar; + +/// Whether to show the shadow (separator line) at the bottom of the navigation bar. +/// +/// Requires iOS 13 or later. +/// +/// @return By default, YES. +@property (nonatomic, assign) BOOL showsNavigationBarShadow; + +/// Whether to use a large title on iOS 11 and newer. Set this property to a value from +/// HBAppearanceSettingsLargeTitleStyle. +/// +/// @return By default, HBAppearanceSettingsLargeTitleStyleRootOnly. +@property (nonatomic, assign) HBAppearanceSettingsLargeTitleStyle largeTitleStyle; + +/// @name Table View + +/// The color to be used for the overall background of the table view. Set this property to a +/// UIColor to use. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *tableViewBackgroundColor; + +/// The color to be used for the text color of table view cells. Set this property to a UIColor to +/// use. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *tableViewCellTextColor; + +/// The color to be used for the background color of table view cells. Set this property to a +/// UIColor to use. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *tableViewCellBackgroundColor; + +/// The color to be used for the separator between table view cells. Set this property to a UIColor +/// to use. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *tableViewCellSeparatorColor; + +/// The color to be used when a table view cell is selected. This color will be shown when the cell +/// is in the highlighted state. +/// +/// @return By default, nil. +@property (nonatomic, copy, nullable) UIColor *tableViewCellSelectionColor; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiPrefs.framework/Headers/HBDiscreteSliderTableCell.h b/extras/CepheiPrefs.framework/Headers/HBDiscreteSliderTableCell.h new file mode 100644 index 0000000..d5e3091 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBDiscreteSliderTableCell.h @@ -0,0 +1,46 @@ +#import +#import + +/// The HBDiscreteSliderTableCell class in CepheiPrefs is a subclass of the standard slider +/// cell, which displays a vertical line at every whole number. Additionally, when dragging the +/// slider, it jumps to these lines so the user’s preference will always be a whole number. +/// +/// It is no longer necessary to use this as of iOS 8.2, which has built in `isSegmented` and +/// `segmentCount` parameters on PSSliderCell. This class is kept for backwards compatibility, and +/// will use the built-in implementation on iOS 8.2 and newer. +/// +/// Requires iOS 7.0 or later. A normal slider is shown for older versions. +/// +/// ### Specifier Parameters +/// All parameters specific to +/// [PSSliderCell](http://iphonedevwiki.net/index.php/Preferences_specifier_plist#PSSliderCell) +/// are applicable here. There are no custom parameters. +/// +/// ### Example Usage +/// ```xml +/// +/// cell +/// PSSliderCell +/// cellClass +/// HBDiscreteSliderTableCell +/// default +/// 5 +/// defaults +/// ws.hbang.common.demo +/// key +/// Discrete +/// label +/// Discrete +/// max +/// 15 +/// min +/// 1 +/// +/// ``` + +@interface HBDiscreteSliderTableCell : PSControlTableCell + +/// The slider control. +@property (nonatomic, retain) PSDiscreteSlider *control; + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBImageTableCell.h b/extras/CepheiPrefs.framework/Headers/HBImageTableCell.h new file mode 100644 index 0000000..5d0d1d5 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBImageTableCell.h @@ -0,0 +1,45 @@ +#import +#import + +/// The HBImageTableCell class in CepheiPrefs provides a simple way to display an image as a +/// table cell, or a header or footer. +/// +/// ### Specifier Parameters +/// +/// +/// +/// +///
icon Required. The file name of the image to display in the cell.
+/// +/// If you use `HBImageTableCell` as a header or footer with `headerCellClass` or `footerCellClass`, +/// it will size automatically to fit the image. If you use it as a cell with `cellClass`, you must +/// set the height yourself using the `height` key. +/// +/// ### Example Usage +/// ```xml +/// +/// +/// cell +/// PSGroupCell +/// headerCellClass +/// HBImageTableCell +/// height +/// 100 +/// icon +/// logo.png +/// +/// +/// +/// +/// cellClass +/// HBImageTableCell +/// height +/// 100 +/// icon +/// logo.png +/// +/// ``` + +@interface HBImageTableCell : PSTableCell + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBInitialsLinkTableCell.h b/extras/CepheiPrefs.framework/Headers/HBInitialsLinkTableCell.h new file mode 100644 index 0000000..c83ceaa --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBInitialsLinkTableCell.h @@ -0,0 +1,8 @@ +#import "HBLinkTableCell.h" + +/// The HBInitialsLinkTableCell class in CepheiPrefs is a shim kept for compatibility reasons. +/// The class is now called `HBLinkTableCell`. + +@interface HBInitialsLinkTableCell : HBLinkTableCell + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBLinkTableCell.h b/extras/CepheiPrefs.framework/Headers/HBLinkTableCell.h new file mode 100644 index 0000000..c03f638 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBLinkTableCell.h @@ -0,0 +1,129 @@ +#import "HBTintedTableCell.h" + +/// The HBLinkTableCell class in CepheiPrefs displays a button that, when tapped, opens the +/// specified URL. A typical icon can be used, or the initials key can be set to one or two +/// characters to show as the icon. +/// +/// This cell can either be used without setting any cell type, or by setting it to `PSButtonCell` +/// to get a tinted button. +/// +/// ### Specifier Parameters +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +///
url Required. The URL to open.
subtitle Optional. A subtitle to display below the label. The default is an empty +/// string, hiding the subtitle.
initials Optional. One or two characters to show as the icon.
iconURL Optional. The URL to an image to display. The default is no value, +/// hiding the image.
iconCircular Optional. Whether the icon should be displayed as a circle. The +/// default is NO when an iconURL is set, otherwise this property is unused.
iconCornerRadius Optional. A custom corner radius to use for the icon. Ignored +/// if iconCircular is set to true. If set to -1, the operating system’s default icon corner radius +/// is used. The default is -1.
+/// +/// ### Example Usage +/// ```xml +/// +/// +/// cellClass +/// HBLinkTableCell +/// icon +/// example.png +/// label +/// Example +/// url +/// http://example.com/ +/// +/// +/// +/// +/// cellClass +/// HBLinkTableCell +/// initials +/// XX +/// label +/// Example +/// url +/// http://example.com/ +/// +/// +/// +/// +/// cellClass +/// HBLinkTableCell +/// label +/// Example +/// subtitle +/// Visit our amazing website +/// url +/// http://example.com/ +/// +/// +/// +/// +/// big +/// +/// cellClass +/// HBLinkTableCell +/// height +/// 64 +/// label +/// Example +/// subtitle +/// Visit our amazing website +/// url +/// http://example.com/ +/// +/// ``` + +@interface HBLinkTableCell : HBTintedTableCell + +/// Whether the cell is 64 pixels or more in height. +/// +/// This is not set automatically; the specifier for the cell must set the `big` property to true +/// (see examples above). +@property (nonatomic, readonly) BOOL isBig; + +/// The view containing the icon image view. +@property (nonatomic, retain, readonly) UIView *iconView; + +/// The icon image view. +@property (nonatomic, retain, readonly) UIImageView *iconImageView; + +/// The image to display as the icon, if enabled. +@property (nonatomic, retain) UIImage *iconImage; + +/// A URL to load into iconImage to display as the icon, if enabled. +@property (nonatomic, retain) NSURL *iconURL; + +/// Whether the image displays as a circle. +/// +/// The default is YES if an iconURL is set in the specifier, otherwise NO. +@property (nonatomic, readonly) BOOL isIconCircular; + +/// Load and display the icon. +/// +/// You don’t need to call this unless subclassing. +- (void)loadIconIfNeeded; + +/// Handle failure to load the icon. +/// +/// You don’t need to call this unless subclassing. The default implementation replaces the image +/// with the operating system’s generic “no icon” placeholder if `iconCornerRadius` is set to -1, +/// and `isIconCircular` is set to NO. +- (void)iconLoadDidFailWithResponse:(NSURLResponse *)response error:(NSError *)error; + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBListController+Actions.h b/extras/CepheiPrefs.framework/Headers/HBListController+Actions.h new file mode 100644 index 0000000..4638c80 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBListController+Actions.h @@ -0,0 +1,42 @@ +#import "HBListController.h" + +@class PSSpecifier; + +NS_ASSUME_NONNULL_BEGIN + +/// The HBListController (Actions) class category in CepheiPrefs implements action methods you can +/// use with link and button specifiers. +@interface HBListController (Actions) + +/// Specifier action to perform a restart of the system app (respring). +/// +/// You should prefer to have preferences immediately take effect, rather than using this method. +/// +/// @see `-hb_respringAndReturn:` +- (void)hb_respring:(PSSpecifier *)specifier; + +/// Specifier action to perform a restart of the system app (respring), and return to the current +/// preferences screen. +/// +/// You should prefer to have preferences immediately take effect, rather than using this method. +/// +/// @see `-hb_respring:` +- (void)hb_respringAndReturn:(PSSpecifier *)specifier; + +/// Specifier action to open the URL specified by the specifier. +/// +/// This is intended to be used with `HBLinkTableCell`. +/// +/// @see `HBLinkTableCell` +- (void)hb_openURL:(PSSpecifier *)specifier; + +/// Specifier action to open the package specified by the specifier. +/// +/// This is intended to be used with `HBPackageTableCell`. +/// +/// @see `HBPackageTableCell` +- (void)hb_openPackage:(PSSpecifier *)specifier; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiPrefs.framework/Headers/HBListController.h b/extras/CepheiPrefs.framework/Headers/HBListController.h new file mode 100644 index 0000000..04900dc --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBListController.h @@ -0,0 +1,260 @@ +#import +#import "PSListController+HBTintAdditions.h" + +NS_ASSUME_NONNULL_BEGIN + +/// The HBListController class in CepheiPrefs provides a list controller with various +/// conveniences such as a unique tint color for the list controllers within a preference bundle, +/// and bug fixes for common issues within the Settings app and Preferences framework. In +/// particular, a bug with the list controller’s content disappearing after closing the Settings +/// app and opening it again is worked around, as well as an issue on iOS 7 where in some cases a +/// cell may stay highlighted after being tapped. +/// +/// It includes two class methods you can override to return the name of a Preferences specifier +/// property list, and various methods to control appearance of the interface. +/// +/// If you use `HBLinkTableCell` or subclasses such as `HBTwitterCell` and `HBPackageTableCell`, it +/// is recommended to subclass from HBListController on the view controller classes containing these +/// cells to use CepheiPrefs’s built-in callback actions. If you do not subclass from +/// HBListController, you will need to implement action methods yourself. +/// +/// ### Specifier Parameters +/// HBListController extends specifiers with the following parameters: +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +///
pl_filter Optional. Supports additional filters that decide whether a specifier +/// should be displayed, as specified below.
iconImageSystem Optional. Supports displaying a system image as the cell icon, as +/// specified below.
leftImageSystem Optional. Supports displaying a system image as the icon to the +/// left of a PSSliderCell’s slider control, as specified below.
rightImageSystem Optional. Supports displaying a system image as the icon to the +/// right of a PSSliderCell’s slider control, as specified below.
+/// +/// #### PreferenceLoader Filter Parameters +/// The `pl_filter` key is inherited from PreferenceLoader’s libprefs, and can be used to specify +/// [CoreFoundation version](https://iphonedev.wiki/index.php/CoreFoundation.framework) criteria +/// for a specifier. Specifiers that do not meet the `pl_filter` criteria will be discarded. +/// +/// The version number of CoreFoundation is often used as a stable method of checking the operating +/// system version in use. It has the benefit of increasing in predictable amounts (to the next +/// hundred or more) for each major revision of Apple’s OS platforms, and it is typically roughly +/// the same between all Apple OS platforms at any point in time. +/// +/// +/// +/// +/// +///
CoreFoundationVersion Optional. An array of one or two CoreFoundation version +/// numbers in decimal (<real>). If one number is present, this is a minimum bound. The +/// current device’s CoreFoundation version must be greater than or equal to this number. If two +/// numbers are present, the first number is the lower bound, and the second number is one more than +/// the upper bound. The current device’s CoreFoundation version must be greater than or equal to +/// the first number, and less than (but not equal to) the second number.
+/// +/// ##### Example Usage +/// ```xml +/// +/// +/// cell +/// PSSwitchCell +/// label +/// My iOS 12+ Only Feature +/// pl_filter +/// +/// CoreFoundationVersion +/// +/// 1556.00 +/// +/// +/// +/// +/// +/// +/// cell +/// PSSwitchCell +/// label +/// My iOS 7-11 Only Feature +/// pl_filter +/// +/// CoreFoundationVersion +/// +/// 847.20 +/// 1556.00 +/// +/// +/// +/// +/// +/// +/// cell +/// PSSwitchCell +/// label +/// My iOS <12 Only Feature +/// pl_filter +/// +/// CoreFoundationVersion +/// +/// 0.0 +/// 1556.00 +/// +/// +/// +/// ``` +/// +/// #### System Icon Parameters +/// On iOS 13.0 and newer, you can specify a system icon +/// ([SF Symbols](https://developer.apple.com/sf-symbols/) glyph) to be displayed in a cell. Use the +/// SF Symbols app to find symbol names. +/// +/// When running on iOS versions earlier than 13.0, icons will not be rendered. This also applies +/// when a symbol name is specified that was added in a later iOS version than is currently in use. +/// In this case, you can supply a PNG icon through the usual means as a fallback. +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +///
name Required. The symbol name to use.
weight Optional. The weight to render the symbol at. The supported values are: +/// ultraLight, thin, light, regular, medium, semibold, bold, heavy, black. The default is +/// regular.
scale Optional. The scale to render the symbol at. The supported values are: small, +/// medium, large. The default is medium.
pointSize Optional. The equivalent font size to render the symbol at. The default +/// is 20.0.
tintColor Optional. The color to render the icon in. The default is no value, which +/// means the tint color will be inherited from the -[HBAppearanceSettings tintColor]; if neither +/// value is set, the default iOS blue tint color is used. When backgroundColor is set, no value +/// means white (#ffffff) will be used.
backgroundColor Optional. The background color to use for the symbol. When +/// specified, the symbol will be rendered inside an icon shape of the specified background color. +/// The symbol will be scaled down by 20% to appropriately fit the icon shape. The default is no +/// value, which means no icon shape will be rendered.
+/// +/// ##### Example Usage +/// +/// ```xml +/// +/// +/// cell +/// PSSwitchCell +/// label +/// Awesome +/// iconImageSystem +/// +/// name +/// switch.2 +/// +/// +/// +/// +/// +/// cell +/// PSLinkCell +/// detail +/// HBDemoAboutListController +/// isController +/// +/// label +/// ABOUT +/// iconImageSystem +/// +/// name +/// info.circle +/// +/// +/// +/// +/// +/// cell +/// PSSliderCell +/// min +/// 1 +/// max +/// 15 +/// leftImageSystem +/// +/// name +/// sun.min +/// +/// rightImageSystem +/// +/// name +/// sun.max +/// +/// +/// +/// +/// +/// cell +/// PSButtonCell +/// cellClass +/// HBLinkTableCell +/// label +/// DONATE +/// url +/// https://hashbang.productions/ +/// iconImageSystem +/// +/// name +/// heart +/// backgroundColor +/// #ff3b30 +/// +/// +/// ``` +@interface HBListController : PSListController + +/// @name Specifiers + +/// The property list that contains Preference framework specifiers to display as the content of the +/// list controller. Override this method to return the file name of a property list inside your +/// preference bundle, omitting the file extension. +/// +/// Example: +/// ```objc +/// + (NSString *)hb_specifierPlist { +/// return @"Root"; +/// } +/// ``` +/// +/// If you use this method and override the `specifiers` method, ensure you call the super method +/// with `[super specifiers];` first in your `specifiers` implementation. +/// +/// @return By default, nil. +@property (nonatomic, strong, readonly, class, nullable) NSString *hb_specifierPlist NS_SWIFT_NAME(specifierPlist); + +/// @name Related View Controllers + +/// Returns the “real” navigation controller for this view controller. +/// +/// As of iOS 8.0, the navigation controller that owns the navigation bar and other responsibilities +/// is actually a parent of `self.navigationController` on iPhone, due to the larger Plus models. +/// The realNavigationController method returns the correct navigation controller. +/// +/// @return The real navigation controller. +- (UINavigationController *)realNavigationController; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiPrefs.framework/Headers/HBListItemsController.h b/extras/CepheiPrefs.framework/Headers/HBListItemsController.h new file mode 100644 index 0000000..76c9cec --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBListItemsController.h @@ -0,0 +1,10 @@ +#import +#import + +/// The HBListItemsController class in CepheiPrefs was used with previous versions to ensure +/// that the tint color from the previous view controller is retained. As of Cephei 1.4, this is no +/// longer needed, and this class is kept for backwards compatibility purposes. + +@interface HBListItemsController : PSListItemsController + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBPackageNameHeaderCell.h b/extras/CepheiPrefs.framework/Headers/HBPackageNameHeaderCell.h new file mode 100644 index 0000000..b3aa3d2 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBPackageNameHeaderCell.h @@ -0,0 +1,114 @@ +#import +#import + +/// The HBPackageNameHeaderCell class in CepheiPrefs displays a header containing the package’s +/// icon, name, version number, and author. It can be displayed in a subtle condensed design, or, by +/// default, a tall header that might be displayed at the top of a preference bundle’s root list +/// controller, for instance. +/// +/// ### Specifier Parameters +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +///
condensed Optional. When true, displays an icon, the package name and version in +/// one line, and on another displays the author name. When false, displays a large package name, +/// and on two lines in small font the package version and author. The default is false.
icon Required in condensed mode. Not used otherwise. The file name of the icon to +/// use within the current preference bundle.
packageIdentifier Required. The package identifier to retrieve the required +/// information from.
packageNameOverride Optional. A custom name to use instead of the package’s +/// name.
showAuthor Optional. Whether to show the Author field of the package. The default +/// is true.
showVersion Optional. Whether to show the Version field of the package. The default +/// is true.
titleColor Optional. The color to apply to the name of the package. The default is +/// #111111.
subtitleColor Optional. The color to apply to the subtitles. The default is +/// #444444.
backgroundGradientColors Optional. An array of color stops to use as a background +/// gradient. At least one is required. The default is no background gradient.
+/// +/// ### Example Usage +/// ```xml +/// +/// +/// cell +/// PSGroupCell +/// headerCellClass +/// HBPackageNameHeaderCell +/// packageIdentifier +/// ws.hbang.common +/// +/// +/// +/// +/// cell +/// PSGroupCell +/// condensed +/// +/// headerCellClass +/// HBPackageNameHeaderCell +/// icon +/// icon.png +/// packageIdentifier +/// ws.hbang.common +/// +/// +/// +/// +/// cell +/// PSGroupCell +/// headerCellClass +/// HBPackageNameHeaderCell +/// packageIdentifier +/// ws.hbang.common +/// titleColor +/// #CC0000 +/// subtitleColor +/// +/// 55 +/// 147 +/// 230 +/// +/// +/// +/// +/// +/// cell +/// PSGroupCell +/// headerCellClass +/// HBPackageNameHeaderCell +/// packageIdentifier +/// ws.hbang.common +/// backgroundGradientColors +/// +/// #5AD427 +/// #FFDB4C +/// #EF4DB6 +/// #898C90 +/// +/// +/// ``` + +@interface HBPackageNameHeaderCell : PSTableCell + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBPackageTableCell.h b/extras/CepheiPrefs.framework/Headers/HBPackageTableCell.h new file mode 100644 index 0000000..13f57be --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBPackageTableCell.h @@ -0,0 +1,63 @@ +#import "HBLinkTableCell.h" + +/// The HBPackageTableCell class in CepheiPrefs provides a cell containing any package's icon, +/// name, and description. Tapping it opens the package in Cydia. +/// +/// ### Specifier Parameters +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +///
packageIdentifier Required. The package identifier to retrieve the required +/// information from.
packageRepository Optional. The URL to the repository the package is available on, +/// if not one of the default repos.
label Required. The name of the package.
subtitle Optional. Can be used for a description of the package.
+/// +/// ### Example Usage +/// ```xml +/// +/// +/// cellClass +/// HBPackageTableCell +/// label +/// Cephei +/// packageIdentifier +/// ws.hbang.common +/// +/// +/// +/// +/// cellClass +/// HBPackageTableCell +/// label +/// Cephei +/// packageIdentifier +/// ws.hbang.common +/// subtitle +/// Support library for tweaks +/// +/// +/// +/// +/// cellClass +/// HBPackageTableCell +/// label +/// Cephei +/// packageIdentifier +/// ws.hbang.common +/// packageRepository +/// https://repo.chariz.io +/// +/// ``` + +@interface HBPackageTableCell : HBLinkTableCell + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBRootListController.h b/extras/CepheiPrefs.framework/Headers/HBRootListController.h new file mode 100644 index 0000000..191e884 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBRootListController.h @@ -0,0 +1,38 @@ +#import "HBListController.h" + +NS_ASSUME_NONNULL_BEGIN + +/// The HBRootListController class in CepheiPrefs provides a list controller class that should +/// be used as the root of the package's settings. It includes two class methods you can override to +/// provide a default message and a URL that the user can share via a sharing button displayed to +/// the right of the navigation bar. +/// +/// It is recommended that you use this class even if its current features aren’t appealing in case +/// of future improvements or code that relies on the presence of an HBRootListController. + +@interface HBRootListController : HBListController + +/// @name Constants + +/// A string to be used as a default message when the user shares the package to a friend or social +/// website. Override this method to return your own string. +/// +/// If the return value of this method and `hb_shareURL `are nil, the sharing button will not be +/// displayed. +/// +/// @return By default, nil. ++ (nullable NSString *)hb_shareText; + + +/// The URL to be shared when the user shares the package to a friend or social website. Override +/// this method to return your own URL. +/// +/// If the return value of this method and `hb_shareText` are nil, the sharing button will not be +/// displayed. +/// +/// @return By default, nil. ++ (nullable NSURL *)hb_shareURL; + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiPrefs.framework/Headers/HBSpinnerTableCell.h b/extras/CepheiPrefs.framework/Headers/HBSpinnerTableCell.h new file mode 100644 index 0000000..a122445 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBSpinnerTableCell.h @@ -0,0 +1,35 @@ +#import "HBTintedTableCell.h" + +/// The HBSpinnerTableCell class in CepheiPrefs displays an activity indicator when the cell is +/// disabled. +/// +/// ### Example Usage +/// Specifier plist: +/// +/// ```xml +/// +/// action +/// doStuffTapped: +/// cell +/// PSButtonCell +/// cellClass +/// HBSpinnerTableCell +/// label +/// Do Stuff +/// +/// ``` +/// +/// List controller implementation: +/// +/// ```objc +/// - (void)doStuffTapped:(PSSpecifier *)specifier { +/// PSTableCell *cell = [self cachedCellForSpecifier:specifier]; +/// cell.cellEnabled = NO; +/// // do something in the background… +/// cell.cellEnabled = YES; +/// } +/// ``` + +@interface HBSpinnerTableCell : HBTintedTableCell + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBStepperTableCell.h b/extras/CepheiPrefs.framework/Headers/HBStepperTableCell.h new file mode 100644 index 0000000..f07402a --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBStepperTableCell.h @@ -0,0 +1,52 @@ +#import + +/// The HBStepperTableCell class in CepheiPrefs allows setting a value using a stepper control +/// ("minus" and "plus" buttons). +/// +/// Requires iOS 6.0 or later. +/// +/// ### Specifier Parameters +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +///
label Required. The label displayed when the value is plural. Use %i +/// to denote where the number should be displayed.
max Required. The highest possible numeric value for the stepper.
min Required. The lowest possible numeric value for the stepper.
singularLabel Required. The label displayed when the value is singular.
+/// +/// ### Example Usage +/// ```xml +/// +/// cellClass +/// HBStepperTableCell +/// default +/// 5 +/// defaults +/// ws.hbang.common.demo +/// key +/// Stepper +/// label +/// %i Things +/// max +/// 15 +/// min +/// 1 +/// singularLabel +/// 1 Thing +/// +/// ``` + +@interface HBStepperTableCell : PSControlTableCell + +/// The stepper control. +@property (nonatomic, retain) UIStepper *control; + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBSupportController.h b/extras/CepheiPrefs.framework/Headers/HBSupportController.h new file mode 100644 index 0000000..e4bf5ab --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBSupportController.h @@ -0,0 +1,77 @@ +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +/// The HBSupportController class in CepheiPrefs provides a factory that configures an email +/// composer for package support. +/// +/// The resulting view controller should be presented modally; it should not be pushed on a +/// navigation controller stack. + +@interface HBSupportController : NSObject + +/// Initialises a Mail composer by using information provided by a bundle and preferences identifier. +/// +/// Either a bundle or preferences identifier is required. If both are nil, an exception will be +/// thrown. The email address is derived from the `Author` field of the package’s control file. +/// `HBSupportController` implicitly adds the user’s package listing (output of `dpkg -l`) and the +/// preferences plist as attachments. +/// +/// @param bundle A bundle included with the package. +/// @param preferencesIdentifier A preferences identifier that is used by the package. +/// @return A pre-configured email composer. +/// @see `+supportViewControllerForBundle:preferencesIdentifier:sendToEmail:` ++ (UIViewController *)supportViewControllerForBundle:(nullable NSBundle *)bundle preferencesIdentifier:(nullable NSString *)preferencesIdentifier; + +/// Initialises a Mail composer by using information provided by a bundle, preferences identifier, +/// and optional email address. +/// +/// Either a bundle or preferences identifier is required. If both are nil, an exception will be +/// thrown. If sendToEmail is nil, the email address is derived from the `Author` field of the +/// package’s control file. `HBSupportController` implicitly adds the user’s package listing (output +/// of `dpkg -l`) and the preferences plist as attachments. +/// +/// @param bundle A bundle included with the package. +/// @param preferencesIdentifier A preferences identifier that is used by the package. +/// @param sendToEmail The email address to prefill in the To field. Pass nil to use the email +/// address from the package. +/// @return A pre-configured email composer. ++ (UIViewController *)supportViewControllerForBundle:(nullable NSBundle *)bundle preferencesIdentifier:(nullable NSString *)preferencesIdentifier sendToEmail:(nullable NSString *)sendToEmail; + +/// @name Deprecated + +/// No longer supported. Returns nil. +/// +/// @return nil. ++ (id)linkInstructionForEmailAddress:(NSString *)emailAddress __attribute((deprecated("TechSupport is no longer supported."))); + +/// Initialises a Mail composer by using information provided by a bundle. +/// +/// Refer to `+supportViewControllerForBundle:preferencesIdentifier:linkInstruction:supportInstructions:` +/// for information on how the bundle is used. +/// +/// @param bundle A bundle included with the package. +/// @return A pre-configured email composer. +/// @see `+supportViewControllerForBundle:preferencesIdentifier:sendToEmail:` ++ (UIViewController *)supportViewControllerForBundle:(NSBundle *)bundle __attribute((deprecated("TechSupport is no longer supported."))); + +/// Initialises a Mail composer by using information provided by either a bundle or a preferences +/// identifier, and providing it a custom link instruction and support instructions. +/// +/// The bundle may set the key `HBPackageIdentifier` in its Info.plist, containing the package +/// identifier to gather information from. Otherwise, the dpkg file lists are searched to find the +/// package that contains the bundle. The package’s name, identifier, and author will be used to +/// fill out fields in the information that the user will submit. +/// +/// @param bundle A bundle included with the package. +/// @param preferencesIdentifier The preferences identifier of the package, if it’s different from +/// the package identifier that contains the bundle. +/// @param linkInstruction Ignored. +/// @param supportInstructions Ignored. +/// @return A pre-configured email composer. +/// @see `+supportViewControllerForBundle:preferencesIdentifier:` ++ (UIViewController *)supportViewControllerForBundle:(nullable NSBundle *)bundle preferencesIdentifier:(nullable NSString *)preferencesIdentifier linkInstruction:(nullable id)linkInstruction supportInstructions:(nullable NSArray *)supportInstructions __attribute((deprecated("Use +[HBSupportController supportViewControllerForBundle:preferencesIdentifier:]."))); + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiPrefs.framework/Headers/HBTintedTableCell.h b/extras/CepheiPrefs.framework/Headers/HBTintedTableCell.h new file mode 100644 index 0000000..3e33fa0 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBTintedTableCell.h @@ -0,0 +1,43 @@ +#import + +/// The HBTintedTableCell class in CepheiPrefs ensures that a tint set with `HBAppearanceSettings` +/// will also be applied to the title label of a of a cell intended to be used as a button. +/// +/// ### Specifier Parameters +/// HBListController extends specifiers with the following parameters: +/// +/// +/// +/// +/// +///
tintColor Optional. The color to use for the label of the cell. The default is no +/// value, which means the tint color will be inherited from the -[HBAppearanceSettings tintColor]; +/// if neither value is set, the default iOS blue tint color is used.
+/// +/// ### Example Usage +/// ```xml +/// +/// cell +/// PSButtonCell +/// cellClass +/// HBTintedTableCell +/// label +/// Do Something +/// +/// +/// +/// +/// cell +/// PSButtonCell +/// cellClass +/// HBTintedTableCell +/// label +/// Do Something +/// tintColor +/// #33b5e5 +/// +/// ``` + +@interface HBTintedTableCell : PSTableCell + +@end diff --git a/extras/CepheiPrefs.framework/Headers/HBTwitterCell.h b/extras/CepheiPrefs.framework/Headers/HBTwitterCell.h new file mode 100644 index 0000000..deb1b80 --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/HBTwitterCell.h @@ -0,0 +1,83 @@ +#import "HBLinkTableCell.h" + +/// The HBTwitterCell class in CepheiPrefs displays a button containing a person’s name, along +/// with their Twitter username and avatar. When tapped, a Twitter client installed on the user’s +/// device or the Twitter website is opened to the person’s profile. +/// +/// ### Specifier Parameters +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +///
big Optional. Whether to display the username below the name (true) or to the right +/// of it (false). The default is false. If you set this to true, you should also set the cell’s +/// height to 56pt.
initials Optional. One or two characters to show instead of an avatar.
label Required. The name of the person.
user Required. The Twitter username of the person.
userID Optional. The Twitter user identifier number of the person. You can find +/// the user ID using online tools. +///
showAvatar Optional. Whether to show the avatar of the user. The default is +/// true.
iconURL Optional. The URL to an image to display. The default is no value, meaning +/// meaning to retrieve the avatar for the Twitter username specified in the user property.
iconCircular Optional. Whether the icon should be displayed as a circle. The +/// default is YES.
+/// +/// ### Example Usage +/// ```xml +/// +/// +/// cellClass +/// HBTwitterCell +/// label +/// HASHBANG Productions +/// user +/// hashbang +/// +/// +/// +/// +/// big +/// +/// cellClass +/// HBTwitterCell +/// height +/// 56 +/// label +/// HASHBANG Productions +/// user +/// hashbang +/// +/// +/// +/// +/// cellClass +/// HBTwitterCell +/// label +/// HASHBANG Productions +/// showAvatar +/// +/// user +/// hashbang +/// +/// ``` + +@interface HBTwitterCell : HBLinkTableCell + +@end diff --git a/extras/CepheiPrefs.framework/Headers/PSListController+HBTintAdditions.h b/extras/CepheiPrefs.framework/Headers/PSListController+HBTintAdditions.h new file mode 100644 index 0000000..a11379f --- /dev/null +++ b/extras/CepheiPrefs.framework/Headers/PSListController+HBTintAdditions.h @@ -0,0 +1,20 @@ +#import + +@class HBAppearanceSettings; + +NS_ASSUME_NONNULL_BEGIN + +/// The PSListController (HBTintAdditions) class category in CepheiPrefs provides a property for +/// setting the desired appearance settings of the view controller. + +@interface PSListController (HBTintAdditions) + +/// The appearance settings for the view controller. +/// +/// This should only be set in an init or viewDidLoad method of the view controller. The result when +/// this property or its properties are changed after the view has appeared is undefined. +@property (nonatomic, copy, nullable, setter=hb_setAppearanceSettings:) HBAppearanceSettings *hb_appearanceSettings NS_SWIFT_NAME(appearanceSettings); + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiPrefs.framework/Info.plist b/extras/CepheiPrefs.framework/Info.plist new file mode 100644 index 0000000..3b60382 --- /dev/null +++ b/extras/CepheiPrefs.framework/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + CepheiPrefs + CFBundleIdentifier + ws.hbang.common.prefs + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Cephei + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTPlatformName + iphoneos + HBPackageIdentifier + ws.hbang.common + NSPrincipalClass + HBDemoRootListController + + diff --git a/extras/CepheiPrefs.framework/ar.lproj/Common.strings b/extras/CepheiPrefs.framework/ar.lproj/Common.strings new file mode 100644 index 0000000..7f212b1 --- /dev/null +++ b/extras/CepheiPrefs.framework/ar.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + حول + CREDITS + الشُكر والتقدير + GENERAL + عام + SUPPORT + الدعم + + + ENABLED + تشغيل + + + OFF + إيقاف + ON + تشغيل + + + VISIT_WEBSITE + زيارة موقعنا + + + EMAIL_SUPPORT_HEADER + لديك مشكلة؟ + + + EMAIL_SUPPORT + الدعم بواسطة البريد الإلكتروني + + + DONATE + جرة البقشيش + + + DONATE_FOOTER + يرجى التفكير في إظهار تقديرك لهذه الأداة عبر تبرع صغير لجرة البقشيش. + + + DEVELOPER + المبرمج + DEVELOPERS + المبرمجون + LEAD_DEVELOPER + رئيس المبرمجين + DESIGNER + المُصمم + DESIGNERS + المُصممون + ICON + الأيكونة + ICONS + الأيكونات + TRANSLATORS + المترجمون + + + ENTER_VALUE + أدخل قيمة + + diff --git a/extras/CepheiPrefs.framework/ar.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/ar.lproj/PackageCell.strings new file mode 100644 index 0000000..567cb75 --- /dev/null +++ b/extras/CepheiPrefs.framework/ar.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + فتح في... + + + OPEN_PACKAGE_IN_REPO_NOTICE + سيتم تثبيت هذه الحزمة من مستودع %@. + + diff --git a/extras/CepheiPrefs.framework/ar.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/ar.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..b5f0379 --- /dev/null +++ b/extras/CepheiPrefs.framework/ar.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + رقم الإصدار %@ + + + HEADER_AUTHOR + بواسطة %@ + + diff --git a/extras/CepheiPrefs.framework/ar.lproj/Support.strings b/extras/CepheiPrefs.framework/ar.lproj/Support.strings new file mode 100644 index 0000000..3c61b2e --- /dev/null +++ b/extras/CepheiPrefs.framework/ar.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + الدعم + + + SUPPORT_EMAIL_SUBJECT + الدعم - %@ %@ + + + NO_EMAIL_ACCOUNTS_TITLE + لم يتم إعداد أي حسابات بريد. + + + NO_EMAIL_ACCOUNTS_BODY + استخدم إعدادات البريد لإضافة حساب جديد. + + diff --git a/extras/CepheiPrefs.framework/ca.lproj/Common.strings b/extras/CepheiPrefs.framework/ca.lproj/Common.strings new file mode 100644 index 0000000..673b163 --- /dev/null +++ b/extras/CepheiPrefs.framework/ca.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Sobre + CREDITS + Crèdits + GENERAL + General + SUPPORT + Suport + + + ENABLED + Habilitat + + + OFF + No + ON + Sí + + + VISIT_WEBSITE + Visitar pàgina web + + + EMAIL_SUPPORT_HEADER + Tens problemes? + + + EMAIL_SUPPORT + Suport per correu-e + + + DONATE + Fer una donació + + + DONATE_FOOTER + Si us plau, mostreu el vostra apreci per aquest tweak mitjançant una donació. + + + DEVELOPER + Desenvolupador + DEVELOPERS + Desenvolupadors + LEAD_DEVELOPER + Desenvolupador en cap + DESIGNER + Dissenyador + DESIGNERS + Dissenyadors + ICON + Icona + ICONS + Icones + TRANSLATORS + Traductors + + + ENTER_VALUE + Introduir valor + + diff --git a/extras/CepheiPrefs.framework/ca.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/ca.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/ca.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/ca.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/ca.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..c7e7d41 --- /dev/null +++ b/extras/CepheiPrefs.framework/ca.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versió %@ + + + HEADER_AUTHOR + Fet per %@ + + diff --git a/extras/CepheiPrefs.framework/ca.lproj/Support.strings b/extras/CepheiPrefs.framework/ca.lproj/Support.strings new file mode 100644 index 0000000..69212ed --- /dev/null +++ b/extras/CepheiPrefs.framework/ca.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Suport + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Suport + + diff --git a/extras/CepheiPrefs.framework/cs.lproj/Common.strings b/extras/CepheiPrefs.framework/cs.lproj/Common.strings new file mode 100644 index 0000000..03ff35d --- /dev/null +++ b/extras/CepheiPrefs.framework/cs.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + O aplikaci + CREDITS + Podìkování + GENERAL + Obecné + SUPPORT + Podpora + + + ENABLED + Povoleno + + + OFF + Vypnuto + ON + Zapnuto + + + VISIT_WEBSITE + Navštívit stránku + + + EMAIL_SUPPORT_HEADER + Máte problémy? + + + EMAIL_SUPPORT + E-Mailová podpora + + + DONATE + Přispívání + + + DONATE_FOOTER + Poděkujte tomuto projektu přispěním do projektu. + + + DEVELOPER + Vývojář + DEVELOPERS + Vývojáři + LEAD_DEVELOPER + Hlavní vývojář + DESIGNER + Designér + DESIGNERS + Designeři + ICON + Ikona + ICONS + Ikony + TRANSLATORS + Překladatelé + + + ENTER_VALUE + Přidat hodnotu + + diff --git a/extras/CepheiPrefs.framework/cs.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/cs.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/cs.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/cs.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/cs.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..3d53175 --- /dev/null +++ b/extras/CepheiPrefs.framework/cs.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Verze %@ + + + HEADER_AUTHOR + Od %@ + + diff --git a/extras/CepheiPrefs.framework/cs.lproj/Support.strings b/extras/CepheiPrefs.framework/cs.lproj/Support.strings new file mode 100644 index 0000000..8133b3d --- /dev/null +++ b/extras/CepheiPrefs.framework/cs.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Podpora + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Podpora + + diff --git a/extras/CepheiPrefs.framework/da.lproj/Common.strings b/extras/CepheiPrefs.framework/da.lproj/Common.strings new file mode 100644 index 0000000..e4d0a82 --- /dev/null +++ b/extras/CepheiPrefs.framework/da.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Om + CREDITS + Tak til + GENERAL + Generelt + SUPPORT + Support + + + ENABLED + Aktiveret + + + OFF + Fra + ON + Til + + + VISIT_WEBSITE + Besøg Hjemmesiden + + + EMAIL_SUPPORT_HEADER + Har du problemer? + + + EMAIL_SUPPORT + Email Support + + + DONATE + Donér + + + DONATE_FOOTER + Overvej venligst at vise din taknemmelighed for denne tweak med en lille donation. + + + DEVELOPER + Udvikler + DEVELOPERS + Udviklere + LEAD_DEVELOPER + Hoved Udvikler + DESIGNER + Designer + DESIGNERS + Designere + ICON + Ikon + ICONS + Icons + TRANSLATORS + Oversættere + + + ENTER_VALUE + Indtast værdi + + diff --git a/extras/CepheiPrefs.framework/da.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/da.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/da.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/da.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/da.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..41f724a --- /dev/null +++ b/extras/CepheiPrefs.framework/da.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + Af %@ + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/da.lproj/Support.strings b/extras/CepheiPrefs.framework/da.lproj/Support.strings new file mode 100644 index 0000000..18575e4 --- /dev/null +++ b/extras/CepheiPrefs.framework/da.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Support + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/de.lproj/Common.strings b/extras/CepheiPrefs.framework/de.lproj/Common.strings new file mode 100644 index 0000000..e64155d --- /dev/null +++ b/extras/CepheiPrefs.framework/de.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Informationen + CREDITS + Credits + GENERAL + Allgemein + SUPPORT + Support + + + ENABLED + Aktiviert + + + OFF + Aus + ON + Ein + + + VISIT_WEBSITE + Website besuchen + + + EMAIL_SUPPORT_HEADER + Bestehen Probleme? + + + EMAIL_SUPPORT + Email Support + + + DONATE + Spenden + + + DONATE_FOOTER + Zeigen Sie Ihr Interesse an dieser Optimierung, indem Sie eine Spende machen. + + + DEVELOPER + Entwickler + DEVELOPERS + Entwickler + LEAD_DEVELOPER + Führender Entwickler + DESIGNER + Designer + DESIGNERS + Designer + ICON + Symbol + ICONS + Symbole + TRANSLATORS + Übersetzer + + + ENTER_VALUE + Wert eingeben + + diff --git a/extras/CepheiPrefs.framework/de.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/de.lproj/PackageCell.strings new file mode 100644 index 0000000..f623aa1 --- /dev/null +++ b/extras/CepheiPrefs.framework/de.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Öffnen in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Dieses Paket wird von der Quelle %@ installiert.. + + diff --git a/extras/CepheiPrefs.framework/de.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/de.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..573caee --- /dev/null +++ b/extras/CepheiPrefs.framework/de.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + Von %@ + + diff --git a/extras/CepheiPrefs.framework/de.lproj/Support.strings b/extras/CepheiPrefs.framework/de.lproj/Support.strings new file mode 100644 index 0000000..d6fe3e4 --- /dev/null +++ b/extras/CepheiPrefs.framework/de.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Support + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support + + + NO_EMAIL_ACCOUNTS_TITLE + Es ist kein E-Mail-Konto konfiguriert. + + + NO_EMAIL_ACCOUNTS_BODY + Verwenden Sie die E-Mail-Optionen, um ein neues Konto hinzuzufügen. + + diff --git a/extras/CepheiPrefs.framework/el.lproj/Common.strings b/extras/CepheiPrefs.framework/el.lproj/Common.strings new file mode 100644 index 0000000..42fa81c --- /dev/null +++ b/extras/CepheiPrefs.framework/el.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Σχετικά + CREDITS + Έπαινοι + GENERAL + Γενικά + SUPPORT + Υποστήριξη + + + ENABLED + Ενεργοποιημένο + + + OFF + Όχι + ON + Ναι + + + VISIT_WEBSITE + Επισκεφθείτε την ιστοσελίδα + + + EMAIL_SUPPORT_HEADER + Παρουσιάζονται προβλήματα; + + + EMAIL_SUPPORT + Υποστήριξη μέσω Email + + + DONATE + Εισφορά + + + DONATE_FOOTER + Παρακαλώ όπως δείξετε την εκτίμησή σας για αυτό το tweak με μια εισφορά. + + + DEVELOPER + Δημιουργός + DEVELOPERS + Δημιουργοί + LEAD_DEVELOPER + Κύριος Δημιουργός + DESIGNER + Σχεδιαστής + DESIGNERS + Σχεδιαστές + ICON + Εικονίδιο + ICONS + Εικονίδια + TRANSLATORS + Μεταφραστές + + + ENTER_VALUE + Εισάγετε τιμή + + diff --git a/extras/CepheiPrefs.framework/el.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/el.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/el.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/el.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/el.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..41f8b9c --- /dev/null +++ b/extras/CepheiPrefs.framework/el.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Έκδοση %@ + + + HEADER_AUTHOR + Από %@ + + diff --git a/extras/CepheiPrefs.framework/el.lproj/Support.strings b/extras/CepheiPrefs.framework/el.lproj/Support.strings new file mode 100644 index 0000000..b7d0e51 --- /dev/null +++ b/extras/CepheiPrefs.framework/el.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Υποστήριξη + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Υποστήριξη + + diff --git a/extras/CepheiPrefs.framework/en.lproj/Common.strings b/extras/CepheiPrefs.framework/en.lproj/Common.strings new file mode 100644 index 0000000..62e11aa --- /dev/null +++ b/extras/CepheiPrefs.framework/en.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + About + CREDITS + Credits + GENERAL + General + SUPPORT + Support + + + ENABLED + Enabled + + + OFF + Off + ON + On + + + VISIT_WEBSITE + Visit Website + + + EMAIL_SUPPORT_HEADER + Having Problems? + + + EMAIL_SUPPORT + Email Support + + + DONATE + Tip Jar + + + DONATE_FOOTER + Please consider showing your appreciation for this tweak with a small donation to the tip jar. + + + DEVELOPER + Developer + DEVELOPERS + Developers + LEAD_DEVELOPER + Lead Developer + DESIGNER + Designer + DESIGNERS + Designers + ICON + Icon + ICONS + Icons + TRANSLATORS + Translators + + + ENTER_VALUE + Enter Value + + diff --git a/extras/CepheiPrefs.framework/en.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/en.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/en.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/en.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/en.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..c49fca8 --- /dev/null +++ b/extras/CepheiPrefs.framework/en.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + By %@ + + diff --git a/extras/CepheiPrefs.framework/en.lproj/Support.strings b/extras/CepheiPrefs.framework/en.lproj/Support.strings new file mode 100644 index 0000000..9779ef2 --- /dev/null +++ b/extras/CepheiPrefs.framework/en.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Support + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support + + + NO_EMAIL_ACCOUNTS_TITLE + No mail accounts are set up. + + + NO_EMAIL_ACCOUNTS_BODY + Use the Mail settings to add a new account. + + diff --git a/extras/CepheiPrefs.framework/en_AU.lproj/Common.strings b/extras/CepheiPrefs.framework/en_AU.lproj/Common.strings new file mode 100644 index 0000000..62e11aa --- /dev/null +++ b/extras/CepheiPrefs.framework/en_AU.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + About + CREDITS + Credits + GENERAL + General + SUPPORT + Support + + + ENABLED + Enabled + + + OFF + Off + ON + On + + + VISIT_WEBSITE + Visit Website + + + EMAIL_SUPPORT_HEADER + Having Problems? + + + EMAIL_SUPPORT + Email Support + + + DONATE + Tip Jar + + + DONATE_FOOTER + Please consider showing your appreciation for this tweak with a small donation to the tip jar. + + + DEVELOPER + Developer + DEVELOPERS + Developers + LEAD_DEVELOPER + Lead Developer + DESIGNER + Designer + DESIGNERS + Designers + ICON + Icon + ICONS + Icons + TRANSLATORS + Translators + + + ENTER_VALUE + Enter Value + + diff --git a/extras/CepheiPrefs.framework/en_AU.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/en_AU.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/en_AU.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/en_AU.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/en_AU.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..c49fca8 --- /dev/null +++ b/extras/CepheiPrefs.framework/en_AU.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + By %@ + + diff --git a/extras/CepheiPrefs.framework/en_AU.lproj/Support.strings b/extras/CepheiPrefs.framework/en_AU.lproj/Support.strings new file mode 100644 index 0000000..9779ef2 --- /dev/null +++ b/extras/CepheiPrefs.framework/en_AU.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Support + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support + + + NO_EMAIL_ACCOUNTS_TITLE + No mail accounts are set up. + + + NO_EMAIL_ACCOUNTS_BODY + Use the Mail settings to add a new account. + + diff --git a/extras/CepheiPrefs.framework/en_GB.lproj/Common.strings b/extras/CepheiPrefs.framework/en_GB.lproj/Common.strings new file mode 100644 index 0000000..62e11aa --- /dev/null +++ b/extras/CepheiPrefs.framework/en_GB.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + About + CREDITS + Credits + GENERAL + General + SUPPORT + Support + + + ENABLED + Enabled + + + OFF + Off + ON + On + + + VISIT_WEBSITE + Visit Website + + + EMAIL_SUPPORT_HEADER + Having Problems? + + + EMAIL_SUPPORT + Email Support + + + DONATE + Tip Jar + + + DONATE_FOOTER + Please consider showing your appreciation for this tweak with a small donation to the tip jar. + + + DEVELOPER + Developer + DEVELOPERS + Developers + LEAD_DEVELOPER + Lead Developer + DESIGNER + Designer + DESIGNERS + Designers + ICON + Icon + ICONS + Icons + TRANSLATORS + Translators + + + ENTER_VALUE + Enter Value + + diff --git a/extras/CepheiPrefs.framework/en_GB.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/en_GB.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/en_GB.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/en_GB.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/en_GB.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..c49fca8 --- /dev/null +++ b/extras/CepheiPrefs.framework/en_GB.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + By %@ + + diff --git a/extras/CepheiPrefs.framework/en_GB.lproj/Support.strings b/extras/CepheiPrefs.framework/en_GB.lproj/Support.strings new file mode 100644 index 0000000..9779ef2 --- /dev/null +++ b/extras/CepheiPrefs.framework/en_GB.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Support + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support + + + NO_EMAIL_ACCOUNTS_TITLE + No mail accounts are set up. + + + NO_EMAIL_ACCOUNTS_BODY + Use the Mail settings to add a new account. + + diff --git a/extras/CepheiPrefs.framework/entry.plist b/extras/CepheiPrefs.framework/entry.plist new file mode 100644 index 0000000..5e064e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/entry.plist @@ -0,0 +1,21 @@ + + + + + entry + + bundle + Cephei + cell + PSLinkCell + detail + HBDemoRootListController + icon + icon.png + isController + + label + Cephei Demo + + + diff --git a/extras/CepheiPrefs.framework/es.lproj/Common.strings b/extras/CepheiPrefs.framework/es.lproj/Common.strings new file mode 100644 index 0000000..daf1b0a --- /dev/null +++ b/extras/CepheiPrefs.framework/es.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Acerca + CREDITS + Créditos + GENERAL + General + SUPPORT + Soporte + + + ENABLED + Habilitado + + + OFF + No + ON + Sí + + + VISIT_WEBSITE + Visitar sitio web + + + EMAIL_SUPPORT_HEADER + ¿Tienes problemas? + + + EMAIL_SUPPORT + Soporte por email + + + DONATE + Tarro de Donaciones + + + DONATE_FOOTER + Considera mostrar tu aprecio a este tweak con una pequeña donación al tarro de donaciones. + + + DEVELOPER + Desarrollador + DEVELOPERS + Desarrolladores + LEAD_DEVELOPER + Desarrollador principal + DESIGNER + Diseñador + DESIGNERS + Diseñadores + ICON + Icono + ICONS + Iconos + TRANSLATORS + Traductores + + + ENTER_VALUE + Introducid valor + + diff --git a/extras/CepheiPrefs.framework/es.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/es.lproj/PackageCell.strings new file mode 100644 index 0000000..3088dc5 --- /dev/null +++ b/extras/CepheiPrefs.framework/es.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Abrir en… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Este paquete será instalado del repositorio %@. + + diff --git a/extras/CepheiPrefs.framework/es.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/es.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..ec293d8 --- /dev/null +++ b/extras/CepheiPrefs.framework/es.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versión %@ + + + HEADER_AUTHOR + Por %@ + + diff --git a/extras/CepheiPrefs.framework/es.lproj/Support.strings b/extras/CepheiPrefs.framework/es.lproj/Support.strings new file mode 100644 index 0000000..7c9b7a3 --- /dev/null +++ b/extras/CepheiPrefs.framework/es.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Soporte + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Soporte + + + NO_EMAIL_ACCOUNTS_TITLE + No hay cuentas de correo configuradas. + + + NO_EMAIL_ACCOUNTS_BODY + Usa los ajustes de Mail para añadir una nueva cuenta. + + diff --git a/extras/CepheiPrefs.framework/es_MX.lproj/Common.strings b/extras/CepheiPrefs.framework/es_MX.lproj/Common.strings new file mode 100644 index 0000000..daf1b0a --- /dev/null +++ b/extras/CepheiPrefs.framework/es_MX.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Acerca + CREDITS + Créditos + GENERAL + General + SUPPORT + Soporte + + + ENABLED + Habilitado + + + OFF + No + ON + Sí + + + VISIT_WEBSITE + Visitar sitio web + + + EMAIL_SUPPORT_HEADER + ¿Tienes problemas? + + + EMAIL_SUPPORT + Soporte por email + + + DONATE + Tarro de Donaciones + + + DONATE_FOOTER + Considera mostrar tu aprecio a este tweak con una pequeña donación al tarro de donaciones. + + + DEVELOPER + Desarrollador + DEVELOPERS + Desarrolladores + LEAD_DEVELOPER + Desarrollador principal + DESIGNER + Diseñador + DESIGNERS + Diseñadores + ICON + Icono + ICONS + Iconos + TRANSLATORS + Traductores + + + ENTER_VALUE + Introducid valor + + diff --git a/extras/CepheiPrefs.framework/es_MX.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/es_MX.lproj/PackageCell.strings new file mode 100644 index 0000000..3088dc5 --- /dev/null +++ b/extras/CepheiPrefs.framework/es_MX.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Abrir en… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Este paquete será instalado del repositorio %@. + + diff --git a/extras/CepheiPrefs.framework/es_MX.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/es_MX.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..ec293d8 --- /dev/null +++ b/extras/CepheiPrefs.framework/es_MX.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versión %@ + + + HEADER_AUTHOR + Por %@ + + diff --git a/extras/CepheiPrefs.framework/es_MX.lproj/Support.strings b/extras/CepheiPrefs.framework/es_MX.lproj/Support.strings new file mode 100644 index 0000000..7c9b7a3 --- /dev/null +++ b/extras/CepheiPrefs.framework/es_MX.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Soporte + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Soporte + + + NO_EMAIL_ACCOUNTS_TITLE + No hay cuentas de correo configuradas. + + + NO_EMAIL_ACCOUNTS_BODY + Usa los ajustes de Mail para añadir una nueva cuenta. + + diff --git a/extras/CepheiPrefs.framework/fi.lproj/Common.strings b/extras/CepheiPrefs.framework/fi.lproj/Common.strings new file mode 100644 index 0000000..4a7f878 --- /dev/null +++ b/extras/CepheiPrefs.framework/fi.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Tietoja + CREDITS + Kiitokset + GENERAL + Yleiset + SUPPORT + Tuki + + + ENABLED + Päällä + + + OFF + Pois + ON + Päällä + + + VISIT_WEBSITE + Vieraile verkkosivulla + + + EMAIL_SUPPORT_HEADER + Onko ongelmia? + + + EMAIL_SUPPORT + Sähköpostituki + + + DONATE + Lahjoita + + + DONATE_FOOTER + Mikäli olet tyytyväinen tähän twiikkiin, harkitse lahjoituksen antamista. + + + DEVELOPER + Kehittäjä + DEVELOPERS + Kehittäjät + LEAD_DEVELOPER + Pääkehittäjä + DESIGNER + Suunnittelija + DESIGNERS + Suunnittelijat + ICON + Kuvake + ICONS + Kuvakkeet + TRANSLATORS + Kääntäjät + + + ENTER_VALUE + Anna arvo + + diff --git a/extras/CepheiPrefs.framework/fi.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/fi.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/fi.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/fi.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/fi.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..f8251f4 --- /dev/null +++ b/extras/CepheiPrefs.framework/fi.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versio %@ + + + HEADER_AUTHOR + %@ + + diff --git a/extras/CepheiPrefs.framework/fi.lproj/Support.strings b/extras/CepheiPrefs.framework/fi.lproj/Support.strings new file mode 100644 index 0000000..6478758 --- /dev/null +++ b/extras/CepheiPrefs.framework/fi.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Tuki + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Tuki + + diff --git a/extras/CepheiPrefs.framework/fr.lproj/Common.strings b/extras/CepheiPrefs.framework/fr.lproj/Common.strings new file mode 100644 index 0000000..bdefc76 --- /dev/null +++ b/extras/CepheiPrefs.framework/fr.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + À propos + CREDITS + Crédits + GENERAL + Général + SUPPORT + Aide + + + ENABLED + Activé + + + OFF + Désactivé + ON + Activé + + + VISIT_WEBSITE + Visiter le site web + + + EMAIL_SUPPORT_HEADER + Des problèmes ? + + + EMAIL_SUPPORT + Aide par email + + + DONATE + Faire un don + + + DONATE_FOOTER + Montrez votre intérêt pour ce tweak en faisant un don + + + DEVELOPER + Développeur + DEVELOPERS + Développeurs + LEAD_DEVELOPER + Développeur principal + DESIGNER + Designer + DESIGNERS + Designers + ICON + Icône + ICONS + Icônes + TRANSLATORS + Traducteurs + + + ENTER_VALUE + Entrer une valeur + + diff --git a/extras/CepheiPrefs.framework/fr.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/fr.lproj/PackageCell.strings new file mode 100644 index 0000000..e3a81ac --- /dev/null +++ b/extras/CepheiPrefs.framework/fr.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Ouvrir dans… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Ce paquet sera installé depuis la source %@. + + diff --git a/extras/CepheiPrefs.framework/fr.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/fr.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..384dbfc --- /dev/null +++ b/extras/CepheiPrefs.framework/fr.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + Par %@ + + diff --git a/extras/CepheiPrefs.framework/fr.lproj/Support.strings b/extras/CepheiPrefs.framework/fr.lproj/Support.strings new file mode 100644 index 0000000..ea69abd --- /dev/null +++ b/extras/CepheiPrefs.framework/fr.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Aide + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Aide + + + NO_EMAIL_ACCOUNTS_TITLE + Aucun compte mail n'est paramétré + + + NO_EMAIL_ACCOUNTS_BODY + Utilisez les options de Mail pour ajouter un nouveau compte. + + diff --git a/extras/CepheiPrefs.framework/fr_CA.lproj/Common.strings b/extras/CepheiPrefs.framework/fr_CA.lproj/Common.strings new file mode 100644 index 0000000..fc0ef5c --- /dev/null +++ b/extras/CepheiPrefs.framework/fr_CA.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + À propos + CREDITS + Crédits + GENERAL + Général + SUPPORT + Aide + + + ENABLED + Activé + + + OFF + Désactivé + ON + Activé + + + VISIT_WEBSITE + Visiter le site web + + + EMAIL_SUPPORT_HEADER + Des problèmes? + + + EMAIL_SUPPORT + Aide par email + + + DONATE + Faire un don + + + DONATE_FOOTER + Montrez votre intérêt pour ce tweak en faisant un don + + + DEVELOPER + Développeur + DEVELOPERS + Développeurs + LEAD_DEVELOPER + Développeur principal + DESIGNER + Designer + DESIGNERS + Designers + ICON + Icône + ICONS + Icônes + TRANSLATORS + Traducteurs + + + ENTER_VALUE + Entrer une valeur + + diff --git a/extras/CepheiPrefs.framework/fr_CA.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/fr_CA.lproj/PackageCell.strings new file mode 100644 index 0000000..e3a81ac --- /dev/null +++ b/extras/CepheiPrefs.framework/fr_CA.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Ouvrir dans… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Ce paquet sera installé depuis la source %@. + + diff --git a/extras/CepheiPrefs.framework/fr_CA.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/fr_CA.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..384dbfc --- /dev/null +++ b/extras/CepheiPrefs.framework/fr_CA.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + Par %@ + + diff --git a/extras/CepheiPrefs.framework/fr_CA.lproj/Support.strings b/extras/CepheiPrefs.framework/fr_CA.lproj/Support.strings new file mode 100644 index 0000000..ea69abd --- /dev/null +++ b/extras/CepheiPrefs.framework/fr_CA.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Aide + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Aide + + + NO_EMAIL_ACCOUNTS_TITLE + Aucun compte mail n'est paramétré + + + NO_EMAIL_ACCOUNTS_BODY + Utilisez les options de Mail pour ajouter un nouveau compte. + + diff --git a/extras/CepheiPrefs.framework/he.lproj/Common.strings b/extras/CepheiPrefs.framework/he.lproj/Common.strings new file mode 100644 index 0000000..5f537fa --- /dev/null +++ b/extras/CepheiPrefs.framework/he.lproj/Common.strings @@ -0,0 +1,66 @@ + + + + + + ABOUT + אודות + CREDITS + קרדיטים + GENERAL + כללי + SUPPORT + תמיכה + + + ENABLED + מופעל + + + OFF + כבוי + ON + פעיל + + + VISIT_WEBSITE + בקר/י באתר + + + EMAIL_SUPPORT_HEADER + חווה בעיות? + + + EMAIL_SUPPORT + שלח/י דואר לתמיכה + + + DONATE + כוס טיפים + + DONATE_FOOTER + אנא שקול/י להראות את הערתך לטוויק זה עם תרומה קטנה לכוס הטיפים. + + + DEVELOPER + מפתח + DEVELOPERS + מפתחים + LEAD_DEVELOPER + מפתח מוביל + DESIGNER + מעצב + DESIGNERS + מעצבים + ICON + אייקון + ICONS + אייקונים + TRANSLATORS + מתרגמים + + + ENTER_VALUE + הכנס ערך + + diff --git a/extras/CepheiPrefs.framework/he.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/he.lproj/PackageCell.strings new file mode 100644 index 0000000..fdb699a --- /dev/null +++ b/extras/CepheiPrefs.framework/he.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + פתח ב... + + + OPEN_PACKAGE_IN_REPO_NOTICE + חבילה זו תותקן מהמקור %@. + + diff --git a/extras/CepheiPrefs.framework/he.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/he.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..f554c76 --- /dev/null +++ b/extras/CepheiPrefs.framework/he.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + גרסה %@ + + + HEADER_AUTHOR + על ידי %@ + + diff --git a/extras/CepheiPrefs.framework/he.lproj/Support.strings b/extras/CepheiPrefs.framework/he.lproj/Support.strings new file mode 100644 index 0000000..7de3ca6 --- /dev/null +++ b/extras/CepheiPrefs.framework/he.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + אין חשבונות דוא"ל שהוגדרו.. + + + NO_EMAIL_ACCOUNTS_BODY + השתמש/י בהגדרות דוא"ל כדי להוסיף חשבון חדש. + + diff --git a/extras/CepheiPrefs.framework/heart.png b/extras/CepheiPrefs.framework/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4fae45deace3111924ca96353b240b8f4faa23 GIT binary patch literal 362 zcmV-w0hRuVP)5o_ z%Su!M007XV;!Pc_u~BK1L~8z;5O&z=q>PVf#KS^ryQiDR59%$8}UZIFeqjrTt``&x(j|wApg)$C&lyafc zlC*Xe?rAY6dCOUMdL$VmI9T2`@X%VIoopiNYXDJznqYVGN! z*M@R`3zW$y(=D z(?b{H7Obdtl{+SFN{P7dv#%0z6&tssQI0C#Ex0SH$gn+4u25sm2QgU%hWzrvH5zP~ zQQ};`BkgYR#HM!w^f~fM9#4fv_4)0!TWEIZ*c-Rhti%600i-)V^V~&U#{d8T07*qo IM6N<$g4lbXbN~PV literal 0 HcmV?d00001 diff --git a/extras/CepheiPrefs.framework/heart@2x.png b/extras/CepheiPrefs.framework/heart@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..994a89c595c831c745d7a1dd4f6a9d3b13ba453b GIT binary patch literal 792 zcmV+z1LypSP)g3M-V7 zP)J=241BPahRKQ+Mooxhl`%)o*~~e2`5RNT>CV~h^b&m^|C7ofx0q|Gr)fXm!dVtBsLDksZznb@nT>%U(Zf z6ROOU?Xof6b4I9lK)FwRs#?2n#6mf)Qle6*u~xCc60#(X_Jq%c1}i09Q0#zEYoijw zBqSt__P7e6(F(b`nCNSv!ZcSJVUs3JmdVB>hlOw4BTHA;Tc^ocOJ%uah@C=(ak`W1 zMa@oo#;q!ZLni4?(kkbjFv}$iocD`qQpvMHn-eO9@7y7kd|QP*3Un&4S9n!AgOv)Q z+6?Iw`%RzGGNnkpdQ)|HU)Ug1iqxx9tix)dRHl?@RArP74{3M6aG9}0D3hndc*mS}w@k>l zM_8#-wk^Uoc?NE-(~g_$qUla(@|1zP(LrIego_eh)~?2V2BOdhLZz|(VYrWkqwdmQ z!@VQ?ZjLLAR4#mPy8amIEuqdl-56!B@U5x(s=!8V{_vO-ZnjUTG(}$wvO%kp7D;2g z{lZr!>aAR_Xwl$lS<)(UQ25dWy^-{i7JphIp+}P)7CtjZPqHo7>@UmY=#^=zgmO1X zC(E-MHCZL8*Ji2~b{HYGMNVq5PM$uQqej^3I^CPER@kgSpFOBnc-u9u_JCi7cMa1o z^VMnhrXjkz-!WmEYxUbgC$)K9fy-w5N!YH?fIO*QtM&3+Fw;?Crx6AyVX+1+*2=|n zKM1>xlmXeE)9AcaW;i008zn<>tZ>#DKMVVel|i}IXcoROL5Ag9W4GJ=3$o?=5BnR* W*!SRL*5N1s000080SDmkUc3&0E;wNzh9MJjk)&ls ztZmU+@+ z?lRKVDix;65M$hHpE<+%*5tC?X;vA|j4^!FXMqLy4Qcq)9|<_k>5y zG21+gty3c+YR%El=|15ZjUwVrt1L3#Jo7EF&Jht&W2q~hMY#!fh^Vu{WFJ%M9VPl0 zVV>P0>a8}!slH;fhz6V8?M5H)j#9miG}lfMvD&rHpu|LbMC@>%YAq>uy%i$j1%th3 zoZTYcGRpuhDf3CccTB{e4c4Mt>=f~;QA(XzFS8sLvBp*2_GQ~dY&S`TGwbdL-V(7& zU#A)1Wf8CXv~%fTx*8EHT!E3cir8kfbLrqNwIUu-;S?2qu0iZDN+CM?iKC*yGNWx0 zvCCM6=wzlk@upEuah-i4?p3JH9#$`odricCUstHhtr4+OrFWH>D`LIA3fJ925fO*o zsYKyMJ0$+&OWxJrOX7qnTBnEQB5F-msx>OD5;0r3lfI@-yygn6RqZhweNUOzx+F{zCM%|{R*0h}X!b!biWsZ7ekGbbs97JoM2t~f zOGGTwtgpQy#we~OB7Ub?wJjoURa{F&JgQkYPmB15Vk)y-)SISRxnGF5U#a5hZJnrb zi<7=1;zivQ&rJ@BeFi$|Q+9~`hAWm5GerDRHz#%Rw21l26-Qs2M10@-Omtkl;d6?i z)O7V?v%%h{mvtgm>#6=jkOmQpRVm1gHi_8fHf^EO zgHDJh%Tz1aaGOQ!G}?vg=x6FhEZ1ABe8CnG+uiI!bo4{VMf^d3t@cI#7V)|f&R4k^ z>O`#cA?KmQ?Y4>7>NCzqnW>J5c*Y>-ZM-)`Z1QofRpQ$Yi&$&03s7c~Jt8)^R%?{F z!yXZTah(fPYO(_&))=I4W9<^L(GA)_2h-GuCQlilFr#f1@lT)EMk@T+2@y}|=iElv zBI0$Uw4p8@(jXcvnCdi}@m&EY{PR-C(1L{l;qt-7U~4>MT&DWy5R` zvEM}Pq`So;8qCqn={{n;hy%W`F zh{L|CT)XS%w<3=FsZQQDz-kePO;w>N`dcZY&I}dk>rWzT-K~?N8R#hy$K9j9l_F~W zNM}WLjkO{UdQQYKGj&yTLp?7d;+ThB=AyXXMiC7bsB+N^_gA$R>FJ^x>{eASxui|~ Y7l%D8TkQiK2LJ#707*qoM6N<$f`=w$T>t<8 literal 0 HcmV?d00001 diff --git a/extras/CepheiPrefs.framework/hi.lproj/Common.strings b/extras/CepheiPrefs.framework/hi.lproj/Common.strings new file mode 100644 index 0000000..3cca655 --- /dev/null +++ b/extras/CepheiPrefs.framework/hi.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + के बारे में + CREDITS + क्रेडिट्स + GENERAL + सामान्य + SUPPORT + समर्थन + + + ENABLED + सक्षम किया + + + OFF + बंद + ON + चालू + + + VISIT_WEBSITE + बेवसाइट देखना + + + EMAIL_SUPPORT_HEADER + समस्याएं आ रही हैं? + + + EMAIL_SUPPORT + ई - मेल समर्थन + + + DONATE + दान + + + DONATE_FOOTER + एक दान के साथ इस tweak के लिए अपनी प्रशंसा दिखा पर विचार करें। + + + DEVELOPER + डेवलपर + DEVELOPERS + डेवलपर्स + LEAD_DEVELOPER + प्रमुख डेवलपर + DESIGNER + डिजाइनर + DESIGNERS + डिजाइनर + ICON + चिह्न + ICONS + प्रतीक + TRANSLATORS + अनुवादक + + + ENTER_VALUE + मूल्य दर्ज करें + + diff --git a/extras/CepheiPrefs.framework/hi.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/hi.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/hi.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/hi.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/hi.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..d697405 --- /dev/null +++ b/extras/CepheiPrefs.framework/hi.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + संस्करण %@ + + + HEADER_AUTHOR + द्वारा %@ + + diff --git a/extras/CepheiPrefs.framework/hi.lproj/Support.strings b/extras/CepheiPrefs.framework/hi.lproj/Support.strings new file mode 100644 index 0000000..ee3d499 --- /dev/null +++ b/extras/CepheiPrefs.framework/hi.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + समर्थन + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – समर्थन + + diff --git a/extras/CepheiPrefs.framework/hr.lproj/Common.strings b/extras/CepheiPrefs.framework/hr.lproj/Common.strings new file mode 100644 index 0000000..5d4122d --- /dev/null +++ b/extras/CepheiPrefs.framework/hr.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + O Nama + CREDITS + Zasluge + GENERAL + Općenito + SUPPORT + Podrška + + + ENABLED + Uključeno + + + OFF + Isključeno + ON + Uključeno + + + VISIT_WEBSITE + Posjeti Web Stranicu + + + EMAIL_SUPPORT_HEADER + Imaš Poteškoća? + + + EMAIL_SUPPORT + Kontaktiraj Podršku + + + DONATE + Doniraj + + + DONATE_FOOTER + Molimo pokažite zahvalnost za ovaj tweak donirajući. + + + DEVELOPER + Programer + DEVELOPERS + Programeri + LEAD_DEVELOPER + Glavni Programer + DESIGNER + Dizajner + DESIGNERS + Dizajneri + ICON + Ikona + ICONS + Ikone + TRANSLATORS + Prevoditelji + + + ENTER_VALUE + Unesi vrijednost + + diff --git a/extras/CepheiPrefs.framework/hr.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/hr.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/hr.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/hr.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/hr.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..f9a7d25 --- /dev/null +++ b/extras/CepheiPrefs.framework/hr.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Verzija %@ + + + HEADER_AUTHOR + Od %@ + + diff --git a/extras/CepheiPrefs.framework/hr.lproj/Support.strings b/extras/CepheiPrefs.framework/hr.lproj/Support.strings new file mode 100644 index 0000000..6dc5e02 --- /dev/null +++ b/extras/CepheiPrefs.framework/hr.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Podrška + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Podrška + + diff --git a/extras/CepheiPrefs.framework/hu.lproj/Common.strings b/extras/CepheiPrefs.framework/hu.lproj/Common.strings new file mode 100644 index 0000000..5d48738 --- /dev/null +++ b/extras/CepheiPrefs.framework/hu.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Infó + CREDITS + Készítõk + GENERAL + Általános + SUPPORT + Támogatás + + + ENABLED + Engedélyezés + + + OFF + Ki + ON + Be + + + VISIT_WEBSITE + Weboldal megtekintése + + + EMAIL_SUPPORT_HEADER + Problémád akadt? + + + EMAIL_SUPPORT + Email támogatás + + + DONATE + Adakozás + + + DONATE_FOOTER + Munkánk elismeréseként kérlek fontold meg az adakozást számunkra. + + + DEVELOPER + Fejleszõ + DEVELOPERS + Fejlesztõk + LEAD_DEVELOPER + Vezetõ fejlesztõ + DESIGNER + Tervezõ + DESIGNERS + Tervezõk + ICON + Ikon + ICONS + Ikonok + TRANSLATORS + Fordítók + + + ENTER_VALUE + Adj meg egy értéket + + diff --git a/extras/CepheiPrefs.framework/hu.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/hu.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/hu.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/hu.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/hu.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..49c7a33 --- /dev/null +++ b/extras/CepheiPrefs.framework/hu.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Verzió %@ + + + HEADER_AUTHOR + Készítette %@ + + diff --git a/extras/CepheiPrefs.framework/hu.lproj/Support.strings b/extras/CepheiPrefs.framework/hu.lproj/Support.strings new file mode 100644 index 0000000..da220b2 --- /dev/null +++ b/extras/CepheiPrefs.framework/hu.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Támogatás + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Támogatás + + diff --git a/extras/CepheiPrefs.framework/icon.png b/extras/CepheiPrefs.framework/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4506924fc3c5c99d6d06f33376f7eb7e2a14f151 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^vLMXC3?vhMr`rN4i2$DvSN8&+^+EU61>M^aatFv* zA9#0W+L?7h_wO@&@&l^jC<*clX81qb>djTwD?x|1J_U;Td%8G=Xqj? zEw=yuC#SK9r>X3Tn)`}jO8>Q~b}ds>x1rX2)?@^_&$&U zMS(!Z-3|VC)(3+`<|o`=7x-jd@ZEKR_YYcg=K}Q#lmz(&GyI=!{`F*Pi)d9=AF+{@95fld8U`Mt^0V-Q92d zP*V6xTGPR~tFDUdiaY!4s>;6DJS)>)>-$%|8jdk8c9CFkT*juLsmSTPiqB=G)WfB# zoF}egja-!$u`+An5uMVN-m$NOrdzRoT-TxQxhGADqk~8BQM-qp(wB}sDvPFhXKu;7 iZkl9PklZ@Mqx#P}{?vO@872Z<$l&Sf=d#Wzp$Pz}D}2`g literal 0 HcmV?d00001 diff --git a/extras/CepheiPrefs.framework/icon@3x.png b/extras/CepheiPrefs.framework/icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e80d62c06dbf50bfe10c5b8a1c07aa1593969b GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^;ULVx3?$veG~-wO3?gc(T5`xwO8Nv6~ z2iym8H-tU}3*KKBe1BEw;|;<0<|o`=^ribBP_IBqkYDhBhQ}W+%WpR5(K?yX$2pOs zx!>v?Q0}Iui(^Oy(8_Hy%2b~-la`%-s?Yh zRlkoJ?zm&|=(PEq?8=&|@4Z~NfBrLF+IH)9xm<|k=hxZIR)^=^k6pRs_vPw%K8;i(j#~^{sQx`J~^{x4BR5 + + + + + ABOUT + Tentang + CREDITS + Daftar Penghargaan + GENERAL + Umum + SUPPORT + Bantuan + + + ENABLED + Diaktifkan + + + OFF + Mati + ON + Nyala + + + VISIT_WEBSITE + Kunjungi Situs + + + EMAIL_SUPPORT_HEADER + Ada masalah? + + + EMAIL_SUPPORT + Email Bantuan + + + DONATE + Kotak donasi + + + DONATE_FOOTER + Tunjukkan apresiasimu terhadap tweak ini dengan donasi. + + + DEVELOPER + Pengembang + DEVELOPERS + Pengembang + LEAD_DEVELOPER + Pimpinan Pengembang + DESIGNER + Desainer + DESIGNERS + Desainer + ICON + Ikon + ICONS + Ikon + TRANSLATORS + Penerjemah + + + ENTER_VALUE + Masukan nilai + + diff --git a/extras/CepheiPrefs.framework/id.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/id.lproj/PackageCell.strings new file mode 100644 index 0000000..dc99aeb --- /dev/null +++ b/extras/CepheiPrefs.framework/id.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Buka dengan… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Paket ini akan dipasang dari repository %@. + + diff --git a/extras/CepheiPrefs.framework/id.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/id.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..55826f5 --- /dev/null +++ b/extras/CepheiPrefs.framework/id.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versi %@ + + + HEADER_AUTHOR + Oleh %@ + + diff --git a/extras/CepheiPrefs.framework/id.lproj/Support.strings b/extras/CepheiPrefs.framework/id.lproj/Support.strings new file mode 100644 index 0000000..13ac704 --- /dev/null +++ b/extras/CepheiPrefs.framework/id.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Bantuan + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Bantuan + + + NO_EMAIL_ACCOUNTS_TITLE + Tidak ada akun email yang terdaftar. + + + NO_EMAIL_ACCOUNTS_BODY + Gunakan pengaturan email untuk menambahkan akun. + + diff --git a/extras/CepheiPrefs.framework/it.lproj/Common.strings b/extras/CepheiPrefs.framework/it.lproj/Common.strings new file mode 100644 index 0000000..d136e13 --- /dev/null +++ b/extras/CepheiPrefs.framework/it.lproj/Common.strings @@ -0,0 +1,66 @@ + + + + + + ABOUT + Info + CREDITS + Crediti + GENERAL + Generali + SUPPORT + Supporto + + + ENABLED + Abilitato + + + OFF + Disattivato + ON + Attivata + + + VISIT_WEBSITE + Visita il sito + + + EMAIL_SUPPORT_HEADER + Hai problemi? + + + EMAIL_SUPPORT + Email supporto + + + DONATE + Barattolo delle mance + + DONATE_FOOTER + Per favore, considera di mostrare il tuo apprezzamento per questo tweak attraverso una piccola donazione al barattolo delle mance. + + + DEVELOPER + Sviluppatore + DEVELOPERS + Sviluppatori + LEAD_DEVELOPER + Sviluppatore principale + DESIGNER + Progettista + DESIGNERS + Progettisti + ICON + Icona + ICONS + Icone + TRANSLATORS + Traduttori + + + ENTER_VALUE + Inserisci un valore + + diff --git a/extras/CepheiPrefs.framework/it.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/it.lproj/PackageCell.strings new file mode 100644 index 0000000..5249546 --- /dev/null +++ b/extras/CepheiPrefs.framework/it.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Apri in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Questo pacchetto sarà installato dalla repository %@. + + diff --git a/extras/CepheiPrefs.framework/it.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/it.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..a39f271 --- /dev/null +++ b/extras/CepheiPrefs.framework/it.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versione %@ + + + HEADER_AUTHOR + Di %@ + + diff --git a/extras/CepheiPrefs.framework/it.lproj/Support.strings b/extras/CepheiPrefs.framework/it.lproj/Support.strings new file mode 100644 index 0000000..e9306cd --- /dev/null +++ b/extras/CepheiPrefs.framework/it.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Supporto + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Supporto + + + NO_EMAIL_ACCOUNTS_TITLE + Nessun account di posta elettronica configurato. + + + NO_EMAIL_ACCOUNTS_BODY + Usa le impostazioni di Mail per aggiungere un nuovo account. + + diff --git a/extras/CepheiPrefs.framework/ja.lproj/Common.strings b/extras/CepheiPrefs.framework/ja.lproj/Common.strings new file mode 100644 index 0000000..0fb381f --- /dev/null +++ b/extras/CepheiPrefs.framework/ja.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + 情報 + CREDITS + クレジット + GENERAL + 一般 + SUPPORT + サポート + + + ENABLED + 使用する + + + OFF + オフ + ON + オン + + + VISIT_WEBSITE + ウェブサイトを開く + + + EMAIL_SUPPORT_HEADER + 問題がありますか? + + + EMAIL_SUPPORT + メールサポート + + + DONATE + 寄付する + + + DONATE_FOOTER + このTweakへの感謝を表現するために寄付をご検討ください。 + + + DEVELOPER + 開発者 + DEVELOPERS + 開発者 + LEAD_DEVELOPER + リード開発者 + DESIGNER + デザイナー + DESIGNERS + デザイナー + ICON + アイコン + ICONS + アイコン + TRANSLATORS + 翻訳者 + + + ENTER_VALUE + 値を入力 + + diff --git a/extras/CepheiPrefs.framework/ja.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/ja.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/ja.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/ja.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/ja.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..e805a2a --- /dev/null +++ b/extras/CepheiPrefs.framework/ja.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + バージョン %@ + + + HEADER_AUTHOR + %@ によって + + diff --git a/extras/CepheiPrefs.framework/ja.lproj/Support.strings b/extras/CepheiPrefs.framework/ja.lproj/Support.strings new file mode 100644 index 0000000..a3e322a --- /dev/null +++ b/extras/CepheiPrefs.framework/ja.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + サポート + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – サポート + + diff --git a/extras/CepheiPrefs.framework/ko.lproj/Common.strings b/extras/CepheiPrefs.framework/ko.lproj/Common.strings new file mode 100644 index 0000000..2c2f05d --- /dev/null +++ b/extras/CepheiPrefs.framework/ko.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + 정보 + CREDITS + 제작진 + GENERAL + 일반 + SUPPORT + 문의 + + + ENABLED + 사용 + + + OFF + 끔 + ON + 켬 + + + VISIT_WEBSITE + 웹사이트 방문 + + + EMAIL_SUPPORT_HEADER + 문제가 있나요? + + + EMAIL_SUPPORT + 이메일 지원 + + + DONATE + 팁 저금통 + + + DONATE_FOOTER + 팁 저금통에 약간의 기부로 여러분의 감사 표시를 남겨주시면 감사드리겠습니다. + + + DEVELOPER + 개발자 + DEVELOPERS + 개발자 + LEAD_DEVELOPER + 주 개발자 + DESIGNER + 디자이너 + DESIGNERS + 디자이너 + ICON + 아이콘 + ICONS + 아이콘 + TRANSLATORS + 번역자 + + + ENTER_VALUE + 값을 입력해주세요 + + diff --git a/extras/CepheiPrefs.framework/ko.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/ko.lproj/PackageCell.strings new file mode 100644 index 0000000..9000740 --- /dev/null +++ b/extras/CepheiPrefs.framework/ko.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + 다음으로 열기… + + + OPEN_PACKAGE_IN_REPO_NOTICE + 이 패키지는 %@ 저장소에서 설치됩니다. + + diff --git a/extras/CepheiPrefs.framework/ko.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/ko.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..062dcff --- /dev/null +++ b/extras/CepheiPrefs.framework/ko.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + 버전 %@ + + + HEADER_AUTHOR + 제작: %@ + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/ko.lproj/Support.strings b/extras/CepheiPrefs.framework/ko.lproj/Support.strings new file mode 100644 index 0000000..60e9ce1 --- /dev/null +++ b/extras/CepheiPrefs.framework/ko.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + 문의 + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – 문의 + + + NO_EMAIL_ACCOUNTS_TITLE + 설정된 이메일 계정이 없습니다.. + + + NO_EMAIL_ACCOUNTS_BODY + 메일 설정에서 새 계정을 추가해주세요. + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/ms.lproj/Common.strings b/extras/CepheiPrefs.framework/ms.lproj/Common.strings new file mode 100644 index 0000000..407440e --- /dev/null +++ b/extras/CepheiPrefs.framework/ms.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Tentang + CREDITS + Kredit + GENERAL + Umum + SUPPORT + Bantuan + + + ENABLED + Membolehkan + + + OFF + Mati + ON + Aktif + + + VISIT_WEBSITE + Lawati Laman Web + + + EMAIL_SUPPORT_HEADER + Ada Masalah? + + + EMAIL_SUPPORT + Bantuan Emel + + + DONATE + Balang Derma + + + DONATE_FOOTER + Sila pertimbangkan untuk memberi penghargaan untuk tweak ini dengan memberi sejumlah derma di balang derma. + + + DEVELOPER + Pembuat + DEVELOPERS + Pembuat-pembuat + LEAD_DEVELOPER + Ketua Pembuat + DESIGNER + Pereka + DESIGNERS + Pereka-pereka + ICON + Ikon + ICONS + Ikon-ikon + TRANSLATORS + Penterjemah + + + ENTER_VALUE + Masukan nilai + + diff --git a/extras/CepheiPrefs.framework/ms.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/ms.lproj/PackageCell.strings new file mode 100644 index 0000000..7adc39e --- /dev/null +++ b/extras/CepheiPrefs.framework/ms.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Buka dalam… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Pekej ini akan dipasang di dalam repositori %@. + + diff --git a/extras/CepheiPrefs.framework/ms.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/ms.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..55826f5 --- /dev/null +++ b/extras/CepheiPrefs.framework/ms.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versi %@ + + + HEADER_AUTHOR + Oleh %@ + + diff --git a/extras/CepheiPrefs.framework/ms.lproj/Support.strings b/extras/CepheiPrefs.framework/ms.lproj/Support.strings new file mode 100644 index 0000000..0d4b664 --- /dev/null +++ b/extras/CepheiPrefs.framework/ms.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Bantuan + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Bantuan + + + NO_EMAIL_ACCOUNTS_TITLE + Didapati tiada akaun emel dibuat. + + + NO_EMAIL_ACCOUNTS_BODY + Gunakan tetapan aplikasi Mail untuk untuk membuat akaun baru. + + diff --git a/extras/CepheiPrefs.framework/nb.lproj/Common.strings b/extras/CepheiPrefs.framework/nb.lproj/Common.strings new file mode 100644 index 0000000..f2706b6 --- /dev/null +++ b/extras/CepheiPrefs.framework/nb.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Om + CREDITS + Medvirkende + GENERAL + Generelt + SUPPORT + Support + + + ENABLED + Aktivert + + + OFF + Av + ON + På + + + VISIT_WEBSITE + Besøk nettsiden + + + EMAIL_SUPPORT_HEADER + Opplever du feil? + + + EMAIL_SUPPORT + Epost support + + + DONATE + Donere + + + DONATE_FOOTER + Vennligst vurder å vise din takknemlighet for tweaken med en donasjon. + + + DEVELOPER + Utvikler + DEVELOPERS + Utviklere + LEAD_DEVELOPER + Hoved utvikler + DESIGNER + Designer + DESIGNERS + Designere + ICON + Ikon + ICONS + Ikoner + TRANSLATORS + Oversettere + + + ENTER_VALUE + Angi verdi + + diff --git a/extras/CepheiPrefs.framework/nb.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/nb.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/nb.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/nb.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/nb.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..9f76a8d --- /dev/null +++ b/extras/CepheiPrefs.framework/nb.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versjon %@ + + + HEADER_AUTHOR + Av %@ + + diff --git a/extras/CepheiPrefs.framework/nb.lproj/Support.strings b/extras/CepheiPrefs.framework/nb.lproj/Support.strings new file mode 100644 index 0000000..8949575 --- /dev/null +++ b/extras/CepheiPrefs.framework/nb.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Support + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support + + diff --git a/extras/CepheiPrefs.framework/nl.lproj/Common.strings b/extras/CepheiPrefs.framework/nl.lproj/Common.strings new file mode 100644 index 0000000..b9d5ba0 --- /dev/null +++ b/extras/CepheiPrefs.framework/nl.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Over + CREDITS + Credits + GENERAL + Algemeen + SUPPORT + Ondersteuning + + + ENABLED + Ingeschakeld + + + OFF + Uit + ON + Aan + + + VISIT_WEBSITE + Bezoek website + + + EMAIL_SUPPORT_HEADER + Ervaar je problemen? + + + EMAIL_SUPPORT + E-mail Ondersteuning + + + DONATE + Fooi Pot + + + DONATE_FOOTER + Laat uw waardering zien door middel van kleine donatie. + + + DEVELOPER + Ontwikkelaar + DEVELOPERS + Ontwikkelaars + LEAD_DEVELOPER + Hoofd-ontwikkelaar + DESIGNER + Ontwerper + DESIGNERS + Ontwerpers + ICON + Icoon + ICONS + Iconen + TRANSLATORS + Vertalers + + + ENTER_VALUE + Voer waarde in + + diff --git a/extras/CepheiPrefs.framework/nl.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/nl.lproj/PackageCell.strings new file mode 100644 index 0000000..badb60d --- /dev/null +++ b/extras/CepheiPrefs.framework/nl.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Dit pakket wordt vanuit de repository %@ geïnstalleerd. + + diff --git a/extras/CepheiPrefs.framework/nl.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/nl.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..61f3280 --- /dev/null +++ b/extras/CepheiPrefs.framework/nl.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versie %@ + + + HEADER_AUTHOR + Door %@ + + diff --git a/extras/CepheiPrefs.framework/nl.lproj/Support.strings b/extras/CepheiPrefs.framework/nl.lproj/Support.strings new file mode 100644 index 0000000..988c9c2 --- /dev/null +++ b/extras/CepheiPrefs.framework/nl.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Ondersteuning + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Ondersteuning + + + NO_EMAIL_ACCOUNTS_TITLE + Er zijn geen mail accounts geconfigureerd. + + + NO_EMAIL_ACCOUNTS_BODY + Ga naar uw mailinstellingen om een mailaccount toe te voegen. + + diff --git a/extras/CepheiPrefs.framework/package.png b/extras/CepheiPrefs.framework/package.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fc583dd3ef6f315104aea1d43685c78295e4cc GIT binary patch literal 488 zcmVP)#&N|SY=eiX;6o?ZMX5f_a}oILAi|93f5MfwQbFw^Z)y6<0Uuu&VA>e zcQx8r=gXHb>!q|`>AIOGgq2I1K5epN+x8M&w=N4|)*!eW@>fYWeUMAh(b0>?43^S4 zhSv%KcA@*Ew2lwn*}LHj9IZ({kMQq3Pa6!(Wo2en+qU}AFw_XcaMsbz{rx@OWkfFIV_ESpK(qjaXLM$o&OFOfpIrcA z_ceeI*AnZ647KgpD}^R@UH2h?*#JF}lR)jpcwO60JWJ!>91|jrW6ZGaZV%?0*fdAq zicr@A$X*Ew%Sr4U9JN~lD09a?(Y2mmL zWB>6z_t7+6OXdQ6Hd~fclBF3`vZfg;K|is8)0o$h*jTx$Bvc*_T3s}nd{q}-*dp6@ zz7C28vEb8!*dm!LMOeG%uU!32bz$L!&wTm|z|p{aL;4eon8cQSgAv#skZ`k+7axar zME8FU=t*psqg3}t=tm4<={U$8@#+`959qQVV}r7?5-)}HiaXG#8bioI5y}0qvASyT ze97$>u%7h~^|eL)6YLnm-X$9Cb$^JE$KjV?sp=!@>;ZO7_5&uRRzP-1rXI%sQHE21 z>;gzNklic=5SRp9xgbBmZtCxd!2-m?gkoZ8_HG4FM4#U;7+<9c_eh>20ybQL{xFJt z3$Ue{uuj7GR1NWB)c;o!C%*z@h;M{XS=hGVlhE0U_oYQ+Dy#sxEj{nS3fsZ|sBgtb z(AnA~lgYb1zY8Kj|VU2HNJB0Spf9*J#@@t1D zB17r>eqf6RPV^@Sf5x~f2#Sj})a&Q_xn-g3Lyn_HV2o*N0K{jY06_Ts2et$tRy|_Pppc*Hzs_g%bv7yEsmK(wH%0nyRY2=Vf-s z4*nu2_z%`R%)y_{K%yUAH{PWRipOii&fgT2`3>v#n{rqAGyjJ9--Q!-74&PAU2%F3 zFwQ{8sAL7A9#G({_uhN2C5aE`uuK14kyxXYdT^0)*!k>qe-JppY%WnBrE+Vf zpV0J3oC%(6T*r7 z1b(~OoVxGF$AYG#0OYBXh)!g@ga*Y2z|CEu+aq>vbIg4v2z-Oy%OVw-1M9B^-5`TL z-6?wt52Ly#EFOiqyp+T6RIma6nLG0;3JHJ@a36}_9y{h)(riyw7|VD(`+Lp@AjAt>n!NnHnwV@#ffP5|;xrVa-E zJ_La1Z*8J1p&q-l8fae<_-KZpAi8d(>!o|s8@HHLOtgC zV_Z(xYU?6FH_&32hvFXI&bosUITe5@Y;i@R7V@BW;BjQ?P>+ul8EF1WVdGCIrIwpW zX9YkLxHX8s5(Iw9b&~Sf&F$qo5q*JNYzvLl9)KR|>H1QH`e&G=>GZs$n0rw=O_9i}(1RFnnZw-+y31L~7R<7sjXSS4siS9)J+)!LTS4IlVCY@MlA+ zlGRg;vI3Bq=GF(}_w0-M=B^LV7IhV^VFu}I68w#C>zU;cO`&MZHl!0E+C43(+ z_eSFlrXpmU1d2YH;@#_@N&!GhelYm|E0nB{8Z9CS;;mSq3&qGsxab>|3jlU>6Danv z&|dkB9qH7)dKTAw4=_D)VE#ev(b@_?5EPc?D<*jv|)S6TBumw zjx%?zw3n~W$K3Y + + + + + ABOUT + Informacje + CREDITS + Podziękowania + GENERAL + Ogólne + SUPPORT + Wsparcie + + + ENABLED + Włączony + + + OFF + Wyłączone + ON + Włączone + + + VISIT_WEBSITE + Odwiedź naszą witrynę + + + EMAIL_SUPPORT_HEADER + Masz problemy? + + + EMAIL_SUPPORT + Wsparcie + + + DONATE + Napiwkir + + + DONATE_FOOTER + Jeżeli spodobało Ci się rozszerzenie, rozważ wsparcie autorów. + + + DEVELOPER + Programista + DEVELOPERS + Programiści + LEAD_DEVELOPER + Główny programista + DESIGNER + Projektant + DESIGNERS + Projektanci + ICON + Ikona + ICONS + Ikony + TRANSLATORS + Tłumacze + + + ENTER_VALUE + Wprowadź wartość + + diff --git a/extras/CepheiPrefs.framework/pl.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/pl.lproj/PackageCell.strings new file mode 100644 index 0000000..ed9cab0 --- /dev/null +++ b/extras/CepheiPrefs.framework/pl.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Otwórz w… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Paczka zostanie zainstalowana z wybranego repo %@. + + diff --git a/extras/CepheiPrefs.framework/pl.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/pl.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..5138bda --- /dev/null +++ b/extras/CepheiPrefs.framework/pl.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Wersja %@ + + + HEADER_AUTHOR + Przez %@ + + diff --git a/extras/CepheiPrefs.framework/pl.lproj/Support.strings b/extras/CepheiPrefs.framework/pl.lproj/Support.strings new file mode 100644 index 0000000..719e28d --- /dev/null +++ b/extras/CepheiPrefs.framework/pl.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Wsparcie + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Wsparcie + + + NO_EMAIL_ACCOUNTS_TITLE + Konto mailowe nie zostało dodane. + + + NO_EMAIL_ACCOUNTS_BODY + Użyj konfiguratora aplikacji Mail, aby dodać konto. + + diff --git a/extras/CepheiPrefs.framework/pt.lproj/Common.strings b/extras/CepheiPrefs.framework/pt.lproj/Common.strings new file mode 100644 index 0000000..67b104e --- /dev/null +++ b/extras/CepheiPrefs.framework/pt.lproj/Common.strings @@ -0,0 +1,66 @@ + + + + + + ABOUT + Sobre + CREDITS + Créditos + GENERAL + Geral + SUPPORT + Suporte + + + ENABLED + Ativo + + + OFF + Inativo + ON + Ativo + + + VISIT_WEBSITE + Visitar website + + + EMAIL_SUPPORT_HEADER + Havendo problemas? + + + EMAIL_SUPPORT + Suporte via e-mail + + + DONATE + Gorjeta + + DONATE_FOOTER + Considere mostrar seu apreço por esse tweak com uma pequena doação. + + + DEVELOPER + Desenvolvedor + DEVELOPERS + Desenvolvedores + LEAD_DEVELOPER + Desenvolvedor Líder + DESIGNER + Designer + DESIGNERS + Designers + ICON + Ícone + ICONS + Ícones + TRANSLATORS + Tradutores + + + ENTER_VALUE + Digite valor + + diff --git a/extras/CepheiPrefs.framework/pt.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/pt.lproj/PackageCell.strings new file mode 100644 index 0000000..a2398f1 --- /dev/null +++ b/extras/CepheiPrefs.framework/pt.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Abrir em… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Esse pacote será instalado do repositor %@. + + diff --git a/extras/CepheiPrefs.framework/pt.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/pt.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..1df1bc2 --- /dev/null +++ b/extras/CepheiPrefs.framework/pt.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versão %@ + + + HEADER_AUTHOR + Por %@ + + diff --git a/extras/CepheiPrefs.framework/pt.lproj/Support.strings b/extras/CepheiPrefs.framework/pt.lproj/Support.strings new file mode 100644 index 0000000..72837a6 --- /dev/null +++ b/extras/CepheiPrefs.framework/pt.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Suporte + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Suporte + + + NO_EMAIL_ACCOUNTS_TITLE + Nenhuma conta de e-mail configurada. + + + NO_EMAIL_ACCOUNTS_BODY + Use as configurações do email para adicionar uma nova conta. + + diff --git a/extras/CepheiPrefs.framework/pt_PT.lproj/Common.strings b/extras/CepheiPrefs.framework/pt_PT.lproj/Common.strings new file mode 100644 index 0000000..f0aa54d --- /dev/null +++ b/extras/CepheiPrefs.framework/pt_PT.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Sobre + CREDITS + Créditos + GENERAL + Geral + SUPPORT + Suporte + + + ENABLED + Ativo + + + OFF + Desligado + ON + Ligado + + + VISIT_WEBSITE + Visitar website + + + EMAIL_SUPPORT_HEADER + Havendo problemas? + + + EMAIL_SUPPORT + Suporte via e-mail + + + DONATE + Doar + + + DONATE_FOOTER + Por favor considere demonstrar sua apreciação pelo tweak por doação. + + + DEVELOPER + Desenvolvedor + DEVELOPERS + Desenvolvedores + LEAD_DEVELOPER + Desenvolvedor Líder + DESIGNER + Designer + DESIGNERS + Designers + ICON + Ícone + ICONS + Ícones + TRANSLATORS + Tradutores + + + ENTER_VALUE + Digite valor + + diff --git a/extras/CepheiPrefs.framework/pt_PT.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/pt_PT.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/pt_PT.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/pt_PT.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/pt_PT.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..1df1bc2 --- /dev/null +++ b/extras/CepheiPrefs.framework/pt_PT.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versão %@ + + + HEADER_AUTHOR + Por %@ + + diff --git a/extras/CepheiPrefs.framework/pt_PT.lproj/Support.strings b/extras/CepheiPrefs.framework/pt_PT.lproj/Support.strings new file mode 100644 index 0000000..c16373f --- /dev/null +++ b/extras/CepheiPrefs.framework/pt_PT.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Suporte + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Suporte + + diff --git a/extras/CepheiPrefs.framework/ro.lproj/Common.strings b/extras/CepheiPrefs.framework/ro.lproj/Common.strings new file mode 100644 index 0000000..69386e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/ro.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Despre + CREDITS + Credite + GENERAL + General + SUPPORT + Suport + + + ENABLED + Activat + + + OFF + Dezactivat + ON + Activat + + + VISIT_WEBSITE + Viziteaza Website + + + EMAIL_SUPPORT_HEADER + Probleme? + + + EMAIL_SUPPORT + Email Suport + + + DONATE + Cutia cu gogoși + + + DONATE_FOOTER + Te rugăm să iei în calcul manifestarea aprecierii pentru acest tweak cu o mică donație pentru cutia cu gogoși. + + + DEVELOPER + Dezvoltator + DEVELOPERS + Dezvoltatori + LEAD_DEVELOPER + Dezvoltator principal + DESIGNER + Designer + DESIGNERS + Designeri + ICON + Icoana + ICONS + Icone + TRANSLATORS + Traducatori + + + ENTER_VALUE + Introdu valoarea + + diff --git a/extras/CepheiPrefs.framework/ro.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/ro.lproj/PackageCell.strings new file mode 100644 index 0000000..fbdac59 --- /dev/null +++ b/extras/CepheiPrefs.framework/ro.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Deschide în… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Acest pachet va fi instalat din repozitoriul %@. + + diff --git a/extras/CepheiPrefs.framework/ro.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/ro.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..c63c880 --- /dev/null +++ b/extras/CepheiPrefs.framework/ro.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versiunea %@ + + + HEADER_AUTHOR + By %@ + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/ro.lproj/Support.strings b/extras/CepheiPrefs.framework/ro.lproj/Support.strings new file mode 100644 index 0000000..673997e --- /dev/null +++ b/extras/CepheiPrefs.framework/ro.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Suport + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support - Romanian language interface + + + NO_EMAIL_ACCOUNTS_TITLE + Niciun cont de email este configurat. + + + NO_EMAIL_ACCOUNTS_BODY + Folosește setările aplicației Mail pentru a adăuga un cont nou. + + diff --git a/extras/CepheiPrefs.framework/ru.lproj/Common.strings b/extras/CepheiPrefs.framework/ru.lproj/Common.strings new file mode 100644 index 0000000..4bcccc7 --- /dev/null +++ b/extras/CepheiPrefs.framework/ru.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + О программе + CREDITS + Титры + GENERAL + Основные + SUPPORT + поддержка + + + ENABLED + Включить + + + OFF + Выкл. + ON + Вкл. + + + VISIT_WEBSITE + Посетить сайт + + + EMAIL_SUPPORT_HEADER + Что-то не так? + + + EMAIL_SUPPORT + Свяжитесь с разработчиком + + + DONATE + Пожертвовать + + + DONATE_FOOTER + Выразите свою благодарность данному твику небольшим пожертвованием. + + + DEVELOPER + Разработчик + DEVELOPERS + Разработчики + LEAD_DEVELOPER + Главный разработчик + DESIGNER + Дизайнер + DESIGNERS + Дизайнеры + ICON + Значок + ICONS + Графика + TRANSLATORS + Переводчики + + + ENTER_VALUE + Введите значение + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/ru.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/ru.lproj/PackageCell.strings new file mode 100644 index 0000000..a06d1da --- /dev/null +++ b/extras/CepheiPrefs.framework/ru.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Открыть в… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Данный пакет будет установлен из репозитория %@. + + diff --git a/extras/CepheiPrefs.framework/ru.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/ru.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..aba9575 --- /dev/null +++ b/extras/CepheiPrefs.framework/ru.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Версия %@ + + + HEADER_AUTHOR + от %@ + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/ru.lproj/Support.strings b/extras/CepheiPrefs.framework/ru.lproj/Support.strings new file mode 100644 index 0000000..8210130 --- /dev/null +++ b/extras/CepheiPrefs.framework/ru.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Поддержка + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – поддержка + + + NO_EMAIL_ACCOUNTS_TITLE + Почтовые аккаунты не настроены. + + + NO_EMAIL_ACCOUNTS_BODY + Добавьте почтовый аккаунт в настройках. + + \ No newline at end of file diff --git a/extras/CepheiPrefs.framework/safari.png b/extras/CepheiPrefs.framework/safari.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c0d3564031c5383982f7f0159253cc505c1fa6 GIT binary patch literal 434 zcmV;j0ZsmiP) z2B^e+&kI{^1Nq-B^#d?+t^X0hSsljn`FvSX#-ZkUfvZM+g`PFqeiqqvXDcODzhIWZ zkOYqBP1P6NiD(nUFsxC>Cym~lXeWYOqpIv25eV)WV3O?n z)3s837xzvsb#tttZm{N*fVz8-eBX3%ktCO!txjUt1YDF3i4zx$S*%L*96=Uf7d1=Z z{HFzpI0#U8Ul=MP43I(EWZ$1`1_PJ4jXJEo)z#Hfd0%B^tPZe!6tfElF8?$IuHh&E z{{2H9iQVnOHU-p)Xp@bZZlR`_Z8#})DGq5nfX?Jv)9WlAD9$Nz^3d0>kU5g;o{LTK ckD87D2H>rJ^xqxHk^lez07*qoM6N<$f`_EQNB{r; literal 0 HcmV?d00001 diff --git a/extras/CepheiPrefs.framework/safari@2x.png b/extras/CepheiPrefs.framework/safari@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..682d8380fba9cd1f2efe62c768816b31f01c279d GIT binary patch literal 916 zcmV;F18e+=P)w)<`pS4%lt;;@N;4Qx2;Or9i9>WOE#dlpTJJ;sTn+t*I914TrG$$MP zU*Z1r-Me=e@GLkjEiH%77aRf$Ka;7q9r&Q@p#fg4-e<%3hG7JjU=K5lP-np2Ro8>V zaeo;E-nKzxmt!<6%POfbB7?s`W4W$}OC_TZ27_gAe>IT%rz(zj#hqAwM-hI)G}o8r zdv^gFDGNhRE4*$(iGsF1S7E0mIM1nhT!1|nknkxycT<+8E(V+`T+61VDgjx8{)1jd zJAR*}_TB{sTZ7Lw1Ztlc67lW`e2Q}gB6+qD{*Qs=A#HOaD|#^4grF@lCdgYLJWE3K zPAIU-jbJF72bT5+?GrWq3?tlJ-X(9L+}jM_hZ{;Fr`8ifKs`n(uf)*RL@6rou(WIV zu|Q~b+X>VVJQ0GwWmN@Pplky2mQZp&4gv?n!7>K{HrYWLek4;(E>=-t@P3U@WojK5 zk*rXG=x0W(TsF;6JzbB~=Whktep#gCP@%vTD)2rDY(jf$eC)1eMQX*)`CA4T1JhoC zKqrCtdyO5-fdb6syvp5bv3I5!t}YZ9opp&0b&OL$x`18Hj*!($iSi4$U(qxpmH3-y z49sL*4|fL3Op!szz0@x9VcD}}!AIuFgE+8IC~$yPaFOg*iLJMKCmB4xvzKTN76VVX zaS_v^kz}U!d^L9!H@pY^SQaIR#j7}IQbpD^inZbQqEjtbG;W(f_!Ev=jCPk@aj{gM zvSSd>lhcnx0na<-RD6@pmrYs*obt=;l8mQF3mzLqsrWH04B- qk<&LgUUTF5Iutxa-(xp%V{tl&@h7wEMX3`200008*XXw1k4GOFk zzKG0faGPeYGrh?Y$lS)4IMT591D0Tl9Vg_=>`28iJflDb@0%Ij$|FoVbk7ZoxGDd)RfH|jqu`Q$h zZ?bIUoMGv<9FDAQ$}QwJ^Xl&b1F-1pabNSke`~8Y#A%@jAOX0uJqJ?PnfFkqGFG@H zw?KTXO^!pV@9c8Q-N9!pYlFXwk|XY6D|eC~O*JjE>9ZY#zXMT$IkHy4Y-JN6*MWJ? zVkR#111|=8Q0M>4<;Ly0*<3uo71@l=Oo!T*D{oSxu`cW1*DM{_QSAk9q$M zxX`D1_H_ZzT`-Qn<1@xpw{Se?2Mz0|oB+SLRaVvQbzofIM~K>*+BuJUDC#?10M><2 z!#YHs`)raDKI^aj%5IK*sF{%q7#EU{>i|%I+i72JXe#oFM_q~He$o(E zX|6hi08O4}ScT3po}u$VR{;>w*g6HR5Qc@GYtfxsHK$dFAsc?(Kyex)z&WfNkjbC2 z(0#x%9gZ(Lrc(`@n>IRr&B9RoP@b+P z%)uuXXd|)!em6RCVTycpbnE^qDU9U=;0vyCMV~E*hF3w0abz6V)(hHd(L4kLn5Qm! z=%I&Z#Fr6_l;_(N7n90ESu=Ae@5jWJKLqA>Y!VB9);eNXcSR2P?QhohS-p%+2Bg1+7+hlrrQ`bPndwsp=&0;G-T8V5lRE#<-+rWrY};Q z1I46rQ2u2|Qa_@gMvM*<=hazUw3$5qq`8f4_hW<*UlkCuPiX$ATCFy}XNWvTPg1(( zfuYmR+LC067uryV|7guaNg_|7KGQ}pcmA&6Z+r$#f>nZ;Y21eOdH?*vU+iIy)S0NZ z{2Bv)yS7?zW*0J}+<~`7u<`sPjuZA_dO+d`^d`drmmg7fKirRU`-i=m$RazDFl8`T z573{}$gqcBZV7Ldjlo_C)F2v9<4Xuc5e)o|Dv!oM^f+gX$_zF;3k?900000 LNkvXXu0mjfp>C9G literal 0 HcmV?d00001 diff --git a/extras/CepheiPrefs.framework/sk.lproj/Common.strings b/extras/CepheiPrefs.framework/sk.lproj/Common.strings new file mode 100644 index 0000000..e34d964 --- /dev/null +++ b/extras/CepheiPrefs.framework/sk.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + O + CREDITS + Credits + GENERAL + Všeobecné + SUPPORT + Podpora + + + ENABLED + Povolené + + + OFF + Vyp. + ON + Zap. + + + VISIT_WEBSITE + Navšíviť stránku + + + EMAIL_SUPPORT_HEADER + Máte problémy? + + + EMAIL_SUPPORT + Email podpora + + + DONATE + Darovať + + + DONATE_FOOTER + Ak sa vám tento Tweak páčil, prosím darujte nám pár dolárikov. + + + DEVELOPER + Developer + DEVELOPERS + Developéri + LEAD_DEVELOPER + Hlavný Developer + DESIGNER + Dizajnér + DESIGNERS + Dizajnéri + ICON + Ikona + ICONS + Ikony + TRANSLATORS + Prekladatelia + + + ENTER_VALUE + Vložte hodnotu + + diff --git a/extras/CepheiPrefs.framework/sk.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/sk.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/sk.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/sk.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/sk.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..bca0ff0 --- /dev/null +++ b/extras/CepheiPrefs.framework/sk.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Verzia %@ + + + HEADER_AUTHOR + %@ + + diff --git a/extras/CepheiPrefs.framework/sk.lproj/Support.strings b/extras/CepheiPrefs.framework/sk.lproj/Support.strings new file mode 100644 index 0000000..8133b3d --- /dev/null +++ b/extras/CepheiPrefs.framework/sk.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Podpora + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Podpora + + diff --git a/extras/CepheiPrefs.framework/sv.lproj/Common.strings b/extras/CepheiPrefs.framework/sv.lproj/Common.strings new file mode 100644 index 0000000..0cca7d9 --- /dev/null +++ b/extras/CepheiPrefs.framework/sv.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Om + CREDITS + Medverkande + GENERAL + Allmänt + SUPPORT + Support + + + ENABLED + Aktiverad + + + OFF + Av + ON + På + + + VISIT_WEBSITE + Besök webbsidan + + + EMAIL_SUPPORT_HEADER + Om du har problem + + + EMAIL_SUPPORT + E-Posta support + + + DONATE + Donera + + + DONATE_FOOTER + Vänligen överväg att visa din uppskattning för detta program med en donation. + + + DEVELOPER + Utvecklare + DEVELOPERS + Utvecklarna + LEAD_DEVELOPER + Huvud utvecklare + DESIGNER + Designer + DESIGNERS + Designers + ICON + Ikon + ICONS + Ikoner + TRANSLATORS + Översättare + + + ENTER_VALUE + Ange Värde + + diff --git a/extras/CepheiPrefs.framework/sv.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/sv.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/sv.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/sv.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/sv.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..66413bb --- /dev/null +++ b/extras/CepheiPrefs.framework/sv.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Version %@ + + + HEADER_AUTHOR + Av %@ + + diff --git a/extras/CepheiPrefs.framework/sv.lproj/Support.strings b/extras/CepheiPrefs.framework/sv.lproj/Support.strings new file mode 100644 index 0000000..8949575 --- /dev/null +++ b/extras/CepheiPrefs.framework/sv.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Support + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Support + + diff --git a/extras/CepheiPrefs.framework/th.lproj/Common.strings b/extras/CepheiPrefs.framework/th.lproj/Common.strings new file mode 100644 index 0000000..f09ff6e --- /dev/null +++ b/extras/CepheiPrefs.framework/th.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + เกี่ยวกับ + CREDITS + เครดิต + GENERAL + ทั่วไป + SUPPORT + การช่วยเหลือ + + + ENABLED + เปิด + + + OFF + ปิดอยู่ + ON + เปิดอยู่ + + + VISIT_WEBSITE + ชมเว็บไซต์ + + + EMAIL_SUPPORT_HEADER + พบปัญหา ? + + + EMAIL_SUPPORT + ส่งอีเมลขอความช่วยเหลือ + + + DONATE + ให้ทิป + + + DONATE_FOOTER + คุณสามารถแสดงความขอบคุณได้โดยการให้ทิปเล็กๆ น้อยๆ + + + DEVELOPER + นักพัฒนา + DEVELOPERS + ทีมนักพัฒนา + LEAD_DEVELOPER + หัวหน้านักพัฒนา + DESIGNER + นักออกแบบ + DESIGNERS + ทีมนักออกแบบ + ICON + ผู้ไอคอน + ICONS + ทีมผู้สร้างไอคอน + TRANSLATORS + ทีมผู้แปล + + + ENTER_VALUE + ใส่ค่า + + diff --git a/extras/CepheiPrefs.framework/th.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/th.lproj/PackageCell.strings new file mode 100644 index 0000000..4a98d9f --- /dev/null +++ b/extras/CepheiPrefs.framework/th.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + เปิดใน… + + + OPEN_PACKAGE_IN_REPO_NOTICE + โปรแกรมนี้จะถูกติดตั้งจากซอส %@ + + diff --git a/extras/CepheiPrefs.framework/th.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/th.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..46c858d --- /dev/null +++ b/extras/CepheiPrefs.framework/th.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + เวอร์ชัน %@ + + + HEADER_AUTHOR + โดย %@ + + diff --git a/extras/CepheiPrefs.framework/th.lproj/Support.strings b/extras/CepheiPrefs.framework/th.lproj/Support.strings new file mode 100644 index 0000000..cf158fe --- /dev/null +++ b/extras/CepheiPrefs.framework/th.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + การช่วยเหลือ + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – การช่วยเหลือ + + + NO_EMAIL_ACCOUNTS_TITLE + ไม่มีบัญชีอีเมลที่ใช้ได้ + + + NO_EMAIL_ACCOUNTS_BODY + ไปตั้งค่าในแอพ Mail เพื่อเพิ่มบัญชีอีเมล + + diff --git a/extras/CepheiPrefs.framework/tr.lproj/Common.strings b/extras/CepheiPrefs.framework/tr.lproj/Common.strings new file mode 100644 index 0000000..8eee150 --- /dev/null +++ b/extras/CepheiPrefs.framework/tr.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Hakkında + CREDITS + Katkıda Bulunanlar + GENERAL + Genel + SUPPORT + Destek + + + ENABLED + Etkin + + + OFF + Kapalı + ON + Açık + + + VISIT_WEBSITE + Websiteyi ziyaret et + + + EMAIL_SUPPORT_HEADER + Sorun Var Mı? + + + EMAIL_SUPPORT + Email Destek + + + DONATE + Bağış + + + DONATE_FOOTER + Lütfen bu tweak için desteğinizi ufak bir bağış ile gösterin. + + + DEVELOPER + Geliştirici + DEVELOPERS + Geliştiriciler + LEAD_DEVELOPER + Baş Geliştirici + DESIGNER + Tasarımcı + DESIGNERS + Tasarımcılar + ICON + Simge + ICONS + Simgeler + TRANSLATORS + Çevirmenler + + + ENTER_VALUE + Bir Değer Girin + + diff --git a/extras/CepheiPrefs.framework/tr.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/tr.lproj/PackageCell.strings new file mode 100644 index 0000000..09df3ff --- /dev/null +++ b/extras/CepheiPrefs.framework/tr.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Şununla aç… + + + OPEN_PACKAGE_IN_REPO_NOTICE + Bu paket %@ reposundan indirilecektir. + + diff --git a/extras/CepheiPrefs.framework/tr.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/tr.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..4277ef8 --- /dev/null +++ b/extras/CepheiPrefs.framework/tr.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Versiyon %@ + + + HEADER_AUTHOR + %@ tarafından + + diff --git a/extras/CepheiPrefs.framework/tr.lproj/Support.strings b/extras/CepheiPrefs.framework/tr.lproj/Support.strings new file mode 100644 index 0000000..23698c0 --- /dev/null +++ b/extras/CepheiPrefs.framework/tr.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + Destek + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Destek + + + NO_EMAIL_ACCOUNTS_TITLE + Ayarlanmış mail adresi yok. + + + NO_EMAIL_ACCOUNTS_BODY + Mail ayarlarını kullanarak bir mail adresi ekleyin. + + diff --git a/extras/CepheiPrefs.framework/twitter.png b/extras/CepheiPrefs.framework/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..f708572abfe3c3a9b2f3ce47cc392e4d106da714 GIT binary patch literal 248 zcmVs--4P^<$H5kk6$BN}yw6VtK$kYi1EwbkT0000%H?^Gx*!He4*RSKJfMm_W-j+A2oyA&M?oq5J6l?qh)D>PH3L%qyQ*a1Tmqx*yib7g_8~3e^vK_{ z8t7w&B*#W}#1>P8xnD*sUYTcf5aJC>q?lre9$ry@ + + + + + ABOUT + Про нас + CREDITS + Подяка + GENERAL + Загальні + SUPPORT + Служба підтримки + + + ENABLED + Увімкнено + + + OFF + Вимк. + ON + Увімк. + + + VISIT_WEBSITE + Відвідати сайт + + + EMAIL_SUPPORT_HEADER + Потрібна допомога? + + + EMAIL_SUPPORT + Служба підтримки + + + DONATE + Підтримати проект + + + DONATE_FOOTER + Будь ласка, зробіть пожертву, якщо ви хочете подякувати нам за це розширення. + + + DEVELOPER + Розробник + DEVELOPERS + Розробники + LEAD_DEVELOPER + Провідний розробник + DESIGNER + Дизайнер + DESIGNERS + Дизайнери + ICON + Піктограма + ICONS + Піктограми + TRANSLATORS + Перекладачі + + diff --git a/extras/CepheiPrefs.framework/uk.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/uk.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/uk.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/uk.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/uk.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..c833dea --- /dev/null +++ b/extras/CepheiPrefs.framework/uk.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Версія %@ + + + HEADER_AUTHOR + %@ + + diff --git a/extras/CepheiPrefs.framework/uk.lproj/Support.strings b/extras/CepheiPrefs.framework/uk.lproj/Support.strings new file mode 100644 index 0000000..cfbbc1b --- /dev/null +++ b/extras/CepheiPrefs.framework/uk.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Служба підтримки + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Служба підтримки + + diff --git a/extras/CepheiPrefs.framework/vi.lproj/Common.strings b/extras/CepheiPrefs.framework/vi.lproj/Common.strings new file mode 100644 index 0000000..13151b2 --- /dev/null +++ b/extras/CepheiPrefs.framework/vi.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + Về cái tweak này + CREDITS + Khen Ngợi + GENERAL + Cài đặt chung + SUPPORT + Hỗ Trợ + + + ENABLED + Cho Phép + + + OFF + Tắt + ON + Bật + + + VISIT_WEBSITE + Truy Cập Trang Web + + + EMAIL_SUPPORT_HEADER + Có Vấn Đề? + + + EMAIL_SUPPORT + Hỗ Trợ Bằng Email + + + DONATE + Quyên Góp + + + DONATE_FOOTER + Nếu các bạn thích và muốn ủng hộ tweak này, các bạn có thể quyên góp ủng hộ các nhà phát triển để nhiều tweak hơn nữa trong tương lai. + + + DEVELOPER + Người Phát Triển + DEVELOPERS + Những Người Phát Triển + LEAD_DEVELOPER + Người Phát Triển Chính + DESIGNER + Người Thiết Kế + DESIGNERS + Những Người Thiết Kế + ICON + Biểu Tượng + ICONS + Những Biểu Tượng + TRANSLATORS + Người Dịch + + + ENTER_VALUE + Nhập giá trị + + diff --git a/extras/CepheiPrefs.framework/vi.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/vi.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/vi.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/vi.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/vi.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..5ac7e99 --- /dev/null +++ b/extras/CepheiPrefs.framework/vi.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + Phiên Bản %@ + + + HEADER_AUTHOR + Bởi %@ + + diff --git a/extras/CepheiPrefs.framework/vi.lproj/Support.strings b/extras/CepheiPrefs.framework/vi.lproj/Support.strings new file mode 100644 index 0000000..1451dc3 --- /dev/null +++ b/extras/CepheiPrefs.framework/vi.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + Hỗ Trợ + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – Hỗ Trợ + + diff --git a/extras/CepheiPrefs.framework/zh_CN.lproj/Common.strings b/extras/CepheiPrefs.framework/zh_CN.lproj/Common.strings new file mode 100644 index 0000000..441345e --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_CN.lproj/Common.strings @@ -0,0 +1,63 @@ + + + + + + ABOUT + 关于 + CREDITS + 参予人员 + GENERAL + 通用 + SUPPORT + 支援 + + + ENABLED + 激活 + + + OFF + 关闭 + ON + 打开 + + + VISIT_WEBSITE + 访问网站 + + + EMAIL_SUPPORT_HEADER + 遇到问题了? + + + EMAIL_SUPPORT + 电邮支援 + + + DONATE + 捐赠 + + + DONATE_FOOTER + 请考虑用捐赠来表达您对此插件的感谢。 + + + DEVELOPER + 开发者 + DEVELOPERS + 开发者 + LEAD_DEVELOPER + 主要开发者 + DESIGNER + 设计者 + DESIGNERS + 设计者 + ICON + 图标 + ICONS + 图标 + TRANSLATORS + 翻译人员 + + diff --git a/extras/CepheiPrefs.framework/zh_CN.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/zh_CN.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_CN.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/zh_CN.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/zh_CN.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..440dadb --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_CN.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + 版本 %@ + + + HEADER_AUTHOR + 由 %@ + + diff --git a/extras/CepheiPrefs.framework/zh_CN.lproj/Support.strings b/extras/CepheiPrefs.framework/zh_CN.lproj/Support.strings new file mode 100644 index 0000000..a9704a9 --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_CN.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + 支援 + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – 支援 + + diff --git a/extras/CepheiPrefs.framework/zh_HK.lproj/Common.strings b/extras/CepheiPrefs.framework/zh_HK.lproj/Common.strings new file mode 100644 index 0000000..bf01397 --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_HK.lproj/Common.strings @@ -0,0 +1,63 @@ + + + + + + ABOUT + 關於 + CREDITS + 參與人員 + GENERAL + 一般 + SUPPORT + 支援 + + + ENABLED + 啟用 + + + OFF + 關閉 + ON + 開啟 + + + VISIT_WEBSITE + 訪問網站 + + + EMAIL_SUPPORT_HEADER + 遇到問題了? + + + EMAIL_SUPPORT + 電郵支援 + + + DONATE + 捐贈 + + + DONATE_FOOTER + 請考慮用捐贈來表達您對此插件的感謝。 + + + DEVELOPER + 開發者 + DEVELOPERS + 開發者 + LEAD_DEVELOPER + 主要開發者 + DESIGNER + 設計者 + DESIGNERS + 設計者 + ICON + 圖標 + ICONS + 圖標 + TRANSLATORS + 翻譯人員 + + diff --git a/extras/CepheiPrefs.framework/zh_HK.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/zh_HK.lproj/PackageCell.strings new file mode 100644 index 0000000..c6145e5 --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_HK.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + Open in… + + + OPEN_PACKAGE_IN_REPO_NOTICE + This package will be installed from the repository %@. + + diff --git a/extras/CepheiPrefs.framework/zh_HK.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/zh_HK.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..440dadb --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_HK.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + 版本 %@ + + + HEADER_AUTHOR + 由 %@ + + diff --git a/extras/CepheiPrefs.framework/zh_HK.lproj/Support.strings b/extras/CepheiPrefs.framework/zh_HK.lproj/Support.strings new file mode 100644 index 0000000..a9704a9 --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_HK.lproj/Support.strings @@ -0,0 +1,13 @@ + + + + + + SUPPORT_TITLE + 支援 + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – 支援 + + diff --git a/extras/CepheiPrefs.framework/zh_TW.lproj/Common.strings b/extras/CepheiPrefs.framework/zh_TW.lproj/Common.strings new file mode 100644 index 0000000..37e7983 --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_TW.lproj/Common.strings @@ -0,0 +1,67 @@ + + + + + + ABOUT + 關於 + CREDITS + 參與人員 + GENERAL + 一般 + SUPPORT + 支援 + + + ENABLED + 啟用 + + + OFF + 關閉 + ON + 開啟 + + + VISIT_WEBSITE + 訪問網站 + + + EMAIL_SUPPORT_HEADER + 遇到問題了? + + + EMAIL_SUPPORT + 電郵支援 + + + DONATE + 捐款贊助 + + + DONATE_FOOTER + 請考慮捐款,以對作者表達感謝。 + + + DEVELOPER + 開發者 + DEVELOPERS + 開發者 + LEAD_DEVELOPER + 主要開發者 + DESIGNER + 設計者 + DESIGNERS + 設計者 + ICON + 圖標 + ICONS + 圖標 + TRANSLATORS + 翻譯人員 + + + ENTER_VALUE + 輸入數值 + + diff --git a/extras/CepheiPrefs.framework/zh_TW.lproj/PackageCell.strings b/extras/CepheiPrefs.framework/zh_TW.lproj/PackageCell.strings new file mode 100644 index 0000000..18a61ff --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_TW.lproj/PackageCell.strings @@ -0,0 +1,13 @@ + + + + + + OPEN_PACKAGE_IN_TITLE + 開啟… + + + OPEN_PACKAGE_IN_REPO_NOTICE + 請在「設定」中設定電子郵件帳號 %@. + + diff --git a/extras/CepheiPrefs.framework/zh_TW.lproj/PackageNameHeaderCell.strings b/extras/CepheiPrefs.framework/zh_TW.lproj/PackageNameHeaderCell.strings new file mode 100644 index 0000000..440dadb --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_TW.lproj/PackageNameHeaderCell.strings @@ -0,0 +1,13 @@ + + + + + + HEADER_VERSION + 版本 %@ + + + HEADER_AUTHOR + 由 %@ + + diff --git a/extras/CepheiPrefs.framework/zh_TW.lproj/Support.strings b/extras/CepheiPrefs.framework/zh_TW.lproj/Support.strings new file mode 100644 index 0000000..68dc957 --- /dev/null +++ b/extras/CepheiPrefs.framework/zh_TW.lproj/Support.strings @@ -0,0 +1,21 @@ + + + + + + SUPPORT_TITLE + 支援 + + + SUPPORT_EMAIL_SUBJECT + %@ %@ – 支援 + + + NO_EMAIL_ACCOUNTS_TITLE + 電子郵件帳號未設定 + + + NO_EMAIL_ACCOUNTS_BODY + 請在「設定」中設定電子郵件帳號 + + diff --git a/extras/CepheiUI.framework/CepheiUI b/extras/CepheiUI.framework/CepheiUI new file mode 100644 index 0000000000000000000000000000000000000000..c5e4eca66d01ef843dce94f2488b6c669c151c74 GIT binary patch literal 69024 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 AC;$Ke literal 0 HcmV?d00001 diff --git a/extras/CepheiUI.framework/Headers/CepheiUI.h b/extras/CepheiUI.framework/Headers/CepheiUI.h new file mode 100644 index 0000000..3a47081 --- /dev/null +++ b/extras/CepheiUI.framework/Headers/CepheiUI.h @@ -0,0 +1,2 @@ +#import "CompactConstraint/CompactConstraint.h" +#import "UIColor+HBAdditions.h" diff --git a/extras/CepheiUI.framework/Headers/CompactConstraint.h b/extras/CepheiUI.framework/Headers/CompactConstraint.h new file mode 100644 index 0000000..9d10991 --- /dev/null +++ b/extras/CepheiUI.framework/Headers/CompactConstraint.h @@ -0,0 +1,7 @@ +// +// Created by Marco Arment on 2014-04-06. +// Copyright (c) 2014 Marco Arment. See included LICENSE file. +// + +#import "NSLayoutConstraint+CompactConstraint.h" +#import "UIView+CompactConstraint.h" diff --git a/extras/CepheiUI.framework/Headers/NSLayoutConstraint+CompactConstraint.h b/extras/CepheiUI.framework/Headers/NSLayoutConstraint+CompactConstraint.h new file mode 100644 index 0000000..af9afec --- /dev/null +++ b/extras/CepheiUI.framework/Headers/NSLayoutConstraint+CompactConstraint.h @@ -0,0 +1,29 @@ +// +// Created by Marco Arment on 2014-04-06. +// Copyright (c) 2014 Marco Arment. See included LICENSE file. +// + +#import + +/// NSLayoutConstraint (CompactConstraint), a class category from Marco Arment’s +/// [CompactConstraint](https://github.com/marcoarment/CompactConstraint) library, is integrated +/// with Cephei. CompactConstraint provides an Auto Layout grammar and methods that are easier to +/// use and understand than UIKit’s built in functions for programmatically adding constraints. +/// +/// Refer to [its readme](https://github.com/marcoarment/CompactConstraint/blob/master/README.md) to +/// learn how to use it. There are two changes to note: most importantly, the methods have an `hb_` +/// prefix, and two methods that are marked as deprecated in the original project have been removed. +/// +/// CompactConstraint is licensed under the MIT License. +@interface NSLayoutConstraint (CompactConstraint) + +/// Instantiate a single constraint with the compact syntax. ++ (instancetype)hb_compactConstraint:(NSString *)relationship metrics:(NSDictionary *)metrics views:(NSDictionary *)views self:(id)selfView; + +/// Instantiate any number of constraints. Can also mix in Visual Format Language strings. ++ (NSArray *)hb_compactConstraints:(NSArray *)relationshipStrings metrics:(NSDictionary *)metrics views:(NSDictionary *)views self:(id)selfView; + +/// And a convenient shortcut for creating constraints with the visualFormat string as the identifier ++ (NSArray *)hb_identifiedConstraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views; + +@end diff --git a/extras/CepheiUI.framework/Headers/UIColor+HBAdditions.h b/extras/CepheiUI.framework/Headers/UIColor+HBAdditions.h new file mode 100644 index 0000000..6a92994 --- /dev/null +++ b/extras/CepheiUI.framework/Headers/UIColor+HBAdditions.h @@ -0,0 +1,79 @@ +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/// UIColor (HBAdditions) is a class category in Cephei that provides some convenience methods. +@interface UIColor (HBAdditions) + +/// Creates and returns a color object using data from the specified object. +/// +/// The value is expected to be one of the types specified in hb_initWithPropertyListValue:. +/// +/// @param value The object to retrieve data from. See the discussion for the supported object +/// types. +/// @return The color object. The color information represented by this object is in the device RGB +/// colorspace. +/// @see `-hb_initWithPropertyListValue:` ++ (instancetype)hb_colorWithPropertyListValue:(id)value NS_SWIFT_NAME(init(propertyListValue:)); + +/// Initializes and returns a color object using data from the specified object. +/// +/// The value is expected to be one of: +/// +/// * An array of 3 or 4 integer RGB or RGBA color components, with values between 0 and 255 (e.g. +/// `@[ 218, 192, 222 ]`) +/// * A CSS-style hex string, with an optional alpha component (e.g. `#DAC0DE` or `#DACODE55`) +/// * A short CSS-style hex string, with an optional alpha component (e.g. `#DC0` or `#DC05`) +/// +/// @param value The object to retrieve data from. See the discussion for the supported object +/// types. +/// @return An initialized color object. The color information represented by this object is in the +/// device RGB colorspace. +- (instancetype)hb_initWithPropertyListValue:(id)value NS_SWIFT_UNAVAILABLE("Use init(propertyListValue:)"); + +/// Initializes and returns a dynamic color object using the provided interface style variants. +/// +/// This color dynamically changes based on the interface style on iOS 13 and newer. If dynamic +/// colors are not supported by the operating system, the value for UIUserInterfaceStyleLight or +/// UIUserInterfaceStyleUnspecified is returned. +/// +/// Example: +/// +/// ```objc +/// UIColor *myColor = [UIColor hb_colorWithInterfaceStyleVariants:@{ +/// @(UIUserInterfaceStyleLight): [UIColor systemRedColor], +/// @(UIUserInterfaceStyleDark): [UIColor systemOrangeColor] +/// }]; +/// ``` +/// +/// @param variants A dictionary of interface style keys and UIColor values. +/// @return An initialized dynamic color object, or the receiver if dynamic colors are unsupported +/// by the current operating system. ++ (instancetype)hb_colorWithInterfaceStyleVariants:(NSDictionary *)variants; + +/// Initializes and returns a dynamic color object, with saturation decreased by 4% in the dark +/// interface style. +/// +/// @return If the color is already a dynamic color, returns the receiver. Otherwise, a new dynamic +/// color object. +/// @see `+hb_colorWithInterfaceStyleVariants:` +- (instancetype)hb_colorWithDarkInterfaceVariant NS_SWIFT_NAME(withDarkInterfaceVariant()); + +/// Initializes and returns a dynamic color object, with the specified variant color for the dark +/// interface style. +/// +/// Example: +/// +/// ```objc +/// UIColor *myColor = [[UIColor systemRedColor] hb_colorWithDarkInterfaceVariant:[UIColor systemOrangeColor]]; +/// ``` +/// +/// @param darkColor The color to use in the dark interface style. +/// @return A new dynamic color object. +/// @see `-hb_colorWithInterfaceStyleVariants:` +- (instancetype)hb_colorWithDarkInterfaceVariant:(UIColor *)darkColor NS_SWIFT_NAME(withDarkInterfaceVariant(_:)); + +@end + +NS_ASSUME_NONNULL_END diff --git a/extras/CepheiUI.framework/Headers/UIView+CompactConstraint.h b/extras/CepheiUI.framework/Headers/UIView+CompactConstraint.h new file mode 100644 index 0000000..cf12b0f --- /dev/null +++ b/extras/CepheiUI.framework/Headers/UIView+CompactConstraint.h @@ -0,0 +1,29 @@ +// +// Created by Marco Arment on 2014-04-06. +// Copyright (c) 2014 Marco Arment. See included LICENSE file. +// + +#import "NSLayoutConstraint+CompactConstraint.h" + +/// UIView (CompactConstraint), a class category from Marco Arment’s +/// [CompactConstraint](https://github.com/marcoarment/CompactConstraint) library, is integrated +/// with Cephei. CompactConstraint provides an Auto Layout grammar and methods that are easier to +/// use and understand than UIKit’s built in functions for programmatically adding constraints. +/// +/// Refer to [its readme](https://github.com/marcoarment/CompactConstraint/blob/master/README.md) to +/// learn how to use it. There are two changes to note: most importantly, the methods have an `hb_` +/// prefix, and two methods that are marked as deprecated in the original project have been removed. +/// +/// CompactConstraint is licensed under the MIT License. +@interface UIView (CompactConstraint) + +/// Add a single constraint with the compact syntax. +- (NSLayoutConstraint *)hb_addCompactConstraint:(NSString *)relationship metrics:(NSDictionary *)metrics views:(NSDictionary *)views; + +/// Add any number of constraints. Can also mix in Visual Format Language strings. +- (NSArray *)hb_addCompactConstraints:(NSArray *)relationshipStrings metrics:(NSDictionary *)metrics views:(NSDictionary *)views; + +/// And a convenient shortcut for what we always end up doing with the visualFormat call. +- (void)hb_addConstraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views; + +@end diff --git a/extras/CepheiUI.framework/Info.plist b/extras/CepheiUI.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..1ae90bae9c3b8816f2bf73ddbca422f743544852 GIT binary patch literal 391 zcmX|-OHRWu5QfL)RUV~j%LYUjEZAB>NFcGP)TT(0P^m}?T~tJF>LykbJ8~SLx8Md` zf>Uq=#6eggEE+SLU;ak^#-3@Guw2>pC#tNiZ)|Q=w|92;YWsDo)@Zf@>!^3#E%+>< zUM!@#r!r@PdrC4M1y<8E-5KSI%^8&wg9ap}fz>cak42oQLTc7F%;j_8uuy3uk;~Hk z==j5gsJW2oO7TCW|3bq;k!hkGE#nxHa6uyKFEdT+hL*0tIyA(gPc#u(s^57>BRz3+ zhHY%?KRo9+o)RA6P^78gc;t?IG>a)4xqe5NcY*CO%VNQ)$o=lXx$*SXhdz(=;$o;m q8?N9MCXm4^yumwsz!!YO4{D)fbb?M1M(5}f{;Gmj2?u4CfjYl_ + + + + CFBundleExecutable + Orion + + CFBundleIdentifier + dev.theos.orion + + CFBundleName + Orion + + CFBundleShortVersionString + 1.0.1 + + CFBundleVersion + 1 + + MinimumOSVersion + 12.2 + + UIRequiredDeviceCapabilities + + arm64 + + + diff --git a/extras/Orion.framework/Orion b/extras/Orion.framework/Orion new file mode 100755 index 0000000000000000000000000000000000000000..ad76b0992e3eb1e76b8a92c8137db2163ff2ec7c GIT binary patch literal 216448 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⁢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 iax=9B15Q-;?{B-P<(2fp{VR)OB=_b`YGU!);eP None: sys.exit("[!] please upgrade to python 3.12 or higher") elif sys.platform == "win32": sys.exit("[!] windows is not supported") + elif not ( + os.path.isdir("/opt/cyan") + or os.path.isdir("/var/jb/opt/cyan") + ): + sys.exit("[!] cyan must be installed in /opt/cyan, refer to the README") parser = argparse.ArgumentParser( description="cyan, an azule \"clone\" for modifying iOS apps" @@ -31,10 +37,6 @@ def main() -> None: help="a tweak to inject/item to be added to the bundle" ) - parser.add_argument( - "--overwrite", action="store_true", - help="skip overwrite confirmation" - ) parser.add_argument( "--ignore-encrypted", action="store_true", help="skip main binary encryption check" diff --git a/src/cyan.py b/src/cyan.py index 86481f3..3c7cb3c 100644 --- a/src/cyan.py +++ b/src/cyan.py @@ -1,5 +1,7 @@ import os import sys +import shutil +from subprocess import run from argparse import ArgumentParser from tempfile import TemporaryDirectory @@ -19,14 +21,16 @@ def main(parser: ArgumentParser) -> None: else: args.o = args.i + # this also modifies some args, like -f, + # to ensure there are no duplicates, etc arg_err = tbhutils.validate_inputs(args) if arg_err is not None: parser.error(arg_err) INPUT_IS_IPA = True if args.i.endswith(".ipa") else False - # OUTPUT_IS_IPA = True if args.o.endswith(".ipa") else False + OUTPUT_IS_IPA = True if args.o.endswith(".ipa") else False - with TemporaryDirectory() as tmpdir: + with TemporaryDirectory() as tmpdir, tbhtypes.LeavingCM(): app_path, plist_path = tbhutils.get_app(args.i, tmpdir, INPUT_IS_IPA) app = tbhtypes.AppBundle(app_path, plist_path) @@ -36,3 +40,25 @@ def main(parser: ArgumentParser) -> None: else: sys.exit("[!] main binary is encrypted; exiting") + if args.f is not None: + app.executable.inject(args.f, tmpdir) + + # done! + if OUTPUT_IS_IPA: + print("[*] generating ipa..") + run(["bash", f"{tbhtypes.Executable.isd}/tools/compressIPA.sh"], env={ + "TMPDIR": tmpdir, + "OUTPUT": args.o + }) + print(f"[*] generated ipa at {args.o}") + else: + # create subdirectories if necessary + if "/" in args.o: + os.makedirs(os.path.dirname(args.o), exist_ok=True) + + if os.path.isdir(args.o): + shutil.rmtree(args.o) + + shutil.move(app_path, args.o) + print(f"[*] generated app at {args.o}") + diff --git a/src/tbhtypes.py b/src/tbhtypes.py index e2ac6ad..1654ef2 100644 --- a/src/tbhtypes.py +++ b/src/tbhtypes.py @@ -1,6 +1,10 @@ import os import sys -from subprocess import run +import shutil +import subprocess +from typing import Optional + +import lief import tbhutils @@ -10,22 +14,229 @@ class AppBundle: self.path = path self.plist = tbhutils.get_plist(plist_path) self.executable = Executable( - f"{path}/{self.plist["CFBundleExecutable"]}" + f"{path}/{self.plist["CFBundleExecutable"]}", + self ) class Executable: - td = tbhutils.get_tools_dir() + isd, td = tbhutils.get_tools_dir() + nt = f"{td}/install_name_tool" + ldid = f"{td}/ldid" otool = f"{td}/otool" - def __init__(self, path: str): + def __init__(self, path: str, bundle: Optional[AppBundle] = None): if not os.path.isfile(path): sys.exit(f"[!] {path} does not exist (executable)") self.path = path + self.bundle = bundle + + self.bn = os.path.basename(path) + self.inj: Optional[lief.MachO.Binary] = None def is_encrypted(self) -> bool: - proc = run([self.otool, "-l", self.path]) + proc = subprocess.run( + [self.otool, "-l", self.path], + capture_output=True + ) + + # print(proc.stdout) return b"cryptid 1" in proc.stdout + def inject(self, tweaks: dict[str, str], tmpdir: str) -> None: + # we only inject into the main executable + assert self.bundle is not None + + has_entitlements = False + ENT_PATH = f"{self.bundle.path}/cyan.entitlements" + PLUGINS_DIR = f"{self.bundle.path}/PlugIns" + FRAMEWORKS_DIR = f"{self.bundle.path}/Frameworks" + + with open(ENT_PATH, "wb") as entf: + proc = subprocess.run( + [self.ldid, "-e", self.path], + capture_output=True + ) + + entf.write(proc.stdout) + + if os.path.getsize(ENT_PATH) > 0: + has_entitlements = True + + # iirc, injecting doesnt work (sometimes) if the file isn't signed + self.fakesign(False) + + if any(t.endswith(".appex") for t in tweaks): + os.makedirs(PLUGINS_DIR, exist_ok=True) + + if any( + t.endswith(k) + for t in tweaks + for k in (".deb", ".dylib", ".framework") + ): + os.makedirs(FRAMEWORKS_DIR, exist_ok=True) + + # some apps really dont have this lol + subprocess.run( + [self.nt, "-add_rpath", "@executable_path/Frameworks", self.path], + stderr=subprocess.DEVNULL + ) + + # need ~~two~~ THREE loops, one for copying all files to tmpdir + print("[*] preparing; this may take a while, sorry") + for bn, path in dict(tweaks).items(): + if bn.endswith(".deb"): + tbhutils.extract_deb(path, tweaks, tmpdir) + continue + + try: + tweaks[bn] = shutil.copytree(path, tmpdir) + except NotADirectoryError: + tweaks[bn] = shutil.copy2(path, tmpdir) + + # print(f"[*] prepared {bn}") + + needed: set[str] = set() + common = { + # substrate could show up as + # CydiaSubstrate.framework, libsubstrate.dylib, CydiaSubstrate.dylib + # and probably even more. it's crazy. + + "ubstrate.": "CydiaSubstrate", + "Orion.framework": "Orion", + "Cephei.framework": "Cephei", + "CepheiUI.framework": "CepheiUI", + "CepheiPrefs.framework": "CepheiPrefs" + } + + # another loop for fixing dylib dependencies + for dbn, path in tweaks.items(): + if not dbn.endswith(".dylib"): + continue + + dylib = Dylib(path) + dylib.fakesign() + + # fix dependencies + for dep in dylib.dependencies: + for cname in (common | tweaks): + if cname in dep: + if cname.endswith(".framework"): + npath = f"@rpath/{cname}/{cname[:-10]}" + else: + npath = f"@rpath/{cname}" + + self.change_dependency(dep, npath) + if cname in common: + needed.add(cname) + + # avoid printing that we "fixed" something to itself lol + if dep != npath: + print(f"[*] fixed dependency in {dbn}: {dep} -> {npath}") + + ## "sub"-loop, just adding the needed common deps + if "ubstrate." in needed: + del common["ubstrate."] # lol rip + common["CydiaSubstrate.framework"] = "CydiaSubstrate" + + needed.remove("ubstrate.") + needed.add("CydiaSubstrate.framework") + + if "Orion.framework" in needed: + needed.add("CydiaSubstrate.framework") + + for missing in needed: + ip = f"{FRAMEWORKS_DIR}/{missing}" + existed = tbhutils.delete_if_exists(ip, missing) + shutil.copytree(f"{self.isd}/extras/{missing}", ip) + + if not existed: + print(f"[*] auto-injected {missing}") + + # and FINALLY, one for actually injecting + for bn, path in tweaks.items(): + if bn.endswith(".appex"): + fpath = f"{PLUGINS_DIR}/{bn}" + existed = tbhutils.delete_if_exists(fpath, bn) + shutil.copytree(path, fpath) + elif bn.endswith(".dylib"): + fpath = f"{FRAMEWORKS_DIR}/{bn}" + existed = tbhutils.delete_if_exists(fpath, bn) + self.insert_cmd(f"@rpath/{bn}") + shutil.copy2(path, FRAMEWORKS_DIR) + elif bn.endswith(".framework"): + fpath = f"{FRAMEWORKS_DIR}/{bn}" + existed = tbhutils.delete_if_exists(fpath, bn) + self.insert_cmd(f"@rpath/{bn}/{bn[:-10]}") + shutil.copytree(path, fpath) + else: + fpath = f"{self.bundle.path}/{bn}" + existed = tbhutils.delete_if_exists(fpath, bn) + try: + shutil.copytree(path, fpath) + except NotADirectoryError: + shutil.copy2(path, self.bundle.path) + + if not existed: + print(f"[*] injected {bn}") + + # FINALLY !! + if self.inj is not None: + self.inj.write(self.path) + + if has_entitlements: + subprocess.run(["ldid", f"-S{ENT_PATH}", self.path]) + print("[*] restored entitlements") + + def fakesign(self, keep_entitlements: bool = True) -> None: + cmd = [self.ldid, "-S"] + if keep_entitlements: + cmd.append("-M") + + subprocess.run(cmd + [self.path]) + + def change_dependency(self, old: str, new: str) -> None: + subprocess.run([self.nt, "-change", old, new, self.path]) + + def insert_cmd(self, cmd: str) -> None: + if self.inj is None: + self.inj = lief.parse(self.path) # type: ignore + + self.inj.add(lief.MachO.DylibCommand.weak_lib(cmd)) # type: ignore + + +class Dylib(Executable): + starters = ("\t/Library/", "\t@rpath", "\t@executable_path") + + def __init__(self, path: str): + super().__init__(path) + self.dependencies = self.get_dependencies() + + def get_dependencies(self) -> list[str]: + proc = subprocess.run( + [self.otool, "-L", self.path], + capture_output=True, text=True + ) + + # split at [2:] to avoid otool's line and dylib's id + tmp = proc.stdout.strip().split("\n")[2:] + for ind, dep in enumerate(tmp): + if "(architecture " in dep: # avoid checking duplicate deps + tmp = tmp[:ind] + + deps: list[str] = [] + for dep in tmp: + if any(dep.startswith(s) for s in self.starters): + deps.append(dep.split()[0]) # split() removes whitespace + + return deps + + +class LeavingCM: + def __enter__(self): + pass + + def __exit__(self, i, d, c): # type: ignore + print("[*] deleting temporary directory..") diff --git a/src/tbhutils.py b/src/tbhutils.py index e33b0d3..b3c3ad6 100644 --- a/src/tbhutils.py +++ b/src/tbhutils.py @@ -4,9 +4,11 @@ import shutil import zipfile import platform import plistlib +import subprocess from glob import glob from argparse import Namespace from typing import Optional, Any +from tempfile import TemporaryDirectory def validate_inputs(args: Namespace) -> Optional[str]: @@ -20,9 +22,6 @@ def validate_inputs(args: Namespace) -> Optional[str]: return f"{args.i} does not exist" if os.path.exists(args.o): - if args.overwrite: - return print("[*] output already exists; will overwrite !") - try: overwrite = input( f"[<] {args.o} already exists, overwrite it? [Y/n] " @@ -37,8 +36,9 @@ def validate_inputs(args: Namespace) -> Optional[str]: sys.exit(0) if args.f is not None: - args.f = {os.path.normpath(f) for f in args.f} - nonexistent = [f for f in args.f if not os.path.exists(f)] + # dictionary ensures unique names + args.f = {os.path.basename(f): os.path.normpath(f) for f in args.f} + nonexistent = [f for f in args.f.values() if not os.path.exists(f)] if len(nonexistent) != 0: print("[!] please ensure the following file(s) exist:") @@ -82,7 +82,7 @@ def get_app(path: str, tmpdir: str, is_ipa: bool) -> tuple[str, str]: return app, plist -def get_tools_dir() -> str: +def get_tools_dir() -> tuple[str, str]: mach = platform.machine() system = platform.system() prefix = "" @@ -91,7 +91,7 @@ def get_tools_dir() -> str: mach = "arm64" prefix = "/var/jb" # sorry, rootless only !! - return f"{prefix}/opt/cyan/tools/{system}/{mach}" + return (f"{prefix}/opt/cyan", f"{prefix}/opt/cyan/tools/{system}/{mach}") def get_plist(path: str) -> dict[str, Any]: @@ -101,3 +101,49 @@ def get_plist(path: str) -> dict[str, Any]: except Exception: sys.exit(f"[!] couldn't read {path}") + +def delete_if_exists(path: str, bn: str) -> bool: + is_file = os.path.isfile(path) + + try: + if is_file: + os.remove(path) + else: + shutil.rmtree(path) + + print(f"[?] {bn} already existed, replacing") + return True + except FileNotFoundError: + return False + + +def extract_deb(deb: str, tweaks: dict[str, str], tmpdir: str) -> None: + with TemporaryDirectory(prefix=tmpdir + "/", delete=False) as t2: + if platform.system() == "Linux": + tool = ["ar", "-x", deb, f"--output={t2}"] + else: + tool = ["tar", "-xf", deb, f"--directory={t2}"] + + try: + subprocess.run(tool, check=True) + except Exception: + sys.exit(f"[!] couldn't extract {os.path.basename(deb)}") + + # it's not always "data.tar.gz" + data_tar = glob(f"{t2}/data.*")[0] + subprocess.run(["tar", "-xf", data_tar, f"--directory={t2}"]) + + for hi in sum(( + glob(f"{t2}/**/*.dylib", recursive=True), + glob(f"{t2}/**/*.bundle", recursive=True), + glob(f"{t2}/**/*.appex", recursive=True), + glob(f"{t2}/**/*.framework", recursive=True) + ), []): # type: ignore + if os.path.islink(hi): + continue # symlinks are broken iirc + + tweaks[os.path.basename(hi)] = hi + + print(f"[*] extracted {os.path.basename(deb)}") + del tweaks[deb] + diff --git a/tools/compressIPA.sh b/tools/compressIPA.sh new file mode 100644 index 0000000..1738878 --- /dev/null +++ b/tools/compressIPA.sh @@ -0,0 +1,5 @@ +cd $TMPDIR +mkdir -p `dirname $OUTPUT` +rm $OUTPUT &> /dev/null +zip -r $OUTPUT Payload > /dev/null +