'''下面描述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: 退出按钮 1. 详细说明 * 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 }}} * 参考: [[http://osmond.cn/cdbe/manual/ch04s02.html|CDBE批处理命令的使用方法]] ==== CDBEasyGUI ==== * 使用 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) }}} 资源文件 resource.py {{{#!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 === 反馈 === <<Include(/Discuss)>>