6 new revisions:
Revision: 8a5c16d2f90d
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Tue Feb 21 11:03:48 2012
Log: continue refactoring import code
http://code.google.com/p/gpapers/source/detail?r=8a5c16d2f90d
Revision: e944b97a79df
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Tue Feb 21 12:16:39 2012
Log: Start conversion to GTK3: automatic conversion with
pygi-convert.sh
http://code.google.com/p/gpapers/source/detail?r=e944b97a79df
Revision: b80b25dbf0af
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Wed Feb 22 16:03:16 2012
Log: manual changes for GTK3 conversion
http://code.google.com/p/gpapers/source/detail?r=b80b25dbf0af
Revision: 08c1af9ca7a7
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Wed Feb 22 14:11:33 2012
Log: simplify column sorting code
http://code.google.com/p/gpapers/source/detail?r=08c1af9ca7a7
Revision: a2c46f795eaf
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Wed Feb 22 15:18:23 2012
Log: some fixes for PDF preview
http://code.google.com/p/gpapers/source/detail?r=a2c46f795eaf
Revision: 02fcd4b316b5
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Thu Feb 23 10:47:00 2012
Log: minor UI changes and small fixes
http://code.google.com/p/gpapers/source/detail?r=02fcd4b316b5
==============================================================================
Revision: 8a5c16d2f90d
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Tue Feb 21 11:03:48 2012
Log: continue refactoring import code
http://code.google.com/p/gpapers/source/detail?r=8a5c16d2f90d
Modified:
/gPapers.py
/importer/google_scholar.py
/importer/jstor.py
/importer/pubmed.py
=======================================
--- /gPapers.py Thu Feb 16 14:38:19 2012
+++ /gPapers.py Tue Feb 21 11:03:48 2012
@@ -462,6 +462,9 @@
def __init__(self):
gnome.init(PROGRAM, VERSION)
+ self.provider = {1 : pubmed.PubMedSearch(),
+ 2 : google_scholar.GoogleScholarSearch(),
+ 3 : jstor.JSTORSearch()}
self.ui = gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'ui.xml')
self.main_window = self.ui.get_object('main_window')
@@ -476,9 +479,6 @@
self.init_bookmark_pane()
self.init_pdf_preview_pane()
self.refresh_left_pane()
- self.pubmed_search = pubmed.PubMedSearch()
- self.google_scholar_search = google_scholar.GoogleScholarSearch()
- self.jstor_search = jstor.JSTORSearch()
self.main_window.show()
def init_busy_notifier(self):
@@ -579,7 +579,7 @@
playlist, created = Playlist.objects.get_or_create(
title='search: <i>%s</i>' %
self.ui.get_object('middle_pane_search').get_text(),
search_text=self.ui.get_object('middle_pane_search').get_text(),
- parent=str(rows[0][0])
+ parent=self.provider[rows[0][0]]
)
if created: playlist.save()
self.refresh_left_pane()
@@ -596,6 +596,13 @@
self.refresh_left_pane()
def refresh_middle_pane_search(self):
+ selection = self.ui.get_object('left_pane').get_selection()
+ _, rows = selection.get_selected_rows()
+ if rows[0][0] > 0:
+ # For the external search providers: clear cache
+ text = self.ui.get_object('middle_pane_search').get_text()
+ self.provider[rows[0][0]].clear_cache(text)
+
self.last_middle_pane_search_string = None
#FIXME: Use signal instead
@@ -896,32 +903,15 @@
self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>never read</i>',
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'applications-development.png')),
-5, False))
self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>highest rated</i>',
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'emblem-favorite.png')),
-4, False))
- self.left_pane_model.append(None, ('PubMed',
-
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'favicon_pubmed.ico')),
-1, False))
- for playlist in Playlist.objects.filter(parent='1'):
- if playlist.search_text:
- icon = left_pane.render_icon(gtk.STOCK_FIND,
gtk.ICON_SIZE_MENU)
- else:
- icon = left_pane.render_icon(gtk.STOCK_DND_MULTIPLE,
gtk.ICON_SIZE_MENU)
-
self.left_pane_model.append(self.left_pane_model.get_iter((1),),
(playlist.title, icon,
playlist.id, True))
-
- self.left_pane_model.append(None, ('Google Scholar',
-
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'favicon_google.ico')),
-1, False))
- for playlist in Playlist.objects.filter(parent='2'):
- if playlist.search_text:
- icon = left_pane.render_icon(gtk.STOCK_FIND,
gtk.ICON_SIZE_MENU)
- else:
- icon = left_pane.render_icon(gtk.STOCK_DND_MULTIPLE,
gtk.ICON_SIZE_MENU)
-
self.left_pane_model.append(self.left_pane_model.get_iter((2),),
(playlist.title, icon,
playlist.id, True))
-
- self.left_pane_model.append(None, ('JSTOR',
-
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'favicon_jstor.ico')),
-1, False))
- for playlist in Playlist.objects.filter(parent='3'):
- if playlist.search_text:
- icon = left_pane.render_icon(gtk.STOCK_FIND,
gtk.ICON_SIZE_MENU)
- else:
- icon = left_pane.render_icon(gtk.STOCK_DND_MULTIPLE,
gtk.ICON_SIZE_MENU)
-
self.left_pane_model.append(self.left_pane_model.get_iter((3),),
(playlist.title, icon,
playlist.id, True))
+ for _, provider in self.provider.iteritems():
+ self.left_pane_model.append(None, (
provider.name,
+
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons',
provider.icon)), -1, False))
+ for playlist in Playlist.objects.filter(parent=provider.label):
+ if playlist.search_text:
+ icon = left_pane.render_icon(gtk.STOCK_FIND,
gtk.ICON_SIZE_MENU)
+ else:
+ icon = left_pane.render_icon(gtk.STOCK_DND_MULTIPLE,
gtk.ICON_SIZE_MENU)
+
self.left_pane_model.append(self.left_pane_model.get_iter((1),),
(playlist.title, icon,
playlist.id, True))
left_pane.expand_all()
self.ui.get_object('left_pane').get_selection().select_path((0,))
@@ -978,12 +968,8 @@
log_debug('rows[0][0]: %d' % rows[0][0])
if rows[0][0] == 0:
self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(self.refresh_middle_pane_from_my_library, (True,))
- elif rows[0][0] == 1:
- self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.pubmed_search), ())
- elif rows[0][0] == 2:
- self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.google_scholar_search), ())
- elif rows[0][0] == 3:
- self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.jstor_search), ())
+ else:
+ self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.provider[rows[0][0]]), ())
self.select_middle_top_pane_item(self.ui.get_object('middle_top_pane').get_selection())
=======================================
--- /importer/google_scholar.py Sun Feb 12 09:39:55 2012
+++ /importer/google_scholar.py Tue Feb 21 11:03:48 2012
@@ -21,10 +21,18 @@
'/scholar_setprefs?num=100&scis=yes&scisf=4&submit=Save+Preferences')
log_debug('Google Scholar: Returned status: %d' % params['status'])
+
self.name = 'Google Scholar'
+ self.label = 'google_scholar'
+ self.icon = 'favicon_google.ico'
+
# Remember previous search results so that no new search is
necessary.
# Useful especially if switching between libraries/searches in the
left
# pane
self.search_cache = {}
+
+ def clear_cache(self, text):
+ if text in self.search_cache:
+ del self.search_cache[text]
def unique_key(self):
return 'import_url'
=======================================
--- /importer/jstor.py Sun Feb 12 12:44:15 2012
+++ /importer/jstor.py Tue Feb 21 11:03:48 2012
@@ -1,4 +1,14 @@
class JSTORSearch(object):
+ def __init__(self):
+
self.name = 'JSTOR'
+ self.label = 'jstor'
+ self.icon = 'favicon_jstor.ico'
+ self.search_cache = {}
+
+ def clear_cache(self, text):
+ if text in self.search_cache:
+ del self.search_cache[text]
+
def search(self, search_text):
return [] #Not implemented yet
=======================================
--- /importer/pubmed.py Sun Feb 12 12:38:33 2012
+++ /importer/pubmed.py Tue Feb 21 11:03:48 2012
@@ -17,10 +17,17 @@
def __init__(self):
self.search_cache = {}
+
self.name = 'PubMed'
+ self.label = 'pubmed'
+ self.icon = 'favicon_pubmed.ico'
def unique_key(self):
return 'pubmed_id'
+ def clear_cache(self, text):
+ if text in self.search_cache:
+ del self.search_cache[text]
+
def search(self, search_text):
'''
Returns a list of dictionaries: The PUBMED results for the given
search
==============================================================================
Revision: e944b97a79df
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Tue Feb 21 12:16:39 2012
Log: Start conversion to GTK3: automatic conversion with
pygi-convert.sh
http://code.google.com/p/gpapers/source/detail?r=e944b97a79df
Modified:
/gPapers.py
/importer/__init__.py
=======================================
--- /gPapers.py Tue Feb 21 11:03:48 2012
+++ /gPapers.py Tue Feb 21 12:16:39 2012
@@ -47,23 +47,23 @@
# GUI imports
try:
- import pygtk
- pygtk.require("2.0")
- import gobject
- import gtk
+ import gi
+ pyGtk.require("2.0")
+ from gi.repository import GObject
+ from gi.repository import Gtk
import gnome
import gnome.ui
- import pango
- gobject.threads_init()
- gtk.gdk.threads_init()
+ from gi.repository import Pango
+ GObject.threads_init()
+ Gdk.threads_init()
except:
traceback.print_exc()
log_error('Could not import required GTK libraries.')
sys.exit()
-LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION = ('add_to_playlist',
gtk.TARGET_SAME_APP, 0)
-MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION = ('reorder_playlist',
gtk.TARGET_SAME_WIDGET, 1)
-PDF_PREVIEW_MOVE_NOTE_DND_ACTION = ('move_note', gtk.TARGET_SAME_WIDGET, 2)
+LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION = ('add_to_playlist',
Gtk.TargetFlags.SAME_APP, 0)
+MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION = ('reorder_playlist',
Gtk.TargetFlags.SAME_WIDGET, 1)
+PDF_PREVIEW_MOVE_NOTE_DND_ACTION = ('move_note',
Gtk.TargetFlags.SAME_WIDGET, 2)
import settings
import desktop, openanything
@@ -80,9 +80,9 @@
from importer import html_strip, pango_escape, get_md5_hexdigest_from_data
from importer import pubmed, google_scholar, jstor
-NOTE_ICON =
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'note.png'))
-BOOKMARK_ICON =
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'bookmark.png'))
-GRAPH_ICON =
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'drawing.png'))
+NOTE_ICON =
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'note.png'))
+BOOKMARK_ICON =
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'bookmark.png'))
+GRAPH_ICON =
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'drawing.png'))
def humanize_count(x, s, p, places=1):
output = []
@@ -112,11 +112,11 @@
def set_model_from_list(cb, items):
"""Setup a ComboBox or ComboBoxEntry based on a list of (int,str)s."""
- model = gtk.ListStore(int, str)
+ model = Gtk.ListStore(int, str)
for i in items:
model.append(i)
cb.set_model(model)
- cell = gtk.CellRendererText()
+ cell = Gtk.CellRendererText()
cb.pack_start(cell, True)
cb.add_attribute(cell, 'text', 1)
@@ -133,12 +133,12 @@
#column.connect('clicked', self.sortRows)
for renderer in column.get_cell_renderers():
if renderer.__class__.__name__ == 'CellRendererText':
- renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
+ renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
treeview_sort_states = {}
def sort_model_by_column(column, model, model_column_number):
global treeview_sort_states
- sort_order = treeview_sort_states.get(str(model) + '-sort_order',
gtk.SORT_ASCENDING)
+ sort_order = treeview_sort_states.get(str(model) + '-sort_order',
Gtk.SortType.ASCENDING)
last_sort_column = treeview_sort_states.get(str(model)
+ '-last_sort_column', None)
if last_sort_column is not None:
@@ -146,17 +146,17 @@
# Ascending or descending?
if last_sort_column == column:
- if sort_order == gtk.SORT_ASCENDING:
- sort_order = gtk.SORT_DESCENDING
+ if sort_order == Gtk.SortType.ASCENDING:
+ sort_order = Gtk.SortType.DESCENDING
else:
- sort_order = gtk.SORT_ASCENDING
+ sort_order = Gtk.SortType.ASCENDING
else:
- sort_order = gtk.SORT_ASCENDING
+ sort_order = Gtk.SortType.ASCENDING
treeview_sort_states[str(model) + '-last_sort_column'] = column
treeview_sort_states[str(model) + '-sort_order'] = sort_order
rows = [tuple(r) + (i,) for i, r in enumerate(model)]
- rows.sort(key=lambda x:x[model_column_number], reverse=sort_order ==
gtk.SORT_DESCENDING)
+ rows.sort(key=lambda x:x[model_column_number], reverse=sort_order ==
Gtk.SortType.DESCENDING)
model.reorder([r[-1] for r in rows])
column.set_sort_indicator(True)
@@ -304,12 +304,12 @@
paper.delete()
def show_html_error_dialog(code):
- gtk.gdk.threads_enter()
- error = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_OK, flags=gtk.DIALOG_MODAL)
+ Gdk.threads_enter()
+ error = Gtk.MessageDialog(type=Gtk.MessageType.ERROR,
buttons=Gtk.ButtonsType.OK, flags=Gtk.DialogFlags.MODAL)
error.connect('response', lambda x, y: error.destroy())
error.set_markup('<b>Unable to Search External Repository</b>\n\nHTTP
Error code: %d' % code)
error.run()
- gtk.gdk.threads_leave()
+ Gdk.threads_leave()
def row_from_dictionary(info, provider=None):
assert info is not None
@@ -346,19 +346,19 @@
Opens a dialog for entering an URL. For importing this URL,
``import_citation`` is called in a new thread.
'''
- dialog = gtk.MessageDialog(parent=self.main_window,
- type=gtk.MESSAGE_QUESTION,
- buttons=gtk.BUTTONS_OK_CANCEL,
- flags=gtk.DIALOG_MODAL)
+ dialog = Gtk.MessageDialog(parent=self.main_window,
+ type=Gtk.MessageType.QUESTION,
+ buttons=Gtk.ButtonsType.OK_CANCEL,
+ flags=Gtk.DialogFlags.MODAL)
#dialog.connect('response', lambda x,y: dialog.destroy())
dialog.set_markup('<b>Import URL...</b>\n\nEnter the URL you would
like to import:')
- entry = gtk.Entry()
+ entry = Gtk.Entry()
entry.set_activates_default(True)
- dialog.vbox.pack_start(entry)
- dialog.set_default_response(gtk.RESPONSE_OK)
+ dialog.vbox.pack_start(entry, True, True, 0)
+ dialog.set_default_response(Gtk.ResponseType.OK)
dialog.show_all()
response = dialog.run()
- if response == gtk.RESPONSE_OK:
+ if response == Gtk.ResponseType.OK:
url = entry.get_text()
threading.Thread(target=importer.import_citation,
args=(url, None,
@@ -371,19 +371,19 @@
http://dx.doi.org/... URL, ``import_citation`` is called in a new
thread.
'''
- dialog = gtk.MessageDialog(parent=self.main_window,
- type=gtk.MESSAGE_QUESTION,
- buttons=gtk.BUTTONS_OK_CANCEL,
- flags=gtk.DIALOG_MODAL)
+ dialog = Gtk.MessageDialog(parent=self.main_window,
+ type=Gtk.MessageType.QUESTION,
+ buttons=Gtk.ButtonsType.OK_CANCEL,
+ flags=Gtk.DialogFlags.MODAL)
#dialog.connect('response', lambda x,y: dialog.destroy())
dialog.set_markup('<b>Import via DOI...</b>\n\nEnter the DOI name
(e.g., 10.1000/182) you would like to import:')
- entry = gtk.Entry()
+ entry = Gtk.Entry()
entry.set_activates_default(True)
- dialog.vbox.pack_start(entry)
- dialog.set_default_response(gtk.RESPONSE_OK)
+ dialog.vbox.pack_start(entry, True, True, 0)
+ dialog.set_default_response(Gtk.ResponseType.OK)
dialog.show_all()
response = dialog.run()
- if response == gtk.RESPONSE_OK:
+ if response == Gtk.ResponseType.OK:
url = '
http://dx.doi.org/' + entry.get_text().strip()
threading.Thread(target=importer.import_citation,
args=(url, None,
@@ -395,18 +395,18 @@
Opens a dialog for chosing one or several files. If any files are
chosen, ``import_documents_via_filenames`` is called in a new
thread.
'''
- dialog = gtk.FileChooserDialog(title='Select one or more files
import…',
+ dialog = Gtk.FileChooserDialog(title='Select one or more files
import…',
parent=self.main_window,
- action=gtk.FILE_CHOOSER_ACTION_OPEN,
- buttons=(gtk.STOCK_CANCEL,
- gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN,
- gtk.RESPONSE_OK))
- dialog.set_default_response(gtk.RESPONSE_OK)
+ action=Gtk.FileChooserAction.OPEN,
+ buttons=(Gtk.STOCK_CANCEL,
+ Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_OPEN,
+ Gtk.ResponseType.OK))
+ dialog.set_default_response(Gtk.ResponseType.OK)
dialog.set_select_multiple(True)
dialog.show_all()
response = dialog.run()
- if response == gtk.RESPONSE_OK:
+ if response == Gtk.ResponseType.OK:
threading.Thread(target=import_documents_via_filenames,
args=(dialog.get_filenames(),)).start()
dialog.destroy()
@@ -416,18 +416,18 @@
Opens a dialog for chosing a directory. If a directory is chosen,
``import_documents_via_filenames`` is called in a new thread.
'''
- dialog = gtk.FileChooserDialog(title='Select a directory to
import…',
+ dialog = Gtk.FileChooserDialog(title='Select a directory to
import…',
parent=self.main_window,
-
action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
- buttons=(gtk.STOCK_CANCEL,
- gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN,
- gtk.RESPONSE_OK))
- dialog.set_default_response(gtk.RESPONSE_OK)
+
action=Gtk.FileChooserAction.SELECT_FOLDER,
+ buttons=(Gtk.STOCK_CANCEL,
+ Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_OPEN,
+ Gtk.ResponseType.OK))
+ dialog.set_default_response(Gtk.ResponseType.OK)
dialog.set_select_multiple(True)
dialog.show_all()
response = dialog.run()
- if response == gtk.RESPONSE_OK:
+ if response == Gtk.ResponseType.OK:
threading.Thread(target=import_documents_via_filenames,
args=(dialog.get_filenames(),)).start()
dialog.destroy()
@@ -438,21 +438,21 @@
the information, ``import_documents_via_bibtexs`` is called in a
new
thread.
'''
- dialog = gtk.MessageDialog(parent=self.main_window,
- type=gtk.MESSAGE_QUESTION,
- buttons=gtk.BUTTONS_OK_CANCEL,
- flags=gtk.DIALOG_MODAL)
+ dialog = Gtk.MessageDialog(parent=self.main_window,
+ type=Gtk.MessageType.QUESTION,
+ buttons=Gtk.ButtonsType.OK_CANCEL,
+ flags=Gtk.DialogFlags.MODAL)
#dialog.connect('response', lambda x,y: dialog.destroy())
dialog.set_markup('<b>Import BibTex...</b>\n\nEnter the BibTex
entry (or entries) you would like to import:')
- entry = gtk.TextView()
- scrolledwindow = gtk.ScrolledWindow()
+ entry = Gtk.TextView()
+ scrolledwindow = Gtk.ScrolledWindow()
scrolledwindow.add(entry)
scrolledwindow.set_property('height-request', 300)
- dialog.vbox.pack_start(scrolledwindow)
- dialog.set_default_response(gtk.RESPONSE_OK)
+ dialog.vbox.pack_start(scrolledwindow, True, True, 0)
+ dialog.set_default_response(Gtk.ResponseType.OK)
dialog.show_all()
response = dialog.run()
- if response == gtk.RESPONSE_OK:
+ if response == Gtk.ResponseType.OK:
text_buffer = entry.get_buffer()
bibtex = text_buffer.get_text(text_buffer.get_start_iter(),
text_buffer.get_end_iter())
@@ -465,7 +465,7 @@
self.provider = {1 : pubmed.PubMedSearch(),
2 : google_scholar.GoogleScholarSearch(),
3 : jstor.JSTORSearch()}
- self.ui = gtk.Builder()
+ self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'ui.xml')
self.main_window = self.ui.get_object('main_window')
self.main_window.connect("delete-event", lambda x, y: sys.exit(0))
@@ -488,12 +488,12 @@
treeview_running_tasks =
self.ui.get_object('treeview_running_tasks')
# thread_id, text
- self.treeview_running_tasks_model = gtk.ListStore(int, str)
+ self.treeview_running_tasks_model = Gtk.ListStore(int, str)
treeview_running_tasks.set_model(self.treeview_running_tasks_model)
- renderer = gtk.CellRendererText()
- renderer.set_property("background", "#fff7e8") #
gtk.gdk.color_parse("#fff7e8")
- column = gtk.TreeViewColumn("Running Tasks...", renderer, text=1)
+ renderer = Gtk.CellRendererText()
+ renderer.set_property("background", "#fff7e8") #
Gdk.color_parse("#fff7e8")
+ column = Gtk.TreeViewColumn("Running Tasks...", renderer, text=1)
column.set_expand(True)
treeview_running_tasks.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(treeview_running_tasks.get_columns())
@@ -539,7 +539,7 @@
self.ui.get_object('save_smart_search').connect('clicked', lambda
x: self.save_smart_search())
def show_about_dialog(self, o):
- about = gtk.AboutDialog()
+ about = Gtk.AboutDialog()
about.set_name('gPapers')
about.set_version(VERSION)
about.set_copyright('Copyright (c) 2008 Derek Anderson')
@@ -556,13 +556,13 @@
def run(self):
parent_self.active_threads[ thread.get_ident() ]
= 'checking for updates...'
output = commands.getoutput('svn update')
- gtk.gdk.threads_enter()
- dialog = gtk.MessageDialog(type=gtk.MESSAGE_INFO,
buttons=gtk.BUTTONS_OK)
+ Gdk.threads_enter()
+ dialog = Gtk.MessageDialog(type=
Gtk.MessageType.INFO,
buttons=Gtk.ButtonsType.OK)
dialog.connect('response', lambda x, y: dialog.destroy())
dialog.set_markup('<b>Output from
SVN:</b>\n\n%s\n\n(restart for changes to take effect)' %
(pango_escape(output)))
dialog.show_all()
response = dialog.run()
- gtk.gdk.threads_leave()
+ Gdk.threads_leave()
if parent_self.active_threads.has_key(thread.get_ident()):
del parent_self.active_threads[ thread.get_ident() ]
t = UpdateThread()
@@ -615,32 +615,32 @@
liststore, rows = selection.get_selected_rows()
selection.unselect_all()
if rows:
- gtk.gdk.threads_enter()
+ Gdk.threads_enter()
selection.select_path((rows[0][0],))
- gtk.gdk.threads_leave()
+ Gdk.threads_leave()
time.sleep(1)
def init_left_pane(self):
left_pane = self.ui.get_object('left_pane')
# name, icon, playlist_id, editable
- self.left_pane_model = gtk.TreeStore(str, gtk.gdk.Pixbuf, int,
bool)
+ self.left_pane_model = Gtk.TreeStore(str, GdkPixbuf.Pixbuf, int,
bool)
left_pane.set_model(self.left_pane_model)
- column = gtk.TreeViewColumn()
+ column = Gtk.TreeViewColumn()
left_pane.append_column(column)
- renderer = gtk.CellRendererPixbuf()
- column.pack_start(renderer, expand=False)
+ renderer = Gtk.CellRendererPixbuf()
+ column.pack_start(renderer, False, True, 0)
column.add_attribute(renderer, 'pixbuf', 1)
- renderer = gtk.CellRendererText()
+ renderer = Gtk.CellRendererText()
renderer.connect('edited', self.handle_playlist_edited)
- column.pack_start(renderer, expand=True)
+ column.pack_start(renderer, True, True, 0)
column.add_attribute(renderer, 'markup', 0)
column.add_attribute(renderer, 'editable', 3)
left_pane.get_selection().connect('changed',
self.select_left_pane_item)
left_pane.connect('button-press-event',
self.handle_left_pane_button_press_event)
-
left_pane.enable_model_drag_dest([LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION],
gtk.gdk.ACTION_COPY)
+
left_pane.enable_model_drag_dest([LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION],
Gdk.DragAction.COPY)
left_pane.connect('drag-data-received',
self.handle_left_pane_drag_data_received_event)
left_pane.connect("drag-motion",
self.handle_left_pane_drag_motion_event)
@@ -652,9 +652,9 @@
pdf_preview.connect("button-press-event",
self.handle_pdf_preview_button_press_event)
# drag and drop stuff for notes
- pdf_preview.drag_source_set(gtk.gdk.BUTTON1_MASK,
[PDF_PREVIEW_MOVE_NOTE_DND_ACTION], gtk.gdk.ACTION_MOVE)
+ pdf_preview.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
[PDF_PREVIEW_MOVE_NOTE_DND_ACTION], Gdk.DragAction.MOVE)
pdf_preview.drag_source_set_icon_pixbuf(NOTE_ICON)
- pdf_preview.drag_dest_set(gtk.DEST_DEFAULT_ALL,
[PDF_PREVIEW_MOVE_NOTE_DND_ACTION], gtk.gdk.ACTION_MOVE)
+ Gtk.drag_dest_set(pdf_preview, Gtk.DEST_DEFAULT_ALL,
[PDF_PREVIEW_MOVE_NOTE_DND_ACTION], Gdk.DragAction.MOVE)
pdf_preview.connect('drag-drop',
self.handle_pdf_preview_drag_drop_event)
self.ui.get_object('button_move_previous_page').connect('clicked',
lambda x: self.goto_pdf_page(self.pdf_preview['current_page_number'] - 1))
@@ -754,15 +754,15 @@
author_filter = self.ui.get_object('author_filter')
# id, author, paper_count
- self.author_filter_model = gtk.ListStore(int, str, int)
+ self.author_filter_model = Gtk.ListStore(int, str, int)
author_filter.set_model(self.author_filter_model)
- author_filter.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- column = gtk.TreeViewColumn("Author", gtk.CellRendererText(),
text=1)
+ author_filter.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ column = Gtk.TreeViewColumn("Author", Gtk.CellRendererText(),
text=1)
column.set_min_width(128)
column.set_expand(True)
column.connect('clicked', sort_model_by_column,
self.author_filter_model, 1)
author_filter.append_column(column)
- column = gtk.TreeViewColumn("Papers", gtk.CellRendererText(),
text=2)
+ column = Gtk.TreeViewColumn("Papers", Gtk.CellRendererText(),
text=2)
column.connect('clicked', sort_model_by_column,
self.author_filter_model, 2)
author_filter.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(author_filter.get_columns())
@@ -772,18 +772,18 @@
organization_filter = self.ui.get_object('organization_filter')
# id, org, author_count, paper_count
- self.organization_filter_model = gtk.ListStore(int, str, int, int)
+ self.organization_filter_model = Gtk.ListStore(int, str, int, int)
organization_filter.set_model(self.organization_filter_model)
-
organization_filter.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
- column = gtk.TreeViewColumn("Organization",
gtk.CellRendererText(), text=1)
+
organization_filter.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
+ column = Gtk.TreeViewColumn("Organization",
Gtk.CellRendererText(), text=1)
column.set_min_width(128)
column.set_expand(True)
column.connect('clicked', sort_model_by_column,
self.organization_filter_model, 1)
organization_filter.append_column(column)
- column = gtk.TreeViewColumn("Authors", gtk.CellRendererText(),
text=2)
+ column = Gtk.TreeViewColumn("Authors", Gtk.CellRendererText(),
text=2)
column.connect('clicked', sort_model_by_column,
self.organization_filter_model, 2)
organization_filter.append_column(column)
- column = gtk.TreeViewColumn("Papers", gtk.CellRendererText(),
text=3)
+ column = Gtk.TreeViewColumn("Papers", Gtk.CellRendererText(),
text=3)
column.connect('clicked', sort_model_by_column,
self.organization_filter_model, 3)
organization_filter.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(organization_filter.get_columns())
@@ -793,21 +793,21 @@
source_filter = self.ui.get_object('source_filter')
# id, name, issue, location, publisher, date
- self.source_filter_model = gtk.ListStore(int, str, str, str, str,
str)
- source_filter.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
+ self.source_filter_model = Gtk.ListStore(int, str, str, str, str,
str)
+ source_filter.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
source_filter.set_model(self.source_filter_model)
- column = gtk.TreeViewColumn("Source", gtk.CellRendererText(),
text=1)
+ column = Gtk.TreeViewColumn("Source", Gtk.CellRendererText(),
text=1)
column.set_min_width(128)
column.set_expand(True)
column.connect('clicked', sort_model_by_column,
self.source_filter_model, 1)
source_filter.append_column(column)
- column = gtk.TreeViewColumn("Issue", gtk.CellRendererText(),
text=2)
+ column = Gtk.TreeViewColumn("Issue", Gtk.CellRendererText(),
text=2)
column.connect('clicked', sort_model_by_column,
self.source_filter_model, 2)
source_filter.append_column(column)
- column = gtk.TreeViewColumn("Location", gtk.CellRendererText(),
text=3)
+ column = Gtk.TreeViewColumn("Location", Gtk.CellRendererText(),
text=3)
column.connect('clicked', sort_model_by_column,
self.source_filter_model, 3)
source_filter.append_column(column)
- column = gtk.TreeViewColumn("Publisher", gtk.CellRendererText(),
text=4)
+ column = Gtk.TreeViewColumn("Publisher", Gtk.CellRendererText(),
text=4)
column.connect('clicked', sort_model_by_column,
self.source_filter_model, 4)
source_filter.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(source_filter.get_columns())
@@ -833,19 +833,19 @@
def init_bookmark_pane(self):
treeview_bookmarks = self.ui.get_object('treeview_bookmarks')
# id, page, title, updated, words
- self.treeview_bookmarks_model = gtk.ListStore(int, int, str, str,
int)
+ self.treeview_bookmarks_model = Gtk.ListStore(int, int, str, str,
int)
treeview_bookmarks.set_model(self.treeview_bookmarks_model)
- column = gtk.TreeViewColumn("Page", gtk.CellRendererText(),
markup=1)
+ column = Gtk.TreeViewColumn("Page", Gtk.CellRendererText(),
markup=1)
column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 1)
treeview_bookmarks.append_column(column)
- column = gtk.TreeViewColumn("Title", gtk.CellRendererText(),
markup=2)
+ column = Gtk.TreeViewColumn("Title", Gtk.CellRendererText(),
markup=2)
column.set_expand(True)
column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 2)
treeview_bookmarks.append_column(column)
- column = gtk.TreeViewColumn("Words", gtk.CellRendererText(),
markup=4)
+ column = Gtk.TreeViewColumn("Words", Gtk.CellRendererText(),
markup=4)
column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 4)
treeview_bookmarks.append_column(column)
- column = gtk.TreeViewColumn("Updated", gtk.CellRendererText(),
markup=3)
+ column = Gtk.TreeViewColumn("Updated", Gtk.CellRendererText(),
markup=3)
column.set_min_width(75)
column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 3)
treeview_bookmarks.append_column(column)
@@ -861,25 +861,25 @@
def init_paper_information_pane(self):
paper_notes = self.ui.get_object('paper_notes')
- paper_notes.modify_base(gtk.STATE_NORMAL,
gtk.gdk.color_parse("#fff7e8"))
- paper_notes.modify_base(gtk.STATE_INSENSITIVE,
gtk.gdk.color_parse("#ffffff"))
+ paper_notes.modify_base(Gtk.StateType.NORMAL,
Gdk.color_parse("#fff7e8"))
+ paper_notes.modify_base(Gtk.StateType.INSENSITIVE,
Gdk.color_parse("#ffffff"))
pane = self.ui.get_object('paper_information_pane')
# text
- self.paper_information_pane_model = gtk.ListStore(str, str)
+ self.paper_information_pane_model = Gtk.ListStore(str, str)
pane.set_model(self.paper_information_pane_model)
pane.connect('size-allocate', self.resize_paper_information_pane)
- column = gtk.TreeViewColumn("", gtk.CellRendererText(), markup=0)
+ column = Gtk.TreeViewColumn("", Gtk.CellRendererText(), markup=0)
column.set_min_width(64)
pane.append_column(column)
- column = gtk.TreeViewColumn()
- renderer = gtk.CellRendererText()
+ column = Gtk.TreeViewColumn()
+ renderer = Gtk.CellRendererText()
#renderer.set_property('editable', True)
- renderer.set_property('wrap-mode', pango.WRAP_WORD)
+ renderer.set_property('wrap-mode', Pango.WrapMode.WORD)
renderer.set_property('wrap-width', 500)
- column.pack_start(renderer, expand=True)
+ column.pack_start(renderer, True, True, 0)
column.add_attribute(renderer, 'markup', 1)
pane.append_column(column)
@@ -891,26 +891,26 @@
def refresh_left_pane(self):
left_pane = self.ui.get_object('left_pane')
self.left_pane_model.clear()
- self.left_pane_model.append(None, ('<b>My Library</b>',
left_pane.render_icon(gtk.STOCK_HOME, gtk.ICON_SIZE_MENU), -1, False))
+ self.left_pane_model.append(None, ('<b>My Library</b>',
left_pane.render_icon(Gtk.STOCK_HOME, Gtk.IconSize.MENU), -1, False))
for playlist in Playlist.objects.filter(parent='0'):
if playlist.search_text:
- icon = left_pane.render_icon(gtk.STOCK_FIND,
gtk.ICON_SIZE_MENU)
+ icon = left_pane.render_icon(Gtk.STOCK_FIND,
Gtk.IconSize.MENU)
else:
- icon = left_pane.render_icon(gtk.STOCK_DND_MULTIPLE,
gtk.ICON_SIZE_MENU)
+ icon = left_pane.render_icon(Gtk.STOCK_DND_MULTIPLE,
Gtk.IconSize.MENU)
self.left_pane_model.append(self.left_pane_model.get_iter((0),),
(playlist.title, icon,
playlist.id, True))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>recently added</i>', left_pane.render_icon(gtk.STOCK_NEW,
gtk.ICON_SIZE_MENU), -2, False))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>most often read</i>', left_pane.render_icon(gtk.STOCK_DIALOG_INFO,
gtk.ICON_SIZE_MENU), -3, False))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>never read</i>',
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'applications-development.png')),
-5, False))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>highest rated</i>',
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'emblem-favorite.png')),
-4, False))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>recently added</i>', left_pane.render_icon(Gtk.STOCK_NEW,
Gtk.IconSize.MENU), -2, False))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>most often read</i>', left_pane.render_icon(Gtk.STOCK_DIALOG_INFO,
Gtk.IconSize.MENU), -3, False))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>never read</i>',
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'applications-development.png')),
-5, False))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>highest rated</i>',
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'emblem-favorite.png')),
-4, False))
for _, provider in self.provider.iteritems():
self.left_pane_model.append(None, (
provider.name,
-
gtk.gdk.pixbuf_new_from_file(os.path.join(RUN_FROM_DIR, 'icons',
provider.icon)), -1, False))
+
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons',
provider.icon)), -1, False))
for playlist in Playlist.objects.filter(parent=provider.label):
if playlist.search_text:
- icon = left_pane.render_icon(gtk.STOCK_FIND,
gtk.ICON_SIZE_MENU)
+ icon = left_pane.render_icon(Gtk.STOCK_FIND,
Gtk.IconSize.MENU)
else:
- icon = left_pane.render_icon(gtk.STOCK_DND_MULTIPLE,
gtk.ICON_SIZE_MENU)
+ icon = left_pane.render_icon(Gtk.STOCK_DND_MULTIPLE,
Gtk.IconSize.MENU)
self.left_pane_model.append(self.left_pane_model.get_iter((1),),
(playlist.title, icon,
playlist.id, True))
left_pane.expand_all()
@@ -926,16 +926,16 @@
self.ui.get_object('middle_pane_label').set_markup(liststore[rows[0]][0])
self.middle_top_pane_model.clear()
- button = gtk.ToolButton(gtk.STOCK_ADD)
- button.set_tooltip(gtk.Tooltips(), 'Create a new document
collection...')
+ button = Gtk.ToolButton(Gtk.STOCK_ADD)
+ button.set_tooltip(Gtk.Tooltips(), 'Create a new document
collection...')
button.connect('clicked', lambda x: self.create_playlist())
button.show()
left_pane_toolbar.insert(button, -1)
try:
self.current_playlist =
Playlist.objects.get(id=liststore[rows[0]][2])
- button = gtk.ToolButton(gtk.STOCK_DELETE)
- button.set_tooltip(gtk.Tooltips(), 'Delete this collection...')
+ button = Gtk.ToolButton(Gtk.STOCK_DELETE)
+ button.set_tooltip(Gtk.Tooltips(), 'Delete this collection...')
button.connect('clicked', lambda x:
self.delete_playlist(
self.current_playlist.id))
button.show()
left_pane_toolbar.insert(button, -1)
@@ -976,50 +976,50 @@
def init_middle_top_pane(self):
middle_top_pane = self.ui.get_object('middle_top_pane')
# id, authors, title, journal, year, rating, abstract, icon,
import_url, doi, created, updated, empty_str, pubmed_id, data, search
provider
- self.middle_top_pane_model = gtk.ListStore(int, str, str, str,
str, int, str, gtk.gdk.Pixbuf, str, str, str, str, str, str, object, object)
+ self.middle_top_pane_model = Gtk.ListStore(int, str, str, str,
str, int, str, GdkPixbuf.Pixbuf, str, str, str, str, str, str, object,
object)
middle_top_pane.set_model(self.middle_top_pane_model)
- middle_top_pane.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
+
middle_top_pane.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
middle_top_pane.connect('button-press-event',
self.handle_middle_top_pane_button_press_event)
- #middle_top_pane.append_column( gtk.TreeViewColumn("",
gtk.CellRendererToggle(), active=7) )
- #column = gtk.TreeViewColumn("Title", gtk.CellRendererText(),
markup=2)
+ #middle_top_pane.append_column( Gtk.TreeViewColumn("",
Gtk.CellRendererToggle(), active=7) )
+ #column = Gtk.TreeViewColumn("Title", Gtk.CellRendererText(),
markup=2)
#column.set_min_width(256)
#column.set_expand(True)
#middle_top_pane.append_column( column )
- column = gtk.TreeViewColumn()
+ column = Gtk.TreeViewColumn()
column.set_title('Title')
column.set_min_width(-1)
- renderer = gtk.CellRendererPixbuf()
- column.pack_start(renderer, expand=False)
+ renderer = Gtk.CellRendererPixbuf()
+ column.pack_start(renderer, False, True, 0)
column.add_attribute(renderer, 'pixbuf', 7)
- renderer = gtk.CellRendererText()
- column.pack_start(renderer, expand=True)
+ renderer = Gtk.CellRendererText()
+ column.pack_start(renderer, True, True, 0)
column.add_attribute(renderer, 'markup', 2)
column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 2)
middle_top_pane.append_column(column)
- column = gtk.TreeViewColumn("Authors", gtk.CellRendererText(),
markup=1)
+ column = Gtk.TreeViewColumn("Authors", Gtk.CellRendererText(),
markup=1)
column.set_min_width(-1)
column.set_expand(True)
column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 1)
middle_top_pane.append_column(column)
- column = gtk.TreeViewColumn("Journal", gtk.CellRendererText(),
markup=3)
+ column = Gtk.TreeViewColumn("Journal", Gtk.CellRendererText(),
markup=3)
column.set_min_width(-1)
column.set_expand(True)
column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 3)
middle_top_pane.append_column(column)
- column = gtk.TreeViewColumn("Year", gtk.CellRendererText(),
markup=4)
+ column = Gtk.TreeViewColumn("Year", Gtk.CellRendererText(),
markup=4)
column.set_min_width(-1)
column.set_expand(False)
column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 4)
middle_top_pane.append_column(column)
- column = gtk.TreeViewColumn("Rating", gtk.CellRendererProgress(),
value=5, text=12)
+ column = Gtk.TreeViewColumn("Rating", Gtk.CellRendererProgress(),
value=5, text=12)
column.set_min_width(-1)
column.set_expand(False)
column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 5)
middle_top_pane.append_column(column)
- column = gtk.TreeViewColumn("Imported", gtk.CellRendererText(),
markup=10)
+ column = Gtk.TreeViewColumn("Imported", Gtk.CellRendererText(),
markup=10)
column.set_min_width(80)
column.set_expand(False)
column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 10)
@@ -1030,9 +1030,9 @@
middle_top_pane.connect('row-activated',
self.handle_middle_top_pane_row_activated)
middle_top_pane.get_selection().connect('changed',
self.select_middle_top_pane_item)
- middle_top_pane.enable_model_drag_source(gtk.gdk.BUTTON1_MASK,
[LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION,
MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION], gtk.gdk.ACTION_COPY |
gtk.gdk.ACTION_MOVE)
+
middle_top_pane.enable_model_drag_source(Gdk.ModifierType.BUTTON1_MASK,
[LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION,
MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION], Gdk.DragAction.COPY |
Gdk.DragAction.MOVE)
middle_top_pane.connect('drag-data-get',
self.handle_middle_top_pane_drag_data_get)
-
middle_top_pane.enable_model_drag_dest([MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION],
gtk.gdk.ACTION_MOVE)
+
middle_top_pane.enable_model_drag_dest([MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION],
Gdk.DragAction.MOVE)
middle_top_pane.connect('drag-data-received',
self.handle_middle_top_pane_drag_data_received_event)
def handle_middle_top_pane_row_activated(self, treeview, path,
view_column):
@@ -1076,8 +1076,8 @@
treeview.set_cursor(path, col, 0)
playlist_id =
self.left_pane_model.get_value(self.left_pane_model.get_iter(path), 2)
if playlist_id >= 0: #len(path)==2:
- menu = gtk.Menu()
- delete = gtk.ImageMenuItem(stock_id=gtk.STOCK_DELETE)
+ menu = Gtk.Menu()
+ delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
delete.connect('activate', lambda x:
self.delete_playlist(playlist_id))
menu.append(delete)
menu.show_all()
@@ -1112,30 +1112,30 @@
if event.button == 3:
if self.displayed_paper and current_page_number >= 0:
- menu = gtk.Menu()
+ menu = Gtk.Menu()
if bookmark:
if
bookmark.page > 0:
- menuitem = gtk.MenuItem('Move to previous page')
+ menuitem = Gtk.MenuItem('Move to previous page')
menuitem.connect('activate', lambda x, i:
self.move_bookmark(bookmark, page=i),
bookmark.page - 1)
menu.append(menuitem)
if
bookmark.page < self.pdf_preview['n_pages'] - 1:
- menuitem = gtk.MenuItem('Move to next page')
+ menuitem = Gtk.MenuItem('Move to next page')
menuitem.connect('activate', lambda x, i:
self.move_bookmark(bookmark, page=i),
bookmark.page + 1)
menu.append(menuitem)
if self.pdf_preview['n_pages'] > 1:
- menuitem = gtk.MenuItem('Move to page')
- submenu = gtk.Menu()
+ menuitem = Gtk.MenuItem('Move to page')
+ submenu = Gtk.Menu()
for i in range(0, self.pdf_preview['n_pages']):
- submenu_item = gtk.MenuItem(str(i + 1))
+ submenu_item = Gtk.MenuItem(str(i + 1))
submenu_item.connect('activate', lambda x, i:
self.move_bookmark(bookmark, i), i)
submenu.append(submenu_item)
menuitem.set_submenu(submenu)
menu.append(menuitem)
- delete = gtk.ImageMenuItem(stock_id=gtk.STOCK_DELETE)
+ delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
delete.connect('activate', lambda x:
self.delete_bookmark(
bookmark.id))
menu.append(delete)
else:
- add = gtk.ImageMenuItem(stock_id=gtk.STOCK_ADD)
+ add = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_ADD)
add.connect('activate', lambda x:
self.add_bookmark(self.displayed_paper, current_page_number, x_percent,
y_percent))
menu.append(add)
menu.show_all()
@@ -1181,16 +1181,16 @@
treeview.set_cursor(path, col, 0)
paper_id =
self.middle_top_pane_model.get_value(self.middle_top_pane_model.get_iter(path),
0)
if paper_id >= 0: #len(path)==2:
- menu = gtk.Menu()
+ menu = Gtk.Menu()
paper = Paper.objects.get(id=paper_id)
if paper and paper.full_text and
os.path.isfile(paper.full_text.path):
- button = gtk.ImageMenuItem(gtk.STOCK_OPEN)
+ button = Gtk.ImageMenuItem(Gtk.STOCK_OPEN)
button.connect('activate', lambda x: paper.open())
menu.append(button)
- button = gtk.ImageMenuItem(gtk.STOCK_EDIT)
+ button = Gtk.ImageMenuItem(Gtk.STOCK_EDIT)
button.connect('activate', lambda x:
PaperEditGUI(
paper.id))
menu.append(button)
- button = gtk.ImageMenuItem(gtk.STOCK_DELETE)
+ button = Gtk.ImageMenuItem(Gtk.STOCK_DELETE)
button.connect('activate', lambda x:
self.delete_papers([
paper.id]))
menu.append(button)
menu.show_all()
@@ -1209,25 +1209,25 @@
treeview.set_cursor(path, col, 0)
id =
self.author_filter_model.get_value(self.author_filter_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
- menu = gtk.Menu()
- edit = gtk.ImageMenuItem(stock_id=gtk.STOCK_EDIT)
+ menu = Gtk.Menu()
+ edit = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_EDIT)
edit.connect('activate', lambda x: AuthorEditGUI(id))
menu.append(edit)
- edit = gtk.MenuItem('Colleague Graph...')
+ edit = Gtk.MenuItem('Colleague Graph...')
edit.connect('activate', lambda x:
self.graph_authors([id]))
menu.append(edit)
- menuitem = gtk.MenuItem('Connect to...')
- submenu = gtk.Menu()
+ menuitem = Gtk.MenuItem('Connect to...')
+ submenu = Gtk.Menu()
for author in Author.objects.order_by('name'):
if
author.id != id:
- menu_item =
gtk.MenuItem(truncate_long_str(
author.name))
+ menu_item =
Gtk.MenuItem(truncate_long_str(
author.name))
menu_item.connect('activate', lambda x,
author, id: AuthorEditGUI(id).connect(author, id), author, id)
submenu.append(menu_item)
menuitem.set_submenu(submenu)
menu.append(menuitem)
- delete = gtk.ImageMenuItem(stock_id=gtk.STOCK_DELETE)
+ delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
delete.connect('activate', lambda x:
self.delete_author(id))
menu.append(delete)
menu.show_all()
@@ -1246,11 +1246,11 @@
treeview.set_cursor(path, col, 0)
id =
self.source_filter_model.get_value(self.source_filter_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
- menu = gtk.Menu()
- edit = gtk.ImageMenuItem(stock_id=gtk.STOCK_EDIT)
+ menu = Gtk.Menu()
+ edit = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_EDIT)
edit.connect('activate', lambda x: SourceEditGUI(id))
menu.append(edit)
- delete = gtk.ImageMenuItem(stock_id=gtk.STOCK_DELETE)
+ delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
delete.connect('activate', lambda x:
self.delete_source(id))
menu.append(delete)
menu.show_all()
@@ -1269,8 +1269,8 @@
treeview.set_cursor(path, col, 0)
id =
self.treeview_bookmarks_model.get_value(self.treeview_bookmarks_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
- menu = gtk.Menu()
- delete = gtk.ImageMenuItem(stock_id=gtk.STOCK_DELETE)
+ menu = Gtk.Menu()
+ delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
delete.connect('activate', lambda x:
self.delete_bookmark(id))
menu.append(delete)
menu.show_all()
@@ -1289,11 +1289,11 @@
treeview.set_cursor(path, col, 0)
id =
self.organization_filter_model.get_value(self.organization_filter_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
- menu = gtk.Menu()
- edit = gtk.ImageMenuItem(stock_id=gtk.STOCK_EDIT)
+ menu = Gtk.Menu()
+ edit = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_EDIT)
edit.connect('activate', lambda x:
OrganizationEditGUI(id))
menu.append(edit)
- delete = gtk.ImageMenuItem(stock_id=gtk.STOCK_DELETE)
+ delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
delete.connect('activate', lambda x:
self.delete_organization(id))
menu.append(delete)
menu.show_all()
@@ -1330,14 +1330,14 @@
break
if path[0] == i:
return
- if path[0] == i + 1 and (position ==
gtk.TREE_VIEW_DROP_AFTER or position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER):
+ if path[0] == i + 1 and (position ==
Gtk.TreeViewDropPosition.AFTER or position ==
Gtk.TreeViewDropPosition.INTO_OR_AFTER):
return
- if path[0] == i - 1 and (position ==
gtk.TREE_VIEW_DROP_BEFORE or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE):
+ if path[0] == i - 1 and (position ==
Gtk.TreeViewDropPosition.BEFORE or position ==
Gtk.TreeViewDropPosition.INTO_OR_BEFORE):
return
paper_list[i] = None
- if position == gtk.TREE_VIEW_DROP_BEFORE or position ==
gtk.TREE_VIEW_DROP_INTO_OR_BEFORE:
+ if position == Gtk.TreeViewDropPosition.BEFORE or position
== Gtk.TreeViewDropPosition.INTO_OR_BEFORE:
paper_list.insert(path[0], paper)
- if position == gtk.TREE_VIEW_DROP_AFTER or position ==
gtk.TREE_VIEW_DROP_INTO_OR_AFTER:
+ if position == Gtk.TreeViewDropPosition.AFTER or position
== Gtk.TreeViewDropPosition.INTO_OR_AFTER:
paper_list.insert(path[0] + 1, paper)
paper_list.remove(None)
playlist.papers.clear()
@@ -1355,13 +1355,13 @@
model, source = treeview.get_selection().get_selected()
target = model.get_iter(target_path)
if len(target_path) > 1 and target_path[0] == 0:
-
treeview.enable_model_drag_dest([LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION],
gtk.gdk.ACTION_MOVE)
+
treeview.enable_model_drag_dest([LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION],
Gdk.DragAction.MOVE)
else:
- treeview.enable_model_drag_dest([], gtk.gdk.ACTION_MOVE)
+ treeview.enable_model_drag_dest([], Gdk.DragAction.MOVE)
except:
# this will occur when we're not over a target
# traceback.print_exc()
- treeview.enable_model_drag_dest([], gtk.gdk.ACTION_MOVE)
+ treeview.enable_model_drag_dest([], Gdk.DragAction.MOVE)
def handle_playlist_edited(self, renderer, path, new_text):
playlist_id =
self.left_pane_model.get_value(self.left_pane_model.get_iter_from_string(path),
2)
@@ -1400,8 +1400,8 @@
status = []
if paper and paper.full_text and
os.path.isfile(paper.full_text.path):
status.append('Full text saved in local library.')
- button = gtk.ToolButton(gtk.STOCK_OPEN)
- button.set_tooltip(gtk.Tooltips(), 'Open the full text of
this paper in a new window...')
+ button = Gtk.ToolButton(Gtk.STOCK_OPEN)
+ button.set_tooltip(Gtk.Tooltips(), 'Open the full text of
this paper in a new window...')
button.connect('clicked', lambda x: paper.open())
paper_information_toolbar.insert(button, -1)
if status:
@@ -1417,18 +1417,18 @@
#self.ui.get_object('paper_information_pane').get_buffer().set_text( '\n'.join(description)
)
if liststore[rows[0]][8]:
- button = gtk.ToolButton(gtk.STOCK_HOME)
- button.set_tooltip(gtk.Tooltips(), 'Open this URL in your
browser...')
+ button = Gtk.ToolButton(Gtk.STOCK_HOME)
+ button.set_tooltip(Gtk.Tooltips(), 'Open this URL in your
browser...')
button.connect('clicked', lambda x:
desktop.open(liststore[rows[0]][8]))
paper_information_toolbar.insert(button, -1)
if paper:
- button = gtk.ToolButton(gtk.STOCK_REFRESH)
- button.set_tooltip(gtk.Tooltips(), 'Re-add this paper
to your library...')
+ button = Gtk.ToolButton(Gtk.STOCK_REFRESH)
+ button.set_tooltip(Gtk.Tooltips(), 'Re-add this paper
to your library...')
button.connect('clicked', lambda x:
fetch_citation_via_middle_top_pane_row(liststore[rows[0]]))
paper_information_toolbar.insert(button, -1)
else:
- button = gtk.ToolButton(gtk.STOCK_ADD)
- button.set_tooltip(gtk.Tooltips(), 'Add this paper to
your library...')
+ button = Gtk.ToolButton(Gtk.STOCK_ADD)
+ button.set_tooltip(Gtk.Tooltips(), 'Add this paper to
your library...')
button.connect('clicked', lambda x:
fetch_citation_via_middle_top_pane_row(liststore[rows[0]]))
paper_information_toolbar.insert(button, -1)
@@ -1454,43 +1454,43 @@
self.update_bookmark_pane_from_paper(self.displayed_paper)
- button = gtk.ToolButton(gtk.STOCK_EDIT)
- button.set_tooltip(gtk.Tooltips(), 'Edit this paper...')
+ button = Gtk.ToolButton(Gtk.STOCK_EDIT)
+ button.set_tooltip(Gtk.Tooltips(), 'Edit this paper...')
button.connect('clicked', lambda x: PaperEditGUI(
paper.id))
paper_information_toolbar.insert(button, -1)
if self.current_playlist:
- button = gtk.ToolButton(gtk.STOCK_REMOVE)
- button.set_tooltip(gtk.Tooltips(), 'Remove this paper
from this collection...')
+ button = Gtk.ToolButton(Gtk.STOCK_REMOVE)
+ button.set_tooltip(Gtk.Tooltips(), 'Remove this paper
from this collection...')
button.connect('clicked', lambda x:
self.remove_papers_from_current_playlist([
paper.id]))
paper_information_toolbar.insert(button, -1)
if importable_references or importable_citations:
- import_button = gtk.MenuToolButton(gtk.STOCK_ADD)
- import_button.set_tooltip(gtk.Tooltips(), 'Import all
cited and referenced documents...(%i)' %
len(importable_references.union(importable_citations)))
+ import_button = Gtk.MenuToolButton(Gtk.STOCK_ADD)
+ import_button.set_tooltip(Gtk.Tooltips(), 'Import all
cited and referenced documents...(%i)' %
len(importable_references.union(importable_citations)))
import_button.connect('clicked', lambda x:
fetch_citations_via_references(importable_references.union(importable_citations)))
paper_information_toolbar.insert(import_button, -1)
- import_button_menu = gtk.Menu()
+ import_button_menu = Gtk.Menu()
if importable_citations:
- menu_item = gtk.MenuItem('Import all cited
documents (%i)' % len(importable_citations))
+ menu_item = Gtk.MenuItem('Import all cited
documents (%i)' % len(importable_citations))
menu_item.connect('activate', lambda x:
fetch_citations_via_references(importable_citations))
import_button_menu.append(menu_item)
- menu_item = gtk.MenuItem('Import specific cited
document')
- import_button_submenu = gtk.Menu()
+ menu_item = Gtk.MenuItem('Import specific cited
document')
+ import_button_submenu = Gtk.Menu()
for citation in importable_citations:
- submenu_item =
gtk.MenuItem(truncate_long_str(citation.line_from_referenced_paper))
+ submenu_item =
Gtk.MenuItem(truncate_long_str(citation.line_from_referenced_paper))
submenu_item.connect('activate', lambda x:
fetch_citations_via_references((citation,)))
import_button_submenu.append(submenu_item)
menu_item.set_submenu(import_button_submenu)
import_button_menu.append(menu_item)
if importable_references:
- menu_item = gtk.MenuItem('Import all referenced
documents (%i)' % len(importable_references))
+ menu_item = Gtk.MenuItem('Import all referenced
documents (%i)' % len(importable_references))
menu_item.connect('activate', lambda x:
fetch_citations_via_references(importable_references))
import_button_menu.append(menu_item)
- menu_item = gtk.MenuItem('Import specific
referenced document')
- import_button_submenu = gtk.Menu()
+ menu_item = Gtk.MenuItem('Import specific
referenced document')
+ import_button_submenu = Gtk.Menu()
for reference in importable_references:
- submenu_item =
gtk.MenuItem(truncate_long_str(reference.line_from_referencing_paper))
+ submenu_item =
Gtk.MenuItem(truncate_long_str(reference.line_from_referencing_paper))
submenu_item.connect('activate', lambda x:
fetch_citations_via_references((reference,)))
import_button_submenu.append(submenu_item)
menu_item.set_submenu(import_button_submenu)
@@ -1498,11 +1498,11 @@
import_button_menu.show_all()
import_button.set_menu(import_button_menu)
- button = gtk.ToolButton() # GRAPH_ICON
- icon = gtk.Image()
+ button = Gtk.ToolButton() # GRAPH_ICON
+ icon = Gtk.Image()
icon.set_from_pixbuf(GRAPH_ICON)
button.set_icon_widget(icon)
- button.set_tooltip(gtk.Tooltips(), 'Generate document
graph...')
+ button.set_tooltip(Gtk.Tooltips(), 'Generate document
graph...')
button.connect('clicked', lambda x:
self.graph_papers_and_authors([
paper.id]))
paper_information_toolbar.insert(button, -1)
@@ -1516,8 +1516,8 @@
downloadable_paper_urls.add(liststore[row][8])
if len(downloadable_paper_urls):
self.paper_information_pane_model.append(('<b>Number of
new papers:</b>', len(downloadable_paper_urls) ,))
- button = gtk.ToolButton(gtk.STOCK_ADD)
- button.set_tooltip(gtk.Tooltips(), 'Add new papers (%i) to
your library...' % len(downloadable_paper_urls))
+ button = Gtk.ToolButton(Gtk.STOCK_ADD)
+ button.set_tooltip(Gtk.Tooltips(), 'Add new papers (%i) to
your library...' % len(downloadable_paper_urls))
button.connect('clicked', lambda x:
fetch_citations_via_urls(downloadable_paper_urls))
paper_information_toolbar.insert(button, -1)
@@ -1527,20 +1527,20 @@
selected_valid_paper_ids.append(liststore[row][0])
log_debug('selected_valid_paper_ids: %s' %
str(selected_valid_paper_ids))
if len(selected_valid_paper_ids):
- button = gtk.ToolButton(gtk.STOCK_REMOVE)
- button.set_tooltip(gtk.Tooltips(), 'Remove these papers
from your library...')
+ button = Gtk.ToolButton(Gtk.STOCK_REMOVE)
+ button.set_tooltip(Gtk.Tooltips(), 'Remove these papers
from your library...')
button.connect('clicked', lambda x:
self.delete_papers(selected_valid_paper_ids))
paper_information_toolbar.insert(button, -1)
- button = gtk.ToolButton(gtk.STOCK_DND_MULTIPLE)
- button.set_tooltip(gtk.Tooltips(), 'Create a new
collection from these documents...')
+ button = Gtk.ToolButton(Gtk.STOCK_DND_MULTIPLE)
+ button.set_tooltip(Gtk.Tooltips(), 'Create a new
collection from these documents...')
button.connect('clicked', lambda x:
self.create_playlist(selected_valid_paper_ids))
paper_information_toolbar.insert(button, -1)
- button = gtk.ToolButton() # GRAPH_ICON
- icon = gtk.Image()
+ button = Gtk.ToolButton() # GRAPH_ICON
+ icon = Gtk.Image()
icon.set_from_pixbuf(GRAPH_ICON)
button.set_icon_widget(icon)
- button.set_tooltip(gtk.Tooltips(), 'Generate document
graph...')
+ button.set_tooltip(Gtk.Tooltips(), 'Generate document
graph...')
button.connect('clicked', lambda x:
self.graph_papers_and_authors(selected_valid_paper_ids))
paper_information_toolbar.insert(button, -1)
@@ -1676,15 +1676,15 @@
if self.displayed_paper:
- button = gtk.ToolButton(gtk.STOCK_ADD)
- button.set_tooltip(gtk.Tooltips(), 'Add a new page note...')
+ button = Gtk.ToolButton(Gtk.STOCK_ADD)
+ button.set_tooltip(Gtk.Tooltips(), 'Add a new page note...')
button.connect('clicked', lambda x, paper:
Bookmark.objects.create(paper=paper,
page=self.pdf_preview['current_page_number']).save() or
self.update_bookmark_pane_from_paper(self.displayed_paper),
self.displayed_paper)
button.show()
toolbar_bookmarks.insert(button, -1)
if selected_bookmark_id != -1:
- button = gtk.ToolButton(gtk.STOCK_DELETE)
- button.set_tooltip(gtk.Tooltips(), 'Delete this page note...')
+ button = Gtk.ToolButton(Gtk.STOCK_DELETE)
+ button.set_tooltip(Gtk.Tooltips(), 'Delete this page note...')
button.connect('clicked', lambda x:
self.delete_bookmark(selected_bookmark_id))
button.show()
toolbar_bookmarks.insert(button, -1)
@@ -1708,13 +1708,13 @@
def delete_papers(self, paper_ids):
papers = Paper.objects.in_bulk(paper_ids).values()
paper_list_text = '\n'.join([ ('<i>"%s"</i>' % str(paper.title))
for paper in papers ])
- dialog = gtk.MessageDialog(type=gtk.MESSAGE_QUESTION,
buttons=gtk.BUTTONS_YES_NO, flags=gtk.DIALOG_MODAL)
+ dialog = Gtk.MessageDialog(type=Gtk.MessageType.QUESTION,
buttons=Gtk.ButtonsType.YES_NO, flags=Gtk.DialogFlags.MODAL)
dialog.set_markup('Really delete the following %s?\n\n%s\n\n' %
(humanize_count(len(papers), 'paper', 'papers', places= -1),
paper_list_text))
- dialog.set_default_response(gtk.RESPONSE_NO)
+ dialog.set_default_response(
Gtk.ResponseType.NO)
dialog.show_all()
response = dialog.run()
dialog.destroy()
- if response == gtk.RESPONSE_YES:
+ if response == Gtk.ResponseType.YES:
for paper in papers:
log_info('deleting paper: %s' % str(paper))
paper.delete()
@@ -1731,57 +1731,57 @@
traceback.print_exc()
def delete_playlist(self, id):
***The diff for this file has been truncated for email.***
=======================================
--- /importer/__init__.py Thu Feb 16 14:38:19 2012
+++ /importer/__init__.py Tue Feb 21 12:16:39 2012
@@ -21,13 +21,13 @@
from htmlentitydefs import name2codepoint as n2cp
import urllib, urlparse
-import pygtk
-pygtk.require("2.0")
-import gobject
-import gtk
+import gi
+pyGtk.require("2.0")
+from gi.repository import GObject
+from gi.repository import Gtk
import gnome
import gnome.ui
-import pango
+from gi.repository import Pango
from pyPdf import PdfFileReader
@@ -96,16 +96,16 @@
return match.group()
def _should_we_reimport_paper(paper):
- gtk.gdk.threads_enter()
- dialog = gtk.MessageDialog(type=gtk.MESSAGE_QUESTION,
buttons=gtk.BUTTONS_OK_CANCEL, flags=gtk.DIALOG_MODAL)
+ Gdk.threads_enter()
+ dialog = Gtk.MessageDialog(type=Gtk.MessageType.QUESTION,
buttons=Gtk.ButtonsType.OK_CANCEL, flags=Gtk.DialogFlags.MODAL)
#dialog.connect('response', lambda x,y: dialog.destroy())
dialog.set_markup('This paper already exists in your local
library:\n\n<i>"%s"</i>\n(imported on %s)\n\nShould we continue the import,
updating/overwriting the previous entry?' % (paper.title,
str(paper.created.date())))
- dialog.set_default_response(gtk.RESPONSE_OK)
+ dialog.set_default_response(Gtk.ResponseType.OK)
dialog.show_all()
response = dialog.run()
dialog.destroy()
- gtk.gdk.threads_leave()
- return response == gtk.RESPONSE_OK
+ Gdk.threads_leave()
+ return response == Gtk.ResponseType.OK
def get_or_create_paper_via(id=None, doi=None, pubmed_id=None,
import_url=None, title=None,
full_text_md5=None,
@@ -309,19 +309,19 @@
except:
traceback.print_exc()
- gtk.gdk.threads_enter()
- error = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_OK, flags=gtk.DIALOG_MODAL)
+ Gdk.threads_enter()
+ error = Gtk.MessageDialog(type=Gtk.MessageType.ERROR,
buttons=Gtk.ButtonsType.OK, flags=Gtk.DialogFlags.MODAL)
error.connect('response', lambda x, y: error.destroy())
error.set_markup('<b>Unknown Error</b>\n\nUnable to download this
resource.')
error.run()
- gtk.gdk.threads_leave()
-
- gtk.gdk.threads_enter()
- error = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_OK, flags=gtk.DIALOG_MODAL)
+ Gdk.threads_leave()
+
+ Gdk.threads_enter()
+ error = Gtk.MessageDialog(type=Gtk.MessageType.ERROR,
buttons=Gtk.ButtonsType.OK, flags=Gtk.DialogFlags.MODAL)
error.connect('response', lambda x, y: error.destroy())
error.set_markup('<b>No Paper Found</b>\n\nThe given URL does not
appear to contain or link to any PDF files. (perhaps you have it buy it?)
Try downloading the file and adding it using "File >>
Import..."\n\n%s' % pango_escape(url))
error.run()
- gtk.gdk.threads_leave()
+ Gdk.threads_leave()
if active_threads.has_key(thread.get_ident()):
del active_threads[ thread.get_ident() ]
==============================================================================
Revision: b80b25dbf0af
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Wed Feb 22 16:03:16 2012
Log: manual changes for GTK3 conversion
http://code.google.com/p/gpapers/source/detail?r=b80b25dbf0af
Deleted:
/deps_checker.py
Modified:
/gPapers.py
/importer/__init__.py
/ui.xml
=======================================
--- /deps_checker.py Wed Feb 1 14:26:00 2012
+++ /dev/null
@@ -1,44 +0,0 @@
-import os, sys
-
-RUN_FROM_DIR = os.path.abspath(os.path.dirname(sys.argv[0])) + '/'
-
-try:
- import sqlite3
-except:
- try:
- from pysqlite2 import dbapi2 as sqlite3
- except:
- #traceback.print_exc()
- print 'could not import required sqlite3 libraries. try running:'
- print '\tfor ubuntu or debian: sudo apt-get install python-sqlite3'
- print '\tfor redhat: yum install python-sqlite3'
- print 'note that if your distro doesn\'t have python-sqlite3 yet, you
can use pysqlite2'
- sys.exit()
-
-try:
- from django.template import defaultfilters
- print
- print 'note: django provides a web-based administrative tool for your
database. to use it, uncomment the commented-out lines under
INSTALLED_APPS in settings.py and run the following:'
- print ' ./manage.py runserver'
- print ' then go to
http://127.0.0.1:8000/admin/'
- print
-except:
- print 'could not import django [
http://www.djangoproject.com/]. Try
running ',
- print '\tsudo apt-get install python-django'
- sys.exit()
-
-try:
- import cairo
-except:
- #traceback.print_exc()
- print 'could not import pycairo [
http://cairographics.org/pycairo/]. Try
running:' % RUN_FROM_DIR
- print '\tsudo apt-get install python-cairo'
-
-try:
- import poppler
-except:
- #traceback.print_exc()
- print 'could not import pypoppler [
http://poppler.freedesktop.org/]. Try
running:' % RUN_FROM_DIR
- print '\tsudo apt-get install python-poppler'
-
-
=======================================
--- /gPapers.py Tue Feb 21 12:16:39 2012
+++ /gPapers.py Wed Feb 22 16:03:16 2012
@@ -25,10 +25,7 @@
import BeautifulSoup
-import deps_checker
import sqlite3
-import cairo
-import poppler
from logger import *
log_level_debug()
@@ -48,21 +45,23 @@
# GUI imports
try:
import gi
- pyGtk.require("2.0")
from gi.repository import GObject
+ from gi.repository import Gdk
from gi.repository import Gtk
- import gnome
- import gnome.ui
+ from gi.repository import GdkPixbuf
from gi.repository import Pango
+ from gi.repository import Poppler
+ import cairo
GObject.threads_init()
- Gdk.threads_init()
except:
traceback.print_exc()
log_error('Could not import required GTK libraries.')
sys.exit()
-LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION = ('add_to_playlist',
Gtk.TargetFlags.SAME_APP, 0)
-MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION = ('reorder_playlist',
Gtk.TargetFlags.SAME_WIDGET, 1)
+LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION = ('add_to_playlist',
+ Gtk.TargetFlags.SAME_APP, 0)
+MIDDLE_TOP_PANE_REORDER_PLAYLIST_DND_ACTION = ('reorder_playlist',
+
Gtk.TargetFlags.SAME_WIDGET, 1)
PDF_PREVIEW_MOVE_NOTE_DND_ACTION = ('move_note',
Gtk.TargetFlags.SAME_WIDGET, 2)
import settings
@@ -131,7 +130,7 @@
column.set_resizable(True)
column.set_clickable(True)
#column.connect('clicked', self.sortRows)
- for renderer in column.get_cell_renderers():
+ for renderer in column.get_cells():
if renderer.__class__.__name__ == 'CellRendererText':
renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
@@ -354,7 +353,7 @@
dialog.set_markup('<b>Import URL...</b>\n\nEnter the URL you would
like to import:')
entry = Gtk.Entry()
entry.set_activates_default(True)
- dialog.vbox.pack_start(entry, True, True, 0)
+ dialog.vbox.pack_start(entry, True)
dialog.set_default_response(Gtk.ResponseType.OK)
dialog.show_all()
response = dialog.run()
@@ -379,7 +378,7 @@
dialog.set_markup('<b>Import via DOI...</b>\n\nEnter the DOI name
(e.g., 10.1000/182) you would like to import:')
entry = Gtk.Entry()
entry.set_activates_default(True)
- dialog.vbox.pack_start(entry, True, True, 0)
+ dialog.vbox.pack_start(entry, True)
dialog.set_default_response(Gtk.ResponseType.OK)
dialog.show_all()
response = dialog.run()
@@ -448,7 +447,7 @@
scrolledwindow = Gtk.ScrolledWindow()
scrolledwindow.add(entry)
scrolledwindow.set_property('height-request', 300)
- dialog.vbox.pack_start(scrolledwindow, True, True, 0)
+ dialog.vbox.pack_start(scrolledwindow, True)
dialog.set_default_response(Gtk.ResponseType.OK)
dialog.show_all()
response = dialog.run()
@@ -461,10 +460,10 @@
dialog.destroy()
def __init__(self):
- gnome.init(PROGRAM, VERSION)
- self.provider = {1 : pubmed.PubMedSearch(),
- 2 : google_scholar.GoogleScholarSearch(),
- 3 : jstor.JSTORSearch()}
+ self.provider = {'pubmed' : pubmed.PubMedSearch(),
+ 'google_scholar' :
google_scholar.GoogleScholarSearch(),
+ 'jstor' : jstor.JSTORSearch()}
+ self.displayed_paper = None
self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'ui.xml')
self.main_window = self.ui.get_object('main_window')
@@ -575,11 +574,11 @@
self.ui.get_object('organization_filter').get_selection().unselect_all()
def save_smart_search(self):
- liststore, rows =
self.ui.get_object('left_pane').get_selection().get_selected_rows()
+ liststore, row =
self.ui.get_object('left_pane_selection').get_selected()
playlist, created = Playlist.objects.get_or_create(
title='search: <i>%s</i>' %
self.ui.get_object('middle_pane_search').get_text(),
search_text=self.ui.get_object('middle_pane_search').get_text(),
- parent=self.provider[rows[0][0]]
+ parent=self.provider[liststore[row][4]]
)
if created: playlist.save()
self.refresh_left_pane()
@@ -596,48 +595,58 @@
self.refresh_left_pane()
def refresh_middle_pane_search(self):
- selection = self.ui.get_object('left_pane').get_selection()
- _, rows = selection.get_selected_rows()
- if rows[0][0] > 0:
+ selection = self.ui.get_object('left_pane_selection')
+ liststore, row = selection.get_selected()
+ if liststore[row][4] != 'local':
# For the external search providers: clear cache
text = self.ui.get_object('middle_pane_search').get_text()
- self.provider[rows[0][0]].clear_cache(text)
+ self.provider[liststore[row][4]].clear_cache(text)
self.last_middle_pane_search_string = None
- #FIXME: Use signal instead
+ #FIXME: Use signal instead -- and refactor
def watch_middle_pane_search(self):
self.last_middle_pane_search_string = ''
while True:
if self.last_middle_pane_search_string == None or
self.ui.get_object('middle_pane_search').get_text() !=
self.last_middle_pane_search_string:
self.last_middle_pane_search_string =
self.ui.get_object('middle_pane_search').get_text()
- selection = self.ui.get_object('left_pane').get_selection()
- liststore, rows = selection.get_selected_rows()
- selection.unselect_all()
- if rows:
- Gdk.threads_enter()
- selection.select_path((rows[0][0],))
- Gdk.threads_leave()
+ log_debug('middle search pane string changed')
+ #Gdk.threads_enter()
+
#self.ui.get_object('left_pane').get_selection().emit('changed')
+ GObject.idle_add(self.select_left_pane_item,
self.ui.get_object('left_pane_selection'))
+ #Gdk.threads_leave()
time.sleep(1)
def init_left_pane(self):
+ '''
+ Initializes the left pane, containing collections, playlists and
+ saved searches.
+
+ The TreeStore consists of:
+ name, icon, playlist_id, editable, source
+ where:
+ * `name` and `icon` are the visibly displayed name and icon
+ * `playlist_id` is the id of the playlist in the database
+ * `editable` is True only for Playlists (they can be renamed)
+ * `source` is used for saved searches and the searches themselv
+ '''
left_pane = self.ui.get_object('left_pane')
- # name, icon, playlist_id, editable
- self.left_pane_model = Gtk.TreeStore(str, GdkPixbuf.Pixbuf, int,
bool)
+ # name, icon, playlist_id, editable, source
+ self.left_pane_model = Gtk.TreeStore(str, GdkPixbuf.Pixbuf, int,
bool, str)
left_pane.set_model(self.left_pane_model)
column = Gtk.TreeViewColumn()
left_pane.append_column(column)
renderer = Gtk.CellRendererPixbuf()
- column.pack_start(renderer, False, True, 0)
+ column.pack_start(renderer, False)
column.add_attribute(renderer, 'pixbuf', 1)
renderer = Gtk.CellRendererText()
renderer.connect('edited', self.handle_playlist_edited)
- column.pack_start(renderer, True, True, 0)
+ column.pack_start(renderer, True)
column.add_attribute(renderer, 'markup', 0)
column.add_attribute(renderer, 'editable', 3)
- left_pane.get_selection().connect('changed',
self.select_left_pane_item)
+ self.ui.get_object('left_pane_selection').connect('changed',
self.select_left_pane_item)
left_pane.connect('button-press-event',
self.handle_left_pane_button_press_event)
left_pane.enable_model_drag_dest([LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION],
Gdk.DragAction.COPY)
@@ -648,13 +657,17 @@
pdf_preview = self.ui.get_object('pdf_preview')
self.pdf_preview = {}
self.pdf_preview['scale'] = None
- pdf_preview.connect("expose-event", self.on_expose_pdf_preview)
+ pdf_preview.connect("draw", self.on_draw_pdf_preview)
pdf_preview.connect("button-press-event",
self.handle_pdf_preview_button_press_event)
# drag and drop stuff for notes
- pdf_preview.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
[PDF_PREVIEW_MOVE_NOTE_DND_ACTION], Gdk.DragAction.MOVE)
+ pdf_preview.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+
[
Gtk.TargetEntry.new(*PDF_PREVIEW_MOVE_NOTE_DND_ACTION)],
+ Gdk.DragAction.MOVE)
pdf_preview.drag_source_set_icon_pixbuf(NOTE_ICON)
- Gtk.drag_dest_set(pdf_preview, Gtk.DEST_DEFAULT_ALL,
[PDF_PREVIEW_MOVE_NOTE_DND_ACTION], Gdk.DragAction.MOVE)
+ pdf_preview.drag_dest_set(Gtk.DestDefaults.ALL,
+
[
Gtk.TargetEntry.new(*PDF_PREVIEW_MOVE_NOTE_DND_ACTION)],
+ Gdk.DragAction.MOVE)
pdf_preview.connect('drag-drop',
self.handle_pdf_preview_drag_drop_event)
self.ui.get_object('button_move_previous_page').connect('clicked',
lambda x: self.goto_pdf_page(self.pdf_preview['current_page_number'] - 1))
@@ -667,7 +680,7 @@
def refresh_pdf_preview_pane(self):
pdf_preview = self.ui.get_object('pdf_preview')
if self.displayed_paper and self.displayed_paper.full_text and
os.path.isfile(self.displayed_paper.full_text.path):
- self.pdf_preview['document'] = poppler.document_new_from_file
('file://' + self.displayed_paper.full_text.path, None)
+ self.pdf_preview['document'] = Poppler.Document.new_from_file
('file://' + self.displayed_paper.full_text.path, None)
self.pdf_preview['n_pages'] =
self.pdf_preview['document'].get_n_pages()
self.pdf_preview['scale'] = None
self.goto_pdf_page(self.pdf_preview['current_page_number'],
new_doc=True)
@@ -728,9 +741,9 @@
else:
pass
- def on_expose_pdf_preview(self, widget, event):
+ def on_draw_pdf_preview(self, widget, event):
if not self.displayed_paper or not
self.pdf_preview.get('current_page'): return
- cr = widget.window.cairo_create()
+ cr = widget.get_window().cairo_create()
cr.set_source_rgb(1, 1, 1)
scale = self.pdf_preview['scale']
if scale == None:
@@ -879,75 +892,103 @@
#renderer.set_property('editable', True)
renderer.set_property('wrap-mode', Pango.WrapMode.WORD)
renderer.set_property('wrap-width', 500)
- column.pack_start(renderer, True, True, 0)
+ column.pack_start(renderer, True)
column.add_attribute(renderer, 'markup', 1)
pane.append_column(column)
def resize_paper_information_pane(self, treeview, o2, width=None):
if width == None:
width = treeview.get_column(1).get_width() - 16
-
treeview.get_column(1).get_cell_renderers()[0].set_property('wrap-width',
width)
+ treeview.get_column(1).get_cells()[0].set_property('wrap-width',
width)
def refresh_left_pane(self):
+ # FIXME: These should not be loaded again and again
+ NEVER_READ_ICON =
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR,
+ 'icons',
+ 'applications-development.png'))
+ FAVORITE_ICON =
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR,
+ 'icons',
+ 'emblem-favorite.png'))
left_pane = self.ui.get_object('left_pane')
self.left_pane_model.clear()
- self.left_pane_model.append(None, ('<b>My Library</b>',
left_pane.render_icon(Gtk.STOCK_HOME, Gtk.IconSize.MENU), -1, False))
- for playlist in Playlist.objects.filter(parent='0'):
+ self.left_pane_model.append(None, ('<b>My Library</b>',
+
left_pane.render_icon(Gtk.STOCK_HOME,
+
Gtk.IconSize.MENU),
+ - 1, False, 'local'))
+ for playlist in Playlist.objects.filter(parent='local'):
if playlist.search_text:
icon = left_pane.render_icon(Gtk.STOCK_FIND,
Gtk.IconSize.MENU)
else:
icon = left_pane.render_icon(Gtk.STOCK_DND_MULTIPLE,
Gtk.IconSize.MENU)
-
self.left_pane_model.append(self.left_pane_model.get_iter((0),),
(playlist.title, icon,
playlist.id, True))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>recently added</i>', left_pane.render_icon(Gtk.STOCK_NEW,
Gtk.IconSize.MENU), -2, False))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>most often read</i>', left_pane.render_icon(Gtk.STOCK_DIALOG_INFO,
Gtk.IconSize.MENU), -3, False))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>never read</i>',
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'applications-development.png')),
-5, False))
- self.left_pane_model.append(self.left_pane_model.get_iter((0),),
('<i>highest rated</i>',
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons', 'emblem-favorite.png')),
-4, False))
+
self.left_pane_model.append(self.left_pane_model.get_iter((0),),
+ (playlist.title, icon,
playlist.id,
+ True, 'local'))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
+ ('<i>recently added</i>',
+ left_pane.render_icon(Gtk.STOCK_NEW,
+
Gtk.IconSize.MENU),
+ - 2, False, 'local'))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
+ ('<i>most often read</i>',
+
left_pane.render_icon(Gtk.STOCK_DIALOG_INFO,
+
Gtk.IconSize.MENU),
+ - 3, False, 'local'))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
+ ('<i>never read</i>',
+ NEVER_READ_ICON, -5, False, 'local'))
+ self.left_pane_model.append(self.left_pane_model.get_iter((0),),
+ ('<i>highest rated</i>',
+ FAVORITE_ICON, -4, False, 'local'))
for _, provider in self.provider.iteritems():
+ # FIXME: Load them in the providers
+ provider_icon =
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR,
+ 'icons',
+
provider.icon))
self.left_pane_model.append(None, (
provider.name,
-
GdkPixbuf.Pixbuf.new_from_file(os.path.join(RUN_FROM_DIR, 'icons',
provider.icon)), -1, False))
+ provider_icon, -1, False, provider.label))
for playlist in Playlist.objects.filter(parent=provider.label):
- if playlist.search_text:
- icon = left_pane.render_icon(Gtk.STOCK_FIND,
Gtk.IconSize.MENU)
- else:
- icon = left_pane.render_icon(Gtk.STOCK_DND_MULTIPLE,
Gtk.IconSize.MENU)
-
self.left_pane_model.append(self.left_pane_model.get_iter((1),),
(playlist.title, icon,
playlist.id, True))
+ icon = left_pane.render_icon(Gtk.STOCK_FIND,
Gtk.IconSize.MENU)
+
self.left_pane_model.append(self.left_pane_model.get_iter((1),),
+ (playlist.title, icon,
playlist.id,
+ True, provider.label))
left_pane.expand_all()
- self.ui.get_object('left_pane').get_selection().select_path((0,))
+ self.ui.get_object('left_pane_selection').select_path((0,))
def select_left_pane_item(self, selection):
- liststore, rows = selection.get_selected_rows()
+ liststore, row = selection.get_selected()
left_pane_toolbar = self.ui.get_object('left_pane_toolbar')
- left_pane_toolbar.foreach(left_pane_toolbar.remove)
- if not rows:
+ for child in left_pane_toolbar.get_children():
+ left_pane_toolbar.remove(child)
+ if not row:
self.ui.get_object('middle_pane_label').set_markup('<i>nothing
selected</i>')
return
-
self.ui.get_object('middle_pane_label').set_markup(liststore[rows[0]][0])
+
self.ui.get_object('middle_pane_label').set_markup(liststore[row][0])
self.middle_top_pane_model.clear()
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Create a new document
collection...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Create a new document collection...')
button.connect('clicked', lambda x: self.create_playlist())
button.show()
left_pane_toolbar.insert(button, -1)
try:
- self.current_playlist =
Playlist.objects.get(id=liststore[rows[0]][2])
- button = Gtk.ToolButton(Gtk.STOCK_DELETE)
- button.set_tooltip(Gtk.Tooltips(), 'Delete this collection...')
+ self.current_playlist =
Playlist.objects.get(id=liststore[row][2])
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_DELETE)
+ button.set_tooltip_text('Delete this collection...')
button.connect('clicked', lambda x:
self.delete_playlist(
self.current_playlist.id))
button.show()
left_pane_toolbar.insert(button, -1)
except: self.current_playlist = None
- if liststore[rows[0]][2] == -2:
+ if liststore[row][2] == -2:
self.current_papers =
Paper.objects.filter(created__gte=datetime.now() -
timedelta(7)).order_by('-created')[:20]
- elif liststore[rows[0]][2] == -3:
+ elif liststore[row][2] == -3:
self.current_papers =
Paper.objects.filter(read_count__gte=1).order_by('-read_count')[:20]
- elif liststore[rows[0]][2] == -4:
+ elif liststore[row][2] == -4:
self.current_papers =
Paper.objects.filter(rating__gte=1).order_by('-rating')[:20]
- elif liststore[rows[0]][2] == -5:
+ elif liststore[row][2] == -5:
self.current_papers = Paper.objects.filter(read_count=0)
else:
self.current_papers = None
@@ -965,11 +1006,10 @@
self.last_middle_pane_search_string = ''
self.ui.get_object('middle_pane_search').set_text('')
- log_debug('rows[0][0]: %d' % rows[0][0])
- if rows[0][0] == 0:
+ if liststore[row][4] == 'local':
self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(self.refresh_middle_pane_from_my_library, (True,))
else:
- self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.provider[rows[0][0]]), ())
+ self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.provider[liststore[rows][4]]),
())
self.select_middle_top_pane_item(self.ui.get_object('middle_top_pane').get_selection())
@@ -991,10 +1031,10 @@
column.set_title('Title')
column.set_min_width(-1)
renderer = Gtk.CellRendererPixbuf()
- column.pack_start(renderer, False, True, 0)
+ column.pack_start(renderer, False)
column.add_attribute(renderer, 'pixbuf', 7)
renderer = Gtk.CellRendererText()
- column.pack_start(renderer, True, True, 0)
+ column.pack_start(renderer, True)
column.add_attribute(renderer, 'markup', 2)
column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 2)
middle_top_pane.append_column(column)
@@ -1036,7 +1076,7 @@
middle_top_pane.connect('drag-data-received',
self.handle_middle_top_pane_drag_data_received_event)
def handle_middle_top_pane_row_activated(self, treeview, path,
view_column):
- liststore, rows = treeview.get_selection().get_selected_rows()
+ liststore, rows = treeview.get_selection().get_selected()
paper_id =
treeview.get_model().get_value(treeview.get_model().get_iter(path), 0)
try:
paper = Paper.objects.get(id=paper_id)
@@ -1045,22 +1085,22 @@
traceback.print_exc()
def handle_middle_top_pane_drag_data_get(self, treeview, context,
selection, info, timestamp):
- liststore, rows = treeview.get_selection().get_selected_rows()
- id = liststore[rows[0]][0]
+ liststore, row = treeview.get_selection().get_selected()
+ id = liststore[row][0]
selection.set('text/plain', len(str(id)), str(id))
def handle_author_filter_row_activated(self, treeview, path,
view_column):
- liststore, rows = treeview.get_selection().get_selected_rows()
+ liststore, rows = treeview.get_selection().get_selected()
id =
treeview.get_model().get_value(treeview.get_model().get_iter(path), 0)
AuthorEditGUI(id)
def handle_organization_filter_row_activated(self, treeview, path,
view_column):
- liststore, rows = treeview.get_selection().get_selected_rows()
+ liststore, rows = treeview.get_selection().get_selected()
id =
treeview.get_model().get_value(treeview.get_model().get_iter(path), 0)
OrganizationEditGUI(id)
def handle_source_filter_row_activated(self, treeview, path,
view_column):
- liststore, rows = treeview.get_selection().get_selected_rows()
+ liststore, rows = treeview.get_selection().get_selected()
id =
treeview.get_model().get_value(treeview.get_model().get_iter(path), 0)
SourceEditGUI(id)
@@ -1077,11 +1117,12 @@
playlist_id =
self.left_pane_model.get_value(self.left_pane_model.get_iter(path), 2)
if playlist_id >= 0: #len(path)==2:
menu = Gtk.Menu()
- delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
+ delete =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_DELETE, None)
delete.connect('activate', lambda x:
self.delete_playlist(playlist_id))
menu.append(delete)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def handle_pdf_preview_button_press_event(self, pdf_preview, event):
@@ -1131,15 +1172,16 @@
submenu.append(submenu_item)
menuitem.set_submenu(submenu)
menu.append(menuitem)
- delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
+ delete =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_DELETE, None)
delete.connect('activate', lambda x:
self.delete_bookmark(
bookmark.id))
menu.append(delete)
else:
- add = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_ADD)
+ add = Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_ADD,
None)
add.connect('activate', lambda x:
self.add_bookmark(self.displayed_paper, current_page_number, x_percent,
y_percent))
menu.append(add)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(pdf_preview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return bookmark == None # return true if bookmark not defined, to
block DND events
@@ -1184,17 +1226,18 @@
menu = Gtk.Menu()
paper = Paper.objects.get(id=paper_id)
if paper and paper.full_text and
os.path.isfile(paper.full_text.path):
- button = Gtk.ImageMenuItem(Gtk.STOCK_OPEN)
+ button =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_OPEN, None)
button.connect('activate', lambda x: paper.open())
menu.append(button)
- button = Gtk.ImageMenuItem(Gtk.STOCK_EDIT)
+ button =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_EDIT, None)
button.connect('activate', lambda x:
PaperEditGUI(
paper.id))
menu.append(button)
- button = Gtk.ImageMenuItem(Gtk.STOCK_DELETE)
+ button =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_DELETE, None)
button.connect('activate', lambda x:
self.delete_papers([
paper.id]))
menu.append(button)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def handle_author_filter_button_press_event(self, treeview, event):
@@ -1210,7 +1253,7 @@
id =
self.author_filter_model.get_value(self.author_filter_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
menu = Gtk.Menu()
- edit = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_EDIT)
+ edit =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_EDIT, None)
edit.connect('activate', lambda x: AuthorEditGUI(id))
menu.append(edit)
edit = Gtk.MenuItem('Colleague Graph...')
@@ -1227,11 +1270,12 @@
menuitem.set_submenu(submenu)
menu.append(menuitem)
- delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
+ delete =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_DELETE, None)
delete.connect('activate', lambda x:
self.delete_author(id))
menu.append(delete)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def handle_source_filter_button_press_event(self, treeview, event):
@@ -1247,14 +1291,15 @@
id =
self.source_filter_model.get_value(self.source_filter_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
menu = Gtk.Menu()
- edit = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_EDIT)
+ edit =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_EDIT, None)
edit.connect('activate', lambda x: SourceEditGUI(id))
menu.append(edit)
- delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
+ delete =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_DELETE, None)
delete.connect('activate', lambda x:
self.delete_source(id))
menu.append(delete)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def handle_treeview_bookmarks_button_press_event(self, treeview,
event):
@@ -1270,11 +1315,12 @@
id =
self.treeview_bookmarks_model.get_value(self.treeview_bookmarks_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
menu = Gtk.Menu()
- delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
+ delete =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_DELETE, None)
delete.connect('activate', lambda x:
self.delete_bookmark(id))
menu.append(delete)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def handle_organization_filter_button_press_event(self, treeview,
event):
@@ -1290,14 +1336,15 @@
id =
self.organization_filter_model.get_value(self.organization_filter_model.get_iter(path),
0)
if id >= 0: #len(path)==2:
menu = Gtk.Menu()
- edit = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_EDIT)
+ edit =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_EDIT, None)
edit.connect('activate', lambda x:
OrganizationEditGUI(id))
menu.append(edit)
- delete = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_DELETE)
+ delete =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_DELETE, None)
delete.connect('activate', lambda x:
self.delete_organization(id))
menu.append(delete)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def handle_left_pane_drag_data_received_event(self, treeview, context,
x, y, selection, info, timestamp):
@@ -1375,12 +1422,17 @@
self.paper_information_pane_model.clear()
self.ui.get_object('paper_information_pane').columns_autosize()
paper_information_toolbar =
self.ui.get_object('paper_information_toolbar')
- paper_information_toolbar.foreach(paper_information_toolbar.remove)
+ for child in paper_information_toolbar.get_children():
+ paper_information_toolbar.remove(child)
self.displayed_paper = None
- if len(rows) == 0:
+ log_debug('rows: %s' % str(rows))
+
+ if not rows or len(rows) == 0:
self.update_bookmark_pane_from_paper(None)
elif len(rows) == 1:
+ log_debug('liststore[row]: %s' % str(liststore[rows[0]]))
+ log_debug('liststore[row]: %s' % [str(x) for x in
liststore[rows[0]]])
try:
self.displayed_paper = paper =
Paper.objects.get(id=liststore[rows[0]][0])
except:
@@ -1400,8 +1452,8 @@
status = []
if paper and paper.full_text and
os.path.isfile(paper.full_text.path):
status.append('Full text saved in local library.')
- button = Gtk.ToolButton(Gtk.STOCK_OPEN)
- button.set_tooltip(Gtk.Tooltips(), 'Open the full text of
this paper in a new window...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_OPEN)
+ button.set_tooltip_text('Open the full text of this paper
in a new window...')
button.connect('clicked', lambda x: paper.open())
paper_information_toolbar.insert(button, -1)
if status:
@@ -1417,18 +1469,18 @@
#self.ui.get_object('paper_information_pane').get_buffer().set_text( '\n'.join(description)
)
if liststore[rows[0]][8]:
- button = Gtk.ToolButton(Gtk.STOCK_HOME)
- button.set_tooltip(Gtk.Tooltips(), 'Open this URL in your
browser...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_HOME)
+ button.set_tooltip_text('Open this URL in your browser...')
button.connect('clicked', lambda x:
desktop.open(liststore[rows[0]][8]))
paper_information_toolbar.insert(button, -1)
if paper:
- button = Gtk.ToolButton(Gtk.STOCK_REFRESH)
- button.set_tooltip(Gtk.Tooltips(), 'Re-add this paper
to your library...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_REFRESH)
+ button.set_tooltip_text('Re-add this paper to your
library...')
button.connect('clicked', lambda x:
fetch_citation_via_middle_top_pane_row(liststore[rows[0]]))
paper_information_toolbar.insert(button, -1)
else:
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Add this paper to
your library...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Add this paper to your
library...')
button.connect('clicked', lambda x:
fetch_citation_via_middle_top_pane_row(liststore[rows[0]]))
paper_information_toolbar.insert(button, -1)
@@ -1454,20 +1506,20 @@
self.update_bookmark_pane_from_paper(self.displayed_paper)
- button = Gtk.ToolButton(Gtk.STOCK_EDIT)
- button.set_tooltip(Gtk.Tooltips(), 'Edit this paper...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_EDIT)
+ button.set_tooltip_text('Edit this paper...')
button.connect('clicked', lambda x: PaperEditGUI(
paper.id))
paper_information_toolbar.insert(button, -1)
if self.current_playlist:
- button = Gtk.ToolButton(Gtk.STOCK_REMOVE)
- button.set_tooltip(Gtk.Tooltips(), 'Remove this paper
from this collection...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_REMOVE)
+ button.set_tooltip_text('Remove this paper from this
collection...')
button.connect('clicked', lambda x:
self.remove_papers_from_current_playlist([
paper.id]))
paper_information_toolbar.insert(button, -1)
if importable_references or importable_citations:
- import_button = Gtk.MenuToolButton(Gtk.STOCK_ADD)
- import_button.set_tooltip(Gtk.Tooltips(), 'Import all
cited and referenced documents...(%i)' %
len(importable_references.union(importable_citations)))
+ import_button =
Gtk.MenuToolButton(stock_id=Gtk.STOCK_ADD)
+ import_button.set_tooltip_text('Import all cited and
referenced documents...(%i)' %
len(importable_references.union(importable_citations)))
import_button.connect('clicked', lambda x:
fetch_citations_via_references(importable_references.union(importable_citations)))
paper_information_toolbar.insert(import_button, -1)
import_button_menu = Gtk.Menu()
@@ -1502,7 +1554,7 @@
icon = Gtk.Image()
icon.set_from_pixbuf(GRAPH_ICON)
button.set_icon_widget(icon)
- button.set_tooltip(Gtk.Tooltips(), 'Generate document
graph...')
+ button.set_tooltip_text('Generate document graph...')
button.connect('clicked', lambda x:
self.graph_papers_and_authors([
paper.id]))
paper_information_toolbar.insert(button, -1)
@@ -1516,8 +1568,8 @@
downloadable_paper_urls.add(liststore[row][8])
if len(downloadable_paper_urls):
self.paper_information_pane_model.append(('<b>Number of
new papers:</b>', len(downloadable_paper_urls) ,))
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Add new papers (%i) to
your library...' % len(downloadable_paper_urls))
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Add new papers (%i) to your
library...' % len(downloadable_paper_urls))
button.connect('clicked', lambda x:
fetch_citations_via_urls(downloadable_paper_urls))
paper_information_toolbar.insert(button, -1)
@@ -1527,12 +1579,12 @@
selected_valid_paper_ids.append(liststore[row][0])
log_debug('selected_valid_paper_ids: %s' %
str(selected_valid_paper_ids))
if len(selected_valid_paper_ids):
- button = Gtk.ToolButton(Gtk.STOCK_REMOVE)
- button.set_tooltip(Gtk.Tooltips(), 'Remove these papers
from your library...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_REMOVE)
+ button.set_tooltip_text('Remove these papers from your
library...')
button.connect('clicked', lambda x:
self.delete_papers(selected_valid_paper_ids))
paper_information_toolbar.insert(button, -1)
- button = Gtk.ToolButton(Gtk.STOCK_DND_MULTIPLE)
- button.set_tooltip(Gtk.Tooltips(), 'Create a new
collection from these documents...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_DND_MULTIPLE)
+ button.set_tooltip_text('Create a new collection from
these documents...')
button.connect('clicked', lambda x:
self.create_playlist(selected_valid_paper_ids))
paper_information_toolbar.insert(button, -1)
@@ -1540,7 +1592,7 @@
icon = Gtk.Image()
icon.set_from_pixbuf(GRAPH_ICON)
button.set_icon_widget(icon)
- button.set_tooltip(Gtk.Tooltips(), 'Generate document
graph...')
+ button.set_tooltip_text('Generate document graph...')
button.connect('clicked', lambda x:
self.graph_papers_and_authors(selected_valid_paper_ids))
paper_information_toolbar.insert(button, -1)
@@ -1625,7 +1677,8 @@
def update_bookmark_pane_from_paper(self, paper):
toolbar_bookmarks = self.ui.get_object('toolbar_bookmarks')
- toolbar_bookmarks.foreach(toolbar_bookmarks.remove)
+ for child in toolbar_bookmarks.get_children():
+ toolbar_bookmarks.remove(child)
self.treeview_bookmarks_model.clear()
if paper:
for bookmark in paper.bookmark_set.order_by('page'):
@@ -1639,7 +1692,8 @@
if selection == None:
selection =
self.ui.get_object('treeview_bookmarks').get_selection()
toolbar_bookmarks = self.ui.get_object('toolbar_bookmarks')
- toolbar_bookmarks.foreach(toolbar_bookmarks.remove)
+ for child in toolbar_bookmarks.get_children():
+ toolbar_bookmarks.remove(child)
if bookmark_id != None:
selection.unselect_all()
@@ -1676,15 +1730,15 @@
if self.displayed_paper:
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Add a new page note...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Add a new page note...')
button.connect('clicked', lambda x, paper:
Bookmark.objects.create(paper=paper,
page=self.pdf_preview['current_page_number']).save() or
self.update_bookmark_pane_from_paper(self.displayed_paper),
self.displayed_paper)
button.show()
toolbar_bookmarks.insert(button, -1)
if selected_bookmark_id != -1:
- button = Gtk.ToolButton(Gtk.STOCK_DELETE)
- button.set_tooltip(Gtk.Tooltips(), 'Delete this page note...')
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_DELETE)
+ button.set_tooltip_text('Delete this page note...')
button.connect('clicked', lambda x:
self.delete_bookmark(selected_bookmark_id))
button.show()
toolbar_bookmarks.insert(button, -1)
@@ -1838,23 +1892,28 @@
filter_liststore, filter_rows =
self.ui.get_object('author_filter').get_selection().get_selected_rows()
q = None
- for filter_row in filter_rows:
- if q == None: q =
Q(authors__id=filter_liststore[filter_row][0])
- else: q = q |
Q(authors__id=filter_liststore[filter_row][0])
+ for treepath in filter_rows:
+ row = filter_liststore[treepath]
+ log_debug('row[0]: %s' % row[0])
+ if q == None: q = Q(authors__id=row[0])
+ else: q = q | Q(authors__id=row[0])
+ log_debug('q: %s' % str(q))
if q: paper_query = paper_query.filter(q)
filter_liststore, filter_rows =
self.ui.get_object('source_filter').get_selection().get_selected_rows()
q = None
- for filter_row in filter_rows:
- if q == None: q =
Q(source__id=filter_liststore[filter_row][0])
- else: q = q |
Q(source__id=filter_liststore[filter_row][0])
+ for row in filter_rows:
+ row = filter_liststore[treepath]
+ if q == None: q = Q(source__id=row[0])
+ else: q = q | Q(source__id=row[0])
if q: paper_query = paper_query.filter(q)
filter_liststore, filter_rows =
self.ui.get_object('organization_filter').get_selection().get_selected_rows()
q = None
- for filter_row in filter_rows:
- if q == None: q =
Q(organizations__id=filter_liststore[filter_row][0])
- else: q = q |
Q(organizations__id=filter_liststore[filter_row][0])
+ for row in filter_rows:
+ row = filter_liststore[treepath]
+ if q == None: q = Q(organizations__id=row[0])
+ else: q = q | Q(organizations__id=row[0])
if q: paper_query = paper_query.filter(q)
papers = paper_query.distinct()
@@ -1868,6 +1927,7 @@
else:
papers = []
+ log_debug('papers: %s' % str(papers))
for paper in papers:
authors = []
for author in paper.authors.order_by('id'):
@@ -1912,8 +1972,8 @@
def refresh_my_library_count(self):
Gdk.threads_enter()
- selection = self.ui.get_object('left_pane').get_selection()
- liststore, rows = selection.get_selected_rows()
+ selection = self.ui.get_object('left_pane_selection')
+ liststore, rows = selection.get_selected()
liststore.set_value(self.left_pane_model.get_iter((0,)), 0, '<b>My
Library</b> <span foreground="#888888">(%i)</span>' %
Paper.objects.count())
Gdk.threads_leave()
@@ -1964,7 +2024,7 @@
self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'author_edit_gui.xml')
self.author_edit_dialog = self.ui.get_object('author_edit_dialog')
- self.author_edit_dialog.connect("delete-event",
self.author_edit_dialog.destroy)
+ self.author_edit_dialog.connect("delete-event", lambda x, y :
self.author_edit_dialog.destroy)
self.ui.get_object('button_connect').connect("clicked", lambda x:
self.show_connect_menu())
self.ui.get_object('button_cancel').connect("clicked", lambda x:
self.author_edit_dialog.destroy())
self.ui.get_object('button_delete').connect("clicked", lambda x:
self.delete())
@@ -2001,9 +2061,11 @@
for organization in self.author.organizations.order_by('name'):
self.organizations_model.append((
organization.id,
organization.name, organization.location))
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Add an organization...')
- button.connect('clicked', lambda x:
self.get_new_organizations_menu().popup(None, None, None, 0, 0))
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Add an organization...')
+ menu = self.get_new_organizations_menu()
+ menu.attach_to_widget(button, None)
+ button.connect('clicked', lambda x: menu.popup(None, None, None,
None, 0, 0))
button.show()
self.ui.get_object('toolbar_organizations').insert(button, -1)
@@ -2044,14 +2106,15 @@
id =
self.organizations_model.get_value(self.organizations_model.get_iter(path),
0)
if id >= 0:
menu = Gtk.Menu()
- remove = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_REMOVE)
+ remove =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_REMOVE, None)
remove.connect('activate', lambda x:
self.organizations_model.remove(self.organizations_model.get_iter(path)))
menu.append(remove)
- menu_item = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_ADD)
+ menu_item =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_ADD, None)
menu_item.set_submenu(self.get_new_organizations_menu())
menu.append(menu_item)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def get_new_organizations_menu(self):
@@ -2104,7 +2167,8 @@
menu_item = Gtk.MenuItem(truncate_long_str(
author.name))
menu_item.connect('activate', lambda x, author, id:
self.connect(author, id), author,
self.author.id)
menu.append(menu_item)
- menu.popup(None, None, None, 0, 0)
+
menu.attach_to_widget(self.ui.get_object('treeview_organizations'), None)
+ menu.popup(None, None, None, None, 0, 0)
menu.show_all()
@@ -2114,7 +2178,7 @@
self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'organization_edit_gui.xml')
self.edit_dialog = self.ui.get_object('organization_edit_dialog')
- self.edit_dialog.connect("delete-event", self.edit_dialog.destroy)
+ self.edit_dialog.connect("delete-event", lambda x, y :
self.edit_dialog.destroy)
self.ui.get_object('button_connect').connect("clicked", lambda x:
self.show_connect_menu())
self.ui.get_object('button_cancel').connect("clicked", lambda x:
self.edit_dialog.destroy())
self.ui.get_object('button_delete').connect("clicked", lambda x:
self.delete())
@@ -2161,7 +2225,8 @@
menu_item =
Gtk.MenuItem(truncate_long_str(
organization.name))
menu_item.connect('activate', lambda x, organization, id:
self.connect(organization, id), organization,
self.organization.id)
menu.append(menu_item)
- menu.popup(None, None, None, 0, 0)
+ menu.attach_to_widget(self.edit_dialog, None)
+ menu.popup(None, None, None, None, 0, 0)
menu.show_all()
@@ -2172,7 +2237,7 @@
self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'source_edit_gui.xml')
self.edit_dialog = self.ui.get_object('source_edit_dialog')
- self.edit_dialog.connect("delete-event", self.edit_dialog.destroy)
+ self.edit_dialog.connect("delete-event", lambda x, y :
self.edit_dialog.destroy)
self.ui.get_object('button_connect').connect("clicked", lambda x:
self.show_connect_menu())
self.ui.get_object('button_cancel').connect("clicked", lambda x:
self.edit_dialog.destroy())
self.ui.get_object('button_delete').connect("clicked", lambda x:
self.delete())
@@ -2221,7 +2286,8 @@
menu_item = Gtk.MenuItem(truncate_long_str(
source.name))
menu_item.connect('activate', lambda x, source, id:
self.connect(source, id), source,
self.source.id)
menu.append(menu_item)
- menu.popup(None, None, None, 0, 0)
+ menu.attach_to_widget(self.ui.get_object('source_edit_dialog'),
None)
+ menu.popup(None, None, None, None, 0, 0)
menu.show_all()
@@ -2232,7 +2298,7 @@
self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'reference_edit_gui.xml')
self.edit_dialog = self.ui.get_object('reference_edit_dialog')
- self.edit_dialog.connect("delete-event", self.edit_dialog.destroy)
+ self.edit_dialog.connect("delete-event", lambda x, y :
self.edit_dialog.destroy)
self.ui.get_object('button_cancel').connect("clicked", lambda x:
self.edit_dialog.destroy())
self.ui.get_object('button_delete').connect("clicked", lambda x:
self.delete())
self.ui.get_object('button_save').connect("clicked", lambda x:
self.save())
@@ -2290,7 +2356,7 @@
self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'citation_edit_gui.xml')
self.edit_dialog = self.ui.get_object('citation_edit_dialog')
- self.edit_dialog.connect("delete-event", self.edit_dialog.destroy)
+ self.edit_dialog.connect("delete-event", lambda x, y :
self.edit_dialog.destroy)
self.ui.get_object('button_cancel').connect("clicked", lambda x:
self.edit_dialog.destroy())
self.ui.get_object('button_delete').connect("clicked", lambda x:
self.delete())
self.ui.get_object('button_save').connect("clicked", lambda x:
self.save())
@@ -2347,7 +2413,7 @@
self.ui = Gtk.Builder()
self.ui.add_from_file(RUN_FROM_DIR + 'paper_edit_gui.xml')
self.edit_dialog = self.ui.get_object('paper_edit_dialog')
- self.edit_dialog.connect("delete-event", self.edit_dialog.destroy)
+ self.edit_dialog.connect("delete-event", lambda x, y :
self.edit_dialog.destroy)
self.ui.get_object('button_cancel').connect("clicked", lambda x:
self.edit_dialog.destroy())
self.ui.get_object('button_delete').connect("clicked", lambda x:
self.delete())
self.ui.get_object('button_save').connect("clicked", lambda x:
self.save())
@@ -2376,9 +2442,11 @@
for author in self.paper.get_authors_in_order():
self.authors_model.append((
author.id,
author.name))
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Add an author...')
- button.connect('clicked', lambda x:
self.get_new_authors_menu().popup(None, None, None, 0, 0))
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Add an author...')
+ menu = self.get_new_authors_menu()
+ menu.attach_to_widget(button, None)
+ button.connect('clicked', lambda x: menu.popup(None, None, None,
None, 0, 0))
button.show()
self.ui.get_object('toolbar_authors').insert(button, -1)
@@ -2404,10 +2472,10 @@
treeview_references.append_column(Gtk.TreeViewColumn("",
Gtk.CellRendererText(), markup=2))
column = Gtk.TreeViewColumn()
renderer = Gtk.CellRendererPixbuf()
- column.pack_start(renderer, False, True, 0)
+ column.pack_start(renderer, False)
column.add_attribute(renderer, 'pixbuf', 3)
renderer = Gtk.CellRendererText()
- column.pack_start(renderer, True, True, 0)
+ column.pack_start(renderer, True)
column.add_attribute(renderer, 'markup', 1)
column.set_expand(True)
treeview_references.append_column(column)
@@ -2421,9 +2489,11 @@
icon = None
self.references_model.append((references[i].id,
references[i].line_from_referencing_paper , '<i>' + str(i + 1) + ':</i>',
icon))
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Add a reference...')
- button.connect('clicked', lambda x:
self.get_new_authors_menu().popup(None, None, None, 0, 0))
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Add a reference...')
+ menu = self.get_new_authors_menu()
+ menu.attach_to_widget(button, None)
+ button.connect('clicked', lambda x: menu.popup(None, None, None,
None, 0, 0))
button.show()
#self.ui.get_object('toolbar_references').insert( button, -1 )
@@ -2436,10 +2506,10 @@
#treeview_citations.append_column( Gtk.TreeViewColumn("",
Gtk.CellRendererText(), markup=2) )
column = Gtk.TreeViewColumn()
renderer = Gtk.CellRendererPixbuf()
- column.pack_start(renderer, False, True, 0)
+ column.pack_start(renderer, False)
column.add_attribute(renderer, 'pixbuf', 3)
renderer = Gtk.CellRendererText()
- column.pack_start(renderer, True, True, 0)
+ column.pack_start(renderer, True)
column.add_attribute(renderer, 'markup', 1)
column.set_expand(True)
treeview_citations.append_column(column)
@@ -2453,9 +2523,11 @@
icon = None
self.citations_model.append((references[i].id,
references[i].line_from_referenced_paper , '<i>' + str(i + 1) + ':</i>',
icon))
- button = Gtk.ToolButton(Gtk.STOCK_ADD)
- button.set_tooltip(Gtk.Tooltips(), 'Add a reference...')
- button.connect('clicked', lambda x:
self.get_new_authors_menu().popup(None, None, None, 0, 0))
+ button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
+ button.set_tooltip_text('Add a reference...')
+ menu = self.get_new_authors_menu()
+ menu.attach_to_widget(button, None)
+ button.connect('clicked', lambda x: menu.popup(None, None, None,
None, 0, 0))
button.show()
#self.ui.get_object('toolbar_references').insert( button, -1 )
@@ -2510,14 +2582,15 @@
id =
self.authors_model.get_value(self.authors_model.get_iter(path), 0)
if id >= 0:
menu = Gtk.Menu()
- remove = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_REMOVE)
+ remove =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_REMOVE, None)
remove.connect('activate', lambda x:
self.authors_model.remove(self.authors_model.get_iter(path)))
menu.append(remove)
- menu_item = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_ADD)
+ menu_item =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_ADD, None)
menu_item.set_submenu(self.get_new_authors_menu())
menu.append(menu_item)
menu.show_all()
- menu.popup(None, None, None, event.button,
event.get_time())
+ menu.attach_to_widget(treeview, None)
+ menu.popup(None, None, None, None, event.button,
event.get_time())
return True
def handle_references_button_press_event(self, treeview, event):
@@ -2535,14 +2608,15 @@
reference = Reference.objects.get(id=id)
menu = Gtk.Menu()
if reference.referenced_paper and
reference.referenced_paper.full_text and
os.path.isfile(reference.referenced_paper.full_text.path):
- menu_item =
Gtk.ImageMenuItem(stock_id=Gtk.STOCK_OPEN)
+ menu_item =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_OPEN, None)
menu_item.connect('activate', lambda x:
reference.referenced_paper.open())
menu.append(menu_item)
- menu_item = Gtk.ImageMenuItem(stock_id=Gtk.STOCK_EDIT)
***The diff for this file has been truncated for email.***
=======================================
--- /importer/__init__.py Tue Feb 21 12:16:39 2012
+++ /importer/__init__.py Wed Feb 22 16:03:16 2012
@@ -22,11 +22,8 @@
import urllib, urlparse
import gi
-pyGtk.require("2.0")
from gi.repository import GObject
from gi.repository import Gtk
-import gnome
-import gnome.ui
from gi.repository import Pango
from pyPdf import PdfFileReader
=======================================
--- /ui.xml Thu Feb 16 14:38:19 2012
+++ /ui.xml Wed Feb 22 16:03:16 2012
@@ -1,144 +1,9 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="2.16"/>
- <object class="GtkUIManager" id="uimanager1">
- <child>
- <object class="GtkActionGroup" id="actiongroup1">
- <child>
- <object class="GtkAction" id="menuitem_files">
- <property name="name">menuitem_files</property>
- <property name="label" translatable="yes">_File</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_import_files">
- <property name="name">menuitem_import_files</property>
- <property name="label" translatable="yes">Import
Files…</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_import_directory">
- <property name="name">menuitem_import_directory</property>
- <property name="label" translatable="yes">Import
Directory…</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_import_url">
- <property name="name">menuitem_import_url</property>
- <property name="label" translatable="yes">Import
URL…</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_import_doi">
- <property name="name">menuitem_import_doi</property>
- <property name="label" translatable="yes">Import
DOI…</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_import_bibtex">
- <property name="name">menuitem_import_bibtex</property>
- <property name="label" translatable="yes">Import
BibTex…</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_quit">
- <property name="stock_id">gtk-quit</property>
- <property name="name">menuitem_quit</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_edit">
- <property name="name">menuitem_edit</property>
- <property name="label" translatable="yes">_Edit</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_cut">
- <property name="stock_id">gtk-cut</property>
- <property name="name">menuitem_cut</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_copy">
- <property name="stock_id">gtk-copy</property>
- <property name="name">menuitem_copy</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_paste">
- <property name="stock_id">gtk-paste</property>
- <property name="name">menuitem_paste</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_delete">
- <property name="stock_id">gtk-delete</property>
- <property name="name">menuitem_delete</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_view">
- <property name="name">menuitem4</property>
- <property name="label" translatable="yes">_View</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_author_graph">
- <property name="name">menuitem_author_graph</property>
- <property name="label" translatable="yes">Author
Graph...</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_paper_graph">
- <property name="name">menuitem_paper_graph</property>
- <property name="label" translatable="yes">Paper
Graph...</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_help">
- <property name="name">menuitem_help</property>
- <property name="label" translatable="yes">_Help</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="menuitem_about">
- <property name="stock_id">gtk-about</property>
- <property name="name">menuitem_about</property>
- </object>
- </child>
- </object>
- </child>
- <ui>
- <menubar name="menubar1">
- <menu action="menuitem_files">
- <menuitem action="menuitem_import_files"/>
- <menuitem action="menuitem_import_directory"/>
- <menuitem action="menuitem_import_url"/>
- <menuitem action="menuitem_import_doi"/>
- <menuitem action="menuitem_import_bibtex"/>
- <separator/>
- <menuitem action="menuitem_quit"/>
- </menu>
- <menu action="menuitem_edit">
- <menuitem action="menuitem_cut"/>
- <menuitem action="menuitem_copy"/>
- <menuitem action="menuitem_paste"/>
- <menuitem action="menuitem_delete"/>
-
- </menu>
- <menu action="menuitem_view">
- <menuitem action="menuitem_author_graph"/>
- <menuitem action="menuitem_paper_graph"/>
- </menu>
- <menu action="menuitem_help">
- <menuitem action="menuitem_about"/>
- </menu>
- </menubar>
- </ui>
- </object>
- <!-- interface-requires gtk+ 2.16 -->
- <!-- interface-naming-policy toplevel-contextual -->
+ <!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="main_window">
+ <property name="width_request">800</property>
+ <property name="height_request">600</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes">gPapers</property>
@@ -154,7 +19,7 @@
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
<child>
- <object class="GtkMenuBar" constructor="uimanager1"
id="menubar1">
+ <object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
@@ -197,19 +62,19 @@
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="width_request">170</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- <property name="hscrollbar_policy">automatic</property>
- <property name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView" id="left_pane">
- <property name="width_request">192</property>
- <property name="height_request">512</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
<property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="left_pane_selection"/>
+ </child>
</object>
</child>
</object>
@@ -238,6 +103,9 @@
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
<property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection2"/>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -304,8 +172,6 @@
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="primary_icon_activatable">False</property>
<property
name="secondary_icon_activatable">False</property>
- <property
name="primary_icon_sensitive">True</property>
- <property
name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -315,6 +181,7 @@
</child>
<child>
<object class="GtkButton"
id="clear_middle_pane_search">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property
name="receives_default">True</property>
@@ -340,6 +207,7 @@
</child>
<child>
<object class="GtkButton"
id="refresh_middle_pane_search">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property
name="receives_default">True</property>
@@ -365,11 +233,12 @@
</child>
<child>
<object class="GtkButton" id="save_smart_search">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property
name="receives_default">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="tooltip-text"
translatable="yes">Save this as a smart search...</property>
+ <property name="tooltip_text"
translatable="yes">Save this as a smart search...</property>
<property
name="use_action_appearance">False</property>
<property name="relief">none</property>
<child>
@@ -410,14 +279,15 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView"
id="author_filter">
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="rules_hint">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection3"/>
+ </child>
</object>
</child>
</object>
@@ -436,14 +306,15 @@
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView"
id="source_filter">
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="rules_hint">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection4"/>
+ </child>
</object>
</child>
</object>
@@ -457,14 +328,15 @@
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView"
id="organization_filter">
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="rules_hint">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection5"/>
+ </child>
</object>
</child>
</object>
@@ -496,8 +368,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView"
id="middle_top_pane">
<property
name="height_request">100</property>
@@ -505,6 +375,9 @@
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="rules_hint">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection6"/>
+ </child>
</object>
</child>
</object>
@@ -537,14 +410,15 @@
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView"
id="paper_information_pane">
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection7"/>
+ </child>
</object>
</child>
</object>
@@ -649,14 +523,15 @@
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTreeView"
id="treeview_bookmarks">
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="rules_hint">True</property>
+ <child
internal-child="selection">
+ <object
class="GtkTreeSelection" id="treeview-selection8"/>
+ </child>
</object>
</child>
</object>
@@ -691,8 +566,6 @@
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
<child>
<object class="GtkTextView"
id="paper_notes">
<property
name="visible">True</property>
@@ -740,6 +613,7 @@
<property name="icon_size">0</property>
<child>
<object class="GtkToolButton" id="toolbutton1">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
@@ -754,6 +628,7 @@
</child>
<child>
<object class="GtkToolButton"
id="button_move_previous_page">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -768,6 +643,7 @@
</child>
<child>
<object class="GtkToolButton"
id="button_move_next_page">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -782,6 +658,7 @@
</child>
<child>
<object class="GtkToolButton"
id="button_zoom_in">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -795,6 +672,7 @@
</child>
<child>
<object class="GtkToolButton"
id="button_zoom_out">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -808,6 +686,7 @@
</child>
<child>
<object class="GtkToolButton"
id="button_zoom_best_fit">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -821,6 +700,7 @@
</child>
<child>
<object class="GtkToolButton"
id="button_zoom_normal">
+ <property
name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -860,5 +740,140 @@
</child>
</object>
</child>
+ </object>
+ <object class="GtkUIManager" id="uimanager1">
+ <child>
+ <object class="GtkActionGroup" id="actiongroup1">
+ <child>
+ <object class="GtkAction" id="menuitem_files">
+ <property name="name">menuitem_files</property>
+ <property name="label" translatable="yes">_File</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_import_files">
+ <property name="name">menuitem_import_files</property>
+ <property name="label" translatable="yes">Import
Files…</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_import_directory">
+ <property name="name">menuitem_import_directory</property>
+ <property name="label" translatable="yes">Import
Directory…</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_import_url">
+ <property name="name">menuitem_import_url</property>
+ <property name="label" translatable="yes">Import
URL…</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_import_doi">
+ <property name="name">menuitem_import_doi</property>
+ <property name="label" translatable="yes">Import
DOI…</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_import_bibtex">
+ <property name="name">menuitem_import_bibtex</property>
+ <property name="label" translatable="yes">Import
BibTex…</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_quit">
+ <property name="stock_id">gtk-quit</property>
+ <property name="name">menuitem_quit</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_edit">
+ <property name="name">menuitem_edit</property>
+ <property name="label" translatable="yes">_Edit</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_cut">
+ <property name="stock_id">gtk-cut</property>
+ <property name="name">menuitem_cut</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_copy">
+ <property name="stock_id">gtk-copy</property>
+ <property name="name">menuitem_copy</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_paste">
+ <property name="stock_id">gtk-paste</property>
+ <property name="name">menuitem_paste</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_delete">
+ <property name="stock_id">gtk-delete</property>
+ <property name="name">menuitem_delete</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_view">
+ <property name="name">menuitem4</property>
+ <property name="label" translatable="yes">_View</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_author_graph">
+ <property name="name">menuitem_author_graph</property>
+ <property name="label" translatable="yes">Author
Graph...</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_paper_graph">
+ <property name="name">menuitem_paper_graph</property>
+ <property name="label" translatable="yes">Paper
Graph...</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_help">
+ <property name="name">menuitem_help</property>
+ <property name="label" translatable="yes">_Help</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem_about">
+ <property name="stock_id">gtk-about</property>
+ <property name="name">menuitem_about</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <ui>
+ <menubar name="menubar1">
+ <menu action="menuitem_files">
+ <menuitem action="menuitem_import_files"/>
+ <menuitem action="menuitem_import_directory"/>
+ <menuitem action="menuitem_import_url"/>
+ <menuitem action="menuitem_import_doi"/>
+ <menuitem action="menuitem_import_bibtex"/>
+ <separator/>
+ <menuitem action="menuitem_quit"/>
+ </menu>
+ <menu action="menuitem_edit">
+ <menuitem action="menuitem_cut"/>
+ <menuitem action="menuitem_copy"/>
+ <menuitem action="menuitem_paste"/>
+ <menuitem action="menuitem_delete"/>
+
+ </menu>
+ <menu action="menuitem_view">
+ <menuitem action="menuitem_author_graph"/>
+ <menuitem action="menuitem_paper_graph"/>
+ </menu>
+ <menu action="menuitem_help">
+ <menuitem action="menuitem_about"/>
+ </menu>
+ </menubar>
+ </ui>
</object>
</interface>
==============================================================================
Revision: 08c1af9ca7a7
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Wed Feb 22 14:11:33 2012
Log: simplify column sorting code
http://code.google.com/p/gpapers/source/detail?r=08c1af9ca7a7
Modified:
/gPapers.py
=======================================
--- /gPapers.py Wed Feb 22 16:03:16 2012
+++ /gPapers.py Wed Feb 22 14:11:33 2012
@@ -134,33 +134,6 @@
if renderer.__class__.__name__ == 'CellRendererText':
renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
-treeview_sort_states = {}
-def sort_model_by_column(column, model, model_column_number):
- global treeview_sort_states
- sort_order = treeview_sort_states.get(str(model) + '-sort_order',
Gtk.SortType.ASCENDING)
- last_sort_column = treeview_sort_states.get(str(model)
+ '-last_sort_column', None)
-
- if last_sort_column is not None:
- last_sort_column.set_sort_indicator(False)
-
- # Ascending or descending?
- if last_sort_column == column:
- if sort_order == Gtk.SortType.ASCENDING:
- sort_order = Gtk.SortType.DESCENDING
- else:
- sort_order = Gtk.SortType.ASCENDING
- else:
- sort_order = Gtk.SortType.ASCENDING
- treeview_sort_states[str(model) + '-last_sort_column'] = column
- treeview_sort_states[str(model) + '-sort_order'] = sort_order
-
- rows = [tuple(r) + (i,) for i, r in enumerate(model)]
- rows.sort(key=lambda x:x[model_column_number], reverse=sort_order ==
Gtk.SortType.DESCENDING)
- model.reorder([r[-1] for r in rows])
-
- column.set_sort_indicator(True)
- column.set_sort_order(sort_order)
-
def fetch_citation_via_middle_top_pane_row(row):
t = thread.start_new_thread(import_citation_via_middle_top_pane_row,
(row,))
@@ -771,12 +744,12 @@
author_filter.set_model(self.author_filter_model)
author_filter.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
column = Gtk.TreeViewColumn("Author", Gtk.CellRendererText(),
text=1)
+ column.set_sort_column_id(1)
column.set_min_width(128)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.author_filter_model, 1)
author_filter.append_column(column)
column = Gtk.TreeViewColumn("Papers", Gtk.CellRendererText(),
text=2)
- column.connect('clicked', sort_model_by_column,
self.author_filter_model, 2)
+ column.set_sort_column_id(2)
author_filter.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(author_filter.get_columns())
author_filter.get_selection().connect('changed', lambda x:
thread.start_new_thread(self.refresh_middle_pane_from_my_library, (False,)))
@@ -789,15 +762,15 @@
organization_filter.set_model(self.organization_filter_model)
organization_filter.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
column = Gtk.TreeViewColumn("Organization",
Gtk.CellRendererText(), text=1)
+ column.set_sort_column_id(1)
column.set_min_width(128)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.organization_filter_model, 1)
organization_filter.append_column(column)
column = Gtk.TreeViewColumn("Authors", Gtk.CellRendererText(),
text=2)
- column.connect('clicked', sort_model_by_column,
self.organization_filter_model, 2)
+ column.set_sort_column_id(2)
organization_filter.append_column(column)
column = Gtk.TreeViewColumn("Papers", Gtk.CellRendererText(),
text=3)
- column.connect('clicked', sort_model_by_column,
self.organization_filter_model, 3)
+ column.set_sort_column_id(3)
organization_filter.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(organization_filter.get_columns())
organization_filter.get_selection().connect('changed', lambda x:
thread.start_new_thread(self.refresh_middle_pane_from_my_library, (False,)))
@@ -810,18 +783,18 @@
source_filter.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
source_filter.set_model(self.source_filter_model)
column = Gtk.TreeViewColumn("Source", Gtk.CellRendererText(),
text=1)
+ column.set_sort_column_id(1)
column.set_min_width(128)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.source_filter_model, 1)
source_filter.append_column(column)
column = Gtk.TreeViewColumn("Issue", Gtk.CellRendererText(),
text=2)
- column.connect('clicked', sort_model_by_column,
self.source_filter_model, 2)
+ column.set_sort_column_id(2)
source_filter.append_column(column)
column = Gtk.TreeViewColumn("Location", Gtk.CellRendererText(),
text=3)
- column.connect('clicked', sort_model_by_column,
self.source_filter_model, 3)
+ column.set_sort_column_id(3)
source_filter.append_column(column)
column = Gtk.TreeViewColumn("Publisher", Gtk.CellRendererText(),
text=4)
- column.connect('clicked', sort_model_by_column,
self.source_filter_model, 4)
+ column.set_sort_column_id(4)
source_filter.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(source_filter.get_columns())
source_filter.get_selection().connect('changed', lambda x:
thread.start_new_thread(self.refresh_middle_pane_from_my_library, (False,)))
@@ -849,18 +822,18 @@
self.treeview_bookmarks_model = Gtk.ListStore(int, int, str, str,
int)
treeview_bookmarks.set_model(self.treeview_bookmarks_model)
column = Gtk.TreeViewColumn("Page", Gtk.CellRendererText(),
markup=1)
- column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 1)
+ column.set_sort_column_id(1)
treeview_bookmarks.append_column(column)
column = Gtk.TreeViewColumn("Title", Gtk.CellRendererText(),
markup=2)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 2)
+ column.set_sort_column_id(2)
treeview_bookmarks.append_column(column)
column = Gtk.TreeViewColumn("Words", Gtk.CellRendererText(),
markup=4)
- column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 4)
+ column.set_sort_column_id(4)
treeview_bookmarks.append_column(column)
column = Gtk.TreeViewColumn("Updated", Gtk.CellRendererText(),
markup=3)
column.set_min_width(75)
- column.connect('clicked', sort_model_by_column,
self.treeview_bookmarks_model, 3)
+ column.set_sort_column_id(3)
treeview_bookmarks.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(treeview_bookmarks.get_columns())
treeview_bookmarks.connect('button-press-event',
self.handle_treeview_bookmarks_button_press_event)
@@ -1036,33 +1009,32 @@
renderer = Gtk.CellRendererText()
column.pack_start(renderer, True)
column.add_attribute(renderer, 'markup', 2)
- column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 2)
+ column.set_sort_column_id(2)
middle_top_pane.append_column(column)
-
column = Gtk.TreeViewColumn("Authors", Gtk.CellRendererText(),
markup=1)
+ column.set_sort_column_id(1)
column.set_min_width(-1)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 1)
middle_top_pane.append_column(column)
column = Gtk.TreeViewColumn("Journal", Gtk.CellRendererText(),
markup=3)
+ column.set_sort_column_id(3)
column.set_min_width(-1)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 3)
middle_top_pane.append_column(column)
column = Gtk.TreeViewColumn("Year", Gtk.CellRendererText(),
markup=4)
+ column.set_sort_column_id(4)
column.set_min_width(-1)
column.set_expand(False)
- column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 4)
middle_top_pane.append_column(column)
column = Gtk.TreeViewColumn("Rating", Gtk.CellRendererProgress(),
value=5, text=12)
+ column.set_sort_column_id(5)
column.set_min_width(-1)
column.set_expand(False)
- column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 5)
middle_top_pane.append_column(column)
column = Gtk.TreeViewColumn("Imported", Gtk.CellRendererText(),
markup=10)
+ column.set_sort_column_id(10)
column.set_min_width(80)
column.set_expand(False)
- column.connect('clicked', sort_model_by_column,
self.middle_top_pane_model, 10)
middle_top_pane.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(middle_top_pane.get_columns())
@@ -2044,17 +2016,17 @@
renderer.set_property('editable', True)
renderer.connect('edited', lambda cellrenderertext, path,
new_text:
self.organizations_model.set_value(self.organizations_model.get_iter(path),
1, new_text) or
self.update_organization_name(self.organizations_model.get_value(self.organizations_model.get_iter(path),
0), new_text))
column = Gtk.TreeViewColumn("Organization", renderer, text=1)
+ column.set_sort_column_id(1)
column.set_min_width(128)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.organizations_model, 1)
treeview_organizations.append_column(column)
renderer = Gtk.CellRendererText()
renderer.set_property('editable', True)
renderer.connect('edited', lambda cellrenderertext, path,
new_text:
self.organizations_model.set_value(self.organizations_model.get_iter(path),
2, new_text) or
self.update_organization_location(self.organizations_model.get_value(self.organizations_model.get_iter(path),
0), new_text))
column = Gtk.TreeViewColumn("Location", renderer, text=2)
+ column.set_sort_column_id(2)
column.set_min_width(128)
column.set_expand(True)
- column.connect('clicked', sort_model_by_column,
self.organizations_model, 2)
treeview_organizations.append_column(column)
make_all_columns_resizeable_clickable_ellipsize(treeview_organizations.get_columns())
treeview_organizations.connect('button-press-event',
self.handle_organizations_button_press_event)
==============================================================================
Revision: a2c46f795eaf
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Wed Feb 22 15:18:23 2012
Log: some fixes for PDF preview
http://code.google.com/p/gpapers/source/detail?r=a2c46f795eaf
Modified:
/gPapers.py
=======================================
--- /gPapers.py Wed Feb 22 14:11:33 2012
+++ /gPapers.py Wed Feb 22 15:18:23 2012
@@ -728,12 +728,13 @@
self.pdf_preview['current_page'].render(cr)
if self.pdf_preview.get('current_page_number') != None:
for bookmark in
Bookmark.objects.filter(paper=self.displayed_paper,
page=self.pdf_preview.get('current_page_number')):
- x_pos = int(bookmark.x * widget.allocation.width)
- y_pos = int(bookmark.y * widget.allocation.height)
+ x_pos = int(bookmark.x * widget.get_allocated_width())
+ y_pos = int(bookmark.y * widget.get_allocated_height())
if bookmark.notes:
- widget.window.draw_pixbuf(None, NOTE_ICON, 0, 0,
x_pos, y_pos)
+ Gdk.cairo_set_source_pixbuf(cr, NOTE_ICON, x_pos,
y_pos)
else:
- widget.window.draw_pixbuf(None, BOOKMARK_ICON, 0, 0,
x_pos, y_pos)
+ Gdk.cairo_set_source_pixbuf(cr, BOOKMARK_ICON, x_pos,
y_pos)
+ cr.paint()
def init_my_library_filter_pane(self):
@@ -982,7 +983,7 @@
if liststore[row][4] == 'local':
self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(self.refresh_middle_pane_from_my_library, (True,))
else:
- self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.provider[liststore[rows][4]]),
())
+ self.current_middle_top_pane_refresh_thread_ident =
thread.start_new_thread(lambda :
self.refresh_middle_pane_from_external(self.provider[liststore[row][4]]),
())
self.select_middle_top_pane_item(self.ui.get_object('middle_top_pane').get_selection())
@@ -1100,8 +1101,8 @@
def handle_pdf_preview_button_press_event(self, pdf_preview, event):
x = int(event.x)
y = int(event.y)
- x_percent = 1.0 * x / pdf_preview.allocation.width
- y_percent = 1.0 * y / pdf_preview.allocation.height
+ x_percent = 1.0 * x / pdf_preview.get_allocated_width()
+ y_percent = 1.0 * y / pdf_preview.get_allocated_height()
time = event.time
#print 'x, y, x_percent, y_percent, time', x, y, x_percent,
y_percent, time
@@ -1110,8 +1111,8 @@
self.current_bookmark = bookmark = None
if self.displayed_paper and current_page_number >= 0:
for b in
self.displayed_paper.bookmark_set.filter(paper=self.displayed_paper,
page=current_page_number):
- x_delta = x - b.x * pdf_preview.allocation.width
- y_delta = y - b.y * pdf_preview.allocation.height
+ x_delta = x - b.x * pdf_preview.get_allocated_width()
+ y_delta = y - b.y * pdf_preview.get_allocated_height()
if x_delta > 0 and x_delta < 16:
if y_delta > 0 and y_delta < 16:
self.current_bookmark = bookmark = b
@@ -1160,8 +1161,8 @@
def handle_pdf_preview_drag_drop_event(self, o1, o2, x, y, o3):
if self.current_bookmark:
pdf_preview = self.ui.get_object('pdf_preview')
- x_percent = 1.0 * x / pdf_preview.allocation.width
- y_percent = 1.0 * y / pdf_preview.allocation.height
+ x_percent = 1.0 * x / pdf_preview.get_allocated_width()
+ y_percent = 1.0 * y / pdf_preview.get_allocated_height()
self.current_bookmark.x = x_percent
self.current_bookmark.y = y_percent
self.current_bookmark.save()
@@ -1719,16 +1720,20 @@
def echo_objects(self, a=None, b=None, c=None, d=None, e=None, f=None,
g=None):
print a, b, c, d, e, f, g
+ # FIXME: only save after some time without changes
def update_paper_notes(self, text_buffer, id):
+ log_debug('update_paper_notes called for id %s' % str(id))
paper = Paper.objects.get(id=id)
- #print 'saving notes', text_buffer.get_text(
text_buffer.get_start_iter(), text_buffer.get_end_iter() )
- paper.notes = text_buffer.get_text(text_buffer.get_start_iter(),
text_buffer.get_end_iter())
+ paper.notes = text_buffer.get_text(text_buffer.get_start_iter(),
+ text_buffer.get_end_iter(),
False)
paper.save()
+ # FIXME: only save after some time without changes
def update_bookmark_notes(self, text_buffer, id):
+ log_debug('update_bookmark_notes called for id %s' % str(id))
bookmark = Bookmark.objects.get(id=id)
- #print 'saving notes', text_buffer.get_text(
text_buffer.get_start_iter(), text_buffer.get_end_iter() )
- bookmark.notes =
text_buffer.get_text(text_buffer.get_start_iter(),
text_buffer.get_end_iter())
+ bookmark.notes = text_buffer.get_text(text_buffer.get_start_iter(),
+ text_buffer.get_end_iter(),
False)
bookmark.save()
def delete_papers(self, paper_ids):
==============================================================================
Revision: 02fcd4b316b5
Author: Marcel Stimberg <
marcel...@gmail.com>
Date: Thu Feb 23 10:47:00 2012
Log: minor UI changes and small fixes
http://code.google.com/p/gpapers/source/detail?r=02fcd4b316b5
Modified:
/gPapers.py
/ui.xml
=======================================
--- /gPapers.py Wed Feb 22 15:18:23 2012
+++ /gPapers.py Thu Feb 23 10:47:00 2012
@@ -1533,7 +1533,7 @@
else:
self.update_bookmark_pane_from_paper(None)
- self.paper_information_pane_model.append(('<b>Number of
papers:</b>', len(rows) ,))
+ self.paper_information_pane_model.append(('<b>Number of
papers:</b>', str(len(rows)) ,))
downloadable_paper_urls = set()
for row in rows:
@@ -1576,7 +1576,7 @@
paper_information_toolbar.show_all()
def graph_papers_and_authors(self, paper_ids=None):
- log_debug('paper_ids: %s', str(paper_ids))
+ log_debug('paper_ids: %s' % str(paper_ids))
g = []
g.append('graph G {')
g.append('\toverlap=false;')
=======================================
--- /ui.xml Wed Feb 22 16:03:16 2012
+++ /ui.xml Thu Feb 23 10:47:00 2012
@@ -137,6 +137,7 @@
<property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
<child>
<object class="GtkLabel" id="middle_pane_label">
+ <property name="width_request">120</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -144,7 +145,7 @@
<property name="use_markup">True</property>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">16</property>
<property name="position">0</property>
@@ -174,7 +175,7 @@
<property
name="secondary_icon_activatable">False</property>
</object>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@@ -480,6 +481,8 @@
<property
name="visible">True</property>
<property
name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property
name="hexpand">True</property>
+ <property
name="vexpand">True</property>
</object>
</child>
</object>
@@ -520,6 +523,7 @@
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<object class="GtkScrolledWindow"
id="scrolledwindow6">
+ <property
name="height_request">80</property>
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -563,6 +567,7 @@
</child>
<child>
<object class="GtkScrolledWindow"
id="scrolledwindow10">
+ <property
name="height_request">80</property>
<property
name="visible">True</property>
<property
name="can_focus">True</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -633,7 +638,6 @@
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="use_action_appearance">False</property>
- <property name="is_important">True</property>
<property
name="stock_id">gtk-go-back</property>
</object>
<packing>
@@ -648,7 +652,6 @@
<property name="can_focus">False</property>
<property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property
name="use_action_appearance">False</property>
- <property name="is_important">True</property>
<property
name="stock_id">gtk-go-forward</property>
</object>
<packing>