ig3tool 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,537 +0,0 @@
1
- begin
2
- require "amazon/search"
3
- $amazon_loaded = 1
4
- rescue Exception => e
5
- STDERR.puts "Ruby/Amazon kon niet geladen worden: " + e.to_s
6
- end
7
-
8
- require "ui/messagebox"
9
-
10
- module Ig3tool
11
-
12
- class BibWindow < GladeHelper
13
-
14
- ## - Constants ----
15
- MENU_PATH = ["Bibliotheek", "Bibliotheek"]
16
- ICON = "gdict.png"
17
-
18
- ## - Class procedures ----
19
- def initialize
20
- super("bib.glade")
21
-
22
- @isbn_entry = @glade.get_widget("isbn")
23
- @title_entry = @glade.get_widget("title")
24
- @author_entry = @glade.get_widget("author")
25
- @publisher_entry = @glade.get_widget("publisher")
26
- @date_entry = @glade.get_widget("year")
27
- @section_entry = @glade.get_widget("section")
28
- @copies_entry = @glade.get_widget("copies")
29
-
30
- @entries = [@isbn_entry, @title_entry, @author_entry,
31
- @publisher_entry, @date_entry, @section_entry, @copies_entry]
32
-
33
- @loan_isbn_entry = @glade.get_widget("loan_isbn")
34
- @loan_memberid_entry = @glade.get_widget("loan_memberid")
35
- @loan_warranty_entry = @glade.get_widget("loan_warranty")
36
-
37
- @loan_entries = [ @loan_isbn_entry, @loan_memberid_entry, @loan_warranty_entry ]
38
-
39
- @notification_label = @glade.get_widget("notification_label")
40
-
41
- # Creer een ListStore voor de Treeview van de Boeken
42
- @books_view = @glade.get_widget("booklist")
43
- # ListStore (Single selection) - Naam, Auteur, Section, ISBN, Date, Copies (ISBN is _GEEN_ integer!)
44
- @books_store = Gtk::ListStore.new(String, String, String)
45
- renderer = Gtk::CellRendererText.new
46
- @books_view.append_column Gtk::TreeViewColumn.new("Sectie",renderer,:text => 0)
47
- @books_view.append_column Gtk::TreeViewColumn.new("Auteur",renderer,:text => 1)
48
- @books_view.append_column Gtk::TreeViewColumn.new("Isbn",renderer,:text => 2)
49
- @books_view.model = @books_store
50
-
51
- # Creer een ListStore voor de Treeview van de Loans
52
- @books_loan_view = @glade.get_widget("loan_booklist")
53
- # ListStore (Single selection) - Memberusername, Naam, Auteur, ISBN, Memberid, Loandate, Returndate, Warranty (ISBN is _GEEN_ integer!)
54
- @books_loan_store = Gtk::ListStore.new(String, String, String, String, String, String, String, String)
55
- renderer = Gtk::CellRendererText.new
56
- @books_loan_view.append_column Gtk::TreeViewColumn.new("Username",renderer,:text => 0)
57
- @books_loan_view.append_column Gtk::TreeViewColumn.new("Naam",renderer,:text => 1)
58
- @books_loan_view.append_column Gtk::TreeViewColumn.new("Auteur",renderer,:text => 2)
59
- @books_loan_view.append_column Gtk::TreeViewColumn.new("ISBN",renderer,:text => 3)
60
- @books_loan_view.append_column Gtk::TreeViewColumn.new("Memberid",renderer,:text => 4)
61
- @books_loan_view.append_column Gtk::TreeViewColumn.new("Leen",renderer,:text => 5)
62
- @books_loan_view.append_column Gtk::TreeViewColumn.new("Terug",renderer,:text => 6)
63
- @books_loan_view.append_column Gtk::TreeViewColumn.new("Waarborg",renderer,:text => 7)
64
- @books_loan_view.model = @books_loan_store
65
-
66
- _create_books_rightclick_menu # Instantieer een rightclick menu voor de book list
67
- _create_loan_books_rightclick_menu # Instantieer een rightclick menu voor de loan book list
68
-
69
- Thread.new do
70
- r = @books_store.append
71
- r[0] = "LL"
72
- r[1] = "Loading..."
73
- r[2] = ""
74
-
75
- _fill_booklist # Vul de boekenlijst
76
- _fill_loan_booklist # Toon alle uitgeleende boeken
77
- end
78
-
79
- @window.show_all
80
- end
81
-
82
- ## - Handlers (GUI) ----
83
- def isbn_activate_cb
84
- @isbn_entry.text = @isbn_entry.text.strip
85
- isbn = @isbn_entry.text
86
- @loan_isbn_entry.text = isbn
87
- if isbn.nil? or isbn.empty?
88
- return
89
- elsif _isbn?(false,isbn) # Returnt nil/isbn
90
- begin
91
- answer = _lookup_database_isbn(isbn) # Controleer eerst in de Ig3tool DB
92
- if answer # Indien niet nil -> Hash van het object uit de server
93
- _fill_in_book(answer)
94
- else
95
- _lookup_amazon_isbn(isbn) # Lookup op amazon
96
- end
97
- rescue Exception => e
98
- _print_msg "Fout: Isbn activate: #{$!}"
99
- end
100
- else
101
- puts "Dit is geen geldig ISBN"
102
- @notification_label.text = "Dit is geen geldig ISBN"
103
- end
104
- return
105
- end
106
-
107
- def entry_activate
108
- lookup_clicked_cb
109
-
110
- # Controleer elk veld op empty?
111
- # Handig voor de focus van het lege veld
112
- @entries.each do |entry|
113
- entry.text = entry.text.strip
114
- if entry.text.empty? and entry.name != "copies"
115
- entry.grab_focus
116
- return
117
- end
118
- end
119
- end
120
-
121
- def entry_changed
122
- _clear_notifictions
123
- end
124
-
125
- def booklist_row_activated_cb # Boek geselecteerd in de lijst
126
- @isbn_entry.text = @books_view.selection.selected[2]
127
- @isbn_entry.activate
128
- end
129
-
130
- def booklist_button_release_event_cb(widget, event) # Indien geklikt op de lijst
131
- if event.kind_of? Gdk::EventButton and event.button == 3 # Indien Rechtermuisknop
132
- @books_view_menu.popup(nil, nil, event.button, event.time) if @books_view.selection.selected # Indien de selectie niet leeg is
133
- end
134
- end
135
-
136
- def clear_clicked_cb
137
- @entries.each do |entry|
138
- entry.text = ""
139
- end
140
- @loan_entries.each do |entry|
141
- entry.text = ""
142
- end
143
- @copies_entry.text = "1"
144
- @loan_warranty_entry.text = "5"
145
- _clear_notifictions
146
- @isbn_entry.activate
147
- end
148
-
149
- def lookup_clicked_cb # Zoek een boek adhv de entries
150
- attrs = _get_book
151
- attrs.each do |k, v|
152
- attrs.delete k if v.nil? or v.empty?
153
- end
154
-
155
- if attrs.empty?
156
- _fill_booklist
157
- else
158
- begin
159
- books = $client.bib_lookup attrs
160
- _set_booklist(books)
161
- rescue Exception => e
162
- _print_msg "Fout: Lookup Clicked: #{$!}"
163
- end
164
- end
165
- end
166
-
167
- def save_clicked_cb # Boek toevoegen
168
- if @isbn_entry.text.empty? or @title_entry.text.empty? or @author_entry.text.empty? or @publisher_entry.text.empty? or @section_entry.text.empty?
169
- _print_msg "Fout: Het ISBN, de titel, de auteur, de uitgever en het sectie moeten ingevuld zijn"
170
- return
171
- end
172
-
173
- if !_isbn?(false,@isbn_entry.text)
174
- _print_msg "Fout: Dit is geen geldig ISBN nummer!"
175
- return
176
- end
177
-
178
- # Controleer eerst of de boek al in de database zit adhv isbn
179
- # Indien ja, geef een messagebox: Overschrijven/Cancel
180
- answer = _lookup_database_isbn(@isbn_entry.text)
181
-
182
- # Indien het boek bestaat
183
- if answer
184
- # Indien de user op Nee geklikt heeft, return (stopt het toevoegen)
185
- return unless Ig3tool::messagebox("Boek toevoegen","Dit isbn nummer zit al in de database, wil je de informatie overschrijven?")
186
- end
187
-
188
- begin
189
- answer = $client.bib_add! _get_book
190
- rescue Exception => e
191
- _print_msg "Fout: Toevoegen: #{$!}"
192
- else
193
- _print_msg "Het boek is toegevoegd.", answer
194
- _fill_booklist
195
- end
196
-
197
- end
198
-
199
- def delete_clicked_cb # Verwijder een boek
200
- _delete_book @isbn_entry.text
201
- end
202
-
203
- def loan_isbn_activate_cb
204
- @isbn_entry.text = @loan_isbn_entry.text
205
- @isbn_entry.activate
206
- end
207
-
208
- # Na ingeven memberid, zoek de geleende boeken op
209
- def loan_memberid_activate_cb
210
- memberid = @loan_memberid_entry.text = @loan_memberid_entry.text.strip
211
- _fill_loan_booklist(memberid)
212
- end
213
-
214
- # Uitlenen
215
- def loan_clicked_cb
216
- if @loan_isbn_entry.text.empty? or @loan_memberid_entry.text.empty? or @loan_warranty_entry.text.empty?
217
- _print_msg "Het ISBN, de memberid en de waarborg zijn verplichte velden!"
218
- return
219
- end
220
-
221
- begin
222
- answer = $client.bib_loan!({:isbn => @loan_isbn_entry.text,
223
- :member => @loan_memberid_entry.text,
224
- :warranty => @loan_warranty_entry.text })
225
- rescue Exception => e
226
- _print_msg "Fout: Uitlenen: #{$!}", "#{@loan_isbn_entry.text},#{@loan_memberid_entry.text},#{@loan_warranty_entry.text}"
227
- else
228
- clear_clicked_cb
229
- _fill_loan_booklist
230
- _print_msg "Het boek werd uitgeleend", answer
231
- end
232
- end
233
-
234
- # Verlengen
235
- def extend_clicked_cb
236
- if @loan_isbn_entry.text.empty? or @loan_memberid_entry.text.empty?
237
- _print_msg "Het ISBN en memberid zijn verplichte velden!"
238
- return
239
- end
240
- _loan_verlengen(@loan_isbn_entry.text, @loan_memberid_entry.text)
241
- _fill_loan_booklist
242
- end
243
-
244
- # Terugbrengen
245
- def return_clicked_cb
246
- if @loan_isbn_entry.text.empty? or @loan_memberid_entry.text.empty?
247
- _print_msg "Het ISBN en memberid zijn verplichte velden!"
248
- return
249
- end
250
- _loan_terugbrengen(@loan_isbn_entry.text, @loan_memberid_entry.text)
251
- _fill_loan_booklist
252
- end
253
-
254
- # Refresh lists
255
- def refresh_activate_cb
256
- clear_clicked_cb
257
- _fill_booklist
258
- _fill_loan_booklist
259
- end
260
-
261
- # Book Loan list rij activated
262
- def loan_booklist_row_activated_cb # Boek geselecteerd in de lijst
263
- @loan_isbn_entry.text = @books_loan_view.selection.selected[3]
264
- @loan_memberid_entry.text = @books_loan_view.selection.selected[4]
265
- @loan_isbn_entry.activate
266
- end
267
-
268
- # Rightclick op de loan booklist
269
- def loan_booklist_button_release_event_cb(widget, event) # Indien geklikt op de lijsta
270
- if event.kind_of? Gdk::EventButton and event.button == 3 # Indien Rechtermuisknop
271
- @books_loan_view_menu.popup(nil, nil, event.button, event.time) if @books_loan_view.selection.selected # Indien de selectie niet leeg is
272
- end
273
- end
274
-
275
-
276
- # --------------
277
- # Prive functies
278
- private
279
- def _isbn? (strong_check,code)
280
- if !strong_check and code =~ /^XXX/ # Indien zelfgemaakte barcode
281
- return code
282
- # indien oude isbn (10 cijfers)
283
- elsif code.length == 10
284
- code = code.gsub(/[^0-9Xx]+/, '').tr('x', 'X')
285
- sum = 0
286
- 9.times {|i| sum += code[i].chr.to_i * (10 - i) }
287
- sum += if code =~ /X$/ then 10 else code[9].chr.to_i end
288
- if sum % 11 == 0
289
- return code
290
- end
291
- # indien nieuwe isbn (13 cijfers - 2007)
292
- elsif code.length == 13
293
- sum = 0
294
- multiply = 1
295
- 0.upto(11){|i|
296
- sum += code[i].chr.to_i * multiply
297
- if multiply == 1 then multiply = 3 else multiply = 1 end
298
- }
299
- if ((10 - (sum % 10)) == code[12].chr.to_i)
300
- return code
301
- end
302
- end
303
- end
304
-
305
- def _lookup_amazon_isbn (isbn)
306
- return false unless $amazon_loaded # Indien de amazon gem niet geladen is, return
307
- return false unless _isbn?(true,isbn) # Indien strenge test faalt
308
-
309
- if isbn.length == 13 # indien in de nieuwe vorm, maak er een oude van
310
- isbn = isbn[3..11]
311
- sum = 0
312
- 9.times {|i| sum += isbn[i].chr.to_i * (10 - i) }
313
- controlecijfer = 11 - (sum % 11)
314
- if controlecijfer != 10
315
- isbn = isbn + controlecijfer.to_s
316
- else
317
- isbn = isbn + "X"
318
- end
319
- end
320
-
321
- # You need a amazon-dev-token in client.rb
322
- token = CONFIG['amazon-dev-token']
323
- return unless $amazon_loaded and token.instance_of?(String) and not token.empty?
324
-
325
- begin
326
- req = Amazon::Search::Request.new(CONFIG["amazon-dev-token"],CONFIG["amazon-associates-id"])
327
- res = req.asin_search(isbn)
328
- prod = res.products
329
- return if prod.length == 0
330
- book = prod[0]
331
-
332
- @title_entry.text = book['product_name'].to_s.strip
333
- @author_entry.text = book['authors'].join(', ').strip if !book['authors'] and book['authors'].class == "Array" # opgelet, niets wegdoen!
334
- @publisher_entry.text = book['manufacturer'].to_s.strip
335
- @date_entry.text = book['release_date'].to_s.strip
336
- rescue Exception => e
337
- _print_msg "Fout: Lookup Amazon: #{$!}", "ISBN: #{isbn}"
338
- end
339
- end
340
-
341
- def _lookup_database_isbn(isbn)
342
- begin
343
- answer = $client.bib_books( [ isbn ] )
344
- rescue Exception => e
345
- _print_msg "Fout: Lookup: #{$!}", "ISBN: #{isbn}"
346
- nil
347
- else
348
- answer
349
- end
350
- end
351
-
352
- def _create_books_rightclick_menu
353
- # Creeer een menu
354
- @books_view_menu = Gtk::Menu.new
355
- books_view_menu_edit_item = Gtk::MenuItem.new("Edit")
356
- books_view_menu_delete_item = Gtk::MenuItem.new("Delete")
357
- books_view_menu_edit_item.signal_connect("activate") {
358
- # Show selected Book
359
- # Treeview heeft default Mode Gtk::SELECTION_SINGLE
360
- puts @books_view.selection.selected[2]
361
- @isbn_entry.text = @books_view.selection.selected[2]
362
- @isbn_entry.activate
363
- }
364
-
365
- # Delete het geselecteerde boek
366
- books_view_menu_delete_item.signal_connect("activate") {
367
- _books_view_delete_selected
368
- }
369
-
370
- @books_view_menu.append(books_view_menu_edit_item)
371
- @books_view_menu.append(books_view_menu_delete_item)
372
- @books_view_menu.show_all
373
- end
374
-
375
- def _create_loan_books_rightclick_menu
376
- # Creeer een menu
377
- @books_loan_view_menu = Gtk::Menu.new
378
- books_loan_view_menu_verlengen_item = Gtk::MenuItem.new("Verlengen")
379
- books_loan_view_menu_terugbrengen_item = Gtk::MenuItem.new("Terugbrengen")
380
- # Verlengen
381
- books_loan_view_menu_verlengen_item.signal_connect("activate") {
382
- # Treeview heeft default Mode Gtk::SELECTION_SINGLE
383
- _loan_verlengen(@books_loan_view.selection.selected[3], @books_loan_view.selection.selected[4])
384
- }
385
- # Terugbrengen
386
- books_loan_view_menu_terugbrengen_item.signal_connect("activate") {
387
- _loan_terugbrengen(@books_loan_view.selection.selected[3], @books_loan_view.selection.selected[4])
388
- }
389
-
390
- @books_loan_view_menu.append(books_loan_view_menu_verlengen_item)
391
- @books_loan_view_menu.append(books_loan_view_menu_terugbrengen_item)
392
- @books_loan_view_menu.show_all
393
- end
394
-
395
- def _clear_notifictions
396
- @notification_label.text = ""
397
- end
398
-
399
- # Verwijder de huidig geselecteerde Persoon (Via rightclick)
400
- def _books_view_delete_selected
401
- # Treeview heeft default Mode Gtk::SELECTION_SINGLE
402
- if iter = @books_view.selection.selected
403
- _delete_book(iter[0][2])
404
- end
405
- end
406
-
407
- # Vul de entries in (GUI)
408
- def _fill_in_book (book)
409
- return unless book
410
- @title_entry.text = book.title
411
- @author_entry.text = book.author
412
- @publisher_entry.text = book.publisher
413
- @date_entry.text = book.year
414
- @section_entry.text = book.section
415
- @copies_entry.text = book.copies
416
- end
417
-
418
- def _get_book
419
- Hash.zipnew(@entries.collect { |x| x.name }, @entries.collect { |x| x.text.strip })
420
- end
421
-
422
- def _fill_booklist
423
- # TODO - kleur de boeken in een speciaal kleur indien uitgeleend
424
- # pas op voor het # copies tov # x uitgeleend!
425
-
426
- # Haal de boeken op van de server
427
- begin
428
- answer = $client.bib_books
429
- _set_booklist(answer)
430
- rescue Exception => e
431
- _print_msg "Fout: Fill-Booklist: #{$!}"
432
- end
433
- end
434
-
435
- def _set_booklist(books = [], clear = true)
436
- @books_store.clear if clear
437
-
438
- @books_view.model = nil # Performance issues
439
- for book in books
440
- # ListStore (Single selection) - Naam, Auteur, Section, ISBN, Date, Copies (ISBN is _GEEN_ integer!)
441
- iter = @books_store.append
442
- iter[0] = book.section[0..4]
443
- iter[1] = book.title
444
- iter[2] = book.isbn
445
- end
446
- @books_view.model = @books_store # Performance issues
447
- end
448
-
449
- def _fill_loan_booklist(memberid = nil)
450
-
451
- # TODO kleur de mensen in het rood die te laat zijn met hun terugbrengen
452
-
453
- @books_loan_store.clear
454
- answer = nil
455
- # Haal de uitgeleende boeken op van de server
456
- begin
457
- if memberid
458
- answer = $client.bib_loans( [ memberid ] ) # Indien een memberid geselecteerd
459
- else
460
- answer = $client.bib_loans # Alle loans weergeven indien niet
461
- end
462
- rescue Exception => e
463
- _print_msg "Fout: Fill-Loan-Booklist: #{$!}", "Memberid: #{memberid}"
464
- else
465
- return if answer.nil?
466
-
467
- # Answer is een BookLoan
468
- @books_loan_view.model = nil # Performance issues
469
- for bookloan in answer
470
- book = $client.bib_info( [bookloan.isbn] ) # Haal de info op over het boek
471
- person = $client.person_member( [bookloan.member_id] ) # Haal de persoon op
472
- if person.nil? or book.nil?
473
- _print_msg "Fout: Fill-Loan-Booklist: #{$!}", "BookLoan: #{bookloan}, Book: #{book}, Person: #{person}"
474
- return
475
- end
476
- # ListStore (Single selection) - Memberusername, Naam, Auteur, ISBN, Memberid, Loandate, Returndate, Warranty (ISBN is _GEEN_ integer!)
477
- iter = @books_loan_store.append
478
- iter[0] = person.username
479
- iter[1] = book.title[0..30]
480
- iter[2] = book.author[0..10]
481
- iter[3] = book.isbn
482
- iter[4] = bookloan.member_id
483
- iter[5] = bookloan.loan_date
484
- iter[6] = bookloan.return_date
485
- iter[7] = bookloan.warranty
486
- end
487
- @books_loan_view.model = @books_loan_store
488
- end
489
-
490
- end
491
-
492
- def _delete_book(isbn)
493
- return unless isbn.nil?
494
- begin
495
- answer = $client.bib_remove!( { :isbn => @isbn } )
496
- rescue Exception => e
497
- _print_msg "Fout: Verwijderen: #{$!}"
498
- else
499
- _print_msg "Het boek werd verwijderd", answer
500
- _fill_booklist
501
- _fill_loan_booklist
502
- end
503
- end
504
-
505
- def _loan_verlengen(isbn, memberid)
506
- begin
507
- answer = $client.bib_extend!({ :isbn => isbn,
508
- :member => memberid })
509
- returndate = Time.at(answer.return_date).to_s
510
- rescue Exception => e
511
- _print_msg "Fout: Verlengen: #{$!}", "#{isbn}, #{memberid}"
512
- else
513
- _print_msg "De uitleentermijn van het boek werd verlengd tot #{returndate}.", answer
514
- end
515
- end
516
-
517
- def _loan_terugbrengen(isbn, memberid)
518
- begin
519
- answer = $client.bib_return!( { :isbn => isbn,
520
- :member => memberid })
521
- rescue Exception => e
522
- _print_msg "Fout: Return: #{$!}", "#{isbn},#{memberid}"
523
- else
524
- _print_msg "Het boek werd teruggebracht.", answer
525
- end
526
- end
527
-
528
- def _print_msg (msg, extra_info = nil)
529
- puts msg
530
- puts " - #{extra_info}" if extra_info
531
- @notification_label.text = msg
532
- end
533
- end
534
-
535
- register_window(BibWindow)
536
-
537
- end
@@ -1,129 +0,0 @@
1
- module Ig3tool
2
-
3
- class InterneWindow < GladeHelper
4
-
5
- ## - Constants ----
6
- MENU_PATH = ["Interne", "Interne"]
7
- ICON = "piggy_xsmall.png"
8
-
9
-
10
- def initialize
11
- super("interne.glade")
12
-
13
- @debugger1 = @glade.get_widget("debugger1")
14
- @debugger2 = @glade.get_widget("debugger2")
15
- @saldo = @glade.get_widget("saldo")
16
- @amount = @glade.get_widget("amount")
17
- @list = @glade.get_widget("list")
18
-
19
- r = Gtk::CellRendererText.new
20
- #@list.model = Gtk::ListStore.new(String, String, Float, String)
21
- #%w(Van Naar Aantal Mededeling).each_with_index do |str, i|
22
- # @list.insert_column(-1, str, r, :text => i)
23
- #end
24
-
25
- # TIJDELIJK: Het is beter dat de debugger meer info kan zien -> Lezen uit log ipv interne_transaction
26
- # XXX TODO IN SERVER -> changen naar interne transacties als deze dan overal ingevuld worden!
27
- @list.model = Gtk::ListStore.new(String, String, String, String)
28
- %w(Systeem Subsysteem Tijd Mededeling).each_with_index do |str, i|
29
- @list.insert_column(-1, str, r, :text => i)
30
- end
31
-
32
- # Eerste box: standaard huidige debugger, kleur window
33
- make_debugger_combo @debugger1, @window
34
-
35
- # Tweede box: standaard kas
36
- make_debugger_combo @debugger2
37
- @debugger2.active = 0
38
-
39
- @window.show_all
40
- end
41
-
42
- def make_debugger_combo(combo, window = nil) # kas is ook een "debugger"
43
- super(combo, window)
44
- r = combo.model.prepend
45
- r[0] = nil
46
- r[1] = "kas"
47
- end
48
-
49
- def left_clicked
50
- amount = @amount.text.to_c
51
- _transfer(@debugger1, @debugger2, -amount)
52
- end
53
-
54
- def right_clicked
55
- amount = @amount.text.to_c
56
- _transfer(@debugger1, @debugger2, amount)
57
- end
58
-
59
- def debugger1_changed
60
- username = _get_username(@debugger1)
61
- return if username.nil?
62
-
63
- if username != "kas"
64
- saldo = $client.interne(username)
65
- @saldo.text = saldo.from_c.to_s
66
- else
67
- @saldo.text = ""
68
- end
69
-
70
- m = _get_widget("list").model
71
- m.clear
72
-
73
- _get_widget("list").model = nil
74
-
75
- username = nil if username == "kas"
76
-
77
- transactions = $client.interne_log(username)
78
- transactions.each do |t|
79
- r = m.append
80
- r[0] = t.system
81
- r[1] = t.subsystem
82
- time = Time.at(t.timestamp.to_i)
83
- r[2] = time.asctime
84
- r[3] = t.message
85
- end
86
-
87
- _get_widget("list").model = m
88
- end
89
-
90
- def eval_amount
91
- t = @amount.text.strip
92
- t.gsub!(/[^\d+\/*().-]/, "")
93
- if t =~ /[+\/*()-]/
94
- t = begin eval(t).to_s rescue "0" end
95
- else
96
- t = t.to_f.to_s
97
- end
98
- @amount.text = t
99
- 0
100
- end
101
-
102
- private
103
- def _transfer(from_widget, to_widget, amount)
104
- from = _get_username(from_widget)
105
- to = _get_username(to_widget)
106
- return if from.nil? or to.nil? or from == to or amount == 0
107
-
108
- args = {
109
- :from => from,
110
- :to => to,
111
- :amount => amount
112
- }
113
-
114
- new_saldo = $client.interne_transfer! args
115
- @saldo.text = $client.interne(from).from_c.to_s
116
-
117
- # Fake Debugger1 changed -> updaten log kaderke
118
- debugger1_changed
119
- end
120
-
121
- def _get_username(widget)
122
- return nil if widget.active == -1
123
- return widget.active_iter[1]
124
- end
125
- end
126
-
127
- register_window(InterneWindow)
128
-
129
- end