GUI版GtkPacker开发日记(一)

开发概要简记

Posted by wszqkzqk on January 27, 2023
本文字数:595

说明

本项目是笔者的第一个GTK项目,这篇开发日志亦为笔者的学习日志。

大致设计

由于笔者预期到该项目的界面较为简单,而xml格式的UI描述文件的布局工具Glade已经停止更新,不再会支持GTK4,手动编写xml格式的UI描述文件的语法又不太友好,再加上Vala语言实际上相对简洁,笔者决定直接用Vala构建程序的图形用户界面。

然而,笔者在开发没多久便开始后悔没有采用UI描述文件了……但是笔者也不想再改了,直接用Vala又不是不能写。

具体方案

代码结构

xml格式的UI描述文件具有层次分明的优点,可以清晰地看出控件之间的包含关系,而一般来说,用通常的编程语言没有这一效果,这也就是为什么直接用写程序逻辑的语言构建GUI布局往往会受到诟病。笔者为了尽量在代码中体现出类似xml布局描述的层次感,用大括号将各大组件扩出,以体现包含关系。

大括号虽然体现了层次感,但是也限制了访问性,即大括号外的部分无法访问大括号中声明的变量。因此,需要公共访问的内容应当提前声明。

不可用选项

不可用选项可以有隐藏(设置属性visible = false)与禁用(设置属性sensitive = false)两种方式。由于隐藏/呈现过程可能导致窗口大小变化,而默认情况下GTK只会自动调大窗口,而不会自动缩小窗口,因此显示/隐藏之后窗口大小将无法复原。所以在非Gtk.ScrolledWindow部件的情况下,最好不要用部件隐藏。