LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: james_su

一个 SCIM 的介绍幻灯片。

[复制链接]
发表于 2004-6-13 13:17:50 | 显示全部楼层
scim 中的信号机制和操作系统是无关的,所以移植到其他平台也完全可以,对吧?
看到信号有关的几个类都来自 Inti,想问问是不是一定需要有  GLib 才可以
 楼主| 发表于 2004-6-13 13:25:20 | 显示全部楼层
最初由 bbbush 发表
scim 中的信号机制和操作系统是无关的,所以移植到其他平台也完全可以,对吧?
看到信号有关的几个类都来自 Inti,想问问是不是一定需要有  GLib 才可以


不需要。信号机制只依赖于 libstdc++ 。所以可以在任何支持 libstdc++ 的系统上使用。
发表于 2004-6-13 13:38:46 | 显示全部楼层

代码量惊人啊

越发佩服了。平均一下,差不多是 15000 行/人年,可见 Andrew S. Tanenbaum 的话有道理

scim 平台的代码,包括信号处理和其他基础的类 event, object, socket, iconvert 这些有 7000 行
平台模块,各种 FrontEnd 和 Config module,Setup module,socket、table、rawcode 三种 IMEngine 的代码加起来有 15000 行
scim-chinese 的代码有 10000 行

580 ./IMEngine/scim_rawcode_imengine.cpp
925 ./IMEngine/scim_socket_imengine.cpp
1713 ./IMEngine/scim_table_imengine.cpp
309 ./SetupUI/scim_socket_imengine_setup.cpp
2466 ./SetupUI/scim_table_imengine_setup.cpp
2600 scim_pinyin_imengine.cpp
1372 scim_pinyin_imengine_setup.cpp

可见要写一个输入法并不是很简单的事情,即使 scim-1.0 提供的 API 很简单,“只要继承 IMEngineFactoryBase 和 IMEngineInstanceBase 两个基类并实现其中的方法就可以了”,但是要想功能比较强,需要做的事情要多得多

scim 的配置程序 *_setup 不知道又是怎样的设计。这里是开发文档中没有提到的地方
发表于 2004-6-13 13:44:53 | 显示全部楼层
谁要是感兴趣 可以统计一下 fcitx 的源码试一试
find src -name *.c -exec wc -l "{}" \;
不会用 sed,所以不会记数…… 笨蛋一个
 楼主| 发表于 2004-6-13 14:14:06 | 显示全部楼层

回复: 代码量惊人啊

如果要算代码量的话,还得算上头文件啊。精确的结果是:

scim-lib: 46984 行
scim-chinese: 13009 行

最初由 bbbush 发表
越发佩服了。平均一下,差不多是 15000 行/人年,可见 Andrew S. Tanenbaum 的话有道理

scim 平台的代码,包括信号处理和其他基础的类 event, object, socket, iconvert 这些有 7000 行
平台模块,各种 FrontEnd 和 Config module,Setup module,socket、table、rawcode 三种 IMEngine 的代码加起来有 15000 行
scim-chinese 的代码有 10000 行

580 ./IMEngine/scim_rawcode_imengine.cpp
925 ./IMEngine/scim_socket_imengine.cpp
1713 ./IMEngine/scim_table_imengine.cpp
309 ./SetupUI/scim_socket_imengine_setup.cpp
2466 ./SetupUI/scim_table_imengine_setup.cpp
2600 scim_pinyin_imengine.cpp
1372 scim_pinyin_imengine_setup.cpp

可见要写一个输入法并不是很简单的事情,即使 scim-1.0 提供的 API 很简单,“只要继承 IMEngineFactoryBase 和 IMEngineInstanceBase 两个基类并实现其中的方法就可以了”,但是要想功能比较强,需要做的事情要多得多

scim 的配置程序 *_setup 不知道又是怎样的设计。这里是开发文档中没有提到的地方
发表于 2004-6-13 22:37:49 | 显示全部楼层
m_name = utf8_mbstowcs (_("Smart Pinyin"));
这个函数是在哪儿定义的?
发表于 2004-6-13 23:48:53 | 显示全部楼层
这个函数在编译的时候,源程序的编码不会影响最后的结果?是不是源程序的编码总是不会影响结果?
void
PinyinInstance::refresh_status_property ()
{
    if (is_english_mode () || m_forward)
        _status_property.set_label ("英");
    else if (m_traditional && !m_simplified)
        _status_property.set_label ("繁");
    else if (m_simplified && !m_traditional)
        _status_property.set_label ("简");
    else
        _status_property.set_label ("中");

    update_property (_status_property);
}
发表于 2004-6-13 23:53:13 | 显示全部楼层
最初由 james_su 发表
你可以把 signal-slot 当作回调函数指针。如果你开发过 qt 或者 gtk 程序的话就好明白了。SCIM 的 signal-slot 和 qt, gtk 里面的 signal 是一样的东西。


gtk也用S&S了? 当年还不停的攻击S&S...
发表于 2004-6-14 00:11:24 | 显示全部楼层
哪位朋友帮打分PDF出来?
发表于 2004-6-14 01:25:47 | 显示全部楼层
我机器上用 soffice 输出的结果没办法用 gpdf 看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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