[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 来驱动的。

移动设备的连结与处理,『後面再专章讨论』


<<:  【D10】厨房门被锁住怎麽办?(帐号锁着了!)

>>:  【PHP Telegram Bot】Day15 - 基础(4):阵列处理、JSON

15 - NVM - Node.js 版本管理工具

Node.js 版本间的差异使得有些专案需要使用特定的版本才能正常运作,因此各专案间需要来回的切换 ...

Material UI in React [ Day12 ] Inputs (Select) 选择框

今天要讲解的是 Select 组件,官网文件连结在这里。 Select 其实跟原生 html 里的 ...

[Day 20] Node 注册事件 1

前言 昨天我们聊到, node 的 JS 层中的 IO method , 在作了相应的设定後, 就利...

a连结标签基础方法

<a href="https://www.w3.org/" target=...

用 Python 畅玩 Line bot - 06:Image Message

现在我们可以来尝试能对收到的 Image message 做怎样的操作,我们可以使用line_bot...