ig3tool 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/bin/ig3tool +114 -0
  2. data/lib/glade/bib.glade +539 -0
  3. data/lib/glade/bibliotheek.glade +994 -0
  4. data/lib/glade/icons/cola.png +0 -0
  5. data/lib/glade/icons/emblem-money.png +0 -0
  6. data/lib/glade/icons/emblem-package.png +0 -0
  7. data/lib/glade/icons/emblem-penning.xpm +98 -0
  8. data/lib/glade/icons/emblem-people.png +0 -0
  9. data/lib/glade/icons/emblem-sales.png +0 -0
  10. data/lib/glade/icons/gdict.png +0 -0
  11. data/lib/glade/icons/members_klein.png +0 -0
  12. data/lib/glade/icons/members_xklein.png +0 -0
  13. data/lib/glade/icons/no.xpm +34 -0
  14. data/lib/glade/icons/stock_book.svg +338 -0
  15. data/lib/glade/icons/stock_book_klein.png +0 -0
  16. data/lib/glade/icons/stock_book_xklein.png +0 -0
  17. data/lib/glade/icons/stock_bookmark.svg +327 -0
  18. data/lib/glade/icons/stock_bookmark_klein.png +0 -0
  19. data/lib/glade/icons/stock_bookmark_xklein.png +0 -0
  20. data/lib/glade/icons/stock_print.png +0 -0
  21. data/lib/glade/interne.glade +228 -0
  22. data/lib/glade/loginwindow.glade +255 -0
  23. data/lib/glade/memberinfo.svg +411 -0
  24. data/lib/glade/memberinfo_klein.png +0 -0
  25. data/lib/glade/memberinfo_xklein.png +0 -0
  26. data/lib/glade/members.glade +596 -0
  27. data/lib/glade/members.svg +559 -0
  28. data/lib/glade/members_klein.png +0 -0
  29. data/lib/glade/members_xklein.png +0 -0
  30. data/lib/glade/penningtool.glade +731 -0
  31. data/lib/glade/people.glade +947 -0
  32. data/lib/glade/printen.glade +358 -0
  33. data/lib/glade/printer.png +0 -0
  34. data/lib/glade/printer_klein.png +0 -0
  35. data/lib/glade/printer_xklein.png +0 -0
  36. data/lib/glade/printerlog_klein.png +0 -0
  37. data/lib/glade/printerlog_xklein.png +0 -0
  38. data/lib/glade/printing.glade +841 -0
  39. data/lib/glade/products.glade +404 -0
  40. data/lib/glade/sales.glade +426 -0
  41. data/lib/glade/stock_book.svg +338 -0
  42. data/lib/glade/stock_book_klein.png +0 -0
  43. data/lib/glade/stock_book_xklein.png +0 -0
  44. data/lib/glade/stock_bookmark_klein.png +0 -0
  45. data/lib/glade/stock_bookmark_xklein.png +0 -0
  46. data/lib/glade/vendingmachine.glade +207 -0
  47. data/lib/lib/errors.rb +90 -0
  48. data/lib/lib/util.rb +89 -0
  49. data/lib/ui/automaatwindow.rb +107 -0
  50. data/lib/ui/bibliotheekwindow.rb +453 -0
  51. data/lib/ui/bibwindow.rb +537 -0
  52. data/lib/ui/gladehelper.rb +110 -0
  53. data/lib/ui/internewindow.rb +126 -0
  54. data/lib/ui/loginwindow.rb +60 -0
  55. data/lib/ui/memberswindow.rb +327 -0
  56. data/lib/ui/messagebox.rb +23 -0
  57. data/lib/ui/peoplewindow.rb +333 -0
  58. data/lib/ui/printenwindow.rb +329 -0
  59. data/lib/ui/printingwindow.rb +395 -0
  60. data/lib/ui/productswindow.rb +160 -0
  61. data/lib/ui/saleswindow.rb +207 -0
  62. data/lib/ui/toolwindow.rb +97 -0
  63. metadata +128 -0
