科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道嵌入式GUI FTK介绍(4)-脚本语言绑定

嵌入式GUI FTK介绍(4)-脚本语言绑定

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

用XML来描述界面,C/C++写内部逻辑,用脚本语言来胶合界面和内部逻辑。FTK正是基于这种思想来设计的,所以它自然会提供脚本语言绑定,最早我是想绑定javascript的,这样可以用类似写网页的方式来写程序。

来源:李先静的博客【原创】 2010年1月5日

关键字: 嵌入式 GUI

  • 评论
  • 分享微博
  • 分享邮件

用XML来描述界面,C/C++写内部逻辑,用脚本语言来胶合界面和内部逻辑。FTK正是基于这种思想来设计的,所以它自然会提供脚本语言绑定,最早我是想绑定javascript的,这样可以用类似写网页的方式来写程序。但是我又希望FTK能在MTK和展讯那样的手机平台上运行,而javascript引擎可执行代码太大了。所以最后选择了lua绑定,lua的可执行只有100多K,加上FTK,总共大约在300K左右,这样的大小放在MTK和展讯的手机平台应该是可行的。FTK+Lua的方式对SP非常有用(虽然我不太喜欢SP),不但可以隔离各种手机平台的差异,而且可以把程序放在服务器上,而不用全部内置到手机中了。

比如:

实现代码如下:
XUL描述:

xml=[[
<?xml version="1.0" encoding="utf-8"?>
<window value="Entry Label">
    <label  id="1" x="5" y="5" w="$ww/4" h="30" value="Name" />
    <entry  id="2" x="$ww/4+5" y="5" w="3*$ww/4-15" h="30" value="Li XianJing" />
 
    <label  id="3" x="5" y="40" w="$ww/4" h="30" value="EMail" />
    <entry  id="4" x="$ww/4+5" y="40" w="3*$ww/4-15" h="30" 
value="xianjimli@hotmail.com" />
  <label id="5" x="5" y="75" w="$ww/4" h="30" value="Mobile" /> <entry id="6" x="$ww/4+5" y="75" w="3*$ww/4-15" h="30"
value="+8613911112222" />
  <button id="99" x="5" y="3*$wh/4" w="$ww/2-5" h="50"
attr="$FTK_ATTR_INSENSITIVE" value="Save" />
<button id="100" x="$ww/2" y="3*$wh/4" w="$ww/2-5" h="50"
attr="$FTK_ATTR_FOCUSED" value="Quit" />
</window> ]]

lua代码

function button_quit_on_clicked(button)
    ftk_quit()
    print("button_quit_on_clicked")
    return 0
end
 
function button_save_on_clicked(button)
    print("button_save_on_clicked")
    return 0
end
 
ftk_init()
 
win=ftk_xul_load(xml)
ftk_widget_show_all(win, 1)
 
quit=ftk_widget_lookup(win, 99)
ftk_button_set_clicked_listener(quit, "button_save_on_clicked")
 
quit=ftk_widget_lookup(win, 100)
ftk_button_set_clicked_listener(quit, "button_quit_on_clicked")
 
ftk_run()

因为FTK是用C语言写的,要绑定到其它脚本语言也是非常容易的,有兴趣的朋友可以试下。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章