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

📄 calculator.js

📁 奇趣公司比较新的qt/emd版本
💻 JS
字号:
function Calculator(ui){    this.ui = ui;    this.pendingAdditiveOperator = "";    this.pendingMultiplicativeOperator = "";    this.sumInMemory = 0;    this.sumSoFar = 0;    this.factorSoFar = 0;    this.waitingForOperand = true;    with (ui) {        display.text = "0";        zeroButton.clicked.connect(this, this.digitClicked);        oneButton.clicked.connect(this, "digitClicked");        twoButton.clicked.connect(this, "digitClicked");        threeButton.clicked.connect(this, "digitClicked");        fourButton.clicked.connect(this, "digitClicked");        fiveButton.clicked.connect(this, "digitClicked");        sixButton.clicked.connect(this, "digitClicked");        sevenButton.clicked.connect(this, "digitClicked");        eightButton.clicked.connect(this, "digitClicked");        nineButton.clicked.connect(this, "digitClicked");        pointButton.clicked.connect(this, "pointClicked");        changeSignButton.clicked.connect(this, "changeSignClicked");        backspaceButton.clicked.connect(this, "backspaceClicked");        clearButton.clicked.connect(this, "clear");        clearAllButton.clicked.connect(this, "clearAll");        clearMemoryButton.clicked.connect(this, "clearMemory");        readMemoryButton.clicked.connect(this, "readMemory");        setMemoryButton.clicked.connect(this, "setMemory");        addToMemoryButton.clicked.connect(this, "addToMemory");          divisionButton.clicked.connect(this, "multiplicativeOperatorClicked");        timesButton.clicked.connect(this, "multiplicativeOperatorClicked");        minusButton.clicked.connect(this, "additiveOperatorClicked");        plusButton.clicked.connect(this, "additiveOperatorClicked");        squareRootButton.clicked.connect(this, "unaryOperatorClicked");        powerButton.clicked.connect(this, "unaryOperatorClicked");        reciprocalButton.clicked.connect(this, "unaryOperatorClicked");        equalButton.clicked.connect(this, "equalClicked");    }}Calculator.prototype.abortOperation = function(){    this.clearAll();    this.ui.display.text = "####";}Calculator.prototype.calculate = function(rightOperand, pendingOperator){    if (pendingOperator == "+") {        this.sumSoFar += rightOperand;    } else if (pendingOperator == "-") {        this.sumSoFar -= rightOperand;    } else if (pendingOperator == "*") {        this.factorSoFar *= rightOperand;    } else if (pendingOperator == "/") {        if (rightOperand == 0)        return false;        this.factorSoFar /= rightOperand;    }    return true;}Calculator.prototype.digitClicked = function(){    var digitValue = __qt_sender__.text - 0;    if ((digitValue == 0) && (this.ui.display.text == "0"))        return;    if (this.waitingForOperand) {        this.ui.display.clear();        this.waitingForOperand = false;    }    this.ui.display.text += digitValue;}Calculator.prototype.unaryOperatorClicked = function(){    var operand = this.ui.display.text - 0;    var result = 0;    if (__qt_sender__.text == "Sqrt") {        if (operand < 0) {            this.abortOperation();            return;        }        result = Math.sqrt(operand);    } else if (__qt_sender__.text == "x^2") {        result = Math.pow(operand, 2);    } else if (__qt_sender__.text == "1/x") {        if (operand == 0.0) {            this.abortOperation();            return;        }        result = 1 / operand;    }    this.ui.display.text = result + "";    this.waitingForOperand = true;}Calculator.prototype.additiveOperatorClicked = function(){    var operand = this.ui.display.text - 0;    if (this.pendingMultiplicativeOperator.length != 0) {        if (!this.calculate(operand, this.pendingMultiplicativeOperator)) {            this.abortOperation();            return;        }        this.ui.display.text = this.factorSoFar + "";        operand = this.factorSoFar;        this.factorSoFar = 0;        this.pendingMultiplicativeOperator = "";    }    if (this.pendingAdditiveOperator.length != 0) {        if (!this.calculate(operand, this.pendingAdditiveOperator)) {            this.abortOperation();            return;        }        this.ui.display.text = this.sumSoFar + "";    } else {        this.sumSoFar = operand;    }    this.pendingAdditiveOperator = __qt_sender__.text;    this.waitingForOperand = true;}Calculator.prototype.multiplicativeOperatorClicked = function(){    var operand = this.ui.display.text - 0;    if (this.pendingMultiplicativeOperator.length != 0) {        if (!this.calculate(operand, this.pendingMultiplicativeOperator)) {            this.abortOperation();            return;        }        this.ui.display.text = this.factorSoFar + "";    } else {        this.factorSoFar = operand;    }    this.pendingMultiplicativeOperator = __qt_sender__.text;    this.waitingForOperand = true;}Calculator.prototype.equalClicked = function(){    operand = this.ui.display.text - 0;    if (this.pendingMultiplicativeOperator.length != 0) {        if (!this.calculate(operand, this.pendingMultiplicativeOperator)) {            this.abortOperation();            return;        }        operand = this.factorSoFar;        this.factorSoFar = 0.0;        this.pendingMultiplicativeOperator = "";    }    if (this.pendingAdditiveOperator.length != 0) {        if (!this.calculate(operand, this.pendingAdditiveOperator)) {            this.abortOperation();            return;        }        this.pendingAdditiveOperator = "";    } else {        this.sumSoFar = operand;    }    this.ui.display.text = this.sumSoFar + "";    this.sumSoFar = 0.0;    this.waitingForOperand = true;}Calculator.prototype.pointClicked = function(){    if (this.waitingForOperand)        this.ui.display.text = "0";    if (this.ui.display.text.indexOf(".") == -1)        this.ui.display.text += ".";    this.waitingForOperand = false;}Calculator.prototype.changeSignClicked = function(){    var text = this.ui.display.text;    var value = text - 0;    if (value > 0) {        text = "-" + text;    } else if (value < 0) {        text = text.slice(1);    }    this.ui.display.text = text;}Calculator.prototype.backspaceClicked = function(){    if (this.waitingForOperand)        return;    var text = this.ui.display.text;    text = text.slice(0, -1);    if (text.length == 0) {        text = "0";        this.waitingForOperand = true;    }    this.ui.display.text = text;}Calculator.prototype.clear = function(){    if (this.waitingForOperand)        return;    this.ui.display.text = "0";    this.waitingForOperand = true;}Calculator.prototype.clearAll = function(){    this.sumSoFar = 0.0;    this.factorSoFar = 0.0;    this.pendingAdditiveOperator = "";    this.pendingMultiplicativeOperator = "";    this.ui.display.text = "0";    this.waitingForOperand = true;}Calculator.prototype.clearMemory = function(){    this.sumInMemory = 0.0;}Calculator.prototype.readMemory = function(){    this.ui.display.text = this.sumInMemory + "";    this.waitingForOperand = true;}Calculator.prototype.setMemory = function(){    this.equalClicked();    this.sumInMemory = this.ui.display.text - 0;}Calculator.prototype.addToMemory = function(){    this.equalClicked();    this.sumInMemory += this.ui.display.text - 0;}

⌨️ 快捷键说明

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