├── .github
└── FUNDING.yml
├── .gitignore
├── .gitmodules
├── README.md
├── build.gradle
├── debug.keystore
├── docs
├── QPython_3x_featues.md
├── QPython_Ox_featues.md
├── README.md
├── qpyqrcode.png
└── wx-contact-river.png
├── gradle.properties
├── gradle
└── wrapper
│ └── gradle-wrapper.jar
├── gradlew
├── gradlew.bat
├── local.properties
├── qpypluginman
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── quseit
│ │ └── common
│ │ └── updater
│ │ ├── Updater.java
│ │ ├── callback
│ │ └── DialogCallback.java
│ │ ├── convertor
│ │ └── Convertor.java
│ │ ├── downloader
│ │ ├── DefaultDownloader.java
│ │ └── Downloader.java
│ │ ├── service
│ │ ├── DefaultService.java
│ │ └── Service.java
│ │ └── updatepkg
│ │ ├── Apk.java
│ │ └── UpdatePackage.java
│ └── res
│ ├── drawable
│ └── ic_cloud_download_black_24dp.png
│ ├── values-zh-rCn
│ └── strings.xml
│ ├── values-zh-rTW
│ └── strings.xml
│ └── values
│ └── strings.xml
├── qpysdk
├── README
├── build.gradle
├── libs
│ └── locale_platform.jar
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── android.js
│ ├── html
│ │ ├── index.html
│ │ └── index.js
│ ├── json2.js
│ ├── stylesheets
│ │ ├── css
│ │ │ ├── bootstrap.min.css
│ │ │ ├── sticky-footer.css
│ │ │ └── style.css
│ │ └── js
│ │ │ ├── bootstrap.min.js
│ │ │ └── jquery.min.js
│ └── webapp.html
│ ├── java
│ ├── com
│ │ └── android
│ │ │ └── vending
│ │ │ └── billing
│ │ │ └── IInAppBillingService.aidl
│ └── org
│ │ ├── audiostream
│ │ └── AudioIn.java
│ │ ├── jnius
│ │ └── NativeInvocationHandler.java
│ │ ├── libsdl
│ │ └── app
│ │ │ └── SDLActivity.java
│ │ ├── qpython
│ │ └── qpysdk
│ │ │ ├── Exec.java
│ │ │ ├── QPyConstants.java
│ │ │ ├── QPySDK.java
│ │ │ └── utils
│ │ │ ├── AndroidCompat.java
│ │ │ ├── AssetExtract.java
│ │ │ ├── DateTimeHelper.java
│ │ │ ├── FileExtract.java
│ │ │ ├── FileHelper.java
│ │ │ ├── FileUtils.java
│ │ │ ├── ResourceManager.java
│ │ │ ├── StreamGobbler.java
│ │ │ └── Utils.java
│ │ └── renpy
│ │ └── android
│ │ ├── Action.java
│ │ ├── AssetExtract.java
│ │ ├── Constants.java
│ │ ├── GenericBroadcastReceiver.java
│ │ ├── GenericBroadcastReceiverCallback.java
│ │ ├── PythonSDLActivity.java
│ │ ├── RenPySound.java
│ │ ├── ResourceManager.java
│ │ └── VideoPlayer.java
│ ├── libs
│ └── armeabi-v7a
│ │ ├── libSDL2.so
│ │ ├── libSDL2_gfx.so
│ │ ├── libSDL2_image.so
│ │ ├── libSDL2_mixer.so
│ │ ├── libSDL2_ttf.so
│ │ ├── libmain.so
│ │ ├── libpng16.so
│ │ ├── libpython2.7.so
│ │ └── libqpysdk.so
│ └── res
│ ├── drawable
│ └── presplash2.jpg
│ ├── values-zh-rCN
│ └── strings.xml
│ └── values
│ └── strings.xml
├── qpython
├── build.gradle
├── google-services.json
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.jar
├── gradlew
├── gradlew.bat
├── libs
│ ├── android-async-http-1.4.8.aar
│ └── markdown4j.jar
├── proguard-rules.pro
├── release
│ ├── cn
│ │ └── release
│ │ │ └── output.json
│ └── output.json
└── src
│ ├── lint.xml
│ ├── main
│ ├── AndroidManifest.xml
│ ├── aidl
│ │ └── com
│ │ │ └── android
│ │ │ └── vending
│ │ │ └── billing
│ │ │ └── IInAppBillingService.aidl
│ ├── assets
│ │ ├── Apache_License
│ │ ├── QPy_ConsoleApp
│ │ ├── QPy_PygameApp
│ │ ├── QPy_SL4AApp
│ │ ├── QPy_WebApp
│ │ ├── The_MIT_License
│ │ ├── Untitled.ipynb
│ │ ├── ipynb.mp3
│ │ ├── notebook3.mp3
│ │ ├── private1.mp3
│ │ ├── private2.mp3
│ │ ├── private3.mp3
│ │ ├── private31.mp3
│ │ ├── private32.mp3
│ │ ├── private33.mp3
│ │ ├── public.mp3
│ │ ├── public3.mp3
│ │ ├── syntax
│ │ │ ├── css.xml
│ │ │ ├── html.xml
│ │ │ ├── javascript.xml
│ │ │ ├── json.xml
│ │ │ ├── python.xml
│ │ │ └── xml.xml
│ │ ├── themes
│ │ │ ├── Mac Classic.tmTheme
│ │ │ └── Monokai Bright.tmTheme
│ │ └── xmode.dtd
│ ├── java
│ │ └── org
│ │ │ └── qpython
│ │ │ ├── qpy
│ │ │ ├── codeshare
│ │ │ │ ├── CONSTANT.java
│ │ │ │ ├── Clouded.java
│ │ │ │ ├── IShareCode.java
│ │ │ │ └── pojo
│ │ │ │ │ ├── BookmarkerList.java
│ │ │ │ │ ├── Gist.java
│ │ │ │ │ ├── GistBase.java
│ │ │ │ │ └── UploadedProject.java
│ │ │ ├── console
│ │ │ │ ├── BoundSession.java
│ │ │ │ ├── Exec.java
│ │ │ │ ├── GenericTermSession.java
│ │ │ │ ├── RemoteInterface.java
│ │ │ │ ├── RunScript.java
│ │ │ │ ├── RunShortcut.java
│ │ │ │ ├── ScriptExec.java
│ │ │ │ ├── ShellTermSession.java
│ │ │ │ ├── TermActivity.java
│ │ │ │ ├── TermDebug.java
│ │ │ │ ├── TermPreferences.java
│ │ │ │ ├── TermService.java
│ │ │ │ ├── TermView.java
│ │ │ │ ├── TermViewFlipper.java
│ │ │ │ ├── WindowList.java
│ │ │ │ ├── WindowListAdapter.java
│ │ │ │ ├── compont
│ │ │ │ │ ├── ActionBarCompat.java
│ │ │ │ │ ├── ActivityCompat.java
│ │ │ │ │ ├── AlertDialogCompat.java
│ │ │ │ │ ├── Base64.java
│ │ │ │ │ ├── FileCompat.java
│ │ │ │ │ ├── MenuItemCompat.java
│ │ │ │ │ ├── PRNGFixes.java
│ │ │ │ │ └── ServiceForegroundCompat.java
│ │ │ │ ├── shortcuts
│ │ │ │ │ ├── AddShortcut.java
│ │ │ │ │ ├── ColorValue.java
│ │ │ │ │ ├── FSNavigator.java
│ │ │ │ │ └── TextIcon.java
│ │ │ │ └── util
│ │ │ │ │ ├── SessionList.java
│ │ │ │ │ ├── ShortcutEncryption.java
│ │ │ │ │ └── TermSettings.java
│ │ │ ├── main
│ │ │ │ ├── activity
│ │ │ │ │ ├── AboutActivity.java
│ │ │ │ │ ├── AppListActivity.java
│ │ │ │ │ ├── CodeDetailActivity.java
│ │ │ │ │ ├── CodeShareActivity.java
│ │ │ │ │ ├── CourseActivity.java
│ │ │ │ │ ├── CourseIndexActivity.java
│ │ │ │ │ ├── CourseIndexFundingActivity.java
│ │ │ │ │ ├── FTPActivity.java
│ │ │ │ │ ├── GistActivity.java
│ │ │ │ │ ├── GistDetailActivity.java
│ │ │ │ │ ├── GistEditActivity.java
│ │ │ │ │ ├── HomeMainActivity.java
│ │ │ │ │ ├── LibActivity.java
│ │ │ │ │ ├── LogActivity.java
│ │ │ │ │ ├── MyGistActivity.java
│ │ │ │ │ ├── NotebookActivity.java
│ │ │ │ │ ├── NotebookListActivity.java
│ │ │ │ │ ├── QWebViewActivity.java
│ │ │ │ │ ├── QrCodeActivity.java
│ │ │ │ │ ├── SettingActivity.java
│ │ │ │ │ └── SplashActivity.java
│ │ │ │ ├── adapter
│ │ │ │ │ ├── AppListAdapter.java
│ │ │ │ │ ├── CloudScriptAdapter.java
│ │ │ │ │ ├── CodeCommentAdapter.java
│ │ │ │ │ ├── CodeShareAdapter.java
│ │ │ │ │ ├── CourseAdapter.java
│ │ │ │ │ ├── CoursePagerAdapter.java
│ │ │ │ │ ├── EditorFileTreeAdapter.java
│ │ │ │ │ ├── FileTreeAdapter.java
│ │ │ │ │ ├── GistAdapter.java
│ │ │ │ │ ├── LibListAdapter.java
│ │ │ │ │ ├── LibPagerAdapter.java
│ │ │ │ │ ├── MyCourseAdapter.java
│ │ │ │ │ ├── MyShareFragmentAdapter.java
│ │ │ │ │ ├── MyViewHolder.java
│ │ │ │ │ ├── NewsDetailAdapter.java
│ │ │ │ │ ├── NotebookAdapter.java
│ │ │ │ │ ├── StatePagerAdapter.java
│ │ │ │ │ ├── UploadFileTreeAdapter.java
│ │ │ │ │ └── ViewPagerAdapter.java
│ │ │ │ ├── app
│ │ │ │ │ ├── App.java
│ │ │ │ │ ├── CONF.java
│ │ │ │ │ └── User.java
│ │ │ │ ├── dialog
│ │ │ │ │ └── LogoDialog.java
│ │ │ │ ├── event
│ │ │ │ │ ├── AppsLoader.java
│ │ │ │ │ ├── Bean.java
│ │ │ │ │ └── ShareCodeCallback.java
│ │ │ │ ├── fragment
│ │ │ │ │ ├── CodeFragment.java
│ │ │ │ │ ├── CourseFragment.java
│ │ │ │ │ ├── FileFragment.java
│ │ │ │ │ ├── GistFragment.java
│ │ │ │ │ ├── LibAIPyFragment.java
│ │ │ │ │ ├── LibProjectFragment.java
│ │ │ │ │ ├── LibQPyPiFragment.java
│ │ │ │ │ ├── LocalFragment.java
│ │ │ │ │ ├── MyCourseFragment.java
│ │ │ │ │ ├── MyGistFragment.java
│ │ │ │ │ ├── RefreshFragment.java
│ │ │ │ │ ├── SettingFragment.java
│ │ │ │ │ └── TedSettingFragment.java
│ │ │ │ ├── listener
│ │ │ │ │ └── LoadmoreListener.java
│ │ │ │ ├── model
│ │ │ │ │ ├── AppModel.java
│ │ │ │ │ ├── LocalAppModel.java
│ │ │ │ │ ├── QPyScriptModel.java
│ │ │ │ │ └── UpdateJson.java
│ │ │ │ ├── receiver
│ │ │ │ │ ├── BootBroadcastReceiver.java
│ │ │ │ │ ├── DownloadNotebookReceiver.java
│ │ │ │ │ ├── DownloadReceiver.java
│ │ │ │ │ └── NotificationBean.java
│ │ │ │ ├── server
│ │ │ │ │ ├── CacheKey.java
│ │ │ │ │ ├── MySubscriber.java
│ │ │ │ │ ├── Service.java
│ │ │ │ │ ├── ServiceRequest.java
│ │ │ │ │ ├── gist
│ │ │ │ │ │ ├── Api.java
│ │ │ │ │ │ ├── BaseView.java
│ │ │ │ │ │ ├── Controler.java
│ │ │ │ │ │ ├── GistEvent.java
│ │ │ │ │ │ ├── ResponseHandler.java
│ │ │ │ │ │ ├── TokenManager.java
│ │ │ │ │ │ ├── createScreen
│ │ │ │ │ │ │ ├── CreateGistControler.java
│ │ │ │ │ │ │ └── CreateGistView.java
│ │ │ │ │ │ ├── detailScreen
│ │ │ │ │ │ │ ├── DetailControler.java
│ │ │ │ │ │ │ └── DetailView.java
│ │ │ │ │ │ ├── indexScreen
│ │ │ │ │ │ │ ├── GistHomeControler.java
│ │ │ │ │ │ │ └── GistHomeView.java
│ │ │ │ │ │ ├── loginScreen
│ │ │ │ │ │ │ ├── LoginControler.java
│ │ │ │ │ │ │ └── LoginView.java
│ │ │ │ │ │ ├── myScreen
│ │ │ │ │ │ │ ├── MyGistControler.java
│ │ │ │ │ │ │ └── MyGistView.java
│ │ │ │ │ │ ├── request
│ │ │ │ │ │ │ ├── BaseRequest.java
│ │ │ │ │ │ │ ├── CommentRequest.java
│ │ │ │ │ │ │ ├── CreateRequest.java
│ │ │ │ │ │ │ ├── LoginRequest.java
│ │ │ │ │ │ │ ├── Request.java
│ │ │ │ │ │ │ └── UpdateGistRequest.java
│ │ │ │ │ │ ├── response
│ │ │ │ │ │ │ ├── ADBean.java
│ │ │ │ │ │ │ ├── CommentBean.java
│ │ │ │ │ │ │ ├── GistBean.java
│ │ │ │ │ │ │ ├── LoginResponse.java
│ │ │ │ │ │ │ ├── ResponseBean.java
│ │ │ │ │ │ │ └── UserBean.java
│ │ │ │ │ │ └── service
│ │ │ │ │ │ │ ├── GistService.java
│ │ │ │ │ │ │ └── GistServiceFactory.java
│ │ │ │ │ ├── http
│ │ │ │ │ │ ├── Retrofitor.java
│ │ │ │ │ │ └── SSLSocketFactoryImp.java
│ │ │ │ │ └── model
│ │ │ │ │ │ ├── BaseLibModel.java
│ │ │ │ │ │ ├── CourseAdModel.java
│ │ │ │ │ │ ├── CourseModel.java
│ │ │ │ │ │ ├── DownloadProgressModel.java
│ │ │ │ │ │ ├── GooglePurchaseModel.java
│ │ │ │ │ │ ├── LibModel.java
│ │ │ │ │ │ ├── MyCourse.java
│ │ │ │ │ │ ├── PayStatusModel.java
│ │ │ │ │ │ ├── QpypiModel.java
│ │ │ │ │ │ ├── SettingModel.java
│ │ │ │ │ │ └── UpdateModel.java
│ │ │ │ ├── service
│ │ │ │ │ ├── FTPServerService.java
│ │ │ │ │ └── QPyService.java
│ │ │ │ ├── utils
│ │ │ │ │ ├── Bus.java
│ │ │ │ │ └── Utils.java
│ │ │ │ └── widget
│ │ │ │ │ ├── CodeReviewDialog.java
│ │ │ │ │ ├── CodeSendComment.java
│ │ │ │ │ ├── DividerItemDecoration.java
│ │ │ │ │ ├── GridSpace.java
│ │ │ │ │ ├── Indent.java
│ │ │ │ │ ├── LoadingDialog.java
│ │ │ │ │ ├── MyNestedScrollView.java
│ │ │ │ │ ├── NonScrollListView.java
│ │ │ │ │ ├── NotebookDialog.java
│ │ │ │ │ ├── PercentView.java
│ │ │ │ │ ├── RatioImageView.java
│ │ │ │ │ ├── ShareDialog.java
│ │ │ │ │ ├── ShortcutLayout.java
│ │ │ │ │ ├── ToggleView.java
│ │ │ │ │ ├── WebviewEX.java
│ │ │ │ │ ├── WrapContentHeightViewPager.java
│ │ │ │ │ ├── expandableview
│ │ │ │ │ ├── ExpandableLayout.java
│ │ │ │ │ ├── ExpandableLayoutListener.java
│ │ │ │ │ ├── ExpandableRelativeLayout.java
│ │ │ │ │ ├── ExpandableSavedState.java
│ │ │ │ │ └── Utils.java
│ │ │ │ │ └── scheduleview
│ │ │ │ │ ├── DotObj.java
│ │ │ │ │ └── ScheduleView.java
│ │ │ ├── plugin
│ │ │ │ ├── CloudPluginManager.java
│ │ │ │ ├── Common.java
│ │ │ │ ├── LocalPluginManager.java
│ │ │ │ ├── PluginDetailDialogFragment.java
│ │ │ │ ├── SpaceItemDecoration.java
│ │ │ │ ├── activity
│ │ │ │ │ ├── LocalPluginInstallActivity.java
│ │ │ │ │ └── PluginManagerActivity.java
│ │ │ │ ├── adapter
│ │ │ │ │ ├── CloudPluginAdapter.java
│ │ │ │ │ ├── LocalPluginAdapter.java
│ │ │ │ │ └── PluginPagerAdapter.java
│ │ │ │ ├── fragment
│ │ │ │ │ ├── CloudPluginFragment.java
│ │ │ │ │ └── LocalPluginFragment.java
│ │ │ │ ├── model
│ │ │ │ │ ├── CloudPluginBean.java
│ │ │ │ │ └── LocalPluginBean.java
│ │ │ │ └── view
│ │ │ │ │ └── FileSelectView.java
│ │ │ ├── program
│ │ │ │ ├── BindingHolder.java
│ │ │ │ └── ItemMenuLayout.java
│ │ │ ├── texteditor
│ │ │ │ ├── AndroidCompat.java
│ │ │ │ ├── ApplicationAdapter.java
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── Bean.java
│ │ │ │ ├── EditorActivity.java
│ │ │ │ ├── FTPServerService.java
│ │ │ │ ├── MFTPSettingActivity.java
│ │ │ │ ├── MNApp.java
│ │ │ │ ├── RunRules.java
│ │ │ │ ├── TedAppWidgetProvider.java
│ │ │ │ ├── TedFontActivity.java
│ │ │ │ ├── TedFragment.java
│ │ │ │ ├── TedOpenRecentActivity.java
│ │ │ │ ├── TedSaveAsActivity.java
│ │ │ │ ├── TedSettingsActivity.java
│ │ │ │ ├── TedWidgetConfigActivity.java
│ │ │ │ ├── androidlib
│ │ │ │ │ ├── common
│ │ │ │ │ │ ├── ChangeLog.java
│ │ │ │ │ │ ├── MiscUtils.java
│ │ │ │ │ │ └── UIUtils.java
│ │ │ │ │ ├── comparator
│ │ │ │ │ │ ├── ComparatorFilesAlpha.java
│ │ │ │ │ │ ├── ComparatorFilesDate.java
│ │ │ │ │ │ ├── ComparatorFilesSize.java
│ │ │ │ │ │ └── ComparatorFilesType.java
│ │ │ │ │ ├── data
│ │ │ │ │ │ ├── FileUtils.java
│ │ │ │ │ │ ├── MimeTypeMapEnhanced.java
│ │ │ │ │ │ └── RootFileUtils.java
│ │ │ │ │ └── ui
│ │ │ │ │ │ ├── Toaster.java
│ │ │ │ │ │ ├── activity
│ │ │ │ │ │ ├── ActivityDecorator.java
│ │ │ │ │ │ └── BrowsingActivity.java
│ │ │ │ │ │ └── adapter
│ │ │ │ │ │ ├── FileListAdapter.java
│ │ │ │ │ │ └── ThumbnailProvider.java
│ │ │ │ ├── common
│ │ │ │ │ ├── CommonEnums.java
│ │ │ │ │ ├── ComparatorFilesAlpha.java
│ │ │ │ │ ├── Constants.java
│ │ │ │ │ ├── FontUtils.java
│ │ │ │ │ ├── RecentFiles.java
│ │ │ │ │ ├── Settings.java
│ │ │ │ │ ├── TedChangelog.java
│ │ │ │ │ ├── TextFileUtils.java
│ │ │ │ │ └── WidgetPrefs.java
│ │ │ │ ├── newtexteditor
│ │ │ │ │ ├── AfterTextChangeListener.java
│ │ │ │ │ ├── EditableWithLayout.java
│ │ │ │ │ ├── MyEditText.java
│ │ │ │ │ ├── MyInputConnection.java
│ │ │ │ │ ├── MyLayout.java
│ │ │ │ │ ├── ScrollBar.java
│ │ │ │ │ └── SpanBody.java
│ │ │ │ ├── ui
│ │ │ │ │ ├── adapter
│ │ │ │ │ │ ├── FolderAdapter.java
│ │ │ │ │ │ ├── FontListAdapter.java
│ │ │ │ │ │ ├── MyViewHolder.java
│ │ │ │ │ │ ├── PathListAdapter.java
│ │ │ │ │ │ └── bean
│ │ │ │ │ │ │ ├── FolderBean.java
│ │ │ │ │ │ │ └── PopupItemBean.java
│ │ │ │ │ └── view
│ │ │ │ │ │ ├── AdvancedEditText.java
│ │ │ │ │ │ ├── EditorPopUp.java
│ │ │ │ │ │ ├── EnterDialog.java
│ │ │ │ │ │ ├── MyEditTextPreference.java
│ │ │ │ │ │ ├── MyItemDecoration.java
│ │ │ │ │ │ ├── MyTouchHelperCallback.java
│ │ │ │ │ │ └── TopSearchDialog.java
│ │ │ │ ├── undo
│ │ │ │ │ ├── TextChange.java
│ │ │ │ │ ├── TextChangeDelete.java
│ │ │ │ │ ├── TextChangeInsert.java
│ │ │ │ │ └── TextChangeWatcher.java
│ │ │ │ └── widget
│ │ │ │ │ └── crouton
│ │ │ │ │ ├── AnimationsBuilder.java
│ │ │ │ │ ├── Crouton.java
│ │ │ │ │ ├── Manager.java
│ │ │ │ │ └── Style.java
│ │ │ └── utils
│ │ │ │ ├── CodePattern.java
│ │ │ │ ├── DateTimeUtil.java
│ │ │ │ ├── FileUtils.java
│ │ │ │ ├── NoteBookAction.java
│ │ │ │ ├── NotebookUtil.java
│ │ │ │ ├── OpenWebUtil.java
│ │ │ │ ├── SolfKeybroadUtil.java
│ │ │ │ ├── UpdateHelper.java
│ │ │ │ └── iap
│ │ │ │ ├── IabBroadcastReceiver.java
│ │ │ │ ├── IabException.java
│ │ │ │ ├── IabHelper.java
│ │ │ │ ├── IabResult.java
│ │ │ │ ├── Inventory.java
│ │ │ │ ├── Purchase.java
│ │ │ │ ├── Security.java
│ │ │ │ └── SkuDetails.java
│ │ │ └── qpylib
│ │ │ ├── MPyApi.java
│ │ │ └── MPyService.java
│ └── res
│ │ ├── anim
│ │ ├── fade_in.xml
│ │ ├── fade_out.xml
│ │ ├── slide_down.xml
│ │ ├── slide_in_bottom.xml
│ │ ├── slide_out_bottom.xml
│ │ └── slide_up.xml
│ │ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ │ ├── drawable-xxhdpi
│ │ ├── aipy.png
│ │ ├── aipy_light.png
│ │ ├── arrow_up.png
│ │ ├── arvr.png
│ │ ├── arvr_light.png
│ │ ├── basics.png
│ │ ├── basics_light.png
│ │ ├── btn_close_window.png
│ │ ├── checked.png
│ │ ├── database.png
│ │ ├── database_light.png
│ │ ├── download.png
│ │ ├── editor_qrcode.png
│ │ ├── empty.png
│ │ ├── gist_editor.png
│ │ ├── horizontal_separation_line.png
│ │ ├── ic_about_mail.png
│ │ ├── ic_about_new.png
│ │ ├── ic_about_share.png
│ │ ├── ic_add.png
│ │ ├── ic_arrow_back.png
│ │ ├── ic_arrow_back_white.png
│ │ ├── ic_arrow_drop_down_a.png
│ │ ├── ic_arrow_drop_down_b.png
│ │ ├── ic_back.png
│ │ ├── ic_cloud_done.png
│ │ ├── ic_cloud_download.png
│ │ ├── ic_cloud_list.png
│ │ ├── ic_cloud_notdone.png
│ │ ├── ic_cloud_upload.png
│ │ ├── ic_com_comment.png
│ │ ├── ic_com_copylink.png
│ │ ├── ic_com_delete.png
│ │ ├── ic_com_facebook.png
│ │ ├── ic_com_like.png
│ │ ├── ic_com_liked.png
│ │ ├── ic_com_share.png
│ │ ├── ic_com_sharecode.png
│ │ ├── ic_com_twitter.png
│ │ ├── ic_cou_share.png
│ │ ├── ic_course_clicks.png
│ │ ├── ic_delete.png
│ │ ├── ic_editcode.png
│ │ ├── ic_editcode_add.png
│ │ ├── ic_editor_arrow_down.png
│ │ ├── ic_editor_arrow_left.png
│ │ ├── ic_editor_arrow_right.png
│ │ ├── ic_editor_arrow_up.png
│ │ ├── ic_editor_delete_name.png
│ │ ├── ic_editor_file.png
│ │ ├── ic_editor_file_little.png
│ │ ├── ic_editor_filetree_close.png
│ │ ├── ic_editor_folder.png
│ │ ├── ic_editor_folder_little.png
│ │ ├── ic_editor_gist.png
│ │ ├── ic_editor_keyboard.png
│ │ ├── ic_editor_keyboardlock.png
│ │ ├── ic_editor_more_horiz.png
│ │ ├── ic_editor_newfolder.png
│ │ ├── ic_editor_next.png
│ │ ├── ic_editor_open.png
│ │ ├── ic_editor_recent.png
│ │ ├── ic_editor_run.png
│ │ ├── ic_editor_save.png
│ │ ├── ic_editor_saveas.png
│ │ ├── ic_editor_saveup.png
│ │ ├── ic_editor_search.png
│ │ ├── ic_editor_sharecode.png
│ │ ├── ic_editor_snippet.png
│ │ ├── ic_editor_undo.png
│ │ ├── ic_editor_unknown.png
│ │ ├── ic_editor_web.png
│ │ ├── ic_edittext.png
│ │ ├── ic_edittext_add.png
│ │ ├── ic_file_rename.png
│ │ ├── ic_folder_open.png
│ │ ├── ic_gist.png
│ │ ├── ic_go.png
│ │ ├── ic_home_club.png
│ │ ├── ic_home_course.png
│ │ ├── ic_home_editor.png
│ │ ├── ic_home_file.png
│ │ ├── ic_home_gist.png
│ │ ├── ic_home_library.png
│ │ ├── ic_home_more.png
│ │ ├── ic_home_program.png
│ │ ├── ic_home_qpy_add.png
│ │ ├── ic_home_qpyapp.png
│ │ ├── ic_home_scan.png
│ │ ├── ic_home_terminal.png
│ │ ├── ic_ipynb.png
│ │ ├── ic_keyboard_arrow_right_white.png
│ │ ├── ic_keyboard_hide_black.png
│ │ ├── ic_launcher.png
│ │ ├── ic_library.png
│ │ ├── ic_library_delete.png
│ │ ├── ic_library_detail.png
│ │ ├── ic_library_download.png
│ │ ├── ic_library_install.png
│ │ ├── ic_library_reinstall.png
│ │ ├── ic_library_run.png
│ │ ├── ic_library_upgrade.png
│ │ ├── ic_login.png
│ │ ├── ic_menu_preferences.png
│ │ ├── ic_menu_windows.png
│ │ ├── ic_more.png
│ │ ├── ic_notebook.png
│ │ ├── ic_open.png
│ │ ├── ic_play.png
│ │ ├── ic_program.png
│ │ ├── ic_program_install.png
│ │ ├── ic_project_console.png
│ │ ├── ic_project_kivy.png
│ │ ├── ic_project_kivy3.png
│ │ ├── ic_project_qapp.png
│ │ ├── ic_project_qapp3.png
│ │ ├── ic_project_webapp.png
│ │ ├── ic_project_webapp3.png
│ │ ├── ic_pyfile_kivy.png
│ │ ├── ic_pyfile_kivy3.png
│ │ ├── ic_pyfile_qapp.png
│ │ ├── ic_pyfile_qapp3.png
│ │ ├── ic_pyfile_webapp.png
│ │ ├── ic_pyfile_webapp3.png
│ │ ├── ic_qpypi_download.png
│ │ ├── ic_recent.png
│ │ ├── ic_remove.png
│ │ ├── ic_richpush_actionbar_back.png
│ │ ├── ic_richpush_actionbar_divider.png
│ │ ├── ic_right.png
│ │ ├── ic_save1.png
│ │ ├── ic_save2.png
│ │ ├── ic_stepin.png
│ │ ├── ic_tab2.png
│ │ ├── ic_terminal.png
│ │ ├── ic_thumb_up.png
│ │ ├── ic_undo.png
│ │ ├── ic_undo_2.png
│ │ ├── ic_white_arrow_right.png
│ │ ├── img_course.png
│ │ ├── img_empty_net.png
│ │ ├── img_emptycourse.png
│ │ ├── img_home_bg.png
│ │ ├── img_home_bg_land.png
│ │ ├── img_home_logo.png
│ │ ├── img_home_logo_3.png
│ │ ├── img_homebar_bg.png
│ │ ├── img_me_bg.png
│ │ ├── mohu.png
│ │ ├── panel_bg.9.png
│ │ ├── prev.png
│ │ ├── redo.png
│ │ ├── scan_image.png
│ │ ├── sorry.png
│ │ ├── terminal_mini_icon.png
│ │ ├── textfield_black.9.png
│ │ ├── textfield_dracula.9.png
│ │ ├── textfield_matrix.9.png
│ │ ├── textfield_sky.9.png
│ │ ├── textfield_white.9.png
│ │ ├── transparent.png
│ │ ├── undo.png
│ │ ├── up.png
│ │ ├── web.png
│ │ └── web_light.png
│ │ ├── drawable
│ │ ├── bg_item.xml
│ │ ├── bg_layout.xml
│ │ ├── close_background.xml
│ │ ├── corners_5_white_bg.xml
│ │ ├── edit_text_background.xml
│ │ ├── edit_text_cursor.xml
│ │ ├── edit_text_green_bg.xml
│ │ ├── gray_btn_rect.xml
│ │ ├── gray_line_btn_bg.xml
│ │ ├── green_btn_bg.xml
│ │ ├── green_btn_rect.xml
│ │ ├── green_dot_shape.xml
│ │ ├── green_gray_btn.xml
│ │ ├── green_rect_line.xml
│ │ ├── ic_check_circle.xml
│ │ ├── ic_clear_24dp.xml
│ │ ├── ic_right_a.xml
│ │ ├── notebook_checkbox.xml
│ │ ├── purchase_bg.xml
│ │ ├── richpush_btn_selector.xml
│ │ ├── rotate_arrow.xml
│ │ ├── select_green_text.xml
│ │ ├── select_tab_indicator.xml
│ │ ├── silver_button.xml
│ │ ├── star_selector.xml
│ │ ├── toolbar_button_bg.xml
│ │ ├── white_dot_shape.xml
│ │ ├── white_rect_stroke.xml
│ │ ├── widget_title_background.xml
│ │ └── yellow_bg_thumbs_up.xml
│ │ ├── layout-land
│ │ └── activity_main.xml
│ │ ├── layout-v11
│ │ └── widget.xml
│ │ ├── layout-v14
│ │ └── buttons_ok_cancel.xml
│ │ ├── layout
│ │ ├── about.xml
│ │ ├── about_generic.xml
│ │ ├── activity_about.xml
│ │ ├── activity_add_gist.xml
│ │ ├── activity_code_detail.xml
│ │ ├── activity_code_share.xml
│ │ ├── activity_community.xml
│ │ ├── activity_course.xml
│ │ ├── activity_course_crowdfunding.xml
│ │ ├── activity_course_index.xml
│ │ ├── activity_free_course.xml
│ │ ├── activity_ftp.xml
│ │ ├── activity_funding_purchase.xml
│ │ ├── activity_lib.xml
│ │ ├── activity_local_app.xml
│ │ ├── activity_local_plugin_install.xml
│ │ ├── activity_main.xml
│ │ ├── activity_my_share.xml
│ │ ├── activity_news_detail.xml
│ │ ├── activity_notebook.xml
│ │ ├── activity_notebooklist.xml
│ │ ├── activity_plugin_manager.xml
│ │ ├── activity_purchase.xml
│ │ ├── activity_qrcode.xml
│ │ ├── activity_qwebview.xml
│ │ ├── activity_setting.xml
│ │ ├── activity_sign_in.xml
│ │ ├── activity_splash.xml
│ │ ├── activity_user.xml
│ │ ├── buttons_ok_cancel.xml
│ │ ├── dialog__setting_notebook.xml
│ │ ├── dialog_code_review.xml
│ │ ├── dialog_enter.xml
│ │ ├── dialog_feedback.xml
│ │ ├── dialog_history.xml
│ │ ├── dialog_loading.xml
│ │ ├── dialog_share.xml
│ │ ├── drawer_editor.xml
│ │ ├── fragment_course.xml
│ │ ├── fragment_explorer.xml
│ │ ├── fragment_local.xml
│ │ ├── fragment_my_course.xml
│ │ ├── fragment_my_share.xml
│ │ ├── fragment_plugin_cloud.xml
│ │ ├── fragment_plugin_local.xml
│ │ ├── fragment_qpy_pi.xml
│ │ ├── fragment_refresh_rv.xml
│ │ ├── fragment_rv.xml
│ │ ├── header_last_refresh_time.xml
│ │ ├── header_lib_description.xml
│ │ ├── header_lib_install.xml
│ │ ├── item_app_list.xml
│ │ ├── item_comment.xml
│ │ ├── item_course.xml
│ │ ├── item_course_funding_index.xml
│ │ ├── item_course_index.xml
│ │ ├── item_file.xml
│ │ ├── item_folder.xml
│ │ ├── item_folder_little.xml
│ │ ├── item_lib_list.xml
│ │ ├── item_my_course.xml
│ │ ├── item_notebook.xml
│ │ ├── item_plugin_cloud.xml
│ │ ├── item_plugin_local.xml
│ │ ├── item_pop_up.xml
│ │ ├── item_price.xml
│ │ ├── item_run_program.xml
│ │ ├── item_share_code.xml
│ │ ├── item_square_img.xml
│ │ ├── jpush_popwin_layout.xml
│ │ ├── jpush_webview_layout.xml
│ │ ├── layout_about.xml
│ │ ├── layout_editor.xml
│ │ ├── layout_open.xml
│ │ ├── layout_prefs.xml
│ │ ├── layout_save_as.xml
│ │ ├── layout_toolbar.xml
│ │ ├── layout_widget_config.xml
│ │ ├── list_file_item.xml
│ │ ├── new_rule_dialog.xml
│ │ ├── popup_add_editor.xml
│ │ ├── run_rules.xml
│ │ ├── rv_item_news.xml
│ │ ├── rv_item_news_comment.xml
│ │ ├── rv_item_news_head.xml
│ │ ├── search.xml
│ │ ├── search_top.xml
│ │ ├── snippet_list_row.xml
│ │ ├── tabs.xml
│ │ ├── term_activity.xml
│ │ ├── view_stub_save_prompt.xml
│ │ ├── widget.xml
│ │ ├── widget_banner.xml
│ │ ├── widget_editor_control.xml
│ │ ├── widget_no_net.xml
│ │ ├── widget_save.xml
│ │ ├── widget_send_comment.xml
│ │ ├── widget_shortcut.xml
│ │ ├── widget_shortcut_btn.xml
│ │ ├── widget_shortcut_imgbtn.xml
│ │ ├── window_list_item.xml
│ │ └── window_list_new_window.xml
│ │ ├── menu
│ │ ├── about_menu.xml
│ │ ├── activity_console_menu.xml
│ │ ├── comment_menu.xml
│ │ ├── community_menu.xml
│ │ ├── editor_menu.xml
│ │ ├── log_menu.xml
│ │ ├── news_menu.xml
│ │ ├── notebook_menu.xml
│ │ ├── plugin_installed_menu.xml
│ │ ├── plugin_uninstalled_menu.xml
│ │ ├── plugin_update_menu.xml
│ │ ├── qr_menu.xml
│ │ └── refresh_menu.xml
│ │ ├── raw
│ │ ├── beep.ogg
│ │ ├── keep.xml
│ │ ├── projects2.zip
│ │ ├── projects3.zip
│ │ ├── scripts2.zip
│ │ └── scripts3.zip
│ │ ├── values-ja
│ │ ├── arrays.xml
│ │ ├── strings.xml
│ │ └── toasts.xml
│ │ ├── values-ru
│ │ ├── arrays.xml
│ │ └── strings.xml
│ │ ├── values-v11
│ │ ├── dimens.xml
│ │ └── styles.xml
│ │ ├── values-v21
│ │ ├── colors.xml
│ │ └── styles.xml
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ ├── values-zh-rCN
│ │ ├── arrays.xml
│ │ ├── strings.xml
│ │ └── toasts.xml
│ │ ├── values-zh-rTW
│ │ ├── strings.xml
│ │ └── toasts.xml
│ │ ├── values
│ │ ├── arrays.xml
│ │ ├── arraysNoLocalize.xml
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── defaults.xml
│ │ ├── dimens.xml
│ │ ├── history.xml
│ │ ├── id.xml
│ │ ├── ids.xml
│ │ ├── jpush_style.xml
│ │ ├── selectable_item_selector_colors.xml
│ │ ├── string_program_explorer.xml
│ │ ├── strings.xml
│ │ ├── strings_activity_settings.xml
│ │ ├── strings_plugin_manager.xml
│ │ ├── styles.xml
│ │ ├── textview_attrs.xml
│ │ ├── textview_dimens.xml
│ │ ├── textview_material_dimens.xml
│ │ ├── textview_styles.xml
│ │ └── toasts.xml
│ │ └── xml
│ │ ├── console_preferences.xml
│ │ ├── network_security_config.xml
│ │ ├── qpython_setting.xml
│ │ ├── shortcuts.xml
│ │ └── ted_prefs.xml
│ ├── oh
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── org
│ │ │ └── qpython
│ │ │ └── qpy
│ │ │ ├── main
│ │ │ ├── activity
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── FundingPurchaseActivity.java
│ │ │ │ ├── PayActivity.java
│ │ │ │ ├── PurchaseActivity.java
│ │ │ │ ├── SignInActivity.java
│ │ │ │ └── UserActivity.java
│ │ │ ├── app
│ │ │ │ └── AppInit.java
│ │ │ ├── fragment
│ │ │ │ ├── ExplorerFragment.java
│ │ │ │ └── MyProjectFragment.java
│ │ │ └── service
│ │ │ │ └── PayUtil.java
│ │ │ ├── sharecode
│ │ │ ├── ShareCodeUtil.java
│ │ │ └── pojo
│ │ │ │ └── CloudFile.java
│ │ │ └── texteditor
│ │ │ └── TedLocalActivity.java
│ └── res
│ │ ├── drawable-xxhdpi
│ │ └── ic_login.png
│ │ ├── layout
│ │ └── activity_local.xml
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ ├── values-zh-rTW
│ │ └── strings.xml
│ │ └── values
│ │ └── strings.xml
│ ├── ol
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── org
│ │ │ └── qpython
│ │ │ └── qpy
│ │ │ ├── codeshare
│ │ │ ├── ShareCodeUtil.java
│ │ │ └── pojo
│ │ │ │ └── CloudFile.java
│ │ │ ├── main
│ │ │ ├── PayActivity.java
│ │ │ ├── activity
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── FundingPurchaseActivity.java
│ │ │ │ ├── PayActivity.java
│ │ │ │ ├── PurchaseActivity.java
│ │ │ │ ├── SignInActivity.java
│ │ │ │ └── UserActivity.java
│ │ │ ├── app
│ │ │ │ └── AppInit.java
│ │ │ ├── fragment
│ │ │ │ ├── ExplorerFragment.java
│ │ │ │ └── MyProjectFragment.java
│ │ │ ├── receiver
│ │ │ │ └── LeancloudReceiver.java
│ │ │ └── service
│ │ │ │ ├── MyFirebaseInstanceIDService.java
│ │ │ │ ├── MyFirebaseMessagingService.java
│ │ │ │ └── PayUtil.java
│ │ │ └── texteditor
│ │ │ └── TedLocalActivity.java
│ └── res
│ │ ├── layout
│ │ └── activity_local.xml
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ └── values
│ │ └── strings.xml
│ ├── op
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── org
│ │ │ └── qpython
│ │ │ └── qpy
│ │ │ ├── main
│ │ │ ├── activity
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── FundingPurchaseActivity.java
│ │ │ │ ├── PayActivity.java
│ │ │ │ ├── PurchaseActivity.java
│ │ │ │ ├── SignInActivity.java
│ │ │ │ └── UserActivity.java
│ │ │ ├── app
│ │ │ │ └── AppInit.java
│ │ │ ├── fragment
│ │ │ │ ├── ExplorerFragment.java
│ │ │ │ └── MyProjectFragment.java
│ │ │ └── service
│ │ │ │ └── PayUtil.java
│ │ │ ├── sharecode
│ │ │ ├── ShareCodeUtil.java
│ │ │ └── pojo
│ │ │ │ └── CloudFile.java
│ │ │ └── texteditor
│ │ │ └── TedLocalActivity.java
│ └── res
│ │ ├── drawable-xxhdpi
│ │ └── ic_login.png
│ │ ├── layout
│ │ └── activity_local.xml
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ ├── values-zh-rTW
│ │ └── strings.xml
│ │ └── values
│ │ └── strings.xml
│ └── os
│ ├── AndroidManifest.xml
│ ├── java
│ └── org
│ │ └── qpython
│ │ └── qpy
│ │ ├── codeshare
│ │ ├── ShareCodeUtil.java
│ │ └── pojo
│ │ │ └── CloudFile.java
│ │ ├── main
│ │ ├── PayActivity.java
│ │ ├── activity
│ │ │ ├── BaseActivity.java
│ │ │ ├── FundingPurchaseActivity.java
│ │ │ ├── PayActivity.java
│ │ │ ├── PurchaseActivity.java
│ │ │ ├── SignInActivity.java
│ │ │ └── UserActivity.java
│ │ ├── app
│ │ │ └── AppInit.java
│ │ ├── fragment
│ │ │ ├── ExplorerFragment.java
│ │ │ └── MyProjectFragment.java
│ │ ├── receiver
│ │ │ └── LeancloudReceiver.java
│ │ └── service
│ │ │ ├── MyFirebaseInstanceIDService.java
│ │ │ ├── MyFirebaseMessagingService.java
│ │ │ └── PayUtil.java
│ │ └── texteditor
│ │ └── TedLocalActivity.java
│ └── res
│ ├── layout
│ └── activity_local.xml
│ ├── values-zh-rCN
│ └── strings.xml
│ └── values
│ └── strings.xml
├── settings.gradle
├── termemulator
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── jackpal
│ │ └── androidterm
│ │ └── emulatorview
│ │ ├── BaseTextRenderer.java
│ │ ├── Bitmap4x8FontRenderer.java
│ │ ├── ByteQueue.java
│ │ ├── ColorScheme.java
│ │ ├── EmulatorDebug.java
│ │ ├── EmulatorView.java
│ │ ├── GrowableIntArray.java
│ │ ├── HistoryCmdUtils.java
│ │ ├── PaintRenderer.java
│ │ ├── Screen.java
│ │ ├── ShortcutBean.java
│ │ ├── StyleRow.java
│ │ ├── TermKeyListener.java
│ │ ├── TermSession.java
│ │ ├── TermShortcutLayout.java
│ │ ├── TerminalEmulator.java
│ │ ├── TextRenderer.java
│ │ ├── TextStyle.java
│ │ ├── TranscriptScreen.java
│ │ ├── UnicodeTranscript.java
│ │ ├── UpdateCallback.java
│ │ └── compat
│ │ ├── AndroidCharacterCompat.java
│ │ ├── AndroidCompat.java
│ │ ├── ClipboardManagerCompat.java
│ │ ├── ClipboardManagerCompatFactory.java
│ │ ├── ClipboardManagerCompatV1.java
│ │ ├── ClipboardManagerCompatV11.java
│ │ ├── KeyCharacterMapCompat.java
│ │ ├── KeycodeConstants.java
│ │ └── Patterns.java
│ └── res
│ ├── drawable-nodpi
│ └── atari_small_nodpi.png
│ ├── drawable-xxhdpi
│ ├── ic_terminal_history.png
│ ├── tab1.png
│ └── tab2.png
│ ├── drawable
│ └── atari_small.png
│ ├── layout
│ ├── widget_shortcut_btn.xml
│ └── widget_shortcut_imgbtn.xml
│ └── values
│ └── arrays.xml
├── termexec
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── jackpal
│ │ └── androidterm
│ │ └── libtermexec
│ │ └── ApplicationTest.java
│ └── main
│ ├── AndroidManifest.xml
│ ├── aidl
│ └── jackpal
│ │ └── androidterm
│ │ └── libtermexec
│ │ └── v1
│ │ └── ITerminal.aidl
│ ├── java
│ └── jackpal
│ │ └── androidterm
│ │ └── TermExec.java
│ └── jni
│ ├── Android.mk
│ ├── Application.mk
│ ├── common.cpp
│ ├── common.h
│ ├── fileCompat.cpp
│ ├── fileCompat.h
│ ├── process.cpp
│ ├── process.h
│ ├── termExec.cpp
│ └── termExec.h
└── utils
├── copy.sh
└── diff.sh
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | patreon: riverfor
4 | custom: ["https://paypal.me/qpyriver"]
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | build
4 | __MACOSX
5 | .idea
6 | keystore
7 | .DS_Store
8 | local.properties
9 | *.apk
10 | qbaselib.iml
11 | .*
12 | !/.gitignore
13 | gradle-wrapper.properties
14 | Android.mk
15 | qpython/src/main/jni/python/libpython2.7.b
16 | qpysdk/src/main/obj
17 | values-fr
18 | values-tr
19 | build.gradle.new
20 | captures
21 | old.git
22 | qpython/qpython.key
23 | qpython/cn/release/output.json
24 | qpython/od/release/*
25 | qpython/cn
26 | qpython/google
27 | qpython/os
28 | qpython/ol
29 | qpython/op
30 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "qbaselib"]
2 | path = qbaselib
3 | url = git@github.com:qpython-android/qbaselib.git
4 | [submodule "qftplib"]
5 | path = qftplib
6 | url = git@github.com:qpython-android/qftplib.git
7 | [submodule "qpysdk/src/main/jni"]
8 | path = qpysdk/src/main/jni
9 | url = git@github.com:qpython-android/pygamesdl2-jni.git
10 | [submodule "qpysl4a"]
11 | path = qpysl4a
12 | url = git@github.com:qpython-android/qpysl4a.git
13 |
--------------------------------------------------------------------------------
/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/debug.keystore
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # About
2 | QPython documentation
3 |
--------------------------------------------------------------------------------
/docs/qpyqrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/docs/qpyqrcode.png
--------------------------------------------------------------------------------
/docs/wx-contact-river.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/docs/wx-contact-river.png
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | ## Project-wide Gradle settings.
2 | #
3 | # For more details on how to configure your build environment visit
4 | # http://www.gradle.org/docs/current/userguide/build_environment.html
5 | #
6 | # Specifies the JVM arguments used for the daemon process.
7 | # The setting is particularly useful for tweaking memory settings.
8 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
10 | #
11 | # When configured, Gradle will run in incubating parallel mode.
12 | # This option should only be used with decoupled projects. More details, visit
13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
14 | # org.gradle.parallel=true
15 | #Sun May 29 21:58:12 CST 2016
16 | org.gradle.jvmargs=-Xmx2048m
17 | org.gradle.daemon=true
18 | android.debug.obsoleteApi=true
19 | #android.useDeprecatedNdk=true
20 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/local.properties:
--------------------------------------------------------------------------------
1 | ## This file must *NOT* be checked into Version Control Systems,
2 | # as it contains information specific to your local configuration.
3 | #
4 | # Location of the SDK. This is only used by Gradle.
5 | # For customization when using a Version Control System, please read the
6 | # header note.
7 | #Thu Aug 02 10:23:49 CST 2018
8 | ndk.dir=/Users/yanhecun/Library/Android/sdk/ndk-bundle
9 | sdk.dir=/Users/yanhecun/Library/Android/sdk
10 |
--------------------------------------------------------------------------------
/qpypluginman/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 |
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.minSdkVersion
8 | targetSdkVersion rootProject.ext.targetSdkVersion
9 | versionCode 1
10 | versionName "1.0"
11 | }
12 | buildTypes {
13 | release {
14 | minifyEnabled false
15 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
16 | }
17 | }
18 | lintOptions {
19 | abortOnError false
20 | }
21 | }
22 |
23 | dependencies {
24 | // api fileTree(include: ['*.jar'], dir: 'libs')
25 | //testApi 'junit:junit:4.12'
26 | api rootProject.ext.libOkHttp3
27 | api rootProject.ext.libRxJava
28 | api rootProject.ext.libRxAndroid
29 | api rootProject.ext.libFileDownloaderLib
30 | api rootProject.ext.libSupportV4
31 | }
32 |
--------------------------------------------------------------------------------
/qpypluginman/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in C:\Users\Jay\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include mPath and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/java/com/quseit/common/updater/convertor/Convertor.java:
--------------------------------------------------------------------------------
1 | package com.quseit.common.updater.convertor;
2 |
3 |
4 | import com.quseit.common.updater.updatepkg.UpdatePackage;
5 |
6 | import java.util.List;
7 |
8 | public interface Convertor {
9 | List extends UpdatePackage> transform(String response);
10 | }
11 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/java/com/quseit/common/updater/downloader/Downloader.java:
--------------------------------------------------------------------------------
1 | package com.quseit.common.updater.downloader;
2 |
3 | import java.io.File;
4 |
5 | public interface Downloader {
6 | void download(String name, String url, Callback callback);
7 |
8 | void download(String name, String url, String savePath, Callback callback);
9 |
10 | interface Callback {
11 | void pending(String name);
12 | void complete(String name, File installer);
13 | void error(String err);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/java/com/quseit/common/updater/service/DefaultService.java:
--------------------------------------------------------------------------------
1 | package com.quseit.common.updater.service;
2 |
3 | import java.io.IOException;
4 |
5 | import okhttp3.OkHttpClient;
6 | import okhttp3.Request;
7 |
8 | public class DefaultService implements Service {
9 | private final OkHttpClient client;
10 |
11 | public DefaultService() {
12 | client = new OkHttpClient();
13 | }
14 |
15 | @Override
16 | public String request(String url) throws IOException {
17 | Request request = new Request.Builder()
18 | .url(url)
19 | .build();
20 | return client.newCall(request).execute().body().string();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/java/com/quseit/common/updater/service/Service.java:
--------------------------------------------------------------------------------
1 | package com.quseit.common.updater.service;
2 |
3 | import java.io.IOException;
4 |
5 | public interface Service {
6 | String request(String url) throws IOException;
7 | }
8 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/java/com/quseit/common/updater/updatepkg/UpdatePackage.java:
--------------------------------------------------------------------------------
1 | package com.quseit.common.updater.updatepkg;
2 |
3 | import java.io.File;
4 |
5 | public interface UpdatePackage {
6 |
7 | String getName();
8 |
9 | String getVersion();
10 |
11 | String getVersionDescription();
12 |
13 | String getDownloadUrl();
14 |
15 | boolean checkVersion();
16 |
17 | void install(File file);
18 | }
19 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/res/drawable/ic_cloud_download_black_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpypluginman/src/main/res/drawable/ic_cloud_download_black_24dp.png
--------------------------------------------------------------------------------
/qpypluginman/src/main/res/values-zh-rCn/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 检查更新失败
3 | 您的应用已经是最新版本
4 | 应用有更新
5 | 更新
6 | 显示详情
7 | 取消
8 | 正在下载
9 | 下载完成
10 |
11 |
12 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 檢查更新失敗
3 | 已經更新
4 | 提示
5 | 有可使用的新版本
6 | 更新
7 | 顯示詳細內容
8 | 取消
9 | 正在下載
10 | 已下載
11 |
12 |
--------------------------------------------------------------------------------
/qpypluginman/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Check update fail
3 | Already update
4 | New version available
5 | Update
6 | Show detail
7 | Cancel
8 | Downloading
9 | Completed
10 |
11 |
12 |
--------------------------------------------------------------------------------
/qpysdk/README:
--------------------------------------------------------------------------------
1 | QPYTHON SDK
2 |
--------------------------------------------------------------------------------
/qpysdk/libs/locale_platform.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/libs/locale_platform.jar
--------------------------------------------------------------------------------
/qpysdk/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/yhc/Library/Android/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include mPath and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/qpysdk/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/qpysdk/src/main/assets/android.js:
--------------------------------------------------------------------------------
1 | var AndroidHelper = function() {
2 | this._callbacks = [],
3 | this._id = 0,
4 | this._call = function(method, params) {
5 | this._id += 1;
6 | var request = JSON.stringify({'id': this._id, 'method': method, 'params': params});
7 | var response = _rpc_wrapper.call(request);
8 | return eval("(" + response + ")");
9 | },
10 |
11 | this.registerCallback = function(event, receiver) {
12 | var id = this._callbacks.push(receiver) - 1;
13 | _callback_wrapper.register(event, id);
14 | },
15 |
16 | this._callback = function(id, data) {
17 | var receiver = this._callbacks[id];
18 | receiver(data);
19 | },
20 |
21 | this.dismiss = function() {
22 | _rpc_wrapper.dismiss();
23 | }
24 | };
25 |
--------------------------------------------------------------------------------
/qpysdk/src/main/assets/html/index.js:
--------------------------------------------------------------------------------
1 | var total = 0
2 | function gotoApp() {
3 | total = total+1
4 | if (total>=10) {
5 | //setTimeout('milib.closeWait()',100);
6 | $('#mainEle').html('
Fail to start QPyWebapp, please check manually.
');
7 | milib.onNext("timeout");
8 |
9 | } else {
10 | if (milib.isSrvOk("")) {
11 | setTimeout('window.location=milib.getSrv()',100);
12 | } else {
13 | if (total<15) {
14 | setTimeout('gotoApp()',3000);
15 | }
16 | }
17 | }
18 | }
19 |
20 | {
21 | $('#mainEle').html('');
22 | //milib.showWait();
23 | milib.loadConsole("");
24 |
25 | gotoApp();
26 |
27 | /*var droid = new AndroidHelper();
28 | droid.makeToast('HelloWorld')*/
29 | }
30 |
--------------------------------------------------------------------------------
/qpysdk/src/main/assets/stylesheets/css/sticky-footer.css:
--------------------------------------------------------------------------------
1 | /* Sticky footer styles
2 | -------------------------------------------------- */
3 | html {
4 | position: relative;
5 | min-height: 100%;
6 | }
7 | body {
8 | margin-bottom: 60px; /* Margin bottom by footer height */
9 | }
10 | .footer {
11 | position: absolute;
12 | bottom: 0;
13 | width: 100%;
14 | height: 60px; /* Set the fixed height of the footer here */
15 | line-height: 60px; /* Vertically center the text there */
16 | background-color: #f5f5f5;
17 | }
18 |
19 |
20 | /* Custom page CSS
21 | -------------------------------------------------- */
22 | /* Not required for template or sticky footer method. */
23 |
24 | .container {
25 | width: auto;
26 | max-width: 680px;
27 | padding: 0 15px;
28 | }
29 |
--------------------------------------------------------------------------------
/qpysdk/src/main/java/org/renpy/android/Constants.java:
--------------------------------------------------------------------------------
1 | package org.renpy.android;
2 |
3 | public class Constants {
4 | // Used by the google play store.
5 | // public static String PLAY_BASE64_PUBLIC_KEY = "{{ config.google_play_key }}";
6 | // public static byte[] PLAY_SALT = new byte[] { {{ config.google_play_salt }} };
7 | //
8 | // // Used by the expansion downloader.
9 | // public static int fileVersion = {{ config.numeric_version }};
10 | // public static int fileSize = {{ file_size }};
11 |
12 | // Used by the in-app purchasing code.
13 | public static String store = "{{ config.store }}";
14 | }
15 |
--------------------------------------------------------------------------------
/qpysdk/src/main/java/org/renpy/android/GenericBroadcastReceiver.java:
--------------------------------------------------------------------------------
1 | package org.renpy.android;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Intent;
5 | import android.content.Context;
6 |
7 | public class GenericBroadcastReceiver extends BroadcastReceiver {
8 |
9 | GenericBroadcastReceiverCallback listener;
10 |
11 | public GenericBroadcastReceiver(GenericBroadcastReceiverCallback listener) {
12 | super();
13 | this.listener = listener;
14 | }
15 |
16 | public void onReceive(Context context, Intent intent) {
17 | this.listener.onReceive(context, intent);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/qpysdk/src/main/java/org/renpy/android/GenericBroadcastReceiverCallback.java:
--------------------------------------------------------------------------------
1 | package org.renpy.android;
2 |
3 | import android.content.Intent;
4 | import android.content.Context;
5 |
6 | public interface GenericBroadcastReceiverCallback {
7 | void onReceive(Context context, Intent intent);
8 | };
9 |
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libSDL2.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libSDL2.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libSDL2_gfx.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libSDL2_gfx.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libSDL2_image.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libSDL2_image.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libSDL2_mixer.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libSDL2_mixer.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libSDL2_ttf.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libSDL2_ttf.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libmain.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libmain.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libpng16.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libpng16.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libpython2.7.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libpython2.7.so
--------------------------------------------------------------------------------
/qpysdk/src/main/libs/armeabi-v7a/libqpysdk.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/libs/armeabi-v7a/libqpysdk.so
--------------------------------------------------------------------------------
/qpysdk/src/main/res/drawable/presplash2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpysdk/src/main/res/drawable/presplash2.jpg
--------------------------------------------------------------------------------
/qpysdk/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | QPYSDK
3 | 查看日志么?
4 |
5 |
--------------------------------------------------------------------------------
/qpysdk/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | QPYSDK
3 | Do you want to check the runtime log?
4 |
--------------------------------------------------------------------------------
/qpython/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/qpython/libs/android-async-http-1.4.8.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/libs/android-async-http-1.4.8.aar
--------------------------------------------------------------------------------
/qpython/libs/markdown4j.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/libs/markdown4j.jar
--------------------------------------------------------------------------------
/qpython/release/cn/release/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":241},"path":"Qpython_2018-02-28_cn.apk","properties":{"packageId":"com.hipipal.qpyplus","split":"","minSdkVersion":"14"}}]
--------------------------------------------------------------------------------
/qpython/release/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":229},"path":"qpython-release.apk","properties":{"packageId":"org.qpython.qpy","split":"","minSdkVersion":"14"}}]
--------------------------------------------------------------------------------
/qpython/src/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/assets/Apache_License:
--------------------------------------------------------------------------------
1 | """
2 | Copyright [yyyy] [name of copyright owner]
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | """
--------------------------------------------------------------------------------
/qpython/src/main/assets/QPy_ConsoleApp:
--------------------------------------------------------------------------------
1 | #-*-coding:utf8;-*-
2 | #qpy:console
3 |
4 | print "This is console module"
5 |
--------------------------------------------------------------------------------
/qpython/src/main/assets/QPy_PygameApp:
--------------------------------------------------------------------------------
1 | #-*-coding:utf8;-*-
2 | #qpy:pygame
3 |
4 | import sys
5 | import pygame
6 | from pygame.locals import *
7 |
8 | pygame.init()
9 | # Resolution is ignored on Android
10 | surface = pygame.display.set_mode((640, 480))
11 | # Only one built in font is available on Android
12 | myfont = pygame.font.SysFont("DejaVuSans", 64)
13 | label = myfont.render("Hello, QPython!", 1, (255, 255, 255))
14 | clock = pygame.time.Clock()
15 |
16 | while True:
17 | for ev in pygame.event.get():
18 | if ev.type == QUIT:
19 | pygame.quit()
20 | # Framelimiter
21 | clock.tick(60)
22 | surface.fill((0, 0, 0))
23 | surface.blit(label, (0, 0))
24 | pygame.display.flip()
25 |
--------------------------------------------------------------------------------
/qpython/src/main/assets/Untitled.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": []
9 | }
10 | ],
11 | "metadata": {},
12 | "nbformat": 4,
13 | "nbformat_minor": 2
14 | }
15 |
--------------------------------------------------------------------------------
/qpython/src/main/assets/ipynb.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/ipynb.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/notebook3.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/notebook3.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/private1.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/private1.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/private2.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/private2.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/private3.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/private3.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/private31.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/private31.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/private32.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/private32.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/private33.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/private33.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/public.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/public.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/public3.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/assets/public3.mp3
--------------------------------------------------------------------------------
/qpython/src/main/assets/syntax/json.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | [-]?\d+([.]\d*)?([eE][+-]?\d+)?
14 |
15 |
16 |
17 | "
18 | "
19 |
20 |
21 |
22 | :
23 |
24 |
25 | true
26 | false
27 | null
28 |
29 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/codeshare/CONSTANT.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.codeshare;
2 |
3 |
4 | public class CONSTANT {
5 | public static final String IS_UPLOAD_INIT = "is_upload_init";// 是否同步了云端文件名
6 | public static final String CLOUDED_MAP = "clouded_map";// 云端文件名路径MAP
7 | public static final String DOT_REPLACE = "_%"; // Firebase Database中"." & "/" 等为非法字符无法上传, 需转义
8 | public static final String SLASH_REPLACE = "-%";
9 | }
10 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/console/compont/MenuItemCompat.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.console.compont;
2 |
3 | import android.view.MenuItem;
4 |
5 | import org.qpython.qpysdk.utils.AndroidCompat;
6 |
7 | /**
8 | * Definitions related to android.view.MenuItem
9 | */
10 | public class MenuItemCompat {
11 | public static final int SHOW_AS_ACTION_NEVER = 0;
12 | public static final int SHOW_AS_ACTION_IF_ROOM = 1;
13 | public static final int SHOW_AS_ACTION_ALWAYS = 2;
14 | public static final int SHOW_AS_ACTION_WITH_TEXT = 4;
15 |
16 | private static class Api11OrLater {
17 | public static void setShowAsAction(MenuItem item, int actionEnum) {
18 | item.setShowAsAction(actionEnum);
19 | }
20 | }
21 |
22 | public static void setShowAsAction(MenuItem item, int actionEnum) {
23 | if (AndroidCompat.SDK >= 11) {
24 | Api11OrLater.setShowAsAction(item, actionEnum);
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/activity/FTPActivity.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.activity;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.database.DatabaseUtils;
7 | import android.databinding.DataBindingUtil;
8 | import android.os.Bundle;
9 | import android.support.annotation.Nullable;
10 |
11 | import org.qpython.qpy.R;
12 | import org.qpython.qpy.databinding.ActivityFtpBinding;
13 |
14 | /**
15 | * FTP service setting page
16 | * Created by Hmei on 2017-05-27.
17 | */
18 |
19 | public class FTPActivity extends Activity {
20 | ActivityFtpBinding binding;
21 | @Override
22 | protected void onCreate(@Nullable Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 | binding = DataBindingUtil.setContentView(this, R.layout.activity_ftp);
25 | }
26 |
27 | public static void start(Context context) {
28 | Intent starter = new Intent(context, FTPActivity.class);
29 | context.startActivity(starter);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/activity/SplashActivity.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.activity;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.annotation.Nullable;
6 | import android.support.v7.app.AppCompatActivity;
7 |
8 | import org.qpython.qpy.R;
9 |
10 | import java.util.Timer;
11 | import java.util.TimerTask;
12 |
13 | public class SplashActivity extends AppCompatActivity {
14 |
15 | @Override
16 | public void onCreate(@Nullable Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_splash);
19 | new Timer().schedule(new TimerTask() {
20 | @Override
21 | public void run() {
22 | Intent intent = new Intent(SplashActivity.this,HomeMainActivity.class);
23 | intent.setAction(getIntent().getAction());
24 | startActivity(intent);
25 | finish();
26 | }
27 | },1000);
28 | }
29 |
30 | }
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/adapter/EditorFileTreeAdapter.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.adapter;
2 |
3 | import org.greenrobot.eventbus.EventBus;
4 | import org.qpython.qpy.R;
5 | import org.qpython.qpy.databinding.ItemFolderLittleBinding;
6 | import org.qpython.qpy.main.app.App;
7 | import org.qpython.qpy.texteditor.EditorActivity;
8 |
9 | public class EditorFileTreeAdapter extends FileTreeAdapter {
10 | public EditorFileTreeAdapter(String rootPath) {
11 | super(rootPath);
12 |
13 | }
14 |
15 | @Override
16 | void itemClick(ItemFolderLittleBinding binding, FileTreeAdapter.FileTreeBean folderBean) {
17 | String[] ext = App.getContext().getResources().getStringArray(R.array.text_ext);
18 | EditorActivity.OpenFileEvent openFileEvent = new EditorActivity.OpenFileEvent();
19 | for (String s : ext) {
20 | if (folderBean.name.endsWith(s)) {
21 | openFileEvent.filePath = folderBean.path;
22 | }
23 | }
24 | EventBus.getDefault().post(openFileEvent);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/adapter/MyViewHolder.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.adapter;
2 |
3 | import android.databinding.DataBindingUtil;
4 | import android.databinding.ViewDataBinding;
5 | import android.support.v7.widget.RecyclerView;
6 | import android.view.View;
7 |
8 | /**
9 | * Custom View Holder for store data binding
10 | * Created by Hmei on 2017-05-25.
11 | */
12 |
13 | public class MyViewHolder extends RecyclerView.ViewHolder {
14 | private T binding;
15 |
16 | public MyViewHolder(View itemView) {
17 | super(itemView);
18 | binding = DataBindingUtil.bind(itemView);
19 | }
20 |
21 | public T getBinding() {
22 | return binding;
23 | }
24 |
25 | public void setBinding(T binding) {
26 | this.binding = binding;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/app/CONF.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.app;
2 |
3 | import com.quseit.util.NAction;
4 |
5 | import org.qpython.qpysdk.QPyConstants;
6 |
7 | public class CONF implements QPyConstants {
8 |
9 | public static final String LIB_DOWNLOAD_TEMP = QPyConstants.ABSOLUTE_PATH + "/cache";
10 | public static final String QPYPI_URL = "https://pypi.org/simple/";
11 |
12 | public static final String NOTIFICATION_SP_NAME = "NOTIFICATION_EXTRA";
13 | public static final String NOTIFICATION_SP_OBJ = "NOTIFICATION_OBJ";
14 |
15 | public static final String IAP_NUM_REQUEST_URL = "http://apu.quseit.com/conf/iaplognum/org.qpython.qpy/";
16 | public static final String GOOGLE_ID_TOKEN = "955258715976-i6t5usa0tjg8favq17lsfaj885l4lilv.apps.googleusercontent.com";
17 |
18 | public static final String CLOUD_MAP_CACHE_PATH = QPyConstants.ABSOLUTE_PATH + "/lib/.cloud_cache";
19 |
20 | public static String qpypiPath() {
21 | return App.getContext().getFilesDir().getAbsolutePath() + "/lib/python"+(NAction.isQPy3(App.getContext())?"3.6":"2.7")+"/site-packages/";
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/model/AppModel.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.model;
2 |
3 | import android.graphics.drawable.Drawable;
4 | import android.support.annotation.DrawableRes;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * @credit http://developer.android.com/reference/android/content/AsyncTaskLoader.html
10 | */
11 | public abstract class AppModel implements Serializable{
12 | String mAppLabel;
13 | Drawable mIcon;
14 |
15 | public abstract Drawable getIcon();
16 | public abstract String getLabel();
17 |
18 | public abstract @DrawableRes int getIconRes();
19 | }
20 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/receiver/BootBroadcastReceiver.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.receiver;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.util.Log;
7 | import android.os.Build;
8 |
9 | import org.qpython.qsl4a.QPyScriptService;
10 |
11 |
12 | public class BootBroadcastReceiver extends BroadcastReceiver {
13 |
14 | private static final String TAG = "QPyScriptServiceR";
15 |
16 | @Override
17 | public void onReceive(Context context, Intent intent) {
18 |
19 | Log.d(TAG, "BootReceiver.onReceive: " + intent.getAction());
20 | System.out.println("QPYSL4A程序即将执行");
21 |
22 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
23 |
24 | } else {
25 |
26 | try {
27 | context.startService(new Intent(context, QPyScriptService.class));
28 | } catch (RuntimeException e) {
29 |
30 | }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/CacheKey.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server;
2 |
3 |
4 | public class CacheKey {
5 | public static final String LIB = "lib";
6 | public static final String QPYPI = "qpypi";
7 | public static final String AIPY = "aipy";
8 |
9 | public static final String LIB_LAST_REFRESH = "lib_last_refresh";
10 | public static final String QPYPI_LAST_REFRESH = "qpypi_last_refresh";
11 | public static final String AIPY_LAST_REFRESH = "aipy_last_refresh";
12 |
13 | public static final String COURSE_RECOMMEND = "course_recommend";
14 | public static final String COURSE_LATEST = "course_latest";
15 |
16 | public static final String CLOUD_FILE = "cloud_file";
17 | }
18 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/MySubscriber.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server;
2 |
3 | import android.widget.Toast;
4 |
5 | import org.qpython.qpy.R;
6 | import org.qpython.qpy.main.app.App;
7 |
8 | import java.net.ConnectException;
9 |
10 | import retrofit2.adapter.rxjava.HttpException;
11 | import rx.Subscriber;
12 |
13 | /**
14 | *
15 | * Created by Hmei on 2017-06-29.
16 | */
17 |
18 | public class MySubscriber extends Subscriber {
19 | @Override
20 | public void onCompleted() {
21 |
22 | }
23 |
24 | @Override
25 | public void onError(Throwable e) {
26 | if (e instanceof ConnectException | e instanceof HttpException) {
27 | Toast.makeText(App.getContext(), R.string.lost_connect, Toast.LENGTH_SHORT).show();
28 | } else {
29 | Toast.makeText(App.getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
30 | }
31 | }
32 |
33 | @Override
34 | public void onNext(T o) {
35 |
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/Api.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist;
2 |
3 | /**
4 | * 文 件 名: Api
5 | * 创 建 人: ZhangRonghua
6 | * 创建日期: 2018/3/8 17:28
7 | * 修改时间:
8 | * 修改备注:
9 | */
10 |
11 | public class Api {
12 | public static final String BASE_URL = "http://gist.qpython.org";
13 | }
14 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/BaseView.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist;
2 |
3 | /**
4 | * 文 件 名: BaseView
5 | * 创 建 人: ZhangRonghua
6 | * 创建日期: 2018/3/8 16:42
7 | * 修改时间:
8 | * 修改备注:
9 | */
10 |
11 | public interface BaseView {
12 | void showLoading();
13 | void hideLoading();
14 | void showToast(String msg);
15 | }
16 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/TokenManager.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 |
6 | /**
7 | * 文 件 名: TokenManager
8 | * 创 建 人: ZhangRonghua
9 | * 创建日期: 2018/3/8 16:13
10 | * 修改时间:
11 | * 修改备注:
12 | */
13 |
14 | public class TokenManager {
15 | private static SharedPreferences sharedPreferences;
16 | private static final String TOKEN_KEY = "token";
17 | private static final String GIST_KEY = "gist";
18 |
19 | public static void init(Context context){
20 | sharedPreferences = context.getSharedPreferences(GIST_KEY,Context.MODE_PRIVATE);
21 | }
22 |
23 | public static String getToken(){
24 | return sharedPreferences.getString(TOKEN_KEY,"");
25 | }
26 |
27 | public static void saveToken(String token){
28 | sharedPreferences.edit().putString(TOKEN_KEY,token).apply();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/createScreen/CreateGistView.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.createScreen;
2 |
3 | import org.qpython.qpy.main.server.gist.BaseView;
4 |
5 | /**
6 | * 文 件 名: CreateView
7 | * 创 建 人: ZhangRonghua
8 | * 创建日期: 2018/3/9 10:50
9 | * 修改时间:
10 | * 修改备注:
11 | */
12 |
13 | public interface CreateGistView extends BaseView {
14 | void onSuccess(String id);
15 | }
16 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/detailScreen/DetailView.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.detailScreen;
2 |
3 | import org.qpython.qpy.main.server.gist.BaseView;
4 | import org.qpython.qpy.main.server.gist.response.CommentBean;
5 | import org.qpython.qpy.main.server.gist.response.GistBean;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * 文 件 名: DetailView
11 | * 创 建 人: ZhangRonghua
12 | * 创建日期: 2018/3/9 10:57
13 | * 修改时间:
14 | * 修改备注:
15 | */
16 |
17 | public interface DetailView extends BaseView {
18 | void setData(GistBean gistBean);
19 |
20 | void loadMoreComments(List list);
21 |
22 | void favorite(boolean is);
23 |
24 | void addComment(CommentBean comment);
25 |
26 | void fork();
27 |
28 | void forkSuccess();
29 |
30 | void refresh(String id);
31 | }
32 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/indexScreen/GistHomeView.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.indexScreen;
2 |
3 | import org.qpython.qpy.main.server.gist.BaseView;
4 | import org.qpython.qpy.main.server.gist.response.ADBean;
5 | import org.qpython.qpy.main.server.gist.response.GistBean;
6 | import org.qpython.qpy.main.server.model.CourseAdModel;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * 文 件 名: GistHomeView
12 | * 创 建 人: ZhangRonghua
13 | * 创建日期: 2018/3/9 11:47
14 | * 修改时间:
15 | * 修改备注:
16 | */
17 |
18 | public interface GistHomeView extends BaseView {
19 | void setData(List list);
20 | void loadMoreGist(List list);
21 | void favorite(boolean is);
22 | void showError(String msg);
23 | void hideError();
24 | void setAD(List list);
25 | void hideAd();
26 | }
27 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/loginScreen/LoginView.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.loginScreen;
2 |
3 | import org.qpython.qpy.main.server.gist.BaseView;
4 |
5 | /**
6 | * 文 件 名: LoginView
7 | * 创 建 人: ZhangRonghua
8 | * 创建日期: 2018/3/8 17:12
9 | * 修改时间:
10 | * 修改备注:
11 | */
12 |
13 | public interface LoginView extends BaseView {
14 | void loginSuccess();
15 | }
16 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/myScreen/MyGistView.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.myScreen;
2 |
3 | import org.qpython.qpy.main.server.gist.BaseView;
4 | import org.qpython.qpy.main.server.gist.response.GistBean;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 文 件 名: MyGistView
10 | * 创 建 人: ZhangRonghua
11 | * 创建日期: 2018/3/9 17:16
12 | * 修改时间:
13 | * 修改备注:
14 | */
15 |
16 | public interface MyGistView extends BaseView {
17 | void deleteSuccess(String id);
18 | void addFavorites(List list);
19 | void addGists(List list);
20 | }
21 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/request/BaseRequest.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.request;
2 |
3 |
4 | import java.io.Serializable;
5 |
6 | /**
7 | * 文 件 名: BaseRequest
8 | * 创 建 人: ZhangRonghua
9 | * 创建日期: 2018/3/9 10:07
10 | * 修改时间:
11 | * 修改备注:
12 | */
13 |
14 | public class BaseRequest extends Request implements Serializable{
15 | public String gist_id;
16 |
17 | public BaseRequest(String gistId) {
18 | this.gist_id = gistId;
19 | }
20 |
21 | public String getGist_id() {
22 | return gist_id;
23 | }
24 |
25 | public void setGist_id(String gist_id) {
26 | this.gist_id = gist_id;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/request/Request.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.request;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * 文 件 名: Request
7 | * 创 建 人: ZhangRonghua
8 | * 创建日期: 2018/3/9 16:43
9 | * 修改时间:
10 | * 修改备注:
11 | */
12 |
13 | public class Request implements Serializable{
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/request/UpdateGistRequest.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.request;
2 |
3 | /**
4 | * 文 件 名: UpdateGistRequest
5 | * 创 建 人: ZhangRonghua
6 | * 创建日期: 2018/3/9 10:14
7 | * 修改时间:
8 | * 修改备注:
9 | */
10 |
11 | public class UpdateGistRequest extends BaseRequest {
12 |
13 | private String title;
14 | private String code;
15 | private String desc;
16 |
17 | public UpdateGistRequest(String gistId, String title, String desc, String code) {
18 | super(gistId);
19 | this.title = title;
20 | this.code = code;
21 | this.desc = desc;
22 | }
23 |
24 | public String getTitle() {
25 | return title;
26 | }
27 |
28 | public void setTitle(String title) {
29 | this.title = title;
30 | }
31 |
32 | public String getCode() {
33 | return code;
34 | }
35 |
36 | public void setCode(String code) {
37 | this.code = code;
38 | }
39 |
40 | public String getDesc() {
41 | return desc;
42 | }
43 |
44 | public void setDesc(String desc) {
45 | this.desc = desc;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/response/ADBean.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.response;
2 |
3 | /**
4 | * 文 件 名: ADBean
5 | * 创 建 人: ZhangRonghua
6 | * 创建日期: 2018/3/12 17:47
7 | * 修改时间:
8 | * 修改备注:
9 | */
10 |
11 | public class ADBean {
12 | private String link;
13 | private String imgUrl;
14 | private String title;
15 |
16 | public String getTitle() {
17 | return title;
18 | }
19 |
20 | public void setTitle(String title) {
21 | this.title = title;
22 | }
23 |
24 | public String getLink() {
25 | return link;
26 | }
27 |
28 | public void setLink(String link) {
29 | this.link = link;
30 | }
31 |
32 | public String getImgUrl() {
33 | return imgUrl;
34 | }
35 |
36 | public void setImgUrl(String imgUrl) {
37 | this.imgUrl = imgUrl;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/response/LoginResponse.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.response;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * 文 件 名: LoginResponse
7 | * 创 建 人: ZhangRonghua
8 | * 创建日期: 2018/3/8 16:09
9 | * 修改时间:
10 | * 修改备注:
11 | */
12 |
13 | public class LoginResponse {
14 | @SerializedName(value = "token")
15 | private String token;
16 |
17 | public String getToken() {
18 | return token;
19 | }
20 |
21 | public void setToken(String token) {
22 | this.token = token;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/response/ResponseBean.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.response;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * 文 件 名: ResponseBean
7 | * 创 建 人: ZhangRonghua
8 | * 创建日期: 2018/3/8 14:46
9 | * 修改时间:
10 | * 修改备注:
11 | */
12 |
13 | public class ResponseBean {
14 | @SerializedName(value = "msg")
15 | private String message;
16 | @SerializedName(value = "errno")
17 | private int code;
18 | @SerializedName(value = "data")
19 | private T data;
20 |
21 | public String getMessage() {
22 | return message;
23 | }
24 |
25 | public void setMessage(String message) {
26 | this.message = message;
27 | }
28 |
29 | public int getCode() {
30 | return code;
31 | }
32 |
33 | public void setCode(int code) {
34 | this.code = code;
35 | }
36 |
37 | public T getData() {
38 | return data;
39 | }
40 |
41 | public void setData(T data) {
42 | this.data = data;
43 | }
44 |
45 | public boolean success(){
46 | return code == 0;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/response/UserBean.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.response;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * 文 件 名: UserBean
7 | * 创 建 人: ZhangRonghua
8 | * 创建日期: 2018/3/9 09:40
9 | * 修改时间:
10 | * 修改备注:
11 | */
12 |
13 | public class UserBean {
14 | @SerializedName(value = "uname")
15 | private String uName;
16 |
17 | @SerializedName(value = "username")
18 | private String userName;
19 | @SerializedName(value = "avatar")
20 | private String avatar;
21 |
22 |
23 | public String getUserName() {
24 | return userName;
25 | }
26 |
27 | public String getUName() {
28 | return uName;
29 | }
30 |
31 | public void setUserName(String userName) {
32 | this.userName = userName;
33 | }
34 |
35 | public String getAvatar() {
36 | return avatar;
37 | }
38 |
39 | public void setAvatar(String avatar) {
40 | this.avatar = avatar;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/gist/service/GistServiceFactory.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.gist.service;
2 |
3 | import org.qpython.qpy.main.server.http.Retrofitor;
4 |
5 | /**
6 | * 文 件 名: GistServiceFactory
7 | * 创 建 人: ZhangRonghua
8 | * 创建日期: 2018/3/8 16:04
9 | * 修改时间:
10 | * 修改备注:
11 | */
12 |
13 | public class GistServiceFactory {
14 |
15 | public static GistService gist(){
16 | return Retrofitor.getInstance().createService(GistService.class);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/model/PayStatusModel.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.model;
2 |
3 | /**
4 | * Created by Hmei
5 | * 2/11/18.
6 | */
7 |
8 | public class PayStatusModel {
9 |
10 |
11 | /**
12 | * errorno : 0
13 | * payed : 1
14 | * msg :
15 | */
16 |
17 | private int errorno;
18 | private int payed; // >0 -> 已参与众筹/购买
19 | private String msg;
20 |
21 | public int getErrorno() {
22 | return errorno;
23 | }
24 |
25 | public void setErrorno(int errorno) {
26 | this.errorno = errorno;
27 | }
28 |
29 | public int getPayed() {
30 | return payed;
31 | }
32 |
33 | public void setPayed(int payed) {
34 | this.payed = payed;
35 | }
36 |
37 | public String getMsg() {
38 | return msg;
39 | }
40 |
41 | public void setMsg(String msg) {
42 | this.msg = msg;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/server/model/QpypiModel.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.server.model;
2 |
3 | public class QpypiModel extends BaseLibModel{
4 | public QpypiModel(String title) {
5 | super(title);
6 | }
7 |
8 | /**
9 | * src : http://qpypi.qpython.org/pyshop/package/numpy
10 | * rdate : 2017-06-01
11 | * link : http://pip:qpython@qpypi.qpython.org:11000/simple
12 | * smodule : numpy
13 | * description : numPy is the fundamental package needed for scientific computing with Python
14 | * title : Numpy
15 | * ver : 1.9.2
16 | * downloads : 20229
17 | * cat : qpypi
18 | */
19 | }
20 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/service/FTPServerService.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.service;
2 |
3 | import org.qpython.qpy.main.activity.SettingActivity;
4 |
5 | /**
6 | * Created by Hmei on 2017-06-13.
7 | */
8 |
9 | public class FTPServerService extends org.swiftp.FTPServerService {
10 | @Override
11 | protected Class> getSettingClass() {
12 | return SettingActivity.class;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/service/QPyService.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.service;
2 |
3 | import android.app.IntentService;
4 | import android.content.Intent;
5 | import android.support.annotation.Nullable;
6 |
7 | /**
8 | * Receive QPY broadcast and exec python programs
9 | * Created by Hmei on 2017-07-25.
10 | */
11 |
12 | public class QPyService extends IntentService {
13 |
14 | /**
15 | * Creates an IntentService. Invoked by your subclass's constructor.
16 | *
17 | // * @param name Used to name the worker thread, important only for debugging.
18 | */
19 | public QPyService() {
20 | super("QPyService");
21 | }
22 |
23 | @Override
24 | protected void onHandleIntent(@Nullable Intent intent) {
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/utils/Bus.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.utils;
2 |
3 |
4 | import org.greenrobot.eventbus.EventBus;
5 |
6 | public class Bus {
7 | private static final EventBus INSTANCE = new EventBus();
8 |
9 | public static EventBus getDefault() {
10 | return INSTANCE;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/widget/Indent.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.widget;
2 |
3 | /**
4 | * Created by Hmei
5 | * 11/20/17
6 | */
7 | public interface Indent {
8 | void rightIndent();
9 |
10 | void leftIndent();
11 |
12 | void tabIndent();
13 |
14 | void delIndent();
15 | }
16 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/widget/LoadingDialog.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.widget;
2 |
3 | import android.app.Dialog;
4 | import android.content.Context;
5 | import android.support.annotation.NonNull;
6 |
7 | import org.qpython.qpy.R;
8 |
9 | /**
10 | * 文 件 名: LoadingDialog
11 | * 创 建 人: ZhangRonghua
12 | * 创建日期: 2018/1/10 10:07
13 | * 邮 箱: qq798435167@gmail.com
14 | * 修改时间:
15 | * 修改备注:
16 | */
17 |
18 | public class LoadingDialog extends Dialog {
19 | public LoadingDialog(@NonNull Context context) {
20 | super(context, R.style.BaseDialog);
21 | setContentView(R.layout.dialog_loading);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/widget/RatioImageView.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.widget;
2 |
3 | import android.content.Context;
4 | import android.support.v7.widget.AppCompatImageView;
5 | import android.util.AttributeSet;
6 |
7 | /**
8 | * Created by Hmei on 2017-08-04.
9 | */
10 |
11 | public class RatioImageView extends AppCompatImageView {
12 |
13 | public RatioImageView(Context context) {
14 | super(context);
15 | }
16 |
17 | public RatioImageView(Context context, AttributeSet attrs) {
18 | super(context, attrs);
19 | }
20 |
21 | public RatioImageView(Context context, AttributeSet attrs, int defStyleAttr) {
22 | super(context, attrs, defStyleAttr);
23 | }
24 |
25 | @Override
26 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
27 | super.onMeasure(widthMeasureSpec, heightMeasureSpec);
28 | int measuredWidth = MeasureSpec.getSize(widthMeasureSpec);
29 | setMeasuredDimension(measuredWidth, measuredWidth / 3);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/main/widget/expandableview/ExpandableLayoutListener.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.widget.expandableview;
2 |
3 | public interface ExpandableLayoutListener {
4 | /**
5 | * Notifies the start of the animation.
6 | * Sync from android.animation.Animator.AnimatorListener.onAnimationStart(Animator animation)
7 | */
8 | void onAnimationStart();
9 |
10 | /**
11 | * Notifies the end of the animation.
12 | * Sync from android.animation.Animator.AnimatorListener.onAnimationEnd(Animator animation)
13 | */
14 | void onAnimationEnd();
15 |
16 | /**
17 | * Notifies the layout is going to open.
18 | */
19 | void onPreOpen();
20 |
21 | /**
22 | * Notifies the layout is going to equal close size.
23 | */
24 | void onPreClose();
25 |
26 | /**
27 | * Notifies the layout opened.
28 | */
29 | void onOpened();
30 |
31 | /**
32 | * Notifies the layout size equal closed size.
33 | */
34 | void onClosed();
35 | }
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/plugin/Common.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.plugin;
2 |
3 | public class Common {
4 | public static class PluginChangeEvent {
5 |
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/plugin/SpaceItemDecoration.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.plugin;
2 |
3 | import android.graphics.Rect;
4 | import android.support.v7.widget.RecyclerView;
5 | import android.view.View;
6 |
7 | public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
8 | private final int mSpace;
9 |
10 | public SpaceItemDecoration(int space) {
11 | mSpace = space;
12 | }
13 |
14 | @Override
15 | public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
16 | outRect.top = mSpace;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/plugin/model/LocalPluginBean.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.plugin.model;
2 |
3 | import io.realm.RealmObject;
4 | import io.realm.annotations.PrimaryKey;
5 |
6 | public class LocalPluginBean extends RealmObject {
7 |
8 | @PrimaryKey
9 | private String name;
10 |
11 | private String title;
12 |
13 | private String src;
14 |
15 | public LocalPluginBean() {
16 | }
17 |
18 | public LocalPluginBean(String name, String title, String src) {
19 | this.name = name;
20 | this.title = title;
21 | this.src = src;
22 | }
23 |
24 | public String getName() {
25 | return name;
26 | }
27 |
28 | public void setName(String name) {
29 | this.name = name;
30 | }
31 |
32 | public String getTitle() {
33 | return title;
34 | }
35 |
36 | public void setTitle(String title) {
37 | this.title = title;
38 | }
39 |
40 | public String getSrc() {
41 | return src;
42 | }
43 |
44 | public void setSrc(String src) {
45 | this.src = src;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/program/BindingHolder.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.program;
2 |
3 |
4 | import android.databinding.ViewDataBinding;
5 | import android.support.v7.widget.RecyclerView;
6 |
7 | public class BindingHolder extends RecyclerView.ViewHolder {
8 | public final T binding;
9 |
10 | public BindingHolder(T binding) {
11 | super(binding.getRoot());
12 | this.binding = binding;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/Bean.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor;
2 |
3 | import android.content.Context;
4 |
5 | public class Bean{
6 | protected String title;
7 | protected Context context;
8 | //private final String TAG = "BEAN";
9 |
10 | public Bean(Context context) {
11 | this.context = context;
12 | }
13 |
14 | public String getTitle(){
15 | return this.title;
16 | }
17 |
18 | public void setTitle(String title){
19 | this.title = title;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/FTPServerService.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor;
2 |
3 | public class FTPServerService extends org.swiftp.FTPServerService {
4 |
5 | @Override
6 | protected Class> getSettingClass() {
7 | return MFTPSettingActivity.class;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/androidlib/common/UIUtils.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.androidlib.common;
2 |
3 | import android.content.Context;
4 |
5 | /**
6 | *
7 | */
8 | public class UIUtils {
9 |
10 | /**
11 | * @param context
12 | * the current application context
13 | * @param dp
14 | * the dip value to convert
15 | * @return the px value corresponding to the given dip
16 | */
17 | public static int getPxFromDp(Context context, int dp) {
18 | float scale = context.getResources().getDisplayMetrics().density;
19 |
20 | return ((int) ((dp * scale) + 0.5f));
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/androidlib/comparator/ComparatorFilesAlpha.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.androidlib.comparator;
2 |
3 | import android.annotation.SuppressLint;
4 | import java.io.File;
5 | import java.util.Comparator;
6 |
7 | /**
8 | * Compare files Alphabetically (w/ folders listed first)
9 | *
10 | * @author x.gouchet
11 | *
12 | */
13 | @SuppressLint("DefaultLocale")
14 | public class ComparatorFilesAlpha implements Comparator {
15 |
16 | /**
17 | * @see Comparator#compare(Object, Object)
18 | */
19 | public int compare(File file1, File file2) {
20 | int result;
21 |
22 | // sort folders first
23 | if ((file1.isDirectory()) && (!file2.isDirectory())) {
24 | result = -1;
25 | } else if ((!file1.isDirectory()) && (file2.isDirectory())) {
26 | result = 1;
27 | } else {
28 | // here both are folders or both are files : sort alpha
29 | result = file1.getName().toLowerCase()
30 | .compareTo(file2.getName().toLowerCase());
31 | }
32 |
33 | return result;
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/androidlib/ui/adapter/ThumbnailProvider.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.androidlib.ui.adapter;
2 |
3 | import android.content.Context;
4 | import android.graphics.drawable.Drawable;
5 |
6 | import java.io.File;
7 |
8 | public interface ThumbnailProvider {
9 |
10 | public Drawable getThumbnailForFile(Context context, File file);
11 | }
12 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/common/CommonEnums.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.common;
2 |
3 | /**
4 | * Created by Hmei on 2017-05-11.
5 | */
6 |
7 | public class CommonEnums {
8 | public enum FileType {
9 | FOLDER,
10 | FILE,
11 | PROJECT,
12 | SCRIPT
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/common/ComparatorFilesAlpha.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.common;
2 |
3 | import java.io.File;
4 | import java.util.Comparator;
5 |
6 | /**
7 | * Compare files Alphabetically (w/ folders listed first)
8 | *
9 | * @author x.gouchet
10 | *
11 | */
12 | public class ComparatorFilesAlpha implements Comparator {
13 |
14 | /**
15 | * @see Comparator#compare(Object, Object)
16 | */
17 | @Override
18 | public int compare(File file1, File file2) {
19 | // sort folders first
20 | if ((file1.isDirectory()) && (!file2.isDirectory()))
21 | return -1;
22 | if ((!file1.isDirectory()) && (file2.isDirectory()))
23 | return 1;
24 |
25 | // here both are folders or both are files : sort alpha
26 | return file1.getName().toLowerCase().compareTo(
27 | file2.getName().toLowerCase());
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/common/FontUtils.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.common;
2 |
3 | import java.io.File;
4 |
5 | import android.content.Context;
6 |
7 | public class FontUtils {
8 |
9 | /**
10 | * @param ctx
11 | * the current application context
12 | * @return the app folder for fonts
13 | */
14 | public static File getAppFontFolder(Context ctx) {
15 | return ctx.getDir(Constants.FONT_FOLDER_NAME, Context.MODE_PRIVATE);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/common/TedChangelog.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.common;
2 |
3 | import org.qpython.qpy.R;
4 |
5 | public class TedChangelog extends org.qpython.qpy.texteditor.androidlib.common.ChangeLog {
6 |
7 | /**
8 | * @see fr.xgouchet.androidlib.common.ChangeLog#getTitleResourceForVersion(int)
9 | */
10 | @Override
11 | public int getTitleResourceForVersion(int version) {
12 | int res = 0;
13 | switch (version) {
14 | case 18:
15 | default:
16 | res = R.string.release18;
17 | }
18 | return res;
19 | }
20 |
21 | /**
22 | * @see fr.xgouchet.androidlib.common.ChangeLog#getChangeLogResourceForVersion(int)
23 | */
24 | @Override
25 | public int getChangeLogResourceForVersion(int version) {
26 | int res = 0;
27 | switch (version) {
28 | case 18:
29 | default:
30 | res = R.string.release18_log;
31 | }
32 | return res;
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/newtexteditor/AfterTextChangeListener.java:
--------------------------------------------------------------------------------
1 | public interface AfterTextChangeListener {
2 | public void afterTextChange();
3 | }
4 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/newtexteditor/MyLayout.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.newtexteditor;
2 |
3 | import android.graphics.Canvas;
4 | import android.graphics.Paint;
5 | import android.graphics.Rect;
6 | import android.text.TextPaint;
7 |
8 | public interface MyLayout {
9 | public float getLineHeight();
10 |
11 | public void setLineHeight(float lineHeight);
12 |
13 | public int getLineForOffset(int start);
14 |
15 | public int getLineOffset(int line);
16 |
17 | public float getPrimaryHorizontal(int start);
18 |
19 | public void getLineBounds(int line, Rect mBoundsOfCursor);
20 |
21 | public int getLineForVertical(int top);
22 |
23 | public void draw(Canvas canvas);
24 |
25 | public int getLineCount();
26 |
27 | public Paint getPaint();
28 |
29 | public void setPaint(TextPaint paint);
30 |
31 | public int getOffsetForHorizontal(int line, float x);
32 |
33 | public int getHeight();
34 | }
35 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/newtexteditor/ScrollBar.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.newtexteditor;
2 |
3 | import android.graphics.Canvas;
4 | import android.graphics.Color;
5 | import android.graphics.Paint;
6 |
7 | public class ScrollBar {
8 | final static float MINI_SCALE=0.1f;
9 | float mAll=100;
10 | float mStart=8;
11 | float mEnd=9;
12 | float mWidth;
13 | float mHeight;
14 | Paint mPaint=new Paint();
15 | public ScrollBar() {
16 | mPaint.setColor(Color.GRAY);
17 | }
18 |
19 | public void draw(Canvas canvas){
20 | float x=mWidth*(mStart/mAll);
21 | float y=mWidth*(mEnd/mAll);
22 | canvas.drawRect(x, 0, y, mHeight, mPaint);
23 | }
24 |
25 | public void setSize(float width,float height)
26 | {
27 | mWidth=width;
28 | mHeight=height;
29 | }
30 |
31 | public void setPosition(float all,float start,float end){
32 | mAll=all;
33 | if(mAll<=0)
34 | mAll=1;
35 | mStart=start;
36 | mEnd=end;
37 | float scale=(mEnd-mStart)/mAll;
38 | if(scalemStart)
18 | return true;
19 | }
20 | else
21 | if(start>=mEnd){
22 | return false;
23 | }
24 | else{
25 | return true;
26 | }
27 | return false;
28 | }
29 |
30 | public boolean in(int pos){
31 | if(pos>=mStart && pos=mEnd)
40 | return 1;
41 | return 0;
42 | }
43 | public int length()
44 | {
45 | return mEnd-mStart;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/ui/adapter/MyViewHolder.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.ui.adapter;
2 |
3 | import android.databinding.DataBindingUtil;
4 | import android.databinding.ViewDataBinding;
5 | import android.support.v7.widget.RecyclerView;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 |
9 |
10 | public class MyViewHolder extends RecyclerView.ViewHolder {
11 | private B binding;
12 |
13 | public MyViewHolder(View itemView) {
14 | super(itemView);
15 | binding = DataBindingUtil.bind(itemView);
16 | }
17 |
18 | public B getBinding() {
19 | return binding;
20 | }
21 |
22 | public void setBinding(B binding) {
23 | this.binding = binding;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/texteditor/ui/view/MyEditTextPreference.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.texteditor.ui.view;
2 |
3 | import android.support.v7.app.AlertDialog;
4 | import android.content.Context;
5 | import android.os.Bundle;
6 | import android.preference.EditTextPreference;
7 | import android.util.AttributeSet;
8 | import android.view.View;
9 |
10 | /**
11 | * Created by Hmei on 2017-06-14.
12 | */
13 |
14 | public class MyEditTextPreference extends EditTextPreference {
15 | public MyEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) {
16 | super(context, attrs, defStyleAttr);
17 | }
18 |
19 | public MyEditTextPreference(Context context, AttributeSet attrs) {
20 | super(context, attrs);
21 | }
22 |
23 | public MyEditTextPreference(Context context) {
24 | super(context);
25 | }
26 |
27 | @Override
28 | protected void showDialog(Bundle state) {
29 |
30 | super.showDialog(state);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/utils/OpenWebUtil.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.utils;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.net.Uri;
6 |
7 | /**
8 | * 文 件 名: OpenWebUtil
9 | * 创 建 人: ZhangRonghua
10 | * 创建日期: 2017/12/29 12:18
11 | * 邮 箱: qq798435167@gmail.com
12 | * 修改时间:
13 | * 修改备注:
14 | */
15 |
16 | public class OpenWebUtil {
17 | public static void open(Context context,String url){
18 | Intent intent = new Intent();
19 | intent.setAction(Intent.ACTION_VIEW);
20 | Uri content_url = Uri.parse(url);
21 | intent.setData(content_url);
22 | context.startActivity(Intent.createChooser(intent, "Please select your browser"));
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/qpython/src/main/java/org/qpython/qpy/utils/SolfKeybroadUtil.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.utils;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.inputmethod.InputMethodManager;
6 |
7 | /**
8 | * 文 件 名: SolfKeybroadUtil
9 | * 创 建 人: ZhangRonghua
10 | * 创建日期: 2017/12/28 11:24
11 | * 邮 箱: qq798435167@gmail.com
12 | * 修改时间:
13 | * 修改备注:
14 | */
15 |
16 | public class SolfKeybroadUtil {
17 | public static void showSolfInput(View view , boolean show) {
18 | InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
19 | if (show) {
20 | imm.showSoftInput(view, 0);
21 | } else {
22 | imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/qpython/src/main/res/anim/fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/anim/fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/anim/slide_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/qpython/src/main/res/anim/slide_in_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/anim/slide_out_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/anim/slide_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/aipy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/aipy.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/aipy_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/aipy_light.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/arrow_up.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/arvr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/arvr.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/arvr_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/arvr_light.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/basics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/basics.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/basics_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/basics_light.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/btn_close_window.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/btn_close_window.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/checked.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/database.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/database.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/database_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/database_light.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/download.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/editor_qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/editor_qrcode.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/empty.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/gist_editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/gist_editor.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/horizontal_separation_line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/horizontal_separation_line.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_about_mail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_about_mail.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_about_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_about_new.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_about_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_about_share.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_add.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_arrow_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_arrow_back.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_arrow_back_white.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_arrow_drop_down_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_arrow_drop_down_a.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_arrow_drop_down_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_arrow_drop_down_b.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_back.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_cloud_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_cloud_done.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_cloud_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_cloud_download.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_cloud_list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_cloud_list.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_cloud_notdone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_cloud_notdone.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_cloud_upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_cloud_upload.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_comment.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_copylink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_copylink.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_delete.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_facebook.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_like.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_liked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_liked.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_share.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_sharecode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_sharecode.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_com_twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_com_twitter.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_cou_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_cou_share.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_course_clicks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_course_clicks.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_delete.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editcode.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editcode_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editcode_add.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_down.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_left.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_right.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_arrow_up.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_delete_name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_delete_name.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_file.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_file_little.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_file_little.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_filetree_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_filetree_close.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_folder.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_folder_little.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_folder_little.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_gist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_gist.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_keyboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_keyboard.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_keyboardlock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_keyboardlock.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_more_horiz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_more_horiz.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_newfolder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_newfolder.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_next.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_open.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_recent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_recent.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_run.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_save.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_saveas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_saveas.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_saveup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_saveup.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_search.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_sharecode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_sharecode.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_snippet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_snippet.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_undo.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_unknown.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_editor_web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_editor_web.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_edittext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_edittext.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_edittext_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_edittext_add.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_file_rename.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_file_rename.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_folder_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_folder_open.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_gist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_gist.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_go.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_go.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_club.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_club.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_course.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_course.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_editor.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_file.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_gist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_gist.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_library.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_library.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_more.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_program.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_qpy_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_qpy_add.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_qpyapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_qpyapp.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_scan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_scan.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_home_terminal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_home_terminal.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_ipynb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_ipynb.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_right_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_right_white.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_keyboard_hide_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_keyboard_hide_black.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library_delete.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library_detail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library_detail.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library_download.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library_install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library_install.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library_reinstall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library_reinstall.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library_run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library_run.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_library_upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_library_upgrade.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_login.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_menu_preferences.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_menu_preferences.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_menu_windows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_menu_windows.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_more.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_notebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_notebook.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_open.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_play.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_program.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_program_install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_program_install.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_project_console.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_project_console.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_project_kivy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_project_kivy.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_project_kivy3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_project_kivy3.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_project_qapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_project_qapp.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_project_qapp3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_project_qapp3.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_project_webapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_project_webapp.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_project_webapp3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_project_webapp3.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_kivy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_kivy.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_kivy3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_kivy3.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_qapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_qapp.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_qapp3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_qapp3.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_webapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_webapp.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_webapp3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_pyfile_webapp3.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_qpypi_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_qpypi_download.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_recent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_recent.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_remove.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_richpush_actionbar_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_richpush_actionbar_back.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_richpush_actionbar_divider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_richpush_actionbar_divider.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_right.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_save1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_save1.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_save2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_save2.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_stepin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_stepin.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_tab2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_tab2.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_terminal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_terminal.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_thumb_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_thumb_up.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_undo.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_undo_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_undo_2.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/ic_white_arrow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/ic_white_arrow_right.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_course.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_course.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_empty_net.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_empty_net.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_emptycourse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_emptycourse.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_home_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_home_bg.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_home_bg_land.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_home_bg_land.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_home_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_home_logo.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_home_logo_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_home_logo_3.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_homebar_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_homebar_bg.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/img_me_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/img_me_bg.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/mohu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/mohu.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/panel_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/panel_bg.9.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/prev.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/redo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/redo.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/scan_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/scan_image.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/sorry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/sorry.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/terminal_mini_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/terminal_mini_icon.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/textfield_black.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/textfield_black.9.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/textfield_dracula.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/textfield_dracula.9.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/textfield_matrix.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/textfield_matrix.9.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/textfield_sky.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/textfield_sky.9.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/textfield_white.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/textfield_white.9.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/transparent.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/undo.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/up.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/web.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable-xxhdpi/web_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/drawable-xxhdpi/web_light.png
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/bg_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/bg_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/close_background.xml:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/corners_5_white_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/edit_text_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
7 |
8 |
9 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/edit_text_cursor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/edit_text_green_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
7 |
8 |
9 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/gray_btn_rect.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/gray_line_btn_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/green_btn_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/green_btn_rect.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/green_dot_shape.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/green_gray_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/green_rect_line.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/ic_check_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/ic_clear_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/ic_right_a.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/notebook_checkbox.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/purchase_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/richpush_btn_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
14 |
15 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/rotate_arrow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
10 |
11 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/select_green_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/select_tab_indicator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
-
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/silver_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/star_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/toolbar_button_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/white_dot_shape.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/white_rect_stroke.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/widget_title_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/qpython/src/main/res/drawable/yellow_bg_thumbs_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
6 |
9 |
12 |
13 |
14 |
19 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout-v14/buttons_ok_cancel.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
17 |
18 |
24 |
25 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/activity_local_plugin_install.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/activity_qrcode.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
16 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
15 |
16 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/buttons_ok_cancel.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
17 |
18 |
24 |
25 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/dialog_feedback.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/dialog_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/dialog_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/fragment_local.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/fragment_my_share.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
28 |
29 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/header_last_refresh_time.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/header_lib_description.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
21 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/header_lib_install.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
18 |
19 |
23 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_app_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
16 |
17 |
28 |
29 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_course_funding_index.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_course_index.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_file.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_pop_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_price.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
15 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_run_program.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/item_square_img.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/jpush_popwin_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/layout_toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/layout_widget_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
21 |
22 |
23 |
30 |
31 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/popup_add_editor.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/widget_banner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/widget_no_net.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
17 |
18 |
25 |
26 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/widget_shortcut.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/widget_shortcut_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/widget_shortcut_imgbtn.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/layout/window_list_new_window.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
26 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/about_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/comment_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/community_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/editor_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/log_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/news_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/notebook_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/plugin_installed_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/plugin_uninstalled_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/plugin_update_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/qr_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/menu/refresh_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/raw/beep.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/raw/beep.ogg
--------------------------------------------------------------------------------
/qpython/src/main/res/raw/keep.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/qpython/src/main/res/raw/projects2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/raw/projects2.zip
--------------------------------------------------------------------------------
/qpython/src/main/res/raw/projects3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/raw/projects3.zip
--------------------------------------------------------------------------------
/qpython/src/main/res/raw/scripts2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/raw/scripts2.zip
--------------------------------------------------------------------------------
/qpython/src/main/res/raw/scripts3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/main/res/raw/scripts3.zip
--------------------------------------------------------------------------------
/qpython/src/main/res/values-v11/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 4dp
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values-v21/colors.xml:
--------------------------------------------------------------------------------
1 |
2 | #8BC34A
3 |
4 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values-zh-rCN/toasts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 文件不存在
5 | 文件已经从最近编辑中移除
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values-zh-rTW/toasts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 文件不存在
4 | 文件已經從最近編輯中移除
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
7 | 16dp
8 | 5dp
9 |
10 | 60dp
11 |
12 |
13 | 16dp
14 |
15 | 4dp
16 |
17 | 45dp
18 | 16dp
19 | 6dp
20 | 45dp
21 |
22 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/id.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/jpush_style.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/selectable_item_selector_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/string_program_explorer.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/strings_activity_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/strings_plugin_manager.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Plugin uninstall complete
4 | Plugin install complete
5 | Plugin install fail
6 | OK
7 | Select plugin
8 | Plugin manager
9 | Permission deny
10 |
11 | Install
12 | UnInstall
13 | Update
14 | Detail
15 |
16 |
17 | - Local plugin
18 | - Cloud plugin
19 |
20 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/textview_dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/qpython/src/main/res/values/textview_styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/qpython/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 127.0.0.1
5 | localhost
6 | apu2.quseit.com
7 | qpy.io
8 | dl.qpy.io
9 | gist.qpy.io
10 | qpython.org
11 | gist.qpython.org
12 | edu.qpython.org
13 | www.qpython.org
14 | qpypi.qpython.org
15 | qpypi3.qpython.org
16 |
17 |
18 |
--------------------------------------------------------------------------------
/qpython/src/oh/java/org/qpython/qpy/main/app/AppInit.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.app;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 |
6 | import org.qpython.qpy.BuildConfig;
7 | import org.qpython.qpy.codeshare.ShareCodeUtil;
8 | //import com.hipipal.qpyplus.wxapi.WXAPIManager;
9 |
10 | /**
11 | * 文 件 名: AppInit
12 | * 创 建 人: ZhangRonghua
13 | * 创建日期: 2018/3/8 15:13
14 | * 修改时间:
15 | * 修改备注:
16 | */
17 |
18 | public class AppInit {
19 |
20 | public static void init(Context context){
21 | //wx
22 | // WXAPIManager.init(context);
23 | ShareCodeUtil.getInstance();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/qpython/src/oh/res/drawable-xxhdpi/ic_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/oh/res/drawable-xxhdpi/ic_login.png
--------------------------------------------------------------------------------
/qpython/src/oh/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 使用微信登录
4 | QPython OH
5 |
--------------------------------------------------------------------------------
/qpython/src/oh/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 使用微信登錄
4 | Qpython L
5 |
--------------------------------------------------------------------------------
/qpython/src/oh/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Sign in with Wechat
3 | QPython OH
4 |
5 |
--------------------------------------------------------------------------------
/qpython/src/ol/java/org/qpython/qpy/main/app/AppInit.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.app;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 |
6 | import com.google.firebase.FirebaseApp;
7 | import com.google.firebase.iid.FirebaseInstanceId;
8 | import com.quseit.config.BASE_CONF;
9 |
10 | import org.qpython.qpy.codeshare.ShareCodeUtil;
11 |
12 | /**
13 | * 文 件 名: AppInit
14 | * 创 建 人: ZhangRonghua
15 | * 创建日期: 2018/3/8 15:13
16 | * 修改时间:
17 | * 修改备注:
18 | */
19 |
20 | public class AppInit {
21 |
22 | public static void init(Context context){
23 |
24 | FirebaseApp.initializeApp(context);
25 | if (BASE_CONF.DEBUG) {
26 | try {
27 | FirebaseInstanceId xx = FirebaseInstanceId.getInstance();
28 | if (xx != null) {
29 | Log.e("Firebase", xx.getToken());
30 | }
31 | } catch (Exception e) {
32 | e.printStackTrace();
33 | }
34 | }
35 | ShareCodeUtil.getInstance();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/qpython/src/ol/java/org/qpython/qpy/main/receiver/LeancloudReceiver.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.receiver;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.BroadcastReceiver;
5 | import android.content.Context;
6 | import android.content.Intent;
7 |
8 | /**
9 | * 处理leancloud的消息推送
10 | */
11 | public class LeancloudReceiver extends BroadcastReceiver {
12 |
13 | @SuppressLint("UnsafeProtectedBroadcastReceiver")
14 | @Override
15 | public void onReceive(Context context, Intent intent) {
16 |
17 | }
18 | }
--------------------------------------------------------------------------------
/qpython/src/ol/java/org/qpython/qpy/main/service/MyFirebaseInstanceIDService.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.service;
2 |
3 | import com.google.firebase.iid.FirebaseInstanceId;
4 | import com.google.firebase.iid.FirebaseInstanceIdService;
5 |
6 | /**
7 | * Created by Hmei on 2017-06-29.
8 | */
9 |
10 | public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
11 | @Override
12 | public void onTokenRefresh() {
13 | String refreshedToken = FirebaseInstanceId.getInstance().getToken();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/qpython/src/ol/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 使用谷歌登录
4 | QPython OL
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/ol/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Sign in with Google
3 | QPython OL
4 |
5 |
--------------------------------------------------------------------------------
/qpython/src/op/java/org/qpython/qpy/main/app/AppInit.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.app;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 |
6 | import org.qpython.qpy.BuildConfig;
7 | import org.qpython.qpy.codeshare.ShareCodeUtil;
8 | //import com.hipipal.qpyplus.wxapi.WXAPIManager;
9 |
10 | /**
11 | * 文 件 名: AppInit
12 | * 创 建 人: ZhangRonghua
13 | * 创建日期: 2018/3/8 15:13
14 | * 修改时间:
15 | * 修改备注:
16 | */
17 |
18 | public class AppInit {
19 |
20 | public static void init(Context context){
21 | //wx
22 | // WXAPIManager.init(context);
23 | ShareCodeUtil.getInstance();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/qpython/src/op/res/drawable-xxhdpi/ic_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/qpython/src/op/res/drawable-xxhdpi/ic_login.png
--------------------------------------------------------------------------------
/qpython/src/op/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 使用微信登录
4 | QPython OP
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/op/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 使用微信登錄
4 | Qpython L
5 |
--------------------------------------------------------------------------------
/qpython/src/op/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Sign in with Wechat
3 | QPython OP
4 |
5 |
--------------------------------------------------------------------------------
/qpython/src/os/java/org/qpython/qpy/main/app/AppInit.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.app;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 |
6 | import com.google.firebase.FirebaseApp;
7 | import com.google.firebase.iid.FirebaseInstanceId;
8 | import com.quseit.config.BASE_CONF;
9 |
10 | import org.qpython.qpy.codeshare.ShareCodeUtil;
11 |
12 | /**
13 | * 文 件 名: AppInit
14 | * 创 建 人: ZhangRonghua
15 | * 创建日期: 2018/3/8 15:13
16 | * 修改时间:
17 | * 修改备注:
18 | */
19 |
20 | public class AppInit {
21 |
22 | public static void init(Context context){
23 |
24 | FirebaseApp.initializeApp(context);
25 | if (BASE_CONF.DEBUG) {
26 | try {
27 | FirebaseInstanceId xx = FirebaseInstanceId.getInstance();
28 | if (xx != null) {
29 | Log.e("Firebase", xx.getToken());
30 | }
31 | } catch (Exception e) {
32 | e.printStackTrace();
33 | }
34 | }
35 | ShareCodeUtil.getInstance();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/qpython/src/os/java/org/qpython/qpy/main/receiver/LeancloudReceiver.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.receiver;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.BroadcastReceiver;
5 | import android.content.Context;
6 | import android.content.Intent;
7 |
8 | /**
9 | * 处理leancloud的消息推送
10 | */
11 | public class LeancloudReceiver extends BroadcastReceiver {
12 |
13 | @SuppressLint("UnsafeProtectedBroadcastReceiver")
14 | @Override
15 | public void onReceive(Context context, Intent intent) {
16 |
17 | }
18 | }
--------------------------------------------------------------------------------
/qpython/src/os/java/org/qpython/qpy/main/service/MyFirebaseInstanceIDService.java:
--------------------------------------------------------------------------------
1 | package org.qpython.qpy.main.service;
2 |
3 | import com.google.firebase.iid.FirebaseInstanceId;
4 | import com.google.firebase.iid.FirebaseInstanceIdService;
5 |
6 | /**
7 | * Created by Hmei on 2017-06-29.
8 | */
9 |
10 | public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
11 | @Override
12 | public void onTokenRefresh() {
13 | String refreshedToken = FirebaseInstanceId.getInstance().getToken();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/qpython/src/os/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 使用谷歌登录
4 | QPython OS
5 |
6 |
--------------------------------------------------------------------------------
/qpython/src/os/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Sign in with Google
3 | QPython OS
4 |
5 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':qpython',
2 | ':termemulator',
3 | ':termexec',
4 | ':qpypluginman',
5 | ':qpysl4a',
6 | ':qpysdk',
7 | ':qbaselib',
8 | ':qftplib'
9 |
--------------------------------------------------------------------------------
/termemulator/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 | buildToolsVersion rootProject.ext.buildToolsVersion
6 | defaultConfig {
7 | minSdkVersion rootProject.ext.minSdkVersion
8 | targetSdkVersion rootProject.ext.targetSdkVersion
9 | versionCode 1
10 | versionName "1.0"
11 | }
12 |
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
17 | }
18 | }
19 |
20 | lintOptions {
21 | abortOnError false
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/termemulator/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
--------------------------------------------------------------------------------
/termemulator/src/main/java/jackpal/androidterm/emulatorview/GrowableIntArray.java:
--------------------------------------------------------------------------------
1 | package jackpal.androidterm.emulatorview;
2 |
3 | class GrowableIntArray {
4 | GrowableIntArray(int initalCapacity) {
5 | mData = new int[initalCapacity];
6 | mLength = 0;
7 | }
8 |
9 | void append(int i) {
10 | if (mLength + 1 > mData.length) {
11 | int newLength = Math.max((mData.length * 3) >> 1, 16);
12 | int[] temp = new int[newLength];
13 | System.arraycopy(mData, 0, temp, 0, mLength);
14 | mData = temp;
15 | }
16 | mData[mLength++] = i;
17 | }
18 |
19 | int length() {
20 | return mLength;
21 | }
22 |
23 | int at(int index) {
24 | return mData[index];
25 | }
26 |
27 | int[] mData;
28 | int mLength;
29 | }
30 |
--------------------------------------------------------------------------------
/termemulator/src/main/java/jackpal/androidterm/emulatorview/UpdateCallback.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2007 The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package jackpal.androidterm.emulatorview;
18 |
19 | /**
20 | * Generic callback to be invoked to notify of updates.
21 | */
22 | public interface UpdateCallback {
23 | /**
24 | * Callback function to be invoked when an update happens.
25 | */
26 | void onUpdate();
27 | }
28 |
--------------------------------------------------------------------------------
/termemulator/src/main/java/jackpal/androidterm/emulatorview/compat/AndroidCharacterCompat.java:
--------------------------------------------------------------------------------
1 | package jackpal.androidterm.emulatorview.compat;
2 |
3 | import android.text.AndroidCharacter;
4 |
5 | /**
6 | * Definitions related to android.text.AndroidCharacter
7 | */
8 | public class AndroidCharacterCompat {
9 | public static final int EAST_ASIAN_WIDTH_NEUTRAL = 0;
10 | public static final int EAST_ASIAN_WIDTH_AMBIGUOUS = 1;
11 | public static final int EAST_ASIAN_WIDTH_HALF_WIDTH = 2;
12 | public static final int EAST_ASIAN_WIDTH_FULL_WIDTH = 3;
13 | public static final int EAST_ASIAN_WIDTH_NARROW = 4;
14 | public static final int EAST_ASIAN_WIDTH_WIDE = 5;
15 |
16 | private static class Api8OrLater {
17 | public static int getEastAsianWidth(char c) {
18 | return AndroidCharacter.getEastAsianWidth(c);
19 | }
20 | }
21 |
22 | public static int getEastAsianWidth(char c) {
23 | if (AndroidCompat.SDK >= 8) {
24 | return Api8OrLater.getEastAsianWidth(c);
25 | } else {
26 | return EAST_ASIAN_WIDTH_NARROW;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/termemulator/src/main/java/jackpal/androidterm/emulatorview/compat/ClipboardManagerCompat.java:
--------------------------------------------------------------------------------
1 | package jackpal.androidterm.emulatorview.compat;
2 |
3 | public interface ClipboardManagerCompat {
4 | CharSequence getText();
5 |
6 | boolean hasText();
7 |
8 | void setText(CharSequence text);
9 | }
10 |
--------------------------------------------------------------------------------
/termemulator/src/main/java/jackpal/androidterm/emulatorview/compat/ClipboardManagerCompatFactory.java:
--------------------------------------------------------------------------------
1 | package jackpal.androidterm.emulatorview.compat;
2 |
3 | import android.content.Context;
4 |
5 | public class ClipboardManagerCompatFactory {
6 |
7 | private ClipboardManagerCompatFactory() {
8 | /* singleton */
9 | }
10 |
11 | public static ClipboardManagerCompat getManager(Context context) {
12 | if (AndroidCompat.SDK < 11) {
13 | return new ClipboardManagerCompatV1(context);
14 | } else {
15 | return new ClipboardManagerCompatV11(context);
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/termemulator/src/main/java/jackpal/androidterm/emulatorview/compat/ClipboardManagerCompatV1.java:
--------------------------------------------------------------------------------
1 | package jackpal.androidterm.emulatorview.compat;
2 |
3 | import android.content.Context;
4 | import android.text.ClipboardManager;
5 |
6 | @SuppressWarnings("deprecation")
7 | public class ClipboardManagerCompatV1 implements ClipboardManagerCompat {
8 | private final ClipboardManager clip;
9 |
10 | public ClipboardManagerCompatV1(Context context) {
11 | clip = (ClipboardManager) context.getApplicationContext()
12 | .getSystemService(Context.CLIPBOARD_SERVICE);
13 | }
14 |
15 | @Override
16 | public CharSequence getText() {
17 | return clip.getText();
18 | }
19 |
20 | @Override
21 | public boolean hasText() {
22 | return clip.hasText();
23 | }
24 |
25 | @Override
26 | public void setText(CharSequence text) {
27 | clip.setText(text);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/termemulator/src/main/res/drawable-nodpi/atari_small_nodpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/termemulator/src/main/res/drawable-nodpi/atari_small_nodpi.png
--------------------------------------------------------------------------------
/termemulator/src/main/res/drawable-xxhdpi/ic_terminal_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/termemulator/src/main/res/drawable-xxhdpi/ic_terminal_history.png
--------------------------------------------------------------------------------
/termemulator/src/main/res/drawable-xxhdpi/tab1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/termemulator/src/main/res/drawable-xxhdpi/tab1.png
--------------------------------------------------------------------------------
/termemulator/src/main/res/drawable-xxhdpi/tab2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/termemulator/src/main/res/drawable-xxhdpi/tab2.png
--------------------------------------------------------------------------------
/termemulator/src/main/res/drawable/atari_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qpython-android/qpython/0a17ff84dece9f3e3473032733b21d6fc20000ef/termemulator/src/main/res/drawable/atari_small.png
--------------------------------------------------------------------------------
/termemulator/src/main/res/layout/widget_shortcut_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/termemulator/src/main/res/layout/widget_shortcut_imgbtn.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/termexec/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /home/uniqa/android-sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include mPath and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/termexec/src/androidTest/java/jackpal/androidterm/libtermexec/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package jackpal.androidterm.libtermexec;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/termexec/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/termexec/src/main/jni/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH := $(call my-dir)
2 | include $(CLEAR_VARS)
3 |
4 | LOCAL_MODULE := termexec
5 | LOCAL_LDFLAGS := -Wl,--build-id
6 | LOCAL_LDLIBS := \
7 | -llog \
8 | -lc \
9 |
10 | LOCAL_SRC_FILES := \
11 | process.cpp \
12 |
13 | LOCAL_C_INCLUDES += ../jni
14 |
15 | include $(BUILD_SHARED_LIBRARY)
16 |
17 | # for androidterm
18 | include $(CLEAR_VARS)
19 |
20 | LOCAL_MODULE := androidterm
21 | LOCAL_LDFLAGS := -Wl,--build-id
22 | LOCAL_LDLIBS := \
23 | -llog \
24 |
25 | LOCAL_SRC_FILES := \
26 | common.cpp \
27 | fileCompat.cpp \
28 | termExec.cpp \
29 |
30 | LOCAL_C_INCLUDES += ../jni
31 |
32 | include $(BUILD_SHARED_LIBRARY)
33 |
--------------------------------------------------------------------------------
/termexec/src/main/jni/Application.mk:
--------------------------------------------------------------------------------
1 | # Build for ARMv5TE, mips and x86 architectures.
2 | APP_ABI := armeabi-v7a arm64-v8a
3 | APP_PLATFORM := android-15
4 |
--------------------------------------------------------------------------------
/termexec/src/main/jni/fileCompat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2012 Steven Luo
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #ifndef _FILECOMPAT_H
18 | #define _FILECOMPAT_H 1
19 |
20 | #include "jni.h"
21 |
22 | int init_FileCompat(JNIEnv *env);
23 |
24 | #endif /* !defined(_FILECOMPAT_H) */
25 |
--------------------------------------------------------------------------------
/termexec/src/main/jni/termExec.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2012 Steven Luo
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | #ifndef _TERMEXEC_H
18 | #define _TERMEXEC_H 1
19 |
20 | #include "jni.h"
21 |
22 | int init_Exec(JNIEnv *env);
23 |
24 | #endif /* !defined(_TERMEXEC_H) */
25 |
--------------------------------------------------------------------------------
/utils/copy.sh:
--------------------------------------------------------------------------------
1 | cp {../qpython-android/,}$1
2 | git add $1
3 |
--------------------------------------------------------------------------------
/utils/diff.sh:
--------------------------------------------------------------------------------
1 | diff -u {../qpython-android/,}$1
2 |
--------------------------------------------------------------------------------