|
@@ -0,0 +1,220 @@
|
|
|
+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.setRaw(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()
|