iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Software Development

Genero Packages - 可接替4GL的LowCode商業語言系列 第 23

[FGL] 目錄檔案處理-處理誰的檔案? frontCall

之前在 吸星大法 - IMPORT之 1: 使用extension擴展功能 中,有提到『**可以使用 os.Path套件來處理主機(server)端的路徑、檔案 **』,例如 DISPLAY os.Path.pwd() 可以列印出程式執行當下的路徑。

那,如果整個的過程是『從PC上傳指定檔案,到主機的指定路徑』,那看來現行完成率只有33%
本機的『選檔案、上傳檔案』就要靠其他的套件來執行。

程式運行在主機上,怎麼回過頭來控制 PC端呢?

Genero執行時,用戶端也必須有相應的客戶端軟體 (client) 雖然主要工作是產生要操作的畫面,但也可以控制它做點工作。控制的指令即稱為『frontCall前台指令

所以,只要在前端承接指令的客戶端,就具備了接收服務器要求執行工作的機制。如 Windows/MAC/Linux KDE的 GDC、瀏覽器上的GBC、Android/IOS上的 GMA/GMI 等,都可以執行接收的 frontCALL 指令

可以執行的指令都一樣嗎?

因為平台限制的關係,每一種 client 能支持的指令是有差異的。瀏覽器因為管制的最嚴格,因此運作在瀏覽器的 GBC缺少的功能最多。例如『開啟檔案總管、上傳』等,都是受限的。

限制的指令種類必須查表之後才會知道。

frontCALL前台指令

FGL列出 frontCall的標準語法

CALL ui.Interface.frontCall( moduleName STRING, functionName STRING,
   [ valueList ], [ variableList ] )
  • moduleName定義了實現函數的共享庫或類路徑。
  • functionName定義要調用的函數的名稱。
  • valueList是輸入參數的列表。
  • variableList是輸出參數的列表。 注意哦:此處的輸出、輸入都是寫在括號內的

範例

main
  DEFINE info STRING
  CALL ui.Interface.frontCall("standard","getenv", ["OS"], [info] )
  DISPLAY info
end main

執行結果:Windows_NT

ui.Interface.frontCall - "standard" 檔案處理

功能有:開啟PC端檔案總管挑選路徑(openDir)、挑選檔案(openFile)、抓變數(getEnv)、執行shell(execute)、播放聲音檔(playSound)、存檔(saveFile)

ui.Interface.frontCall - "standard" 剪貼簿處理

功能有:加剪貼簿內容(cbAdd)、抓剪貼簿(cbGet)之類的

ui.Interface.frontCall - "standard" 開瀏覽器

功能有:開指定路徑(launchURL)
以上指令可參考 https://4js.com/online_documentation/fjs-fgl-manual-html/#fgl-topics/c_fgl_frontcalls_standard.html
有操作用法,與更詳細的細節

這裡面播放聲音檔(mp3之類的音訊格式) 最為有趣。若希望程式在某些動作出語音的話,還可以搭配 Google TTS python套件,使用 RUN 指令產出對應的語音檔,然後透過 playSound 就可滿足唸出來的需求。( T100用戶可參考 cl_err 中的程式片段)

GDC 與 GBC

我們曾經在 https://ithelp.ithome.com.tw/articles/10259336 介紹過 GDC,也討論過GDC的除錯方式。從Genero 1.0版到3.20版本,GDC使用QT工具,進行各種平台的畫面渲染,並協助執行 frontCALL。

但是因應未來軟件服務化、跨平台化,Genero套件從 4.00版本起,不再使用QT進行畫面渲染,採用瀏覽器的渲染引擎來進行客戶端程式的製作。

所以,除了畫面能夠跨平台趨向於一致的體驗,『許多的 frontCALL都會消失禁用』,例如開啟瀏覽器、客戶端檔案操作等都消失。但

CALL ui.Interface.frontCall("standard", "launchURL", [ url ], [] )  #開啟瀏覽網頁 url要記得換

這是唯一確認必要保留的。

GMA/GMI 移動設備的 frontCALL

到這邊應該就可以聯想到:移動設備上有許多的裝置,如照相機、錄音機、掃條碼、抓GPS、傳簡訊、打電話...這些,就是透過 frontCALL 來驅動的。

移動設備的連結與處理,『後面再專章討論』


上一篇
[FGL] TYPE / FUNCTION / INTERFACE 讓FGL更貼近物件語言
下一篇
[GIP] Genero守門員 -簡化版單點登入SSO配置與運行 (3.X以後版本提供)
系列文
Genero Packages - 可接替4GL的LowCode商業語言32

尚未有邦友留言

立即登入留言