/// <summary> /// スクリプトを実行します。 /// </summary> /// <param name="evsd"></param> public static boolean invokeScript(String id, VsqFileEx vsq) { ScriptInvoker script_invoker = null; if (scripts.containsKey(id)) { script_invoker = scripts.get(id); } else { return(false); } if (script_invoker != null && script_invoker.scriptDelegate != null) { try { VsqFileEx work = (VsqFileEx)vsq.clone(); ScriptReturnStatus ret = ScriptReturnStatus.ERROR; if (script_invoker.scriptDelegate is EditVsqScriptDelegate) { boolean b_ret = ((EditVsqScriptDelegate)script_invoker.scriptDelegate).Invoke(work); if (b_ret) { ret = ScriptReturnStatus.EDITED; } else { ret = ScriptReturnStatus.ERROR; } } else if (script_invoker.scriptDelegate is EditVsqScriptDelegateEx) { boolean b_ret = ((EditVsqScriptDelegateEx)script_invoker.scriptDelegate).Invoke(work); if (b_ret) { ret = ScriptReturnStatus.EDITED; } else { ret = ScriptReturnStatus.ERROR; } } else if (script_invoker.scriptDelegate is EditVsqScriptDelegateWithStatus) { ret = ((EditVsqScriptDelegateWithStatus)script_invoker.scriptDelegate).Invoke(work); } else if (script_invoker.scriptDelegate is EditVsqScriptDelegateExWithStatus) { ret = ((EditVsqScriptDelegateExWithStatus)script_invoker.scriptDelegate).Invoke(work); } else { ret = ScriptReturnStatus.ERROR; } if (ret == ScriptReturnStatus.ERROR) { AppManager.showMessageBox(_("Script aborted"), "Cadencii", cadencii.windows.forms.Utility.MSGBOX_DEFAULT_OPTION, cadencii.windows.forms.Utility.MSGBOX_INFORMATION_MESSAGE); } else if (ret == ScriptReturnStatus.EDITED) { CadenciiCommand run = VsqFileEx.generateCommandReplace(work); AppManager.editHistory.register(vsq.executeCommand(run)); } String config_file = configFileNameFromScriptFileName(script_invoker.ScriptFile); FileOutputStream fs = null; boolean delete_xml_when_exit = false; // xmlを消すときtrue try { fs = new FileOutputStream(config_file); script_invoker.Serializer.serialize(fs, null); } catch (Exception ex) { serr.println("AppManager#invokeScript; ex=" + ex); delete_xml_when_exit = true; } finally { if (fs != null) { try { fs.close(); if (delete_xml_when_exit) { PortUtil.deleteFile(config_file); } } catch (Exception ex2) { serr.println("AppManager#invokeScript; ex2=" + ex2); } } } return(ret == ScriptReturnStatus.EDITED); } catch (Exception ex) { AppManager.showMessageBox(_("Script runtime error:") + " " + ex, _("Error"), cadencii.windows.forms.Utility.MSGBOX_DEFAULT_OPTION, cadencii.windows.forms.Utility.MSGBOX_INFORMATION_MESSAGE); serr.println("AppManager#invokeScript; ex=" + ex); } } else { AppManager.showMessageBox(_("Script compilation failed."), _("Error"), cadencii.windows.forms.Utility.MSGBOX_DEFAULT_OPTION, cadencii.windows.forms.Utility.MSGBOX_WARNING_MESSAGE); } return(false); }