data/bin/ig3tool ADDED
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'gtk2'
4
+ require 'libglade2'
5
+ require 'rubygems'
6
+ require 'facets'
7
+
8
+ # Client - Yaml / CONFIG
9
+ require 'ig3client'
10
+ require "lib/errors"
11
+ require "lib/util"
12
+
13
+ module Ig3tool
14
+
15
+ $global = {
16
+ 'client' => '',
17
+ 'amazon_loaded' => false
18
+ }
19
+
20
+ CONFIG = {
21
+
22
+ 'amazon-associates-id' => 'webservices-20',
23
+ # You need an Amazon dev token (Lookup ISBN feature)
24
+ 'amazon-dev-token' => 'D2CCFZZMOO6ZB9'
25
+ }
26
+
27
+ # Maak de functies publiek
28
+
29
+ module_function
30
+
31
+ # Start functie (Openen grafische interface)
32
+ def start ()
33
+
34
+ host = ENV['IG3TOOL_HOST'] || "igwe.vub.ac.be"
35
+ port = ENV['IG3TOOL_PORT'] || 2007
36
+ $global['client'] = Ig3tool::Client.new(host, port)
37
+ Gtk::init
38
+
39
+ def error_dialog (parent, exception)
40
+ dialog = Gtk::MessageDialog.new \
41
+ parent,
42
+ Gtk::Dialog::MODAL | Gtk::Dialog::DESTROY_WITH_PARENT,
43
+ Gtk::MessageDialog::WARNING,
44
+ Gtk::MessageDialog::BUTTONS_CLOSE,
45
+ exception.to_s
46
+ dialog.run
47
+ dialog.destroy
48
+ end
49
+ begin
50
+ if $global['client'].validate
51
+ ToolWindow.new(@klasses)
52
+ else
53
+ LoginWindow.new($global['client']) do
54
+ ToolWindow.new(@klasses)
55
+ end
56
+ end
57
+ rescue Exception => e
58
+ LoginWindow.new($global['client']) do
59
+ ToolWindow.new(@klasses)
60
+ end
61
+ end
62
+ begin
63
+ Gtk::main
64
+ rescue Interrupt
65
+ # Ctrl-C
66
+ rescue Exception => e
67
+ # print "Uncaught exception: #{e.message}\n"
68
+ # p e
69
+ # print e.backtrace.join("\n"), "\n\n"
70
+ # error_dialog(nil, "Uncaught exception: #{e.message}\n")
71
+ retry
72
+ end
73
+ end
74
+
75
+
76
+ @klasses = []
77
+ # Functie toevoegen aan het tool-window
78
+ def register_window (klass)
79
+ @klasses <<= klass
80
+ end
81
+
82
+
83
+ def number_eval_widget(widget)
84
+ text = widget.text
85
+ text.strip!
86
+ text.gsub! /[^\d+\/*()-]/, ""
87
+ if text =~ /[+\/*()-]/
88
+ text = begin eval(text).to_s rescue "0" end
89
+ else
90
+ text = text.to_i.to_s
91
+ end
92
+ widget.text = text
93
+ 0
94
+ end
95
+
96
+ end
97
+
98
+ # Toolwindow is het hoofd window
99
+ require "ui/toolwindow"
100
+ require "ui/gladehelper"
101
+
102
+ # Alle functionaliteit loaden
103
+ require "ui/bibliotheekwindow"
104
+ require "ui/automaatwindow"
105
+ require "ui/peoplewindow"
106
+ require "ui/saleswindow"
107
+ require "ui/printingwindow.rb"
108
+ require "ui/internewindow.rb"
109
+ require "ui/productswindow.rb"
110
+ require "ui/loginwindow.rb"
111
+
112
+ # Start de grafische interface
113
+ Ig3tool::start()
114
+
@@ -0,0 +1,539 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
3
+ <!--*- mode: xml -*-->
4
+ <glade-interface>
5
+ <widget class="GtkWindow" id="window">
6
+ <property name="visible">True</property>
7
+ <property name="can_focus">True</property>
8
+ <property name="border_width">6</property>
9
+ <property name="title" translatable="yes">Bibliotheek</property>
10
+ <property name="default_width">500</property>
11
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
12
+ <child>
13
+ <widget class="GtkVBox" id="vbox1">
14
+ <property name="visible">True</property>
15
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
16
+ <child>
17
+ <widget class="GtkHPaned" id="hpaned1">
18
+ <property name="visible">True</property>
19
+ <property name="can_focus">True</property>
20
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
21
+ <child>
22
+ <widget class="GtkVBox" id="BoekenLijst">
23
+ <property name="visible">True</property>
24
+ <property name="spacing">6</property>
25
+ <child>
26
+ <widget class="GtkTable" id="table1">
27
+ <property name="visible">True</property>
28
+ <property name="n_rows">7</property>
29
+ <property name="n_columns">2</property>
30
+ <property name="column_spacing">12</property>
31
+ <property name="row_spacing">6</property>
32
+ <child>
33
+ <widget class="GtkLabel" id="label7">
34
+ <property name="visible">True</property>
35
+ <property name="xalign">0</property>
36
+ <property name="label" translatable="yes">Kopieën:</property>
37
+ </widget>
38
+ <packing>
39
+ <property name="top_attach">6</property>
40
+ <property name="bottom_attach">7</property>
41
+ <property name="x_options"></property>
42
+ <property name="y_options"></property>
43
+ </packing>
44
+ </child>
45
+ <child>
46
+ <widget class="GtkLabel" id="label6">
47
+ <property name="visible">True</property>
48
+ <property name="xalign">0</property>
49
+ <property name="label" translatable="yes">Sectie:</property>
50
+ </widget>
51
+ <packing>
52
+ <property name="top_attach">5</property>
53
+ <property name="bottom_attach">6</property>
54
+ <property name="x_options"></property>
55
+ <property name="y_options"></property>
56
+ </packing>
57
+ </child>
58
+ <child>
59
+ <widget class="GtkLabel" id="label5">
60
+ <property name="visible">True</property>
61
+ <property name="xalign">0</property>
62
+ <property name="label" translatable="yes">Datum:</property>
63
+ </widget>
64
+ <packing>
65
+ <property name="top_attach">4</property>
66
+ <property name="bottom_attach">5</property>
67
+ <property name="x_options"></property>
68
+ <property name="y_options"></property>
69
+ </packing>
70
+ </child>
71
+ <child>
72
+ <widget class="GtkLabel" id="label4">
73
+ <property name="visible">True</property>
74
+ <property name="xalign">0</property>
75
+ <property name="label" translatable="yes">Uitgever:</property>
76
+ </widget>
77
+ <packing>
78
+ <property name="top_attach">3</property>
79
+ <property name="bottom_attach">4</property>
80
+ <property name="x_options"></property>
81
+ <property name="y_options"></property>
82
+ </packing>
83
+ </child>
84
+ <child>
85
+ <widget class="GtkLabel" id="label3">
86
+ <property name="visible">True</property>
87
+ <property name="xalign">0</property>
88
+ <property name="label" translatable="yes">Auteur(s):</property>
89
+ </widget>
90
+ <packing>
91
+ <property name="top_attach">2</property>
92
+ <property name="bottom_attach">3</property>
93
+ <property name="x_options"></property>
94
+ <property name="y_options"></property>
95
+ </packing>
96
+ </child>
97
+ <child>
98
+ <widget class="GtkLabel" id="label2">
99
+ <property name="visible">True</property>
100
+ <property name="xalign">0</property>
101
+ <property name="label" translatable="yes">Titel:</property>
102
+ </widget>
103
+ <packing>
104
+ <property name="top_attach">1</property>
105
+ <property name="bottom_attach">2</property>
106
+ <property name="x_options"></property>
107
+ <property name="y_options"></property>
108
+ </packing>
109
+ </child>
110
+ <child>
111
+ <widget class="GtkEntry" id="copies">
112
+ <property name="visible">True</property>
113
+ <property name="can_focus">True</property>
114
+ <signal name="changed" handler="entry_changed"/>
115
+ <signal name="activate" handler="entry_activate"/>
116
+ </widget>
117
+ <packing>
118
+ <property name="left_attach">1</property>
119
+ <property name="right_attach">2</property>
120
+ <property name="top_attach">6</property>
121
+ <property name="bottom_attach">7</property>
122
+ <property name="x_options">GTK_FILL</property>
123
+ <property name="y_options"></property>
124
+ </packing>
125
+ </child>
126
+ <child>
127
+ <widget class="GtkEntry" id="section">
128
+ <property name="visible">True</property>
129
+ <property name="can_focus">True</property>
130
+ <signal name="activate" handler="entry_activate"/>
131
+ </widget>
132
+ <packing>
133
+ <property name="left_attach">1</property>
134
+ <property name="right_attach">2</property>
135
+ <property name="top_attach">5</property>
136
+ <property name="bottom_attach">6</property>
137
+ <property name="y_options"></property>
138
+ </packing>
139
+ </child>
140
+ <child>
141
+ <widget class="GtkEntry" id="year">
142
+ <property name="visible">True</property>
143
+ <property name="can_focus">True</property>
144
+ <signal name="activate" handler="entry_activate"/>
145
+ </widget>
146
+ <packing>
147
+ <property name="left_attach">1</property>
148
+ <property name="right_attach">2</property>
149
+ <property name="top_attach">4</property>
150
+ <property name="bottom_attach">5</property>
151
+ <property name="y_options"></property>
152
+ </packing>
153
+ </child>
154
+ <child>
155
+ <widget class="GtkEntry" id="publisher">
156
+ <property name="visible">True</property>
157
+ <property name="can_focus">True</property>
158
+ <signal name="changed" handler="entry_changed"/>
159
+ <signal name="activate" handler="entry_activate"/>
160
+ </widget>
161
+ <packing>
162
+ <property name="left_attach">1</property>
163
+ <property name="right_attach">2</property>
164
+ <property name="top_attach">3</property>
165
+ <property name="bottom_attach">4</property>
166
+ <property name="y_options"></property>
167
+ </packing>
168
+ </child>
169
+ <child>
170
+ <widget class="GtkEntry" id="author">
171
+ <property name="visible">True</property>
172
+ <property name="can_focus">True</property>
173
+ <signal name="changed" handler="entry_changed"/>
174
+ <signal name="activate" handler="entry_activate"/>
175
+ </widget>
176
+ <packing>
177
+ <property name="left_attach">1</property>
178
+ <property name="right_attach">2</property>
179
+ <property name="top_attach">2</property>
180
+ <property name="bottom_attach">3</property>
181
+ <property name="y_options"></property>
182
+ </packing>
183
+ </child>
184
+ <child>
185
+ <widget class="GtkEntry" id="isbn">
186
+ <property name="visible">True</property>
187
+ <property name="can_focus">True</property>
188
+ <signal name="changed" handler="entry_changed"/>
189
+ <signal name="activate" handler="isbn_activate_cb"/>
190
+ <signal name="activate" handler="entry_activate"/>
191
+ </widget>
192
+ <packing>
193
+ <property name="left_attach">1</property>
194
+ <property name="right_attach">2</property>
195
+ <property name="y_options"></property>
196
+ </packing>
197
+ </child>
198
+ <child>
199
+ <widget class="GtkLabel" id="label1">
200
+ <property name="visible">True</property>
201
+ <property name="xalign">0</property>
202
+ <property name="label" translatable="yes">ISBN:</property>
203
+ </widget>
204
+ <packing>
205
+ <property name="x_options"></property>
206
+ <property name="y_options"></property>
207
+ </packing>
208
+ </child>
209
+ <child>
210
+ <widget class="GtkEntry" id="title">
211
+ <property name="visible">True</property>
212
+ <property name="can_focus">True</property>
213
+ <signal name="changed" handler="entry_changed"/>
214
+ <signal name="activate" handler="entry_activate"/>
215
+ </widget>
216
+ <packing>
217
+ <property name="left_attach">1</property>
218
+ <property name="right_attach">2</property>
219
+ <property name="top_attach">1</property>
220
+ <property name="bottom_attach">2</property>
221
+ <property name="y_options"></property>
222
+ </packing>
223
+ </child>
224
+ </widget>
225
+ <packing>
226
+ <property name="expand">False</property>
227
+ <property name="fill">False</property>
228
+ </packing>
229
+ </child>
230
+ <child>
231
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
232
+ <property name="visible">True</property>
233
+ <property name="can_focus">True</property>
234
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
235
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
236
+ <child>
237
+ <widget class="GtkTreeView" id="booklist">
238
+ <property name="width_request">400</property>
239
+ <property name="height_request">150</property>
240
+ <property name="visible">True</property>
241
+ <property name="can_focus">True</property>
242
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
243
+ <property name="headers_clickable">True</property>
244
+ <property name="reorderable">True</property>
245
+ <property name="rules_hint">True</property>
246
+ <property name="hover_expand">True</property>
247
+ <signal name="row_activated" handler="booklist_row_activated_cb"/>
248
+ <signal name="button_release_event" handler="booklist_button_release_event_cb"/>
249
+ </widget>
250
+ </child>
251
+ </widget>
252
+ <packing>
253
+ <property name="position">1</property>
254
+ </packing>
255
+ </child>
256
+ <child>
257
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
258
+ <property name="visible">True</property>
259
+ <property name="homogeneous">True</property>
260
+ <child>
261
+ <widget class="GtkButton" id="clear">
262
+ <property name="height_request">34</property>
263
+ <property name="visible">True</property>
264
+ <property name="can_focus">True</property>
265
+ <property name="label">gtk-clear</property>
266
+ <property name="use_stock">True</property>
267
+ <signal name="clicked" handler="clear_clicked_cb"/>
268
+ </widget>
269
+ <packing>
270
+ <property name="expand">False</property>
271
+ </packing>
272
+ </child>
273
+ <child>
274
+ <widget class="GtkButton" id="lookup">
275
+ <property name="visible">True</property>
276
+ <property name="can_focus">True</property>
277
+ <property name="label">gtk-find</property>
278
+ <property name="use_stock">True</property>
279
+ <signal name="clicked" handler="lookup_clicked_cb"/>
280
+ </widget>
281
+ <packing>
282
+ <property name="position">1</property>
283
+ </packing>
284
+ </child>
285
+ <child>
286
+ <widget class="GtkButton" id="save">
287
+ <property name="visible">True</property>
288
+ <property name="can_focus">True</property>
289
+ <property name="can_default">True</property>
290
+ <property name="has_default">True</property>
291
+ <property name="label">gtk-save</property>
292
+ <property name="use_stock">True</property>
293
+ <signal name="clicked" handler="save_clicked_cb"/>
294
+ </widget>
295
+ <packing>
296
+ <property name="expand">False</property>
297
+ <property name="position">2</property>
298
+ </packing>
299
+ </child>
300
+ <child>
301
+ <widget class="GtkButton" id="delete">
302
+ <property name="visible">True</property>
303
+ <property name="can_focus">True</property>
304
+ <property name="label">gtk-delete</property>
305
+ <property name="use_stock">True</property>
306
+ <signal name="clicked" handler="delete_clicked_cb"/>
307
+ </widget>
308
+ <packing>
309
+ <property name="expand">False</property>
310
+ <property name="position">3</property>
311
+ </packing>
312
+ </child>
313
+ </widget>
314
+ <packing>
315
+ <property name="expand">False</property>
316
+ <property name="position">2</property>
317
+ </packing>
318
+ </child>
319
+ </widget>
320
+ <packing>
321
+ <property name="resize">False</property>
322
+ </packing>
323
+ </child>
324
+ <child>
325
+ <widget class="GtkVBox" id="LoanBoekenLijst">
326
+ <property name="visible">True</property>
327
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
328
+ <property name="spacing">6</property>
329
+ <child>
330
+ <widget class="GtkTable" id="table2">
331
+ <property name="visible">True</property>
332
+ <property name="n_rows">3</property>
333
+ <property name="n_columns">2</property>
334
+ <property name="column_spacing">12</property>
335
+ <property name="row_spacing">6</property>
336
+ <child>
337
+ <widget class="GtkEntry" id="loan_isbn">
338
+ <property name="visible">True</property>
339
+ <property name="can_focus">True</property>
340
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
341
+ <signal name="activate" handler="loan_isbn_activate_cb"/>
342
+ </widget>
343
+ <packing>
344
+ <property name="left_attach">1</property>
345
+ <property name="right_attach">2</property>
346
+ <property name="top_attach">1</property>
347
+ <property name="bottom_attach">2</property>
348
+ <property name="x_options">GTK_FILL</property>
349
+ <property name="y_options">GTK_FILL</property>
350
+ </packing>
351
+ </child>
352
+ <child>
353
+ <widget class="GtkLabel" id="label10">
354
+ <property name="visible">True</property>
355
+ <property name="label" translatable="yes">ISBN:</property>
356
+ </widget>
357
+ <packing>
358
+ <property name="top_attach">1</property>
359
+ <property name="bottom_attach">2</property>
360
+ <property name="x_options"></property>
361
+ <property name="y_options"></property>
362
+ </packing>
363
+ </child>
364
+ <child>
365
+ <widget class="GtkEntry" id="loan_warranty">
366
+ <property name="visible">True</property>
367
+ <property name="can_focus">True</property>
368
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
369
+ <property name="text" translatable="yes">5</property>
370
+ </widget>
371
+ <packing>
372
+ <property name="left_attach">1</property>
373
+ <property name="right_attach">2</property>
374
+ <property name="top_attach">2</property>
375
+ <property name="bottom_attach">3</property>
376
+ </packing>
377
+ </child>
378
+ <child>
379
+ <widget class="GtkEntry" id="loan_memberid">
380
+ <property name="visible">True</property>
381
+ <property name="can_focus">True</property>
382
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
383
+ <signal name="activate" handler="loan_memberid_activate_cb"/>
384
+ </widget>
385
+ <packing>
386
+ <property name="left_attach">1</property>
387
+ <property name="right_attach">2</property>
388
+ </packing>
389
+ </child>
390
+ <child>
391
+ <widget class="GtkLabel" id="label8">
392
+ <property name="visible">True</property>
393
+ <property name="label" translatable="yes">Waarborg:</property>
394
+ </widget>
395
+ <packing>
396
+ <property name="top_attach">2</property>
397
+ <property name="bottom_attach">3</property>
398
+ <property name="x_options"></property>
399
+ <property name="y_options"></property>
400
+ </packing>
401
+ </child>
402
+ <child>
403
+ <widget class="GtkLabel" id="label1">
404
+ <property name="visible">True</property>
405
+ <property name="label" translatable="yes">Member id:</property>
406
+ </widget>
407
+ <packing>
408
+ <property name="x_options"></property>
409
+ <property name="y_options"></property>
410
+ </packing>
411
+ </child>
412
+ </widget>
413
+ <packing>
414
+ <property name="expand">False</property>
415
+ <property name="fill">False</property>
416
+ </packing>
417
+ </child>
418
+ <child>
419
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
420
+ <property name="visible">True</property>
421
+ <property name="can_focus">True</property>
422
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
423
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
424
+ <child>
425
+ <widget class="GtkTreeView" id="loan_booklist">
426
+ <property name="height_request">75</property>
427
+ <property name="visible">True</property>
428
+ <property name="can_focus">True</property>
429
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
430
+ <property name="headers_clickable">True</property>
431
+ <property name="reorderable">True</property>
432
+ <property name="rules_hint">True</property>
433
+ <property name="hover_expand">True</property>
434
+ <signal name="row_activated" handler="loan_booklist_row_activated_cb"/>
435
+ <signal name="button_release_event" handler="loan_booklist_button_release_event_cb"/>
436
+ </widget>
437
+ </child>
438
+ </widget>
439
+ <packing>
440
+ <property name="position">1</property>
441
+ </packing>
442
+ </child>
443
+ <child>
444
+ <widget class="GtkHButtonBox" id="hbuttonbox2">
445
+ <property name="visible">True</property>
446
+ <property name="homogeneous">True</property>
447
+ <child>
448
+ <widget class="GtkButton" id="loan">
449
+ <property name="height_request">34</property>
450
+ <property name="visible">True</property>
451
+ <property name="can_focus">True</property>
452
+ <property name="label" translatable="yes">Uitlenen</property>
453
+ <property name="use_underline">True</property>
454
+ <signal name="clicked" handler="loan_clicked_cb"/>
455
+ </widget>
456
+ </child>
457
+ <child>
458
+ <widget class="GtkButton" id="extend">
459
+ <property name="visible">True</property>
460
+ <property name="can_focus">True</property>
461
+ <property name="label" translatable="yes">Verlengen</property>
462
+ <property name="use_underline">True</property>
463
+ <signal name="clicked" handler="extend_clicked_cb"/>
464
+ </widget>
465
+ <packing>
466
+ <property name="position">1</property>
467
+ </packing>
468
+ </child>
469
+ <child>
470
+ <widget class="GtkButton" id="return">
471
+ <property name="visible">True</property>
472
+ <property name="can_focus">True</property>
473
+ <property name="label" translatable="yes">Terugbrengen</property>
474
+ <property name="use_underline">True</property>
475
+ <signal name="clicked" handler="return_clicked_cb"/>
476
+ </widget>
477
+ <packing>
478
+ <property name="position">2</property>
479
+ </packing>
480
+ </child>
481
+ </widget>
482
+ <packing>
483
+ <property name="expand">False</property>
484
+ <property name="position">2</property>
485
+ </packing>
486
+ </child>
487
+ </widget>
488
+ </child>
489
+ </widget>
490
+ </child>
491
+ <child>
492
+ <widget class="GtkHSeparator" id="hseparator1">
493
+ <property name="visible">True</property>
494
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
495
+ </widget>
496
+ <packing>
497
+ <property name="expand">False</property>
498
+ <property name="padding">4</property>
499
+ <property name="position">1</property>
500
+ </packing>
501
+ </child>
502
+ <child>
503
+ <widget class="GtkHBox" id="hbox1">
504
+ <property name="visible">True</property>
505
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
506
+ <child>
507
+ <widget class="GtkLabel" id="notification_label">
508
+ <property name="visible">True</property>
509
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
510
+ <property name="wrap">True</property>
511
+ </widget>
512
+ </child>
513
+ <child>
514
+ <widget class="GtkButton" id="refresh">
515
+ <property name="visible">True</property>
516
+ <property name="can_focus">True</property>
517
+ <property name="receives_default">True</property>
518
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
519
+ <property name="label" translatable="yes">gtk-refresh</property>
520
+ <property name="use_stock">True</property>
521
+ <signal name="clicked" handler="refresh_activate_cb"/>
522
+ </widget>
523
+ <packing>
524
+ <property name="expand">False</property>
525
+ <property name="fill">False</property>
526
+ <property name="position">1</property>
527
+ </packing>
528
+ </child>
529
+ </widget>
530
+ <packing>
531
+ <property name="expand">False</property>
532
+ <property name="fill">False</property>
533
+ <property name="position">2</property>
534
+ </packing>
535
+ </child>
536
+ </widget>
537
+ </child>
538
+ </widget>
539
+ </glade-interface>