CuLib需求

1. 目标

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

2. 内容

2.1. 基础

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

2.2. 事件处理

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

2.3. 窗口对象

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

2.3.1. 窗体(frame)

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

2.3.2. 菜单(menu)

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

2.3.3. 列表(list)

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

2.4. 快速模板

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

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

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