From 307f90457d6a7e9fa1c0fa1a88750b03df3d0386 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 16 Sep 2010 15:17:40 -0600 Subject: [PATCH] Modify author sort tooltip to explain the color. Fix #6836 (Updated recipe for Adventure Gamers) --- resources/recipes/adventuregamers.recipe | 63 ++++++++++++--------- src/calibre/gui2/dialogs/metadata_single.py | 15 +++-- 2 files changed, 46 insertions(+), 32 deletions(-) diff --git a/resources/recipes/adventuregamers.recipe b/resources/recipes/adventuregamers.recipe index 1cde045953..d08eca1723 100644 --- a/resources/recipes/adventuregamers.recipe +++ b/resources/recipes/adventuregamers.recipe @@ -1,7 +1,5 @@ -#!/usr/bin/env python - __license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' +__copyright__ = '2009-2010, Darko Miletic ' ''' www.adventuregamers.com ''' @@ -10,14 +8,11 @@ from calibre.web.feeds.news import BasicNewsRecipe class AdventureGamers(BasicNewsRecipe): title = u'Adventure Gamers' - language = 'en' - + language = 'en' __author__ = 'Darko Miletic' - description = 'Adventure games portal' + description = 'Adventure games portal' publisher = 'Adventure Gamers' - category = 'news, games, adventure, technology' - language = 'en' - + category = 'news, games, adventure, technology' oldest_article = 10 delay = 10 max_articles_per_feed = 100 @@ -26,14 +21,25 @@ class AdventureGamers(BasicNewsRecipe): remove_javascript = True use_embedded_content = False INDEX = u'http://www.adventuregamers.com' - - html2lrf_options = [ - '--comment', description - , '--category', category - , '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + '"' + extra_css = """ + .pageheader_type{font-size: x-large; font-weight: bold; color: #828D74} + .pageheader_title{font-size: xx-large; color: #394128} + .pageheader_byline{font-size: small; font-weight: bold; color: #394128} + .score_bg {display: inline; width: 100%; margin-bottom: 2em} + .score_column_1{ padding-left: 10px; font-size: small; width: 50%} + .score_column_2{ padding-left: 10px; font-size: small; width: 50%} + .score_column_3{ padding-left: 10px; font-size: small; width: 50%} + .score_header{font-size: large; color: #50544A} + .bodytext{display: block} + body{font-family: Helvetica,Arial,sans-serif} + """ + + conversion_options = { + 'comment' : description + , 'tags' : category + , 'publisher' : publisher + , 'language' : language + } keep_only_tags = [ dict(name='div', attrs={'class':'content_middle'}) @@ -43,14 +49,15 @@ class AdventureGamers(BasicNewsRecipe): dict(name=['object','link','embed','form']) ,dict(name='div', attrs={'class':['related-stories','article_leadout','prev','next','both']}) ] - + remove_tags_after = [dict(name='div', attrs={'class':'toolbar_fat'})] - + remove_attributes = ['width','height'] + feeds = [(u'Articles', u'http://feeds2.feedburner.com/AdventureGamers')] - + def get_article_url(self, article): return article.get('guid', None) - + def append_page(self, soup, appendtag, position): pager = soup.find('div',attrs={'class':'toolbar_fat_next'}) if pager: @@ -59,19 +66,19 @@ class AdventureGamers(BasicNewsRecipe): texttag = soup2.find('div', attrs={'class':'bodytext'}) for it in texttag.findAll(style=True): del it['style'] - newpos = len(texttag.contents) + newpos = len(texttag.contents) self.append_page(soup2,texttag,newpos) texttag.extract() appendtag.insert(position,texttag) - - + + def preprocess_html(self, soup): - mtag = '\n' - soup.head.insert(0,mtag) for item in soup.findAll(style=True): del item['style'] + for item in soup.findAll('div', attrs={'class':'floatright'}): + item.extract() self.append_page(soup, soup.body, 3) pager = soup.find('div',attrs={'class':'toolbar_fat'}) if pager: - pager.extract() - return soup + pager.extract() + return self.adeify_images(soup) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index ac10847f3d..b23baa9de6 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -6,10 +6,7 @@ The dialog used to edit meta information for a book as well as add/remove formats ''' -import os -import re -import time -import traceback +import os, re, time, traceback, textwrap from PyQt4.Qt import SIGNAL, QObject, Qt, QTimer, QThread, QDate, \ QPixmap, QListWidgetItem, QDialog, pyqtSignal @@ -331,6 +328,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): ResizableDialog.__init__(self, window) self.bc_box.layout().setAlignment(self.cover, Qt.AlignCenter|Qt.AlignHCenter) self.cancel_all = False + self.normal_aus_tooltip = unicode(self.author_sort.toolTip()) if cancel_all: self.__abort_button = self.button_box.addButton(self.button_box.Abort) self.__abort_button.setToolTip(_('Abort the editing of all remaining books')) @@ -454,6 +452,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): else: self.create_custom_column_editors() self.generate_cover_button.clicked.connect(self.generate_cover) + self.author_sort.setToolTip(textwrap.fill('

'+self.normal_aus_tooltip+'

'+ + _(' The green color indicates that the current ' + 'author sort matches the current author'))) def create_custom_column_editors(self): w = self.central_widget.widget(1) @@ -490,6 +491,12 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): col = 'rgb(255, 0, 0, 20%)' self.author_sort.setStyleSheet('QLineEdit { color: black; ' 'background-color: %s; }'%col) + tt = self.normal_aus_tooltip + if not normal: + tt = '

'+textwrap.fill(tt + '

'+ + _(' The red color indicates that the current ' + 'author sort does not match the current author')) + self.author_sort.setToolTip(tt) def validate_isbn(self, isbn): isbn = unicode(isbn).strip()