基于curses的工具包

-- limodou [2004-12-20 01:52:11]

1. 背景

-- ZoomQuiet [2004-12-20 08:01:50]

在Internet上开展多人参与的开源项目是个相对困难的事情,因为沟通与时间的问题。同时,许多人也希望有一个试验性的项目可以参与,因此这个项目应运而生。

  • 我的希望是把开展项目有关的内容尽可能地在这个项目实现,因此,做出一个真正实用的软件包倒不是件重要的事情,而如何去做,及对项目的控制,按项目的要求去做,使用相应的工具这才是这个项目的真正目的。而且提高大家的参与度与项目的透明度是此项目在实施过程中非常重要的环节,同时也希望不真正参与此项目的人也积极地观注它,体会一个项目的实施,一起出谋划策。
  • 主要因为啄木鸟,之前的几个项目,都有深厚的商业背景,开发进程,受到限制,所以,没有很好的开放到公众面前,虽然一直在进行中,可是没有了人气是也乎!
  • CuLib 项目是为了确立,有中国特色的开源项目组织方式而开启的,希望大家多多参与,共同体验,开源的乐趣!!!

Contents

1.1. 目标

实现一个基于curses的高级调用包。严格编写程序文档:需求、设计、重要决策、程序注释(文档按epydoc要求),使用说明等文档。

1.2. 要求

参与者,需要具备的…………

1.2.1. 环境及工具

  • python 2.4版
  • Cygwin 安装包: :setup.exe

  • curses环境
  • cvs
    • linux - 自带即可
    • windows - cygwin:http://www.cygwin.com, 带cvs, 因为tigris可以不用ssh,因此只要有cvs即可

    • 其它cvs工具也可以

1.2.2. 第三方python包

  • epydoc 用来编写程序中的文档。访问:epydoc(最新2.1)

  • docutils 用来写一般文档。访问:docutils(最新0.3.5)

  • 其它

1.2.3. 联系

  • 要求订阅 python.cn 或 google上的邮件列表(已经满足)
  • (可选)拥有自已的blog或wiki,便于发表成果和讨论问题
  • (可选)使用qq,uc,或msn在需要即时或语音讨论时使用

1.2.4. 编码要求

  • 一般文档要求使用reStructure格式编写,参考reST

  • 程序注释文档要求使用epydoc格式来编写,参考epytext

  • 代码规范参考 Python编码规范


-- ZoomQuiet [2004-12-20 08:04:00]

1.3. 计划

时间计划

Contents

  1. 2004/12/20-

1.4. 2004/12/20-

  • 申请项目空间
  • 确定参与人员
  • 编写需求
  • 编写相应工具及环境的介绍
    • docutils的安装及文档生成
    • epydoc的安装及文档生成
  • 熟悉相关的技术
    • 掌握cvs的基本使用
    • curses的基本编程知识
    • 基本reStructured Text格式的使用
    • 基本epydoc格式的使用
  • 其它


-- ZoomQuiet [2004-12-20 08:09:19]

1.5. 文档

1.5.1. 需求(编写中)

CuLib需求

1.6. 目标

实现一个基于curses的高级调用包。

1.7. 内容

1.7.1. 基础

  1. 开发一个公共调用层,使之更通用一些,比curses提供的更高级一点,而且更符合中国人的习惯。象 curses的坐标是(y,x)有些不习惯。

1.7.2. 事件处理

  1. 实现事件处理调用机制
  2. 实现基础事件影响对象(暂定BUI)
  3. 所有UI元素均要求从此对象(BUI)派生

1.7.3. 窗口对象

  1. 窗口对象均为UI元素
  2. 可以响应事件
  3. 有继承关系
  4. 显示分为模态和非模态两种。模态为必须关闭才可以切换到其它窗口,而非模态为不需关系就可以切换到其它窗口

1.7.3.1. 窗体(frame)

  1. 为基本UI元素,实现基本的字符录入、显示、定位
  2. 要实现stack式屏幕保存,即可以把窗口内的某个矩形型区域拷贝下来,当执行多次将保存维护成一个栈,恢复屏幕时按照栈的顺序恢复。(可以考虑所有需要保存恢复屏幕的处理都生成新的窗口)
  3. 可以有多种样式选择
  4. 窗体可以大于显示大小
  5. 有滚动条并可以指定是否显示
  6. 可以移动
  7. 可以改变大小
  8. 显示分为模态和非模态

