什么是TCL用于将GUI操作转换为TCL语句的模式

时间:2015-06-11 00:56:08

标签: logging tcl command-line-interface

我读过TCL的起源是EDA工具的命令语言。我还记得一位古老的QA熟人提到某些工具将用户采取的每一个GUI操作都转换为TCL语句。然后将这些语句记录到文件中。他们提到只需重新运行命令的日志文件即可重现任何错误。

这似乎是一种强大的模式。

是否有一套通用的规则可以解决这个问题。例如,如果用户在CAD应用程序中,该怎么办?如果他们用一个语句创建一行,那么为了操纵该行的属性,他们将如何引用该行?

1 个答案:

答案 0 :(得分:1)

Tcl / Tk GUI中的每个操作都会导致调用Tcl脚本; Tcl / Tk应用程序中的控制器是Tcl解释器。其中一些脚本由Tk本身提供(例如,定义将鼠标移到按钮上时会发生什么),其他脚本由应用程序代码定义(例如,单击按钮时会发生什么)。通过记录所有这些小脚本,您可以完全重放完全发生的事情。

通常不需要记录所有内容。只需跟踪操作,记录对底层模型所做的更改(而不仅仅是按钮的显示状态和类似的东西),这几乎肯定是你的熟人所说的。在这种日志记录方法的情况下,你并没有真正谈论在同一个程序中进行重要的后续处理:你正在生成一个文本文件,其中每一行对应一个动作,每个行line实际上是一个结构良好的Tcl命令,因为这很简单(list命令非常适合系统地创建格式正确的Tcl命令)。

但是,如果您正在录制日志以便可以返回到它并在应用程序中编辑它,或采取其他路径,那么您将需要的不仅仅是文本文件。一种简单(而且相当粗略)的方法可能是将该文本日志文件保存在SCM中,如git;这将允许回溯到时间,分支,各种有趣的功能。除此之外,您可以考虑而不是在数据库中保留操作记录(每个操作仍然是Tcl命令调用)(SQLite与Tcl一起工作非常,但是与其他许多工具很好地集成数据库引擎也可以提供你想要的那种功能:一行的属性仍然可以通过简单的文本操作完成 - 它只是在结构化数据上使用Tcl列表,所以它既简单又强大 - 但你我们也有数据库来支持你。这就是你可以获得非常有创意的地方,超出我在Stack Overflow答案中可以理解的范围。