def delete_poster(self): movie = self.db.Movie.get_by(movie_id=self._movie_id) if not movie: self.debug.show("Can't delete unknown movie's poster!") return False response = gutils.question(self, _("Are you sure you want to delete this poster?"), 1, self.widgets['window']) if response==-8: image_path = os.path.join(self.locations['images'], 'default.png') handler = self.widgets['movie']['picture'].set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(image_path)) gutils.garbage(handler) update_tree_thumbnail(self, os.path.join(self.locations['images'], 'default_thumbnail.png')) # update in database old_image = movie.image movie.image = None movie.update() movie.flush() self.update_statusbar(_("Image has been updated")) self.widgets['add']['delete_poster'].set_sensitive(False) self.widgets['menu']['delete_poster'].set_sensitive(False) self.widgets['movie']['picture_button'].set_sensitive(False) if old_image: delete.delete_poster(self, old_image) else: pass
def delete_poster(self, movie_id=None): if movie_id is None: movie_id = self._movie_id session = self.db.Session() movie = session.query(db.Movie).filter_by(movie_id=movie_id).first() if not movie: log.error("Cannot delete unknown movie's poster!") return False if gutils.question(_("Are you sure you want to delete this poster?"), self.widgets["window"]): # update in database delete.delete_poster(self, movie.poster_md5) movie.poster_md5 = None session.add(movie) try: session.commit() except Exception, e: session.rollback() log.error("cannot delete poster: %s" % e) return False if self._movie_id == movie_id: # only if the current selected movie is the same like that one for removing poster image_path = gutils.get_defaultimage_fname(self) handler = self.widgets["movie"]["picture"].set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(image_path)) gutils.garbage(handler) self.widgets["add"]["delete_poster"].set_sensitive(False) self.widgets["movie"]["picture_button"].set_sensitive(False) # always refresh the treeview entry update_tree_thumbnail(self, gutils.get_defaultthumbnail_fname(self)) self.update_statusbar(_("Image has been updated")) return True
def update_tree_thumbnail(self, t_image_path): treeselection = self.main_treeview.get_selection() (tmp_model, tmp_iter) = treeselection.get_selected() self.Image.set_from_file(t_image_path) pixbuf = self.Image.get_pixbuf() self.treemodel.set_value(tmp_iter, 2, pixbuf) gutils.garbage(pixbuf)
def delete_poster(self): session = self.db.Session() movie = session.query(db.Movie).filter_by(movie_id=self._movie_id).first() if not movie: log.error("Cannot delete unknown movie's poster!") return False if gutils.question(_("Are you sure you want to delete this poster?"), self.widgets['window']): image_path = gutils.get_defaultimage_fname(self) handler = self.widgets['movie']['picture'].set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(image_path)) gutils.garbage(handler) update_tree_thumbnail(self, gutils.get_defaultthumbnail_fname(self)) # update in database delete.delete_poster(self, movie.poster_md5) movie.poster_md5 = None session.add(movie) try: session.commit() except Exception, e: session.rollback() log.error("cannot delete poster: %s" % e) return False self.update_statusbar(_("Image has been updated")) self.widgets['add']['delete_poster'].set_sensitive(False) self.widgets['movie']['picture_button'].set_sensitive(False)
def delete_poster(self): session = self.db.Session() movie = session.query(db.Movie).filter_by(movie_id=self._movie_id).first() if not movie: log.error("Cannot delete unknown movie's poster!") return False response = gutils.question(_("Are you sure you want to delete this poster?"), True, self.widgets["window"]) if response == -8: image_path = os.path.join(self.locations["images"], "default.png") handler = self.widgets["movie"]["picture"].set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(image_path)) gutils.garbage(handler) update_tree_thumbnail(self, os.path.join(self.locations["images"], "default_thumbnail.png")) # update in database delete.delete_poster(self, movie.poster_md5) movie.poster_md5 = None session.add(movie) try: session.commit() except Exception, e: session.rollback() log.error("cannot delete poster: %s" % e) return False self.update_statusbar(_("Image has been updated")) self.widgets["add"]["delete_poster"].set_sensitive(False) self.widgets["menu"]["delete_poster"].set_sensitive(False) self.widgets["movie"]["picture_button"].set_sensitive(False)
def delete_poster(self, movie_id=None): if movie_id is None: movie_id = self._movie_id session = self.db.Session() movie = session.query(db.Movie).filter_by(movie_id=movie_id).first() if not movie: log.error("Cannot delete unknown movie's poster!") return False if gutils.question(_("Are you sure you want to delete this poster?"), self.widgets['window']): # update in database delete.delete_poster(self, movie.poster_md5) movie.poster_md5 = None session.add(movie) try: session.commit() except Exception, e: session.rollback() log.error("cannot delete poster: %s" % e) return False if self._movie_id == movie_id: # only if the current selected movie is the same like that one for removing poster image_path = gutils.get_defaultimage_fname(self) handler = self.widgets['movie']['picture'].set_from_pixbuf( gtk.gdk.pixbuf_new_from_file(image_path)) gutils.garbage(handler) self.widgets['add']['delete_poster'].set_sensitive(False) self.widgets['movie']['picture_button'].set_sensitive(False) # always refresh the treeview entry update_tree_thumbnail(self, gutils.get_defaultthumbnail_fname(self)) self.update_statusbar(_("Image has been updated")) return True
def change_poster_new_movie(self, number, filename): try: handler = self.Image.set_from_file(filename) pixbuf = self.Image.get_pixbuf() handler = self.widgets['add']['picture'].set_from_pixbuf(pixbuf.scale_simple(100, 140, 3)) gutils.garbage(handler) self.widgets['add']['image'].set_text(filename) return True except: image = gutils.get_defaultimage_fname(self) handler = self.Image.set_from_file(image) handler = self.widgets['add']['picture'].set_from_pixbuf(self.Image.get_pixbuf()) gutils.garbage(handler) return False
def clear_details(self): plot_buffer = self.e_plot.get_buffer() obs_buffer = self.e_obs.get_buffer() with_buffer = self.e_with.get_buffer() self.e_number.set_text("") self.e_original_title.set_text("") self.e_title.set_text("") self.e_director.set_text("") plot_buffer.set_text("") self.e_year.set_text("") self.e_runtime.set_text("") with_buffer.set_text("") self.e_country.set_text("") self.e_genre.set_text("") self.e_classification.set_text("") self.e_studio.set_text("") self.e_site.set_text("") obs_buffer.set_text("") self.e_imdb.set_text("") self.e_trailer.set_text("") self.e_discs.set_text("1") self.e_color.set_active(0) self.e_condition.set_active(0) self.e_layers.set_active(0) self.e_region.set_active(0) self.e_media.set_active(0) self.e_volume_combo.set_active(0) self.e_collection_combo.set_active(0) #self.e_picture.clear() self.rating_slider.set_value(0) # languages - remove old widgets for i in self.e_lang_vbox.get_children(): i.destroy() # tags - clear tag selection for i in self.e_tag_vbox.get_children(): i.set_active(False) try: rimage = int(str(self.config.get('rating_image'))) except: rimage = 0 if rimage: prefix = "" else: prefix = "meter" image = self.locations['images'] + "/%s00.png"%prefix handler = self.image_rating.set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(image)) gutils.garbage(handler)
def delete_poster(self): m_id, m_iter = self.get_maintree_selection() poster = self.db.select_movie_by_num(m_id)[0]['image'] response = gutils.question(self, _("Are you sure you want to delete this poster?"), 1, self.main_window) if response==-8: image_path = self.locations['images'] + "/default.png" handler = self.e_picture.set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(image_path)) gutils.garbage(handler) update_tree_thumbnail(self, self.locations['images'] + "/default_thumbnail.png") m_id = self.get_maintree_selection() update.clear_image(self, m_id[0]) self.delete_poster.set_sensitive(False) self.zoom_poster.set_sensitive(False) delete.delete_poster(self, poster) else: pass
def change_poster_new_movie(self, number, filename): try: handler = self.Image.set_from_file(filename) pixbuf = self.Image.get_pixbuf() handler = self.widgets['add']['picture'].set_from_pixbuf( pixbuf.scale_simple(100, 140, 3)) gutils.garbage(handler) self.widgets['add']['image'].set_text(filename) return True except: image = gutils.get_defaultimage_fname(self) handler = self.Image.set_from_file(image) handler = self.widgets['add']['picture'].set_from_pixbuf( self.Image.get_pixbuf()) gutils.garbage(handler) return False
def change_rating_from_slider(self): rating = int(self.rating_slider.get_value()) self.image_rating.show() try: rimage = int(str(self.config.get('rating_image'))) except: rimage = 0 if rimage: prefix = "" else: prefix = "meter" rating_file = "%s/%s0%d.png" % (self.locations['images'], prefix, rating) handler = self.image_rating.set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(rating_file)) gutils.garbage(handler) self.db.cursor.execute( "UPDATE movies SET rating = '" +str(int(self.rating_slider.get_value()))+"' WHERE number = '" + self.e_number.get_text() +"'")
def get_poster(self, f, result, current_poster): from widgets import reconnect_add_signals if f is None: treeselection = self.widgets['results']['treeview'].get_selection() (tmp_model, tmp_iter) = treeselection.get_selected() if tmp_iter is None: return False f = int(tmp_model.get_value(tmp_iter, 0)) self.widgets['results']['window'].hide() file_to_copy = tempfile.mktemp(suffix=self.widgets['movie']['number'].get_text(), \ dir=self.locations['temp']) file_to_copy += ".jpg" try: progress = movie.Progress(self.widgets['window'],_("Fetching poster"),_("Wait a moment")) retriever = movie.Retriever(result[f].ImageUrlLarge, self.widgets['window'], progress, file_to_copy) retriever.start() while retriever.isAlive(): progress.pulse() if progress.status: retriever.suspend() while gtk.events_pending(): gtk.main_iteration() progress.close() urlcleanup() except: gutils.warning(self, _("Sorry. A connection error was occurred.")) if os.path.isfile(file_to_copy): handler = self.widgets['big_poster'].set_from_file(file_to_copy) gutils.garbage(handler) try: im = Image.open(file_to_copy) except IOError: self.debug.show("failed to identify %s"%file_to_copy) else: if im.format == "GIF": gutils.warning(self, _("Sorry. This poster image format is not supported.")) os.remove(file_to_copy) reconnect_add_signals(self) return self.widgets['poster_window'].show() self.widgets['poster_window'].move(0,0) response = gutils.question(self, \ _("Do you want to use this poster instead?"), \ 1, self.widgets['window']) if response == -8: self.debug.show("Using fetched poster, updating and removing old one from disk.") update_image(self, self.widgets['movie']['number'].get_text(), file_to_copy) else: self.debug.show("Reverting to previous poster and deleting new one from disk.") try: os.remove(file_to_copy) except: self.debug.show("no permission for %s"%file_to_copy) self.widgets['poster_window'].hide() else: gutils.warning(self, _("Sorry. This movie is listed but have no poster available at Amazon.com.")) reconnect_add_signals(self)
def set_details(self, item=None):#{{{ from loan import get_loan_info, get_loan_history if item is None: item = {} if item.has_key('movie_id') and item['movie_id']: self._movie_id = item['movie_id'] else: self._movie_id = None w = self.widgets['movie'] if item.has_key('number') and item['number']: w['number'].set_text(str(int(item['number']))) else: w['number'].set_text('') if item.has_key('title') and item['title']: w['title'].set_markup("<b><span size='large'>%s</span></b>" % gutils.html_encode(item['title'])) else: w['title'].set_text('') if item.has_key('o_title') and item['o_title']: w['o_title'].set_markup("<span size='medium'><i>%s</i></span>" % gutils.html_encode(item['o_title'])) else: w['o_title'].set_text('') if item.has_key('director') and item['director']: w['director'].set_markup("<i>%s</i>" % gutils.html_encode(item['director'])) else: w['director'].set_text('') if item.has_key('plot') and item['plot']: w['plot'].set_text(str(item['plot'])) else: w['plot'].set_text('') if item.has_key('year') and item['year']: w['year'].set_text(str(item['year'])) else: w['year'].set_text('') if item.has_key('runtime') and item['runtime']: w['runtime'].set_text(str(int(item['runtime']))) else: w['runtime'].set_text('x') if item.has_key('cast') and item['cast']: w['cast'].set_text(str(item['cast'])) else: w['cast'].set_text('') if item.has_key('country') and item['country']: w['country'].set_markup("<i>%s</i>" % gutils.html_encode(item['country'])) else: w['country'].set_text('') if item.has_key('genre') and item['genre']: w['genre'].set_markup("<i>%s</i>" % gutils.html_encode(item['genre'])) else: w['genre'].set_text('') if item.has_key('cond') and item['cond']: if str(item['cond']) in [ str(i) for i in range(len(self._conditions)) ]: w['condition'].set_markup("<i>%s</i>" % self._conditions[item['cond']]) else: w['condition'].set_text('') self.debug.show("Wrong value in 'condition' field (movie_id=%s, cond=%s)" % (item['movie_id'], item['cond'])) else: w['condition'].set_text('') if item.has_key('region') and item['region']: if str(item['region']) in [ str(i) for i in range(len(self._regions)) ]: w['region'].set_markup("<i>%s</i>" % gutils.html_encode(item['region'])) if int(item['region']) < 9: self.widgets['tooltips'].set_tip(w['region'], self._regions[int(item['region'])]) else: self.debug.show("Wrong value in 'region' field (movie_id=%s, region=%s)" % (item['movie_id'], item['region'])) w['region'].set_text('') self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A else: w['region'].set_text('') self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A if item.has_key('layers') and item['layers']: if str(item['layers']) in [ str(i) for i in range(len(self._layers)) ]: w['layers'].set_markup("<i>%s</i>" % self._layers[item['layers']]) else: self.debug.show("Wrong value in 'layers' field (movie_id=%s, layers=%s)" % (item['movie_id'], item['layers'])) w['layers'].set_text('') else: w['layers'].set_text('') if item.has_key('color') and item['color']: if str(item['color']) in [ str(i) for i in range(len(self._colors)) ]: w['color'].set_markup("<i>%s</i>" % self._colors[item['color']]) else: self.debug.show("Wrong value in 'color' field (movie_id=%s, color=%s)" % (item['movie_id'], item['color'])) w['color'].set_markup('') else: w['color'].set_markup('') if item.has_key('classification') and item['classification']: w['classification'].set_markup("<i>%s</i>" % gutils.html_encode(item['classification'])) else: w['classification'].set_text('') if item.has_key('studio') and item['studio']: w['studio'].set_markup("<i>%s</i>" % gutils.html_encode(item['studio'])) else: w['studio'].set_text('') if item.has_key('o_site') and item['o_site']: self._o_site_url = str(item['o_site']) w['go_o_site_button'].set_sensitive(True) else: self._o_site_url = None w['go_o_site_button'].set_sensitive(False) if item.has_key('site') and item['site']: self._site_url = str(item['site']) w['go_site_button'].set_sensitive(True) else: self._site_url = None w['go_site_button'].set_sensitive(False) if item.has_key('trailer') and item['trailer']: self._trailer_url = str(item.trailer) w['go_trailer_button'].set_sensitive(True) else: self._trailer_url = None w['go_trailer_button'].set_sensitive(False) if item.has_key('seen') and item['seen'] == True: w['seen_icon'].set_from_file(os.path.join(self.locations['images'], 'seen.png')) else: w['seen_icon'].set_from_file(os.path.join(self.locations['images'], 'unseen.png')) if item.has_key('notes') and item['notes']: w['notes'].set_text(str(item.notes)) else: w['notes'].set_text('') tmp = '' if item.has_key('media_num') and item['media_num']: tmp = str(item.media_num) else: tmp = '0' if item.has_key('medium_id') and item['medium_id']: if item.medium is not None: tmp += ' x ' + item.medium.name else: pass w['medium'].set_markup("<i>%s</i>" % gutils.html_encode(tmp)) if item.has_key('vcodec_id'): if item.vcodec is not None: w['vcodec'].set_markup("<i>%s</i>" % gutils.html_encode(item.vcodec.name)) else: w['vcodec'].set_text('') else: w['vcodec'].set_text('') # poster if item.has_key('image') and item['image']: tmp_dest = self.locations['posters'] tmp_img = os.path.join(tmp_dest, "m_%s.jpg"%item['image']) tmp_img2 = os.path.join(tmp_dest, "%s.jpg"%item['image']) if os.path.isfile(tmp_img2): image_path = tmp_img self.widgets['add']['delete_poster'].set_sensitive(True) self.widgets['menu']['delete_poster'].set_sensitive(True) w['picture_button'].set_sensitive(True) else: image_path = os.path.join(self.locations['images'], 'default.png') self.widgets['add']['delete_poster'].set_sensitive(False) self.widgets['menu']['delete_poster'].set_sensitive(False) w['picture_button'].set_sensitive(False) # lets see if we have a scaled down medium image already created if not os.path.isfile(image_path): # if not, lets make one for future use :D original_image = os.path.join(tmp_dest, "%s.jpg"%item.image) if os.path.isfile(original_image): gutils.make_medium_image(self, "%s.jpg"%item.image) else: image_path = os.path.join(self.locations['images'], 'default.png') w['picture_button'].set_sensitive(False) w['picture'].set_from_file(image_path) # ratig rimage = int(self.config.get('rating_image', 0)) if rimage: prefix = '' else: prefix = 'meter' if item.has_key('rating') and item['rating']: rating_file = "%s/%s0%d.png" % (self.locations['images'], prefix, item['rating']) else: rating_file = "%s/%s0%d.png" % (self.locations['images'], prefix, 0) handler = w['image_rating'].set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(rating_file)) gutils.garbage(handler) # check loan status and adjust buttons and history box if item.has_key('loaned') and item['loaned'] == True: self.widgets['popups']['loan'].set_sensitive(False) self.widgets['popups']['email'].set_sensitive(True) self.widgets['popups']['return'].set_sensitive(True) self.widgets['menu']['loan'].set_sensitive(False) self.widgets['menu']['email'].set_sensitive(True) self.widgets['menu']['return'].set_sensitive(True) w['loan_button'].set_sensitive(False) w['email_reminder_button'].set_sensitive(True) w['return_button'].set_sensitive(True) data_loan = get_loan_info(self.db, collection_id=item['collection_id'], volume_id=item['volume_id'], movie_id=item['movie_id']) if data_loan is None: item.loaned = False else: data_person = self.db.Person.get_by(person_id=data_loan.person.person_id) self.person_name = str(data_person.name) self.person_email = str(data_person.email) self.loan_date = str(data_loan.date) w['loan_info'].set_use_markup(False) w['loan_info'].set_label(_("This movie has been loaned to ") + self.person_name + _(" on ") + self.loan_date[:10]) if item.has_key('loaned') and item['loaned'] != True: # "loaned" status can be changed above, so don't use "else:" in this line self.widgets['popups']['loan'].set_sensitive(True) self.widgets['popups']['email'].set_sensitive(False) self.widgets['popups']['return'].set_sensitive(False) self.widgets['menu']['loan'].set_sensitive(True) self.widgets['menu']['email'].set_sensitive(False) self.widgets['menu']['return'].set_sensitive(False) w['return_button'].set_sensitive(False) w['email_reminder_button'].set_sensitive(False) w['loan_button'].set_sensitive(True) w['loan_info'].set_markup("<b>%s</b>" % _("Movie not loaned")) # loan history self.loans_treemodel.clear() if item.has_key('collection_id') or item.has_key('volume_id') or item.has_key('movie_id'): loans = get_loan_history(self.db, collection_id=item['collection_id'], volume_id=item['volume_id'], movie_id=item['movie_id']) for loan in loans: myiter = self.loans_treemodel.append(None) self.loans_treemodel.set_value(myiter, 0,'%s' % str(loan.date)[:10]) if loan.return_date and loan.return_date != '': self.loans_treemodel.set_value(myiter, 1, str(loan.return_date)[:10]) else: self.loans_treemodel.set_value(myiter, 1, "---") person = self.db.Person.get_by(person_id=loan.person.person_id) self.loans_treemodel.set_value(myiter, 2, person.name) # volumes/collections if item.has_key('volume_id') and item['volume_id']>0: if item.has_key('volume') and item['volume']: w['volume'].set_markup("<b>%s</b>" % gutils.html_encode(item['volume'].name)) w['show_volume_button'].set_sensitive(True) else: w['volume'].set_text('') w['show_volume_button'].set_sensitive(False) else: w['volume'].set_text('') w['show_volume_button'].set_sensitive(False) if item.has_key('collection_id') and item['collection_id']>0: if item.has_key('collection') and item['collection']: w['collection'].set_markup("<b>%s</b>" % gutils.html_encode(item['collection'].name)) w['show_collection_button'].set_sensitive(True) else: w['collection'].set_text('') w['show_collection_button'].set_sensitive(False) else: w['collection'].set_text('') w['show_collection_button'].set_sensitive(False) # languages for i in w['audio_vbox'].get_children(): i.destroy() for i in w['subtitle_vbox'].get_children(): i.destroy() if item.has_key('languages') and len(item['languages'])>0: for i in item['languages']: if i.type == 3: # subtitles if i.subformat: tmp = "%s - %s" % (i.language.name, i.subformat.name) else: tmp = "%s" % i.language.name w['subtitle_vbox'].pack_start(gtk.Label(tmp)) else: language = i.language.name if i.type is not None and len(self._lang_types[i.type])>0: language += " <i>%s</i>" % self._lang_types[i.type] tmp = '' if i.achannel: tmp = i.achannel.name if i.acodec: if len(tmp)>0: tmp += ", %s" % i.acodec.name else: tmp = i.acodec.name if len(tmp)>0: tmp = "%s (%s)" % (language, tmp) else: tmp = language widget = gtk.Label(tmp) widget.set_use_markup(True) w['audio_vbox'].pack_start(widget) w['audio_vbox'].show_all() w['subtitle_vbox'].show_all() #tags if item.has_key('tags'): tmp = '' for tag in item['tags']: tmp += "%s, " % tag.name tmp = tmp[:-2] # cut last comma w['tags'].set_text(tmp)
def get_poster(self, f, result, current_poster): if f == None: treeselection = self.results_treeview.get_selection() (tmp_model, tmp_iter) = treeselection.get_selected() f = int(tmp_model.get_value(tmp_iter, 0)) self.w_results.hide() file_to_copy = tempfile.mktemp(suffix=self.e_number.get_text(), prefix='poster_', \ dir=os.path.join(self.griffith_dir, "posters")) file_to_copy += ".jpg" try: progress = movie.Progress(self.main_window,_("Fetching poster"),_("Wait a moment")) retriever = movie.Retriever(result[f].ImageUrlLarge, self.main_window, progress, file_to_copy) retriever.start() while retriever.isAlive(): progress.pulse() if progress.status: retriever.suspend() while gtk.events_pending(): gtk.main_iteration() progress.close() urlcleanup() except: gutils.warning(self, _("Sorry. A connection error was occurred.")) self.debug.show(file_to_copy) if os.path.isfile(file_to_copy): handler = self.big_poster.set_from_file(file_to_copy) gutils.garbage(handler) try: im = Image.open(file_to_copy) except IOError: self.debug.show("failed to identify %s"%file_to_copy) else: if im.format == "GIF": gutils.warning(self, _("Sorry. This poster image format is not supported.")) os.remove(file_to_copy) return self.poster_window.show() self.poster_window.move(0,0) response = \ gutils.question(self, \ _("Do you want to use this poster instead?"), \ 1, self.main_window) if response == -8: self.debug.show("Using new fetched poster, updating and removing old one from disk.") update.update_image(self, os.path.basename(file_to_copy), self.e_number.get_text()) gutils.make_thumbnail(self, '%s' % os.path.basename(file_to_copy)) gutils.make_medium_image(self, '%s' % os.path.basename(file_to_copy)) update_tree_thumbnail(self, '%s/posters/t_%s' % (self.griffith_dir, \ os.path.basename(file_to_copy))) self.e_picture.set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(os.path.join(self.griffith_dir, "posters/m_%s"%os.path.basename(file_to_copy)))) delete.delete_poster(self, current_poster) else: self.debug.show("Reverting to previous poster and deleting new one from disk.") try: os.remove(file_to_copy) except: self.debug.show("no permission for %s"%file_to_copy) self.poster_window.hide() else: gutils.warning(self, _("Sorry. This movie is listed but have no poster available at Amazon.com."))
def set_details(self, item=None):#{{{ if item is None: item = {} if 'movie_id' in item and item['movie_id']: self._movie_id = item['movie_id'] else: self._movie_id = None w = self.widgets['movie'] if 'number' in item and item['number']: w['number'].set_text(str(int(item['number']))) else: w['number'].set_text('') if 'title' in item and item['title']: w['title'].set_markup("<b><span size='large'>%s</span></b>" % gutils.html_encode(item['title'])) else: w['title'].set_text('') if 'o_title' in item and item['o_title']: w['o_title'].set_markup("<span size='medium'><i>%s</i></span>" % gutils.html_encode(item['o_title'])) else: w['o_title'].set_text('') if 'director' in item and item['director']: w['director'].set_markup("<i>%s</i>" % gutils.html_encode(item['director'])) else: w['director'].set_text('') if 'plot' in item and item['plot']: w['plot'].set_text(str(item['plot'])) else: w['plot'].set_text('') if 'year' in item and item['year']: w['year'].set_text(str(item['year'])) else: w['year'].set_text('') if 'resolution' in item and item['resolution']: if self.config.get('use_resolution_alias', True): w['resolution'].set_text(item['resolution']) elif 'height' in item and item['height'] and 'width' in item and item['width']: w['resolution'].set_text("%dx%d" % (item['width'], item['height'])) else: # fallback to 'resolution' w['resolution'].set_text(item['resolution']) else: w['resolution'].set_text('') pass if 'runtime' in item and item['runtime']: w['runtime'].set_text(str(int(item['runtime']))) else: w['runtime'].set_text('x') if 'cameraman' in item and item['cameraman']: w['cameraman'].set_markup("<i>%s</i>" % gutils.html_encode(item['cameraman'])) else: w['cameraman'].set_text('') if 'screenplay' in item and item['screenplay']: w['screenplay'].set_markup("<i>%s</i>" % gutils.html_encode(item['screenplay'])) else: w['screenplay'].set_text('') if 'cast' in item and item['cast']: w['cast'].set_text(str(item['cast'])) else: w['cast'].set_text('') if 'country' in item and item['country']: w['country'].set_markup("<i>%s</i>" % gutils.html_encode(item['country'])) else: w['country'].set_text('') if 'genre' in item and item['genre']: w['genre'].set_markup("<i>%s</i>" % gutils.html_encode(item['genre'])) else: w['genre'].set_text('') if 'cond' in item and item['cond']: if str(item['cond']) in [str(i) for i in range(len(self._conditions))]: w['condition'].set_markup("<i>%s</i>" % self._conditions[item['cond']]) else: w['condition'].set_text('') log.info("Wrong value in 'condition' field (movie_id=%s, cond=%s)" % (item['movie_id'], item['cond'])) else: w['condition'].set_text('') if 'region' in item and item['region']: if str(item['region']) in [str(i) for i in range(len(self._regions))]: w['region'].set_markup("<i>%s</i>" % gutils.html_encode(item['region'])) if int(item['region']) < 9: self.widgets['tooltips'].set_tip(w['region'], self._regions[int(item['region'])]) else: log.info("Wrong value in 'region' field (movie_id=%s, region=%s)" % (item['movie_id'], item['region'])) w['region'].set_text('') self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A else: w['region'].set_text('') self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A if 'layers' in item and item['layers']: if str(item['layers']) in [str(i) for i in range(len(self._layers))]: w['layers'].set_markup("<i>%s</i>" % self._layers[item['layers']]) else: log.info("Wrong value in 'layers' field (movie_id=%s, layers=%s)" % (item['movie_id'], item['layers'])) w['layers'].set_text('') else: w['layers'].set_text('') if 'color' in item and item['color']: if str(item['color']) in [str(i) for i in range(len(self._colors))]: w['color'].set_markup("<i>%s</i>" % self._colors[item['color']]) else: log.info("Wrong value in 'color' field (movie_id=%s, color=%s)" % (item['movie_id'], item['color'])) w['color'].set_markup('') else: w['color'].set_markup('') if 'classification' in item and item['classification']: w['classification'].set_markup("<i>%s</i>" % gutils.html_encode(item['classification'])) else: w['classification'].set_text('') if 'studio' in item and item['studio']: w['studio'].set_markup("<i>%s</i>" % gutils.html_encode(item['studio'])) else: w['studio'].set_text('') if 'o_site' in item and item['o_site']: self._o_site_url = str(item['o_site']) w['go_o_site_button'].set_sensitive(True) else: self._o_site_url = None w['go_o_site_button'].set_sensitive(False) if 'site' in item and item['site']: self._site_url = str(item['site']) w['go_site_button'].set_sensitive(True) else: self._site_url = None w['go_site_button'].set_sensitive(False) if 'trailer' in item and item['trailer']: self._trailer_url = str(item.trailer) w['go_trailer_button'].set_sensitive(True) else: self._trailer_url = None w['go_trailer_button'].set_sensitive(False) if 'seen' in item and item['seen'] == True: w['seen_icon'].set_from_file(os.path.join(self.locations['images'], 'seen.png')) else: w['seen_icon'].set_from_file(os.path.join(self.locations['images'], 'unseen.png')) if 'notes' in item and item['notes']: w['notes'].set_text(str(item.notes)) else: w['notes'].set_text('') tmp = '' if 'media_num' in item and item['media_num']: tmp = str(item.media_num) else: tmp = '0' if 'medium_id' in item and item['medium_id']: if item.medium is not None: tmp += ' x ' + item.medium.name else: pass w['medium'].set_markup("<i>%s</i>" % gutils.html_encode(tmp)) if 'vcodec_id' in item: if item.vcodec is not None: w['vcodec'].set_markup("<i>%s</i>" % gutils.html_encode(item.vcodec.name)) else: w['vcodec'].set_text('') else: w['vcodec'].set_text('') # TODO: add widgets in main and edit windows #if 'ratio_id' in item: # if item.ratio is not None: # w['ratio'].set_markup("<i>%s</i>" % gutils.html_encode(item.ratio.name)) # else: # w['ratio'].set_text('') #else: # w['ratio'].set_text('') # poster if 'poster_md5' in item and item['poster_md5']: filename = gutils.get_image_fname(item['poster_md5'], self.db, 'm') if filename and os.path.isfile(filename): image_path = filename self.widgets['add']['delete_poster'].set_sensitive(True) w['picture_button'].set_sensitive(True) else: image_path = gutils.get_defaultimage_fname(self) self.widgets['add']['delete_poster'].set_sensitive(False) w['picture_button'].set_sensitive(False) else: image_path = gutils.get_defaultimage_fname(self) w['picture_button'].set_sensitive(False) w['picture'].set_from_file(image_path) # ratig rimage = int(self.config.get('rating_image', 0)) if rimage: prefix = '' else: prefix = 'meter' if 'rating' in item and item['rating']: rating_file = "%s/%s0%d.png" % (self.locations['images'], prefix, item['rating']) else: rating_file = "%s/%s0%d.png" % (self.locations['images'], prefix, 0) handler = w['image_rating'].set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(rating_file)) gutils.garbage(handler) # check loan status and adjust buttons and history box if 'loaned' in item and item['loaned'] is True: self.widgets['popups']['loan'].set_sensitive(False) self.widgets['popups']['email'].set_sensitive(True) self.widgets['popups']['return'].set_sensitive(True) self.widgets['menu']['loan'].set_sensitive(False) self.widgets['menu']['email'].set_sensitive(True) self.widgets['menu']['return'].set_sensitive(True) w['loan_button'].set_sensitive(False) w['email_reminder_button'].set_sensitive(True) w['return_button'].set_sensitive(True) if getattr(item, 'loan_details', None) is None: log.warning("movie has no loan data, changing 'loaned' flag to False (movie_id: %s)", item['movie_id']) item.loaned = False else: self.person_name = item.loan_details.person.name self.person_email = item.loan_details.person.email self.loan_date = str(item.loan_details.date) w['loan_info'].set_use_markup(False) w['loan_info'].set_label(_("This movie has been loaned to %s on %s") % (self.person_name, self.loan_date[:10])) if 'loaned' in item and not item['loaned']: # "loaned" status can be changed above, so don't use "else:" in this line self.widgets['popups']['loan'].set_sensitive(True) self.widgets['popups']['email'].set_sensitive(False) self.widgets['popups']['return'].set_sensitive(False) self.widgets['menu']['loan'].set_sensitive(True) self.widgets['menu']['email'].set_sensitive(False) self.widgets['menu']['return'].set_sensitive(False) w['return_button'].set_sensitive(False) w['email_reminder_button'].set_sensitive(False) w['loan_button'].set_sensitive(True) w['loan_info'].set_markup("<b>%s</b>" % _("Movie not loaned")) # loan history self.loans_treemodel.clear() if getattr(item, 'loan_history', None) is not None: for loan in item.loan_history: myiter = self.loans_treemodel.append(None) self.loans_treemodel.set_value(myiter, 0, '%s' % str(loan.date)[:10]) if loan.return_date and loan.return_date != '': self.loans_treemodel.set_value(myiter, 1, str(loan.return_date)[:10]) else: self.loans_treemodel.set_value(myiter, 1, "---") person = self.db.session.query(db.Person.name).filter_by(person_id=loan.person.person_id).first() self.loans_treemodel.set_value(myiter, 2, person.name) # volumes/collections if 'volume_id' in item and item['volume_id'] > 0: if 'volume' in item and item['volume']: w['volume'].set_markup("<b>%s</b>" % gutils.html_encode(item['volume'].name)) w['show_volume_button'].set_sensitive(True) else: w['volume'].set_text('') w['show_volume_button'].set_sensitive(False) else: w['volume'].set_text('') w['show_volume_button'].set_sensitive(False) if 'collection_id' in item and item['collection_id'] > 0: if 'collection' in item and item['collection']: w['collection'].set_markup("<b>%s</b>" % gutils.html_encode(item['collection'].name)) w['show_collection_button'].set_sensitive(True) else: w['collection'].set_text('') w['show_collection_button'].set_sensitive(False) else: w['collection'].set_text('') w['show_collection_button'].set_sensitive(False) # languages for i in w['audio_vbox'].get_children(): i.destroy() for i in w['subtitle_vbox'].get_children(): i.destroy() if 'languages' in item and len(item['languages']) > 0: for i in item['languages']: if i.type == 3: # subtitles if i.subformat: tmp = "%s - %s" % (i.language.name, i.subformat.name) else: tmp = "%s" % i.language.name w['subtitle_vbox'].pack_start(gtk.Label(tmp)) else: language = i.language.name if i.type is not None and len(self._lang_types[i.type]) > 0: language += " <i>%s</i>" % self._lang_types[i.type] tmp = '' if i.achannel: tmp = i.achannel.name if i.acodec: if len(tmp) > 0: tmp += ", %s" % i.acodec.name else: tmp = i.acodec.name if len(tmp) > 0: tmp = "%s (%s)" % (language, tmp) else: tmp = language widget = gtk.Label(tmp) widget.set_use_markup(True) w['audio_vbox'].pack_start(widget) w['audio_vbox'].show_all() w['subtitle_vbox'].show_all() #tags if 'tags' in item: tmp = '' for tag in item['tags']: tmp += "%s, " % tag.name tmp = tmp[:-2] # cut last comma w['tags'].set_text(tmp)
def set_details(self, item=None): # {{{ if item is None: item = {} if 'movie_id' in item and item['movie_id']: self._movie_id = item['movie_id'] else: self._movie_id = None w = self.widgets['movie'] if 'number' in item and item['number']: w['number'].set_text(str(int(item['number']))) else: w['number'].set_text('') if 'title' in item and item['title']: w['title'].set_markup("<b><span size='large'>%s</span></b>" % gutils.html_encode(item['title'])) else: w['title'].set_text('') if 'o_title' in item and item['o_title']: w['o_title'].set_markup("<span size='medium'><i>%s</i></span>" % gutils.html_encode(item['o_title'])) else: w['o_title'].set_text('') if 'director' in item and item['director']: w['director'].set_markup("<i>%s</i>" % gutils.html_encode(item['director'])) else: w['director'].set_text('') if 'plot' in item and item['plot']: w['plot'].set_text(str(item['plot'])) else: w['plot'].set_text('') if 'year' in item and item['year']: w['year'].set_text(str(item['year'])) else: w['year'].set_text('') if 'resolution' in item and item['resolution']: if self.config.get('use_resolution_alias', True): w['resolution'].set_text(item['resolution']) elif 'height' in item and item['height'] and 'width' in item and item[ 'width']: w['resolution'].set_text("%dx%d" % (item['width'], item['height'])) else: # fallback to 'resolution' w['resolution'].set_text(item['resolution']) else: w['resolution'].set_text('') pass if 'runtime' in item and item['runtime']: w['runtime'].set_text(str(int(item['runtime']))) else: w['runtime'].set_text('x') if 'cameraman' in item and item['cameraman']: w['cameraman'].set_markup("<i>%s</i>" % gutils.html_encode(item['cameraman'])) else: w['cameraman'].set_text('') if 'screenplay' in item and item['screenplay']: w['screenplay'].set_markup("<i>%s</i>" % gutils.html_encode(item['screenplay'])) else: w['screenplay'].set_text('') if 'cast' in item and item['cast']: w['cast'].set_text(str(item['cast'])) else: w['cast'].set_text('') if 'country' in item and item['country']: w['country'].set_markup("<i>%s</i>" % gutils.html_encode(item['country'])) else: w['country'].set_text('') if 'genre' in item and item['genre']: w['genre'].set_markup("<i>%s</i>" % gutils.html_encode(item['genre'])) else: w['genre'].set_text('') if 'cond' in item and item['cond']: if str(item['cond']) in [str(i) for i in range(len(self._conditions))]: w['condition'].set_markup("<i>%s</i>" % self._conditions[item['cond']]) else: w['condition'].set_text('') log.info( "Wrong value in 'condition' field (movie_id=%s, cond=%s)" % (item['movie_id'], item['cond'])) else: w['condition'].set_text('') if 'region' in item and item['region']: if item['region'] < len(self._regions): w['region'].set_markup( "<i>%s</i>" % gutils.html_encode(self._regions[item['region']])) if int(item['region']) < 12: self.widgets['tooltips'].set_tip( w['region'], self._regions[int(item['region'])]) else: log.info("Wrong value in 'region' field (movie_id=%s, region=%s)" % (item['movie_id'], item['region'])) w['region'].set_text('') self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A else: w['region'].set_text('') self.widgets['tooltips'].set_tip(w['region'], self._regions[0]) # N/A if 'layers' in item and item['layers']: if str(item['layers']) in [str(i) for i in range(len(self._layers))]: w['layers'].set_markup("<i>%s</i>" % self._layers[item['layers']]) else: log.info("Wrong value in 'layers' field (movie_id=%s, layers=%s)" % (item['movie_id'], item['layers'])) w['layers'].set_text('') else: w['layers'].set_text('') if 'color' in item and item['color']: if str(item['color']) in [str(i) for i in range(len(self._colors))]: w['color'].set_markup("<i>%s</i>" % self._colors[item['color']]) else: log.info("Wrong value in 'color' field (movie_id=%s, color=%s)" % (item['movie_id'], item['color'])) w['color'].set_markup('') else: w['color'].set_markup('') if 'classification' in item and item['classification']: w['classification'].set_markup( "<i>%s</i>" % gutils.html_encode(item['classification'])) else: w['classification'].set_text('') if 'studio' in item and item['studio']: w['studio'].set_markup("<i>%s</i>" % gutils.html_encode(item['studio'])) else: w['studio'].set_text('') if 'o_site' in item and item['o_site']: self._o_site_url = str(item['o_site']) w['go_o_site_button'].set_sensitive(True) else: self._o_site_url = None w['go_o_site_button'].set_sensitive(False) if 'site' in item and item['site']: self._site_url = str(item['site']) w['go_site_button'].set_sensitive(True) else: self._site_url = None w['go_site_button'].set_sensitive(False) if 'trailer' in item and item['trailer']: self._trailer_url = str(item.trailer) w['go_trailer_button'].set_sensitive(True) else: self._trailer_url = None w['go_trailer_button'].set_sensitive(False) if 'seen' in item and item['seen'] == True: w['seen_icon'].set_from_file( os.path.join(self.locations['images'], 'seen.png')) else: w['seen_icon'].set_from_file( os.path.join(self.locations['images'], 'unseen.png')) if 'notes' in item and item['notes']: w['notes'].set_text(str(item.notes)) else: w['notes'].set_text('') tmp = '' if 'media_num' in item and item['media_num']: tmp = str(item.media_num) else: tmp = '0' if 'medium_id' in item and item['medium_id']: if item.medium is not None: tmp += ' x ' + item.medium.name else: pass w['medium'].set_markup("<i>%s</i>" % gutils.html_encode(tmp)) if 'vcodec_id' in item: if item.vcodec is not None: w['vcodec'].set_markup("<i>%s</i>" % gutils.html_encode(item.vcodec.name)) else: w['vcodec'].set_text('') else: w['vcodec'].set_text('') # TODO: add widgets in main and edit windows #if 'ratio_id' in item: # if item.ratio is not None: # w['ratio'].set_markup("<i>%s</i>" % gutils.html_encode(item.ratio.name)) # else: # w['ratio'].set_text('') #else: # w['ratio'].set_text('') # poster if 'poster_md5' in item and item['poster_md5']: filename = gutils.get_image_fname(item['poster_md5'], self.db, 'm') if filename and os.path.isfile(filename): image_path = filename self.widgets['add']['delete_poster'].set_sensitive(True) w['picture_button'].set_sensitive(True) else: image_path = gutils.get_defaultimage_fname(self) self.widgets['add']['delete_poster'].set_sensitive(False) w['picture_button'].set_sensitive(False) else: image_path = gutils.get_defaultimage_fname(self) self.widgets['add']['delete_poster'].set_sensitive(False) w['picture_button'].set_sensitive(False) w['picture'].set_from_file(image_path) # ratig rimage = int(self.config.get('rating_image', 0)) if rimage: prefix = '' else: prefix = 'meter' if 'rating' in item and item['rating']: rating_file = "%s/%s0%d.png" % (self.locations['images'], prefix, item['rating']) else: rating_file = "%s/%s0%d.png" % (self.locations['images'], prefix, 0) handler = w['image_rating'].set_from_pixbuf( gtk.gdk.pixbuf_new_from_file(rating_file)) gutils.garbage(handler) # check loan status and adjust buttons and history box if 'loaned' in item and item['loaned'] is True: self.widgets['popups']['loan'].set_sensitive(False) self.widgets['popups']['email'].set_sensitive(True) self.widgets['popups']['return'].set_sensitive(True) self.widgets['menu']['loan'].set_sensitive(False) self.widgets['menu']['email'].set_sensitive(True) self.widgets['menu']['return'].set_sensitive(True) w['loan_button'].set_sensitive(False) w['email_reminder_button'].set_sensitive(True) w['return_button'].set_sensitive(True) if getattr(item, 'loan_details', None) is None: log.warning( "movie has no loan data, changing 'loaned' flag to False (movie_id: %s)", item['movie_id']) item.loaned = False else: self.person_name = item.loan_details.person.name self.person_email = item.loan_details.person.email self.loan_date = str(item.loan_details.date) w['loan_info'].set_use_markup(False) w['loan_info'].set_label( _("This movie has been loaned to %s on %s") % (self.person_name, self.loan_date[:10])) if 'loaned' in item and not item[ 'loaned']: # "loaned" status can be changed above, so don't use "else:" in this line self.widgets['popups']['loan'].set_sensitive(True) self.widgets['popups']['email'].set_sensitive(False) self.widgets['popups']['return'].set_sensitive(False) self.widgets['menu']['loan'].set_sensitive(True) self.widgets['menu']['email'].set_sensitive(False) self.widgets['menu']['return'].set_sensitive(False) w['return_button'].set_sensitive(False) w['email_reminder_button'].set_sensitive(False) w['loan_button'].set_sensitive(True) w['loan_info'].set_markup("<b>%s</b>" % _("Movie not loaned")) # loan history self.loans_treemodel.clear() if getattr(item, 'loan_history', None) is not None: for loan in item.loan_history: myiter = self.loans_treemodel.append(None) self.loans_treemodel.set_value(myiter, 0, '%s' % str(loan.date)[:10]) if loan.return_date and loan.return_date != '': self.loans_treemodel.set_value(myiter, 1, str(loan.return_date)[:10]) else: self.loans_treemodel.set_value(myiter, 1, "---") if loan.person: person = self.db.session.query(db.Person.name).filter_by( person_id=loan.person.person_id).first() self.loans_treemodel.set_value(myiter, 2, person.name) # volumes/collections if 'volume_id' in item and item['volume_id'] > 0: if 'volume' in item and item['volume']: w['volume'].set_markup("<b>%s</b>" % gutils.html_encode(item['volume'].name)) w['show_volume_button'].set_sensitive(True) else: w['volume'].set_text('') w['show_volume_button'].set_sensitive(False) else: w['volume'].set_text('') w['show_volume_button'].set_sensitive(False) if 'collection_id' in item and item['collection_id'] > 0: if 'collection' in item and item['collection']: w['collection'].set_markup( "<b>%s</b>" % gutils.html_encode(item['collection'].name)) w['show_collection_button'].set_sensitive(True) else: w['collection'].set_text('') w['show_collection_button'].set_sensitive(False) else: w['collection'].set_text('') w['show_collection_button'].set_sensitive(False) # languages for i in w['audio_vbox'].get_children(): i.destroy() for i in w['subtitle_vbox'].get_children(): i.destroy() if 'languages' in item and len(item['languages']) > 0: for i in item['languages']: if i.type == 3: # subtitles if i.subformat: tmp = "%s - %s" % (i.language.name, i.subformat.name) else: tmp = "%s" % i.language.name w['subtitle_vbox'].pack_start(gtk.Label(tmp)) else: language = i.language.name if i.type is not None and len(self._lang_types[i.type]) > 0: language += " <i>%s</i>" % self._lang_types[i.type] tmp = '' if i.achannel: tmp = i.achannel.name if i.acodec: if len(tmp) > 0: tmp += ", %s" % i.acodec.name else: tmp = i.acodec.name if len(tmp) > 0: tmp = "%s (%s)" % (language, tmp) else: tmp = language widget = gtk.Label(tmp) widget.set_use_markup(True) w['audio_vbox'].pack_start(widget) w['audio_vbox'].show_all() w['subtitle_vbox'].show_all() #tags if 'tags' in item: tmp = '' for tag in item['tags']: tmp += "%s, " % tag.name tmp = tmp[:-2] # cut last comma w['tags'].set_text(tmp)
def set_details(self, item=None): # {{{ from loan import get_loan_info, get_loan_history if item is None: item = {} if item.has_key("movie_id") and item["movie_id"]: self._movie_id = item["movie_id"] else: self._movie_id = None w = self.widgets["movie"] if item.has_key("number") and item["number"]: w["number"].set_text(str(int(item["number"]))) else: w["number"].set_text("") if item.has_key("title") and item["title"]: w["title"].set_markup("<b><span size='large'>%s</span></b>" % gutils.html_encode(item["title"])) else: w["title"].set_text("") if item.has_key("o_title") and item["o_title"]: w["o_title"].set_markup("<span size='medium'><i>%s</i></span>" % gutils.html_encode(item["o_title"])) else: w["o_title"].set_text("") if item.has_key("director") and item["director"]: w["director"].set_markup("<i>%s</i>" % gutils.html_encode(item["director"])) else: w["director"].set_text("") if item.has_key("plot") and item["plot"]: w["plot"].set_text(str(item["plot"])) else: w["plot"].set_text("") if item.has_key("year") and item["year"]: w["year"].set_text(str(item["year"])) else: w["year"].set_text("") if item.has_key("runtime") and item["runtime"]: w["runtime"].set_text(str(int(item["runtime"]))) else: w["runtime"].set_text("x") if item.has_key("cast") and item["cast"]: w["cast"].set_text(str(item["cast"])) else: w["cast"].set_text("") if item.has_key("country") and item["country"]: w["country"].set_markup("<i>%s</i>" % gutils.html_encode(item["country"])) else: w["country"].set_text("") if item.has_key("genre") and item["genre"]: w["genre"].set_markup("<i>%s</i>" % gutils.html_encode(item["genre"])) else: w["genre"].set_text("") if item.has_key("cond") and item["cond"]: if str(item["cond"]) in [str(i) for i in range(len(self._conditions))]: w["condition"].set_markup("<i>%s</i>" % self._conditions[item["cond"]]) else: w["condition"].set_text("") self.debug.show( "Wrong value in 'condition' field (movie_id=%s, cond=%s)" % (item["movie_id"], item["cond"]) ) else: w["condition"].set_text("") if item.has_key("region") and item["region"]: if str(item["region"]) in [str(i) for i in range(len(self._regions))]: w["region"].set_markup("<i>%s</i>" % gutils.html_encode(item["region"])) if int(item["region"]) < 9: self.widgets["tooltips"].set_tip(w["region"], self._regions[int(item["region"])]) else: self.debug.show( "Wrong value in 'region' field (movie_id=%s, region=%s)" % (item["movie_id"], item["region"]) ) w["region"].set_text("") self.widgets["tooltips"].set_tip(w["region"], self._regions[0]) # N/A else: w["region"].set_text("") self.widgets["tooltips"].set_tip(w["region"], self._regions[0]) # N/A if item.has_key("layers") and item["layers"]: if str(item["layers"]) in [str(i) for i in range(len(self._layers))]: w["layers"].set_markup("<i>%s</i>" % self._layers[item["layers"]]) else: self.debug.show( "Wrong value in 'layers' field (movie_id=%s, layers=%s)" % (item["movie_id"], item["layers"]) ) w["layers"].set_text("") else: w["layers"].set_text("") if item.has_key("color") and item["color"]: if str(item["color"]) in [str(i) for i in range(len(self._colors))]: w["color"].set_markup("<i>%s</i>" % self._colors[item["color"]]) else: self.debug.show("Wrong value in 'color' field (movie_id=%s, color=%s)" % (item["movie_id"], item["color"])) w["color"].set_markup("") else: w["color"].set_markup("") if item.has_key("classification") and item["classification"]: w["classification"].set_markup("<i>%s</i>" % gutils.html_encode(item["classification"])) else: w["classification"].set_text("") if item.has_key("studio") and item["studio"]: w["studio"].set_markup("<i>%s</i>" % gutils.html_encode(item["studio"])) else: w["studio"].set_text("") if item.has_key("o_site") and item["o_site"]: self._o_site_url = str(item["o_site"]) w["go_o_site_button"].set_sensitive(True) else: self._o_site_url = None w["go_o_site_button"].set_sensitive(False) if item.has_key("site") and item["site"]: self._site_url = str(item["site"]) w["go_site_button"].set_sensitive(True) else: self._site_url = None w["go_site_button"].set_sensitive(False) if item.has_key("trailer") and item["trailer"]: self._trailer_url = str(item.trailer) w["go_trailer_button"].set_sensitive(True) else: self._trailer_url = None w["go_trailer_button"].set_sensitive(False) if item.has_key("seen") and item["seen"] == True: w["seen_icon"].set_from_file(os.path.join(self.locations["images"], "seen.png")) else: w["seen_icon"].set_from_file(os.path.join(self.locations["images"], "unseen.png")) if item.has_key("notes") and item["notes"]: w["notes"].set_text(str(item.notes)) else: w["notes"].set_text("") tmp = "" if item.has_key("media_num") and item["media_num"]: tmp = str(item.media_num) else: tmp = "0" if item.has_key("medium_id") and item["medium_id"]: if item.medium is not None: tmp += " x " + item.medium.name else: pass w["medium"].set_markup("<i>%s</i>" % gutils.html_encode(tmp)) if item.has_key("vcodec_id"): if item.vcodec is not None: w["vcodec"].set_markup("<i>%s</i>" % gutils.html_encode(item.vcodec.name)) else: w["vcodec"].set_text("") else: w["vcodec"].set_text("") # poster if item.has_key("image") and item["image"]: tmp_dest = self.locations["posters"] tmp_img = os.path.join(tmp_dest, "m_%s.jpg" % item["image"]) tmp_img2 = os.path.join(tmp_dest, "%s.jpg" % item["image"]) if os.path.isfile(tmp_img2): image_path = tmp_img self.widgets["add"]["delete_poster"].set_sensitive(True) self.widgets["menu"]["delete_poster"].set_sensitive(True) w["picture_button"].set_sensitive(True) else: image_path = os.path.join(self.locations["images"], "default.png") self.widgets["add"]["delete_poster"].set_sensitive(False) self.widgets["menu"]["delete_poster"].set_sensitive(False) w["picture_button"].set_sensitive(False) # lets see if we have a scaled down medium image already created if not os.path.isfile(image_path): # if not, lets make one for future use :D original_image = os.path.join(tmp_dest, "%s.jpg" % item.image) if os.path.isfile(original_image): gutils.make_medium_image(self, "%s.jpg" % item.image) else: image_path = os.path.join(self.locations["images"], "default.png") w["picture_button"].set_sensitive(False) w["picture"].set_from_file(image_path) # ratig rimage = int(self.config.get("rating_image", 0)) if rimage: prefix = "" else: prefix = "meter" if item.has_key("rating") and item["rating"]: rating_file = "%s/%s0%d.png" % (self.locations["images"], prefix, item["rating"]) else: rating_file = "%s/%s0%d.png" % (self.locations["images"], prefix, 0) handler = w["image_rating"].set_from_pixbuf(gtk.gdk.pixbuf_new_from_file(rating_file)) gutils.garbage(handler) # check loan status and adjust buttons and history box if item.has_key("loaned") and item["loaned"] == True: self.widgets["popups"]["loan"].set_sensitive(False) self.widgets["popups"]["email"].set_sensitive(True) self.widgets["popups"]["return"].set_sensitive(True) self.widgets["menu"]["loan"].set_sensitive(False) self.widgets["menu"]["email"].set_sensitive(True) self.widgets["menu"]["return"].set_sensitive(True) w["loan_button"].set_sensitive(False) w["email_reminder_button"].set_sensitive(True) w["return_button"].set_sensitive(True) data_loan = get_loan_info( self.db, collection_id=item["collection_id"], volume_id=item["volume_id"], movie_id=item["movie_id"] ) if data_loan is None: item.loaned = False else: data_person = self.db.Person.get_by(person_id=data_loan.person.person_id) self.person_name = str(data_person.name) self.person_email = str(data_person.email) self.loan_date = str(data_loan.date) w["loan_info"].set_use_markup(False) w["loan_info"].set_label( _("This movie has been loaned to ") + self.person_name + _(" on ") + self.loan_date[:10] ) if ( item.has_key("loaned") and item["loaned"] != True ): # "loaned" status can be changed above, so don't use "else:" in this line self.widgets["popups"]["loan"].set_sensitive(True) self.widgets["popups"]["email"].set_sensitive(False) self.widgets["popups"]["return"].set_sensitive(False) self.widgets["menu"]["loan"].set_sensitive(True) self.widgets["menu"]["email"].set_sensitive(False) self.widgets["menu"]["return"].set_sensitive(False) w["return_button"].set_sensitive(False) w["email_reminder_button"].set_sensitive(False) w["loan_button"].set_sensitive(True) w["loan_info"].set_markup("<b>%s</b>" % _("Movie not loaned")) # loan history self.loans_treemodel.clear() if item.has_key("collection_id") or item.has_key("volume_id") or item.has_key("movie_id"): loans = get_loan_history( self.db, collection_id=item["collection_id"], volume_id=item["volume_id"], movie_id=item["movie_id"] ) for loan in loans: myiter = self.loans_treemodel.append(None) self.loans_treemodel.set_value(myiter, 0, "%s" % str(loan.date)[:10]) if loan.return_date and loan.return_date != "": self.loans_treemodel.set_value(myiter, 1, str(loan.return_date)[:10]) else: self.loans_treemodel.set_value(myiter, 1, "---") person = self.db.Person.get_by(person_id=loan.person.person_id) self.loans_treemodel.set_value(myiter, 2, person.name) # volumes/collections if item.has_key("volume_id") and item["volume_id"] > 0: if item.has_key("volume") and item["volume"]: w["volume"].set_markup("<b>%s</b>" % gutils.html_encode(item["volume"].name)) w["show_volume_button"].set_sensitive(True) else: w["volume"].set_text("") w["show_volume_button"].set_sensitive(False) else: w["volume"].set_text("") w["show_volume_button"].set_sensitive(False) if item.has_key("collection_id") and item["collection_id"] > 0: if item.has_key("collection") and item["collection"]: w["collection"].set_markup("<b>%s</b>" % gutils.html_encode(item["collection"].name)) w["show_collection_button"].set_sensitive(True) else: w["collection"].set_text("") w["show_collection_button"].set_sensitive(False) else: w["collection"].set_text("") w["show_collection_button"].set_sensitive(False) # languages for i in w["audio_vbox"].get_children(): i.destroy() for i in w["subtitle_vbox"].get_children(): i.destroy() if item.has_key("languages") and len(item["languages"]) > 0: for i in item["languages"]: if i.type == 3: # subtitles if i.subformat: tmp = "%s - %s" % (i.language.name, i.subformat.name) else: tmp = "%s" % i.language.name w["subtitle_vbox"].pack_start(gtk.Label(tmp)) else: language = i.language.name if i.type is not None and len(self._lang_types[i.type]) > 0: language += " <i>%s</i>" % self._lang_types[i.type] tmp = "" if i.achannel: tmp = i.achannel.name if i.acodec: if len(tmp) > 0: tmp += ", %s" % i.acodec.name else: tmp = i.acodec.name if len(tmp) > 0: tmp = "%s (%s)" % (language, tmp) else: tmp = language widget = gtk.Label(tmp) widget.set_use_markup(True) w["audio_vbox"].pack_start(widget) w["audio_vbox"].show_all() w["subtitle_vbox"].show_all() # tags if item.has_key("tags"): tmp = "" for tag in item["tags"]: tmp += "%s, " % tag.name tmp = tmp[:-2] # cut last comma w["tags"].set_text(tmp)