1.7.3.2. 菜单(menu)

  1. 支持多级菜单
  2. 菜单项有多种状态可以设定:禁止/允许、显示/不显示、检查/不检查
  3. 支持配置文件生成菜单
  4. 自动判断屏幕边界保证菜单显示完整
  5. 菜单支持动态修改

1.7.3.3. 列表(list)

  1. 分为表头,表体
  2. 可定制样式
  3. 多列显示,并可以定制
  4. 支持行数据动态装入

1.7.4. 快速模板

  1. 可以快速实现的,含大量说明注释的实用模板
    1. 简单编辑窗口
    2. 简单交互窗口
    3. 简单字符式 web 窗口
    4. 简单运行监控窗口
  2. 我们主要是做工具,不是做应用,我想这个界线要划分清楚。交互窗口,web窗口应该是属于应用的。监控窗口是怎么想的?不过上面可以做为我们的demo程序。-- limodou [2009-09-11 09:22:13]

    • 对!就是Demo 的意思!可以作为 整体测试框架来先实现之!
    • 使用什么样的项目管理方式? 微集成? -- ZoomQuiet

    • 我想就是简单的迭代吧。 -- limodou

1.8. 人员

请留下常用的邮件地址,最好有站内的注册页面,以便协调,记录开发日志等等

Contents

  • 负责人:limodou BLOG: http://www.donews.new/limodou

    • (其它参与人员可自已把名字列在后面)
    • Bianconero
    • HankGong 龚华志(hankgong AT hotmail.com)

    • ZoomQuiet (项目协调者……即,打杂的!)

    • HackGou 憨狗( HackGou AT Yeah DOT Net or HackGou AT Gmail DOT com):"http://lamp.blogbus.com"

    • orciloud (orciloud AT gmail dot com)
    • 5261314 阿哲(5261314 AT vip.sina.com)
    • LiJie 李杰 (项目测试 cpunion AT 263.net)

    • AlbertLee (hanzhupeng AT kingsoft.net)

    • fat (fatbobman AT gmail dot com)
    • starrr (小牛) (starrr AT gmail dot com)
    • 0.706
    • Victorlee129 (victorlee129 AT gmail dot com) 备注:还在进行么?


-- ZoomQuiet [2004-12-20 08:06:05]

1.9. 进度

开发日程记要!

1.10. 2004/12

  • 041220 -- Start!

    • 在tigris.org申请空间(doing...)
    • 人员报名(doing...)


  • 041221

    • 编写需求文档(需由大家来完成,直接在上面的需求文档进行修改)(doing...)
    • 大家熟悉相应的环境及工具,了解curses编程相关内容(doing...)


  • 041222

    • 编写需求文档(doing...)

1.11. 2005/01

  • 050117

    • 在tigris.org申请的空间已经下来,访问地址为:http://culib.tigris.org

    • 如果对此项目感兴趣,请先去 http://www.tigris.org 注册用户,然后在culib上申请用户权限或发信给我,我给你加进去。

    • 节前很忙,具体开展将在春节过后,如果有问题请大家与我联系。

-- ZoomQuiet [2004-12-20 08:07:58]

1.12. 讨论

开发疑问,增进建议

Contents

  1. FAQ
  2. 提案

1.13. FAQ

1.14. 提案

  • 技术,文档不一定要使用 reST 格式,毕竟学习曲线高点,在大家使用习惯 MoinMoin 之后!

  • txt2tags -- 也是种好的格式哪!

  • 可以只使用简单的命令嘛 -- limodou
  • CDK好像做得更多,我看大家也没多少时间来开发,我自己搞了一点不过看了CDK以后觉得泄气了,比不过它。而且python里面的curses模块连menu和form都没加进来。好在有个panel,我想它应该会优化屏幕刷新的一些问题吧,要不然这个模块就没多大意义,是不是不用自己实现stack方式保存窗口了。可以直接使用pyCDK,里面的东西真的很漂亮。。-- LiJie


-- ZoomQuiet [2004-12-20 08:11:32]

1.15. 相关项目

  • Urwid

  • pyCDK CDK的python版本,送上美图一张,实际效果比这个漂亮,另外还有很多不错的控件,比如有个alphalist,有自动完成功能;滚动窗口、菜单、radio、列表框全都有了。 --LiJie

1.16. 相关文档