├── .autocorrectrc
├── .clang-format
├── .github
├── ISSUE_TEMPLATE
│ ├── cn_bug_report_zh.yml
│ ├── cn_feature_request.yml
│ ├── config.yml
│ ├── dev.md
│ ├── en_bug_report.yml
│ └── en_feature_request.yml
└── workflows
│ ├── codeql.yml
│ ├── greetings.yml
│ └── star_fork_notification.yml
├── .gitignore
├── .swift-version
├── .swiftformat
├── .swiftlint.yml
├── Easydict-debug.xcconfig
├── Easydict.xcconfig
├── Easydict.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcshareddata
│ └── xcschemes
│ └── Easydict.xcscheme
├── Easydict.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ ├── IDEWorkspaceChecks.plist
│ └── swiftpm
│ └── Package.resolved
├── Easydict
├── App
│ ├── AppDelegate+EZURLScheme.h
│ ├── AppDelegate+EZURLScheme.m
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── Colors
│ │ │ ├── Contents.json
│ │ │ ├── add_minus_bg_color.colorset
│ │ │ │ └── Contents.json
│ │ │ └── list_border_color.colorset
│ │ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── arrow-down.imageset
│ │ │ ├── Contents.json
│ │ │ └── arrow-down-slme@2x.png
│ │ ├── arrow-left.imageset
│ │ │ ├── Contents.json
│ │ │ └── arrow-left.png
│ │ ├── arrow_down_filling.imageset
│ │ │ ├── Contents.json
│ │ │ ├── arrow_down@2x.png
│ │ │ ├── arrow_down@3x.png
│ │ │ ├── 展开列表_暗黑@2x.png
│ │ │ └── 展开列表_暗黑@3x.png
│ │ ├── audio.imageset
│ │ │ ├── Contents.json
│ │ │ ├── audio@2x.png
│ │ │ ├── audio@3x.png
│ │ │ ├── 喇叭_暗黑@2x.png
│ │ │ └── 喇叭_暗黑@3x.png
│ │ ├── blue-white-icon.imageset
│ │ │ ├── Contents.json
│ │ │ ├── blue-white-plain@1x.png
│ │ │ └── blue-white-plain@2x.png
│ │ ├── blue-white-icon_old.imageset
│ │ │ ├── Contents.json
│ │ │ └── blue-white.png
│ │ ├── clear_circle.imageset
│ │ │ ├── AppIcon-40.0x40.0@2x.png
│ │ │ ├── AppIcon-40.0x40.0@3x.png
│ │ │ └── Contents.json
│ │ ├── copy.imageset
│ │ │ ├── Contents.json
│ │ │ ├── copy_Normal.png
│ │ │ ├── copy_Normal@2x.png
│ │ │ ├── copy_dark.png
│ │ │ └── copy_dark@2x.png
│ │ ├── copy_0.imageset
│ │ │ ├── Contents.json
│ │ │ ├── copy@2x.png
│ │ │ ├── copy@3x.png
│ │ │ ├── 复制_暗黑@2x.png
│ │ │ └── 复制_暗黑@3x.png
│ │ ├── copy_1.imageset
│ │ │ ├── Contents.json
│ │ │ ├── noun-copy-5118522.png
│ │ │ └── noun-duplicate-5406073.png
│ │ ├── disabled.imageset
│ │ │ ├── Contents.json
│ │ │ └── disabled@2x.png
│ │ ├── error.imageset
│ │ │ ├── Contents.json
│ │ │ └── error_outline (2).png
│ │ ├── fold_down.imageset
│ │ │ ├── Contents.json
│ │ │ ├── fold_down@2x.png
│ │ │ └── fold_down@3x.png
│ │ ├── fold_up.imageset
│ │ │ ├── Contents.json
│ │ │ ├── fold_up@2x.png
│ │ │ └── fold_up@3x.png
│ │ ├── logo.imageset
│ │ │ ├── Contents.json
│ │ │ ├── icon_ns_512x512@2x.png
│ │ │ └── icon_ns_512x512@3x.png
│ │ ├── logo_old.imageset
│ │ │ ├── Contents.json
│ │ │ ├── Icon_512x512@2x.png
│ │ │ └── Icon_512x512@3x.png
│ │ ├── magnifier.imageset
│ │ │ ├── Contents.json
│ │ │ └── magnifier.png
│ │ ├── magnifier3.imageset
│ │ │ ├── Contents.json
│ │ │ └── magnifier3.png
│ │ ├── menu-icon
│ │ │ ├── Contents.json
│ │ │ ├── rounded_menu_bar_icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── rounded.png
│ │ │ └── square_menu_bar_icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── square.png
│ │ ├── result_view
│ │ │ ├── Contents.json
│ │ │ └── link.imageset
│ │ │ │ ├── AppIcon-40.0x40.0@2x.png
│ │ │ │ ├── AppIcon-40.0x40.0@3x.png
│ │ │ │ └── Contents.json
│ │ ├── service-icon
│ │ │ ├── Alibaba.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── ali translate.png
│ │ │ ├── Apple.imageset
│ │ │ │ ├── Apple Translate.png
│ │ │ │ └── Contents.json
│ │ │ ├── AppleDictionary.imageset
│ │ │ │ ├── 510a9fda2f51de7416af54a20772b6cd_MzvUX28YSg.png
│ │ │ │ └── Contents.json
│ │ │ ├── Baidu.imageset
│ │ │ │ ├── Baidu_Translate.png
│ │ │ │ └── Contents.json
│ │ │ ├── Bing.imageset
│ │ │ │ ├── Bing Translate.png
│ │ │ │ └── Contents.json
│ │ │ ├── BuiltInAI.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── OpenAI Translator.png
│ │ │ ├── Caiyun.imageset
│ │ │ │ ├── Caiyun Translate.png
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── CustomOpenAI.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── customOpenAI.png
│ │ │ │ └── customOpenAI@2x.png
│ │ │ ├── DeepL.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── DeepL Translate.png
│ │ │ ├── DeepSeek.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── deepseek-logo-icon.png
│ │ │ ├── Gemini.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Gemini.png
│ │ │ ├── GitHub.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── github-mark-white.png
│ │ │ │ └── github-mark.png
│ │ │ ├── Google.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── service_google_translate_Normal@2x.png
│ │ │ ├── Groq.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Groq.png
│ │ │ │ └── Groq@2x.png
│ │ │ ├── Iciba.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Iciba Dictionary.png
│ │ │ ├── Linguee.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Linguee Dictionary.png
│ │ │ ├── Microsoft.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Microsoft Translate.png
│ │ │ ├── NiuTrans.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── 小牛翻译.png
│ │ │ ├── Ollama.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Ollama.png
│ │ │ │ └── Ollama@x2.png
│ │ │ ├── OpenAI.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── OpenAI.png
│ │ │ ├── Polishing.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Polishing.png
│ │ │ │ └── Polishing@2x.png
│ │ │ ├── Summary.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Summary.png
│ │ │ │ └── Summary@2x.png
│ │ │ ├── Tencent.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Tencent Translate.png
│ │ │ ├── Volcano.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Volcano Translate.png
│ │ │ ├── Youdao.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Youdao Translate.png
│ │ │ └── play.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── play.png
│ │ ├── setting
│ │ │ ├── Contents.json
│ │ │ ├── Toggle_Off.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Toggle_Off.png
│ │ │ ├── Toggle_On.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Toggle_On.png
│ │ │ ├── add.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── add.png
│ │ │ ├── disable_blue.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── disable_blue.png
│ │ │ ├── minus.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── minus.png
│ │ │ ├── switch_off.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── switch_off.png
│ │ │ ├── switch_on.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── switch_on.png
│ │ │ ├── toggle_off_blue.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Toggle_Off (1).png
│ │ │ │ └── toggle_off_blue.png
│ │ │ ├── toggle_off_blue_dark.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── toggle_off_blue.png
│ │ │ ├── toggle_off_blue_light.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Toggle_Off (1).png
│ │ │ ├── toggle_on_blue.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── toggle_on_blue.png
│ │ │ ├── toolbar_about.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── about.png
│ │ │ ├── toolbar_general.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── toolbar_general.png
│ │ │ │ ├── toolbar_general@2x.png
│ │ │ │ └── toolbar_general@3x.png
│ │ │ ├── toolbar_privacy.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Privacy 1.png
│ │ │ ├── toolbar_service.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── toolbar_service.png
│ │ │ ├── toolbar_setting_general.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── toolbar_setting.png
│ │ │ └── toolbar_shortcut.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shortcut.png
│ │ ├── tip_Normal.imageset
│ │ │ ├── Contents.json
│ │ │ ├── tip_Normal.png
│ │ │ └── tip_Normal@2x.png
│ │ ├── titlebar
│ │ │ ├── Browser.imageset
│ │ │ │ ├── Browser@2x.png
│ │ │ │ ├── Browser@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Chrome.imageset
│ │ │ │ ├── Chrome_64@2x.png
│ │ │ │ ├── Chrome_64@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── Eudic.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Eudic_64@2x.png
│ │ │ │ └── Eudic_64@3x.png
│ │ │ ├── Safari.imageset
│ │ │ │ ├── AppIcon-40.0x40.0@2x.png
│ │ │ │ ├── AppIcon-40.0x40.0@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── google_icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── google_icon.png
│ │ │ ├── new_pin_normal.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── tw_navigation_pin_normal_Normal.png
│ │ │ │ └── tw_navigation_pin_normal_Normal@2x.png
│ │ │ └── new_pin_selected.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── tw_navigation_pin_selected_Normal.png
│ │ │ │ └── tw_navigation_pin_selected_Normal@2x.png
│ │ ├── transform.imageset
│ │ │ ├── Contents.json
│ │ │ ├── transform@2x.png
│ │ │ ├── transform@3x.png
│ │ │ ├── 交换_暗黑@2x.png
│ │ │ └── 交换_暗黑@3x.png
│ │ ├── white-black-icon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── icon_128x128.png
│ │ │ ├── icon_128x128@2x.png
│ │ │ ├── icon_16x16.png
│ │ │ ├── icon_16x16@2x.png
│ │ │ ├── icon_256x256.png
│ │ │ ├── icon_256x256@2x.png
│ │ │ ├── icon_32x32.png
│ │ │ ├── icon_32x32@2x.png
│ │ │ ├── icon_512x512.png
│ │ │ └── icon_512x512@2x.png
│ │ └── white-black-icon_old.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── icon_128x128.png
│ │ │ ├── icon_128x128@2x.png
│ │ │ ├── icon_16x16.png
│ │ │ ├── icon_16x16@2x.png
│ │ │ ├── icon_256x256.png
│ │ │ ├── icon_256x256@2x.png
│ │ │ ├── icon_32x32.png
│ │ │ ├── icon_32x32@2x.png
│ │ │ ├── icon_512x512.png
│ │ │ └── icon_512x512@2x.png
│ ├── EZConst.h
│ ├── Easydict-Bridging-Header.h
│ ├── Easydict-debug.entitlements
│ ├── Easydict.entitlements
│ ├── EasydictApp.swift
│ ├── GoogleService-Info.plist
│ ├── Icons
│ │ ├── black-white-icon
│ │ │ ├── black-white-icon@2x.png
│ │ │ └── black-white-icon@3x.png
│ │ ├── blue-white-icon
│ │ │ ├── blue-white-icon@2x.png
│ │ │ └── blue-white-icon@3x.png
│ │ ├── cyan-white-icon
│ │ │ ├── cyan-white-icon@2x.png
│ │ │ └── cyan-white-icon@3x.png
│ │ ├── white-black-icon
│ │ │ ├── white-black-icon@2x.png
│ │ │ └── white-black-icon@3x.png
│ │ └── white-blue-icon
│ │ │ ├── white-blue-icon@2x.png
│ │ │ └── white-blue-icon@3x.png
│ ├── Info-debug.plist
│ ├── Info.plist
│ ├── InfoPlist.xcstrings
│ ├── Localizable.xcstrings
│ ├── PrefixHeader.pch
│ ├── easydict
│ ├── entry.h
│ └── entry.m
├── Swift
│ ├── Feature
│ │ ├── Appearance
│ │ │ └── Appearance.swift
│ │ ├── Configuration
│ │ │ ├── Configuration+Extension.swift
│ │ │ ├── Configuration+UserData.swift
│ │ │ ├── Configuration.swift
│ │ │ ├── Defaults.Keys+Extension.swift
│ │ │ ├── ServiceConfigurationKey.swift
│ │ │ └── WindowConfigurationKey.swift
│ │ ├── DefaultAPIKeys
│ │ │ ├── APIKey.swift
│ │ │ └── EncryptedSecretKeys.plist
│ │ ├── HTTPServer
│ │ │ ├── QueryService+Extension
│ │ │ │ ├── AppleDictionary+Translate.swift
│ │ │ │ ├── QueryService+Request.swift
│ │ │ │ └── StreamService+Request.swift
│ │ │ └── Vapor
│ │ │ │ ├── DictionaryEntry.swift
│ │ │ │ ├── TranslationRequest.swift
│ │ │ │ ├── VaporServer.swift
│ │ │ │ ├── configure.swift
│ │ │ │ └── routes.swift
│ │ ├── Localization
│ │ │ ├── I18nHelper.swift
│ │ │ ├── LanguageState.swift
│ │ │ ├── LocalizedBundle.swift
│ │ │ └── NSBundle+Localization.m
│ │ └── Shortcut
│ │ │ ├── Shortcut+Bind.swift
│ │ │ ├── Shortcut+Default.swift
│ │ │ ├── Shortcut+Menu.swift
│ │ │ ├── Shortcut+Validator.swift
│ │ │ └── Shortcut.swift
│ ├── Model
│ │ ├── Error
│ │ │ └── QueryError.swift
│ │ ├── ForceGetSelectedTextType.swift
│ │ ├── ServiceUsageStatus.swift
│ │ ├── TTSServiceType.swift
│ │ └── UpdateNotificationInfo.swift
│ ├── Service
│ │ ├── AITool
│ │ │ ├── AIToolService.swift
│ │ │ ├── PolishingService.swift
│ │ │ └── SummaryService.swift
│ │ ├── Ali
│ │ │ ├── AliResponse.swift
│ │ │ ├── AliService.swift
│ │ │ └── AliTranslateType.swift
│ │ ├── Apple
│ │ │ ├── AppleService.swift
│ │ │ └── TranslationService
│ │ │ │ ├── TranslationManager.swift
│ │ │ │ ├── TranslationService.swift
│ │ │ │ └── TranslationView.swift
│ │ ├── BuiltInAI
│ │ │ └── BuiltInAIService.swift
│ │ ├── Caiyun
│ │ │ ├── CaiyunResponse.swift
│ │ │ ├── CaiyunService.swift
│ │ │ └── CaiyunTranslateType.swift
│ │ ├── CustomOpenAI
│ │ │ └── CustomOpenAIService.swift
│ │ ├── DeepSeek
│ │ │ └── DeepSeekService.swift
│ │ ├── Gemini
│ │ │ └── GeminiService.swift
│ │ ├── GitHub Models
│ │ │ └── GitHubService.swift
│ │ ├── Groq
│ │ │ └── GroqService.swift
│ │ ├── Ollama
│ │ │ ├── OllamaModel.swift
│ │ │ └── OllamaService.swift
│ │ ├── OpenAI
│ │ │ ├── BaseOpenAIService.swift
│ │ │ ├── ChatMessage.swift
│ │ │ ├── OpenAIService.swift
│ │ │ ├── StreamService+AsyncStream.swift
│ │ │ ├── StreamService+Configuration.swift
│ │ │ ├── StreamService+Prompt.swift
│ │ │ ├── StreamService+UpdateResult.swift
│ │ │ └── StreamService.swift
│ │ ├── Tencent
│ │ │ ├── TencentResponse.swift
│ │ │ ├── TencentService.swift
│ │ │ ├── TencentSigning.swift
│ │ │ └── TencentTranslateType.swift
│ │ ├── Volcano
│ │ │ ├── VolcanoResponse.swift
│ │ │ ├── VolcanoService.swift
│ │ │ ├── VolcanoSigning.swift
│ │ │ └── VolcanoTranslateType.swift
│ │ └── Youdao
│ │ │ ├── EZQueryResult+Dict.swift
│ │ │ ├── EZQueryResult+DictV4.swift
│ │ │ ├── Model
│ │ │ ├── DictJSONExample
│ │ │ │ ├── v2
│ │ │ │ │ ├── good.json
│ │ │ │ │ ├── look up.json
│ │ │ │ │ ├── 人的一生.json
│ │ │ │ │ └── 美.json
│ │ │ │ └── v4
│ │ │ │ │ ├── good_v4.json
│ │ │ │ │ ├── look up_v4.json
│ │ │ │ │ ├── 人的一生_v4.json
│ │ │ │ │ └── 美_v4.json
│ │ │ ├── YoudaoDictResponse.swift
│ │ │ ├── YoudaoDictResponseV4.swift
│ │ │ ├── YoudaoKey.swift
│ │ │ ├── YoudaoOCRResponse.swift
│ │ │ └── YoudaoTranslateResponese.swift
│ │ │ ├── YoudaoService+Dict.swift
│ │ │ ├── YoudaoService+OCR.swift
│ │ │ ├── YoudaoService+Translate.swift
│ │ │ └── YoudaoService.swift
│ ├── Utility
│ │ ├── AppleScript
│ │ │ ├── AppleScriptTask+Browser.swift
│ │ │ ├── AppleScriptTask+System.swift
│ │ │ └── AppleScriptTask.swift
│ │ ├── Constants
│ │ │ └── Constants.swift
│ │ ├── CookieManager.swift
│ │ ├── Detection
│ │ │ └── ChineseDetection
│ │ │ │ ├── ChineseDetection+Lyrics.swift
│ │ │ │ ├── ChineseDetection+Poetry.swift
│ │ │ │ ├── ChineseDetection+Prose.swift
│ │ │ │ ├── ChineseDetection.swift
│ │ │ │ ├── MetadataExtractor.swift
│ │ │ │ ├── Models
│ │ │ │ ├── ChineseAnalysis.swift
│ │ │ │ └── ChinseseMarker.swift
│ │ │ │ ├── String+ClassicalChinese.swift
│ │ │ │ └── String+Utils.swift
│ │ ├── Extensions
│ │ │ ├── AppKit
│ │ │ │ └── NSMenu+PopUpBelowView.swift
│ │ │ ├── Array
│ │ │ │ └── Array+Convenience.swift
│ │ │ ├── Binding
│ │ │ │ └── Binding+DidSet.swift
│ │ │ ├── Bundle
│ │ │ │ └── Bundle+AppInfo.swift
│ │ │ ├── Data
│ │ │ │ └── Data+Extension.swift
│ │ │ ├── Defaults
│ │ │ │ └── KeyCombo+Defaults.Serializable.swift
│ │ │ ├── Dictionary
│ │ │ │ └── Dictionary+Extension.swift
│ │ │ ├── Double
│ │ │ │ └── Double+String.swift
│ │ │ ├── Encodable
│ │ │ │ └── Encodable+JSON.swift
│ │ │ ├── Notification
│ │ │ │ └── Notification+Name.swift
│ │ │ ├── Others
│ │ │ │ ├── Language+Extension.swift
│ │ │ │ ├── LanguageDetectOptimizeExtensions.swift
│ │ │ │ ├── PronunciationExtensions.swift
│ │ │ │ ├── ShowWindowPositionExtensions.swift
│ │ │ │ └── WindowTypeExtensions.swift
│ │ │ ├── String
│ │ │ │ ├── String+EncryptAES.swift
│ │ │ │ ├── String+Extension.swift
│ │ │ │ └── String+Regex.swift
│ │ │ ├── URL
│ │ │ │ └── URL+Extension.swift
│ │ │ └── View
│ │ │ │ └── View+Builder.swift
│ │ ├── GetSelectedText
│ │ │ └── SharedUtilities.swift
│ │ ├── GlobalContext.swift
│ │ ├── RepoInfoHelper.swift
│ │ ├── Screenshot
│ │ │ ├── Screencapture
│ │ │ │ └── Screencapture.swift
│ │ │ └── Screenshot
│ │ │ │ ├── NSScreen+Extention.swift
│ │ │ │ ├── Screenshot+EventMonitor.swift
│ │ │ │ ├── Screenshot+UserDefaults.swift
│ │ │ │ ├── Screenshot.swift
│ │ │ │ ├── ScreenshotOverlayView.swift
│ │ │ │ └── ScreenshotState.swift
│ │ └── Throttler.swift
│ └── View
│ │ ├── AcknowListView
│ │ └── AcknowListView.swift
│ │ ├── AdvancedTabItemView.swift
│ │ ├── MenuItemView.swift
│ │ ├── MenuView
│ │ ├── MainMenuCommand.swift
│ │ ├── MainMenuShortcutCommand.swift
│ │ └── MainMenuShortcutCommandItem.swift
│ │ ├── SettingView
│ │ ├── SettingView.swift
│ │ └── Tabs
│ │ │ ├── ServiceConfigurationView
│ │ │ ├── ConfigurationView
│ │ │ │ ├── AliService+ConfigurableService.swift
│ │ │ │ ├── BaiduTranslate+ConfigurableService.swift
│ │ │ │ ├── BingService+ConfigurableService.swift
│ │ │ │ ├── CaiyunService+ConfigurableService.swift
│ │ │ │ ├── DeepLTranslate+ConfigurableService.swift
│ │ │ │ ├── NiuTransTranslate+ConfigurableService.swift
│ │ │ │ ├── StreamConfigurationView.swift
│ │ │ │ ├── TencentService+ConfigurableService.swift
│ │ │ │ └── VolcanoService+ConfigurableService.swift
│ │ │ ├── SecureTextField.swift
│ │ │ ├── ServiceAPIType.swift
│ │ │ ├── ServiceCells.swift
│ │ │ ├── ServiceConfigurationSecretSectionView.swift
│ │ │ ├── ServiceSecretConfigreValidatable.swift
│ │ │ ├── SliderCell.swift
│ │ │ └── TextEditorCell.swift
│ │ │ ├── TabView
│ │ │ ├── AboutTab.swift
│ │ │ ├── AdvancedTab.swift
│ │ │ ├── DisabledAppTab.swift
│ │ │ ├── GeneralTab.swift
│ │ │ ├── PrivacyTab.swift
│ │ │ ├── ServiceTab.swift
│ │ │ └── ShortcutTab.swift
│ │ │ └── View
│ │ │ ├── Shortcut
│ │ │ ├── AppShortcutSetting.swift
│ │ │ ├── GlobalShortcutSetting.swift
│ │ │ ├── KeyHolderAlterView.swift
│ │ │ ├── KeyHolderRowView.swift
│ │ │ └── KeyHolderWrapper.swift
│ │ │ └── WindowConfigurationView.swift
│ │ ├── TapHandlerView.swift
│ │ ├── Window
│ │ └── HostWindowManager.swift
│ │ └── WindowAccessor.swift
└── objc
│ ├── DarkMode
│ ├── DarkModeManager.h
│ ├── DarkModeManager.m
│ ├── NSObject+DarkMode.h
│ ├── NSObject+DarkMode.m
│ ├── NSView+HiddenDebug.h
│ ├── NSView+HiddenDebug.m
│ └── Singleton.h
│ ├── EventMonitor
│ ├── EZEventMonitor.h
│ └── EZEventMonitor.m
│ ├── Legacy
│ ├── EZAppModel.h
│ └── EZAppModel.m
│ ├── Libraries
│ ├── ArgumentParser
│ │ ├── ArgumentParser-Prefix.pch
│ │ ├── NSArray+XPMArgumentsNormalizer.h
│ │ ├── NSArray+XPMArgumentsNormalizer.m
│ │ ├── NSDictionary+RubyDescription.h
│ │ ├── NSDictionary+RubyDescription.m
│ │ ├── NSProcessInfo+XPMArgumentParser.h
│ │ ├── NSProcessInfo+XPMArgumentParser.m
│ │ ├── NSScanner+EscapedScanning.h
│ │ ├── NSScanner+EscapedScanning.m
│ │ ├── NSString+Indenter.h
│ │ ├── NSString+Indenter.m
│ │ ├── XPMArgsKonstants.h
│ │ ├── XPMArgsKonstants.m
│ │ ├── XPMArgumentPackage.h
│ │ ├── XPMArgumentPackage.m
│ │ ├── XPMArgumentPackage_Private.h
│ │ ├── XPMArgumentParser.h
│ │ ├── XPMArgumentParser.m
│ │ ├── XPMArgumentSignature.h
│ │ ├── XPMArgumentSignature.m
│ │ ├── XPMArgumentSignature_Private.h
│ │ ├── XPMArguments.h
│ │ ├── XPMArguments_Coalescer_Internal.h
│ │ ├── XPMArguments_Coalescer_Internal.m
│ │ ├── XPMCountedArgument.h
│ │ ├── XPMCountedArgument.m
│ │ ├── XPMMutableAttributedArray.h
│ │ ├── XPMMutableAttributedArray.m
│ │ ├── XPMValuedArgument.h
│ │ └── XPMValuedArgument.m
│ ├── CoolToast
│ │ ├── CTCommon.h
│ │ ├── CTCommon.m
│ │ ├── CTScreen.h
│ │ ├── CTScreen.m
│ │ ├── CTView.h
│ │ ├── CTView.m
│ │ ├── CoolToast.h
│ │ ├── EZToast.h
│ │ ├── EZToast.m
│ │ ├── Info.plist
│ │ ├── ToastWindowController.h
│ │ ├── ToastWindowController.m
│ │ └── ToastWindowController.xib
│ ├── DictionaryKit
│ │ ├── DictionaryKit.h
│ │ ├── TTTDictionary.h
│ │ └── TTTDictionary.m
│ ├── FWEncryptorAES
│ │ ├── FWEncryptorAES.h
│ │ ├── FWEncryptorAES.m
│ │ ├── NSData+Base64.h
│ │ ├── NSData+Base64.m
│ │ ├── NSData+CommonCrypto.h
│ │ └── NSData+CommonCrypto.m
│ └── Snip
│ │ ├── Snip.h
│ │ ├── Snip.m
│ │ ├── SnipFocusView.h
│ │ ├── SnipFocusView.m
│ │ ├── SnipViewController.h
│ │ ├── SnipViewController.m
│ │ ├── SnipWindow.h
│ │ ├── SnipWindow.m
│ │ ├── SnipWindowController.h
│ │ └── SnipWindowController.m
│ ├── MMKit
│ ├── Category
│ │ ├── NSArray+MM.h
│ │ ├── NSArray+MM.m
│ │ ├── NSAttributedString+MM.h
│ │ ├── NSAttributedString+MM.m
│ │ ├── NSButton+MM.h
│ │ ├── NSButton+MM.m
│ │ ├── NSColor+MM.h
│ │ ├── NSColor+MM.m
│ │ ├── NSDictionary+MM.h
│ │ ├── NSDictionary+MM.m
│ │ ├── NSImage+MM.h
│ │ ├── NSImage+MM.m
│ │ ├── NSMutableAttributedString+MM.h
│ │ ├── NSMutableAttributedString+MM.m
│ │ ├── NSPasteboard+MM.h
│ │ ├── NSPasteboard+MM.m
│ │ ├── NSString+MM.h
│ │ ├── NSString+MM.m
│ │ ├── NSUserDefaults+MM.h
│ │ ├── NSUserDefaults+MM.m
│ │ ├── NSView+MM.h
│ │ ├── NSView+MM.m
│ │ ├── NSWindow+MM.h
│ │ └── NSWindow+MM.m
│ ├── Crash
│ │ ├── MMCrash.h
│ │ ├── MMCrash.m
│ │ ├── MMCrashFileTool.h
│ │ ├── MMCrashFileTool.m
│ │ ├── MMCrashSignalExceptionHandler.h
│ │ ├── MMCrashSignalExceptionHandler.m
│ │ ├── MMCrashUncaughtExceptionHandler.h
│ │ └── MMCrashUncaughtExceptionHandler.m
│ ├── Kit
│ │ ├── MMEventMonitor.h
│ │ ├── MMEventMonitor.m
│ │ ├── MMMacro.h
│ │ ├── MMMake.h
│ │ ├── MMMake.m
│ │ ├── MMOrderedDictionary.h
│ │ ├── MMOrderedDictionary.m
│ │ ├── MMTool.h
│ │ └── MMTool.m
│ └── Log
│ │ ├── MMConsoleLogFormatter.h
│ │ ├── MMConsoleLogFormatter.m
│ │ ├── MMFileLogFormatter.h
│ │ ├── MMFileLogFormatter.m
│ │ ├── MMLog.h
│ │ ├── MMLog.m
│ │ └── MMLog.swift
│ ├── Service
│ ├── Apple
│ │ ├── AppleDictionary
│ │ │ ├── EZAppleDictionary.h
│ │ │ ├── EZAppleDictionary.m
│ │ │ └── apple-dictionary.html
│ │ ├── EZAppleService.h
│ │ └── EZAppleService.m
│ ├── AudioPlayer
│ │ ├── EZAudioPlayer.h
│ │ └── EZAudioPlayer.m
│ ├── Baidu
│ │ ├── BaiduApiResponse.swift
│ │ ├── BaiduApiTranslate.swift
│ │ ├── EZBaiduTranslate.h
│ │ ├── EZBaiduTranslate.m
│ │ ├── EZBaiduTranslateResponse.h
│ │ ├── EZBaiduTranslateResponse.m
│ │ ├── baidu-translate-sign.js
│ │ └── bd.js
│ ├── Bing
│ │ ├── BingLanguageVoice.swift
│ │ ├── EZBingConfig.h
│ │ ├── EZBingConfig.m
│ │ ├── EZBingLookupModel.h
│ │ ├── EZBingLookupModel.m
│ │ ├── EZBingRequest.h
│ │ ├── EZBingRequest.m
│ │ ├── EZBingService.h
│ │ ├── EZBingService.m
│ │ ├── EZBingTranslateModel.h
│ │ └── EZBingTranslateModel.m
│ ├── DeepL
│ │ ├── EZDeepLTranslate.h
│ │ ├── EZDeepLTranslate.m
│ │ ├── EZDeepLTranslateResponse.h
│ │ ├── EZDeepLTranslateResponse.m
│ │ ├── EZQueryResult+EZDeepLTranslateResponse.h
│ │ └── EZQueryResult+EZDeepLTranslateResponse.m
│ ├── Google
│ │ ├── EZGoogleTranslate.h
│ │ ├── EZGoogleTranslate.m
│ │ └── google-translate-sign.js
│ ├── Language
│ │ ├── EZLanguageManager.h
│ │ ├── EZLanguageManager.m
│ │ ├── EZLanguageModel.h
│ │ └── EZLanguageModel.m
│ ├── Model
│ │ ├── EZConstKey.h
│ │ ├── EZConstKey.m
│ │ ├── EZDetectManager.h
│ │ ├── EZDetectManager.m
│ │ ├── EZEnumTypes.h
│ │ ├── EZEnumTypes.m
│ │ ├── EZOCRResult.h
│ │ ├── EZOCRResult.m
│ │ ├── EZQueryResult.h
│ │ ├── EZQueryResult.m
│ │ ├── EZQueryService.h
│ │ ├── EZQueryService.m
│ │ ├── EZServiceTypes.h
│ │ └── EZServiceTypes.m
│ ├── Niutrans
│ │ ├── EZNiuTransTranslate.h
│ │ ├── EZNiuTransTranslate.m
│ │ ├── EZNiuTransTranslateResponse.h
│ │ └── EZNiuTransTranslateResponse.m
│ └── WebViewTranslator
│ │ ├── EZURLSchemeHandler.h
│ │ ├── EZURLSchemeHandler.m
│ │ ├── EZWebViewTranslator.h
│ │ └── EZWebViewTranslator.m
│ ├── StatusItem
│ ├── EZRightClickDetector.h
│ └── EZRightClickDetector.m
│ ├── Utility
│ ├── EZAudioUtils
│ │ ├── EZAudioUtils.h
│ │ └── EZAudioUtils.m
│ ├── EZCategory
│ │ ├── NSArray+EZChineseText.h
│ │ ├── NSArray+EZChineseText.m
│ │ ├── NSColor+MyColors
│ │ │ ├── NSColor+MyColors.h
│ │ │ └── NSColor+MyColors.m
│ │ ├── NSData+MD5
│ │ │ ├── NSData+EZMD5.h
│ │ │ └── NSData+EZMD5.m
│ │ ├── NSImage
│ │ │ ├── NSImage+EZResize.h
│ │ │ ├── NSImage+EZResize.m
│ │ │ ├── NSImage+EZSymbolmage.h
│ │ │ └── NSImage+EZSymbolmage.m
│ │ ├── NSObject+DarkMode
│ │ │ ├── NSObject+EZDarkMode.h
│ │ │ └── NSObject+EZDarkMode.m
│ │ ├── NSObject+EZWindowType.h
│ │ ├── NSObject+EZWindowType.m
│ │ ├── NSString
│ │ │ ├── NSString+EZChineseText.h
│ │ │ ├── NSString+EZChineseText.m
│ │ │ ├── NSString+EZConvenience.h
│ │ │ ├── NSString+EZConvenience.m
│ │ │ ├── NSString+EZHandleInputText.h
│ │ │ ├── NSString+EZHandleInputText.m
│ │ │ ├── NSString+EZRegex.h
│ │ │ ├── NSString+EZRegex.m
│ │ │ ├── NSString+EZSplit.h
│ │ │ ├── NSString+EZSplit.m
│ │ │ ├── NSString+EZUtils.h
│ │ │ └── NSString+EZUtils.m
│ │ ├── NSTextView+Height
│ │ │ ├── NSTextView+Height.h
│ │ │ └── NSTextView+Height.m
│ │ ├── NSView+AnimatedHidden
│ │ │ ├── NSView+EZAnimatedHidden.h
│ │ │ └── NSView+EZAnimatedHidden.m
│ │ ├── NSView+EZGetViewController.h
│ │ ├── NSView+EZGetViewController.m
│ │ ├── NSViewController+EZWindow.h
│ │ └── NSViewController+EZWindow.m
│ ├── EZCoordinateUtils
│ │ ├── EZCoordinateUtils.h
│ │ └── EZCoordinateUtils.m
│ ├── EZDeviceSystemInfo
│ │ ├── EZDeviceSystemInfo.h
│ │ └── EZDeviceSystemInfo.m
│ ├── EZLinkParser
│ │ ├── EZSchemeParser.h
│ │ └── EZSchemeParser.m
│ ├── EZLog
│ │ ├── EZLog.h
│ │ └── EZLog.m
│ ├── PrintBeautifulLog
│ │ ├── PrintBeautifulLog.h
│ │ └── PrintBeautifulLog.m
│ └── SystemUtility
│ │ ├── EZSystemUtility.h
│ │ └── EZSystemUtility.m
│ └── ViewController
│ ├── Cell
│ ├── EZSelectLanguageCell.h
│ ├── EZSelectLanguageCell.m
│ ├── EZTableRowView.h
│ ├── EZTableRowView.m
│ ├── EZTableTipsCell.h
│ └── EZTableTipsCell.m
│ ├── Model
│ ├── EZQueryModel.h
│ ├── EZQueryModel.m
│ ├── EZServiceInfo.h
│ └── EZServiceInfo.m
│ ├── Storage
│ ├── EZLocalStorage.h
│ ├── EZLocalStorage.m
│ └── QueryServiceRecord.swift
│ ├── View
│ ├── CommonView
│ │ ├── EZCommonView.h
│ │ └── EZCommonView.m
│ ├── CustomButton
│ │ ├── BlueTextButton
│ │ │ ├── EZBlueTextButton.h
│ │ │ └── EZBlueTextButton.m
│ │ ├── EZAudioButton
│ │ │ ├── EZAudioButton.h
│ │ │ └── EZAudioButton.m
│ │ ├── EZButton
│ │ │ ├── EZButton.h
│ │ │ └── EZButton.m
│ │ ├── EZCopyButton
│ │ │ ├── EZCopyButton.h
│ │ │ └── EZCopyButton.m
│ │ ├── EZHoverButton
│ │ │ ├── EZHoverButton.h
│ │ │ └── EZHoverButton.m
│ │ ├── EZLinkButton
│ │ │ ├── EZOpenLinkButton.h
│ │ │ └── EZOpenLinkButton.m
│ │ ├── EZReplaceTextButton
│ │ │ ├── EZReplaceTextButton.h
│ │ │ └── EZReplaceTextButton.m
│ │ ├── EZSymbolImageButton
│ │ │ ├── EZSymbolImageButton.h
│ │ │ └── EZSymbolImageButton.m
│ │ └── LanguageButton
│ │ │ ├── EZDetectLanguageButton.h
│ │ │ ├── EZDetectLanguageButton.m
│ │ │ ├── EZSelectLanguageButton.h
│ │ │ └── EZSelectLanguageButton.m
│ ├── EZLabel
│ │ ├── EZLabel.h
│ │ ├── EZLabel.m
│ │ ├── EZMyLabel.h
│ │ └── EZMyLabel.m
│ ├── EZQueryMenuTextView
│ │ ├── EZQueryMenuTextView.h
│ │ └── EZQueryMenuTextView.m
│ ├── EZSegmentedControl
│ │ ├── HWSegmentedControl.h
│ │ └── HWSegmentedControl.m
│ ├── EZWrapView
│ │ ├── EZWrapView.h
│ │ └── EZWrapView.m
│ ├── LoadingAnimationView
│ │ ├── EZLoadingAnimationView.h
│ │ └── EZLoadingAnimationView.m
│ ├── PopUpButton
│ │ ├── EZPopUpButton.h
│ │ └── EZPopUpButton.m
│ ├── QueryView
│ │ ├── EZQueryView.h
│ │ └── EZQueryView.m
│ ├── ResultView
│ │ ├── EZResultView.h
│ │ └── EZResultView.m
│ ├── TextView
│ │ ├── EZTextView.h
│ │ └── EZTextView.m
│ ├── Titlebar
│ │ ├── EZTitleBarMoveView.h
│ │ ├── EZTitleBarMoveView.m
│ │ ├── EZTitlebar.h
│ │ └── EZTitlebar.m
│ └── WordResultView
│ │ ├── EZWebViewManager.h
│ │ ├── EZWebViewManager.m
│ │ ├── EZWordResultView.h
│ │ └── EZWordResultView.m
│ └── Window
│ ├── BaseQueryWindow
│ ├── EZBaseQueryViewController.h
│ ├── EZBaseQueryViewController.m
│ ├── EZBaseQueryWindow.h
│ └── EZBaseQueryWindow.m
│ ├── FixedQueryWindow
│ ├── EZFixedQueryWindow.h
│ └── EZFixedQueryWindow.m
│ ├── MainQueryWindow
│ ├── EZMainQueryWindow.h
│ └── EZMainQueryWindow.m
│ ├── MiniQueryWindow
│ ├── EZMiniQueryWindow.h
│ └── EZMiniQueryWindow.m
│ ├── PopButtonWindow
│ ├── EZPopButtonViewController.h
│ ├── EZPopButtonViewController.m
│ ├── EZPopButtonWindow.h
│ └── EZPopButtonWindow.m
│ └── WindowManager
│ ├── EZLayoutManager.h
│ ├── EZLayoutManager.m
│ ├── EZWindowManager.h
│ └── EZWindowManager.m
├── EasydictSwiftTests
└── Test.swift
├── EasydictTests
└── EasydictTests.m
├── Gemfile
├── Gemfile.lock
├── Icon
├── LICENSE
├── Podfile
├── Podfile.lock
├── Pods
├── AFNetworking
│ ├── AFNetworking
│ │ ├── AFCompatibilityMacros.h
│ │ ├── AFHTTPSessionManager.h
│ │ ├── AFHTTPSessionManager.m
│ │ ├── AFNetworkReachabilityManager.h
│ │ ├── AFNetworkReachabilityManager.m
│ │ ├── AFNetworking.h
│ │ ├── AFSecurityPolicy.h
│ │ ├── AFSecurityPolicy.m
│ │ ├── AFURLRequestSerialization.h
│ │ ├── AFURLRequestSerialization.m
│ │ ├── AFURLResponseSerialization.h
│ │ ├── AFURLResponseSerialization.m
│ │ ├── AFURLSessionManager.h
│ │ └── AFURLSessionManager.m
│ ├── LICENSE
│ └── README.md
├── JLRoutes
│ ├── JLRoutes
│ │ ├── Classes
│ │ │ ├── JLRParsingUtilities.h
│ │ │ ├── JLRParsingUtilities.m
│ │ │ ├── JLRRouteDefinition.h
│ │ │ ├── JLRRouteDefinition.m
│ │ │ ├── JLRRouteHandler.h
│ │ │ ├── JLRRouteHandler.m
│ │ │ ├── JLRRouteRequest.h
│ │ │ ├── JLRRouteRequest.m
│ │ │ ├── JLRRouteResponse.h
│ │ │ └── JLRRouteResponse.m
│ │ ├── JLRoutes.h
│ │ └── JLRoutes.m
│ ├── LICENSE
│ └── README.md
├── KVOController
│ ├── FBKVOController
│ │ ├── FBKVOController.h
│ │ ├── FBKVOController.m
│ │ ├── KVOController.h
│ │ ├── NSObject+FBKVOController.h
│ │ └── NSObject+FBKVOController.m
│ ├── LICENSE
│ └── README.md
├── Manifest.lock
├── Masonry
│ ├── LICENSE
│ ├── Masonry
│ │ ├── MASCompositeConstraint.h
│ │ ├── MASCompositeConstraint.m
│ │ ├── MASConstraint+Private.h
│ │ ├── MASConstraint.h
│ │ ├── MASConstraint.m
│ │ ├── MASConstraintMaker.h
│ │ ├── MASConstraintMaker.m
│ │ ├── MASLayoutConstraint.h
│ │ ├── MASLayoutConstraint.m
│ │ ├── MASUtilities.h
│ │ ├── MASViewAttribute.h
│ │ ├── MASViewAttribute.m
│ │ ├── MASViewConstraint.h
│ │ ├── MASViewConstraint.m
│ │ ├── Masonry.h
│ │ ├── NSArray+MASAdditions.h
│ │ ├── NSArray+MASAdditions.m
│ │ ├── NSArray+MASShorthandAdditions.h
│ │ ├── NSLayoutConstraint+MASDebugAdditions.h
│ │ ├── NSLayoutConstraint+MASDebugAdditions.m
│ │ ├── View+MASAdditions.h
│ │ ├── View+MASAdditions.m
│ │ ├── View+MASShorthandAdditions.h
│ │ ├── ViewController+MASAdditions.h
│ │ └── ViewController+MASAdditions.m
│ └── README.md
├── Pods.xcodeproj
│ └── project.pbxproj
├── ReactiveObjC
│ ├── LICENSE.md
│ ├── README.md
│ └── ReactiveObjC
│ │ ├── NSArray+RACSequenceAdditions.h
│ │ ├── NSArray+RACSequenceAdditions.m
│ │ ├── NSControl+RACCommandSupport.h
│ │ ├── NSControl+RACCommandSupport.m
│ │ ├── NSControl+RACTextSignalSupport.h
│ │ ├── NSControl+RACTextSignalSupport.m
│ │ ├── NSData+RACSupport.h
│ │ ├── NSData+RACSupport.m
│ │ ├── NSDictionary+RACSequenceAdditions.h
│ │ ├── NSDictionary+RACSequenceAdditions.m
│ │ ├── NSEnumerator+RACSequenceAdditions.h
│ │ ├── NSEnumerator+RACSequenceAdditions.m
│ │ ├── NSFileHandle+RACSupport.h
│ │ ├── NSFileHandle+RACSupport.m
│ │ ├── NSIndexSet+RACSequenceAdditions.h
│ │ ├── NSIndexSet+RACSequenceAdditions.m
│ │ ├── NSInvocation+RACTypeParsing.h
│ │ ├── NSInvocation+RACTypeParsing.m
│ │ ├── NSNotificationCenter+RACSupport.h
│ │ ├── NSNotificationCenter+RACSupport.m
│ │ ├── NSObject+RACAppKitBindings.h
│ │ ├── NSObject+RACAppKitBindings.m
│ │ ├── NSObject+RACDeallocating.h
│ │ ├── NSObject+RACDeallocating.m
│ │ ├── NSObject+RACDescription.h
│ │ ├── NSObject+RACDescription.m
│ │ ├── NSObject+RACKVOWrapper.h
│ │ ├── NSObject+RACKVOWrapper.m
│ │ ├── NSObject+RACLifting.h
│ │ ├── NSObject+RACLifting.m
│ │ ├── NSObject+RACPropertySubscribing.h
│ │ ├── NSObject+RACPropertySubscribing.m
│ │ ├── NSObject+RACSelectorSignal.h
│ │ ├── NSObject+RACSelectorSignal.m
│ │ ├── NSOrderedSet+RACSequenceAdditions.h
│ │ ├── NSOrderedSet+RACSequenceAdditions.m
│ │ ├── NSSet+RACSequenceAdditions.h
│ │ ├── NSSet+RACSequenceAdditions.m
│ │ ├── NSString+RACKeyPathUtilities.h
│ │ ├── NSString+RACKeyPathUtilities.m
│ │ ├── NSString+RACSequenceAdditions.h
│ │ ├── NSString+RACSequenceAdditions.m
│ │ ├── NSString+RACSupport.h
│ │ ├── NSString+RACSupport.m
│ │ ├── NSText+RACSignalSupport.h
│ │ ├── NSText+RACSignalSupport.m
│ │ ├── NSURLConnection+RACSupport.h
│ │ ├── NSURLConnection+RACSupport.m
│ │ ├── NSUserDefaults+RACSupport.h
│ │ ├── NSUserDefaults+RACSupport.m
│ │ ├── RACAnnotations.h
│ │ ├── RACArraySequence.h
│ │ ├── RACArraySequence.m
│ │ ├── RACBehaviorSubject.h
│ │ ├── RACBehaviorSubject.m
│ │ ├── RACBlockTrampoline.h
│ │ ├── RACBlockTrampoline.m
│ │ ├── RACChannel.h
│ │ ├── RACChannel.m
│ │ ├── RACCommand.h
│ │ ├── RACCommand.m
│ │ ├── RACCompoundDisposable.h
│ │ ├── RACCompoundDisposable.m
│ │ ├── RACCompoundDisposableProvider.d
│ │ ├── RACDelegateProxy.h
│ │ ├── RACDelegateProxy.m
│ │ ├── RACDisposable.h
│ │ ├── RACDisposable.m
│ │ ├── RACDynamicSequence.h
│ │ ├── RACDynamicSequence.m
│ │ ├── RACDynamicSignal.h
│ │ ├── RACDynamicSignal.m
│ │ ├── RACEagerSequence.h
│ │ ├── RACEagerSequence.m
│ │ ├── RACEmptySequence.h
│ │ ├── RACEmptySequence.m
│ │ ├── RACEmptySignal.h
│ │ ├── RACEmptySignal.m
│ │ ├── RACErrorSignal.h
│ │ ├── RACErrorSignal.m
│ │ ├── RACEvent.h
│ │ ├── RACEvent.m
│ │ ├── RACGroupedSignal.h
│ │ ├── RACGroupedSignal.m
│ │ ├── RACImmediateScheduler.h
│ │ ├── RACImmediateScheduler.m
│ │ ├── RACIndexSetSequence.h
│ │ ├── RACIndexSetSequence.m
│ │ ├── RACKVOChannel.h
│ │ ├── RACKVOChannel.m
│ │ ├── RACKVOProxy.h
│ │ ├── RACKVOProxy.m
│ │ ├── RACKVOTrampoline.h
│ │ ├── RACKVOTrampoline.m
│ │ ├── RACMulticastConnection+Private.h
│ │ ├── RACMulticastConnection.h
│ │ ├── RACMulticastConnection.m
│ │ ├── RACPassthroughSubscriber.h
│ │ ├── RACPassthroughSubscriber.m
│ │ ├── RACQueueScheduler+Subclass.h
│ │ ├── RACQueueScheduler.h
│ │ ├── RACQueueScheduler.m
│ │ ├── RACReplaySubject.h
│ │ ├── RACReplaySubject.m
│ │ ├── RACReturnSignal.h
│ │ ├── RACReturnSignal.m
│ │ ├── RACScheduler+Private.h
│ │ ├── RACScheduler+Subclass.h
│ │ ├── RACScheduler.h
│ │ ├── RACScheduler.m
│ │ ├── RACScopedDisposable.h
│ │ ├── RACScopedDisposable.m
│ │ ├── RACSequence.h
│ │ ├── RACSequence.m
│ │ ├── RACSerialDisposable.h
│ │ ├── RACSerialDisposable.m
│ │ ├── RACSignal+Operations.h
│ │ ├── RACSignal+Operations.m
│ │ ├── RACSignal.h
│ │ ├── RACSignal.m
│ │ ├── RACSignalProvider.d
│ │ ├── RACSignalSequence.h
│ │ ├── RACSignalSequence.m
│ │ ├── RACStream+Private.h
│ │ ├── RACStream.h
│ │ ├── RACStream.m
│ │ ├── RACStringSequence.h
│ │ ├── RACStringSequence.m
│ │ ├── RACSubject.h
│ │ ├── RACSubject.m
│ │ ├── RACSubscriber+Private.h
│ │ ├── RACSubscriber.h
│ │ ├── RACSubscriber.m
│ │ ├── RACSubscriptingAssignmentTrampoline.h
│ │ ├── RACSubscriptingAssignmentTrampoline.m
│ │ ├── RACSubscriptionScheduler.h
│ │ ├── RACSubscriptionScheduler.m
│ │ ├── RACTargetQueueScheduler.h
│ │ ├── RACTargetQueueScheduler.m
│ │ ├── RACTestScheduler.h
│ │ ├── RACTestScheduler.m
│ │ ├── RACTuple.h
│ │ ├── RACTuple.m
│ │ ├── RACTupleSequence.h
│ │ ├── RACTupleSequence.m
│ │ ├── RACUnarySequence.h
│ │ ├── RACUnarySequence.m
│ │ ├── RACUnit.h
│ │ ├── RACUnit.m
│ │ ├── RACValueTransformer.h
│ │ ├── RACValueTransformer.m
│ │ ├── ReactiveObjC.h
│ │ └── extobjc
│ │ ├── RACEXTKeyPathCoding.h
│ │ ├── RACEXTRuntimeExtensions.h
│ │ ├── RACEXTRuntimeExtensions.m
│ │ ├── RACEXTScope.h
│ │ └── RACmetamacros.h
├── SwiftFormat
│ ├── CommandLineTool
│ │ └── swiftformat
│ ├── LICENSE.md
│ └── README.md
├── SwiftLint
│ ├── LICENSE
│ └── swiftlint
└── Target Support Files
│ ├── AFNetworking
│ ├── AFNetworking-Info.plist
│ ├── AFNetworking-dummy.m
│ ├── AFNetworking-prefix.pch
│ ├── AFNetworking-umbrella.h
│ ├── AFNetworking.debug.xcconfig
│ ├── AFNetworking.modulemap
│ ├── AFNetworking.release.xcconfig
│ └── AFNetworking.xcconfig
│ ├── JLRoutes
│ ├── JLRoutes-Info.plist
│ ├── JLRoutes-dummy.m
│ ├── JLRoutes-prefix.pch
│ ├── JLRoutes-umbrella.h
│ ├── JLRoutes.debug.xcconfig
│ ├── JLRoutes.modulemap
│ └── JLRoutes.release.xcconfig
│ ├── KVOController
│ ├── KVOController-Info.plist
│ ├── KVOController-dummy.m
│ ├── KVOController-prefix.pch
│ ├── KVOController-umbrella.h
│ ├── KVOController.debug.xcconfig
│ ├── KVOController.modulemap
│ └── KVOController.release.xcconfig
│ ├── Masonry
│ ├── Masonry-Info.plist
│ ├── Masonry-dummy.m
│ ├── Masonry-prefix.pch
│ ├── Masonry-umbrella.h
│ ├── Masonry.debug.xcconfig
│ ├── Masonry.modulemap
│ ├── Masonry.release.xcconfig
│ └── Masonry.xcconfig
│ ├── Pods-Easydict
│ ├── Pods-Easydict-Info.plist
│ ├── Pods-Easydict-acknowledgements.markdown
│ ├── Pods-Easydict-acknowledgements.plist
│ ├── Pods-Easydict-dummy.m
│ ├── Pods-Easydict-frameworks-Debug-input-files.xcfilelist
│ ├── Pods-Easydict-frameworks-Debug-output-files.xcfilelist
│ ├── Pods-Easydict-frameworks-Release-input-files.xcfilelist
│ ├── Pods-Easydict-frameworks-Release-output-files.xcfilelist
│ ├── Pods-Easydict-frameworks.sh
│ ├── Pods-Easydict-umbrella.h
│ ├── Pods-Easydict.debug.xcconfig
│ ├── Pods-Easydict.modulemap
│ └── Pods-Easydict.release.xcconfig
│ ├── Pods-EasydictTests
│ ├── Pods-EasydictTests-Info.plist
│ ├── Pods-EasydictTests-acknowledgements.markdown
│ ├── Pods-EasydictTests-acknowledgements.plist
│ ├── Pods-EasydictTests-dummy.m
│ ├── Pods-EasydictTests-frameworks-Debug-input-files.xcfilelist
│ ├── Pods-EasydictTests-frameworks-Debug-output-files.xcfilelist
│ ├── Pods-EasydictTests-frameworks-Release-input-files.xcfilelist
│ ├── Pods-EasydictTests-frameworks-Release-output-files.xcfilelist
│ ├── Pods-EasydictTests-frameworks.sh
│ ├── Pods-EasydictTests-umbrella.h
│ ├── Pods-EasydictTests.debug.xcconfig
│ ├── Pods-EasydictTests.modulemap
│ └── Pods-EasydictTests.release.xcconfig
│ ├── ReactiveObjC
│ ├── ReactiveObjC-Info.plist
│ ├── ReactiveObjC-dummy.m
│ ├── ReactiveObjC-prefix.pch
│ ├── ReactiveObjC-umbrella.h
│ ├── ReactiveObjC.debug.xcconfig
│ ├── ReactiveObjC.modulemap
│ ├── ReactiveObjC.release.xcconfig
│ └── ReactiveObjC.xcconfig
│ ├── SwiftFormat
│ ├── SwiftFormat.debug.xcconfig
│ └── SwiftFormat.release.xcconfig
│ └── SwiftLint
│ ├── SwiftLint.debug.xcconfig
│ └── SwiftLint.release.xcconfig
├── README.md
├── README_EN.md
├── appcast.xml
└── docs
├── How-to-translate-Easydict-en.md
├── How-to-translate-Easydict-zh.md
├── How-to-use-macOS-system-dictionary-in-Easydict-en.md
├── How-to-use-macOS-system-dictionary-in-Easydict-zh.md
├── How-to-use-macOS-system-translation-in-Easydict-en.md
├── How-to-use-macOS-system-translation-in-Easydict-zh.md
├── select_text_flow.d2
└── select_text_flow.md
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/dev.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: dev issue
3 | about: Use this template for tracking dev issue
4 | title: "dev: "
5 | labels: dev
6 | ---
7 |
8 |
11 |
--------------------------------------------------------------------------------
/.swift-version:
--------------------------------------------------------------------------------
1 | 5.9
--------------------------------------------------------------------------------
/Easydict-debug.xcconfig:
--------------------------------------------------------------------------------
1 | DEVELOPMENT_TEAM =
2 | CODE_SIGN_IDENTITY = -
3 | CODE_SIGN_STYLE = Manual
4 |
--------------------------------------------------------------------------------
/Easydict.xcconfig:
--------------------------------------------------------------------------------
1 | DEVELOPMENT_TEAM = 45Z6V4YD5U
2 | CODE_SIGN_IDENTITY = Apple Development
3 | CODE_SIGN_STYLE = Automatic
4 |
--------------------------------------------------------------------------------
/Easydict.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Easydict.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Easydict.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Easydict/App/AppDelegate+EZURLScheme.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate+EZURLScheme.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/5/29.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface AppDelegate (EZURLScheme)
14 |
15 | - (void)registerRouters;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/App/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/10/30.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : NSObject
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/Colors/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow-down.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "arrow-down-slme@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow-down.imageset/arrow-down-slme@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/arrow-down.imageset/arrow-down-slme@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow-left.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "arrow-left.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow-left.imageset/arrow-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/arrow-left.imageset/arrow-left.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/arrow_down@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/arrow_down@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/arrow_down@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/arrow_down@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/展开列表_暗黑@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/展开列表_暗黑@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/展开列表_暗黑@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/arrow_down_filling.imageset/展开列表_暗黑@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/audio.imageset/audio@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/audio.imageset/audio@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/audio.imageset/audio@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/audio.imageset/audio@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/audio.imageset/喇叭_暗黑@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/audio.imageset/喇叭_暗黑@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/audio.imageset/喇叭_暗黑@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/audio.imageset/喇叭_暗黑@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/blue-white-icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "blue-white-plain@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "blue-white-plain@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/blue-white-icon.imageset/blue-white-plain@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/blue-white-icon.imageset/blue-white-plain@1x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/blue-white-icon.imageset/blue-white-plain@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/blue-white-icon.imageset/blue-white-plain@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/blue-white-icon_old.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "blue-white.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/blue-white-icon_old.imageset/blue-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/blue-white-icon_old.imageset/blue-white.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/clear_circle.imageset/AppIcon-40.0x40.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/clear_circle.imageset/AppIcon-40.0x40.0@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/clear_circle.imageset/AppIcon-40.0x40.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/clear_circle.imageset/AppIcon-40.0x40.0@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/clear_circle.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "AppIcon-40.0x40.0@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "AppIcon-40.0x40.0@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy.imageset/copy_Normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy.imageset/copy_Normal.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy.imageset/copy_Normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy.imageset/copy_Normal@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy.imageset/copy_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy.imageset/copy_dark.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy.imageset/copy_dark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy.imageset/copy_dark@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy_0.imageset/copy@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy_0.imageset/copy@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy_0.imageset/copy@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy_0.imageset/copy@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy_0.imageset/复制_暗黑@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy_0.imageset/复制_暗黑@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy_0.imageset/复制_暗黑@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy_0.imageset/复制_暗黑@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy_1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "noun-copy-5118522.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "noun-duplicate-5406073.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy_1.imageset/noun-copy-5118522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy_1.imageset/noun-copy-5118522.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/copy_1.imageset/noun-duplicate-5406073.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/copy_1.imageset/noun-duplicate-5406073.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/disabled.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "disabled@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/disabled.imageset/disabled@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/disabled.imageset/disabled@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/error.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "error_outline (2).png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/error.imageset/error_outline (2).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/error.imageset/error_outline (2).png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/fold_down.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "fold_down@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "fold_down@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/fold_down.imageset/fold_down@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/fold_down.imageset/fold_down@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/fold_down.imageset/fold_down@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/fold_down.imageset/fold_down@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/fold_up.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "fold_up@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "fold_up@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/fold_up.imageset/fold_up@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/fold_up.imageset/fold_up@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/fold_up.imageset/fold_up@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/fold_up.imageset/fold_up@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "icon_ns_512x512@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "icon_ns_512x512@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/logo.imageset/icon_ns_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/logo.imageset/icon_ns_512x512@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/logo.imageset/icon_ns_512x512@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/logo.imageset/icon_ns_512x512@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/logo_old.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Icon_512x512@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "Icon_512x512@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/logo_old.imageset/Icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/logo_old.imageset/Icon_512x512@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/logo_old.imageset/Icon_512x512@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/logo_old.imageset/Icon_512x512@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/magnifier.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "magnifier.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/magnifier.imageset/magnifier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/magnifier.imageset/magnifier.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/magnifier3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "magnifier3.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/magnifier3.imageset/magnifier3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/magnifier3.imageset/magnifier3.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/menu-icon/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/menu-icon/rounded_menu_bar_icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "rounded.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | },
21 | "properties" : {
22 | "localizable" : true
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/menu-icon/rounded_menu_bar_icon.imageset/rounded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/menu-icon/rounded_menu_bar_icon.imageset/rounded.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/menu-icon/square_menu_bar_icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "square.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/menu-icon/square_menu_bar_icon.imageset/square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/menu-icon/square_menu_bar_icon.imageset/square.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/result_view/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/result_view/link.imageset/AppIcon-40.0x40.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/result_view/link.imageset/AppIcon-40.0x40.0@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/result_view/link.imageset/AppIcon-40.0x40.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/result_view/link.imageset/AppIcon-40.0x40.0@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/result_view/link.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "AppIcon-40.0x40.0@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "AppIcon-40.0x40.0@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Alibaba.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "ali translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Alibaba.imageset/ali translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Alibaba.imageset/ali translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Apple.imageset/Apple Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Apple.imageset/Apple Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Apple.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Apple Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/AppleDictionary.imageset/510a9fda2f51de7416af54a20772b6cd_MzvUX28YSg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/AppleDictionary.imageset/510a9fda2f51de7416af54a20772b6cd_MzvUX28YSg.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/AppleDictionary.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "510a9fda2f51de7416af54a20772b6cd_MzvUX28YSg.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | },
21 | "properties" : {
22 | "localizable" : true
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Baidu.imageset/Baidu_Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Baidu.imageset/Baidu_Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Baidu.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Baidu_Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Bing.imageset/Bing Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Bing.imageset/Bing Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Bing.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Bing Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/BuiltInAI.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "OpenAI Translator.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/BuiltInAI.imageset/OpenAI Translator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/BuiltInAI.imageset/OpenAI Translator.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Caiyun.imageset/Caiyun Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Caiyun.imageset/Caiyun Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Caiyun.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Caiyun Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/CustomOpenAI.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "customOpenAI.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "customOpenAI@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/CustomOpenAI.imageset/customOpenAI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/CustomOpenAI.imageset/customOpenAI.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/CustomOpenAI.imageset/customOpenAI@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/CustomOpenAI.imageset/customOpenAI@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/DeepL.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "DeepL Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/DeepL.imageset/DeepL Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/DeepL.imageset/DeepL Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/DeepSeek.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "deepseek-logo-icon.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/DeepSeek.imageset/deepseek-logo-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/DeepSeek.imageset/deepseek-logo-icon.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Gemini.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Gemini.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Gemini.imageset/Gemini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Gemini.imageset/Gemini.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/GitHub.imageset/github-mark-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/GitHub.imageset/github-mark-white.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/GitHub.imageset/github-mark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/GitHub.imageset/github-mark.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Google.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "service_google_translate_Normal@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Google.imageset/service_google_translate_Normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Google.imageset/service_google_translate_Normal@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Groq.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Groq.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Groq@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Groq.imageset/Groq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Groq.imageset/Groq.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Groq.imageset/Groq@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Groq.imageset/Groq@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Iciba.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Iciba Dictionary.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Iciba.imageset/Iciba Dictionary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Iciba.imageset/Iciba Dictionary.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Linguee.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Linguee Dictionary.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Linguee.imageset/Linguee Dictionary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Linguee.imageset/Linguee Dictionary.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Microsoft.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Microsoft Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Microsoft.imageset/Microsoft Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Microsoft.imageset/Microsoft Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/NiuTrans.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "小牛翻译.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/NiuTrans.imageset/小牛翻译.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/NiuTrans.imageset/小牛翻译.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Ollama.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Ollama.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Ollama@x2.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Ollama.imageset/Ollama.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Ollama.imageset/Ollama.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Ollama.imageset/Ollama@x2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Ollama.imageset/Ollama@x2.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/OpenAI.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "OpenAI.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/OpenAI.imageset/OpenAI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/OpenAI.imageset/OpenAI.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Polishing.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Polishing.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Polishing@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Polishing.imageset/Polishing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Polishing.imageset/Polishing.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Polishing.imageset/Polishing@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Polishing.imageset/Polishing@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Summary.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Summary.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Summary@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Summary.imageset/Summary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Summary.imageset/Summary.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Summary.imageset/Summary@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Summary.imageset/Summary@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Tencent.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Tencent Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Tencent.imageset/Tencent Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Tencent.imageset/Tencent Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Volcano.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Volcano Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Volcano.imageset/Volcano Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Volcano.imageset/Volcano Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Youdao.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Youdao Translate.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/Youdao.imageset/Youdao Translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/Youdao.imageset/Youdao Translate.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/play.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "play.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/service-icon/play.imageset/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/service-icon/play.imageset/play.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/Toggle_Off.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Toggle_Off.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/Toggle_Off.imageset/Toggle_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/Toggle_Off.imageset/Toggle_Off.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/Toggle_On.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Toggle_On.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/Toggle_On.imageset/Toggle_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/Toggle_On.imageset/Toggle_On.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/add.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "add.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/add.imageset/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/add.imageset/add.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/disable_blue.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "disable_blue.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/disable_blue.imageset/disable_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/disable_blue.imageset/disable_blue.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/minus.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "minus.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/minus.imageset/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/minus.imageset/minus.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/switch_off.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "switch_off.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/switch_off.imageset/switch_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/switch_off.imageset/switch_off.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/switch_on.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "switch_on.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/switch_on.imageset/switch_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/switch_on.imageset/switch_on.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_off_blue.imageset/Toggle_Off (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toggle_off_blue.imageset/Toggle_Off (1).png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_off_blue.imageset/toggle_off_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toggle_off_blue.imageset/toggle_off_blue.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_off_blue_dark.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "toggle_off_blue.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_off_blue_dark.imageset/toggle_off_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toggle_off_blue_dark.imageset/toggle_off_blue.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_off_blue_light.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Toggle_Off (1).png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_off_blue_light.imageset/Toggle_Off (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toggle_off_blue_light.imageset/Toggle_Off (1).png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_on_blue.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "toggle_on_blue.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toggle_on_blue.imageset/toggle_on_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toggle_on_blue.imageset/toggle_on_blue.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_about.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "about.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_about.imageset/about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_about.imageset/about.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_general.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "toolbar_general.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "toolbar_general@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "toolbar_general@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_general.imageset/toolbar_general.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_general.imageset/toolbar_general.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_general.imageset/toolbar_general@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_general.imageset/toolbar_general@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_general.imageset/toolbar_general@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_general.imageset/toolbar_general@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_privacy.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Privacy 1.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_privacy.imageset/Privacy 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_privacy.imageset/Privacy 1.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_service.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "toolbar_service.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_service.imageset/toolbar_service.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_service.imageset/toolbar_service.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_setting_general.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "toolbar_setting.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_setting_general.imageset/toolbar_setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_setting_general.imageset/toolbar_setting.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_shortcut.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "shortcut.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/setting/toolbar_shortcut.imageset/shortcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/setting/toolbar_shortcut.imageset/shortcut.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/tip_Normal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "tip_Normal.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "tip_Normal@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/tip_Normal.imageset/tip_Normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/tip_Normal.imageset/tip_Normal.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/tip_Normal.imageset/tip_Normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/tip_Normal.imageset/tip_Normal@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Browser.imageset/Browser@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Browser.imageset/Browser@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Browser.imageset/Browser@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Browser.imageset/Browser@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Browser.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Browser@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "Browser@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Chrome.imageset/Chrome_64@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Chrome.imageset/Chrome_64@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Chrome.imageset/Chrome_64@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Chrome.imageset/Chrome_64@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Chrome.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Chrome_64@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "Chrome_64@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Eudic.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "Eudic_64@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "Eudic_64@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Eudic.imageset/Eudic_64@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Eudic.imageset/Eudic_64@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Eudic.imageset/Eudic_64@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Eudic.imageset/Eudic_64@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Safari.imageset/AppIcon-40.0x40.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Safari.imageset/AppIcon-40.0x40.0@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Safari.imageset/AppIcon-40.0x40.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/Safari.imageset/AppIcon-40.0x40.0@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/Safari.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "AppIcon-40.0x40.0@2x.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "filename" : "AppIcon-40.0x40.0@3x.png",
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/google_icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "filename" : "google_icon.png",
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/google_icon.imageset/google_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/google_icon.imageset/google_icon.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/new_pin_normal.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "tw_navigation_pin_normal_Normal.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "tw_navigation_pin_normal_Normal@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/new_pin_normal.imageset/tw_navigation_pin_normal_Normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/new_pin_normal.imageset/tw_navigation_pin_normal_Normal.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/new_pin_normal.imageset/tw_navigation_pin_normal_Normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/new_pin_normal.imageset/tw_navigation_pin_normal_Normal@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/new_pin_selected.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "tw_navigation_pin_selected_Normal.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "tw_navigation_pin_selected_Normal@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/new_pin_selected.imageset/tw_navigation_pin_selected_Normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/new_pin_selected.imageset/tw_navigation_pin_selected_Normal.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/titlebar/new_pin_selected.imageset/tw_navigation_pin_selected_Normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/titlebar/new_pin_selected.imageset/tw_navigation_pin_selected_Normal@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/transform.imageset/transform@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/transform.imageset/transform@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/transform.imageset/transform@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/transform.imageset/transform@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/transform.imageset/交换_暗黑@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/transform.imageset/交换_暗黑@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/transform.imageset/交换_暗黑@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/transform.imageset/交换_暗黑@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon.appiconset/icon_512x512@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_128x128.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_128x128@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_16x16.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_16x16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_16x16@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_256x256.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_256x256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_256x256@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_32x32.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_32x32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_32x32@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_512x512.png
--------------------------------------------------------------------------------
/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_512x512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Assets.xcassets/white-black-icon_old.appiconset/icon_512x512@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Easydict-debug.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.automation.apple-events
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.cs.disable-library-validation
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Easydict/App/Easydict.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.automation.apple-events
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Easydict/App/Icons/black-white-icon/black-white-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/black-white-icon/black-white-icon@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/black-white-icon/black-white-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/black-white-icon/black-white-icon@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/blue-white-icon/blue-white-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/blue-white-icon/blue-white-icon@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/blue-white-icon/blue-white-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/blue-white-icon/blue-white-icon@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/cyan-white-icon/cyan-white-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/cyan-white-icon/cyan-white-icon@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/cyan-white-icon/cyan-white-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/cyan-white-icon/cyan-white-icon@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/white-black-icon/white-black-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/white-black-icon/white-black-icon@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/white-black-icon/white-black-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/white-black-icon/white-black-icon@3x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/white-blue-icon/white-blue-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/white-blue-icon/white-blue-icon@2x.png
--------------------------------------------------------------------------------
/Easydict/App/Icons/white-blue-icon/white-blue-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Easydict/App/Icons/white-blue-icon/white-blue-icon@3x.png
--------------------------------------------------------------------------------
/Easydict/App/easydict:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # 在这里添加你的应用程序执行命令
4 | # 例如:
5 | # /path/to/your/application/Easydict "$@"
6 |
7 |
8 | # /Users/tisfeng/Library/Developer/Xcode/DerivedData/Easydict-entaqaylceybfqboqggmsizyhose/Build/Products/Debug/Easydict-debug.app/Contents/MacOS/Easydict-debug "$@"
9 |
10 | /System/Volumes/Data/Applications/Easydict.app/Contents/MacOS/Easydict "$@"
11 |
--------------------------------------------------------------------------------
/Easydict/App/entry.h:
--------------------------------------------------------------------------------
1 | //
2 | // entry.h
3 | // Easydict
4 | //
5 | // Created by Kyle on 2023/12/28.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | void parseArmguments(void);
10 |
--------------------------------------------------------------------------------
/Easydict/Swift/Feature/HTTPServer/Vapor/configure.swift:
--------------------------------------------------------------------------------
1 | //
2 | // vapor.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2024/7/15.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import Vapor
10 |
11 | // configures your application
12 | public func configure(_ app: Application) async throws {
13 | // uncomment to serve files from /Public folder
14 | // app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))
15 | // register routes
16 | try routes(app)
17 | }
18 |
--------------------------------------------------------------------------------
/Easydict/Swift/Feature/Localization/LocalizedBundle.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocalizedBundle.swift
3 | // Easydict
4 | //
5 | // Created by choykarl on 2024/3/23.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | @objc(EZLocalizedBundle)
12 | class LocalizedBundle: Bundle, @unchecked Sendable {
13 | override func localizedString(forKey key: String, value: String?, table tableName: String?) -> String {
14 | I18nHelper.shared.localizedBundle.localizedString(forKey: key, value: value, table: tableName)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Easydict/Swift/Feature/Localization/NSBundle+Localization.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSBundle+Localization.m
3 | // Easydict
4 | //
5 | // Created by choykarl on 2024/3/23.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "Easydict-Swift.h"
11 |
12 | @implementation NSBundle (Localization)
13 |
14 | + (void)load {
15 | static dispatch_once_t onceToken;
16 | dispatch_once(&onceToken, ^{
17 | object_setClass([NSBundle mainBundle], [EZLocalizedBundle class]);
18 | });
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Easydict/Swift/Service/Caiyun/CaiyunResponse.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CaiyunResponse.swift
3 | // Easydict
4 | //
5 | // Created by Kyle on 2023/11/24.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct CaiyunResponse: Codable {
12 | var confidence: Double
13 | var rc: Int
14 | var target: [String]
15 | }
16 |
--------------------------------------------------------------------------------
/Easydict/Swift/Service/Youdao/Model/YoudaoOCRResponse.swift:
--------------------------------------------------------------------------------
1 | //
2 | // YoudaoOCRResponse.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2025/1/3.
6 | // Copyright © 2025 izual. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | // MARK: - YoudaoOCRResponse
12 |
13 | struct YoudaoOCRResponse: Codable {
14 | let lanFrom: String
15 | let lanTo: String
16 | let errorCode: String
17 | let lines: [YoudaoOCRLine]
18 | }
19 |
20 | // MARK: - YoudaoOCRLine
21 |
22 | struct YoudaoOCRLine: Codable {
23 | let context: String // original text
24 | let tranContent: String // translated text
25 | }
26 |
--------------------------------------------------------------------------------
/Easydict/Swift/Utility/Constants/Constants.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Constants.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2024/9/13.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | // MARK: - Constants
12 |
13 | @objcMembers
14 | class Constants: NSObject {
15 | // Easydict translate shortcut name.
16 | static let easydictTranslateShortcutName = "Easydict-Translate-V1.2.0"
17 | }
18 |
19 | extension String {
20 | // Acknowledgements window id.
21 | static let acknowledgementsWindowId = "setting.about.acknowledgements"
22 |
23 | // About window id.
24 | static let aboutWindowId = "setting.about"
25 | }
26 |
--------------------------------------------------------------------------------
/Easydict/Swift/Utility/Extensions/AppKit/NSMenu+PopUpBelowView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSMenu+PopUp.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2024/3/22.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import AppKit
10 | import Foundation
11 |
12 | @objc
13 | extension NSMenu {
14 | func popUp(belowView view: NSView) {
15 | let point = CGPoint(x: 0, y: view.frame.height + 8)
16 | popUp(positioning: nil, at: point, in: view)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Easydict/Swift/Utility/Extensions/Bundle/Bundle+AppInfo.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Bundle+AppInfo.swift
3 | // Easydict
4 | //
5 | // Created by phlpsong on 2024/1/18.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension Bundle {
12 | var applicationName: String {
13 | if let displayName: String = object(forInfoDictionaryKey: "CFBundleDisplayName") as? String {
14 | return displayName
15 | } else if let name: String = object(forInfoDictionaryKey: "CFBundleName") as? String {
16 | return name
17 | }
18 | if let executableURL {
19 | return executableURL.deletingLastPathComponent().lastPathComponent
20 | }
21 | return ""
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Easydict/Swift/Utility/Extensions/Data/Data+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Data+Extension.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2024/9/6.
6 | //
7 |
8 | import Foundation
9 |
10 | extension Data {
11 | var stringValue: String? {
12 | String(data: self, encoding: .utf8)
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Easydict/Swift/Utility/Extensions/Dictionary/Dictionary+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Dictionary+Extension.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2024/8/19.
6 | //
7 |
8 | import Alamofire
9 | import Foundation
10 |
11 | extension [String: Any] {
12 | /// Convert dictioanry to queryString
13 | var queryString: String {
14 | var components: [(String, String)] = []
15 |
16 | for key in keys.sorted(by: <) {
17 | let value = self[key]!
18 | components += URLEncoding().queryComponents(fromKey: key, value: value)
19 | }
20 | return components.map { "\($0)=\($1)" }.joined(separator: "&")
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/Swift/Utility/Extensions/Double/Double+String.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Double+String.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2025/4/18.
6 | // Copyright © 2025 izual. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension Double {
12 | /// Convert double to string with one decimal place.
13 | /// - Example:
14 | /// - 1 -> "1.0"
15 | /// - 1.234 -> "1.2"
16 | var oneDecimalString: String {
17 | String(format: "%.1f", self)
18 | }
19 |
20 | var twoDecimalString: String {
21 | String(format: "%.2f", self)
22 | }
23 |
24 | var intString: String {
25 | String(format: "%.0f", self)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Easydict/Swift/Utility/Extensions/URL/URL+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // URL+IsValid.swift
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2024/3/24.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension URL {
12 | var isValid: Bool {
13 | scheme != nil && host != nil
14 | }
15 |
16 | /// Get true base URL, such as `http://localhost:11434/v1/chat/completions` return `http://localhost:11434`
17 | ///
18 | /// From `https://stackoverflow.com/a/15897956/8378840`
19 | var rootURL: URL? {
20 | URL(string: "/", relativeTo: self)?.absoluteURL
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/Swift/View/SettingView/Tabs/ServiceConfigurationView/ConfigurationView/BingService+ConfigurableService.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BingService+ConfigurableService.swift
3 | // Easydict
4 | //
5 | // Created by phlpsong on 2024/1/31.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | extension EZBingService {
12 | open override func configurationListItems() -> Any? {
13 | ServiceConfigurationSecretSectionView(service: self, observeKeys: [.bingCookieKey]) {
14 | SecureInputCell(
15 | textFieldTitleKey: "service.configuration.bing.cookie.title",
16 | key: .bingCookieKey
17 | )
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Easydict/Swift/View/SettingView/Tabs/ServiceConfigurationView/ServiceAPIType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ServiceAPIType.swift
3 | // Easydict
4 | //
5 | // Created by karl on 2024/7/25.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import Defaults
10 | import Foundation
11 | import SwiftUI
12 |
13 | enum ServiceAPIType: String, CaseIterable, Defaults.Serializable, EnumLocalizedStringConvertible {
14 | case web = "Web API"
15 | case secretKey = "Secret Key API"
16 |
17 | // MARK: Internal
18 |
19 | var title: LocalizedStringKey {
20 | LocalizedStringKey(rawValue)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Easydict/Swift/View/SettingView/Tabs/TabView/ShortcutTab.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ShortcutTab.swift
3 | // Easydict
4 | //
5 | // Created by Sharker on 2024/1/21.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 | struct ShortcutTab: View {
11 | var body: some View {
12 | Form {
13 | // Global shortcut
14 | GlobalShortcutSettingView()
15 | // In app shortcut
16 | AppShortcutSettingView()
17 | }
18 | .formStyle(.grouped)
19 | }
20 | }
21 |
22 | #Preview {
23 | ShortcutTab()
24 | }
25 |
--------------------------------------------------------------------------------
/Easydict/Swift/View/WindowAccessor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // WindowAccessor.swift
3 | // Easydict
4 | //
5 | // Created by phlpsong on 2024/1/9.
6 | // Copyright © 2024 izual. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 |
11 | struct WindowAccessor: NSViewRepresentable {
12 | @Binding var window: NSWindow?
13 |
14 | func makeNSView(context _: Context) -> NSView {
15 | let view = NSView()
16 | DispatchQueue.main.async {
17 | window = view.window
18 | }
19 | return view
20 | }
21 |
22 | func updateNSView(_: NSView, context _: Context) {}
23 | }
24 |
--------------------------------------------------------------------------------
/Easydict/objc/DarkMode/DarkModeManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // DarkModeManager.h
3 | // Bob
4 | //
5 | // Created by chen on 2019/12/24.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface DarkModeManager : NSObject
14 |
15 | @property (nonatomic, assign, readonly) BOOL systemDarkMode;
16 |
17 | + (instancetype)manager NS_SWIFT_NAME(sharedManager());
18 | - (void)excuteLight:(void (^)(void))light dark:(void (^)(void))dark;
19 |
20 | - (void)updateDarkMode:(NSInteger)apperance;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Easydict/objc/DarkMode/NSObject+DarkMode.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+DarkMode.h
3 | // Bob
4 | //
5 | // Created by chen on 2019/12/25.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 |
15 | @interface NSObject (DarkMode)
16 |
17 | - (void)excuteLight:(void (^)(id x))light dark:(void (^)(id x))dark;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Easydict/objc/DarkMode/NSView+HiddenDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+HiddenDebug.h
3 | // Bob
4 | //
5 | // Created by chen on 2019/12/26.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 |
15 | @interface NSView (HiddenDebug)
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/DarkMode/NSView+HiddenDebug.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+HiddenDebug.m
3 | // Bob
4 | //
5 | // Created by chen on 2019/12/26.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import "NSView+HiddenDebug.h"
10 | #import
11 |
12 |
13 | @implementation NSView (HiddenDebug)
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Easydict/objc/Legacy/EZAppModel.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZAppModel.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/6/21.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZEnumTypes.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZAppModel : NSObject
15 |
16 | @property (nonatomic, copy) NSString *appBundleID;
17 | @property (nonatomic, assign) EZTriggerType triggerType;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Easydict/objc/Legacy/EZAppModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // EZAppModel.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/6/21.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZAppModel.h"
10 |
11 | @implementation EZAppModel
12 |
13 | - (BOOL)isEqual:(id)object {
14 | if (![object isKindOfClass:[EZAppModel class]]) {
15 | return NO;
16 | }
17 |
18 | EZAppModel *model = (EZAppModel *)object;
19 | return [self.appBundleID isEqualToString:model.appBundleID];
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/ArgumentParser-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'ArgumentParser' target in the 'ArgumentParser' project
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #endif
8 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/NSArray+XPMArgumentsNormalizer.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+XPMArgumentsNormalizer.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/15/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "XPMMutableAttributedArray.h"
12 |
13 | @interface NSArray (XPMArgumentsNormalizer)
14 |
15 | - (XPMMutableAttributedArray *)xpmargs_normalize;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/NSDictionary+RubyDescription.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+RubyDescription.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/15/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSDictionary (RubyDescription)
12 | - (NSString *)xpmargs_rubyHashDescription;
13 | @end
14 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/NSProcessInfo+XPMArgumentParser.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSProcessInfo+XPMArgumentParser.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/15/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class XPMArgumentPackage;
12 |
13 | @interface NSProcessInfo (XPMArgumentParser)
14 |
15 | - (XPMArgumentPackage *)xpmargs_parseArgumentsWithSignatures:(id)signatures;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/NSProcessInfo+XPMArgumentParser.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSProcessInfo+XPMArgumentParser.m
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/15/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import "NSProcessInfo+XPMArgumentParser.h"
10 |
11 | #import "XPMArgumentParser.h"
12 |
13 | @implementation NSProcessInfo (XPMArgumentParser)
14 |
15 | - (XPMArgumentPackage *)xpmargs_parseArgumentsWithSignatures:(id)signatures
16 | {
17 | XPMArgumentParser * p = [[XPMArgumentParser alloc] initWithArguments:[self arguments] signatures:signatures];
18 | return [p parse];
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/NSScanner+EscapedScanning.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSScanner+EscapedScanning.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/17/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSScanner (EscapedScanning)
12 |
13 | - (void)xpmargs_scanUpToCharacterFromSet:(NSCharacterSet *)upTo unlessPrecededByCharacterFromSet:(NSCharacterSet *)escapedBy intoString:(__autoreleasing NSString **)into;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/NSString+Indenter.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+Indenter.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/11/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSString (Indenter)
12 |
13 | - (NSMutableString *)xpmargs_mutableStringByIndentingToWidth:(NSUInteger)indent lineLength:(NSUInteger)width;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/XPMArgsKonstants.h:
--------------------------------------------------------------------------------
1 | //
2 | // XPMArgsKonstants.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/15/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | extern NSString * xpmargs_typeKey;
12 | extern NSString * xpmargs_switch;
13 | extern NSString * xpmargs_unknown;
14 | extern NSString * xpmargs_barrier;
15 | extern NSString * xpmargs_value;
16 | extern NSString * xpmargs_isValueCaptured;
17 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/XPMArgsKonstants.m:
--------------------------------------------------------------------------------
1 | //
2 | // XPMArgsKonstants.m
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/15/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import "XPMArgsKonstants.h"
10 |
11 | NSString * xpmargs_typeKey = @"type";
12 | NSString * xpmargs_switch = @"switch";
13 | NSString * xpmargs_unknown = @"unknown";
14 | NSString * xpmargs_barrier = @"barrier";
15 | NSString * xpmargs_value = @"value";
16 | NSString * xpmargs_isValueCaptured = @"isValueCaptured?";
17 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/XPMArgumentParser.h:
--------------------------------------------------------------------------------
1 | //
2 | // XPMArgumentParser.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 2/23/12.
6 | // Copyright (c) 2012, 2016 Christopher Miller. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class XPMArgumentPackage;
12 |
13 | @interface XPMArgumentParser : NSObject
14 |
15 | - (id)initWithArguments:(NSArray *)arguments signatures:(id)signatures;
16 | - (XPMArgumentPackage *)parse;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/XPMArguments.h:
--------------------------------------------------------------------------------
1 | //
2 | // XPMArguments.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 4/2/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #ifndef _XPMArguments_h
10 | #define _XPMArguments_h
11 |
12 | #import "XPMArgumentSignature.h"
13 | #import "XPMCountedArgument.h"
14 | #import "XPMValuedArgument.h"
15 |
16 | #import "XPMArgumentParser.h"
17 | #import "XPMArgumentPackage.h"
18 |
19 | #import "NSProcessInfo+XPMArgumentParser.h"
20 |
21 | #endif
22 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/ArgumentParser/XPMCountedArgument.h:
--------------------------------------------------------------------------------
1 | //
2 | // XPMCountedArgument.h
3 | // ArgumentParser
4 | //
5 | // Created by Christopher R. Miller on 5/11/12.
6 | // Copyright (c) 2012, 2016 Christopher R. Miller. All rights reserved.
7 | //
8 |
9 | #import "XPMArgumentSignature.h"
10 |
11 | /** Counted or boolean argument signature. */
12 | @interface XPMCountedArgument : XPMArgumentSignature
13 |
14 | + (id)countedArgumentWithSwitches:(id)switches aliases:(id)aliases;
15 | - (id)initWithSwitches:(id)switches aliases:(id)aliases;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/CoolToast/CTScreen.h:
--------------------------------------------------------------------------------
1 | //
2 | // CTScreen.h
3 | // CoolToast
4 | //
5 | // Created by Socoolby on 2019/7/1.
6 | // Copyright © 2019 Socoolby. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface CTScreen : NSObject
15 |
16 | //+ (NSScreen *)screenWithPoint:(CGPoint)point;
17 | + (CGPoint)mouseLocationInScreen;
18 | + (NSScreen *)getMainScreen;
19 | + (NSScreen *)getCurrentScreen;
20 | + (NSRect)frameForScreen:(NSScreen *)screen;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/CoolToast/CTView.h:
--------------------------------------------------------------------------------
1 | //
2 | // CTView.h
3 | // CoolToast
4 | //
5 | // Created by Socoolby on 2019/7/5.
6 | // Copyright © 2019 Socoolby. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface CTView : NSView
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/CoolToast/CTView.m:
--------------------------------------------------------------------------------
1 | //
2 | // CTView.m
3 | // CoolToast
4 | //
5 | // Created by Socoolby on 2019/7/5.
6 | // Copyright © 2019 Socoolby. All rights reserved.
7 | //
8 |
9 | #import "CTView.h"
10 |
11 | @implementation CTView
12 |
13 | - (void)drawRect:(NSRect)dirtyRect {
14 | [super drawRect:dirtyRect];
15 | }
16 |
17 | // Overrite for tap event.
18 | - (BOOL)acceptsFirstMouse:(nullable NSEvent *)event {
19 | return YES;
20 | }
21 | @end
22 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/CoolToast/CoolToast.h:
--------------------------------------------------------------------------------
1 | //
2 | // CoolToast.h
3 | // CoolToast
4 | //
5 | // Created by Socoolby on 2019/6/28.
6 | // Copyright © 2019 Socoolby. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "CTCommon.h"
11 | #import "ToastWindowController.h"
12 |
13 | //! Project version number for CoolToast.
14 | FOUNDATION_EXPORT double CoolToastVersionNumber;
15 |
16 | //! Project version string for CoolToast.
17 | FOUNDATION_EXPORT const unsigned char CoolToastVersionString[];
18 |
19 | // In this header, you should import all the public headers of your framework using statements like #import
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/CoolToast/EZToast.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZToast.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/5/8.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "CoolToast.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZToast : ToastWindowController
15 |
16 | + (EZToast *)toast;
17 |
18 | /// Show toast, message with App icon.
19 | + (void)showToast:(NSString *)message;
20 |
21 | /// Show only text.
22 | + (void)showText:(NSString *)message;
23 |
24 | + (void)showText:(NSString *)message toastPostion:(CTPosition)toastPostion;
25 |
26 | + (void)showSuccessToast;
27 |
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/Snip/Snip.h:
--------------------------------------------------------------------------------
1 | //
2 | // Snip.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/11/27.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "SnipWindowController.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 |
15 | @interface Snip : NSObject
16 |
17 | @property (nonatomic, assign) BOOL isSnapshotting;
18 |
19 | + (instancetype)shared;
20 |
21 | - (void)startWithCompletion:(void (^)(NSImage *_Nullable image))completion;
22 |
23 | - (void)stop;
24 |
25 | @end
26 |
27 | NS_ASSUME_NONNULL_END
28 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/Snip/SnipFocusView.h:
--------------------------------------------------------------------------------
1 | //
2 | // SnipFocusView.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/11/29.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 |
14 | @interface SnipFocusView : NSView
15 |
16 | DefineMethodMMMake_h(SnipFocusView, view);
17 |
18 | @property (nonatomic, strong) NSImageView *imageView;
19 | @property (nonatomic, strong) NSTextField *locationTextField;
20 | @property (nonatomic, strong) NSTextField *sizeTextFiled;
21 |
22 | - (CGSize)expectSize;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/Easydict/objc/Libraries/Snip/SnipWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // SnipWindow.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/11/27.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface SnipWindow : NSPanel
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Category/NSButton+MM.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSButton+MM.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/11/15.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 |
14 | @interface NSButton (MM)
15 |
16 | @property (nonatomic, assign) BOOL mm_isOn;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Category/NSButton+MM.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSButton+MM.m
3 | // Bob
4 | //
5 | // Created by ripper on 2019/11/15.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import "NSButton+MM.h"
10 |
11 |
12 | @implementation NSButton (MM)
13 |
14 | - (BOOL)mm_isOn {
15 | return self.state == NSControlStateValueOn;
16 | }
17 |
18 | - (void)setMm_isOn:(BOOL)mm_isOn {
19 | if (mm_isOn) {
20 | self.state = NSControlStateValueOn;
21 | } else {
22 | self.state = NSControlStateValueOff;
23 | }
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Category/NSDictionary+MM.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+MM.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/12/13.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 |
14 | @interface NSDictionary (MM)
15 |
16 | - (NSDictionary *_Nullable)mm_reverseKeysAndObjectsDictionary;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Category/NSImage+MM.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSImage+MM.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/11/29.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 |
14 | @interface NSImage (MM)
15 |
16 | + (NSImage *)mm_imageWithSize:(CGSize)size graphicsContext:(void (^NS_NOESCAPE)(CGContextRef ctx))block;
17 |
18 | - (NSData *)mm_PNGData;
19 |
20 | - (NSData *)mm_JPEGData;
21 |
22 | - (BOOL)mm_writeToFileAsPNG:(NSString *)path;
23 |
24 | - (BOOL)mm_writeToFileAsJPEG:(NSString *)path;
25 |
26 |
27 | - (NSImage *)imageWithTintColor:(NSColor *)tintColor;
28 |
29 | @end
30 |
31 | NS_ASSUME_NONNULL_END
32 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Category/NSPasteboard+MM.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSPasteboard+MM.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/12/11.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 |
14 | @interface NSPasteboard (MM)
15 |
16 | + (BOOL)mm_generalPasteboardSetString:(NSString *)string;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Category/NSPasteboard+MM.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSPasteboard+MM.m
3 | // Bob
4 | //
5 | // Created by ripper on 2019/12/11.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import "NSPasteboard+MM.h"
10 |
11 | @implementation NSPasteboard (MM)
12 |
13 | + (BOOL)mm_generalPasteboardSetString:(NSString *)string {
14 | if (!string.length) {
15 | return NO;
16 | }
17 |
18 | NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
19 | [pasteboard clearContents];
20 | return [pasteboard setString:string forType:NSPasteboardTypeString];
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Crash/MMCrash.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMCrash.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/12/10.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | ///------------------------------------------------
10 | /// Code From https://github.com/didi/DoraemonKit
11 | ///------------------------------------------------
12 |
13 | #import
14 |
15 | NS_ASSUME_NONNULL_BEGIN
16 |
17 |
18 | @interface MMCrash : NSObject
19 |
20 | + (void)registerHandler;
21 |
22 | + (NSString *)crashDirectory;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Crash/MMCrash.m:
--------------------------------------------------------------------------------
1 | //
2 | // MMCrash.m
3 | // Bob
4 | //
5 | // Created by ripper on 2019/12/10.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import "MMCrash.h"
10 | #import "MMCrashUncaughtExceptionHandler.h"
11 | #import "MMCrashSignalExceptionHandler.h"
12 | #import "MMCrashFileTool.h"
13 |
14 |
15 | @implementation MMCrash
16 |
17 | + (void)registerHandler {
18 | [MMCrashUncaughtExceptionHandler registerHandler];
19 | [MMCrashSignalExceptionHandler registerHandler];
20 | }
21 |
22 | + (NSString *)crashDirectory {
23 | return [MMCrashFileTool crashDirectory];
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Crash/MMCrashFileTool.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMCrashFileTool.h
3 | // MMKit
4 | //
5 | // Created by wenquan on 2018/11/22.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 |
13 | @interface MMCrashFileTool : NSObject
14 |
15 | /**
16 | 保存崩溃日志到沙盒中的Library/Caches/Crash目录下
17 |
18 | @param log 崩溃日志的内容
19 | @param fileName 保存的文件名
20 | */
21 | + (void)saveCrashLog:(NSString *)log fileName:(NSString *)fileName;
22 |
23 | /**
24 | 获取崩溃日志的目录
25 |
26 | @return 崩溃日志的目录
27 | */
28 | + (NSString *)crashDirectory;
29 |
30 | @end
31 |
32 | NS_ASSUME_NONNULL_END
33 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Crash/MMCrashSignalExceptionHandler.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMCrashSignalExceptionHandler.h
3 | // MMKit
4 | //
5 | // Created by wenquan on 2018/11/22.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 |
13 | @interface MMCrashSignalExceptionHandler : NSObject
14 |
15 | + (void)registerHandler;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Crash/MMCrashUncaughtExceptionHandler.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMCrashUncaughtExceptionHandler.h
3 | // MMKit
4 | //
5 | // Created by wenquan on 2018/11/22.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 |
13 | @interface MMCrashUncaughtExceptionHandler : NSObject
14 |
15 | + (void)registerHandler;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Kit/MMMacro.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMMacro.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/11/12.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #define mm_weakify(...) @weakify(__VA_ARGS__)
10 | #define mm_strongify(...) @strongify(__VA_ARGS__)
11 |
12 | #define mm_ignoreUnusedVariableWarning(var) (void)(var);
13 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Kit/MMTool.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMTool.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/12/19.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | // NSPointInRect 不包含边框,MMPointInRect 包含边框
14 | BOOL MMPointInRect(NSPoint aPoint, NSRect aRect);
15 |
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Kit/MMTool.m:
--------------------------------------------------------------------------------
1 | //
2 | // MMTool.m
3 | // Bob
4 | //
5 | // Created by ripper on 2019/12/19.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import "MMTool.h"
10 |
11 | BOOL MMPointInRect(NSPoint aPoint, NSRect aRect) {
12 | if (aPoint.x >= aRect.origin.x &&
13 | aPoint.y >= aRect.origin.y &&
14 | aPoint.x <= aRect.origin.x + aRect.size.width &&
15 | aPoint.y <= aRect.origin.y + aRect.size.height) {
16 | return YES;
17 | }
18 | return NO;
19 | }
20 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Log/MMConsoleLogFormatter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMConsoleLogFormatter.h
3 | // ExampleDevelop
4 | //
5 | // Created by ripper on 2019/6/19.
6 | // Copyright © 2019 picooc. All rights reserved.
7 | //
8 |
9 | #import
10 | @import CocoaLumberjack;
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MMConsoleLogFormatter : NSObject
15 |
16 | - (NSString *)logMessageEmoji:(DDLogMessage *)logMessage;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/MMKit/Log/MMFileLogFormatter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MMFileLogFormatter.h
3 | // Bob
4 | //
5 | // Created by ripper on 2019/6/14.
6 | // Copyright © 2019 ripperhe. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "MMConsoleLogFormatter.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface MMFileLogFormatter : MMConsoleLogFormatter
15 |
16 | @end
17 |
18 | NS_ASSUME_NONNULL_END
19 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Apple/EZAppleService.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZAppleService.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/29.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZQueryService.h"
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZAppleService : EZQueryService
15 |
16 | + (instancetype)shared;
17 |
18 | - (EZLanguage)languageEnumFromAppleLanguage:(NLLanguage)appleLanguage;
19 | - (NLLanguage)appleLanguageFromLanguageEnum:(EZLanguage)lang;
20 |
21 | - (NSSpeechSynthesizer *)playTextAudio:(NSString *)text textLanguage:(EZLanguage)fromLanguage;
22 |
23 | - (EZLanguage)detectText:(NSString *)text;
24 |
25 | @end
26 |
27 | NS_ASSUME_NONNULL_END
28 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Baidu/EZBaiduTranslate.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZBaiduService.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/30.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZQueryService.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZBaiduTranslate : EZQueryService
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Bing/EZBingLookupModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // EZBingLookupModel.m
3 | // Easydict
4 | //
5 | // Created by choykarl on 2023/8/10.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZBingLookupModel.h"
10 |
11 | @implementation EZBingLookupBackTranslationsModel
12 |
13 | @end
14 |
15 | @implementation EZBingLookupTranslationsModel
16 | + (NSDictionary *)mj_objectClassInArray {
17 | return @{
18 | @"backTranslations": [EZBingLookupBackTranslationsModel class]
19 | };
20 | }
21 |
22 | @end
23 |
24 | @implementation EZBingLookupModel
25 | + (NSDictionary *)mj_objectClassInArray {
26 | return @{
27 | @"translations": [EZBingLookupTranslationsModel class]
28 | };
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Bing/EZBingService.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZBingService.h
3 | // Easydict
4 | //
5 | // Created by choykarl on 2023/8/8.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZQueryService.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZBingService : EZQueryService
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/DeepL/EZDeepLTranslate.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZDeepLTranslate.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/7.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZQueryService.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZDeepLTranslate : EZQueryService
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/DeepL/EZQueryResult+EZDeepLTranslateResponse.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZQueryResult+EZDeepLTranslateResponse.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/2/23.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZQueryResult.h"
10 | #import "EZDeepLTranslateResponse.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZQueryResult (EZDeepLTranslateResponse)
15 |
16 | - (instancetype)setupWithDeepLTranslateResponse:(EZDeepLTranslateResponse *)deepLTranslateResponse;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Google/EZGoogleTranslate.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZGoogleTranslate.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/1.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZQueryService.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZGoogleTranslate : EZQueryService
14 |
15 | @property (nonatomic, assign) BOOL isCN;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Model/EZOCRResult.m:
--------------------------------------------------------------------------------
1 | //
2 | // EZOCRResult.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/30.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZOCRResult.h"
10 |
11 | @implementation EZOCRText
12 |
13 | @end
14 |
15 |
16 | @implementation EZOCRResult
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Niutrans/EZNiuTransTranslate.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZNiuTransTranslate.h
3 | // Easydict
4 | //
5 | // Created by BigGuang97 on 2023/11/23.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZQueryService.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZNiuTransTranslate : EZQueryService
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/Niutrans/EZNiuTransTranslateResponse.m:
--------------------------------------------------------------------------------
1 | //
2 | // EZNiuTransTranslateResponse.m
3 | // Easydict
4 | //
5 | // Created by BigGuang97 on 2023/11/23.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZNiuTransTranslateResponse.h"
10 |
11 | @implementation EZNiuTransTranslateResponse
12 |
13 | + (NSDictionary *)mj_replacedKeyFromPropertyName {
14 | return @{
15 | @"srcText" : @"src_text",
16 | @"tgtText" : @"tgt_text",
17 | @"errorMsg" : @"error_msg",
18 | @"errorCode" : @"error_code",
19 | };
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Easydict/objc/Service/WebViewTranslator/EZURLSchemeHandler.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZURLSchemeHandler.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/8.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZURLSchemeHandler : NSObject
15 |
16 | - (void)monitorBaseURLString:(NSString *)url completionHandler:(nullable void (^)(NSURLResponse *_Nonnull response, id _Nullable responseObject, NSError *_Nullable error))completionHandler;
17 |
18 | - (void)removeMonitorBaseURLString:(NSString *)url;
19 | - (BOOL)containsMonitorBaseURLString:(NSString *)url;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Easydict/objc/StatusItem/EZRightClickDetector.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZRightClickDetector.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/18.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | // Ref: https://stackoverflow.com/questions/32188581/call-action-when-nsstatusbarbutton-is-right-clicked
14 | @interface EZRightClickDetector : NSView
15 |
16 | @property (copy) void (^onRightMouseClicked)(NSEvent *);
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/StatusItem/EZRightClickDetector.m:
--------------------------------------------------------------------------------
1 | //
2 | // EZRightClickDetector.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/18.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZRightClickDetector.h"
10 |
11 | @implementation EZRightClickDetector
12 |
13 | - (void)rightMouseUp:(NSEvent *)theEvent {
14 | if (self.onRightMouseClicked) {
15 | self.onRightMouseClicked(theEvent);
16 | }
17 | }
18 |
19 | - (void)drawRect:(NSRect)dirtyRect {
20 | [super drawRect:dirtyRect];
21 |
22 | // Drawing code here.
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZAudioUtils/EZAudioUtils.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZAudioUtils.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/3/30.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZAudioUtils : NSObject
14 |
15 | /// Get system volume, [0, 100]
16 | + (float)getSystemVolume;
17 |
18 | /// Set system volume, [0, 100]
19 | + (void)setSystemVolume:(float)volume;
20 |
21 | + (void)getPlayingSongInfo;
22 |
23 | + (void)isPlayingAudio:(void(^)(BOOL isPlaying))completion;
24 |
25 | @end
26 |
27 | NS_ASSUME_NONNULL_END
28 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSArray+EZChineseText.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+EZChineseText.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/5/4.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSArray (EZChineseText)
14 |
15 | /// Convert translated results to Traditional Chinese manually. 开门 --> 開門
16 | - (NSArray *)toTraditionalChineseTexts;
17 |
18 | /// Convert translated results to Simplified Chinese manually. 開門 --> 开门
19 | - (NSArray *)toSimplifiedChineseTexts;
20 |
21 | - (NSArray *)removeExtraLineBreaks;
22 |
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSData+MD5/NSData+EZMD5.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSData+EZMD5.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/5/2.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSData (EZMD5)
14 |
15 | - (NSData *)md5;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSImage/NSImage+EZResize.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSImage+EZResize.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/24.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSImage (EZResize)
14 |
15 | - (NSImage *)resizeToSize:(CGSize)size;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSImage/NSImage+EZResize.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSImage+EZResize.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/24.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "NSImage+EZResize.h"
10 |
11 | @implementation NSImage (EZResize)
12 |
13 | - (NSImage *)resizeToSize:(NSSize)size {
14 | NSImage *image = [[NSImage alloc] initWithSize:size];
15 | [image lockFocus];
16 | [self drawInRect:NSMakeRect(0, 0, size.width, size.height)
17 | fromRect:NSZeroRect
18 | operation:NSCompositingOperationSourceOver
19 | fraction:1.0];
20 | [image unlockFocus];
21 | return image;
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSImage/NSImage+EZSymbolmage.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSImage+EZSymbolmage.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/23.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSImage (EZSymbolmage)
14 |
15 | + (NSImage *)ez_imageWithSymbolName:(NSString *)name;
16 |
17 | + (NSImage *)ez_imageWithSymbolName:(NSString *)name size:(CGSize)size scale:(NSImageSymbolScale)scale;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSObject+DarkMode/NSObject+EZDarkMode.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+EZDarkMode.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/7.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSObject (EZDarkMode)
14 |
15 | @property (nonatomic, readonly) BOOL isDarkMode;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSObject+DarkMode/NSObject+EZDarkMode.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+EZDarkMode.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/7.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "NSObject+EZDarkMode.h"
10 |
11 | @implementation NSObject (EZDarkMode)
12 |
13 | - (BOOL)isDarkMode {
14 | NSAppearance *apperance = NSApp.effectiveAppearance;
15 | if (@available(macOS 10.14, *)) {
16 | return [apperance bestMatchFromAppearancesWithNames:@[NSAppearanceNameDarkAqua, NSAppearanceNameAqua]] == NSAppearanceNameDarkAqua;
17 | }
18 | return NO;
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSObject+EZWindowType.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+EZWindowType.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/24.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZLayoutManager.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface NSObject (EZWindowType)
15 |
16 | @property (nonatomic, assign) EZWindowType associatedWindowType;
17 |
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSObject+EZWindowType.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+EZWindowType.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/24.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "NSObject+EZWindowType.h"
10 |
11 | static NSString *_EZWindowTypeKey = @"EZWindowTypeKey";
12 |
13 | @implementation NSObject (EZWindowType)
14 |
15 | - (void)setAssociatedWindowType:(EZWindowType)windowType {
16 | objc_setAssociatedObject(self, (__bridge const void *)(_EZWindowTypeKey), @(windowType), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
17 | }
18 |
19 | - (EZWindowType)associatedWindowType {
20 | return [objc_getAssociatedObject(self, (__bridge const void *)(_EZWindowTypeKey)) integerValue];
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSString/NSString+EZRegex.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+EZRegex.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/9/5.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSString (EZRegex)
14 |
15 | /// Get string value from HTML string with pattern.
16 | - (nullable NSString *)getStringValueWithPattern:(NSString *)pattern;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSTextView+Height/NSTextView+Height.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSTextView+AutoHeight.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/7.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSTextView (Height)
14 |
15 | - (CGSize)ez_getTextViewSize;
16 |
17 | /// One line height
18 | - (CGFloat)ez_getTextViewHeight;
19 |
20 | - (CGFloat)ez_getTextViewHeightDesignatedWidth:(CGFloat)width;
21 |
22 |
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSView+AnimatedHidden/NSView+EZAnimatedHidden.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+EZHiddenWithAnimation.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/10.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSView (EZAnimatedHidden)
14 |
15 | - (void)setAnimatedHidden:(BOOL)hidden;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSView+EZGetViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+EZGetViewController.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/21.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSView (EZGetViewController)
14 |
15 | - (NSViewController *)ez_getViewController;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSView+EZGetViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+EZGetViewController.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/21.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "NSView+EZGetViewController.h"
10 |
11 | @implementation NSView (EZGetViewController)
12 |
13 | - (NSViewController *)ez_getViewController {
14 | NSResponder *responder = self;
15 | while (responder) {
16 | if ([responder isKindOfClass:[NSViewController class]]) {
17 | return (NSViewController *)responder;
18 | }
19 | responder = responder.nextResponder;
20 | }
21 | return nil;
22 | }
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSViewController+EZWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSViewController+EZWindow.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/19.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSViewController (EZWindow)
14 |
15 | - (nullable NSWindow *)window;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZCategory/NSViewController+EZWindow.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSViewController+EZWindow.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/19.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "NSViewController+EZWindow.h"
10 |
11 | @implementation NSViewController (EZWindow)
12 |
13 | - (nullable NSWindow *)window {
14 | NSResponder *responder = self;
15 | while ((responder = [responder nextResponder])) {
16 | if ([responder isKindOfClass:[NSWindow class]]) {
17 | return (NSWindow *)responder;
18 | }
19 | }
20 | return nil;
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/EZDeviceSystemInfo/EZDeviceSystemInfo.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZDeviceSystemInfo.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/7/12.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZDeviceSystemInfo : NSObject
14 |
15 | + (NSDictionary *)getDeviceSystemInfo;
16 |
17 | /// Get system version, eg 14.0.0
18 | + (NSString *)getSystemVersion;
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/PrintBeautifulLog/PrintBeautifulLog.h:
--------------------------------------------------------------------------------
1 | //
2 | // PrintBeautifulLog.h
3 | // PrintBeautifulLog
4 | //
5 | // Created by 石学谦 on 2018/9/14.
6 | // Copyright © 2018年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
--------------------------------------------------------------------------------
/Easydict/objc/Utility/SystemUtility/EZSystemUtility.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZSystemUtility.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/10/15.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZSystemUtility : NSObject
14 |
15 | #pragma mark - Simulate Key Event
16 |
17 | + (void)postCopyEvent;
18 | + (void)postPasteEvent;
19 |
20 | + (void)postKeyboardEvent:(CGEventFlags)flags virtualKey:(CGKeyCode)virtualKey keyDown:(bool)keyDown;
21 |
22 | #pragma mark -
23 |
24 | + (BOOL)isSelectedTextEditable;
25 |
26 | + (NSString *)getLastPasteboardText;
27 |
28 | @end
29 |
30 |
31 | NS_ASSUME_NONNULL_END
32 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Cell/EZSelectLanguageCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZSelectLanguageCell.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/22.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZLanguageManager.h"
11 | #import "EZQueryModel.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface EZSelectLanguageCell : NSTableRowView
16 |
17 | @property (nonatomic, strong) EZQueryModel *queryModel;
18 |
19 | @property (nonatomic, copy) void (^enterActionBlock)(EZLanguage from, EZLanguage to);
20 |
21 | - (void)toggleTranslationLanguages;
22 |
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Cell/EZTableRowView.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZResultRowView.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/29.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZTableRowView : NSTableRowView
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Cell/EZTableRowView.m:
--------------------------------------------------------------------------------
1 | //
2 | // EZResultRowView.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/29.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZTableRowView.h"
10 |
11 | @implementation EZTableRowView
12 |
13 | - (void)drawRect:(NSRect)dirtyRect {
14 | [super drawRect:dirtyRect];
15 |
16 | // Drawing code here.
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Model/EZServiceInfo.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZServiceInfo.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/22.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZServiceTypes.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZServiceInfo : NSObject
15 |
16 | @property (nonatomic, strong) NSString *uuid;
17 | @property (nonatomic, assign) EZServiceType type;
18 | @property (nonatomic, assign) BOOL enabled;
19 | @property (nonatomic, assign) BOOL enabledQuery;
20 | @property (nonatomic, assign) EZWindowType windowType;
21 |
22 | + (instancetype)serviceInfoWithService:(EZQueryService *)service;
23 |
24 | @end
25 |
26 | NS_ASSUME_NONNULL_END
27 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Model/EZServiceInfo.m:
--------------------------------------------------------------------------------
1 | //
2 | // EZServiceInfo.m
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/22.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZServiceInfo.h"
10 |
11 | @implementation EZServiceInfo
12 |
13 | + (instancetype)serviceInfoWithService:(EZQueryService *)service {
14 | EZServiceInfo *serviceInfo = [[EZServiceInfo alloc] init];
15 | serviceInfo.type = service.serviceType;
16 | serviceInfo.enabled = service.enabled;
17 | serviceInfo.enabledQuery = service.enabledQuery;
18 | serviceInfo.windowType = service.windowType;
19 | serviceInfo.uuid = service.uuid;
20 | return serviceInfo;
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CommonView/EZCommonView.h:
--------------------------------------------------------------------------------
1 | //
2 | // EDAudioView.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/8.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZCommonView : NSView
14 |
15 | @property (nonatomic, copy, readonly) NSString *copiedText;
16 |
17 | @property (nonatomic, strong) NSButton *audioButton;
18 | @property (nonatomic, strong) NSButton *textCopyButton;
19 |
20 | @property (nonatomic, copy) void (^playAudioBlock)(NSString *text);
21 | @property (nonatomic, copy) void (^copyTextBlock)(NSString *text);
22 |
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CustomButton/BlueTextButton/EZBlueTextButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZBlueTextButton.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/13.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZHoverButton.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZBlueTextButton : EZHoverButton
14 |
15 | @property (nonatomic, assign) CGFloat expandValue; // default is 5.
16 |
17 | @property (nonatomic, copy, nullable) NSString *openURL;
18 | @property (nonatomic, assign) BOOL closeWindowAfterOpeningURL;
19 |
20 | @property (nonatomic, assign) CGFloat fontSize;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CustomButton/EZAudioButton/EZAudioButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZAudioButton.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/23.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZHoverButton.h"
10 | #import "EZAudioPlayer.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZAudioButton : EZHoverButton
15 |
16 | @property (nonatomic, strong) EZAudioPlayer *audioPlayer;
17 |
18 | @property (nonatomic, copy) void (^playAudioBlock)(void);
19 |
20 | @property (nonatomic, copy) void (^playStatus)(BOOL isPlaying, EZAudioButton *audioButton);
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CustomButton/EZCopyButton/EZCopyButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZCopyButton.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/24.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZHoverButton.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZCopyButton : EZHoverButton
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CustomButton/EZHoverButton/EZHoverButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // HoverButton.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/5.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZButton.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | /// An button that show round corner and highlight background color when hover button automatically.
15 | @interface EZHoverButton : EZButton
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CustomButton/EZReplaceTextButton/EZReplaceTextButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZReplaceTextButton.h
3 | //
4 | //
5 | // Created by tisfeng on 2023/10/13.
6 | //
7 |
8 | #import "EZHoverButton.h"
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface EZReplaceTextButton : EZHoverButton
13 |
14 | - (void)replaceSelectedText:(NSString *)replacementString;
15 |
16 | @end
17 |
18 | NS_ASSUME_NONNULL_END
19 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CustomButton/EZSymbolImageButton/EZSymbolImageButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZSymbolImageButton.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/4/24.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import "EZHoverButton.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZSymbolImageButton : EZHoverButton
14 |
15 | + (instancetype)buttonWithSybolImageName:(NSString *)sybolImageName;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/CustomButton/LanguageButton/EZDetectLanguageButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZDetectLanguageButton.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/1.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import "EZButton.h"
10 | #import "EZLanguageManager.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZDetectLanguageButton : EZButton
15 |
16 | @property (nonatomic, copy) EZLanguage detectedLanguage;
17 | @property (nonatomic, assign) BOOL showAutoLanguage;
18 |
19 | @property (nonatomic, copy) void (^menuItemSeletedBlock)(EZLanguage selectedLanguage);
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/EZLabel/EZMyLabel.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZMyLabel.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/12/13.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZMyLabel : NSTextField
14 |
15 | @property (nonatomic, assign) CGFloat characterSpacing;
16 | @property (nonatomic, assign) CGFloat lineSpacing;
17 | @property (nonatomic, assign) CGFloat paragraphSpacing;
18 |
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/EZQueryMenuTextView/EZQueryMenuTextView.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZQueryMenuTextView.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/10/17.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZQueryMenuTextView : NSTextView
14 |
15 | - (void)queryInApp:(id)sender;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/EZWrapView/EZWrapView.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZWrapView.h
3 | // Easydict
4 | //
5 | // Created by choykarl on 2023/11/28.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZWrapView : NSView
14 | @property (nonatomic, assign) CGFloat spacing;
15 | @property (nonatomic, assign) CGFloat runSpacing;
16 | @end
17 |
18 | NS_ASSUME_NONNULL_END
19 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/LoadingAnimationView/EZLoadingAnimationView.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZLoadingAnimationView.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2023/1/8.
6 | // Copyright © 2023 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZLoadingAnimationView : NSView
14 |
15 | - (void)startLoading:(BOOL)isLoading;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/View/Titlebar/EZTitleBarMoveView.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZTitleBarMoveView.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/21.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface EZTitleBarMoveView : NSView
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Window/FixedQueryWindow/EZFixedQueryWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // MainWindow.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/3.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZBaseQueryWindow.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | /// Fixed window alway show at the designated position, and it will keep previous query result. It can be resized window size.
15 | @interface EZFixedQueryWindow : EZBaseQueryWindow
16 |
17 | + (instancetype)shared;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Window/MainQueryWindow/EZMainQueryWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZMainQueryWindow.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/19.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZBaseQueryWindow.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZMainQueryWindow : EZBaseQueryWindow
15 |
16 | @property (class, assign, readonly) BOOL isAlive;
17 |
18 | + (instancetype)shared;
19 | + (void)destroySharedInstance;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Window/MiniQueryWindow/EZMiniQueryWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZMiniQueryWindow.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/19.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZBaseQueryWindow.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 |
15 | /// Mini window alway show at the mouse location, it won't keep previous query result and can't be resized window size.
16 | @interface EZMiniQueryWindow : EZBaseQueryWindow
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Window/PopButtonWindow/EZPopButtonViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZSelectTextPopViewController.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/17.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZButton.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZPopButtonViewController : NSViewController
15 |
16 | @property (nonatomic, strong) EZButton *popButton;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/Easydict/objc/ViewController/Window/PopButtonWindow/EZPopButtonWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // EZSelectTextPopWindow.h
3 | // Easydict
4 | //
5 | // Created by tisfeng on 2022/11/17.
6 | // Copyright © 2022 izual. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "EZButton.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface EZPopButtonWindow : NSWindow
15 |
16 | @property (nonatomic, strong) EZButton *popButton;
17 |
18 | + (instancetype)shared;
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 | gem 'cocoapods', '1.14.2'
3 |
--------------------------------------------------------------------------------
/Icon
:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Icon
--------------------------------------------------------------------------------
/Pods/KVOController/FBKVOController/KVOController.h:
--------------------------------------------------------------------------------
1 | /**
2 | Copyright (c) 2014-present, Facebook, Inc.
3 | All rights reserved.
4 |
5 | This source code is licensed under the BSD-style license found in the
6 | LICENSE file in the root directory of this source tree. An additional grant
7 | of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 | #import
12 |
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/MASCompositeConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASCompositeConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASConstraint.h"
10 | #import "MASUtilities.h"
11 |
12 | /**
13 | * A group of MASConstraint objects
14 | */
15 | @interface MASCompositeConstraint : MASConstraint
16 |
17 | /**
18 | * Creates a composite with a predefined array of children
19 | *
20 | * @param children child MASConstraints
21 | *
22 | * @return a composite constraint
23 | */
24 | - (id)initWithChildren:(NSArray *)children;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/MASLayoutConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * When you are debugging or printing the constraints attached to a view this subclass
13 | * makes it easier to identify which constraints have been created via Masonry
14 | */
15 | @interface MASLayoutConstraint : NSLayoutConstraint
16 |
17 | /**
18 | * a key to associate with this constraint
19 | */
20 | @property (nonatomic, strong) id mas_key;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/MASLayoutConstraint.m:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.m
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASLayoutConstraint.h"
10 |
11 | @implementation MASLayoutConstraint
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+MASDebugAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * makes debug and log output of NSLayoutConstraints more readable
13 | */
14 | @interface NSLayoutConstraint (MASDebugAdditions)
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSArray+RACSequenceAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+RACSequenceAdditions.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class RACSequence<__covariant ValueType>;
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface NSArray<__covariant ObjectType> (RACSequenceAdditions)
16 |
17 | /// Creates and returns a sequence corresponding to the receiver.
18 | ///
19 | /// Mutating the receiver will not affect the sequence after it's been created.
20 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSArray+RACSequenceAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+RACSequenceAdditions.m
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import "NSArray+RACSequenceAdditions.h"
10 | #import "RACArraySequence.h"
11 |
12 | @implementation NSArray (RACSequenceAdditions)
13 |
14 | - (RACSequence *)rac_sequence {
15 | return [RACArraySequence sequenceWithArray:self offset:0];
16 | }
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSEnumerator+RACSequenceAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSEnumerator+RACSequenceAdditions.h
3 | // ReactiveObjC
4 | //
5 | // Created by Uri Baghin on 07/01/2013.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class RACSequence<__covariant ValueType>;
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface NSEnumerator (RACSequenceAdditions)
16 |
17 | /// Creates and returns a sequence corresponding to the receiver.
18 | ///
19 | /// The receiver is exhausted lazily as the sequence is enumerated.
20 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSEnumerator+RACSequenceAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSEnumerator+RACSequenceAdditions.m
3 | // ReactiveObjC
4 | //
5 | // Created by Uri Baghin on 07/01/2013.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "NSEnumerator+RACSequenceAdditions.h"
10 | #import "RACSequence.h"
11 |
12 | @implementation NSEnumerator (RACSequenceAdditions)
13 |
14 | - (RACSequence *)rac_sequence {
15 | return [RACSequence sequenceWithHeadBlock:^{
16 | return [self nextObject];
17 | } tailBlock:^{
18 | return self.rac_sequence;
19 | }];
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSFileHandle+RACSupport.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSFileHandle+RACSupport.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 5/10/12.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class RACSignal<__covariant ValueType>;
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface NSFileHandle (RACSupport)
16 |
17 | // Read any available data in the background and send it. Completes when data
18 | // length is <= 0.
19 | - (RACSignal *)rac_readInBackground;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSIndexSet+RACSequenceAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSIndexSet+RACSequenceAdditions.m
3 | // ReactiveObjC
4 | //
5 | // Created by Sergey Gavrilyuk on 12/17/13.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "NSIndexSet+RACSequenceAdditions.h"
10 | #import "RACIndexSetSequence.h"
11 |
12 | @implementation NSIndexSet (RACSequenceAdditions)
13 |
14 | - (RACSequence *)rac_sequence {
15 | return [RACIndexSetSequence sequenceWithIndexSet:self];
16 | }
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSNotificationCenter+RACSupport.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSNotificationCenter+RACSupport.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 5/10/12.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class RACSignal<__covariant ValueType>;
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface NSNotificationCenter (RACSupport)
16 |
17 | // Sends the NSNotification every time the notification is posted.
18 | - (RACSignal *)rac_addObserverForName:(nullable NSString *)notificationName object:(nullable id)object;
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSObject+RACDescription.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+RACDescription.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-05-13.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | // A simplified description of the object, which does not invoke -description
12 | // (and thus should be much faster in many cases).
13 | //
14 | // This is for debugging purposes only, and will return a constant string
15 | // unless the RAC_DEBUG_SIGNAL_NAMES environment variable is set.
16 | NSString *RACDescription(id object);
17 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSOrderedSet+RACSequenceAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSOrderedSet+RACSequenceAdditions.m
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import "NSOrderedSet+RACSequenceAdditions.h"
10 | #import "NSArray+RACSequenceAdditions.h"
11 |
12 | @implementation NSOrderedSet (RACSequenceAdditions)
13 |
14 | - (RACSequence *)rac_sequence {
15 | // TODO: First class support for ordered set sequences.
16 | return self.array.rac_sequence;
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSSet+RACSequenceAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSSet+RACSequenceAdditions.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class RACSequence<__covariant ValueType>;
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface NSSet<__covariant ObjectType> (RACSequenceAdditions)
16 |
17 | /// Creates and returns a sequence corresponding to the receiver.
18 | ///
19 | /// Mutating the receiver will not affect the sequence after it's been created.
20 | @property (nonatomic, copy, readonly) RACSequence *rac_sequence;
21 |
22 | @end
23 |
24 | NS_ASSUME_NONNULL_END
25 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSSet+RACSequenceAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSSet+RACSequenceAdditions.m
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import "NSSet+RACSequenceAdditions.h"
10 | #import "NSArray+RACSequenceAdditions.h"
11 |
12 | @implementation NSSet (RACSequenceAdditions)
13 |
14 | - (RACSequence *)rac_sequence {
15 | // TODO: First class support for set sequences.
16 | return self.allObjects.rac_sequence;
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSString+RACSequenceAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+RACSequenceAdditions.m
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import "NSString+RACSequenceAdditions.h"
10 | #import "RACStringSequence.h"
11 |
12 | @implementation NSString (RACSequenceAdditions)
13 |
14 | - (RACSequence *)rac_sequence {
15 | return [RACStringSequence sequenceWithString:self offset:0];
16 | }
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/NSText+RACSignalSupport.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSText+RACSignalSupport.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-03-08.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class RACSignal<__covariant ValueType>;
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface NSText (RACSignalSupport)
16 |
17 | /// Returns a signal which sends the current `string` of the receiver, then the
18 | /// new value any time it changes.
19 | - (RACSignal *)rac_textSignal;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACAnnotations.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACAnnotations.h
3 | // ReactiveObjC
4 | //
5 | // Created by Eric Horacek on 3/31/17.
6 | // Copyright © 2017 GitHub. All rights reserved.
7 | //
8 |
9 | #ifndef RAC_WARN_UNUSED_RESULT
10 | #define RAC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
11 | #endif
12 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACArraySequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACArraySequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import "RACSequence.h"
10 |
11 | // Private class that adapts an array to the RACSequence interface.
12 | @interface RACArraySequence : RACSequence
13 |
14 | // Returns a sequence for enumerating over the given array, starting from the
15 | // given offset. The array will be copied to prevent mutation.
16 | + (RACSequence *)sequenceWithArray:(NSArray *)array offset:(NSUInteger)offset;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACBehaviorSubject.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACBehaviorSubject.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 3/16/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSubject.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// A behavior subject sends the last value it received when it is subscribed to.
14 | @interface RACBehaviorSubject : RACSubject
15 |
16 | /// Creates a new behavior subject with a default value. If it hasn't received
17 | /// any values when it gets subscribed to, it sends the default value.
18 | + (instancetype)behaviorSubjectWithDefaultValue:(nullable ValueType)value;
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACCompoundDisposableProvider.d:
--------------------------------------------------------------------------------
1 | provider RACCompoundDisposable {
2 | probe added(char *compoundDisposable, char *disposable, long newTotal);
3 | probe removed(char *compoundDisposable, char *disposable, long newTotal);
4 | };
5 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACDynamicSignal.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACDynamicSignal.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-10-10.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSignal.h"
10 |
11 | // A private `RACSignal` subclasses that implements its subscription behavior
12 | // using a block.
13 | @interface RACDynamicSignal : RACSignal
14 |
15 | + (RACSignal *)createSignal:(RACDisposable * (^)(id subscriber))didSubscribe;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACEagerSequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACEagerSequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Uri Baghin on 02/01/2013.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACArraySequence.h"
10 |
11 | // Private class that implements an eager sequence.
12 | @interface RACEagerSequence : RACArraySequence
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACEmptySequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACEmptySequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import "RACSequence.h"
10 |
11 | // Private class representing an empty sequence.
12 | @interface RACEmptySequence : RACSequence
13 |
14 | + (RACEmptySequence *)empty;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACEmptySignal.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACEmptySignal.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-10-10.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSignal.h"
10 |
11 | // A private `RACSignal` subclasses that synchronously sends completed to any
12 | // subscribers.
13 | @interface RACEmptySignal<__covariant ValueType> : RACSignal
14 |
15 | + (RACSignal *)empty;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACErrorSignal.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACErrorSignal.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-10-10.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSignal.h"
10 |
11 | // A private `RACSignal` subclass that synchronously sends an error to any
12 | // subscriber.
13 | @interface RACErrorSignal : RACSignal
14 |
15 | + (RACSignal *)error:(NSError *)error;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACGroupedSignal.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACGroupedSignal.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 5/2/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSubject.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// A grouped signal is used by -[RACSignal groupBy:transform:].
14 | @interface RACGroupedSignal : RACSubject
15 |
16 | /// The key shared by the group.
17 | @property (nonatomic, readonly, copy) id key;
18 |
19 | + (instancetype)signalWithKey:(id)key;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACGroupedSignal.m:
--------------------------------------------------------------------------------
1 | //
2 | // RACGroupedSignal.m
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 5/2/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACGroupedSignal.h"
10 |
11 | @interface RACGroupedSignal ()
12 | @property (nonatomic, copy) id key;
13 | @end
14 |
15 | @implementation RACGroupedSignal
16 |
17 | #pragma mark API
18 |
19 | + (instancetype)signalWithKey:(id)key {
20 | RACGroupedSignal *subject = [self subject];
21 | subject.key = key;
22 | return subject;
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACImmediateScheduler.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACImmediateScheduler.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 11/30/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACScheduler.h"
10 |
11 | // A private scheduler which immediately executes its scheduled blocks.
12 | @interface RACImmediateScheduler : RACScheduler
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACIndexSetSequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACIndexSetSequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Sergey Gavrilyuk on 12/18/13.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSequence.h"
10 |
11 | // Private class that adapts an array to the RACSequence interface.
12 | @interface RACIndexSetSequence : RACSequence
13 |
14 | + (RACSequence *)sequenceWithIndexSet:(NSIndexSet *)indexSet;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACMulticastConnection+Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACMulticastConnection+Private.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 4/11/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACMulticastConnection.h"
10 |
11 | @class RACSubject;
12 |
13 | @interface RACMulticastConnection<__covariant ValueType> ()
14 |
15 | - (instancetype)initWithSourceSignal:(RACSignal *)source subject:(RACSubject *)subject;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACQueueScheduler.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACQueueScheduler.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 11/30/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACScheduler.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// An abstract scheduler which asynchronously enqueues all its work to a Grand
14 | /// Central Dispatch queue.
15 | ///
16 | /// Because RACQueueScheduler is abstract, it should not be instantiated
17 | /// directly. Create a subclass using the `RACQueueScheduler+Subclass.h`
18 | /// interface and use that instead.
19 | @interface RACQueueScheduler : RACScheduler
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACReturnSignal.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACReturnSignal.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-10-10.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSignal.h"
10 |
11 | // A private `RACSignal` subclasses that synchronously sends a value to any
12 | // subscribers, then completes.
13 | @interface RACReturnSignal<__covariant ValueType> : RACSignal
14 |
15 | + (RACSignal *)return:(ValueType)value;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACScopedDisposable.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACScopedDisposable.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 3/28/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACDisposable.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// A disposable that calls its own -dispose when it is dealloc'd.
14 | @interface RACScopedDisposable : RACDisposable
15 |
16 | /// Creates a new scoped disposable that will also dispose of the given
17 | /// disposable when it is dealloc'd.
18 | + (instancetype)scopedDisposableWithDisposable:(RACDisposable *)disposable;
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACScopedDisposable.m:
--------------------------------------------------------------------------------
1 | //
2 | // RACScopedDisposable.m
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 3/28/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACScopedDisposable.h"
10 |
11 | @implementation RACScopedDisposable
12 |
13 | #pragma mark Lifecycle
14 |
15 | + (instancetype)scopedDisposableWithDisposable:(RACDisposable *)disposable {
16 | return [self disposableWithBlock:^{
17 | [disposable dispose];
18 | }];
19 | }
20 |
21 | - (void)dealloc {
22 | [self dispose];
23 | }
24 |
25 | #pragma mark RACDisposable
26 |
27 | - (RACScopedDisposable *)asScopedDisposable {
28 | // totally already are
29 | return self;
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACSignalProvider.d:
--------------------------------------------------------------------------------
1 | provider RACSignal {
2 | probe next(char *signal, char *subscriber, char *valueDescription);
3 | probe completed(char *signal, char *subscriber);
4 | probe error(char *signal, char *subscriber, char *errorDescription);
5 | };
6 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACSignalSequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACSignalSequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-11-09.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSequence.h"
10 |
11 | @class RACSignal<__covariant ValueType>;
12 |
13 | // Private class that adapts a RACSignal to the RACSequence interface.
14 | @interface RACSignalSequence : RACSequence
15 |
16 | // Returns a sequence for enumerating over the given signal.
17 | + (RACSequence *)sequenceWithSignal:(RACSignal *)signal;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACStringSequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACStringSequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2012-10-29.
6 | // Copyright (c) 2012 GitHub. All rights reserved.
7 | //
8 |
9 | #import "RACSequence.h"
10 |
11 | // Private class that adapts a string to the RACSequence interface.
12 | @interface RACStringSequence : RACSequence
13 |
14 | // Returns a sequence for enumerating over the given string, starting from the
15 | // given character offset. The string will be copied to prevent mutation.
16 | + (RACSequence *)sequenceWithString:(NSString *)string offset:(NSUInteger)offset;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACSubscriber+Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACSubscriber+Private.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-06-13.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSubscriber.h"
10 |
11 | // A simple block-based subscriber.
12 | @interface RACSubscriber : NSObject
13 |
14 | // Creates a new subscriber with the given blocks.
15 | + (instancetype)subscriberWithNext:(void (^)(id x))next error:(void (^)(NSError *error))error completed:(void (^)(void))completed;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACSubscriptionScheduler.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACSubscriptionScheduler.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 11/30/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACScheduler.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | // A private scheduler used only for subscriptions. See the private
14 | // +[RACScheduler subscriptionScheduler] method for more information.
15 | @interface RACSubscriptionScheduler : RACScheduler
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACTupleSequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACTupleSequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-05-01.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSequence.h"
10 |
11 | // Private class that adapts a RACTuple to the RACSequence interface.
12 | @interface RACTupleSequence : RACSequence
13 |
14 | // Returns a sequence for enumerating over the given backing array (from a
15 | // RACTuple), starting from the given offset.
16 | + (RACSequence *)sequenceWithTupleBackingArray:(NSArray *)backingArray offset:(NSUInteger)offset;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACUnarySequence.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACUnarySequence.h
3 | // ReactiveObjC
4 | //
5 | // Created by Justin Spahr-Summers on 2013-05-01.
6 | // Copyright (c) 2013 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACSequence.h"
10 |
11 | // Private class representing a sequence of exactly one value.
12 | @interface RACUnarySequence : RACSequence
13 |
14 | + (RACUnarySequence *)return:(id)value;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACUnit.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACUnit.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 3/27/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// A unit represents an empty value.
14 | ///
15 | /// It should never be necessary to create a unit yourself. Just use +defaultUnit.
16 | @interface RACUnit : NSObject
17 |
18 | /// A singleton instance.
19 | + (RACUnit *)defaultUnit;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACUnit.m:
--------------------------------------------------------------------------------
1 | //
2 | // RACUnit.m
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 3/27/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import "RACUnit.h"
10 |
11 | @implementation RACUnit
12 |
13 | #pragma mark API
14 |
15 | + (RACUnit *)defaultUnit {
16 | static dispatch_once_t onceToken;
17 | static RACUnit *defaultUnit = nil;
18 | dispatch_once(&onceToken, ^{
19 | defaultUnit = [[self alloc] init];
20 | });
21 |
22 | return defaultUnit;
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Pods/ReactiveObjC/ReactiveObjC/RACValueTransformer.h:
--------------------------------------------------------------------------------
1 | //
2 | // RACValueTransformer.h
3 | // ReactiveObjC
4 | //
5 | // Created by Josh Abernathy on 3/6/12.
6 | // Copyright (c) 2012 GitHub, Inc. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | // A private block based transformer.
12 | @interface RACValueTransformer : NSValueTransformer
13 |
14 | + (instancetype)transformerWithBlock:(id (^)(id value))block;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Pods/SwiftFormat/CommandLineTool/swiftformat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Pods/SwiftFormat/CommandLineTool/swiftformat
--------------------------------------------------------------------------------
/Pods/SwiftLint/swiftlint:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tisfeng/Easydict/415f826fdbbdd373e8a5ebb73c7710d81c619b76/Pods/SwiftLint/swiftlint
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_AFNetworking : NSObject
3 | @end
4 | @implementation PodsDummy_AFNetworking
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #ifndef TARGET_OS_IOS
14 | #define TARGET_OS_IOS TARGET_OS_IPHONE
15 | #endif
16 |
17 | #ifndef TARGET_OS_WATCH
18 | #define TARGET_OS_WATCH 0
19 | #endif
20 |
21 | #ifndef TARGET_OS_TV
22 | #define TARGET_OS_TV 0
23 | #endif
24 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "AFNetworking.h"
14 | #import "AFHTTPSessionManager.h"
15 | #import "AFURLSessionManager.h"
16 | #import "AFCompatibilityMacros.h"
17 | #import "AFNetworkReachabilityManager.h"
18 | #import "AFSecurityPolicy.h"
19 | #import "AFURLRequestSerialization.h"
20 | #import "AFURLResponseSerialization.h"
21 |
22 | FOUNDATION_EXPORT double AFNetworkingVersionNumber;
23 | FOUNDATION_EXPORT const unsigned char AFNetworkingVersionString[];
24 |
25 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking.modulemap:
--------------------------------------------------------------------------------
1 | framework module AFNetworking {
2 | umbrella header "AFNetworking-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/AFNetworking/AFNetworking.xcconfig:
--------------------------------------------------------------------------------
1 | CODE_SIGN_IDENTITY =
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "CoreServices" -framework "Security" -framework "SystemConfiguration"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/AFNetworking
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/JLRoutes/JLRoutes-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_JLRoutes : NSObject
3 | @end
4 | @implementation PodsDummy_JLRoutes
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/JLRoutes/JLRoutes-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/JLRoutes/JLRoutes-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "JLRoutes.h"
14 | #import "JLRParsingUtilities.h"
15 | #import "JLRRouteDefinition.h"
16 | #import "JLRRouteHandler.h"
17 | #import "JLRRouteRequest.h"
18 | #import "JLRRouteResponse.h"
19 |
20 | FOUNDATION_EXPORT double JLRoutesVersionNumber;
21 | FOUNDATION_EXPORT const unsigned char JLRoutesVersionString[];
22 |
23 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/JLRoutes/JLRoutes.modulemap:
--------------------------------------------------------------------------------
1 | framework module JLRoutes {
2 | umbrella header "JLRoutes-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/KVOController/KVOController-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_KVOController : NSObject
3 | @end
4 | @implementation PodsDummy_KVOController
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/KVOController/KVOController-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/KVOController/KVOController-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "FBKVOController.h"
14 | #import "KVOController.h"
15 | #import "NSObject+FBKVOController.h"
16 |
17 | FOUNDATION_EXPORT double KVOControllerVersionNumber;
18 | FOUNDATION_EXPORT const unsigned char KVOControllerVersionString[];
19 |
20 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/KVOController/KVOController.modulemap:
--------------------------------------------------------------------------------
1 | framework module KVOController {
2 | umbrella header "KVOController-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Masonry : NSObject
3 | @end
4 | @implementation PodsDummy_Masonry
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry.modulemap:
--------------------------------------------------------------------------------
1 | framework module Masonry {
2 | umbrella header "Masonry-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Masonry/Masonry.xcconfig:
--------------------------------------------------------------------------------
1 | CODE_SIGN_IDENTITY =
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "AppKit" -framework "Foundation"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-Easydict/Pods-Easydict-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_Easydict : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_Easydict
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-Easydict/Pods-Easydict-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-Easydict/Pods-Easydict-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
3 | ${BUILT_PRODUCTS_DIR}/JLRoutes/JLRoutes.framework
4 | ${BUILT_PRODUCTS_DIR}/KVOController/KVOController.framework
5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
6 | ${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-Easydict/Pods-Easydict-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JLRoutes.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KVOController.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-Easydict/Pods-Easydict-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-Easydict/Pods-Easydict-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
3 | ${BUILT_PRODUCTS_DIR}/JLRoutes/JLRoutes.framework
4 | ${BUILT_PRODUCTS_DIR}/KVOController/KVOController.framework
5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
6 | ${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-Easydict/Pods-Easydict-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JLRoutes.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KVOController.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-Easydict/Pods-Easydict-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_EasydictVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_EasydictVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-Easydict/Pods-Easydict.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Easydict {
2 | umbrella header "Pods-Easydict-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_EasydictTests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_EasydictTests
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
3 | ${BUILT_PRODUCTS_DIR}/JLRoutes/JLRoutes.framework
4 | ${BUILT_PRODUCTS_DIR}/KVOController/KVOController.framework
5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
6 | ${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JLRoutes.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KVOController.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
3 | ${BUILT_PRODUCTS_DIR}/JLRoutes/JLRoutes.framework
4 | ${BUILT_PRODUCTS_DIR}/KVOController/KVOController.framework
5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
6 | ${BUILT_PRODUCTS_DIR}/ReactiveObjC/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JLRoutes.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KVOController.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactiveObjC.framework
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-EasydictTests/Pods-EasydictTests-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_EasydictTestsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_EasydictTestsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-EasydictTests/Pods-EasydictTests.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_EasydictTests {
2 | umbrella header "Pods-EasydictTests-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ReactiveObjC/ReactiveObjC-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_ReactiveObjC : NSObject
3 | @end
4 | @implementation PodsDummy_ReactiveObjC
5 | @end
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ReactiveObjC/ReactiveObjC-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ReactiveObjC/ReactiveObjC.modulemap:
--------------------------------------------------------------------------------
1 | framework module ReactiveObjC {
2 | umbrella header "ReactiveObjC-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/ReactiveObjC/ReactiveObjC.xcconfig:
--------------------------------------------------------------------------------
1 | CODE_SIGN_IDENTITY =
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ReactiveObjC
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ReactiveObjC
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------