Skip to content

Commit 086c068

Browse files
committed
Add qpynotebook3
1 parent 40e1482 commit 086c068

File tree

13 files changed

+183
-161
lines changed

13 files changed

+183
-161
lines changed

qpysdk/src/main/java/org/qpython/qpysdk/QPyConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public interface QPyConstants extends BASE_CONF {
1111
final String KIVY_PROJECT = "kivy";
1212
final String PYGAME_PROJECT = "pygame";
1313
final String QUIET_PROJECT = "quiet";
14+
final String QSL4A_PROJECT = "qsl4a";
1415

1516
String BASE_PATH = "qpython";
1617
String AD_URL = "https://apu2.quseit.com/ad/";

qpython/src/main/assets/QPy_SL4AApp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ There is another Sample project: https://github.com/qpython-android/qpy-calcount
66
"""
77
import qpy
88
import androidhelper
9-
import urllib.request as ur
9+
try:
10+
import urllib.request as ur
11+
except:
12+
import urllib as ur
1013
from qsl4ahelper.fullscreenwrapper2 import *
1114

1215
droid = androidhelper.Android()

qpython/src/main/assets/notebook3.mp3

13.3 MB
Binary file not shown.

qpython/src/main/java/org/qpython/qpy/main/activity/HomeMainActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ private void initQPy(boolean py3) {
367367
qpysdk.extractRes(py3?"private33":"private3", HomeMainActivity.this.getFilesDir());
368368
File externalStorage = new File(Environment.getExternalStorageDirectory(), "qpython");
369369
FileHelper.createDirIfNExists(externalStorage + "/cache");
370+
FileHelper.createDirIfNExists(externalStorage + "/log");
370371
qpysdk.extractRes(py3?"public3":"public", new File(externalStorage + "/lib"));
371372
extractRes();
372373
}).start();

qpython/src/main/java/org/qpython/qpy/main/fragment/MyCourseFragment.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ private void debugAddFakeData() {
147147
" \"downloads\": \"10,000+\",\n" +
148148
" \"level\": 1,\n" +
149149
" \"rdate\": \"2017-06-15\",\n" +
150-
" \"link\": \"http://edu.qpython.org/qpython-quick-start/index.html\",\n" +
150+
" \"link\": \"https://edu.qpython.org/qpython-quick-start/index.html\",\n" +
151151
" \"type\": \"free\",\n" +
152-
" \"logo\": \"http://edu.qpython.org/static/course-qpython-quick-start.png\",\n" +
152+
" \"logo\": \"https://edu.qpython.org/static/course-qpython-quick-start.png\",\n" +
153153
" \"smodule\": \"qpython-quick-start\"\n" +
154154
" },\n" +
155155
" \"list\": [\n" +
@@ -169,9 +169,9 @@ private void debugAddFakeData() {
169169
" \"downloads\": \"10,000+\",\n" +
170170
" \"level\": 1,\n" +
171171
" \"rdate\": \"2017-06-15\",\n" +
172-
" \"link\": \"http://edu.qpython.org/qpython-quick-start/index.html\",\n" +
172+
" \"link\": \"https://edu.qpython.org/qpython-quick-start/index.html\",\n" +
173173
" \"type\": \"free\",\n" +
174-
" \"logo\": \"http://edu.qpython.org/static/course-qpython-quick-start.png\",\n" +
174+
" \"logo\": \"https://edu.qpython.org/static/course-qpython-quick-start.png\",\n" +
175175
" \"smodule\": \"qpython-quick-start\"\n" +
176176
" },\n" +
177177
" \"list\": [\n" +

qpython/src/main/java/org/qpython/qpy/main/fragment/SettingFragment.java

Lines changed: 140 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ public class SettingFragment extends PreferenceFragment {
7474
private CheckBoxPreference sl4a, running_state, root, display_pwd, notebook_run;
7575

7676
private PreferenceScreen py_inter,notebook_page;
77-
private Preference py3,py2,py2compatible,notebook_res;
78-
private Preference update_qpy3,update_qpy2compatible;
77+
private Preference py3,py2; //notebook_res, py2compatible
78+
//private Preference update_qpy3,update_qpy2compatible;
7979

8080
private SwitchPreference log, app;
8181
private BroadcastReceiver ftpServerReceiver = new BroadcastReceiver() {
@@ -149,16 +149,22 @@ private void initSettings() {
149149
py_inter = (PreferenceScreen) findPreference(getString(R.string.key_py_inter));
150150
notebook_page = (PreferenceScreen) findPreference(getString(R.string.key_notebook_page));
151151
notebook_page.setTitle(MessageFormat.format(getString(R.string.notebook_for_py), NAction.getPyVer(getActivity())));
152-
notebook_page.setSummary(NotebookUtil.isNotebookLibInstall(getActivity())?R.string.notebook_installed : R.string.notebook_not_install);
152+
if (NAction.isQPy3(getActivity())) {
153+
notebook_page.setSummary(NotebookUtil.isNotebookLibInstall(getActivity()) ? R.string.notebook_installed : R.string.notebook_not_started);
153154

154-
notebook_res = (Preference) findPreference(getString(R.string.key_notebook));
155-
notebook_res.setSummary((NotebookUtil.isNotebookLibInstall(getActivity())||NotebookUtil.isNotebookInstall(getActivity()))?R.string.choose_notebook_inter:R.string.install_notebook_first);
155+
} else {
156+
notebook_page.setSummary( R.string.notebook_py3_support);
157+
158+
}
159+
160+
//notebook_res = (Preference) findPreference(getString(R.string.key_notebook));
161+
//notebook_res.setSummary((NotebookUtil.isNotebookLibInstall(getActivity())||NotebookUtil.isNotebookInstall(getActivity()))?R.string.choose_notebook_inter:R.string.install_notebook_first);
156162
notebook_run = (CheckBoxPreference) findPreference(getString(R.string.key_notebook_run));
157163

158-
update_qpy3 = (Preference)findPreference(getString(R.string.key_update_qpy3));
159-
update_qpy2compatible = (Preference)findPreference(getString(R.string.key_update_qpy2compatible));
164+
//update_qpy3 = (Preference)findPreference(getString(R.string.key_update_qpy3));
165+
//update_qpy2compatible = (Preference)findPreference(getString(R.string.key_update_qpy2compatible));
160166
py2 = (Preference) findPreference(getString(R.string.key_py2));
161-
py2compatible = (Preference) findPreference(getString(R.string.key_py2compatible));
167+
//py2compatible = (Preference) findPreference(getString(R.string.key_py2compatible));
162168
py3 = (Preference) findPreference(getString(R.string.key_py3));
163169

164170

@@ -248,93 +254,100 @@ private void initListener() {
248254
return false;
249255
});
250256

251-
notebook_res.setOnPreferenceClickListener(preference -> {
252-
Log.d(TAG, "notebook_res.setOnPreferenceClickListener");
253-
254-
installNotebook();
255-
return false;
256-
257-
});
257+
// notebook_res.setOnPreferenceClickListener(preference -> {
258+
// Log.d(TAG, "notebook_res.setOnPreferenceClickListener");
259+
//
260+
// installNotebook();
261+
// return false;
262+
//
263+
// });
258264

265+
// if (isQPycRelease(false)) {
266+
// update_qpy3.setSummary(getString(R.string.choose_py3_inter));
267+
// } else {
268+
// update_qpy3.setSummary(getString(R.string.install_py3_first));
269+
//
270+
// }
271+
// if (isQPycRelease(true)) {
272+
// update_qpy2compatible.setSummary(getString(R.string.choose_py2compatible_inter));
273+
// } else {
274+
// update_qpy2compatible.setSummary(getString(R.string.install_py2compatible_first));
275+
// }
276+
277+
// update_qpy2compatible.setOnPreferenceClickListener(preference -> {
278+
//
279+
// new AlertDialog.Builder(getActivity(), R.style.MyDialog)
280+
// .setTitle(R.string.notice)
281+
// .setMessage(R.string.install_py2compatible_hint)
282+
// .setPositiveButton(R.string.download_it, (dialog1, which)->getQPYC(true))
283+
// .setNegativeButton(R.string.cancel, (dialog1, which) -> dialog1.dismiss())
284+
// .create()
285+
// .show();
286+
//
287+
//
288+
//
289+
// return false;
290+
// });
291+
292+
// update_qpy3.setOnPreferenceClickListener(preference -> {
293+
// Log.d(TAG, "update_qpy3.setOnPreferenceClickListener");
294+
// new AlertDialog.Builder(getActivity(), R.style.MyDialog)
295+
// .setTitle(R.string.notice)
296+
// .setMessage(R.string.install_py3_hint)
297+
// .setPositiveButton(R.string.download_it, (dialog1, which)->getQPYC(false))
298+
// .setNegativeButton(R.string.cancel, (dialog1, which) -> dialog1.dismiss())
299+
// .create()
300+
// .show();
301+
//
302+
// return false;
303+
//
304+
// });
305+
if (!NAction.isQPy3(getActivity())) {
306+
notebook_run.setSummary(getString(R.string.notebook_py3_support));
307+
notebook_run.setEnabled(false);
259308

260-
if (isQPycRelease(false)) {
261-
update_qpy3.setSummary(getString(R.string.choose_py3_inter));
262309
} else {
263-
update_qpy3.setSummary(getString(R.string.install_py3_first));
310+
notebook_run.setChecked(NotebookUtil.isNBSrvSet(getActivity()));
264311

265-
}
266-
if (isQPycRelease(true)) {
267-
update_qpy2compatible.setSummary(getString(R.string.choose_py2compatible_inter));
268-
} else {
269-
update_qpy2compatible.setSummary(getString(R.string.install_py2compatible_first));
270-
}
312+
notebook_run.setOnPreferenceChangeListener((preference, newValue) -> {
271313

272-
update_qpy2compatible.setOnPreferenceClickListener(preference -> {
314+
if (NotebookUtil.isNotebookInstall(getActivity()) && !NotebookUtil.isNotebookLibInstall(getActivity())) {
273315

274-
new AlertDialog.Builder(getActivity(), R.style.MyDialog)
275-
.setTitle(R.string.notice)
276-
.setMessage(R.string.install_py2compatible_hint)
277-
.setPositiveButton(R.string.download_it, (dialog1, which)->getQPYC(true))
278-
.setNegativeButton(R.string.cancel, (dialog1, which) -> dialog1.dismiss())
279-
.create()
280-
.show();
281-
282-
283-
284-
return false;
285-
});
286-
287-
update_qpy3.setOnPreferenceClickListener(preference -> {
288-
Log.d(TAG, "update_qpy3.setOnPreferenceClickListener");
289-
new AlertDialog.Builder(getActivity(), R.style.MyDialog)
290-
.setTitle(R.string.notice)
291-
.setMessage(R.string.install_py3_hint)
292-
.setPositiveButton(R.string.download_it, (dialog1, which)->getQPYC(false))
293-
.setNegativeButton(R.string.cancel, (dialog1, which) -> dialog1.dismiss())
294-
.create()
295-
.show();
296-
297-
return false;
298-
299-
});
300-
301-
notebook_run.setChecked(NotebookUtil.isNBSrvSet(getActivity()));
316+
releaseNotebook(preference);
317+
/*new AlertDialog.Builder(getActivity(), R.style.MyDialog)
318+
.setTitle(R.string.notice)
319+
.setMessage(R.string.notebook_first)
320+
.setPositiveButton(R.string.ok, (dialog1, which) -> )
321+
.create()
322+
.show();*/
302323

303-
notebook_run.setOnPreferenceChangeListener((preference, newValue) -> {
304324

305-
if (NotebookUtil.isNotebookInstall(getActivity()) && !NotebookUtil.isNotebookLibInstall(getActivity())) {
325+
} else if (NotebookUtil.isNotebookLibInstall(getActivity())){
306326

307-
releaseNotebook(preference);
308-
/*new AlertDialog.Builder(getActivity(), R.style.MyDialog)
309-
.setTitle(R.string.notice)
310-
.setMessage(R.string.notebook_first)
311-
.setPositiveButton(R.string.ok, (dialog1, which) -> )
312-
.create()
313-
.show();*/
327+
if ((boolean)newValue) {
328+
NotebookUtil.startNotebookService2(getActivity());
314329

330+
} else {
331+
NotebookUtil.killNBSrv(getActivity());
332+
}
333+
notebook_page.setSummary(NotebookUtil.isNotebookLibInstall(getActivity())?R.string.notebook_installed : R.string.notebook_not_started);
315334

316-
} else if (NotebookUtil.isNotebookLibInstall(getActivity())){
317335

318-
if ((boolean)newValue) {
319-
NotebookUtil.startNotebookService2(getActivity());
320336
} else {
321-
NotebookUtil.killNBSrv(getActivity());
322-
}
323-
324-
} else {
325337

326-
new AlertDialog.Builder(getActivity(), R.style.MyDialog)
327-
.setTitle(R.string.notice)
328-
.setMessage(R.string.install_notebook_first)
329-
.setPositiveButton(R.string.ok, (dialog1, which) -> dialog1.dismiss())
330-
.create()
331-
.show();
332-
notebook_run.setChecked(false);
333-
return false;
334-
}
338+
new AlertDialog.Builder(getActivity(), R.style.MyDialog)
339+
.setTitle(R.string.notice)
340+
.setMessage(R.string.install_notebook_first)
341+
.setPositiveButton(R.string.ok, (dialog1, which) -> dialog1.dismiss())
342+
.create()
343+
.show();
344+
notebook_run.setChecked(false);
345+
return false;
346+
}
335347

336-
return true;
337-
});
348+
return true;
349+
});
350+
}
338351

339352
py2.setOnPreferenceClickListener(preference -> {
340353
Log.d(TAG, "py2.setOnPreferenceClickListener");
@@ -344,25 +357,25 @@ private void initListener() {
344357
return false;
345358
});
346359

347-
py2compatible.setOnPreferenceClickListener(preference -> {
348-
Log.d(TAG, "py2.setOnPreferenceClickListener");
349-
NotebookUtil.killNBSrv(getActivity());
350-
351-
if (!isQPycRelease(true)) {
352-
new AlertDialog.Builder(getActivity(), R.style.MyDialog)
353-
.setTitle(R.string.notice)
354-
.setMessage(R.string.install_py2compatible_first)
355-
.setPositiveButton(R.string.ok, (dialog1, which) -> dialog1.dismiss())
356-
.create()
357-
.show();
358-
359-
} else {
360-
NotebookUtil.killNBSrv(getActivity());
361-
362-
releasePython2Compatable(preference);
363-
}
364-
return false;
365-
});
360+
// py2compatible.setOnPreferenceClickListener(preference -> {
361+
// Log.d(TAG, "py2.setOnPreferenceClickListener");
362+
// NotebookUtil.killNBSrv(getActivity());
363+
//
364+
// if (!isQPycRelease(true)) {
365+
// new AlertDialog.Builder(getActivity(), R.style.MyDialog)
366+
// .setTitle(R.string.notice)
367+
// .setMessage(R.string.install_py2compatible_first)
368+
// .setPositiveButton(R.string.ok, (dialog1, which) -> dialog1.dismiss())
369+
// .create()
370+
// .show();
371+
//
372+
// } else {
373+
// NotebookUtil.killNBSrv(getActivity());
374+
//
375+
// releasePython2Compatable(preference);
376+
// }
377+
// return false;
378+
// });
366379

367380
py3.setOnPreferenceClickListener(preference -> {
368381
// if (!isQPycRelease(false)) {
@@ -605,21 +618,27 @@ public void onError(Throwable e) {
605618
@Override
606619
public void onNext(Boolean aBoolean) {
607620
Log.d(TAG, "onNext");
608-
621+
609622
NotebookUtil.startNotebookService2(getActivity());
623+
notebook_page.setSummary(NotebookUtil.isNotebookLibInstall(getActivity())?R.string.notebook_installed : R.string.notebook_not_started);
624+
610625

611626
}
612627
});
613628
}
614629

615630
private void installNotebook() {
616-
new AlertDialog.Builder(getActivity(), R.style.MyDialog)
617-
.setTitle(R.string.notice)
618-
.setMessage(R.string.install_notebook_hint)
619-
.setPositiveButton(R.string.download_it, (dialog1, which)->getNotebook())
620-
.setNegativeButton(R.string.cancel, (dialog1, which) -> dialog1.dismiss())
621-
.create()
622-
.show();
631+
new Thread(() -> {
632+
QPySDK qpySDK = new QPySDK(App.getContext(), getActivity());
633+
qpySDK.extractRes("notebook" + (NAction.isQPy3(getActivity()) ? "3" : "2"), new File(NotebookUtil.RELEASE_PATH));
634+
}).run();
635+
// new AlertDialog.Builder(getActivity(), R.style.MyDialog)
636+
// .setTitle(R.string.notice)
637+
// .setMessage(R.string.install_notebook_hint)
638+
// .setPositiveButton(R.string.download_it, (dialog1, which)->getNotebook())
639+
// .setNegativeButton(R.string.cancel, (dialog1, which) -> dialog1.dismiss())
640+
// .create()
641+
// .show();
623642
}
624643

625644

@@ -652,7 +671,7 @@ private void releaseQPycRes(String path) {
652671
private void releasePython2Standard(Preference preference) {
653672
Observable.create((Observable.OnSubscribe<Boolean>) subscriber -> {
654673
try {
655-
removeQPyc2Core();
674+
//removeQPyc2Core();
656675
QPySDK qpysdk = new QPySDK(getActivity(), getActivity());
657676
qpysdk.extractRes("private1", getActivity().getFilesDir(), true);
658677
qpysdk.extractRes("private2", getActivity().getFilesDir(), true);
@@ -695,7 +714,7 @@ private void releasePython2Compatable(Preference preference) {
695714
Observable.create((Observable.OnSubscribe<Boolean>) subscriber -> {
696715
try {
697716

698-
removeQPyc2Core();
717+
//removeQPyc2Core();
699718

700719
extractQPyCore(true);
701720

@@ -1012,18 +1031,18 @@ public void complete(String name, File installer) {
10121031
} catch (Exception e) {
10131032

10141033
}
1015-
try {
1016-
if (ispy2compatible) {
1017-
update_qpy2compatible.setSummary(getString(R.string.choose_py2compatible_inter));
1018-
1019-
} else {
1020-
update_qpy3.setSummary(getString(R.string.choose_py3_inter));
1021-
}
1022-
1023-
Toast.makeText(App.getContext(), R.string.file_downloaded, Toast.LENGTH_SHORT).show();
1024-
} catch (Exception e) {
1025-
1026-
}
1034+
// try {
1035+
// if (ispy2compatible) {
1036+
// update_qpy2compatible.setSummary(getString(R.string.choose_py2compatible_inter));
1037+
//
1038+
// } else {
1039+
// update_qpy3.setSummary(getString(R.string.choose_py3_inter));
1040+
// }
1041+
//
1042+
// Toast.makeText(App.getContext(), R.string.file_downloaded, Toast.LENGTH_SHORT).show();
1043+
// } catch (Exception e) {
1044+
//
1045+
// }
10271046

10281047
}
10291048

0 commit comments

Comments
 (0)