ການຊ່ວຍເຫຼືອ LibreOfficeDev 26.8
ຫ້ອງສະໝຸດ ScriptForge ສາມາດໃຊ້ໄດ້ທັງໃນ Basic ແລະ Python. ບໍລິການ, ເມັດທອດ ແລະ ຄຸນສົມບັດສ່ວນໃຫຍ່ຈະເຮັດວຽກຄືກັນໃນທັງສອງພາສາການຂຽນໂປຣແກຣມ. ເຖິງຢ່າງໃດກໍຕາມ, ເນື່ອງຈາກຄວາມແຕກຕ່າງໃນວິທີການເຮັດວຽກຂອງແຕ່ລະພາສາ, ຜູ້ໃຊ້ ScriptForge ຕ້ອງຮັບຮູ້ເຖິງລັກສະນະສະເພາະບາງຢ່າງຂອງຫ້ອງສະໝຸດເມື່ອໃຊ້ Python:
ຊື່ເມັດທອດ ແລະ ຄຸນສົມບັດ: ໃນ Python, ທຸກໆເມັດທອດ ແລະ ຄຸນສົມບັດສາມາດໃຊ້ໄດ້ທັງໃນຮູບແບບຕົວອັກສອນນ້ອຍທັງໝົດ (lowercased), ຕົວໃຫຍ່ສະເພາະໂຕທຳອິດ (ProperCased) ຫຼື ຮູບແບບອູດ (camelCased).
ອາກິວເມັນ: ທຸກໆອາກິວເມັນຄີເວີດ (keyword arguments) ທີ່ສົ່ງຕໍ່ໄປຍັງເມັດທອດແມ່ນເປັນຕົວອັກສອນນ້ອຍທັງໝົດ.
ວັນທີ: ທຸກໆວັດຖຸວັນທີຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນວັດຖຸ datetime.datetime ຂອງ Python ໂດຍກົງ.
ອາເຣ (Arrays): ອາເຣມິຕິດຽວຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນ tuples (ເຊິ່ງເປັນວັດຖຸທີ່ບໍ່ສາມາດປ່ຽນແປງຄ່າໄດ້). ອາເຣສອງມິຕິຈະຖືກສົ່ງຕໍ່ ແລະ ສົ່ງຄືນເປັນ tuples ຂອງ tuples.
None: ຄີເວີດ None ຂອງ Python ແມ່ນທຽບເທົ່າກັບ Null, Empty ຫຼື Nothing ຂອງ Basic.
ວັດຖຸ UNO: ໂຄງສ້າງ UNO ທັງໝົດຈະຖືກແລກປ່ຽນລະຫວ່າງ Basic ແລະ Python ໂດຍບໍ່ມີການປ່ຽນແປງໃດໆ.
ການດີບັກ (Debugging): ທຸກຄັ້ງທີ່ເກີດຂໍ້ຜິດພາດໃນສະຄຣິບ Python ທີ່ໃຊ້ ScriptForge, ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດທີ່ໃຫ້ໂດຍ Python execution stack ຈະສະແດງແຖວຂອງໂຄດທີ່ເປັນຕົວກະຕຸ້ນໃຫ້ເກີດຂໍ້ຜິດພາດ. ໃນຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຂອງ Basic ຈະບໍ່ສະແດງຂໍ້ມູນນີ້.
ເຂົ້າເບິ່ງ ຊ່ວຍເຫຼືອສະຄຣິບ Python ຂອງ LibreOfficeDev ສຳລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການຂຽນສະຄຣິບ Python ໂດຍໃຊ້ LibreOfficeDev.
ຄຳແນະນຳການພິມ (typing hints) ຂອງ Python - ເຊິ່ງກ່ຽວຂ້ອງກັບເມັດທອດສາທາລະນະ ແລະ ຄຸນສົມບັດຂອງບໍລິການ ScriptForge - ສາມາດເອົາໄດ້ຈາກ IDEs ທີ່ຮອງຮັບສິ່ງອຳນວຍຄວາມສະດວກດັ່ງກ່າວ. ໃນທາງກາຍະພາບ, ຂະນະທີ່ພວມແກ້ໄຂສະຄຣິບຂອງຜູ້ໃຊ້:
ການວາງເມົາສ໌ໄວ້ເທິງອິນສະແຕນຊ໌ວັດຖຸ, ເມັດທອດ ຫຼື ຄຸນສົມບັດ ຈະສະແດງຄຳອະທິບາຍລະອຽດຂອງມັນ.
ການພິມ "." ຫຼັງຈາກອິນສະແຕນຊ໌ວັດຖຸ ຈະສະແດງກ່ອງລາຍການແບບເລື່ອນລົງທີ່ລະບຸອິນເຕີເຟສທັງໝົດທີ່ມີຢູ່.
ວົງເລັບຫຼັງຈາກຊື່ເມັດທອດ ຈະເລີ່ມການຕື່ມຂໍ້ມູນໂຄດໃຫ້ສົມບູນ (code-completion) ໂດຍການສະແດງອາກິວເມັນຂອງມັນ.
ຄຳແນະນຳການພິມຈະຖືກສະແດງເມື່ອມີການແກ້ໄຂເມັດທອດ ແລະ ຄຸນສົມບັດດ້ວຍຕົວອັກສອນແບບ propercase.
ຂຶ້ນກັບສິ່ງທີ່ທ່ານຕັ້ງໃຈຈະເຮັດ, ທ່ານອາດຈະເລືອກໜຶ່ງໃນວິທີການຕໍ່ໄປນີ້ເພື່ອລັນສະຄຣິບ Python ໃນ LibreOfficeDev:
ລັນສະຄຣິບພາຍໃນໂປຣເຊສ (process) ຂອງ LibreOfficeDev ປັດຈຸບັນ: ສະຄຣິບ Python ຈະຖືກປະຕິບັດງານຈາກພາຍໃນໂປຣເຊສຂອງ LibreOfficeDev ໂດຍການໃຊ້ເມນູ ຫຼື ສ່ວນຂະຫຍາຍ APSO ເພື່ອເອີ້ນໃຊ້ສະຄຣິບຂອງຜູ້ໃຊ້ທີ່ເກັບໄວ້ໃນໂຟນເດີສະຄຣິບ Python. ນອກຈາກນັ້ນ ທ່ານຍັງສາມາດໃຊ້ APSO Python shell ເພື່ອລັນສະຄຣິບ Python ແບບໂຕ້ຕອບໄດ້ນຳອີກ.
ລັນສະຄຣິບແຍກຕ່າງຫາກຈາກໂປຣເຊສຂອງ LibreOfficeDev: ສະຄຣິບ Python ຈະຖືກປະຕິບັດງານຈາກໂປຣເຊສພາຍນອກທີ່ເຊື່ອມຕໍ່ກັບໂປຣເຊສຂອງ LibreOfficeDev ທີ່ພວມເຮັດວຽກຢູ່ ໂດຍການໃຊ້ pipe ຫຼື socket.
ຖ້າທ່ານມີແຜນທີ່ຈະລັນສະຄຣິບຈາກພາຍໃນໂປຣເຊສຂອງ LibreOfficeDev, ແນະນຳໃຫ້ຕິດຕັ້ງ ສ່ວນຂະຫຍາຍ APSO (Alternative Script Organizer for Python). ເຖິງຢ່າງໃດກໍຕາມ, ເພື່ອພັດທະນາສະຄຣິບ Python ຈາກພາຍນອກ LibreOfficeDev, ທ່ານສາມາດເລືອກ Python IDE ທີ່ທ່ານຕ້ອງການໄດ້.
ວິທີທີ່ງ່າຍທີ່ສຸດໃນການເລີ່ມຕົ້ນການຂຽນສະຄຣິບ Python ໃນ LibreOfficeDev ແມ່ນການຕິດຕັ້ງສ່ວນຂະຫຍາຍ APSO. ຫຼັງຈາກຕິດຕັ້ງແລ້ວ, ໃຫ້ເປີດຄອມໂພເນນໃດໜຶ່ງຂອງ LibreOfficeDev ແລະ ໄປທີ່ .
ໃນໜ້າຕ່າງຫຼັກຂອງ APSO ໃຫ້ໄປທີ່ .
ອີກທາງເລືອກໜຶ່ງ ທ່ານສາມາດເປີດ APSO ໂດຍໃຊ້ຄີລັດເລີ່ມຕົ້ນ Alt + Shift + F11.
ຕອນນີ້ທ່ານສາມາດເລີ່ມພິມຄຳສັ່ງ Python ແລະ shell ຈະພິມຜົນໄດ້ຮັບທີ່ກົງກັນອອກມາ ຫຼັງຈາກທີ່ແຕ່ລະແຖວຂອງໂຄດຖືກປະຕິບັດງານ.
ເພື່ອເລີ່ມຕົ້ນການໃຊ້ຫ້ອງສະໝຸດ ScriptForge, ທ່ານຈຳເປັນຕ້ອງນຳເຂົ້າເມັດທອດ CreateScriptService ເຊິ່ງທ່ານຈະສາມາດເຂົ້າເຖິງບໍລິການຕ່າງໆທີ່ໃຫ້ໂດຍຫ້ອງສະໝຸດ. ຕົວຢ່າງດ້ານລຸ່ມນີ້ໃຊ້ບໍລິການ Basic ເພື່ອສະແດງກ່ອງຂໍ້ຄວາມ (message box).
from scriptforge import CreateScriptService
bas = CreateScriptService("Basic")
bas.MsgBox("Hello!")
ເພື່ອລັນຕົວຢ່າງດ້ານເທິງ, ໃຫ້ປ້ອນແຕ່ລະແຖວລົງໃນ Python shell ເທື່ອລະແຖວ, ໂດຍການກົດປຸ່ມ Enter ຫຼັງຈາກທີ່ທ່ານພິມແຕ່ລະແຖວຂອງໂຄດສຳເລັດ.
ຕອນນີ້ທ່ານສາມາດເລີ່ມປະຕິບັດຄຳສັ່ງ Python ໂດຍໃຊ້ບໍລິການໃດໜຶ່ງຂອງ ScriptForge ໄດ້ແລ້ວ. ຕົວຢ່າງເຊັ່ນ: ສ່ວນຂອງໂຄດດ້ານລຸ່ມນີ້ໃຊ້ບໍລິການ UI ເພື່ອສ້າງເອກະສານ Writer ຫວ່າງເປົ່າ.
ui = CreateScriptService("UI")
doc = ui.CreateDocument("Writer")
ທ່ານສາມາດສ້າງໄຟລ໌ Python ຂອງຕົນເອງ ແລະ ແກ້ໄຂພວກມັນດ້ວຍຕົວແກ້ໄຂຂໍ້ຄວາມ (text editor) ທີ່ທ່ານຕ້ອງການ. ຫຼັງຈາກນັ້ນທ່ານສາມາດເອີ້ນໃຊ້ພວກມັນໄດ້ຈາກພາຍໃນຄອມໂພເນນໃດໜຶ່ງຂອງ LibreOfficeDev.
ຂັ້ນຕອນທຳອິດແມ່ນການລະບຸຕຳແໜ່ງທີ່ເກັບສະຄຣິບຂອງຜູ້ໃຊ້ຂອງທ່ານ. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ອ້າງອີງເຖິງໜ້າຊ່ວຍເຫຼືອ ການຈັດລະບຽບ ແລະ ຕຳແໜ່ງຂອງສະຄຣິບ Python.
ຕອນນີ້ທ່ານສາມາດສ້າງໄຟລ໌ຂໍ້ຄວາມພາຍໃນໂຟນເດີສະຄຣິບ Python ຂອງຜູ້ໃຊ້ຂອງທ່ານ, ຕົວຢ່າງເຊັ່ນ sf_test.py, ແລະ ເລີ່ມພິມສະຄຣິບຂອງທ່ານ.
ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງງ່າຍໆທີ່ເອົາຄ່າຕົວເລກຈາກເຊວ (cell) ຂອງ Calc ແລະ ເພີ່ມຄ່າຂຶ້ນ 1. ພຽງແຕ່ພິມໂຄດຕໍ່ໄປນີ້ລົງໃນໄຟລ໌ sf_test.py.
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("A1")
value += 1
doc.SetValue("A1", value)
g_exportedScripts = (increment_cell, )
ຕົວຢ່າງນີ້ສ້າງຟັງຊັນ increment_cell. ໃຫ້ສັງເກດວ່າ g_exportedScripts ແມ່ນ tuple ທີ່ບອກວ່າຟັງຊັນໃດຈະຖືກສະແດງໃນ LibreOfficeDev ເປັນສະຄຣິບຂອງຜູ້ໃຊ້.
ເພື່ອລັນສະຄຣິບນີ້ຈາກພາຍໃນເອກະສານ Calc:
ສ້າງ ຫຼື ເປີດໄຟລ໌ Calc.
ປ້ອນຄ່າຕົວເລກບາງຢ່າງລົງໃນເຊວ "A1" ໃນແຜ່ນງານປັດຈຸບັນ.
ໄປທີ່ .
ເລືອກ My Macros - sf_test ໃນຕົວເລືອກຫ້ອງສະໝຸດ. ຈາກນັ້ນເລືອກຟັງຊັນ increment_cell ພາຍໃຕ້ລາຍການ .
ຄລິກ Run. ສັງເກດເຫັນວ່າຄ່າໃນເຊວ "A1" ຖືກເພີ່ມຂຶ້ນ 1.
ທ່ານຍັງສາມາດໃຊ້ APSO ເພື່ອລັນສະຄຣິບ Python ໃນລັກສະນະດຽວກັນໄດ້ນຳອີກ:
ທຳອິດໃຫ້ເປີດ APSO ໂດຍການໄປທີ່ .
ໃນລາຍການມາໂຄຣ, ໃຫ້ເຂົ້າໄປທີ່ .
ຄລິກ .
ຂັ້ນຕອນທຳອິດໃນການລັນສະຄຣິບຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກແມ່ນການຊອກຫາໂຟນເດີທີ່ LibreOfficeDev ຖືກຕິດຕັ້ງໄວ້. ມີຫຼາຍວິທີໃນການເຮັດແບບນັ້ນ, ແຕ່ ScriptForge ໃຫ້ວິທີທີ່ວ່ອງໄວໃນການລະບຸເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ. ສຳລັບເລື່ອງນັ້ນ, ໃຫ້ເປີດ APSO's Python shell ແລະ ພິມ:
from scriptforge import CreateScriptService
fs = CreateScriptService("FileSystem")
fs.FileNaming = "SYS"
inst_dir = fs.InstallFolder
print(inst_dir)
ຜົນໄດ້ຮັບຈາກໂຄດດ້ານເທິງແມ່ນໄດເຣັກທໍຣີຫຼັກ (base directory) ທີ່ LibreOfficeDev ຖືກຕິດຕັ້ງໄວ້. ຕອນນີ້ທ່ານຈຳເປັນຕ້ອງເພີ່ມໂຟນເດີຍ່ອຍ "program" ລົງໃນເສັ້ນທາງດັ່ງກ່າວ. ນີ້ແມ່ນໂຟນເດີຫຼັກທີ່ທ່ານຈະໃຊ້ລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ.
ຕົວຢ່າງເຊັ່ນ: ສົມມຸດວ່າທ່ານໄດ້ຮັບ /usr/lib/libreoffice/ ເປັນຜົນໄດ້ຮັບຈາກການລັນໂຄດ Python ດ້ານເທິງ. ຈາກນັ້ນທ່ານຈຳເປັນຕ້ອງຖືວ່າ /usr/lib/libreoffice/program ເປັນເສັ້ນທາງໃນການລັນສະຄຣິບ Python ຂອງທ່ານ.
ເພື່ອລັນສະຄຣິບ Python ຈາກໂປຣເຊສທີ່ແຍກຕ່າງຫາກ, ທ່ານຈຳເປັນຕ້ອງເລີ່ມ LibreOfficeDev ດ້ວຍຕົວເລືອກເພີ່ມເຕີມບາງຢ່າງທີ່ລະບຸ hostname ແລະ port ເຊິ່ງໂປຣເຊສພາຍນອກຈະໃຊ້ເພື່ອສື່ສານກັບໂປຣເຊສຄອມໂພເນນຂອງ LibreOfficeDev.
ເປີດ command prompt ຂອງລະບົບປະຕິບັດການຂອງທ່ານ, ເຂົ້າໄປທີ່ໂຟນເດີ program ຂອງໄດເຣັກທໍຣີການຕິດຕັ້ງ LibreOfficeDev ຂອງທ່ານ ແລະ ພິມຢ່າງໃດຢ່າງໜຶ່ງຕໍ່ໄປນີ້:
./soffice --accept='pipe,name=libreoffice;urp;'
./soffice --accept='socket,host=localhost,port=2021;urp;'
ຄຳສັ່ງໃດໜຶ່ງດ້ານເທິງຈະເລີ່ມ LibreOfficeDev ດ້ວຍການເປີດຊ່ອງທາງການສື່ສານ ເພື່ອໃຫ້ໂປຣເຊສອື່ນສາມາດແລກປ່ຽນຂໍ້ຄວາມກັບມັນໄດ້.
ໃຫ້ສັງເກດວ່າຕົວຢ່າງກ່ອນໜ້ານີ້ຈະເປີດ LibreOfficeDev start center. ຖ້າທ່ານຕ້ອງການເປີດຄອມໂພເນນສະເພາະໃດໜຶ່ງ, ຕົວຢ່າງເຊັ່ນ Writer, ທ່ານສາມາດເພີ່ມແຟລັກ --writer ລົງໃນຄຳສັ່ງໄດ້ ດັ່ງນີ້.
./soffice --writer --accept='socket,host=localhost,port=2021;urp;'
ໃຫ້ຈົດບັນທຶກພາລາມິເຕີ name, ຫຼື host ແລະ port ເຊິ່ງໃນຕົວຢ່າງນີ້ແມ່ນ libreoffice, ຫຼື localhost ແລະ 2021 ຕາມລຳດັບ.
ເລີ່ມ Python shell ຈາກພາຍໃນໂຟນເດີ program ທີ່ຢູ່ໃນເສັ້ນທາງການຕິດຕັ້ງ LibreOfficeDev ຂອງທ່ານ. ປະຕິບັດຕາມຂັ້ນຕອນ ດ້ານເທິງ ເພື່ອຮຽນຮູ່ວິທີການຊອກຫາເສັ້ນທາງການຕິດຕັ້ງຂອງທ່ານ.
ໃນ Linux / Mac OS:
$ cd /usr/lib/libreoffice/program
$ python
ໃນ Windows:
$ cd C:\Program Files\LibreOffice\program\
$ python.exe
ນີ້ຈະເປີດ Python shell ແລະ ຕອນນີ້ທ່ານສາມາດເລີ່ມພິມຄຳສັ່ງທີ່ຈະຖືກປະມວນຜົນໂດຍ LibreOfficeDev. ແຕ່ກ່ອນອື່ນທ່ານຕ້ອງຕັ້ງຄ່າການເຊື່ອມຕໍ່ pipe ຫຼື socket. ຖະແຫຼງການ ScriptForge() ດ້ານລຸ່ມນີ້ຕ້ອງມາກ່ອນການເອີ້ນໃຊ້ CreateScriptService() ຄັ້ງທຳອິດ.
ລັນອັນໃດອັນໜຶ່ງ:
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(pipe='libreoffice')
from scriptforge import ScriptForge, CreateScriptService
ScriptForge(hostname='localhost', port=2021)
ອ່ານພາກ ການຕັ້ງຄ່າ PYTHONPATH ດ້ານລຸ່ມນີ້ ໃນກໍລະນີທີ່ເກີດຂໍ້ຜິດພາດໃນການນຳເຂົ້າ scriptforge.py ຫຼື uno.py.
ລະຫັດແຖວທີສອງດ້ານເທິງກຳນົດການຕັ້ງຄ່າ pipe ຫຼື host ແລະ port ເພື່ອໃຫ້ Python shell ສາມາດສື່ສານກັບຂະບວນການ LibreOfficeDev ທີ່ກຳລັງເຮັດວຽກຢູ່ ເຊິ່ງຖືກເປີດດ້ວຍການຕັ້ງຄ່າ pipe ຫຼື socket ດຽວກັນ.
ຕອນນີ້ທ່ານສາມາດລັນຄຳສັ່ງ Python ອື່ນໆ ແລະ ພວກມັນຈະສາມາດສື່ສານກັບຂະບວນການ LibreOfficeDev ໄດ້. ຕົວຢ່າງ:
ui = CreateScriptService("UI")
bas = CreateScriptService("Basic")
doc = ui.OpenDocument("~/Documents/myFile.ods")
bas.MsgBox(doc.DocumentType)
ອີງຕາມການກຳນົດຄ່າລະບົບປະຕິບັດການຂອງທ່ານ ທ່ານຈະຕ້ອງຕັ້ງຄ່າຕົວແປສະພາບແວດລ້ອມ PYTHONPATH ເພື່ອນຳເຂົ້າໄລບຣາຣີ scriptforge.py, ເຊິ່ງຈຳເປັນຕ້ອງມີການນຳເຂົ້າໄລບຣາຣີ uno.py ນຳ.
ໃຊ້ເຄື່ອງມືຄົ້ນຫາໄຟລ໌ຂອງລະບົບປະຕິບັດການຂອງທ່ານເພື່ອລະບຸໄດເຣັກທໍຣີທີ່ໄຟລ໌ທັງສອງນີ້ຕັ້ງຢູ່.
ຕົວຢ່າງ, ໃນການຕິດຕັ້ງ Ubuntu ແບບເລີ່ມຕົ້ນ ໄຟລ໌ທັງສອງອາດຈະຕັ້ງຢູ່ທີ່:
scriptforge.py: ຕັ້ງຢູ່ທີ່ /usr/lib/libreoffice/program
uno.py: ຕັ້ງຢູ່ທີ່ /usr/lib/python3/dist-packages
ໃນກໍລະນີນີ້, ໃຫ້ຕັ້ງຕົວແປສະພາບແວດລ້ອມ PYTHONPATH ດັ່ງຕໍ່ໄປນີ້ ກ່ອນທີ່ຈະເລີ່ມຕົວແປພາສາ Python:
export PYTHONPATH=/usr/lib/libreoffice/program:/usr/lib/python3/dist-packages
ຕຳແໜ່ງຂອງໄຟລ໌ເຫຼົ່ານີ້ຈະແຕກຕ່າງກັນໄປຕາມແຕ່ລະລະບົບປະຕິບັດການ ແລະ ວິທີການຕິດຕັ້ງ LibreOfficeDev.