import nodesnim import strutils Window("Calc") var main_obj: SceneObj main = Scene("Main", main_obj) first: string = "" second: string = "" sign: string = "" vbox_obj: VBoxObj vbox = VBox(vbox_obj) result_obj: LabelObj result = Label("Result", result_obj) buttons_obj: GridBoxObj buttons = GridBox("Buttons", buttons_obj) button_7_obj: ButtonObj button_8_obj: ButtonObj button_9_obj: ButtonObj button_4_obj: ButtonObj button_5_obj: ButtonObj button_6_obj: ButtonObj button_1_obj: ButtonObj button_2_obj: ButtonObj button_3_obj: ButtonObj button_0_obj: ButtonObj button_00_obj: ButtonObj button_add_obj: ButtonObj button_sub_obj: ButtonObj button_mul_obj: ButtonObj button_div_obj: ButtonObj button_eq_obj: ButtonObj button_7 = Button("Button 7", button_7_obj) button_8 = Button("Button 8", button_8_obj) button_9 = Button("Button 9", button_9_obj) button_4 = Button("Button 4", button_4_obj) button_5 = Button("Button 5", button_5_obj) button_6 = Button("Button 6", button_6_obj) button_1 = Button("Button 1", button_1_obj) button_2 = Button("Button 2", button_2_obj) button_3 = Button("Button 3", button_3_obj) button_0 = Button("Button 0", button_0_obj) button_00 = Button("Button 00", button_00_obj) button_add = Button("Button +", button_add_obj) button_sub = Button("Button -", button_sub_obj) button_mul = Button("Button *", button_mul_obj) button_div = Button("Button /", button_div_obj) button_eq = Button("Button =", button_eq_obj) main.addChild(vbox) vbox.addChild(result) vbox.addChild(buttons) vbox.setChildAnchor(0.5, 0.5, 0.5, 0.5) vbox.setSizeAnchor(1, 1) buttons.setRow(4) buttons.addChild(button_7) button_7.text = "7" button_7.on_click = proc(x, y: float) = if sign == "": first &= "7" else: second &= "7" buttons.addChild(button_8) button_8.text = "8" button_8.on_click = proc(x, y: float) = if sign == "": first &= "8" else: second &= "8" buttons.addChild(button_9) button_9.text = "9" button_9.on_click = proc(x, y: float) = if sign == "": first &= "9" else: second &= "9" buttons.addChild(button_add) button_add.text = "+" button_add.on_click = proc(x, y: float) = sign = "+" buttons.addChild(button_4) button_4.text = "4" button_4.on_click = proc(x, y: float) = if sign == "": first &= "4" else: second &= "4" buttons.addChild(button_5) button_5.text = "5" button_5.on_click = proc(x, y: float) = if sign == "": first &= "5" else: second &= "5" buttons.addChild(button_6) button_6.text = "6" button_6.on_click = proc(x, y: float) = if sign == "": first &= "6" else: second &= "6" buttons.addChild(button_sub) button_sub.text = "-" button_sub.on_click = proc(x, y: float) = sign = "-" buttons.addChild(button_1) button_1.text = "1" button_1.on_click = proc(x, y: float) = if sign == "": first &= "1" else: second &= "1" buttons.addChild(button_2) button_2.text = "2" button_2.on_click = proc(x, y: float) = if sign == "": first &= "2" else: second &= "2" buttons.addChild(button_3) button_3.text = "3" button_3.on_click = proc(x, y: float) = if sign == "": first &= "3" else: second &= "3" buttons.addChild(button_mul) button_mul.text = "*" button_mul.on_click = proc(x, y: float) = sign = "*" buttons.addChild(button_0) button_0.text = "0" button_0.on_click = proc(x, y: float) = if sign == "" and first != "": first &= "0" elif sign != "/": second &= "0" buttons.addChild(button_00) button_00.text = "00" button_00.on_click = proc(x, y: float) = if sign == "" and first != "": first &= "00" elif second != "": second &= "00" buttons.addChild(button_div) button_div.text = "/" button_div.on_click = proc(x, y: float) = sign = "/" buttons.addChild(button_eq) button_eq.text = "=" button_eq.on_click = proc(x, y: float) = first = if sign == "+": $(parseFloat(first) + parseFloat(second)) elif sign == "-": $(parseFloat(first) - parseFloat(second)) elif sign == "*": $(parseFloat(first) * parseFloat(second)) elif sign == "/": $(parseFloat(first) / parseFloat(second)) else: first if sign != "": second = "" sign = "" result.setTextAlign(1, 0, 1, 0) result.resize(160, 32) result.process = proc() = if sign == "": result.text = first elif second == "": result.text = first & " " & sign else: result.text = first & " " & sign & " " & second addScene(main) setMainScene("Main") windowLaunch()