关于viewbinding的想法
gtk吧
全部回复
仅看楼主
吧务
level 11
LuoYu0401 楼主
先不管gimp的事了,后续又看了几个Gnome的项目有些有ui文件,有些又没有,摸不着头脑,本篇就按使用ui文件来进行介绍。
我目前本职是干android(java)的,在使用gtk中有些地方希望像android那样便利,比如viewbinding,还有gtk的ui文件太复杂了(这个之后慢慢做尝试简化)。众所周知,ui文件声明的控件要与c文件window中的控件一一对应要写很多类似gtk_widget_class_bind_template_child(widget_class, TypeName, member_name)的代码,如果控件越多,那写的数量就越多,虽然代码很简单。
viewbinding简单的实现如下图
实现的流程是编译前先使用脚本对布局的ui文件进行解析,生成一个viewbinding的结构体,里面包含了所有带id的widget,view_binding_full()宏是一个工具,用来绑定一个widget到viewbinding中,然后view_binding()跟view_binding_callback()宏则是通过脚本生成的,在使用时,仅需要在window_class_init()中调用用脚本生成的两个宏即可。目前测试结果是可行的,但不知道我这样写会不会造成其他问题,比如widget被引用在了这个viewbinding的结构体中,是不是会造成这部分widget没被unref()等,特意发帖探讨一下[呵呵]
2024年11月30日 17点11分 1
吧务
level 14
支持[滑稽]
2024年12月02日 01点12分 2
我这样设计我是感觉没问题,大不了再加一个绑定到Private里的宏,不知道吧主有何高见[滑稽]
2024年12月02日 03点12分
level 2
加油,期待大佬的成果。我现在连UI文件都还不太会写。[滑稽]
2024年12月23日 13点12分 3
我只会简单的ui,这个viewbinding一般会依托构建工具,官方是meson,我用的是xmake,或者写个可执行程序,这样才能保证跨平台也能正常使用[开心]
2024年12月23日 14点12分
吧务
level 11
LuoYu0401 楼主
LuoYu0401-Mirror/viewbinding
某连不上的hub,有空可以去看看,简单实现了viewbinding的功能,用法里面也有介绍[滑稽]
2025年11月30日 06点11分 4
[滑稽]
2025年12月04日 15点12分
1