ig3tool 0.4.5 → 0.4.6
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.
- data/lib/glade/protjes.glade +35 -11
- data/lib/glade/sales.glade +120 -119
- data/lib/lib/util.rb +6 -0
- data/lib/ui/bibliotheekwindow.rb +132 -52
- data/lib/ui/interne.rb +1 -1
- data/lib/ui/printingwindow.rb +29 -6
- data/lib/ui/protjes.rb +42 -14
- data/lib/ui/saleswindow.rb +15 -12
- metadata +2 -7
- data/lib/ui/OLD_bibwindow.rb +0 -537
- data/lib/ui/OLD_internewindow.rb +0 -129
- data/lib/ui/OLD_memberswindow.rb +0 -327
- data/lib/ui/OLD_printenwindow.rb +0 -329
- data/lib/ui/OLD_productswindow.rb +0 -193
data/lib/ui/OLD_memberswindow.rb
DELETED
@@ -1,327 +0,0 @@
|
|
1
|
-
module Ig3tool
|
2
|
-
|
3
|
-
class MembersWindow < GladeHelper
|
4
|
-
MENU_PATH = ["Leden"]
|
5
|
-
ICON = "members_xklein.png"
|
6
|
-
FIELDS = %w(first_name last_name email username rolnr address phone)
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
super("members.glade")
|
10
|
-
|
11
|
-
@people_view = _get_widget("people_view")
|
12
|
-
@people_view.model = @people_store = Gtk::ListStore.new(Object, String)
|
13
|
-
r = Gtk::CellRendererText.new
|
14
|
-
@people_view.insert_column(-1, "Naam", r, :text => 1)
|
15
|
-
|
16
|
-
past_view = _get_widget("past_view")
|
17
|
-
past_view.model = Gtk::ListStore.new(String, String, String)
|
18
|
-
past_view.insert_column(-1, "Jaar", r, :text => 0)
|
19
|
-
past_view.insert_column(-1, "Status", r, :text => 1)
|
20
|
-
past_view.insert_column(-1, "Lidnummer", r, :text => 2)
|
21
|
-
past_view.columns.last.expand = true
|
22
|
-
|
23
|
-
sg = Gtk::SizeGroup.new(Gtk::SizeGroup::BOTH)
|
24
|
-
|
25
|
-
@glade.widget_names.grep(/^slabel/).each do |n|
|
26
|
-
sg.add_widget(_get_widget(n))
|
27
|
-
end
|
28
|
-
|
29
|
-
@notification_label = _get_widget("notification_label")
|
30
|
-
|
31
|
-
_get_widget("first_name").grab_focus
|
32
|
-
statussen = $client.person_statussen
|
33
|
-
make_status_combo(_get_widget("status"), statussen)
|
34
|
-
|
35
|
-
Thread.new do
|
36
|
-
_get_widget("query").active = 0 # triggers query_changed
|
37
|
-
_get_widget("status").active = 0 # triggers status_changed
|
38
|
-
end
|
39
|
-
|
40
|
-
_create_people_rightclick_menu # Instantieer een rightclick menu
|
41
|
-
|
42
|
-
@window.show
|
43
|
-
end
|
44
|
-
|
45
|
-
## - Handlers (GUI) ----
|
46
|
-
# Rechtermuisknop op een persoon in de lijst
|
47
|
-
def people_button_press_event (widget, event)
|
48
|
-
if event.kind_of? Gdk::EventButton and event.button == 3
|
49
|
-
@people_view_menu.popup(nil, nil, event.button, event.time)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Bij dubbel klik op een naam in de lijst
|
54
|
-
def people_view_row_activated (widget, path, column)
|
55
|
-
iter = widget.model.get_iter(path)
|
56
|
-
_show iter[0]
|
57
|
-
end
|
58
|
-
|
59
|
-
def new_clicked
|
60
|
-
_clear
|
61
|
-
end
|
62
|
-
|
63
|
-
def ok_clicked
|
64
|
-
_save
|
65
|
-
end
|
66
|
-
|
67
|
-
def delete_clicked
|
68
|
-
_delete(@selected_person)
|
69
|
-
end
|
70
|
-
|
71
|
-
def query_changed
|
72
|
-
_update_people
|
73
|
-
end
|
74
|
-
|
75
|
-
def entry_activate
|
76
|
-
lookup_clicked
|
77
|
-
end
|
78
|
-
|
79
|
-
def focus_changed
|
80
|
-
@notification_label.text = ""
|
81
|
-
false
|
82
|
-
end
|
83
|
-
|
84
|
-
def lookup_clicked
|
85
|
-
attrs = {}
|
86
|
-
|
87
|
-
FIELDS.each do |k|
|
88
|
-
v = _get_widget(k).text.strip
|
89
|
-
attrs[k] = v unless v.nil? or v.empty?
|
90
|
-
end
|
91
|
-
|
92
|
-
begin
|
93
|
-
people = $client.person_lookup(attrs)
|
94
|
-
_set_people(people)
|
95
|
-
rescue Exception => e
|
96
|
-
_print_msg "Error: Lookup: #{$!}"
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def status_changed (status)
|
101
|
-
sensitive = status.active > 0
|
102
|
-
_get_widget("slabel_memberid").sensitive = sensitive
|
103
|
-
_get_widget("memberid").sensitive = sensitive
|
104
|
-
end
|
105
|
-
|
106
|
-
def image_button_release_event
|
107
|
-
dialog = Gtk::FileChooserDialog.new("Open File", nil, Gtk::FileChooser::ACTION_OPEN, nil, [Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL],[Gtk::Stock::OPEN, Gtk::Dialog::RESPONSE_ACCEPT])
|
108
|
-
if dialog.run == Gtk::Dialog::RESPONSE_ACCEPT
|
109
|
-
filename = dialog.filename
|
110
|
-
_get_widget("image").set = filename
|
111
|
-
# Upload filename naar server?
|
112
|
-
# Blob?
|
113
|
-
# lokaal saven in /usr/share?
|
114
|
-
# TODO!
|
115
|
-
end
|
116
|
-
dialog.destroy
|
117
|
-
end
|
118
|
-
|
119
|
-
# Private
|
120
|
-
private
|
121
|
-
def _create_people_rightclick_menu
|
122
|
-
# Creeer een menu
|
123
|
-
@people_view_menu = Gtk::Menu.new
|
124
|
-
people_view_menu_edit_item = Gtk::MenuItem.new("Edit")
|
125
|
-
people_view_menu_delete_item = Gtk::MenuItem.new("Delete")
|
126
|
-
people_view_menu_edit_item.signal_connect("activate") {
|
127
|
-
# Show selected Persoon
|
128
|
-
# Treeview heeft default Mode Gtk::SELECTION_SINGLE
|
129
|
-
@people_view.selection.selected_each { |model, path, iter| _show(iter[0]) }
|
130
|
-
}
|
131
|
-
|
132
|
-
# Delete de geselecteerde persoon
|
133
|
-
people_view_menu_delete_item.signal_connect("activate") {
|
134
|
-
@people_view.selection.selected_each { |model, path, iter|
|
135
|
-
_delete(iter[0],false)
|
136
|
-
model.remove(iter) # Verwijder uit de lijst
|
137
|
-
}
|
138
|
-
}
|
139
|
-
|
140
|
-
@people_view_menu.append(people_view_menu_edit_item)
|
141
|
-
@people_view_menu.append(people_view_menu_delete_item)
|
142
|
-
@people_view_menu.show_all
|
143
|
-
end
|
144
|
-
|
145
|
-
def _show (who)
|
146
|
-
@selected_person = who
|
147
|
-
|
148
|
-
begin
|
149
|
-
FIELDS.each {|n| _get_widget(n).text = who.send(n.to_sym).to_s }
|
150
|
-
|
151
|
-
ms = $client.person_memberships(who.username)
|
152
|
-
|
153
|
-
|
154
|
-
if !ms.nil?
|
155
|
-
ms.sort! {|a, b| b.year <=> a.year }
|
156
|
-
if !ms.empty? and ms[0].year.to_i == Time.werkjaar
|
157
|
-
_get_widget("status").active = statussen.index(ms[0].status)
|
158
|
-
_get_widget("memberid").text = ms[0].barcode
|
159
|
-
ms.shift
|
160
|
-
else
|
161
|
-
_get_widget("status").active = 0
|
162
|
-
_get_widget("memberid").text = ""
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
|
-
model = _get_widget("past_view").model
|
168
|
-
model.clear
|
169
|
-
|
170
|
-
ms.each do |m|
|
171
|
-
row = model.append
|
172
|
-
row[0] = m.year.to_s
|
173
|
-
row[1] = m.status.to_s
|
174
|
-
row[2] = m.barcode.to_s
|
175
|
-
end
|
176
|
-
rescue Exception => e
|
177
|
-
_print_msg "Fout: Memberinfo: #{$!}"
|
178
|
-
_clear
|
179
|
-
end
|
180
|
-
|
181
|
-
end
|
182
|
-
|
183
|
-
def _delete(who, refresh = true)
|
184
|
-
begin
|
185
|
-
$client.person_remove!({ :username => who.username })
|
186
|
-
_clear
|
187
|
-
_update_people if refresh
|
188
|
-
rescue Exception => e
|
189
|
-
_print_msg "Error: Delete: #{$!}"
|
190
|
-
else
|
191
|
-
_print_msg "Person deleted!"
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
def _clear
|
196
|
-
@selected_person = nil
|
197
|
-
(FIELDS + %w(memberid)).each {|n| _get_widget(n).text = "" }
|
198
|
-
_get_widget("status").active = 0
|
199
|
-
_get_widget("past_view").model.clear
|
200
|
-
_get_widget("first_name").grab_focus
|
201
|
-
end
|
202
|
-
|
203
|
-
|
204
|
-
def _save
|
205
|
-
data = {
|
206
|
-
:last_name => _get_widget("last_name").text,
|
207
|
-
:first_name => _get_widget("first_name").text,
|
208
|
-
:rolnr => _get_widget("rolnr").text,
|
209
|
-
:username => _get_widget("username").text,
|
210
|
-
:email => _get_widget("email").text,
|
211
|
-
:address => _get_widget("address").text,
|
212
|
-
:phone => _get_widget("phone").text,
|
213
|
-
:gsm => _get_widget("gsm").text,
|
214
|
-
:status => _get_widget("status").active_iter[1],
|
215
|
-
:memberid => _get_widget("memberid").text
|
216
|
-
}
|
217
|
-
if @selected_person.nil? or @selected_person.username != data[:username]
|
218
|
-
# Indien hij nog niet bestaat, aanmaken in de database
|
219
|
-
begin
|
220
|
-
answer = $client.person_add! data
|
221
|
-
@selected_person = $client.person_lookup("username" => data[:username])[0]
|
222
|
-
iter = _insert_person(@selected_person)
|
223
|
-
@people_view.selection.select_iter(iter)
|
224
|
-
rescue Exception => e
|
225
|
-
_print_msg "Fout: Toevoegen: #{$!}"
|
226
|
-
else
|
227
|
-
_print_msg "Persoon toegevoegd", answer
|
228
|
-
end
|
229
|
-
|
230
|
-
else
|
231
|
-
# Anders-> zorg voor update via people.real_id
|
232
|
-
begin
|
233
|
-
answer = $client.person_update! data
|
234
|
-
@selected_person = $client.person_lookup("username" => data[:username])[0]
|
235
|
-
iter = _insert_person(@selected_person)
|
236
|
-
@people_view.selection.select_iter(iter)
|
237
|
-
rescue Exception => e
|
238
|
-
_print_msg "Fout: Aanpassen: #{$!}"
|
239
|
-
else
|
240
|
-
_print_msg "Persoonsinformatie aangepast", answer
|
241
|
-
end
|
242
|
-
end
|
243
|
-
end
|
244
|
-
|
245
|
-
def _update_people(clear = true)
|
246
|
-
case _get_widget("query").active
|
247
|
-
when 1; sym = :person_debuggers
|
248
|
-
when 2; sym = :person_honorarymembers
|
249
|
-
when 3; sym = :person_members
|
250
|
-
when 4; sym = :person_nonmembers
|
251
|
-
else sym = :person_everybody
|
252
|
-
end
|
253
|
-
|
254
|
-
if clear
|
255
|
-
@people_store.clear
|
256
|
-
r = @people_store.append
|
257
|
-
r[0] = nil
|
258
|
-
r[1] = "Loading..."
|
259
|
-
end
|
260
|
-
people = $client.send(sym)
|
261
|
-
_set_people(people)
|
262
|
-
end
|
263
|
-
|
264
|
-
def _set_people(people, clear = true)
|
265
|
-
people.sort! do |a,b|
|
266
|
-
x = a.last_name <=> b.last_name
|
267
|
-
x == 0 ? a.first_name <=> b.first_name : x
|
268
|
-
end
|
269
|
-
|
270
|
-
@people_view.model = nil
|
271
|
-
@people_store.clear if clear
|
272
|
-
|
273
|
-
people.each do |p|
|
274
|
-
row = @people_store.append
|
275
|
-
row[0] = p
|
276
|
-
row[1] = p.last_name + " " + p.first_name
|
277
|
-
end
|
278
|
-
|
279
|
-
@people_view.model = @people_store
|
280
|
-
end
|
281
|
-
|
282
|
-
def _print_msg (msg, extra_info = nil)
|
283
|
-
puts msg
|
284
|
-
puts " - #{extra_info}" if extra_info
|
285
|
-
@notification_label.text = msg
|
286
|
-
end
|
287
|
-
|
288
|
-
def _insert_person(person)
|
289
|
-
iter = @people_store.iter_first
|
290
|
-
while iter[0].last_name <= person.last_name and iter.next!
|
291
|
-
break if iter[0].username == person.username
|
292
|
-
1
|
293
|
-
end
|
294
|
-
|
295
|
-
p person
|
296
|
-
if iter[0].username == person.username
|
297
|
-
new = iter
|
298
|
-
new[0] = person
|
299
|
-
new[1] = "#{person.last_name} #{person.first_name}"
|
300
|
-
@people_store.row_changed(new.path, new)
|
301
|
-
puts "replaced #{new[1]}, (#{new.path})"
|
302
|
-
else
|
303
|
-
new = @people_store.insert_before(iter)
|
304
|
-
new[0] = person
|
305
|
-
new[1] = "#{person.last_name} #{person.first_name}"
|
306
|
-
@people_store.row_changed(new.path, new)
|
307
|
-
puts "inserted #{new[1]} before #{iter[1]}, (#{new.path})"
|
308
|
-
end
|
309
|
-
|
310
|
-
new
|
311
|
-
end
|
312
|
-
|
313
|
-
def _delete_person(person)
|
314
|
-
iter = @people_store.iter_first
|
315
|
-
while iter[0].last_name <= person.last_name and iter.next!
|
316
|
-
if iter[0].username == person.username
|
317
|
-
@people_store.remove(iter)
|
318
|
-
break
|
319
|
-
end
|
320
|
-
end
|
321
|
-
end
|
322
|
-
|
323
|
-
end
|
324
|
-
|
325
|
-
register_window(MembersWindow)
|
326
|
-
|
327
|
-
end
|
data/lib/ui/OLD_printenwindow.rb
DELETED
@@ -1,329 +0,0 @@
|
|
1
|
-
module Ig3tool
|
2
|
-
|
3
|
-
class PrintenWindow < GladeHelper
|
4
|
-
MENU_PATH = ["Printer", "Printen"]
|
5
|
-
ICON = "stock_print.png"
|
6
|
-
|
7
|
-
begin
|
8
|
-
@@have_amatch = require 'amatch'
|
9
|
-
|
10
|
-
def username_changed
|
11
|
-
@matcher = Amatch.new(@user_entry.text)
|
12
|
-
@credits_list.model.refilter
|
13
|
-
end
|
14
|
-
rescue LoadError => e
|
15
|
-
@@have_amatch = false
|
16
|
-
|
17
|
-
def username_changed
|
18
|
-
@credits_list.model.refilter
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
# Undo klasse
|
23
|
-
class PrintUndo
|
24
|
-
attr_writer :method, :username, :amount, :email, :jobid
|
25
|
-
def initialise
|
26
|
-
# Method can be :none, :adduser, :addcredit, :deluser, :refund
|
27
|
-
@method = :none
|
28
|
-
@username = ""
|
29
|
-
@amount = 0
|
30
|
-
@email = ""
|
31
|
-
@selection = false
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def initialize ()
|
36
|
-
super("printen.glade")
|
37
|
-
|
38
|
-
@notification = @glade.get_widget("notification")
|
39
|
-
|
40
|
-
# PrintKrediet
|
41
|
-
@credits_list = @glade.get_widget("credits_list")
|
42
|
-
@user_entry = @glade.get_widget("user")
|
43
|
-
@refund = @glade.get_widget("refund")
|
44
|
-
|
45
|
-
# Username(PRIMARY), Email, Saldo, People_id
|
46
|
-
model = Gtk::ListStore.new(String)
|
47
|
-
renderer = Gtk::CellRendererText.new
|
48
|
-
@credits_list.insert_column(-1, "Gebruiker", renderer) { |tvc, cell, m, iter|
|
49
|
-
cell.text = iter[0].user
|
50
|
-
}
|
51
|
-
@credits_list.insert_column(-1, "Saldo", renderer) { |tvc, cell, m, iter|
|
52
|
-
cell.text = sprintf("%.2f", iter[0].saldo)
|
53
|
-
}
|
54
|
-
@credits_list.insert_column(-1, "Categorie", renderer) { |tvc, cell, m, iter|
|
55
|
-
cell.text = iter[0].price_category
|
56
|
-
}
|
57
|
-
@credits_list.insert_column(-1, "Email", renderer) { |tvc, cell, m, iter|
|
58
|
-
cell.text = iter[0].email
|
59
|
-
}
|
60
|
-
|
61
|
-
filteredmodel = Gtk::TreeModelFilter.new(model)
|
62
|
-
filteredmodel.set_visible_func do |model, iter|
|
63
|
-
is_user_visible(iter[0].user)
|
64
|
-
end
|
65
|
-
@credits_list.model = filteredmodel
|
66
|
-
|
67
|
-
_show_credits
|
68
|
-
|
69
|
-
@window.show_all
|
70
|
-
|
71
|
-
# PrintLog
|
72
|
-
@log_refund = @glade.get_widget("log_refund")
|
73
|
-
@log_list = @glade.get_widget("log_list")
|
74
|
-
|
75
|
-
# TODO - ADD JOBID IN DE LIJST VOOR REFUND!
|
76
|
-
@log_list.model = Gtk::ListStore.new(String, String, String, String, String, String)
|
77
|
-
# Meerdere selecteerbaar -> Grote refund indien nodig ;)
|
78
|
-
@log_list.selection.mode = Gtk::SELECTION_MULTIPLE
|
79
|
-
log_renderer = Gtk::CellRendererText.new
|
80
|
-
log_renderer2 = Gtk::CellRendererText.new
|
81
|
-
@log_list.insert_column(-1, "Uur", log_renderer) do |tvc, cell, m, iter|
|
82
|
-
cell.text = iter[0].time.strftime('%a %H:%M')
|
83
|
-
end
|
84
|
-
@log_list.insert_column(-1, "User", log_renderer) do |tvc, cell, m, iter|
|
85
|
-
cell.text = iter[0].user
|
86
|
-
end
|
87
|
-
@log_list.insert_column(-1, "Boodschap", log_renderer2) do |tvc, cell, m, iter|
|
88
|
-
cell.text = iter[0].message
|
89
|
-
cell.strikethrough = iter[0].refunded
|
90
|
-
end
|
91
|
-
_show_log
|
92
|
-
|
93
|
-
@window.show_all
|
94
|
-
|
95
|
-
@undo = PrintUndo.new
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
def is_user_visible(username)
|
100
|
-
username.include?(@user_entry.text) if @matcher.nil?
|
101
|
-
end
|
102
|
-
|
103
|
-
def show_user (username = nil)
|
104
|
-
return if username.nil? or username.empty?
|
105
|
-
|
106
|
-
begin
|
107
|
-
user = $client.print_userinfo([ username ])
|
108
|
-
|
109
|
-
@glade.get_widget('user').text = username # Kan username of alias zijn waarop men zoekt
|
110
|
-
if user.nil?
|
111
|
-
@glade.get_widget('saldo').text = '0'
|
112
|
-
@glade.get_widget('email').text = "#{username}@vub.ac.be" # Klaarzetten om toe te voegen
|
113
|
-
@glade.get_widget('status').active = 0
|
114
|
-
@glade.get_widget('delta').grab_focus
|
115
|
-
else
|
116
|
-
@glade.get_widget('saldo').text = sprintf '%.2f', user.saldo
|
117
|
-
@glade.get_widget('email').text = user.email
|
118
|
-
@glade.get_widget('status').active = user.debugger? ? 1 : 0
|
119
|
-
@glade.get_widget('delta').grab_focus
|
120
|
-
end
|
121
|
-
|
122
|
-
rescue Exception => e
|
123
|
-
_print_msg "Fout: Userinfo: #{$!}"
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def activate_user
|
128
|
-
show_user @glade.get_widget("user").text
|
129
|
-
end
|
130
|
-
|
131
|
-
def focus_changed
|
132
|
-
@notification.text = "" if @notification
|
133
|
-
false
|
134
|
-
end
|
135
|
-
|
136
|
-
def errors_changed
|
137
|
-
@credits_list.model.refilter
|
138
|
-
end
|
139
|
-
|
140
|
-
def list_row_activated (view, path, column)
|
141
|
-
show_user @credits_list.model.model.get_iter(path)[0].user
|
142
|
-
end
|
143
|
-
|
144
|
-
def delta_focus_out
|
145
|
-
number_eval_widget(@glade.get_widget("delta"))
|
146
|
-
false
|
147
|
-
end
|
148
|
-
|
149
|
-
def undo_activate_cb
|
150
|
-
# @Undo.method toont de LAATST GEBRUIKTE ACTIE aan
|
151
|
-
case @undo.method
|
152
|
-
when :adduser
|
153
|
-
@undo.method = :none
|
154
|
-
begin
|
155
|
-
answer = $client.print_delaccount!({ :username => @undo.username })
|
156
|
-
@undo.method = :deluser
|
157
|
-
rescue Exception => e
|
158
|
-
_print_msg "Fout: Undo: #{$!}"
|
159
|
-
else
|
160
|
-
_print_msg "Print Account #{@undo.username} werd verwijderd"
|
161
|
-
end
|
162
|
-
when :deluser
|
163
|
-
@undo.method = :none
|
164
|
-
begin
|
165
|
-
answer = $client.print_addaccount!({ :username => @undo.username, :email => @undo.email, :amount => @undo.amount })
|
166
|
-
@undo.method = :adduser
|
167
|
-
rescue Exception => e
|
168
|
-
_print_msg "Fout: Undo: #{$!}"
|
169
|
-
else
|
170
|
-
_print_msg "Print Account #{@undo.username} heraangemaakt met #{@undo.amount} krediet(en)!"
|
171
|
-
end
|
172
|
-
when :addcredit
|
173
|
-
@undo.method = :none
|
174
|
-
begin
|
175
|
-
answer = $client.print_addcredit!({ :username => @undo.username, :email => @undo.email, :amount => - @undo.amount })
|
176
|
-
@undo.method = :addcredit
|
177
|
-
@undo.amount = - @undo.amount
|
178
|
-
rescue Exception => e
|
179
|
-
_print_msg "Fout: Undo: #{$!}"
|
180
|
-
else
|
181
|
-
_print_msg "Print Account #{@undo.username} werd veranderd met #{@undo.amount} krediet(en)"
|
182
|
-
end
|
183
|
-
when :refund
|
184
|
-
@undo.method = :none
|
185
|
-
begin
|
186
|
-
_unrefund @undo.selection
|
187
|
-
rescue Exception => e
|
188
|
-
_print_msg "Fout: Undo: #{$!}"
|
189
|
-
else
|
190
|
-
_print_msg "Het terugbetalen van de Print Job (#{@undo.jobid}) van #{@undo.username} werd ongedaan gemaakt (#{@undo.amount} krediet(en))"
|
191
|
-
end
|
192
|
-
when :unrefund
|
193
|
-
@undo.method = :none
|
194
|
-
begin
|
195
|
-
_refund @undo.selection
|
196
|
-
rescue Exception => e
|
197
|
-
_print_msg "Fout: Undo: #{$!}"
|
198
|
-
else
|
199
|
-
_print_msg "Het terugbetalen van de Print Job (#{@undo.jobid}) van #{@undo.username} werd uitgevoerd (#{@undo.amount} krediet(en))"
|
200
|
-
end
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
def toepassen_activate_cb
|
205
|
-
delta = @glade.get_widget("delta")
|
206
|
-
number_eval_widget(delta)
|
207
|
-
amount = delta.text.to_i
|
208
|
-
username = @glade.get_widget('user').text
|
209
|
-
email = @glade.get_widget('email').text
|
210
|
-
|
211
|
-
unless amount == 0
|
212
|
-
begin
|
213
|
-
# Indien de gebruiker nog niet bestaat, creeer automatisch een account wanneer er
|
214
|
-
# op 'toevoegen krediet' wordt geklikt
|
215
|
-
if !$client.print_userinfo([ username ])
|
216
|
-
$client.print_addaccount!({ :username => username, :email => email })
|
217
|
-
end
|
218
|
-
answer = $client.print_addcredit!({ :username => username, :amount => amount })
|
219
|
-
_print_msg "#{@user_entry.text} Gets #{amount} Credits"
|
220
|
-
rescue Exception => e
|
221
|
-
_print_msg "Fout: Toepassen: #{$!}"
|
222
|
-
end
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
# PrintLog
|
227
|
-
def refresh_clicked
|
228
|
-
_show_credits
|
229
|
-
_show_log
|
230
|
-
end
|
231
|
-
|
232
|
-
def log_list_cursor_changed (view)
|
233
|
-
if selected = view.selection.selected
|
234
|
-
printlog = selected[0]
|
235
|
-
if @refund.sensitive = (printlog.message =~ /printed/)
|
236
|
-
if !printlog.refunded
|
237
|
-
@refund.label = "Terugbetalen"
|
238
|
-
else
|
239
|
-
@refund.label = "Toch betalen"
|
240
|
-
end
|
241
|
-
end
|
242
|
-
end
|
243
|
-
end
|
244
|
-
|
245
|
-
def refund_clicked
|
246
|
-
_refund_selection(@log_list.selection.select_all)
|
247
|
-
end
|
248
|
-
|
249
|
-
def log_list_row_activated (view, path, column)
|
250
|
-
printlog = @log_list.model.get_iter(path)[0]
|
251
|
-
show_user(printlog.user)
|
252
|
-
end
|
253
|
-
|
254
|
-
private
|
255
|
-
|
256
|
-
def _unrefund_selection(selection)
|
257
|
-
if !selection
|
258
|
-
_print_msg "Gelieve eerst een (of meerdere) Print Jobs te selecteren in de lijst"
|
259
|
-
else
|
260
|
-
selection.each { |model, path, iter| _unrefund(iter)}
|
261
|
-
_print_msg "Print Job(s) opnieuw betaald"
|
262
|
-
@undo.selection = selection
|
263
|
-
@undo.method = :unrefund
|
264
|
-
end
|
265
|
-
end
|
266
|
-
|
267
|
-
def _unrefund(selected)
|
268
|
-
begin
|
269
|
-
answer = $client.print_unrefund!({ :jobid => selected.jobid }) # TODO-CHECK
|
270
|
-
@log_list.model.row_changed selection.path, selection # Zorgt voor row update appearance
|
271
|
-
@refund.label = "Terugbetalen"
|
272
|
-
rescue Exception => e
|
273
|
-
_print_msg "Fout: Unrefund: #{$!}"
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
|
-
def _refund_selection(selection)
|
278
|
-
if !selection
|
279
|
-
_print_msg "Gelieve eerst een (of meerdere) Print Jobs te selecteren in de lijst"
|
280
|
-
else
|
281
|
-
selection.each { |model, path, iter| _refund(iter) }
|
282
|
-
_print_msg "Print Job(s) terugbetaald"
|
283
|
-
@undo.selection = selection
|
284
|
-
@undo.method = :refund
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
def _refund(selected)
|
289
|
-
begin
|
290
|
-
answer = $client.print_refund!({ :jobid => selected.jobid })
|
291
|
-
@log_list.model.row_changed selection.path, selection
|
292
|
-
@refund.label = "Toch betalen"
|
293
|
-
rescue Exception => e
|
294
|
-
_print_msg "Fout: Refund: #{$!}"
|
295
|
-
end
|
296
|
-
end
|
297
|
-
|
298
|
-
def _show_credits
|
299
|
-
@credits_list.model.model.clear
|
300
|
-
begin
|
301
|
-
# Haal alle printusers hun print-info op
|
302
|
-
answer = $client.print_credits
|
303
|
-
answer.each { |l| @credits_list.model.model.append[0] = l }
|
304
|
-
rescue Exception => e
|
305
|
-
_print_msg "Fout: Credits: #{$!}"
|
306
|
-
end
|
307
|
-
end
|
308
|
-
|
309
|
-
def _show_log
|
310
|
-
@log_list.model.clear
|
311
|
-
begin
|
312
|
-
# Haal de laatste 50 Printjobs op
|
313
|
-
answer = $client.print_log( [ 50 ] )
|
314
|
-
answer.each { |l| @log_list.model.append[0] = l }
|
315
|
-
rescue Exception => e
|
316
|
-
_print_msg "Fout: Log: #{$!}"
|
317
|
-
end
|
318
|
-
end
|
319
|
-
|
320
|
-
def _print_msg (msg)
|
321
|
-
puts msg
|
322
|
-
@notification.text = msg
|
323
|
-
end
|
324
|
-
|
325
|
-
end
|
326
|
-
|
327
|
-
register_window(PrintenWindow)
|
328
|
-
|
329
|
-
end
|