ig3tool 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>