diff --git a/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form b/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form index 38db3ee12f01dde6bb64738e761f65f1ac9169f1..aa4ebed53b0e2e05c439be1a9732b34aab629eb8 100644 --- a/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form +++ b/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form @@ -81,6 +81,9 @@ + + + @@ -117,6 +120,9 @@ + + + @@ -153,6 +159,9 @@ + + + @@ -192,7 +201,7 @@ - + diff --git a/napi_vs_plugin/src/extension.js b/napi_vs_plugin/src/extension.js index 0b2c09422d25a7382c4ffd66147744c6c02d9e6d..ad77bb21897cb3590870d0f5d86826938eb7cc35 100644 --- a/napi_vs_plugin/src/extension.js +++ b/napi_vs_plugin/src/extension.js @@ -58,6 +58,19 @@ function executor(name, genDir, mode, importIsCheck) { }); } +function executorH2Ts(name, genDir) { + var command = exeFilePath + " -f " + name + " -o " + genDir; + var exec = require('child_process').exec; + exec(command, function (error, stdout, stderr) { + VsPluginLog.logInfo('VsPlugin: stdout =' + stdout + ", stderr =" + stderr); + if (error || stdout.indexOf("success") < 0) { + vscode.window.showErrorMessage("genError:" + (error != null ? error : "") + stdout); + return VsPluginLog.logError("VsPlugin:" + error + stdout); + } + vscode.window.showInformationMessage("Generated successfully"); + }); +} + function genCommand(name, genDir, mode, importIsCheck) { var genFileMode = mode == 0 ? " -f " : " -d "; if (genDir == ""){ @@ -87,8 +100,9 @@ function register(context, command) { } ); panel.webview.html = getWebviewContent(context); + let msg; panel.webview.onDidReceiveMessage(message => { - let msg = message.msg; + msg = message.msg; if (msg == "cancel") { panel.dispose(); } else if(msg == "param") { @@ -97,12 +111,25 @@ function register(context, command) { let genDir = message.genDir; let importIsCheck = message.importIsCheck; checkMode(name, genDir, mode, importIsCheck); - } else { + } else if(msg == "h2ts") { + let name = message.fileNames; + let genDir = message.genDir; + name = re.replaceAll(name, " ", ""); + if ("" == name) { + vscode.window.showErrorMessage("Please enter the path!"); + return; + } + if (exeFileExit()) { + executorH2Ts(name, genDir); + } else { + vscode.window.showInformationMessage("Copy executable program to " + __dirname); + } + }else { selectPath(panel, message); } }, undefined, context.subscriptions); let fn = re.getFileInPath(uri.fsPath); - let tt = re.match("@ohos.[a-zA-Z_0-9]+.d.ts", fn); + let tt = re.match("(@ohos.[a-zA-Z_0-9]+.d.ts)|([a-zA-Z_0-9]+.h)", fn); var result = { msg: "selectInterPath", path: tt ? uri.fsPath : "" @@ -116,6 +143,7 @@ function register(context, command) { * 选择本地目录/文件夹 */ function selectPath(panel, message) { + let msg = message.msg; let mode = 1; if (message.mode != undefined) { mode = message.mode; @@ -126,7 +154,9 @@ function register(context, command) { canSelectFiles: mode == 0 ? true : false,//是否选择文件 canSelectFolders: mode == 0 ? false : true,//是否选择文件夹 defaultUri:vscode.Uri.file(''),//默认打开本地路径 - filters: { + filters: msg == "selectHFilePath" ? { + 'Text files': ['h'] + } : { 'Text files': ['d.ts'] } }; diff --git a/napi_vs_plugin/src/vs_plugin_view.html b/napi_vs_plugin/src/vs_plugin_view.html index c7dce1cbb87310fa536b0eb98f80a74f4ad5a415..2714fa7457dbb9beb12f13a877746b3a51255639 100644 --- a/napi_vs_plugin/src/vs_plugin_view.html +++ b/napi_vs_plugin/src/vs_plugin_view.html @@ -1,24 +1,17 @@ - - + - + Napi - - - + - - 选择生成方式: - - .d.ts文件(多个文件之间用,号分割) - - 文件夹 - - - - - 选择接口文件: - - - - - - 生成框架路径: - - - - - 编译脚本路径: - - - - - 启用import功能 - - - Cancel - Ok - - ? - - - + function fillInputDir(fileNames, message) { + var dir; + var fileName; + if (mode == 0) { + if (fileNames.indexOf(",") != -1) { + fileName = fileNames.substring(0, fileNames.indexOf(",")); + } else { + fileName = fileNames; + } + dir = fileName.substring(0, fileName.lastIndexOf("\\")); + } else { + dir = fileNames; + } + if(message == "selectInterPath") { + let regex = new RegExp("[a-zA-Z_0-9]+.h"); + if(regex.exec(fileNames)){ + document.getElementById("genHResultDir").value = dir; + }else{ + document.getElementById("genFile").value = dir; + document.getElementById("buildFile").value = dir; + } + }else{ + document.getElementById("genHResultDir").value = dir; + } + } + + + + + + Napi-Gen + + + 选择生成方式: + + .d.ts文件 + 文件夹 + + + + + 选择接口文件: + + + + + + 生成框架路径: + + + + + 编译脚本路径: + + + + + 启用import功能: + + + + Cancel + Ok + + ? + + + + + + + Ts-Gen + + + 文件路径选择: + + + + + + 输出目录选择: + + + + + + Cancel + Ok + + ? + + + + + + \ No newline at end of file