⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 biwsdlbiappcodegen.py

📁 ajax 框价.是个好工具.javascript 矿家.可以用在任何平台.
💻 PY
📖 第 1 页 / 共 2 页
字号:
        self.emitIndentedLine("lTitle.setLocation(0, lCurrentY);")        self.emitIndentedLine("lTitle.setRight(0);")        self.emitIndentedLine("this.add(lTitle);")        self.emitIndentedLine("lCurrentY += lTitle.getHeight()+5;")        # Emit input controls for operation arguments:        for lArg in itertools.izip(aArgs, aArgTypes):            lArgName = lArg[0]            lArgType = lArg[1]            self.emitIndentedLine("")            self.emitIndentedCommentLine("// Add label and text area for inputing parameter " + lArgName)            self.emitIndentedLine("var lLabel = new BiLabel(\"" + lArgName + ":\");")            self.emitIndentedLine("lLabel.setLocation(8, lCurrentY+3);")            self.emitIndentedLine("lLabel.setWidth(122);")            self.emitIndentedLine("this.add(lLabel);")            self.emitIndentedLine("this._ctlParam_" + lArgName + " = new BiTextField(\"Enter an expression of type " + lArgType + "\");")            self.emitIndentedLine("this._ctlParam_" + lArgName + ".setLocation(140, lCurrentY);")            self.emitIndentedLine("this._ctlParam_" + lArgName + ".setRight(0);")            self.emitIndentedLine("this._ctlParam_" + lArgName + ".setHeight(20);")            self.emitIndentedLine("this.add(this._ctlParam_" + lArgName + ");")            self.emitIndentedLine("lCurrentY += this._ctlParam_" + lArgName + ".getHeight()+5;")        self.emitIndentedLine("")        self.emitIndentedLine("lCurrentY += 10;")        self.emitIndentedLine("")        # Emit construction code for buttons that allow actual invocation of operations        self.emitIndentedCommentLine("// Add invocation buttons for operation " + aName)        lButtonRightMargin = 5        # Prepare list of argument value expressions; this includes an expression per each parameter of the operation,        # ordered by parameters order.        lArgValsList = list(itertools.imap((lambda lArgName: "eval(this._ctlParam_" + lArgName + ".getText())"), aArgs))        if self.__genAsyncCalls:            self.emitIndentedLine("this._ctlAsyncInvokeBtn = new BiButton(\"Invoke async\");")            self.emitIndentedLine("this._ctlAsyncInvokeBtn.setRight(" + str(lButtonRightMargin) + ")")            self.emitIndentedLine("this._ctlAsyncInvokeBtn.setTop(lCurrentY);")            self.emitIndentedLine("this._ctlAsyncInvokeBtn.setWidth(80);")            self.emitIndentedLine("this._ctlAsyncInvokeBtn.setHeight(25);")            self.emitIndentedLine("this._ctlAsyncInvokeBtn.addEventListener(\"action\", ")            self.indent()            self.emitIndentedLine("function (aEvt)")            self.startBlock()            self.emitIndentedLine("try")            self.startBlock()            self.emitIndentedLine("aBiWs." +                                  BiWsdlBiJsStubCodeGen.getStubMethodName(self.getCurrentService(),                                                                          self.getCurrentPort(), aName, True) +                                  "(" + string.join(itertools.chain(["this.handleAsyncResult", "this"],                                                                    lArgValsList), ", ") + ");")            self.endBlock()            self.emitIndentedLine("catch(e)")            self.startBlock()            self.emitIndentedLine("alert(\"Error: \" + e.toString());")            self.endBlock()            self.endBlock()            self.emitIndentedLine(", this);")            self.outdent()            self.emitIndentedLine("this.add(this._ctlAsyncInvokeBtn);")            self.emitIndentedLine("")            lButtonRightMargin += 85;        if self.__genSyncCalls:            self.emitIndentedLine("this._ctlSyncInvokeBtn = new BiButton(\"Invoke sync\");")            self.emitIndentedLine("this._ctlSyncInvokeBtn.setRight(" + str(lButtonRightMargin) + ")")            self.emitIndentedLine("this._ctlSyncInvokeBtn.setTop(lCurrentY);")            self.emitIndentedLine("this._ctlSyncInvokeBtn.setWidth(80);")            self.emitIndentedLine("this._ctlSyncInvokeBtn.setHeight(25);")            self.emitIndentedLine("this._ctlSyncInvokeBtn.addEventListener(\"action\", ")            self.indent()            self.emitIndentedLine("function (aEvt)")            self.startBlock()            self.emitIndentedLine("try")            self.startBlock()            self.emitIndentedLine("var lRes = aBiWs." +                                  BiWsdlBiJsStubCodeGen.getStubMethodName(self.getCurrentService(),                                                                          self.getCurrentPort(), aName, False) +                                  "(" + string.join(lArgValsList, ", ") + ");")            self.emitIndentedLine("this.showMethodResult(lRes);")            self.endBlock()            self.emitIndentedLine("catch(e)")            self.startBlock()            self.emitIndentedLine("alert(\"Error: \" + e.toString());")            self.endBlock()            self.endBlock()            self.emitIndentedLine(", this);")            self.outdent()            self.emitIndentedLine("this.add(this._ctlSyncInvokeBtn);")            self.emitIndentedLine("")            lButtonRightMargin += 85;        self.emitIndentedLine("lCurrentY += 30;")        self.emitIndentedLine("")        self.emitIndentedLine("this.setHeight(lCurrentY);")        self.endClassCtor()        # Record method invoker in list of method invoker classes for current generated port        self.__portMethodInvokerClasses.append(lClassName)    def genAdfFile(self):        lAdfFileHandle = file(self.getAdfFilePath(), "w+")        lAdfFileHandle.write("<?xml version=\"1.0\"?>\n" +                             "<Application>\n"+                             "   <Window caption=\"Test WS\" width=\"600\" height=\"440\"/>\n"+                             "   <Resources>\n" +                             "      <Package name=\"WebService2\"/>\n"+                             "      <Script src=\"" + os.path.basename(self.__stubPath) + "\"/>\n" +                             "      <Script src=\"" + os.path.basename(self.getOutput()) + "\"/>\n" +                             "   </Resources>\n" +                             "</Application>")        lAdfFileHandle.close()    def genHtmlFile(self):        lHtmlFileHandle = file(self.getHtmlFilePath(), "w+")        lHtmlFileHandle.write(            """<html xmlns:v>            <head>               <title>Web Service Test Application</title>               <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>               <meta http-equiv="MsThemeCompatible" content="yes"/>               <meta http-equiv="ImageToolBar" content="no"/>               <link type="text/css" rel="StyleSheet" href=""" + "\"" + os.path.abspath(os.path.join(self.__bindowsPath, "html/css/bimain.css")) + "\"" + """/>               <script type=\"text/javascript\" src=""" + "\"" + os.path.abspath(os.path.join(self.__bindowsPath, "html/js/application.js")) + "\"" +"""></script>            </head>            <body>               <script type=\"text/javascript\">               application.start(""" + "\"file:" + self.escapeJsString(os.path.join(os.path.abspath(self.__bindowsPath), "html")) + "\", \"" + self.escapeJsString(os.path.basename(self.getAdfFilePath())) + "\");" + """               </script>            </body>            </html>""")        lHtmlFileHandle.close()    def genDlgSep(self):        self.startClassCtor("BiDlgSep", [ ("aText", "Label of separator") ],                            "BiComponent",                            "BiDlgSep is a separator component in a dialog. Basically it's a label with a horizontal etch to its right.")        self.emitIndentedLine('''BiComponent.call(this);''')        self.emitIndentedLine("")        self.emitIndentedCommentLine("// Set default height for component")        self.emitIndentedLine('''this.setHeight(16);''')        self.emitIndentedLine("")        self.emitIndentedCommentLine("// Create separating line -- this is a component occupying vertical lines 7 and 8 of this component.")        self.emitIndentedCommentLine("// It has a 3d looking etched border.")        self.emitIndentedLine('''this._sepLine = new BiComponent();''')        self.emitIndentedLine('''this._sepLine.setLocation(0,7);''')        self.emitIndentedLine('''this._sepLine.setRight(0);''')        self.emitIndentedLine('''this._sepLine.setHeight(2);''')        self.emitIndentedLine('''var lSepBorder = new BiBorder();''')        self.emitIndentedLine('''lSepBorder.setTopWidth(1);''')        self.emitIndentedLine('''lSepBorder.setTopStyle("solid");''')        self.emitIndentedLine('''lSepBorder.setTopColor("ThreeDShadow");''')        self.emitIndentedLine('''lSepBorder.setBottomWidth(1);''')        self.emitIndentedLine('''lSepBorder.setBottomStyle("solid");''')        self.emitIndentedLine('''lSepBorder.setBottomColor("ThreeDHighlight");''')        self.emitIndentedLine('''this._sepLine.setBorder(lSepBorder);''')        self.emitIndentedLine('''this.add(this._sepLine);''')        self.emitIndentedLine("")        self.emitIndentedCommentLine("// Create separator label")        self.emitIndentedLine('''this._sepTitle = new BiLabel(aText);''')        self.emitIndentedLine('''this._sepTitle.setBackColor("ThreeDFace");''')        self.emitIndentedLine('''this._sepTitle.setLocation(0,0);''')        self.emitIndentedLine('''this.add(this._sepTitle);''')        self.endClassCtor()    def genWsPortTabPage(self):        # Generate WsPortTabPage superclass        self.startClassCtor("WsPortTabPage", [ ("aPortName", "Name of port for this tab page is shown"),                                                 ("aBiWs", "WebService stub to be used for method invocations") ],                            "BiTabPage",                            "WsPortTabPage is a BiTabPage derivative specialized to implement tab pages allowing "+                            "service port method invocations.")        self.emitIndentedCommentLine("BiTabPage.call(this, aPortName);")        self.emitIndentedLine("")        self.emitIndentedLine("this._webService = aBiWs;")        self.emitIndentedLine("this._currentY = 10;")        self.emitIndentedLine("this.setOverflowY(\"scroll\");")        self.endClassCtor()        self.startClassMethod("addMethodInvoker", [ ( "aMethodInvoker", "Method invoker to add." ) ],                              "Add a method invoker component to the tab page. Method invokers are layed out vertically")        self.emitIndentedLine("aMethodInvoker.setTop(this._currentY);")        self.emitIndentedLine("aMethodInvoker.setRight(5);")        self.emitIndentedLine("aMethodInvoker.setLeft(5);")        self.emitIndentedLine("this.add(aMethodInvoker);")        self.emitIndentedLine("this._currentY += aMethodInvoker.getHeight();")        self.endClassMethod()        self.startClassMethod("getWebServiceStub", [], "Retrieve the WebService stub for use to invoke operations.")        self.emitIndentedLine("return this._webService;")        self.endClassMethod()    def genWsOpInvoker(self):        # Generate WsOpInvoker superclass        self.startClassCtor("WsOpInvoker", [],                            "BiComponent",                            "WsOpInvoker is a base class for components that encapsulate MMI for invoking a web service " +                            "operation")        self.emitIndentedLine("BiComponent.call(this);")        self.endClassCtor()        self.startClassMethod("showMethodResult", [ ("aResult", "Method result to display.") ],                              "Display the result of a method invocation.")        self.emitIndentedLine("var lResStr=\"\";")        self.emitIndentedLine("if(typeof(aResult)!=\"object\")")        self.startBlock()        self.emitIndentedLine("lResStr=aResult;")        self.endBlock()        self.emitIndentedLine("else")        self.startBlock()        self.emitIndentedLine("for(lPropName in aResult) lResStr = lResStr + \"\\n\" + lPropName + \"=\" + aResult[lPropName];")        self.endBlock()        self.emitIndentedLine("")        self.emitIndentedLine("alert(\"Result: \" + lResStr);")        self.endClassMethod()        self.startClassMethod("handleAsyncResult", [ ("aResult", "Async result to handle.") ],                              "Handle an async method invocation's result object.")        if self.__oldWs:            self.emitIndentedLine("if(aResult.error)")            self.startBlock()            self.emitIndentedLine("alert(\"Error: \" + aResult.errorDetail.code + \" / \" + aResult.errorDetail.string);")            self.endBlock()            self.emitIndentedLine("else")            self.startBlock()            self.emitIndentedLine("this.showMethodResult(aResult.value);")            self.endBlock()        else:            self.emitIndentedLine("if(aResult.getError())")            self.startBlock()            self.emitIndentedLine("alert(\"Error: \" + aResult.getErrorObject());")            self.endBlock()            self.emitIndentedLine("else")            self.startBlock()            self.emitIndentedLine("this.showMethodResult(aResult.getResult());")            self.endBlock()        self.endClassMethod()    """    <summary>    Set generated call type -- to sync, async or both.    </summary>    <param name="aCallType">Type of call to generate. sync for synchronous calls, async for asynchronous calls, both for both </param>    """    def setCalltype(self, aCallType):        if aCallType not in ["async", "sync", "both"]: raise Exception("Invalid callType value: " + aCallType)        self.__genAsyncCalls = aCallType in ["async", "both"]        self.__genSyncCalls = aCallType in ["sync", "both"]    def setBindowspath(self, aPath):        self.__bindowsPath = aPath    def setOldws(self, aOldWs):        self.__oldWs = aOldWs    def getAdfFilePath(self):        return self.getAppFilePath("xml")    def getHtmlFilePath(self):        return self.getAppFilePath("html")    def getOldws(self, aOldWs):        return self.__oldWs    def getAppFilePath(self, aExtension):        lPathComps = os.path.split(self.getOutput())        lNewFileName = string.split(lPathComps[1], ".")[0] + "." + aExtension        lNewFilePath = os.path.join(lPathComps[0], lNewFileName)        return lNewFilePath    def getLaunchTarget(self):        return self.getHtmlFilePath()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -