main.nim 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. import nodesnim
  2. import strutils
  3. Window("Calc")
  4. var
  5. main_obj: SceneObj
  6. main = Scene("Main", main_obj)
  7. first: string = ""
  8. second: string = ""
  9. sign: string = ""
  10. vbox_obj: VBoxObj
  11. vbox = VBox(vbox_obj)
  12. result_obj: LabelObj
  13. result = Label("Result", result_obj)
  14. buttons_obj: GridBoxObj
  15. buttons = GridBox("Buttons", buttons_obj)
  16. button_7_obj: ButtonObj
  17. button_8_obj: ButtonObj
  18. button_9_obj: ButtonObj
  19. button_4_obj: ButtonObj
  20. button_5_obj: ButtonObj
  21. button_6_obj: ButtonObj
  22. button_1_obj: ButtonObj
  23. button_2_obj: ButtonObj
  24. button_3_obj: ButtonObj
  25. button_0_obj: ButtonObj
  26. button_00_obj: ButtonObj
  27. button_add_obj: ButtonObj
  28. button_sub_obj: ButtonObj
  29. button_mul_obj: ButtonObj
  30. button_div_obj: ButtonObj
  31. button_eq_obj: ButtonObj
  32. button_7 = Button("Button 7", button_7_obj)
  33. button_8 = Button("Button 8", button_8_obj)
  34. button_9 = Button("Button 9", button_9_obj)
  35. button_4 = Button("Button 4", button_4_obj)
  36. button_5 = Button("Button 5", button_5_obj)
  37. button_6 = Button("Button 6", button_6_obj)
  38. button_1 = Button("Button 1", button_1_obj)
  39. button_2 = Button("Button 2", button_2_obj)
  40. button_3 = Button("Button 3", button_3_obj)
  41. button_0 = Button("Button 0", button_0_obj)
  42. button_00 = Button("Button 00", button_00_obj)
  43. button_add = Button("Button +", button_add_obj)
  44. button_sub = Button("Button -", button_sub_obj)
  45. button_mul = Button("Button *", button_mul_obj)
  46. button_div = Button("Button /", button_div_obj)
  47. button_eq = Button("Button =", button_eq_obj)
  48. main.addChild(vbox)
  49. vbox.addChild(result)
  50. vbox.addChild(buttons)
  51. vbox.setChildAnchor(0.5, 0.5, 0.5, 0.5)
  52. vbox.setSizeAnchor(1, 1)
  53. buttons.setRow(4)
  54. buttons.addChild(button_7)
  55. button_7.text = "7"
  56. button_7.on_click =
  57. proc(x, y: float) =
  58. if sign == "":
  59. first &= "7"
  60. else:
  61. second &= "7"
  62. buttons.addChild(button_8)
  63. button_8.text = "8"
  64. button_8.on_click =
  65. proc(x, y: float) =
  66. if sign == "":
  67. first &= "8"
  68. else:
  69. second &= "8"
  70. buttons.addChild(button_9)
  71. button_9.text = "9"
  72. button_9.on_click =
  73. proc(x, y: float) =
  74. if sign == "":
  75. first &= "9"
  76. else:
  77. second &= "9"
  78. buttons.addChild(button_add)
  79. button_add.text = "+"
  80. button_add.on_click =
  81. proc(x, y: float) =
  82. sign = "+"
  83. buttons.addChild(button_4)
  84. button_4.text = "4"
  85. button_4.on_click =
  86. proc(x, y: float) =
  87. if sign == "":
  88. first &= "4"
  89. else:
  90. second &= "4"
  91. buttons.addChild(button_5)
  92. button_5.text = "5"
  93. button_5.on_click =
  94. proc(x, y: float) =
  95. if sign == "":
  96. first &= "5"
  97. else:
  98. second &= "5"
  99. buttons.addChild(button_6)
  100. button_6.text = "6"
  101. button_6.on_click =
  102. proc(x, y: float) =
  103. if sign == "":
  104. first &= "6"
  105. else:
  106. second &= "6"
  107. buttons.addChild(button_sub)
  108. button_sub.text = "-"
  109. button_sub.on_click =
  110. proc(x, y: float) =
  111. sign = "-"
  112. buttons.addChild(button_1)
  113. button_1.text = "1"
  114. button_1.on_click =
  115. proc(x, y: float) =
  116. if sign == "":
  117. first &= "1"
  118. else:
  119. second &= "1"
  120. buttons.addChild(button_2)
  121. button_2.text = "2"
  122. button_2.on_click =
  123. proc(x, y: float) =
  124. if sign == "":
  125. first &= "2"
  126. else:
  127. second &= "2"
  128. buttons.addChild(button_3)
  129. button_3.text = "3"
  130. button_3.on_click =
  131. proc(x, y: float) =
  132. if sign == "":
  133. first &= "3"
  134. else:
  135. second &= "3"
  136. buttons.addChild(button_mul)
  137. button_mul.text = "*"
  138. button_mul.on_click =
  139. proc(x, y: float) =
  140. sign = "*"
  141. buttons.addChild(button_0)
  142. button_0.text = "0"
  143. button_0.on_click =
  144. proc(x, y: float) =
  145. if sign == "" and first != "":
  146. first &= "0"
  147. elif sign != "/":
  148. second &= "0"
  149. buttons.addChild(button_00)
  150. button_00.text = "00"
  151. button_00.on_click =
  152. proc(x, y: float) =
  153. if sign == "" and first != "":
  154. first &= "00"
  155. elif second != "":
  156. second &= "00"
  157. buttons.addChild(button_div)
  158. button_div.text = "/"
  159. button_div.on_click =
  160. proc(x, y: float) =
  161. sign = "/"
  162. buttons.addChild(button_eq)
  163. button_eq.text = "="
  164. button_eq.on_click =
  165. proc(x, y: float) =
  166. first =
  167. if sign == "+":
  168. $(parseFloat(first) + parseFloat(second))
  169. elif sign == "-":
  170. $(parseFloat(first) - parseFloat(second))
  171. elif sign == "*":
  172. $(parseFloat(first) * parseFloat(second))
  173. elif sign == "/":
  174. $(parseFloat(first) / parseFloat(second))
  175. else:
  176. first
  177. if sign != "":
  178. second = ""
  179. sign = ""
  180. result.setTextAlign(1, 0, 1, 0)
  181. result.resize(160, 32)
  182. result.process =
  183. proc() =
  184. if sign == "":
  185. result.text = first
  186. elif second == "":
  187. result.text = first & " " & sign
  188. else:
  189. result.text = first & " " & sign & " " & second
  190. addScene(main)
  191. setMainScene("Main")
  192. windowLaunch()