diff --git a/Changelog.yaml b/Changelog.yaml
index 99bcfcfeb0..fcaea34696 100644
--- a/Changelog.yaml
+++ b/Changelog.yaml
@@ -19,6 +19,149 @@
# new recipes:
# - title:
+- version: 0.8.63
+ date: 2012-08-02
+
+ new features:
+ - title: "E-book viewer: Allow quick saving and loading of viewer settings as 'themes'."
+ tickets: [1024611]
+
+ - title: "Ebook-viewer: Add a restore defaults button to the viewer preferences dialog"
+
+ - title: "E-book viewer: Add simple settings for text and background colors"
+
+ - title: "Add an entry to save to disk when right clicking a format in the book details panel"
+
+ - title: "ODT metadata: Read first image as the metadata cover from ODT files. Also allow ODT authors to set custom properties for extended metadata."
+
+ - title: "E-book viewer and PDF Output: Resize images that are longer than the page to fit onto a single page"
+
+ bug fixes:
+ - title: "KF8 Output: Fix bug where some calibre generated KF8 files would cause the Amazon KF8 viewer on the Touch to go to into an infinite loop when using the next page function"
+ tickets: [1026421]
+
+ - title: "News download: Add support for
tags that link to SVG images."
+ tickets: [1031553]
+
+ - title: "Update podofo to 0.9.1 in all binary builds, to fix corruption of some PDFs when updating metadata."
+ tickets: [1031086]
+
+ - title: "Catalog generation: Handle authors whose last name is a number."
+
+ - title: "KF8 Input: Handle html entities in the NCX toc entries correctly"
+
+ - title: "Fix a calibre crash that affected some windows installs"
+ tickets: [1030234]
+
+ - title: "MOBI Output: Normalize unicode strings before writing to file, to workaround lack of support for non-normal unicode in Amazon's MOBI renderer."
+ tickets: [1029825]
+
+ - title: "EPUB Input: Handle files that have duplicate entries in the spine"
+
+ - title: "Fix regression in Kobo driver that caused the on device column to not be updated after deleting books"
+
+ new recipes:
+ - title: Dziennik Polski
+ author: Gregorz Maj
+
+ - title: High Country Blogs
+ author: Armin Geller
+
+ - title: Philosophy Now
+ author: Rick Shang
+
+- version: 0.8.62
+ date: 2012-07-27
+
+ new features:
+ - title: "Book details panel: Allow right clicking on a format to delete it."
+
+ - title: "When errors occur in lots of background jobs, add an option to the error message to temporarily suppress subsequent error messages."
+ tickets: [886904]
+
+ - title: "E-book viewer full screen mode: Allow clicking in the left and right page margins to turn pages."
+ tickets: [1024819]
+
+ - title: "Drivers for various Android devices"
+ tickets: [1028690,1027431]
+
+ - title: "Advanced search dialog: When starting on the title/author/etc. tab, restore the previously used search kind as well."
+ tickets: [1029745]
+
+ - title: "When presenting the calibre must be restarted warning after installing a new plugin, add a restart now button so that the user can conveniently restart calibre. Currently only works when going vie Preferences->Plugins->Get new plugins"
+
+ bug fixes:
+ - title: "Fix main window layout state being saved incorrectly if calibre is killed without a proper shutdown"
+
+ - title: "Fix boolean and date searching in non english calibre installs."
+
+ - title: "Conversion: Ignore invalid chapter detection and level n ToC expressions instead of erroring out"
+
+ improved recipes:
+ - Psychology Today
+ - The Smithsonian
+ - The New Republic
+ - Various updated Polish news sources
+ - The Sun
+ - San Francisco Bay Guardian
+ - AnandTech
+ - Smashing Magazine
+
+ new recipes:
+ - title: Linux Journal and Conowego.pl
+ author: fenuks
+
+ - title: A list apart and .net magazine
+ author: Marc Busque
+
+- version: 0.8.61
+ date: 2012-07-20
+
+ new features:
+ - title: "E-book viewer: Add a paged mode that splits up the text into pages, like in a paper book instead of presenting it as a single column. To activate click the button with the yellow scroll icon in the top right corner."
+ type: major
+ description: "In paged mode, the ebook viewer no longer cuts off the last line of text at the bottom of the screen, and it respects CSS page-break directives. You can also set page margins and control the number of pages displayed on screen by clicking the Preferences button in the viewer and going to 'Text layout in paged mode'."
+
+ - title: "Digitally sign the calibre OS X and windows builds"
+
+ - title: "Get Books: Add Mills and Boon UK"
+
+ - title: "Various minor improvements to the Bulk metadata edit dialog"
+ tickets: [1025825, 1025838, 1025628]
+
+ - title: "Fix various regression in the auto-complete functionality for authors/series/tags etc introduced in 0.8.60"
+
+ - title: "Drivers for various new Android devices"
+ tickets: [1024934]
+
+ - title: "MOBI: Add support for the new language EXTH header field in MOBI files generated by kindlegen 2.5"
+
+ bug fixes:
+ - title: "KF8 Output: Fix calibre produced KF8 files not showing the 'Use publisher font' option on the Kindle Touch when they have embedded fonts"
+
+ - title: "Txt/fb2/rtf/pml/rb output: Fix non-visibile element's tail text (which should be visible) is being ignored when it shouldn't."
+ tickets: [1026541]
+
+ - title: "Book details panel: When displaying a link to amazon, use a country specific name like amazon.fr instead of using amazon.com for all countries"
+
+ - title: "Conversion: When splitting on page breaks, ignore page-breaks with values of auto and inherit. "
+ tickets: [1018875]
+
+ - title: "Metadata jacket: Specify foreground in addition to the background color for the title banner so that it remain readable if the user tries to monkey with the CSS in the viewer."
+
+ - title: "PDF Output: Fix rendering of cover as first age of PDF (ignore margins so that the image covers the entire page)"
+
+ - title: "Linux binaries: Bundle libglib to avoid incompatibilities with glib on various distros."
+ tickets: [1022019]
+
+ - title: "Fix find_identical_books() choking on books with too many authors"
+
+
+ improved recipes:
+ - Toronto Star
+ - American Prospect
+ - faz.net
+
- version: 0.8.60
date: 2012-07-13
diff --git a/manual/conversion.rst b/manual/conversion.rst
index 5eaca5a469..feae2a4273 100644
--- a/manual/conversion.rst
+++ b/manual/conversion.rst
@@ -710,3 +710,35 @@ EPUB from the ZIP file are::
Note that because this file explores the potential of EPUB, most of the advanced formatting is not going to work on readers less capable than |app|'s built-in EPUB viewer.
+
+Convert ODT documents
+~~~~~~~~~~~~~~~~~~~~~
+
+|app| can directly convert ODT (OpenDocument Text) files. You should use styles to format your document and minimize the use of direct formatting.
+When inserting images into your document you need to anchor them to the paragraph, images anchored to a page will all end up in the front of the conversion.
+
+To enable automatic detection of chapters, you need to mark them with the build-in styles called 'Heading 1', 'Heading 2', ..., 'Heading 6' ('Heading 1' equates to the HTML tag
, 'Heading 2' to etc). When you convert in |app| you can enter which style you used into the 'Detect chapters at' box. Example:
+
+ * If you mark Chapters with style 'Heading 2', you have to set the 'Detect chapters at' box to ``//h:h2``
+ * For a nested TOC with Sections marked with 'Heading 2' and the Chapters marked with 'Heading 3' you need to enter ``//h:h2|//h:h3``. On the Convert - TOC page set the 'Level 1 TOC' box to ``//h:h2`` and the 'Level 2 TOC' box to ``//h:h3``.
+
+Well-known document properties (Title, Keywords, Description, Creator) are recognized and |app| will use the first image (not to small, and with good aspect-ratio) as the cover image.
+
+There is also an advanced property conversion mode, which is activated by setting the custom property ``opf.metadata`` ('Yes or No' type) to Yes in your ODT document (File->Properties->Custom Properties).
+If this property is detected by |app|, the following custom properties are recognized (``opf.authors`` overrides document creator)::
+
+ opf.titlesort
+ opf.authors
+ opf.authorsort
+ opf.publisher
+ opf.pubdate
+ opf.isbn
+ opf.language
+ opf.series
+ opf.seriesindex
+
+In addition to this, you can specify the picture to use as the cover by naming it ``opf.cover`` (right click, Picture->Options->Name) in the ODT. If no picture with this name is found, the 'smart' method is used.
+As the cover detection might result in double covers in certain output formats, the process will remove the paragraph (only if the only content is the cover!) from the document. But this works only with the named picture!
+
+To disable cover detection you can set the custom property ``opf.nocover`` ('Yes or No' type) to Yes in advanced mode.
+
diff --git a/manual/develop.rst b/manual/develop.rst
old mode 100755
new mode 100644
index 12bbcefe57..d59c315951
--- a/manual/develop.rst
+++ b/manual/develop.rst
@@ -6,9 +6,9 @@ Setting up a |app| development environment
===========================================
|app| is completely open source, licensed under the `GNU GPL v3 `_.
-This means that you are free to download and modify the program to your heart's content. In this section,
-you will learn how to get a |app| development environment set up on the operating system of your choice.
-|app| is written primarily in `Python `_ with some C/C++ code for speed and system interfacing.
+This means that you are free to download and modify the program to your heart's content. In this section,
+you will learn how to get a |app| development environment set up on the operating system of your choice.
+|app| is written primarily in `Python `_ with some C/C++ code for speed and system interfacing.
Note that |app| is not compatible with Python 3 and requires at least Python 2.7.
.. contents:: Contents
@@ -20,14 +20,14 @@ Design philosophy
|app| has its roots in the Unix world, which means that its design is highly modular.
The modules interact with each other via well defined interfaces. This makes adding new features and fixing
-bugs in |app| very easy, resulting in a frenetic pace of development. Because of its roots, |app| has a
+bugs in |app| very easy, resulting in a frenetic pace of development. Because of its roots, |app| has a
comprehensive command line interface for all its functions, documented in :ref:`cli`.
The modular design of |app| is expressed via ``Plugins``. There is a :ref:`tutorial ` on writing |app| plugins.
For example, adding support for a new device to |app| typically involves writing less than a 100 lines of code in the form of
-a device driver plugin. You can browse the
-`built-in drivers `_. Similarly, adding support
-for new conversion formats involves writing input/output format plugins. Another example of the modular design is the :ref:`recipe system ` for
+a device driver plugin. You can browse the
+`built-in drivers `_. Similarly, adding support
+for new conversion formats involves writing input/output format plugins. Another example of the modular design is the :ref:`recipe system ` for
fetching news. For more examples of plugins designed to add features to |app|, see the `plugin index `_.
Code layout
@@ -91,15 +91,15 @@ this, make your changes, then run::
This will create a :file:`my-changes` file in the current directory,
simply attach that to a ticket on the |app| `bug tracker `_.
-If you plan to do a lot of development on |app|, then the best method is to create a
+If you plan to do a lot of development on |app|, then the best method is to create a
`Launchpad `_ account. Once you have an account, you can use it to register
your bzr branch created by the `bzr branch` command above. First run the
following command to tell bzr about your launchpad account::
bzr launchpad-login your_launchpad_username
-Now, you have to setup SSH access to Launchpad. First create an SSH public/private keypair. Then upload
-the public key to Launchpad by going to your Launchpad account page. Instructions for setting up the
+Now, you have to setup SSH access to Launchpad. First create an SSH public/private keypair. Then upload
+the public key to Launchpad by going to your Launchpad account page. Instructions for setting up the
private key in bzr are at http://bazaar-vcs.org/Bzr_and_SSH. Now you can upload your branch to the |app|
project in Launchpad by following the instructions at https://help.launchpad.net/Code/UploadingABranch.
Whenever you commit changes to your branch with the command::
@@ -108,7 +108,7 @@ Whenever you commit changes to your branch with the command::
Kovid can merge it directly from your branch into the main |app| source tree. You should also keep an eye on the |app|
`development forum `. Before making major changes, you should
-discuss them in the forum or contact Kovid directly (his email address is all over the source code).
+discuss them in the forum or contact Kovid directly (his email address is all over the source code).
Windows development environment
---------------------------------
@@ -118,12 +118,12 @@ the previously checked out |app| code directory. For example::
cd C:\Users\kovid\work\calibre
-calibre is the directory that contains the src and resources sub-directories.
+calibre is the directory that contains the src and resources sub-directories.
The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path of the src directory.
So, following the example above, it would be ``C:\Users\kovid\work\calibre\src``. `Here is a short
guide `_ to setting environment
-variables on Windows.
+variables on Windows.
Once you have set the environment variable, open a new command prompt and check that it was correctly set by using
the command::
@@ -134,7 +134,7 @@ Setting this environment variable means that |app| will now load all its Python
That's it! You are now ready to start hacking on the |app| code. For example, open the file :file:`src\\calibre\\__init__.py`
in your favorite editor and add the line::
-
+
print ("Hello, world!")
near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``.
@@ -149,24 +149,25 @@ the previously checked out |app| code directory, for example::
calibre is the directory that contains the src and resources sub-directories. Ensure you have installed the |app| commandline tools via :guilabel:`Preferences->Advanced->Miscellaneous` in the |app| GUI.
-The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path of the src directory.
-So, following the example above, it would be ``/Users/kovid/work/calibre/src``. Apple
-`documentation `_
-on how to set environment variables.
+The next step is to create a bash script that will set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path of the src directory when running calibre in debug mode.
-Once you have set the environment variable, open a new Terminal and check that it was correctly set by using
-the command::
+Create a plain text file::
- echo $CALIBRE_DEVELOP_FROM
+ #!/bin/sh
+ export CALIBRE_DEVELOP_FROM="/Users/kovid/work/calibre/src"
+ calibre-debug -g
-Setting this environment variable means that |app| will now load all its Python code from the specified location.
+Save this file as ``/usr/bin/calibre-develop``, then set its permissions so that it can be executed::
-That's it! You are now ready to start hacking on the |app| code. For example, open the file :file:`src/calibre/__init__.py`
-in your favorite editor and add the line::
-
- print ("Hello, world!")
+ chmod +x /usr/bin/calibre-develop
-near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``.
+Once you have done this, run::
+
+ calibre-develop
+
+You should see some diagnostic information in the Terminal window as calibre
+starts up, and you should see an asterisk after the version number in the GUI
+window, indicating that you are running from source.
Linux development environment
------------------------------
@@ -181,11 +182,11 @@ Install the |app| using the binary installer. Then open a terminal and change to
cd /home/kovid/work/calibre
-calibre is the directory that contains the src and resources sub-directories.
+calibre is the directory that contains the src and resources sub-directories.
The next step is to set the environment variable ``CALIBRE_DEVELOP_FROM`` to the absolute path of the src directory.
So, following the example above, it would be ``/home/kovid/work/calibre/src``. How to set environment variables depends on
-your Linux distribution and what shell you are using.
+your Linux distribution and what shell you are using.
Once you have set the environment variable, open a new terminal and check that it was correctly set by using
the command::
@@ -196,7 +197,7 @@ Setting this environment variable means that |app| will now load all its Python
That's it! You are now ready to start hacking on the |app| code. For example, open the file :file:`src/calibre/__init__.py`
in your favorite editor and add the line::
-
+
print ("Hello, world!")
near the top of the file. Now run the command :command:`calibredb`. The very first line of output should be ``Hello, world!``.
diff --git a/manual/news.rst b/manual/news.rst
index 873025d467..9783a262aa 100755
--- a/manual/news.rst
+++ b/manual/news.rst
@@ -30,7 +30,7 @@ Lets pick a couple of feeds that look interesting:
#. Business Travel: http://feeds.portfolio.com/portfolio/businesstravel
#. Tech Observer: http://feeds.portfolio.com/portfolio/thetechobserver
-I got the URLs by clicking the little orange RSS icon next to each feed name. To make |app| download the feeds and convert them into an ebook, you should click the :guilabel:`Fetch news` button and then the :guilabel:`Add a custom news source` menu item. A dialog similar to that shown below should open up.
+I got the URLs by clicking the little orange RSS icon next to each feed name. To make |app| download the feeds and convert them into an ebook, you should right click the :guilabel:`Fetch news` button and then the :guilabel:`Add a custom news source` menu item. A dialog similar to that shown below should open up.
.. image:: images/custom_news.png
:align: center
diff --git a/recipes/anandtech.recipe b/recipes/anandtech.recipe
index aa10084070..ff08c828ac 100644
--- a/recipes/anandtech.recipe
+++ b/recipes/anandtech.recipe
@@ -21,8 +21,12 @@ class anan(BasicNewsRecipe):
remove_javascript = True
encoding = 'utf-8'
- remove_tags=[dict(name='a', attrs={'style':'width:110px; margin-top:0px;text-align:center;'}),
- dict(name='a', attrs={'style':'width:110px; margin-top:0px; margin-right:20px;text-align:center;'})]
+ remove_tags=[
+ dict(name='a', attrs={'style':'width:110px; margin-top:0px;text-align:center;'}),
+ dict(name='a', attrs={'style':'width:110px; margin-top:0px; margin-right:20px;text-align:center;'}),
+ {'attrs':{'class':['article_links', 'header', 'body_right']}},
+ {'id':['crumbs']},
+ ]
feeds = [ ('Anandtech', 'http://www.anandtech.com/rss/')]
diff --git a/recipes/benchmark_pl.recipe b/recipes/benchmark_pl.recipe
index 00eea1be68..9544abdfcf 100644
--- a/recipes/benchmark_pl.recipe
+++ b/recipes/benchmark_pl.recipe
@@ -1,6 +1,6 @@
from calibre.web.feeds.news import BasicNewsRecipe
import re
-class Benchmark_pl(BasicNewsRecipe):
+class BenchmarkPl(BasicNewsRecipe):
title = u'Benchmark.pl'
__author__ = 'fenuks'
description = u'benchmark.pl -IT site'
@@ -14,7 +14,7 @@ class Benchmark_pl(BasicNewsRecipe):
preprocess_regexps = [(re.compile(ur'