From 60930da54cb626170459021bbe8a9198f7c5d258 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Wed, 8 Sep 2021 21:28:09 +0800 Subject: [PATCH] Update doc. Split project part. 1 * Update doc. Still not the final version. * Splite original Viewer into independent Decorator and Viewer project. --- Documents/COMPILE_ZH.md | 62 ++++++++++++-- Documents/DEPLOY_ZH.md | 27 +++++++ README_ZH.md | 81 +++++++++++-------- SuperScriptDecorator/CustomConfig.py | 8 ++ .../DecoratorConstValue.py | 0 .../DecoratorCore.py | 0 .../Progressbar.py | 0 SuperScriptDecorator/SuperScriptDecorator.py | 53 ++++++++++++ .../SuperScriptDecorator.pyproj | 50 ++++++++++++ SuperScriptMaterializer.sln | 28 ++++--- SuperScriptViewer/SuperScriptViewer.py | 57 +------------ SuperScriptViewer/SuperScriptViewer.pyproj | 26 +----- 12 files changed, 261 insertions(+), 131 deletions(-) create mode 100644 SuperScriptDecorator/CustomConfig.py rename {SuperScriptViewer => SuperScriptDecorator}/DecoratorConstValue.py (100%) rename {SuperScriptViewer => SuperScriptDecorator}/DecoratorCore.py (100%) rename {SuperScriptViewer => SuperScriptDecorator}/Progressbar.py (100%) create mode 100644 SuperScriptDecorator/SuperScriptDecorator.py create mode 100644 SuperScriptDecorator/SuperScriptDecorator.pyproj diff --git a/Documents/COMPILE_ZH.md b/Documents/COMPILE_ZH.md index 2804231..3dbce01 100644 --- a/Documents/COMPILE_ZH.md +++ b/Documents/COMPILE_ZH.md @@ -1,20 +1,66 @@ -# 编译与调试 +# 编译 -本文档将指导您编译或调试`SuperScriptMaterializer` +本文档将指导您编译或调试`SuperScriptMaterializer`以及对`SuperScriptViewer`的编译。 -## 需求 +## SuperScriptMaterializer -- Visual Studio 2010,即VC++ v100的工具集(不能使用Virtools 2015及以上版本进行编译,在编译Virtools 5.0 Standalone版本的时候亲测会出错且无法解决) +### 需求 + +- Visual Studio 2010,即VC++ v100的工具集(不能使用Virtools 2015及以上版本进行编译,在编译Virtools 5.0 Standalone版本的时候亲测会出错且无法解决,但对于其他版本您可以尝试使用高版本的工具集进行编译) - Virtools SDK 或 Ballance Mod Loader(如果以Virtools 2.1作为目标) +- SQlite SDK - Python 3.x -## 编译之前 +### 编译之前 -编译之前,您需要先进入项目根目录下,在此处打开终端,我们首先需要生成编译的参数。自上一个版本以来,我们将编译时需要的一些参数全部转为Visual Studio可识别的宏,定义在独立的`Virtools.props`中,此步操作便是生成这个文件,以确定编译文件的相关参数。 +编译之前,对于SQLite SDK,您可以从[sqlite.org](http://www.sqlite.org/)下载,然后使用Visual C++的工具集执行`LIB /DEF:sqlite3.def /machine:IX86`以获取可以用于编译的文件。 -按如下格式运行指令 +然后您需要先进入项目根目录下,在此处打开终端,我们首先需要生成编译的参数。自上一个版本以来,我们将编译时需要的一些参数全部转为Visual Studio可识别的宏,定义在独立的`Virtools.props`中,此步操作便是生成这个文件,以确定编译文件的相关参数。 + +按如下格式运行指令: ``` - +python3 mk_materializer_cfg.py [plugin|standalone] [21|25|35|40|50] [virtools_root_path] [sqlite_header] [sqlite_lib] [sqlite attach ref] [bml path] ``` +每一项参数的含义: + +* `[plugin|standalone]`:编译为插件还是独立程序 +* `[21|25|35|40|50]`:Virtools版本 +* `[virtools_root_path]`:Virtools Dev的根目录,用于Virtools SDK的头文件,链接库的寻找,也决定程序编译后的输出位置 +* `[sqlite_header]`:SQlite头文件路径 +* `[sqlite_lib]`:SQlite链接库的路径,用于找到下一项 +* `[sqlite attach ref]`:SQlite链接库,通常来说是`sqlite3.lib` +* `[bml path]`:BML的路径,只有在以Virtools 2.1为目标编译时才有用 + +以下是一些指令示例: + +``` +python3 .\mk_materializer_cfg.py plugin 50 "E:\Virtools\Virtools Dev 5.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +python3 .\mk_materializer_cfg.py standalone 50 "E:\Virtools\Virtools Dev 5.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +python3 .\mk_materializer_cfg.py plugin 40 "E:\Virtools\Virtools Dev 4.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +python3 .\mk_materializer_cfg.py standalone 40 "E:\Virtools\Virtools Dev 4.0" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +python3 .\mk_materializer_cfg.py plugin 35 "E:\Virtools\Virtools Dev 3.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +python3 .\mk_materializer_cfg.py standalone 35 "E:\Virtools\Virtools Dev 3.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +python3 .\mk_materializer_cfg.py standalone 25 "E:\Virtools\Virtools Dev 2.5" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +python3 .\mk_materializer_cfg.py standalone 21 "E:\Virtools\Virtools Dev 2.1" "D:\CppLib\SQLite\sqlite-amalgamation-3310100" "D:\CppLib\SQLite\sqlite-dll-win32-x86-3310100" sqlite3.lib "D:\BallanceModLoader" +``` + +### 编译 + +使用`Visual Studio`打开`SuperScriptMaterializer.sln`,选择`SuperScriptMaterializer`工程。然后选择编译模式(Debug或Release),然后编译即可,基本上只要配置无误,编译会很快完成 + +## SuperScriptViewer + +### 需求 + +* Node.js +* gulp +* gulp插件:待补充 + +### 编译 + +`SuperScriptViewer`本身分为2个部分:由Python配合Flask所写的后端,以及前端。后端无需编译,而前端需要通过**gulp**进行操作,以减少文档本身的大小,进而减小传输开销。 + +编译的方法很简单,在`Viewer`目录下执行`gulp xxxx`即可让gulp自动完成相关操作。 + diff --git a/Documents/DEPLOY_ZH.md b/Documents/DEPLOY_ZH.md index e69de29..710aa53 100644 --- a/Documents/DEPLOY_ZH.md +++ b/Documents/DEPLOY_ZH.md @@ -0,0 +1,27 @@ +# 部署 + +本文档将指导您部署属于您的`SuperScriptMaterializer`。它可以让您摆脱Virtools的限制,在所有平台上都可以浏览到Virtools的脚本。您需要先了解README中标准的操作方式,然后,我们会根据部署的一些特殊性,对标准步骤进行修改。 + +## 导出脚本 + +首先我们需要使用`SuperScriptMaterializer`将我们需要查看的脚本导出。众所周知,Virtools各个版本之间的兼容性很差,为一个版本的所作的文档可能在另一个版本中就无法打开,或者是丢失相关的Building Block,因此,首先您需要根据您所需要查看的Virtools文件的对应版本来选取合适版本的插件,这样可以获得更好的导出效果,因为一旦文档中出现一些Building Block丢失之类的错误,那么Virtools会让一些本可读的字段变成完全不可读的Binary格式。这也是我们的`Materializer`提供如此多版本选项的原因,为的是让每一份可能的文档都可以被正确地加载。 + +此外,如果您遇到了NMS文件,那么您可能需要使用Virtools创作环境并配合插件模式的`Materializer`来导出,通过新建一个随意物件然后让脚本加载在其上,进而导出。您可能无法在NMS文件上使用独立模式的`Materializer`,因为它没有办法识别NMS文件。 + +当然,您如果遇到了很多文件的情况,您可以将需要的文件放在一起,然后编写一个Shell脚本,然后使用独立模式的`Materializer`来进行批量导出(如果可以的话)。这是一个针对Ballance游戏所有文件的脚本导出的Shell脚本和其生成器的示例,可供您参考。 + +// todo: 贴上链接 + +如果您有来自不同Virtools版本,您需要分别用对应的导出器进行导出,然后将他们整理归类以供下一级的输入。无需担心不同版本的Virtools导出会导致错误,`Decorator`会正确处理它们。 + +## 分析脚本 + +您需要准备好`SuperScriptDecorator`,和一份`import.txt`。正如标准操作方式中所言,您需要把需要综合的所有的导出数据库及各个文件的名字写入`import.txt`。我的操作是在上一步生成批处理的时候一并生成`import.txt`,因为它们之间联系很紧密。当然,您完全手写`import.txt`也是可以的。在完成之后,与标准操作方式内所述一致,直接运行即可。分析脚本的时间与您输入的脚本的数量和脚本的复杂度相关。 + +## 发布脚本 + +分析脚本完成后,我们就该将数据输入到`SuperScriptViewer`中了。与普通运行方式不同,我们需要以非调试模式启动Flask部署后端,并同时完成前端部署。您可以参阅[Flask部署文档](https://flask.palletsprojects.com/en/2.0.x/deploying/)来根据您的情况来进行选择。 + +我所作的Ballance脚本展示网页使用Gunicorn,部署指令是`gunicorn ServerCore:app`,其中唯一需要注意的是`ServerCore:app`这个程序入口点,在您选择不同于我的部署方式时,这个入口点将不会改变。与此同时我使用Nginx做了反向代理,具体配置可参考这里 + +// todo: 贴上链接 diff --git a/README_ZH.md b/README_ZH.md index 175b3d6..0e4f056 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -12,24 +12,15 @@ 超级Virtools脚本物化器(机翻(确信)) -本项目分为4个部分: +本项目分为3个部分: * `SuperScriptMaterializer`:一个C++工程,将生成一个Virtools界面插件或独立播放器用于导出初步数据。 * `SuperScriptDecorator`:一个Python工程,将解析导出的数据,并将其组合成易于浏览的格式。 -* `SuperScriptViewer`:一个Python工程,使用Flask提供一个本地Web界面进行脚本以供快速查看,通常是用于本地快速查看解析后脚本的数据。 -* `SuperScriptEnterprise`:一个PHP工程,相对于`SuperScriptViewer`更适合部署于服务器上进行数据的展示和浏览。 +* `SuperScriptViewer`:一个Python工程,使用Flask提供一个本地Web界面进行脚本以供快速查看。 - +整个工程所作的事情就是,将Virtools文档中的所有脚本导出成一个SQLite数据库文件(`Materializer`所做的任务),然后经过Python进行排布处理(`Decorator`所做的任务),最后提供一个本地Web前端查看脚本(`Viewer`所做的任务)。整个的查看流程比较复杂,涉及到多个软件的操作。希望您能继续阅读下面比较概要操作说明,以获得良好的使用体验。 -四个部分组成的工作流程如上图所示。整个工程所作的事情就是,将Virtools文档中的所有脚本导出成一个SQLite数据库文件,然后经过Python进行排布处理,最后提供一个本地Web前端查看脚本。这同样适用于`Script Hidden`的Virtools脚本,也适用于其中含有不可展开的`Behavior Graph`的脚本。 - -物化器不能完全恢复脚本的原有排布,无论原有排布是否存在,物化器都将重新自动生成脚本中的各个元素的位置。某些结构的关系可能会改变(例如Export parameter),亦或者是与Virtools中的呈现不同,但是逻辑思路将不会改变。同时物化器不能将已经生成的结构回写成Virtools可接受的格式,因此物化器只能提供无视脚本隐藏的分析功能。 +物化器同样适用于`Script Hidden`的Virtools脚本,也适用于其中含有不可展开的`Behavior Graph`的脚本。物化器不能完全恢复脚本的原有排布,无论原有排布是否存在,物化器都将重新自动生成脚本中的各个元素的位置。某些结构的关系可能会改变(例如Export parameter),亦或者是与Virtools中的呈现不同,但是逻辑思路将不会改变。同时物化器不能将已经生成的结构回写成Virtools可接受的格式,因此物化器只能提供无视脚本隐藏的分析功能。 **注意事项** @@ -43,17 +34,21 @@ SuperScriptMaterializer分为两种类型,一种是*插件*模式,在Virtool |已知的Virtools版本|插件模式|独立模式| |:---|:---|:---| |Virtools 2.1|× (0)|√ (1)| -|Virtools 2.5|× (2)|√| +|Virtools 2.5|× (2)|√ (4)| |Virtools 3.0|× (3)|× (3)| -|Virtools 3.5|√ (4)|√ (4)| -|Virtools 4.0|√ (4)|√ (4)| +|Virtools 3.5|√|√| +|Virtools 4.0|√|√ (4)| |Virtools 5.0|√|√| 0. 没有可用的Virtools Dev 2.1,因此没有插件模式 0. 使用Ballance Mod Loader提供的逆向Virtools SDK进行编译 0. Virtools SDK不支持在界面上添加菜单 0. 缺少Virtools SDK,无法编译 -0. 正在编写中 +0. 有不影响输出的错误 + +### 运行环境 + +* 至少一个可以使用的Virtools环境 ### 使用 @@ -77,29 +72,56 @@ SuperScriptMaterializer分为两种类型,一种是*插件*模式,在Virtool ## SuperScriptDecorator +上一步导出的数据库文件并不能直接被使用,需要通过`SuperScriptDecorator`辅助生成各个Building Graph的位置以及各种连线,之后才能进入下一步查看。同时,为了支持一次性在一个工程内浏览所有的脚本内容,`Decorator`还负责将多个上游导出的数据库合并成一个数据库,以供`Viewer`进行查看。 + +### 运行环境 + +* Python 3.x ### 使用 -将上一步得到的`export.db`和`env.db`与`SuperScriptDecorator.py`放在一起。然后在此目录中运行`python3 ./SuperScriptDecorator.py`,等待Python交互界面提示可以打开本地的网页即可。 +将上一步得到的`export.db`和`env.db`与`SuperScriptDecorator.py`放在一起。然后新建一个文件名为`import.txt`(使用UTF-8编码),在里面输入如下内容(三个部分之间的空白是`Tab`而不是空格): + +``` +example.cmo export.db env.db +``` + +然后在此目录中运行`python3 ./SuperScriptDecorator.py`,等待Python交互界面提示完成操作即可。 `SuperScriptDecorator.py`具有一些命令行开关: -- `-i`:指定输入的`export.db` -- `-o`:指定输出的`decorated.db`,如果已经存在将不考虑输入,直接使用输出数据库呈现 -- `-e`:指定输入的`env.db`,环境数据库 +- `-i`:指定输入的`import.txt` +- `-o`:指定输出的`decorated.db`,如果已经存在将覆盖 - `-c`:指定数据库编码,可用的编码表可以在[这里](https://docs.python.org/3/library/codecs.html#standard-encodings)查看 -- `-f`:无参数,用于强制重新生成输出数据库,无论输出数据库是否存在 - `-d`:无参数,启用调试模式,直接抛出异常,而不是捕获后在控制台输出,方便调试 +### import.txt + +`import.txt`是一个提供输入文件的集和的文本文件。由于`Decorator`还负责将多个上游导出的数据库合并成一个数据库,这些多个由上游导出的数据库需要由`import.txt`来指示。`import.txt`的基本格式就是: + +* 每一行代表一组输入 +* 每一行共有3个输入,从左至右分别为:文档的名字(会被显示在脚本层次图中),`export.db`,和`env.db` +* 每一行3个部分中间由`Tab`分割 +* 空行会被忽略 + ### 提示 -以上选项在基本使用中应该不会用到,因此按上述规则直接放置好文件直接运行即可。 +以上某些选项在基本使用中应该不会用到,因此按最开始所述的方式直接放置好文件直接运行即可。 如果Python交互界面提示数据库`TEXT`类型解码失败,或者解析的字符出现乱码,那么可能您需要手动使用`-c`开关指定数据库文本解码方式。因为Virtools使用多字节编码,依赖于当前操作系统的代码页,`SuperScriptDecorator`做了特殊获取以保证大多数计算机可以直接运行,但仍然不能排除一些特殊情况。需要注意的是,指定的编码不是你计算机当前的代码页,而是制作这个Virtools文档的作者的计算机的代码页。 ## SuperScriptViewer -一份指导你如何使用Viewer的文档已内置在Viewer中,可以从Help页面进行查看 +`SuperScriptViewer`旨在提供一个网页前端查看已经生成好的数据文件。至于`Viewer`的使用,一份指导你如何使用`Viewer`的文档已内置在`Viewer`中,可以从Help页面进行查看。 + +### 运行环境 + +* 装有Flask的Python 3.x +* 常见浏览器(Safari除外) + +### 使用 + +如果您只是为了简单查看一下导出的文件,我们建议以调试模式运行`Viewer`,即将上一步得到的`decorated.db`和`SuperScriptViewer.py`放在一起,然后运行`python3 ./SuperScriptDecorator.py`,即可以运行调试模式的`Viewer`。如果您是要将生成的结果部署到服务器,我们更建议您使用生产模式进行部署,详情请参见[部署](./Documents/DEPLOY_ZH.md)。 ## 问题反馈 @@ -109,10 +131,6 @@ SuperScriptMaterializer分为两种类型,一种是*插件*模式,在Virtool * `SuperScriptMaterializer`独立模式输出了`[ERROR]`等类似内容 * Python交互界面弹出错误 -## 常见场景 - -// todo - ## 部署 参见[部署](./Documents/DEPLOY_ZH.md) @@ -121,19 +139,12 @@ SuperScriptMaterializer分为两种类型,一种是*插件*模式,在Virtool 参见[编译](./Documents/COMPILE_ZH.md) - - ## 开发计划 在之后的版本中,以下功能将逐步加入: * 当前页面搜索和全局搜索 * Shortcut追踪 -* 在Viewer中移动Block和BB ## 特别感谢 diff --git a/SuperScriptDecorator/CustomConfig.py b/SuperScriptDecorator/CustomConfig.py new file mode 100644 index 0000000..4692903 --- /dev/null +++ b/SuperScriptDecorator/CustomConfig.py @@ -0,0 +1,8 @@ +import locale + +# encoding list +# https://docs.python.org/3/library/codecs.html#standard-encodings +database_encoding = locale.getpreferredencoding() +export_db = "import.txt" +decorated_db = "decorate.db" +debug_mode = False diff --git a/SuperScriptViewer/DecoratorConstValue.py b/SuperScriptDecorator/DecoratorConstValue.py similarity index 100% rename from SuperScriptViewer/DecoratorConstValue.py rename to SuperScriptDecorator/DecoratorConstValue.py diff --git a/SuperScriptViewer/DecoratorCore.py b/SuperScriptDecorator/DecoratorCore.py similarity index 100% rename from SuperScriptViewer/DecoratorCore.py rename to SuperScriptDecorator/DecoratorCore.py diff --git a/SuperScriptViewer/Progressbar.py b/SuperScriptDecorator/Progressbar.py similarity index 100% rename from SuperScriptViewer/Progressbar.py rename to SuperScriptDecorator/Progressbar.py diff --git a/SuperScriptDecorator/SuperScriptDecorator.py b/SuperScriptDecorator/SuperScriptDecorator.py new file mode 100644 index 0000000..279c3b6 --- /dev/null +++ b/SuperScriptDecorator/SuperScriptDecorator.py @@ -0,0 +1,53 @@ +import CustomConfig +import DecoratorCore +import os +import sys +import getopt +import logging + +try: + opts, args = getopt.getopt(sys.argv[1:], "hi:o:e:c:fd") +except getopt.GetoptError: + print('Wrong arguments!') + print('python SuperScriptViewer.py -i -o -c -d') + sys.exit(1) +for opt, arg in opts: + if opt == '-h': + print('python SuperScriptViewer.py -i -o -c -d') + sys.exit(0) + elif opt == '-i': + CustomConfig.export_db = arg + elif opt == '-o': + CustomConfig.decorated_db = arg + elif opt == '-c': + CustomConfig.database_encoding = arg + elif opt == '-d': + CustomConfig.debug_mode = True + +print('Super Script Decorator') +print('Homepage: https://github.com/yyc12345/SuperScriptMaterializer') +print('Report bug: https://github.com/yyc12345/SuperScriptMaterializer/issues') +print('') + +# process input and output +if not os.path.isfile(CustomConfig.export_db): + print('No import.txt. Fail to generate. Exit app.') + sys.exit(1) + +# real db generator func +def dc_wrapper(): + pass + +# generate db +if CustomConfig.debug_mode: + DecoratorCore.run() +else: + try: + DecoratorCore.run() + except Exception, ex: + print("!!! An error occurs. Please report follwoing error output and reproduce file to developer. !!!") + logging.exception(ex) + sys.exit(1) + +print('Decorated database generating done.') + diff --git a/SuperScriptDecorator/SuperScriptDecorator.pyproj b/SuperScriptDecorator/SuperScriptDecorator.pyproj new file mode 100644 index 0000000..f42fa3a --- /dev/null +++ b/SuperScriptDecorator/SuperScriptDecorator.pyproj @@ -0,0 +1,50 @@ + + + Debug + 2.0 + 6d751bf5-87d6-4123-94b3-34721938cf04 + . + SuperScriptDecorator.py + + + . + . + SuperScriptDecorator + SuperScriptDecorator + Standard Python launcher + -f -d + False + + + true + false + + + true + false + + + + Code + + + Code + + + Code + + + Code + + + + + + + + + + + \ No newline at end of file diff --git a/SuperScriptMaterializer.sln b/SuperScriptMaterializer.sln index 3ce2cf3..2e32779 100644 --- a/SuperScriptMaterializer.sln +++ b/SuperScriptMaterializer.sln @@ -3,9 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29418.71 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "SuperScriptViewer", "SuperScriptViewer\SuperScriptViewer.pyproj", "{6D751BF5-87D6-4123-94B3-34721938CF04}" +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "SuperScriptDecorator", "SuperScriptDecorator\SuperScriptDecorator.pyproj", "{6D751BF5-87D6-4123-94B3-34721938CF04}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SuperScriptMaterializer", "SuperScriptMaterializer\SuperScriptMaterializer.vcxproj", "{431163D3-86F1-4F6F-921C-062C6A4C70D9}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SuperScriptMaterializer", "SuperScriptMaterializer\SuperScriptMaterializer.vcxproj", "{4D941003-020F-47FD-9FA2-FFC989E306B8}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "SuperScriptViewer", "SuperScriptViewer\SuperScriptViewer.pyproj", "{0E4B5021-27EA-4F79-B87D-E123AFB3D788}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -23,14 +25,20 @@ Global {6D751BF5-87D6-4123-94B3-34721938CF04}.Release|Any CPU.ActiveCfg = Release|Any CPU {6D751BF5-87D6-4123-94B3-34721938CF04}.Release|x64.ActiveCfg = Release|Any CPU {6D751BF5-87D6-4123-94B3-34721938CF04}.Release|x86.ActiveCfg = Release|Any CPU - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Debug|x64.ActiveCfg = Debug|Win32 - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Debug|x86.ActiveCfg = Debug|Win32 - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Debug|x86.Build.0 = Debug|Win32 - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Release|Any CPU.ActiveCfg = Release|Win32 - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Release|x64.ActiveCfg = Release|Win32 - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Release|x86.ActiveCfg = Release|Win32 - {431163D3-86F1-4F6F-921C-062C6A4C70D9}.Release|x86.Build.0 = Release|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x64.ActiveCfg = Debug|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.ActiveCfg = Debug|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Debug|x86.Build.0 = Debug|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|Any CPU.ActiveCfg = Release|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x64.ActiveCfg = Release|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.ActiveCfg = Release|Win32 + {4D941003-020F-47FD-9FA2-FFC989E306B8}.Release|x86.Build.0 = Release|Win32 + {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|x64.ActiveCfg = Debug|Any CPU + {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Debug|x86.ActiveCfg = Debug|Any CPU + {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|x64.ActiveCfg = Release|Any CPU + {0E4B5021-27EA-4F79-B87D-E123AFB3D788}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SuperScriptViewer/SuperScriptViewer.py b/SuperScriptViewer/SuperScriptViewer.py index 96a30c1..e263c17 100644 --- a/SuperScriptViewer/SuperScriptViewer.py +++ b/SuperScriptViewer/SuperScriptViewer.py @@ -1,65 +1,10 @@ -import CustomConfig -import DecoratorCore import ServerCore import os import sys import getopt import logging -try: - opts, args = getopt.getopt(sys.argv[1:], "hi:o:e:c:fd") -except getopt.GetoptError: - print('Wrong arguments!') - print('python SuperScriptViewer.py -i -o -e -c -f -d') - sys.exit(1) -for opt, arg in opts: - if opt == '-h': - print('python SuperScriptViewer.py -i -o -e -c -f -d') - sys.exit(0) - elif opt == '-i': - CustomConfig.export_db = arg - elif opt == '-o': - CustomConfig.decorated_db = arg - elif opt == '-e': - CustomConfig.env_db = arg - elif opt == '-c': - CustomConfig.database_encoding = arg - elif opt == '-f': - CustomConfig.force_regenerate = True - elif opt == '-d': - CustomConfig.debug_mode = True - -print('Super Script View') -print('Homepage: https://github.com/yyc12345/SuperScriptMaterializer') -print('Report bug: https://github.com/yyc12345/SuperScriptMaterializer/issues') -print('') -# process -f -if (CustomConfig.force_regenerate): - if os.path.isfile(CustomConfig.decorated_db): - os.remove(CustomConfig.decorated_db) - -if not os.path.isfile(CustomConfig.env_db): - print('No environment database. Fail to generate. Exit app.') - sys.exit(1) - -if not os.path.isfile(CustomConfig.decorated_db): - print('No decorated database, generating it.') - if not os.path.isfile(CustomConfig.export_db): - print('No export.db. Fail to generate. Exit app.') - sys.exit(1) - - # generate db - if CustomConfig.debug_mode: - DecoratorCore.run() - else: - try: - DecoratorCore.run() - except Exception as ex: - print("!!! An error occurs. Please report follwoing error output and reproduce file to developer. !!!") - logging.exception(ex) - sys.exit(1) - - print('Decorated database generating done.') +# todo: load db and cfg # todo: start flask ServerCore.run() diff --git a/SuperScriptViewer/SuperScriptViewer.pyproj b/SuperScriptViewer/SuperScriptViewer.pyproj index 3953a33..ab09565 100644 --- a/SuperScriptViewer/SuperScriptViewer.pyproj +++ b/SuperScriptViewer/SuperScriptViewer.pyproj @@ -2,7 +2,7 @@ Debug 2.0 - 6d751bf5-87d6-4123-94b3-34721938cf04 + 0e4b5021-27ea-4f79-b87d-e123afb3d788 . SuperScriptViewer.py @@ -11,9 +11,6 @@ . SuperScriptViewer SuperScriptViewer - Standard Python launcher - -f -d - False true @@ -24,24 +21,9 @@ false - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - + + +