Add two more required packages — Astropy and APLpy
Remove hard-coded year in copyright string in the gtk.AboutDialog

Avoid having to manually update, every January, the year in the
copyright notice in the about dialog ("Copyright © 2013 Víctor Terrón
& Matilde Fernández"). Instead, use 'YYYY' as a placeholder, and make
LEMONJuicerGUI.handle_show_about() replace it with the current year
before the gtk.AboutDialog is run().
Add FindingChartDialog.mark_star()

When the user clicks on the finding chart, find the star closest to
those x- and y-image coordinates and highlight it using a red marker.
This functionality is implemented by FindingChartDialog.mark_star(), a
callback function to which Matplotlib's 'button_press_event' (mouse
button is pressed) is connected. The markers are always stored in a
new layer with the same name, so that only the last one is visible.
FindingChartDialog.mark_star(): select stars on right click only
FindingChartDialog.mark_star(): ignore clicks outside of the axes
Add a 'Go to Star' button to the Finding Chart window

Use a stock button, STOCK_GO_FORWARD (an arrow pointing to the right)
with a different label, 'Go to Star'. In order to achieve this, as
suggested by Christian Reis in the PyGTK FAQ, we get the label child
of the stock button and set the text directly. The button is not yet
functional, but it is already disabled until a star is selected.
Split LEMONJuicerGUI.handle_row_activated() into two methods

Factor out part of LEMONJuicerGUI.handle_row_activated() into a new
method, LEMONJuicerGUI.view_star() — which takes care of adding a new
page to the gtk.Notebook with the details of the star, or switches to
it if the page already exists. This allows us to view the details of
a star by calling this method anywhere in our code, and not only by
clicking in the list of stars.
Rename LEMONJuicerGUI.show_star() to add_star_page()
View the details of a star when the user clicks on 'Go to Star'

Add a new method, FindingChartDialog.goto_star(), and connect to it
the 'button-press-event' of the 'Go to Star' button. __init__() now
receives the main window, LEMONJuicerGUI, as an argument, since
goto_star() needs to be able to call its view_star() method.
Make the Finding Chart window non-modal

By making the Finding Chart non-modal and, therefore, not preventing
the workflow on the main window, the user can arrange the two windows
side by side, easily switching between them. The run() method blocks
in a recursive main loop until the dialog either emits the 'response'
signal or is destroyed, so we now need to use show().
Make the 'Finding Chart' button hide the window if clicked again

Modify LEMONJuicerGUI.view_finding_chart() and make it show the
Finding Chart window if it is hidden, and vice versa. In this manner,
clicking again the 'Finding Chart' button (or item in the View menu)
or pressing the <Control>F accelerator alternates between hiding and
showing this window.
Make the <Control>F accelerator work in the Finding Chart window too

Setting <Control>F as the accelerator of the 'Finding Chart' button,
in the toolbar of the LEMONJuicerGUI, has the limitation that it does
not work when the focus is on a different window. However, in the same
way that clicking the button again closes the Finding Chart window, we
would like to be able to show and hide it by repeatedly pressing the
accelerator key.

To achieve this, install the <Control>F accelerator in an accelerator
group in the main window of LEMONJuicerGUI, and then connect to it the
FindingChartDialog window. Since both windows are associated with the
same accelerator group, <Control>F works independently of where the
focus is.
Turn the 'Finding Chart' button into a gtk.ToggleToolButton

Use a gtk.ToggleToolButton, not a gtk.ToolButton, for the 'Finding
Chart' button in the LEMONJuicerGUI toolbar, and update its status to
reflect whether the Finding Chart window is being displayed: active if
visible, inactive if not.

However, this window can be shown and hidden from other events than
just clicking the button (namely, the 'Finding Chart' item in the View
menu and the <Control>F accelerator), so when we update the status of
the button we need to temporarily suppress the 'toggled' signal that
is emitted when gtk.ToggleToolButton.set_active() is called. That is
what FindingChartDialog.set_finding_chart_button_active() does.
Destroy the Finding Chart window when the LEMONdB is closed
Set 'Go to Star' as the default button when a star is selected

When a star is selected in the Finding Chart window, change the
default button (normally activated pressing Enter) from 'Close' to 'Go
to Star'. If the user clicks the button, then set 'Close' again as the
default response. This allows to rapidly view the details of a star
and then close the Finding Chart window by pressing Enter twice.

Regardless of the above paragraph, the default button is always set to
'Close' when the Finding Chart window changes from hidden to visible,
even although a star could have been previously selected. This marker
is not deleted because it acts as a useful reminder of what was the
last selected star.
Use 'G' as the mnemonic for the 'Go to Star' button

The creation of the mnemonic (an underscore in the text of the label,
indicating that the next character should be used for the mnemonic) is
not compatible with the solution that we used to modify the label of a
stock button, so we have to use a different approach: registering our
own stock button and reusing the image from gtk.STOCK_GO_FORWARD, as
suggested by Doug Quale in the PyGTK FAQ.
Set <Control>F as the accelerator for the 'Go to Star' button

Make it possible to activate the 'Go to Star' button with either the
<Control>F accelerator or the <Alt>G mnemonic key. In this manner, the
user can quickly show and hide the Finding Chart window (<Control>F)
and view the details of the selected star (<Control>G).
Add unit test for FITSImage.update_keyword()
LEMONdB.get_photometry(): cast star ID to Python's built-in int

Avoid the "sqlite3.InterfaceError: Error binding parameter - probably
unsupported type" exception raised by LEMONdB.get_photometry() if the
star ID is a NumPy integer and not the expected Python's built-in int.
Thanks to Javier Blasco for reporting this.