1
1
# -*- coding: UTF-8 -*-
3
__revision__ = '$Id: main_treeview.py 1456 2010-10-03 11:41:49Z mikej06 $'
3
__revision__ = '$Id: main_treeview.py 1572 2011-08-23 18:47:22Z mikej06 $'
5
# Copyright (c) 2005-2009 Vasco Nunes, Piotr Ożarowski
5
# Copyright (c) 2005-2011 Vasco Nunes, Piotr Ożarowski
7
7
# This program is free software; you can redistribute it and/or modify
8
8
# it under the terms of the GNU General Public License as published by
28
27
from sqlalchemy import select, desc
29
28
from sqlalchemy.sql.expression import Select
35
33
log = logging.getLogger("Griffith")
35
def on_tree_selection(tree_selection, self):
36
counts = tree_selection.count_selected_rows()
37
treeview_selection_on_event(self, self.widgets['treeview'])
38
treemodel, selected = tree_selection.get_selected_rows()
39
self.selected_iter = [treemodel.get_iter(path) for path in selected]
43
self.widgets['menu']['clone'].set_sensitive(True)
44
self.widgets['menu']['make_cover'].set_sensitive(True)
45
self.widgets['menu']['loan'].set_sensitive(True)
46
self.widgets['menu']['edit'].set_sensitive(True)
47
self.widgets['popups']['edit'].set_sensitive(True)
48
self.widgets['popups']['loan'].set_sensitive(True)
49
self.widgets['popups']['clone'].set_sensitive(True)
50
self.widgets['popups']['print_cover'].set_sensitive(True)
53
# lets make some options unavailable when multiselction is active. for now.
55
self.widgets['menu']['clone'].set_sensitive(False)
56
self.widgets['menu']['make_cover'].set_sensitive(False)
57
self.widgets['menu']['loan'].set_sensitive(False)
58
self.widgets['menu']['edit'].set_sensitive(False)
59
self.widgets['popups']['edit'].set_sensitive(False)
60
self.widgets['popups']['loan'].set_sensitive(False)
61
self.widgets['popups']['clone'].set_sensitive(False)
62
self.widgets['popups']['print_cover'].set_sensitive(False)
63
treeview_clicked(self)
65
def foreach_treeview_selected(model, path, iter, selected):
66
selected.append(model.get_value(iter, 0))
68
def treeview_selection_on_event(self, treeview, iter = False):
70
treeview.get_selection().selected_foreach(foreach_treeview_selected, self.selected)
38
73
def treeview_clicked(self):
39
74
if self.initialized is False:
42
treeselection = self.widgets['treeview'].get_selection()
43
(tmp_model, tmp_iter) = treeselection.get_selected()
45
log.info('Treeview: no selection')
47
number = tmp_model.get_value(tmp_iter, 0)
48
movie = self.db.session.query(db.Movie).filter_by(number=number).first()
50
log.info("Treeview: movie doesn't exists (number=%s)", number)
51
elif self.widgets['poster_window'].flags() & gtk.VISIBLE == gtk.VISIBLE:
76
if len(self.selected) == 1:
77
movie = self.db.session.query(db.Movie).filter_by(number=int(self.selected[0])).first()
78
if self.widgets['poster_window'].flags() & gtk.VISIBLE == gtk.VISIBLE:
52
79
# poster window is visible
54
81
if movie.poster_md5:
57
84
filename = gutils.get_defaultimage_fname(self)
58
85
self.widgets['big_poster'].set_from_file(filename)
59
for ext in self.extensions:
60
ext.maintree_clicked(treeselection, movie)
86
#for ext in self.extensions:
87
#ext.maintree_clicked(treeselection, movie)
61
88
set_details(self, movie)
66
92
def set_details(self, item=None):#{{{
140
166
w['condition'].set_text('')
141
167
if 'region' in item and item['region']:
142
if str(item['region']) in [str(i) for i in range(len(self._regions))]:
143
w['region'].set_markup("<i>%s</i>" % gutils.html_encode(item['region']))
144
if int(item['region']) < 9:
168
if item['region'] < len(self._regions):
169
w['region'].set_markup("<i>%s</i>" % gutils.html_encode(self._regions[item['region']]))
170
if int(item['region']) < 12:
145
171
self.widgets['tooltips'].set_tip(w['region'], self._regions[int(item['region'])])
147
173
log.info("Wrong value in 'region' field (movie_id=%s, region=%s)" % (item['movie_id'], item['region']))
298
325
self.loans_treemodel.set_value(myiter, 1, str(loan.return_date)[:10])
300
327
self.loans_treemodel.set_value(myiter, 1, "---")
301
person = self.db.session.query(db.Person.name).filter_by(person_id=loan.person.person_id).first()
302
self.loans_treemodel.set_value(myiter, 2, person.name)
329
person = self.db.session.query(db.Person.name).filter_by(person_id=loan.person.person_id).first()
330
self.loans_treemodel.set_value(myiter, 2, person.name)
304
332
# volumes/collections
305
333
if 'volume_id' in item and item['volume_id'] > 0:
533
561
treemodel.set_value(iter, 5, movie.genre)
534
562
treemodel.set_value(iter, 6, movie.seen)
535
563
if movie.year is not None and (isinstance(movie.year, int) or isinstance(movie.year, long)):
536
treemodel.set_value(iter, 7, movie.year)
564
treemodel.set_value(iter, 7, str(movie.year))
537
565
if movie.runtime is not None and (isinstance(movie.runtime, int) or isinstance(movie.runtime, long)):
538
566
treemodel.set_value(iter, 8, '%003d' % movie.runtime + _(' min'))
539
567
if movie.rating is not None and (isinstance(movie.rating, int) or isinstance(movie.rating, long)):
548
576
def select(self, iter, ensurevisible = True): #{{{
549
self.widgets['treeview'].get_selection().select_iter(iter)
551
self.widgets['treeview'].scroll_to_cell(self.treemodel.get_path(iter))
578
self.widgets['treeview'].get_selection().select_iter(iter)
580
self.widgets['treeview'].scroll_to_cell(self.treemodel.get_path(iter))
582
self.widgets['treeview'].get_selection().unselect_all()
552
583
self.treeview_clicked()