Differences between revisions 4 and 7 (spanning 3 versions)
Revision 4 as of 2005-12-09 20:40:50
Size: 1568
Editor: OsmondLiang
Comment:
Revision 7 as of 2005-12-12 09:47:15
Size: 3095
Editor: limodou
Comment:
Deletions are marked like this. Additions are marked like this.
Line 51: Line 51:

  * 使用 EasyGui 生成的界面:

attachment:convertor.jpg

目前不能实现message消息框,只能是运行在Dos窗口,或另开窗口专门用来显示输出。即界面选择与输出是分离的。

使用 EasyGui 的代码,主程序 run_cdbe.py
{{{#!python
from EasyGui import EasyCommander
import resource
import os

easy = EasyCommander.EasyCommander(None, resource, inline=True)
if easy.run():
    values = easy.GetValue()

    if values['type'] == 'web':
        cmd = ["%(xslt)s%(type)s %(bookname)s %(output)s" % values]
    elif values['type'] == 'pdf':
        cmd = ["%(xslt)sfo %(bookname)s %(language)s %(output)s" % values]
        cmd.append("%bdj_pdf %(bookname)s %(language)s %(output)s" % values)
    else:
        cmd = ["%(xslt)s%(type)s %(bookname)s %(language)s %(output)s" % values]


    print cmd
    for c in cmd:
        os.system(c)
}}}

资源文件
{{{#!python
dialog = [
    ('string', 'bookname', '', 'Book Name:', None),
    ('single', 'type', 'chunk', 'Convert XML to Type:', ['chunk', 'html', 'pdf', 'plain', 'web']),
    ('single', 'language', 'zh-cn', 'Target Language:', [('Simplified Chinese', 'zh-cn'), ('English', 'en')]),
    ('single', 'xslt', 'bdj_', 'Target Language:', [('Saxon', 'bdj_'), ('libxslt', 'bd_')]),
    ('dir', 'output', '', 'Output Directory:', None),
    ]

title = "XML Docbook Convertor"
}}}

目前还只是生成命令行,但没有在实际的环境下进行测试。需要安装wxPython + EasyGui

下面描述CDBE V1.0 对 GUI 的需求

  1. 交互性界面元素设计需求
    • bookname: 一个指定书名或站点名的文本框
    • type: 一个转换类型选择列表:包括
      • xml to chunk (值:'chunk')
      • xml to html (值:'html')
      • xml to pdf (值:'pdf')
      • xml to slides (值:'plain')
      • xml to website (值:'web')
    • lang: 一个语言选择列表:包括
      • 简体中文 (值:'zh-cn')
      • 英文 (值:'en')
    • xslt: 一个XSLT选择列表:包括
      • saxon (值:'bdj_')
      • libxslt (值:'bd_')
    • output: 一个输出路径选择的文本框(可选项)
      • 默认值为空
    • msg: 一个在转换过程中给出提示信息的多行文本框
    • trans: 执行转换按钮
    • quit: 退出按钮
  2. 详细说明
    • CDBE 所使用的批处理文件名称 (默认存放在 D:\obp\CDBE\bat 目录下)
      • bd_chunk
      • bdj_chunk
      • bd_html
      • bdj_html
      • bd_fo
      • bdj_fo
      • bdj_pdf
      • bd_plain
      • bdj_plain
      • bd_web
      • bdj_web
    • 命令行字符串生成算法:

    cd D:\obp\CDBE\bat 
    if (type=='web')
       cmd = xslt+type+" "+bookname+" "+output
    elseif (type=='pdf')
       # 需顺序执行 cmd1、cmd2
       cmd1 = xslt+'fo '+bookname+" "+lang+" "output
       cmd2 = 'bdj_pdf '+bookname+" "+lang+" "output
    else
       cmd = xslt+type+" "+bookname+" "+lang+" "+output
    fi

attachment:convertor.jpg

目前不能实现message消息框,只能是运行在Dos窗口,或另开窗口专门用来显示输出。即界面选择与输出是分离的。

使用 EasyGui 的代码,主程序 run_cdbe.py

   1 from EasyGui import EasyCommander
   2 import resource
   3 import os
   4 
   5 easy = EasyCommander.EasyCommander(None, resource, inline=True)
   6 if easy.run():
   7     values = easy.GetValue()
   8 
   9     if values['type'] == 'web':
  10         cmd = ["%(xslt)s%(type)s %(bookname)s %(output)s" % values]
  11     elif values['type'] == 'pdf':
  12         cmd = ["%(xslt)sfo %(bookname)s %(language)s %(output)s" % values]
  13         cmd.append("%bdj_pdf %(bookname)s %(language)s %(output)s" % values)
  14     else:
  15         cmd = ["%(xslt)s%(type)s %(bookname)s %(language)s %(output)s" % values]
  16 
  17 
  18     print cmd
  19     for c in cmd:
  20         os.system(c)

资源文件

   1 dialog = [
   2     ('string', 'bookname', '', 'Book Name:', None),
   3     ('single', 'type', 'chunk', 'Convert XML to Type:', ['chunk', 'html', 'pdf', 'plain', 'web']),
   4     ('single', 'language', 'zh-cn', 'Target Language:', [('Simplified Chinese', 'zh-cn'), ('English', 'en')]),
   5     ('single', 'xslt', 'bdj_', 'Target Language:', [('Saxon', 'bdj_'), ('libxslt', 'bd_')]),
   6     ('dir', 'output', '', 'Output Directory:', None),
   7     ]
   8 
   9 title = "XML Docbook Convertor"

目前还只是生成命令行,但没有在实际的环境下进行测试。需要安装wxPython + EasyGui

CDBEGUI (last edited 2009-12-25 07:16:06 by localhost)