Libgui目录下包含了insight IDE的实现.(正式实现在gdb/gdbtk/generic目录下)
因为Insight是用tcl tk实现的GDB前端,所以这个目录下主要是C和TCL的混合代码.
最后代码编译之后产生Libgui.a库文件.
几个文件说明
Tclmain.c IDE的入口,包含了初始化
paths.c 用于寻找IDE以及TCL库路径
tclcursor.c 计算光标大小
tclgetdir.c 浏览目录
tclhelp.c 帮助信息
tclmsgbox.c windows MessageBox函数的处理
tclshellexe.c windows ShellExecute函数的处理
tclwingrab.c 使能或者禁止窗口
tclwinmode.c SetErrorMode的处理
主要流程
Tclmain.c
做了环境的初始化
1.调用Tcl_FindExecutable把当前程序名传递给tcl环境
2.调用Tcl_CreateInterp创建解析器.
3.通过Tcl_Merge把程序入参合并为一个TCL list
4.设置一系列TCL 环境变量,其中把tcl_interactive设为1,启动console模式
5.调用(*appInitProc) (interp)初始化
6.如果初始化失败,那么调用Tcl_GetVar得到错误信息,用MessageBox或者控制台上显示出来.
7.删除解析器,退出
1.怎么把C的函数注册为一个TCL命令?
int
ide_create_set_error_mode_command (Tcl_Interp
*
interp)
{
if (Tcl_CreateCommand (interp, "ide_set_error_mode",
seterrormode_command, NULL, NULL) == NULL)
return TCL_ERROR;
return TCL_OK;
}
本文介绍Insight IDE的实现细节,特别是Libgui目录下的关键组件和C/TCL混合代码。文章概述了IDE的初始化流程,包括TCL环境设置、命令注册过程,并解释了几个核心文件的功能。


1286

被折叠的 条评论
为什么被折叠?



