Guest User

Untitled

a guest
Feb 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.03 KB | None | 0 0
  1. require "rubygems"
  2. gem "rubyscript2exe"
  3. require "rubyscript2exe"
  4. #bindet Tk in Rubyscript2exe ein
  5. RUBYSCRIPT2EXE.tk = true
  6. #ohne Konsole
  7. RUBYSCRIPT2EXE.rubyw = true
  8.  
  9. require 'tk'
  10. require "tk/toplevel"
  11. require 'tk/bindtag'
  12. require 'tk/entry'
  13. require 'yaml'
  14.  
  15. class Mama
  16.  
  17. #TK Fenster wird gestartet
  18. def run
  19. @window.overrideredirect(true)
  20. @window.mainloop
  21. end
  22.  
  23.  
  24. def initialize
  25. #Erstellt das Hauptfenster
  26. @window = TkRoot.new(:title => 'Lebensmittel-Verwaltung', 'height' => 674, 'width' => 1000) do
  27. root.geometry('+80+80')
  28. end
  29.  
  30. @my_hash = Hash.new
  31.  
  32. @yaml_file = File.new 'data/leb.txt'
  33. @my_hash = YAML.load(@yaml_file)
  34. @yaml_file.close
  35.  
  36. @my_einkauf = Hash.new
  37. @yaml_file1 = File.new 'data/einkauf.txt'
  38. @my_einkauf = YAML.load(@yaml_file1)
  39. @yaml_file1.close
  40.  
  41.  
  42.  
  43.  
  44. bild_label()
  45. lebensmittelverwatltung_label()
  46. button_add()
  47. button_deleate()
  48. liste()
  49. button_end()
  50.  
  51. end
  52.  
  53. #Label mit Lebensmittelbild
  54. def bild_label
  55. image1 = TkPhotoImage.new { file "bilder/Lebensmittel.gif" }
  56. TkLabel.new('height' => 674, 'width' => 1000) do
  57. place 'x' => 0, 'y' => 0
  58. image image1
  59. end
  60. end
  61.  
  62. #Label mit der Aufschgrift: Mamas Lebensmittel Verwaltung
  63. def lebensmittelverwatltung_label
  64. TkLabel.new('height' => 1, 'width' => 26) do
  65. text 'Lebensmittel-Verwaltung'
  66. place 'x' => 145, 'y' => 3
  67. font TkFont.new('Comic 35 bold')
  68. relief 'raised'
  69. foreground 'orange'
  70. background 'blue'
  71. end
  72. end
  73.  
  74. #Button zum öffnen des imports
  75. def button_add
  76. image1 = TkPhotoImage.new { file "bilder/add.gif" }
  77. a = TkButton.new('height' => 94, 'width' => 94) do
  78. place 'x' => 279, 'y' => 480
  79. image image1
  80. cursor "hand2"
  81. relief 'groove'
  82. end
  83. a.bind('ButtonRelease-1') do
  84. delat_lvl()
  85. @win1.state = 'withdrawn'
  86. add_lvl()
  87. end
  88. end
  89.  
  90. #Button um etwas herauszunehmen
  91. def button_deleate
  92. image1 = TkPhotoImage.new { file "bilder/delate.gif" }
  93. a = TkButton.new('height' => 94, 'width' => 94) do
  94. place 'x' => 725, 'y' => 480
  95. image image1
  96. cursor "hand2"
  97. relief 'groove'
  98. end
  99. a.bind('ButtonRelease-1') do
  100. add_lvl()
  101. @win.state = 'withdrawn'
  102. delat_lvl()
  103. end
  104. end
  105.  
  106. #Button um Programm zu beenden
  107. def button_end
  108. image1 = TkPhotoImage.new { file "bilder/exit.gif" }
  109. bt = TkButton.new('height' => 30, 'width' => 30) do
  110. place 'x' => 965, 'y' => 1
  111. image image1
  112. cursor "hand2"
  113. relief 'flat'
  114. end
  115. bt.bind('ButtonRelease-1') do
  116. @window.destroy
  117. end
  118. end
  119.  
  120.  
  121.  
  122. #Liste mit Inhalt
  123. def liste
  124. @lis = TkListbox.new('height' => 14, 'width' => 49) do
  125. place 'x' => 279, 'y' => 90
  126. font TkFont.new('Comic 15 bold')
  127. background 'Forest green'
  128.  
  129.  
  130. end
  131. @bar = TkScrollbar.new(@window) do
  132. place 'x' => 822, 'y' => 90
  133. end
  134.  
  135. @lis.yscrollbar(@bar)
  136.  
  137. @ausg = @my_hash.collect do |key, value|
  138. @lis.insert 'end', "#{key} #{value}x"
  139. end
  140.  
  141. end
  142.  
  143. #Topp lvl add
  144. def add_lvl
  145. begin
  146. @win.destroy
  147. rescue
  148. end
  149. @win = TkToplevel.new(:title => 'Im|Export', 'height' => 560, 'width' => 250) do
  150. relief 'ridge'
  151. geometry('+97+155')
  152. background 'Green Yellow'
  153. end
  154.  
  155.  
  156. @e1 = TkEntry.new(@win) do
  157. place 'x' => 50, 'y' => 130
  158. font TkFont.new('Comic 10 bold')
  159. end
  160. @e4 = TkEntry.new(@win) do
  161. place 'x' => 50, 'y' => 200
  162. font TkFont.new('Comic 10 bold')
  163. end
  164. button = TkButton.new(@win) do
  165. image1 = TkPhotoImage.new { file "bilder/exit.gif" }
  166. place 'x' => 212, 'y' => 2
  167. image image1
  168. end
  169. button.bind('ButtonRelease-1') do
  170. @win.state = 'withdrawn'
  171. end
  172.  
  173.  
  174. TkLabel.new(@win) do
  175. place 'x' => 50, 'y' => 30
  176. text 'Im|Export'
  177. background 'blue'
  178. relief 'groove'
  179. font TkFont.new('Comic 20 bold')
  180. foreground 'Green Yellow'
  181. end
  182.  
  183. TkLabel.new(@win) do
  184. place 'x' => 50, 'y' => 102
  185. text 'Lebensmittel:'
  186. background 'Brown'
  187. relief 'groove'
  188. font TkFont.new('Comic 10 bold')
  189. foreground 'yellow'
  190. end
  191.  
  192. TkLabel.new(@win) do
  193. place 'x' => 50, 'y' => 174
  194. text 'Anzahl:'
  195. background 'Brown'
  196. relief 'groove'
  197. font TkFont.new('Comic 10 bold')
  198. foreground 'yellow'
  199. end
  200.  
  201. v1 = TkVariable.new
  202. einkauf = proc do
  203. @bt445.state = 'disabled'
  204. @bt445.configure('text', '')
  205. @bt445.configure('background', 'Green Yellow')
  206. @bt445.configure('relief', 'flat')
  207. @bt445.configure('image', '')
  208. @bt445.bind('ButtonRelease-1') do
  209. end
  210. @entry = TkEntry.new(@win) do
  211. width 3
  212. place 'x' => 25, 'y' => 448
  213. font TkFont.new('Comic 10 bold')
  214. end
  215. TkLabel.new(@win) do
  216. text "x soll es im Lager sein"
  217. width 17
  218. place 'x' => 53, 'y' => 448
  219. font TkFont.new('Comic 10 bold')
  220. background 'Green Yellow'
  221. end
  222. image1 = TkPhotoImage.new { file "bilder/hacken.gif" }
  223. @bt444 = TkButton.new(@win) do
  224. text "Rein Damit"
  225. font TkFont.new('Comic 10 bold')
  226. place 'x' => 65, 'y' => 485
  227. image image1
  228. end
  229.  
  230. @bt444.bind('ButtonRelease-1') do
  231. @leb1 = @e1.value
  232. @leb2 = @e4.value.to_i
  233.  
  234.  
  235. @my_hash.each do |leb, anz|
  236. @testen = 0
  237. if leb == @leb1
  238. Tk.messageBox(
  239. 'type' => "ok",
  240. 'icon' => "warning",
  241. 'title' => "Nicht vorhanden",
  242. 'message' => "Das Produkt ist bereits vorhanden"
  243. )
  244. end
  245. end
  246. if @testen == 0
  247. @my_hash[@leb1] = @leb2
  248. liste()
  249. end
  250. File.open("data/leb.txt", "w") {|output|
  251. output.write(@my_hash.to_yaml)
  252. }
  253. end
  254. @leb1 = @e1.value
  255. @leb24 = @entry.value.to_i
  256. @my_einkauf.each do |leb, anz|
  257. @my_einkauf[@leb1] = @leb24
  258. end
  259. File.open("data/einkauf.txt", "w") do |output|
  260. output.write(@my_einkauf.to_yaml)
  261. end
  262. end
  263.  
  264.  
  265.  
  266. image1 = TkPhotoImage.new { file "bilder/ok.gif" }
  267. @bt12 = TkButton.new(@win) do
  268. place 'x' => 20, 'y' => 300
  269. image image1
  270. end
  271. @bt12.bind('ButtonRelease-1') do
  272. TkCheckButton.new(@win) do
  273. place 'x' => 20, 'y' => 415
  274. text "In Einkaufsliste einbinden"
  275. font TkFont.new('Comic 10 bold')
  276. variable v1
  277. command einkauf
  278. background 'Green Yellow'
  279. end
  280.  
  281.  
  282. image2 = TkPhotoImage.new { file "bilder/hacken.gif" }
  283. @bt445 = TkButton.new(@win) do
  284. font TkFont.new('Comic 10 bold')
  285. place 'x' => 80, 'y' => 470
  286. image image2
  287. end
  288.  
  289. @bt445.bind('ButtonRelease-1') do
  290. @leb1 = @e1.value
  291. @leb2 = @e4.value.to_i
  292.  
  293.  
  294. @my_hash.each do |leb, anz|
  295. @testen = 0
  296. if leb == @leb1
  297. Tk.messageBox(
  298. 'type' => "ok",
  299. 'icon' => "warning",
  300. 'title' => "Nicht vorhanden",
  301. 'message' => "Das Produkt ist bereits vorhanden"
  302. )
  303. end
  304. end
  305. if @testen == 0
  306. @my_hash[@leb1] = @leb2
  307. liste()
  308. end
  309. File.open("data/leb.txt", "w") {|output|
  310. output.write(@my_hash.to_yaml)
  311. }
  312. end
  313.  
  314. end
  315.  
  316.  
  317. image1 = TkPhotoImage.new { file "bilder/raus.gif" }
  318. @bt15 = TkButton.new(@win) do
  319. place 'x' => 130, 'y' => 300
  320. image image1
  321. end
  322.  
  323. @bt15.bind('ButtonRelease-1') do
  324. @leb1 = @e1.value
  325. @leb2 = @e4.value.to_i
  326.  
  327.  
  328. @my_hash.each do |leb, anz|
  329. @testen4 = 0
  330. if leb == @leb1
  331. @my_hash.delete("#{@leb1}")
  332. liste()
  333. Tk.messageBox(
  334. 'type' => "ok",
  335. 'icon' => "warning",
  336. 'title' => "Nicht vorhanden",
  337. 'message' => "Das Produkt wurde entfernt"
  338. )
  339. add_lvl()
  340. @testen4 = 1
  341. end
  342. end
  343. if @testen4 == 0
  344. Tk.messageBox(
  345. 'type' => "ok",
  346. 'icon' => "warning",
  347. 'title' => "Nicht vorhanden",
  348. 'message' => "Das Produkt ist nicht vorhanden"
  349. )
  350. add_lvl()
  351. end
  352. File.open("data/leb.txt", "w") {|output|
  353. output.write(@my_hash.to_yaml)
  354. }
  355.  
  356. end
  357. end
  358.  
  359.  
  360. # Top lvl deleat
  361. def delat_lvl
  362. begin
  363. @win1.destroy
  364. rescue
  365. end
  366. @win1 = TkToplevel.new(:title => 'Verwaltung', 'height' => 560, 'width' => 250) do
  367. relief 'ridge'
  368. geometry('+97+155')
  369. background 'Blue'
  370. end
  371.  
  372.  
  373. @e2 = TkEntry.new(@win1) do
  374. place 'x' => 50, 'y' => 130
  375. font TkFont.new('Comic 10 bold')
  376. end
  377. @e3 = TkEntry.new(@win1) do
  378. place 'x' => 50, 'y' => 200
  379. font TkFont.new('Comic 10 bold')
  380. end
  381.  
  382. button = TkButton.new(@win1) do
  383. image1 = TkPhotoImage.new { file "bilder/exit.gif" }
  384. place 'x' => 212, 'y' => 2
  385. image image1
  386. end
  387. button.bind('ButtonRelease-1') do
  388. @win1.state = 'withdrawn'
  389. end
  390.  
  391. #Export
  392. TkLabel.new(@win1) do
  393. place 'x' => 50, 'y' => 30
  394. text 'Verwaltung'
  395. background 'Green Yellow'
  396. relief 'groove'
  397. font TkFont.new('Comic 20 bold')
  398. foreground 'blue'
  399. end
  400.  
  401. TkLabel.new(@win1) do
  402. place 'x' => 50, 'y' => 102
  403. text 'Lebensmittel:'
  404. background 'Brown'
  405. relief 'groove'
  406. font TkFont.new('Comic 10 bold')
  407. foreground 'yellow'
  408. end
  409.  
  410. TkLabel.new(@win1) do
  411. place 'x' => 50, 'y' => 174
  412. text 'Anzahl:'
  413. background 'Brown'
  414. relief 'groove'
  415. font TkFont.new('Comic 10 bold')
  416. foreground 'yellow'
  417. end
  418. image1 = TkPhotoImage.new { file "bilder/rein.gif" }
  419. @bt13 = TkButton.new(@win1) do
  420. place 'x' => 20, 'y' => 300
  421. image image1
  422. end
  423.  
  424. @bt13.bind('ButtonRelease-1') do
  425. @testen1 = 0
  426. @leb6 = @e2.value
  427. @leb7 = @e3.value.to_i
  428.  
  429. @my_hash.each do |leb, anz|
  430. if leb == @leb6
  431. anz = anz + @leb7
  432. @my_hash[leb] = anz
  433. liste()
  434. @testen1 = 1
  435. @my_hash[leb] = anz
  436. liste()
  437. @testen1 = 1
  438. end
  439. end
  440. if @testen1 == 0
  441. Tk.messageBox(
  442. 'type' => "ok",
  443. 'icon' => "warning",
  444. 'title' => "Nicht vorhanden",
  445. 'message' => "Das Produkt ist nicht vorhanden"
  446. )
  447. delat_lvl()
  448. end
  449.  
  450. File.open("data/leb.txt", "w") {|output|
  451. output.write(@my_hash.to_yaml)
  452. }
  453. end
  454.  
  455.  
  456. image1 = TkPhotoImage.new { file "bilder/raus.gif" }
  457. @bt14 = TkButton.new(@win1) do
  458. place 'x' => 130, 'y' => 300
  459. image image1
  460. end
  461.  
  462. @bt14.bind('ButtonRelease-1') do
  463. @testen2 = 0
  464. @leb6 = @e2.value
  465. @leb7 = @e3.value.to_i
  466.  
  467. @my_hash.each do |leb, anz|
  468. if leb == @leb6
  469. anz = anz - @leb7
  470. if anz < 0
  471. anz = 0
  472. @my_hash[leb] = anz
  473. @testen2 = 1
  474. end
  475. @my_hash[leb] = anz
  476. liste()
  477. @testen2 = 1
  478. end
  479. end
  480. if @testen2 == 0
  481. Tk.messageBox(
  482. 'type' => "ok",
  483. 'icon' => "warning",
  484. 'title' => "Nicht vorhanden",
  485. 'message' => "Das Produkt ist nicht vorhanden"
  486. )
  487. delat_lvl()
  488. end
  489.  
  490. File.open("data/leb.txt", "w") {|output|
  491. output.write(@my_hash.to_yaml)
  492. }
  493. end
  494.  
  495. end
  496. end
  497.  
  498.  
  499.  
  500. los = Mama.new
  501. los.run
Add Comment
Please, Sign In to add comment