SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4463|回复: 0
打印 上一主题 下一主题

[gui2] 双朝向模板控件

[复制链接]

187

主题

346

帖子

2450

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2450
跳转到指定楼层
楼主
发表于 2016-11-5 20:33:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ancientcc 于 2017-1-8 21:31 编辑

双朝向指的是竖屏和横屏。双朝向模板控件指的是有那么种模板控件,在竖屏、横屏有不一样布局,虽然两种布局,但处理时用同一C代码。

为什么要存在这种控件?举个例子,对聊天界面,手机上运行时是竖着布局,换到PC/Pad上时是横着布局。虽然两者看去不同,但内中逻辑基本一样,为开发、维护等方便,程序要用同一个窗口类去处理。

操作步骤
  • 针对该模板控件,定义两套cfg。包含在窗口cfg中的是横屏。竖屏放在gui.dat的[portrait]块中。
  • app启动,加载gui.dat把[portrait]中内容转为C代码,放在settings::portraits变量。
  • app要显示包含该控件的窗口,在tbuilder_grid::build时,判断某控件是模板控件、当前是竖屏、该控件有双朝向,它就会用settings::portraits中竖屏代替原先横屏。



如何定义cfg
横屏

它定义在包含它的窗口cfg中,不过由于是模板控件,强烈建议把模板控件定义为宏,然后宏定义放在单独的宏文件。举个例子,对内置的聊天模板(_tpl_chat),它定义成宏GUI__CHAT_WIDGET,然后放在<gui>/default/macros/template.cfg。
  1. #define GUI__CHAT_WIDGET
  2.         [stacked_widget]
  3.                 definition="default"       
  4.                 id="_tpl_chat"
  5.                 ......
  6.         [/stacked_widget]
  7. #define
复制代码


竖屏
放在<gui>/portrait.cfg。
  1. [portrait]
  2.         [stacked_widget]
  3.                 definition="default"
  4.                 id="_tpl_chat"
  5.                 ......
  6.         [stacked_widget/]

  7.         [stacked_widget]
  8.                 另一个双朝向模板控件
  9.         [stacked_widget/]
  10. [/portrait]
复制代码


Studio暂不支持生成双朝向模板控件,可以用以下方法生成这两套cfg。
  • 运行Studio生成横屏时的窗口cfg,从该cfg复制出控件部分,定义成宏,放在template.cfg。
  • 运行Studio生成竖屏时的窗口cfg,从该cfg复制出控件部分,放在portrait.cfg。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2024-5-20 03:59 , Processed in 0.046686 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表