[gpapers] 17 new revisions pushed by marcelCo...@gmail.com on 2012-06-03 22:29 GMT

1 view
Skip to first unread message

codesite...@google.com

unread,
Jun 3, 2012, 6:36:15 PM6/3/12
to gpapers...@googlegroups.com
17 new revisions:

Revision: af9df4f4473a
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Wed May 30 14:35:58 2012
Log: Rewrite the model/view for the paper list (using paper
and "virtual" p...
http://code.google.com/p/gpapers/source/detail?r=af9df4f4473a

Revision: 362418d9c7f7
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Thu Apr 12 14:56:04 2012
Log: also find DOIs that do not have any "doi" prefix
http://code.google.com/p/gpapers/source/detail?r=362418d9c7f7

Revision: 213c1285ba05
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Thu Apr 12 14:56:20 2012
Log: display icon for papers with fulltext
http://code.google.com/p/gpapers/source/detail?r=213c1285ba05

Revision: 895530ea5d61
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 10:03:59 2012
Log: whitespace fix
http://code.google.com/p/gpapers/source/detail?r=895530ea5d61

Revision: 803ad101b9f0
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 10:50:52 2012
Log: Allow DOIs immediately following a colon (without space)
http://code.google.com/p/gpapers/source/detail?r=803ad101b9f0

Revision: 67ff690cfa6c
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 14:48:42 2012
Log: fix doubleclick on paper
http://code.google.com/p/gpapers/source/detail?r=67ff690cfa6c

Revision: 5a42fc1bc826
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 15:11:57 2012
Log: fix label update
http://code.google.com/p/gpapers/source/detail?r=5a42fc1bc826

Revision: cd918b4a2ed7
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:16:42 2012
Log: various fixes
http://code.google.com/p/gpapers/source/detail?r=cd918b4a2ed7

Revision: 4ebac64ee988
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:18:04 2012
Log: more small fixes
http://code.google.com/p/gpapers/source/detail?r=4ebac64ee988

Revision: bb6e6888f3da
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:18:31 2012
Log: fetch more complete metadata from pubmed
http://code.google.com/p/gpapers/source/detail?r=bb6e6888f3da

Revision: f488356991d3
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:19:48 2012
Log: mode data and icons dir, adapt paths and setup.py script
http://code.google.com/p/gpapers/source/detail?r=f488356991d3

Revision: 56e763b823fe
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:20:46 2012
Log: remove deseb (for now)
http://code.google.com/p/gpapers/source/detail?r=56e763b823fe

Revision: 285d81357a5c
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:21:17 2012
Log: use os.path.join for constructing paths
http://code.google.com/p/gpapers/source/detail?r=285d81357a5c

Revision: b255cee9ba50
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:22:03 2012
Log: fix bibtex download
http://code.google.com/p/gpapers/source/detail?r=b255cee9ba50

Revision: 11d5307ec2c3
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:22:34 2012
Log: add more info to setup.py
http://code.google.com/p/gpapers/source/detail?r=11d5307ec2c3

Revision: a11e0962edd9
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:23:06 2012
Log: save raw bibtex in database
http://code.google.com/p/gpapers/source/detail?r=a11e0962edd9

Revision: 47b15b5da2a8
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:25:40 2012
Log: some UI fixes
http://code.google.com/p/gpapers/source/detail?r=47b15b5da2a8

==============================================================================
Revision: af9df4f4473a
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Wed May 30 14:35:58 2012
Log: Rewrite the model/view for the paper list (using paper
and "virtual" paper objects instead of converting the data to rows).
http://code.google.com/p/gpapers/source/detail?r=af9df4f4473a

Modified:
/gpapers.py
/gpapers/__init__.py
/gpapers/gPapers/models.py
/gpapers/importer/__init__.py

=======================================
--- /gpapers.py Mon Apr 9 13:29:00 2012
+++ /gpapers.py Wed May 30 14:35:58 2012
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python

# gPapers
# Copyright (C) 2007-2009 Derek Anderson
=======================================
--- /gpapers/__init__.py Mon Apr 9 14:48:32 2012
+++ /gpapers/__init__.py Wed May 30 14:35:58 2012
@@ -139,10 +139,6 @@
renderer.set_property('ellipsize', Pango.EllipsizeMode.END)


-def fetch_citation_via_middle_top_pane_row(row):
- t = thread.start_new_thread(import_citation_via_middle_top_pane_row,
(row,))
-
-
def fetch_citations_via_urls(urls):
log_info('trying to fetch: %s' % str(urls))
t = thread.start_new_thread(import_citations, (urls,))
@@ -205,73 +201,10 @@

main_gui.refresh_middle_pane_search()

-
-def paper_info_received(paper):
- paper.save()
- importer.import_citation(paper.import_url, paper=paper,
- callback=main_gui.refresh_middle_pane_search)
-
-
-def import_citation_via_middle_top_pane_row(row):
- # id, authors, title, journal, year, rating, abstract, icon,
import_url, doi, created, updated, empty_str, pubmed_id
-
- paper_id = row[0]
- authors = row[1]
- title = row[2]
- journal = row[3]
- year = row[4]
- abstract = row[6]
- import_url = row[8]
- doi = row[9]
- pubmed_id = row[13]
- data = row[14]
- provider = row[15]
- if doi and not import_url:
- import_url = 'http://dx.doi.org/' + doi
- importer.get_or_create_paper_via(id=paper_id, doi=doi,
- pubmed_id=pubmed_id,
- import_url=import_url,
- title=title, data=data,
- provider=provider,
- callback=paper_info_received)
-
-
def row_from_dictionary(info, provider=None):
assert info is not None

- created = info.get('created')
- updated = info.get('updated')
- try:
- created = created.strftime('%Y-%m-%d')
- except:
- pass
- try:
- updated = updated.strftime('%Y-%m-%d')
- except:
- pass
-
- row = (
- info.get('id', -1), # paper id
- pango_escape(', '.join([author for author in
- info.get('authors', [])])), # authors
- pango_escape(info.get('title') or ''), # title
- pango_escape(info.get('journal') or ''), # journal
- info.get('year'), # year
- info.get('rating', 0), # ranking
- info.get('abstract'), # abstract
- info.get('icon'), # icon
- info.get('import_url'), # import_url
- info.get('doi'), # doi
- created, # created
- updated, # updated
- '', # empty_str
- info.get('pubmed_id'), # pubmed_id
- info.get('data'),
- provider
- )
-
- return row
-
+ return (VirtualPaper(info, provider), )

def paper_from_dictionary(paper_info, paper=None):
'''
@@ -329,6 +262,52 @@

return paper

+def render_paper_text_attribute(column, cell, model, iter, attribute):
+ '''
+ This function is used by the view of the list of papers to extract an
+ attribute from the paper object.
+ '''
+ paper = model.get_value(iter, 0)
+
+ # special case some attributes that are not direct attributes of the
paper object
+ if attribute == 'Authors':
+ authors = ', '.join([ author.name for author in
paper.get_authors_in_order() ])
+ cell.set_property('text', authors)
+ elif attribute == 'Journal':
+ if paper.source:
+ journal = paper.source.name
+ else:
+ journal = ''
+ cell.set_property('text', journal)
+ elif attribute == 'Year':
+ if paper.source and paper.source.publication_date:
+ pub_year = str(paper.source.publication_date.year)
+ else:
+ pub_year = ''
+ cell.set_property('text', pub_year)
+ else:
+ # Set the text to the value of the respective attribute
+ cell.set_property('text', str(getattr(paper, attribute.lower())))
+
+def render_paper_rating_attribute(column, cell, model, iter, data):
+ '''
+ This function is used by the view of the list of papers to extract the
+ rating from a paper object and pass it to the progress bar renderer
used
+ to display it
+ '''
+ paper = model.get_value(iter, 0)
+ cell.value = paper.rating
+
+def render_paper_document_attribute(column, cell, model, iter, data):
+ '''
+ This function is used by the view of the list of papers to display a
little
+ icon for papers that have the text in the library.
+ '''
+ paper = model.get_value(iter, 0)
+
+ if paper.full_text and os.path.isfile(paper.full_text.path):
+ icon = Gtk.render_icon(Gtk.STOCK_DND, Gtk.IconSize.MENU)
+ cell.set_property('pixbuf', icon)

class MainGUI:

@@ -1133,54 +1112,34 @@

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
search_providers
- self.middle_top_pane_model = Gtk.ListStore(int, str, str, str,
str, int, str, GdkPixbuf.Pixbuf, str, str, str, str, str, str, object,
object)
+ # We directly save Paper objects in the model
+ # TODO: Column sorting no longer works...
+ self.middle_top_pane_model = Gtk.ListStore(object)
middle_top_pane.set_model(self.middle_top_pane_model)

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)
- #column.set_min_width(256)
- #column.set_expand(True)
- #middle_top_pane.append_column( column )
+ middle_top_pane.connect('button-press-event',
+
self.handle_middle_top_pane_button_press_event)

column = Gtk.TreeViewColumn()
column.set_title('Title')
column.set_min_width(-1)
renderer = Gtk.CellRendererPixbuf()
column.pack_start(renderer, False)
- column.add_attribute(renderer, 'pixbuf', 7)
renderer = Gtk.CellRendererText()
column.pack_start(renderer, True)
- column.add_attribute(renderer, 'markup', 2)
- column.set_sort_column_id(2)
+ column.set_cell_data_func(renderer, render_paper_text_attribute,
+ 'Title')
+
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)
- 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)
- 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)
- 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)
- 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)
- middle_top_pane.append_column(column)
+ for attribute in ['Authors', 'Journal', 'Year', 'Created']:
+ column = Gtk.TreeViewColumn(attribute)
+ column.set_min_width(-1)
+ renderer = Gtk.CellRendererText()
+ column.pack_start(renderer, True)
+ column.set_cell_data_func(renderer,
render_paper_text_attribute,
+ attribute)
+ column.set_expand(True)
+ middle_top_pane.append_column(column)


make_all_columns_resizeable_clickable_ellipsize(middle_top_pane.get_columns())

@@ -1338,23 +1297,21 @@
path, col, cellx, celly = pthinfo
treeview.grab_focus()
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()
- paper = Paper.objects.get(id=paper_id)
- if paper and paper.full_text and
os.path.isfile(paper.full_text.path):
- button =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_OPEN, None)
- button.connect('activate', lambda x: paper.open())
- menu.append(button)
- button =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_EDIT, None)
- button.connect('activate', lambda x:
PaperEditGUI(paper.id))
+ paper =
self.middle_top_pane_model.get_value(self.middle_top_pane_model.get_iter(path),
0)
+ menu = Gtk.Menu()
+ if paper and paper.full_text and
os.path.isfile(paper.full_text.path):
+ button =
Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_OPEN, None)
+ button.connect('activate', lambda x: paper.open())
menu.append(button)
- 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.attach_to_widget(treeview, None)
- menu.popup(None, None, None, None, event.button,
event.get_time())
+ button = Gtk.ImageMenuItem.new_from_stock(Gtk.STOCK_EDIT,
None)
+ button.connect('activate', lambda x:
PaperEditGUI(paper.id))
+ menu.append(button)
+ 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.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):
@@ -1534,6 +1491,10 @@
playlist.save()
self.refresh_left_pane()

+ def import_citation_via_middle_top_pane_row(self, row):
+ paper_obj = row[0]
+ importer.get_or_create_paper_via(paper_obj,
callback=self.document_imported)
+
def select_middle_top_pane_item(self, selection):
liststore, rows = selection.get_selected_rows()
self.paper_information_pane_model.clear()
@@ -1548,24 +1509,26 @@
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:
- paper = None
- if liststore[rows[0]][2]:
- self.paper_information_pane_model.append(('<b>Title:</b>',
liststore[rows[0]][2] ,))
- if liststore[rows[0]][1]:
-
self.paper_information_pane_model.append(('<b>Authors:</b>',
liststore[rows[0]][1] ,))
- if liststore[rows[0]][3]:
-
self.paper_information_pane_model.append(('<b>Journal:</b>',
liststore[rows[0]][3] ,))
- if liststore[rows[0]][9]:
- self.paper_information_pane_model.append(('<b>DOI:</b>',
pango_escape(liststore[rows[0]][9]) ,))
- if liststore[rows[0]][13]:
-
self.paper_information_pane_model.append(('<b>PubMed:</b>',
pango_escape(liststore[rows[0]][13]) ,))
- if liststore[rows[0]][8]:
- self.paper_information_pane_model.append(('<b>Import
URL:</b>', pango_escape(liststore[rows[0]][8]) ,))
+ self.displayed_paper = paper = liststore[rows[0]][0]
+ if paper.title:
+ self.paper_information_pane_model.append(('<b>Title:</b>',
+ paper.title ,))
+ if liststore[rows[0]][0].authors:
+ author_str = ', '.join([ author.name for author in
+ paper.get_authors_in_order() ])
+
self.paper_information_pane_model.append(('<b>Authors:</b>',
+ author_str,))
+# if liststore[rows[0]][3]:
+#
self.paper_information_pane_model.append(('<b>Journal:</b>',
liststore[rows[0]][3] ,))
+ if paper.doi:
+ self.paper_information_pane_model.append(('<b>DOI:</b>',
+
pango_escape(paper.doi) ,))
+ if paper.pubmed_id:
+ self.paper_information_pane_model.append(('<b>PubMed:</b>',
+
pango_escape(paper.pubmed_id) ,))
+ if paper.import_url:
+ self.paper_information_pane_model.append(('<b>Import
URL:</b>',
+
pango_escape(paper.import_url) ,))
status = []
if paper and paper.full_text and
os.path.isfile(paper.full_text.path):
status.append('Full text saved in local library.')
@@ -1577,41 +1540,39 @@

self.paper_information_pane_model.append(('<b>Status:</b>',
pango_escape('\n'.join(status)) ,))
# if paper.source:
# description.append( 'Source: %s %s (pages: %s)' % (
str(paper.source), paper.source_session, paper.source_pages ) )
- if liststore[rows[0]][6]:
-
self.paper_information_pane_model.append(('<b>Abstract:</b>',
pango_escape(liststore[rows[0]][6]) ,))
+ if paper.abstract:
+
self.paper_information_pane_model.append(('<b>Abstract:</b>',
+
pango_escape(paper.abstract) ,))
# description.append( '' )
# description.append( 'References:' )
# for ref in paper.reference_set.all():
# description.append( ref.line )

#self.ui.get_object('paper_information_pane').get_buffer().set_text( '\n'.join(description)
)

- if liststore[rows[0]][8] or liststore[rows[0]][9]:
+ if paper.doi or paper.import_url:
log_debug('URL or DOI exists')
button = Gtk.ToolButton(stock_id=Gtk.STOCK_HOME)
button.set_tooltip_text('Open this URL in your browser...')
- url = liststore[rows[0]][8]
+ url = paper.import_url
if not url:
- url = 'http://dx.doi.org/' + liststore[rows[0]][9]
+ url = 'http://dx.doi.org/' + paper.doi
button.connect('clicked', lambda x: desktop.open(url))
paper_information_toolbar.insert(button, -1)
- if paper:
+ if paper.id != -1:
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]]))
+
+ button.connect('clicked', lambda x:
self.import_citation_via_middle_top_pane_row(liststore[rows[0]]))
paper_information_toolbar.insert(button, -1)

- source = liststore[rows[0]][15]
- log_debug('Source: %s' % source)
- if not paper and source is not None and source != 'local': #
This is a search result
+ if paper.id == -1 and hasattr(paper, 'provider'): # This is a
search result
button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
button.set_tooltip_text('Add this paper to your
library...')
- provider = self.search_providers[source]
button.connect('clicked',
- lambda x:
provider.import_paper_after_search(liststore[rows[0]][14],
-
self.document_imported))
+ lambda x:
paper.provider.import_paper_after_search(paper.data,
+
self.document_imported))
paper_information_toolbar.insert(button, -1)
-
- if paper:
+ elif paper.id != -1:
importable_references = set()
references = paper.reference_set.order_by('id')
#
self.paper_information_pane_model.append(( '<b>References:</b>', '\n'.join(
[ '<i>'+ str(i) +':</i> '+ references[i].line_from_referencing_paper for i
in range(0,len(references)) ] ) ,))
@@ -1691,8 +1652,9 @@

downloadable_paper_urls = set()
for row in rows:
- if liststore[row][8] and liststore[row][0] == -1:
- downloadable_paper_urls.add(liststore[row][8])
+ paper = liststore[row][0]
+ if paper.import_url and paper.id == -1:
+ downloadable_paper_urls.add(paper.import_url)
if len(downloadable_paper_urls):
self.paper_information_pane_model.append(('<b>Number of
new papers:</b>', len(downloadable_paper_urls) ,))
button = Gtk.ToolButton(stock_id=Gtk.STOCK_ADD)
@@ -1702,8 +1664,8 @@

selected_valid_paper_ids = []
for row in rows:
- if liststore[row][0] != -1:
- selected_valid_paper_ids.append(liststore[row][0])
+ if liststore[row][0].id != -1:
+ selected_valid_paper_ids.append(liststore[row][0].id)
log_debug('selected_valid_paper_ids: %s' %
str(selected_valid_paper_ids))
if len(selected_valid_paper_ids):
button = Gtk.ToolButton(stock_id=Gtk.STOCK_REMOVE)
@@ -2085,8 +2047,8 @@
None
))
self.middle_top_pane_model.clear()
- for row in rows:
- self.middle_top_pane_model.append(row)
+ for paper in papers:
+ self.middle_top_pane_model.append((paper, ))
self.refresh_my_library_count()
except:
traceback.print_exc()
@@ -2149,7 +2111,7 @@
pass

# Add information to table
- rows.append(row_from_dictionary(info, search_provider.label))
+ rows.append(row_from_dictionary(info, search_provider))

self.middle_top_pane_model.clear()
for row in rows:
=======================================
--- /gpapers/gPapers/models.py Mon Apr 9 14:09:14 2012
+++ /gpapers/gPapers/models.py Wed May 30 14:35:58 2012
@@ -16,10 +16,12 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

import hashlib, os, re, traceback
+from datetime import datetime
+
from django.db import models
import django.core.files.base
-from gpapers import desktop
-
+
+from gpapers import desktop
from gpapers.logger import log_debug

class Publisher(models.Model):
@@ -264,3 +266,73 @@
return self.title


+###############################################################################
+# "virtual" classes, used for non-existing papers, etc. to represent search
+# results before they are imported
+###############################################################################
+
+class VirtualAuthor(object):
+
+ def __init__(self, name):
+ self.name = name
+
+
+class VirtualSource(object):
+
+ class SimpleDate(object):
+ def __init__(self):
+ self.year = None
+
+ def __init__(self):
+ self.name = None
+ self.publication_date = VirtualSource.SimpleDate()
+
+
+class VirtualPaper(object):
+ ''' An object that can be treated for table display purposes as if it
were
+ an already existing `Paper` object, i.e. it provides a title attribute
etc.
+ '''
+
+ class VirtualSet(object):
+ '''
+ dummy class needed for faking the reference/citation relation
+ '''
+ @staticmethod
+ def order_by(name):
+ return []
+
+ def __init__(self, paper_info, provider=None):
+ '''
+ Create a new object from the given dictionary `paper_info`
+ '''
+
+ self.id = -1
+ self.provider = provider # The origin of this search result
+ self.authors = []
+ self.source = VirtualSource()
+ self.full_text = None
+ self.abstract = None
+ self.title = None
+ self.created = datetime.today()
+ self.reference_set = VirtualPaper.VirtualSet()
+ self.citation_set = VirtualPaper.VirtualSet()
+ self.bookmark_set = VirtualPaper.VirtualSet()
+ self.notes = ''
+ self.doi = None
+ self.import_url = None
+ self.pubmed_id = None
+
+ for key in paper_info.keys():
+ # take care of the more complex fields
+ if key == 'authors':
+ self.authors = [VirtualAuthor(author) for author in
+ paper_info['authors']]
+ elif key == 'journal':
+ self.source.name = paper_info['journal']
+ elif key == 'year':
+ self.source.publication_date.year = paper_info['year']
+ else:
+ self.__setattr__(key, paper_info[key])
+
+ def get_authors_in_order(self):
+ return self.authors
=======================================
--- /gpapers/importer/__init__.py Mon Apr 9 14:09:14 2012
+++ /gpapers/importer/__init__.py Wed May 30 14:35:58 2012
@@ -47,6 +47,7 @@
import BeautifulSoup

from gpapers.logger import *
+from gpapers.gPapers.models import Paper
import bibtex

active_threads = None
@@ -91,17 +92,20 @@
return match.group()


-def get_or_create_paper_via(callback, id=None, doi=None, pubmed_id=None,
- import_url=None, title=None,
full_text_md5=None,
- data=None, provider=None):
- """Tries to look up a paper by various forms of id, from most specific
to
- least. Can also be used to fill in the data for a search result -- then
- data and search_provider have to be specified."""
- #print id, doi, pubmed_id, import_url, title, full_text_md5
+def get_or_create_paper_via(paper_obj, callback, full_text_md5=None):
+
+ paper_id = paper_obj.id
+ doi = paper_obj.doi
+ pubmed_id = paper_obj.pubmed_id
+ import_url = paper_obj.import_url
+ title = paper_obj.title
+ provider = paper_obj.provider
+ data = paper_obj.data
+
paper = None

- if id >= 0:
- try: paper = Paper.objects.get(id=id)
+ if paper_id >= 0:
+ try: paper = Paper.objects.get(id=paper_id)
except: pass

if doi:
@@ -143,22 +147,22 @@

if not paper:
# it looks like we haven't seen this paper before...
- if not doi:
- doi = ''
- if not pubmed_id:
- pubmed_id = ''
- if not import_url:
- import_url = ''
- if not title:
- title = ''
- paper = Paper.objects.create(doi=doi, pubmed_id=pubmed_id,
- import_url=import_url, title=title)
-
- if provider:
- # Get the paper from the search provider
- provider.import_paper_after_search(data, paper=paper,
callback=callback)
- else:
- callback(paper)
+ if provider:
+ # Get the paper from the search provider
+ provider.import_paper_after_search(data, callback=callback)
+ else:
+ if not doi:
+ doi = ''
+ if not pubmed_id:
+ pubmed_id = ''
+ if not import_url:
+ import_url = ''
+ if not title:
+ title = ''
+ paper = Paper.objects.create(doi=doi, pubmed_id=pubmed_id,
+ import_url=import_url,
title=title)
+ # we are done, call the callback
+ callback(paper)


#TODO: Refactor import_pdf into a new function

==============================================================================
Revision: 362418d9c7f7
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Thu Apr 12 14:56:04 2012
Log: also find DOIs that do not have any "doi" prefix
http://code.google.com/p/gpapers/source/detail?r=362418d9c7f7

Modified:
/gpapers/importer/pdf_file.py

=======================================
--- /gpapers/importer/pdf_file.py Mon Apr 9 13:29:00 2012
+++ /gpapers/importer/pdf_file.py Thu Apr 12 14:56:04 2012
@@ -30,7 +30,7 @@

# A DOI consists of a numeric prefix starting with "10." followed by "/"
and
# a more or less arbitrary suffix
-p_doi = re.compile('doi\s*:?\s*(10.[0-9]+/[^/].+)\s', re.IGNORECASE)
+p_doi = re.compile('\s(10.[0-9]+/[^/].+)\s', re.IGNORECASE)


def get_paper_info_from_pdf(data):

==============================================================================
Revision: 213c1285ba05
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Thu Apr 12 14:56:20 2012
Log: display icon for papers with fulltext
http://code.google.com/p/gpapers/source/detail?r=213c1285ba05

Modified:
/gpapers/__init__.py

=======================================
--- /gpapers/__init__.py Wed May 30 14:35:58 2012
+++ /gpapers/__init__.py Thu Apr 12 14:56:20 2012
@@ -298,16 +298,20 @@
paper = model.get_value(iter, 0)
cell.value = paper.rating

-def render_paper_document_attribute(column, cell, model, iter, data):
+
+def render_paper_document_attribute(column, cell, model, iter, widget):
'''
This function is used by the view of the list of papers to display a
little
icon for papers that have the text in the library.
'''
paper = model.get_value(iter, 0)
-
+
if paper.full_text and os.path.isfile(paper.full_text.path):
- icon = Gtk.render_icon(Gtk.STOCK_DND, Gtk.IconSize.MENU)
- cell.set_property('pixbuf', icon)
+ icon = widget.render_icon(Gtk.STOCK_DND, Gtk.IconSize.MENU)
+ else:
+ icon = None
+
+ cell.set_property('pixbuf', icon)

class MainGUI:

@@ -1124,6 +1128,8 @@
column.set_title('Title')
column.set_min_width(-1)
renderer = Gtk.CellRendererPixbuf()
+ column.set_cell_data_func(renderer,
render_paper_document_attribute,
+ middle_top_pane)
column.pack_start(renderer, False)
renderer = Gtk.CellRendererText()
column.pack_start(renderer, True)

==============================================================================
Revision: 895530ea5d61
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 10:03:59 2012
Log: whitespace fix
http://code.google.com/p/gpapers/source/detail?r=895530ea5d61

Modified:
/gpapers/__init__.py

=======================================
--- /gpapers/__init__.py Thu Apr 12 14:56:20 2012
+++ /gpapers/__init__.py Sat Jun 2 10:03:59 2012
@@ -262,6 +262,7 @@

return paper

+
def render_paper_text_attribute(column, cell, model, iter, attribute):
'''
This function is used by the view of the list of papers to extract an
@@ -289,6 +290,7 @@
# Set the text to the value of the respective attribute
cell.set_property('text', str(getattr(paper, attribute.lower())))

+
def render_paper_rating_attribute(column, cell, model, iter, data):
'''
This function is used by the view of the list of papers to extract the
@@ -313,6 +315,7 @@

cell.set_property('pixbuf', icon)

+
class MainGUI:

current_middle_top_pane_refresh_thread_ident = None

==============================================================================
Revision: 803ad101b9f0
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 10:50:52 2012
Log: Allow DOIs immediately following a colon (without space)
http://code.google.com/p/gpapers/source/detail?r=803ad101b9f0

Modified:
/gpapers/importer/pdf_file.py

=======================================
--- /gpapers/importer/pdf_file.py Thu Apr 12 14:56:04 2012
+++ /gpapers/importer/pdf_file.py Sat Jun 2 10:50:52 2012
@@ -30,7 +30,7 @@

# A DOI consists of a numeric prefix starting with "10." followed by "/"
and
# a more or less arbitrary suffix
-p_doi = re.compile('\s(10.[0-9]+/[^/].+)\s', re.IGNORECASE)
+p_doi = re.compile('[\s:](10.[0-9]+/[^/].+)\s', re.IGNORECASE)


def get_paper_info_from_pdf(data):
@@ -94,5 +94,6 @@
device.close()
content.close()

+ log_debug('Exctracted paper_info from PDF: %s' % paper_info)

return paper_info

==============================================================================
Revision: 67ff690cfa6c
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 14:48:42 2012
Log: fix doubleclick on paper
http://code.google.com/p/gpapers/source/detail?r=67ff690cfa6c

Modified:
/gpapers/__init__.py

=======================================
--- /gpapers/__init__.py Sat Jun 2 10:03:59 2012
+++ /gpapers/__init__.py Sat Jun 2 14:48:42 2012
@@ -1162,9 +1162,8 @@

def handle_middle_top_pane_row_activated(self, treeview, path,
view_column):
liststore, rows = treeview.get_selection().get_selected()
- paper_id =
treeview.get_model().get_value(treeview.get_model().get_iter(path), 0)
+ paper =
treeview.get_model().get_value(treeview.get_model().get_iter(path), 0)
try:
- paper = Paper.objects.get(id=paper_id)
paper.open()
except:
traceback.print_exc()

==============================================================================
Revision: 5a42fc1bc826
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sat Jun 2 15:11:57 2012
Log: fix label update
http://code.google.com/p/gpapers/source/detail?r=5a42fc1bc826

Modified:
/gpapers/__init__.py

=======================================
--- /gpapers/__init__.py Sat Jun 2 14:48:42 2012
+++ /gpapers/__init__.py Sat Jun 2 15:11:57 2012
@@ -318,7 +318,6 @@

class MainGUI:

- current_middle_top_pane_refresh_thread_ident = None
active_threads = {}

def bibtex_received(self, bibtex_data, doi):
@@ -624,8 +623,8 @@
self.ui.get_object('menuitem_about').connect('activate',
self.show_about_dialog)

def init_search_box(self):
- # Check the search box for changes every 0.5 seconds
- GObject.timeout_add(500, lambda x:
self.middle_pane_search_changed(),
+ # Check the search box for changes every 0.25 seconds
+ GObject.timeout_add(250, lambda x:
self.middle_pane_search_changed(),
None)

self.ui.get_object('refresh_middle_pane_search').connect('clicked', lambda
x: self.refresh_middle_pane_search())
self.ui.get_object('clear_middle_pane_search').connect('clicked',
lambda x: self.clear_all_search_and_filters())
@@ -710,7 +709,7 @@
* `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
+ * `source` is used for saved searches and the searches themselves
'''
left_pane = self.ui.get_object('left_pane')
# name, icon, playlist_id, editable, source
@@ -996,9 +995,9 @@
selection = self.ui.get_object('left_pane_selection')
liststore, row = selection.get_selected()
if liststore[row][4] == 'local':
- # Re-select to force a refresh
-
self.select_left_pane_item(self.ui.get_object('left_pane_selection'))
+ # Re-select to force a refresh
self.refresh_my_library_count()
+
self.select_left_pane_item(self.ui.get_object('left_pane_selection'))

def refresh_left_pane(self):
# FIXME: These should not be loaded again and again
@@ -1106,7 +1105,7 @@
self.ui.get_object('middle_pane_search').set_text('')

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,))
+ self.refresh_middle_pane_from_my_library(True)
else:
def error_callback(data1, data2):
print 'Error callback, received data1: ', data1
@@ -2066,6 +2065,7 @@
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())
+

def refresh_middle_pane_from_external(self, search_info, results):
'''

==============================================================================
Revision: cd918b4a2ed7
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:16:42 2012
Log: various fixes
http://code.google.com/p/gpapers/source/detail?r=cd918b4a2ed7

Modified:
/gpapers/__init__.py
/gpapers/gPapers/models.py

=======================================
--- /gpapers/__init__.py Sat Jun 2 15:11:57 2012
+++ /gpapers/__init__.py Sun Jun 3 15:16:42 2012
@@ -50,8 +50,6 @@
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver

-import deseb
-
from gpapers.logger import *
from gpapers.importer import bibtex, pdf_file
import gpapers.desktop
@@ -654,7 +652,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=self.search_providers[liststore[row][4]]
+ parent=self.search_providers[liststore[row][4]].label
)
if created: playlist.save()
self.refresh_left_pane()
@@ -662,7 +660,7 @@
def create_playlist(self, ids=None):
playlist = Playlist.objects.create(
title='<i>(new collection)</i>',
- parent='0'
+ parent='local'
)
if ids:
for paper in Paper.objects.in_bulk(ids).values():
@@ -854,7 +852,6 @@
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)
author_filter.append_column(column)
column = Gtk.TreeViewColumn("Papers", Gtk.CellRendererText(),
text=2)
@@ -872,7 +869,6 @@

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)
organization_filter.append_column(column)
column = Gtk.TreeViewColumn("Authors", Gtk.CellRendererText(),
text=2)
@@ -893,7 +889,6 @@
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)
source_filter.append_column(column)
column = Gtk.TreeViewColumn("Issue", Gtk.CellRendererText(),
text=2)
@@ -1046,6 +1041,7 @@
self.left_pane_model.append(None, (provider.name,
provider_icon, -1, False, provider.label))
for playlist in Playlist.objects.filter(parent=provider.label):
+ print 'paylist item', playlist
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,
@@ -1128,7 +1124,7 @@

column = Gtk.TreeViewColumn()
column.set_title('Title')
- column.set_min_width(-1)
+ column.set_expand(True)
renderer = Gtk.CellRendererPixbuf()
column.set_cell_data_func(renderer,
render_paper_document_attribute,
middle_top_pane)
@@ -1140,13 +1136,14 @@

middle_top_pane.append_column(column)
for attribute in ['Authors', 'Journal', 'Year', 'Created']:
- column = Gtk.TreeViewColumn(attribute)
- column.set_min_width(-1)
+ column = Gtk.TreeViewColumn(attribute)
renderer = Gtk.CellRendererText()
column.pack_start(renderer, True)
column.set_cell_data_func(renderer,
render_paper_text_attribute,
attribute)
- column.set_expand(True)
+ if attribute == 'Authors':
+ # only authors and title column should expand
+ column.set_expand(True)
middle_top_pane.append_column(column)


make_all_columns_resizeable_clickable_ellipsize(middle_top_pane.get_columns())
@@ -1516,6 +1513,7 @@
if not rows or len(rows) == 0:
self.update_bookmark_pane_from_paper(None)
elif len(rows) == 1:
+ # a single selected paper
self.displayed_paper = paper = liststore[rows[0]][0]
if paper.title:
self.paper_information_pane_model.append(('<b>Title:</b>',
@@ -1654,6 +1652,7 @@
paper_information_toolbar.insert(button, -1)

else:
+ # more than one paper
self.update_bookmark_pane_from_paper(None)
self.paper_information_pane_model.append(('<b>Number of
papers:</b>', str(len(rows)) ,))

@@ -1663,7 +1662,7 @@
if paper.import_url and paper.id == -1:
downloadable_paper_urls.add(paper.import_url)
if len(downloadable_paper_urls):
- self.paper_information_pane_model.append(('<b>Number of
new papers:</b>', len(downloadable_paper_urls) ,))
+ self.paper_information_pane_model.append(('<b>Number of
new papers:</b>', str(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))
@@ -2232,7 +2231,9 @@
def get_new_organizations_menu(self):
button_submenu = Gtk.Menu()
org_ids = set()
- self.organizations_model.foreach(lambda model, path, iter:
org_ids.add(model.get_value(iter, 0)))
+ for organization in self.organizations_model:
+ org_ids.add(organization[0])
+
for organization in Organization.objects.order_by('name'):
if organization.id not in org_ids and len(organization.name):
submenu_item =
Gtk.MenuItem(truncate_long_str(organization.name))
=======================================
--- /gpapers/gPapers/models.py Wed May 30 14:35:58 2012
+++ /gpapers/gPapers/models.py Sun Jun 3 15:16:42 2012
@@ -234,17 +234,9 @@

class Playlist(models.Model):

- SOURCES = (
- ('0', 'My Library'),
- ('1', 'ACM'),
- ('2', 'IEEE'),
- ('3', 'PubMed'),
- ('4', 'CiteSeer'),
- ('5', 'Google Scholar'),
- )
title = models.CharField(max_length='1024', blank=True)
search_text = models.CharField(max_length='1024', blank=True)
- parent = models.CharField(max_length=1, choices=SOURCES)
+ parent = models.CharField(max_length=128)
papers = models.ManyToManyField(Paper)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

==============================================================================
Revision: 4ebac64ee988
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:18:04 2012
Log: more small fixes
http://code.google.com/p/gpapers/source/detail?r=4ebac64ee988

Modified:
/gpapers/__init__.py
/gpapers/importer/__init__.py

=======================================
--- /gpapers/__init__.py Sun Jun 3 15:16:42 2012
+++ /gpapers/__init__.py Sun Jun 3 15:18:04 2012
@@ -2256,7 +2256,8 @@
self.author.rating =
round(self.ui.get_object('rating').get_value())
self.author.save()
org_ids = set()
- self.organizations_model.foreach(lambda model, path, iter:
org_ids.add(model.get_value(iter, 0)))
+ for organization in self.organizations_model:
+ org_ids.add(organization[0])
self.author.organizations =
Organization.objects.in_bulk(list(org_ids))
self.author_edit_dialog.destroy()
if self.callback_on_save:
=======================================
--- /gpapers/importer/__init__.py Wed May 30 14:35:58 2012
+++ /gpapers/importer/__init__.py Sun Jun 3 15:18:04 2012
@@ -669,7 +669,7 @@
#except Exception as ex:
# error_callback(ex, user_data)
else:
- error_callback(message.status_code)
+ error_callback(message.status_code, None)

def import_paper_after_search(self, data, callback):
try:

==============================================================================
Revision: bb6e6888f3da
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:18:31 2012
Log: fetch more complete metadata from pubmed
http://code.google.com/p/gpapers/source/detail?r=bb6e6888f3da

Modified:
/gpapers/importer/pubmed.py

=======================================
--- /gpapers/importer/pubmed.py Mon Apr 9 14:09:14 2012
+++ /gpapers/importer/pubmed.py Sun Jun 3 15:18:31 2012
@@ -131,6 +131,7 @@
else:
parsed_response =
BeautifulStoneSoup(message.response_body.data)
paper_info = {}
+
# Journal
try:
journal = parsed_response.findAll('journal')[0]
@@ -141,16 +142,23 @@
pass

paper_info['pages'] =
parsed_response.findAll('medlinepgn')[0].text
- log_debug('Pages: %s' % paper_info.source_pages)
+ log_debug('Pages: %s' % paper_info['pages'])
except Exception as ex:
pass

+ # Publication date
+ try:
+ articledate = parsed_response.findAll('articledate')[0]
+ paper_info['year'] = articledate.year.text
+ except:
+ pass
+
# Title and abstract
try:
paper_info['title'] =
parsed_response.findAll('articletitle')[0].text
- log_debug('Title: %s' % paper_info.title)
+ log_debug('Title: %s' % paper_info['title'])
paper_info['abstract'] =
parsed_response.findAll('abstracttext')[0].text
- log_debug('Abstract: %s' % paper_info.abstract)
+ log_debug('Abstract: %s' % paper_info['abstract'])
except Exception as ex:
pass

@@ -168,6 +176,18 @@
except Exception as ex:
pass

+ # URL + IDs
+ try:
+ articleids = parsed_response.findAll('articleid')
+ for articleid in articleids:
+ if articleid['idtype'] == 'doi':
+ paper_info['doi'] = articleid.text
+ elif articleid['idtype'] == 'pubmed':
+ paper_info['pubmed_id'] = articleid.text
+ except:
+ pass
+ print parsed_response.prettify()
+
callback(paper_info, None, user_data)

def import_paper_after_search(self, pubmed_id, callback):

==============================================================================
Revision: f488356991d3
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:19:48 2012
Log: mode data and icons dir, adapt paths and setup.py script
http://code.google.com/p/gpapers/source/detail?r=f488356991d3

Added:
/gpapers/data/author_edit_gui.xml
/gpapers/data/citation_edit_gui.xml
/gpapers/data/organization_edit_gui.xml
/gpapers/data/paper_edit_gui.xml
/gpapers/data/preferences_gui.xml
/gpapers/data/reference_edit_gui.xml
/gpapers/data/source_edit_gui.xml
/gpapers/data/ui.xml
/gpapers/icons/applications-development.png
/gpapers/icons/blank.gif
/gpapers/icons/bookmark.png
/gpapers/icons/bookmark.xcf
/gpapers/icons/drawing.png
/gpapers/icons/emblem-favorite.png
/gpapers/icons/favicon_acm.ico
/gpapers/icons/favicon_citeseer.ico
/gpapers/icons/favicon_google.ico
/gpapers/icons/favicon_ieee.ico
/gpapers/icons/favicon_jstor.ico
/gpapers/icons/favicon_pubmed.ico
/gpapers/icons/note-write.png
/gpapers/icons/note.png
/gpapers/icons/process-working.gif
/gpapers/icons/process-working.xcf
Deleted:
/data/author_edit_gui.xml
/data/citation_edit_gui.xml
/data/organization_edit_gui.xml
/data/paper_edit_gui.xml
/data/preferences_gui.xml
/data/reference_edit_gui.xml
/data/source_edit_gui.xml
/data/ui.xml
/icons/applications-development.png
/icons/blank.gif
/icons/bookmark.png
/icons/bookmark.xcf
/icons/drawing.png
/icons/emblem-favorite.png
/icons/favicon_acm.ico
/icons/favicon_citeseer.ico
/icons/favicon_google.ico
/icons/favicon_ieee.ico
/icons/favicon_jstor.ico
/icons/favicon_pubmed.ico
/icons/note-write.png
/icons/note.png
/icons/process-working.gif
/icons/process-working.xcf
Modified:
/gpapers/__init__.py
/setup.py

=======================================
--- /dev/null
+++ /gpapers/data/author_edit_gui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,313 @@
+<?xml version="1.0"?>
+<!--Generated with glade3 3.4.0 on Mon Feb 4 20:54:41 2008 -->
+<interface>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">10</property>
+ <property name="lower">-10</property>
+ <property name="page_increment">2</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkDialog" id="author_edit_dialog">
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Edit Author</property>
+ <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">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="spacing">2</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="width_request">500</property>
+ <property name="visible">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="n_rows">5</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">4</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</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="GtkLabel" id="label8">
+ <property name="visible">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="label"
translatable="yes">(bad)</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHScale" id="rating">
+ <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="adjustment">adjustment1</property>
+ <property name="fill_level">1000</property>
+ <property name="digits">0</property>
+ <property name="draw_value">False</property>
+ <property name="value_pos">GTK_POS_BOTTOM</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">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="label"
translatable="yes">(good)</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <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">GTK_POLICY_AUTOMATIC</property>
+ <property
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <child>
+ <object class="GtkTextView" id="notes">
+ <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="wrap_mode">GTK_WRAP_WORD</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">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="label"
translatable="yes">Rating:</property>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">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="label" translatable="yes">Notes:</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">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="label"
translatable="yes">Papers:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">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="label"
translatable="yes">Organizations:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_name">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">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="label" translatable="yes">Name:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="label_paper_count">
+ <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="editable">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</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="GtkScrolledWindow" id="scrolledwindow1">
+ <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">GTK_POLICY_AUTOMATIC</property>
+ <property
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <child>
+ <object class="GtkTreeView"
id="treeview_organizations">
+ <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_clickable">True</property>
+ <property name="rules_hint">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar_organizations">
+ <property name="visible">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="orientation">GTK_ORIENTATION_VERTICAL</property>
+ <property
name="toolbar_style">GTK_TOOLBAR_ICONS</property>
+ <property
name="icon_size">GTK_ICON_SIZE_MENU</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="button_connect">
+ <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_markup">This author is a duplicate
- merge with another...</property>
+ <property name="label"
translatable="yes">gtk-connect</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <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="label"
translatable="yes">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_delete">
+ <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="label"
translatable="yes">gtk-delete</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <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="label"
translatable="yes">gtk-save</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_connect</action-widget>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_delete</action-widget>
+ <action-widget response="0">button_save</action-widget>
+ </action-widgets>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/data/citation_edit_gui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,282 @@
+<?xml version="1.0"?>
+<!--Generated with glade3 3.4.0 on Mon Jan 28 14:22:33 2008 -->
+<interface>
+ <object class="GtkDialog" id="citation_edit_dialog">
+ <property name="width_request">500</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Edit Citation</property>
+ <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">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="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</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="GtkLabel" id="label1">
+ <property name="visible">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="label" translatable="yes">This
paper...</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox_referenced_paper">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">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="label" translatable="yes">Is cited by this
paper...</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">8</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox_referencing_paper">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">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="label" translatable="yes">With these known
attributes...</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">8</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table3">
+ <property name="visible">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="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</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="GtkEntry"
id="entry_doi_from_referenced_paper">
+ <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>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button3">
+ <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">Import from
DOI...</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <child>
+ <object class="GtkImage" id="image3">
+ <property name="visible">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="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</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="GtkEntry"
id="entry_url_from_referenced_paper">
+ <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>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button1">
+ <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">Import from this
URL...</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">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="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry"
id="entry_line_from_referenced_paper">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">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="label"
translatable="yes">URL:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">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="label"
translatable="yes">DOI:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">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="label"
translatable="yes">Line:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <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="label"
translatable="yes">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_delete">
+ <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="label"
translatable="yes">gtk-delete</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <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="label"
translatable="yes">gtk-save</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button3</action-widget>
+ <action-widget response="0">button1</action-widget>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_delete</action-widget>
+ <action-widget response="0">button_save</action-widget>
+ </action-widgets>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/data/organization_edit_gui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<!--Generated with glade3 3.4.0 on Thu Jan 24 13:52:04 2008 -->
+<interface>
+ <object class="GtkDialog" id="organization_edit_dialog">
+ <property name="width_request">500</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Edit Organization</property>
+ <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">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="spacing">2</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">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="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">4</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkEntry" id="entry_location">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">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="label"
translatable="yes">Location:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_name">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">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="label" translatable="yes">Name:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="button_connect">
+ <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_markup">This organization is a
duplicate - merge with another...</property>
+ <property name="label"
translatable="yes">gtk-connect</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <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="label"
translatable="yes">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_delete">
+ <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="label"
translatable="yes">gtk-delete</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <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="label"
translatable="yes">gtk-save</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_connect</action-widget>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_delete</action-widget>
+ <action-widget response="0">button_save</action-widget>
+ </action-widgets>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/data/paper_edit_gui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,669 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 2.12 -->
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">1000</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="lower">-10</property>
+ <property name="upper">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">2</property>
+ </object>
+ <object class="GtkDialog" id="paper_edit_dialog">
+ <property name="width_request">500</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="border_width">5</property>
+ <property name="title" translatable="yes">Edit Paper</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog-vbox1">
+ <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="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="dialog-action_area1">
+ <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="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <property name="label">gtk-cancel</property>
+ <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="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_delete">
+ <property name="label">gtk-delete</property>
+ <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="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <property name="label">gtk-save</property>
+ <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="use_action_appearance">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook1">
+ <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>
+ <child>
+ <object class="GtkTable" id="table1">
+ <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="border_width">4</property>
+ <property name="n_rows">9</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">4</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkEntry" id="entry_import_url">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_import_url">
+ <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="label"
translatable="yes">URL:</property>
+ <accessibility>
+ <relation type="label-for"
target="entry_import_url"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_authors">
+ <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="label"
translatable="yes">Authors:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <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>
+ <child>
+ <object class="GtkTextView" id="textview_abstract">
+ <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="wrap_mode">word</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow2">
+ <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>
+ <child>
+ <object class="GtkTextView" id="textview_bibtex">
+ <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="wrap_mode">word</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton"
id="filechooserbutton">
+ <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="has_tooltip">True</property>
+ <property name="tooltip_markup">Any new file will be
copied into your local gPapers database.</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinbutton_read_count">
+ <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="adjustment">adjustment1</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_abstract">
+ <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="label"
translatable="yes">Abstract:</property>
+ <accessibility>
+ <relation type="label-for"
target="textview_abstract"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_bibtex">
+ <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="label"
translatable="yes">BibTeX:</property>
+ <accessibility>
+ <relation type="label-for" target="textview_bibtex"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_file">
+ <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="label"
translatable="yes">File:</property>
+ <accessibility>
+ <relation type="label-for"
target="filechooserbutton"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_rating">
+ <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="label"
translatable="yes">Rating:</property>
+ <accessibility>
+ <relation type="label-for" target="rating"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_read_count">
+ <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="label" translatable="yes">Read
Count:</property>
+ <accessibility>
+ <relation type="label-for"
target="spinbutton_read_count"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_doi">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_doi">
+ <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="label"
translatable="yes">DOI:</property>
+ <accessibility>
+ <relation type="label-for" target="entry_doi"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_title">
+ <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="label"
translatable="yes">Title:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_title">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <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>
+ <child>
+ <object class="GtkScrolledWindow"
id="scrolledwindow3">
+ <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>
+ <child>
+ <object class="GtkTreeView"
id="treeview_authors">
+ <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="has_tooltip">True</property>
+ <property name="tooltip_text">Drag and drop to
reorder authors...</property>
+ <property
name="vscroll_policy">natural</property>
+ <property
name="headers_visible">False</property>
+ <property name="reorderable">True</property>
+ <property name="rules_hint">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection1"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar_authors">
+ <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="orientation">vertical</property>
+ <property name="toolbar_style">icons</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <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>
+ <child>
+ <object class="GtkLabel" id="label_bad">
+ <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="label"
translatable="yes">(bad)</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHScale" id="rating">
+ <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="adjustment">adjustment2</property>
+ <property name="draw_value">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_good">
+ <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="label"
translatable="yes">(good)</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label9">
+ <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="label" translatable="yes">General
Information</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox2">
+ <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>
+ <child>
+ <object class="GtkToolbar" id="toolbar1">
+ <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="toolbar_style">both-horiz</property>
+ <child>
+ <object class="GtkToolButton"
id="toolbutton_refresh_from_pdf">
+ <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>
+ <property
name="use_action_appearance">False</property>
+ <property name="is_important">True</property>
+ <property name="label" translatable="yes">Refresh
from PDF</property>
+ <property name="stock_id">gtk-refresh</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow6">
+ <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>
+ <child>
+ <object class="GtkTextView"
id="textview_extracted_text">
+ <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="editable">False</property>
+ <property name="wrap_mode">word</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label_extracted_text">
+ <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="label" translatable="yes">Extracted
Text</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <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>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow4">
+ <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>
+ <child>
+ <object class="GtkTreeView" id="treeview_references">
+ <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-selection2"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar_references">
+ <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="toolbar_style">both-horiz</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label_references">
+ <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="label"
translatable="yes">References</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow5">
+ <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>
+ <child>
+ <object class="GtkTreeView" id="treeview_citations">
+ <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-selection3"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label_citations">
+ <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="label"
translatable="yes">Citations</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_delete</action-widget>
+ <action-widget response="0">button_save</action-widget>
+ </action-widgets>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/data/preferences_gui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!--Generated with glade3 3.4.0 on Fri Jan 18 15:56:39 2008 -->
+<interface>
+ <object class="GtkDialog" id="preferences_dialog">
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Preferences</property>
+ <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">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="spacing">2</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">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="label" translatable="yes">coming
soon...</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <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="label"
translatable="yes">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <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="label"
translatable="yes">gtk-save</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_save</action-widget>
+ </action-widgets>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/data/reference_edit_gui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,282 @@
+<?xml version="1.0"?>
+<!--Generated with glade3 3.4.0 on Mon Jan 28 13:46:52 2008 -->
+<interface>
+ <object class="GtkDialog" id="reference_edit_dialog">
+ <property name="width_request">500</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Edit Reference</property>
+ <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">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="spacing">2</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</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="GtkLabel" id="label1">
+ <property name="visible">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="label" translatable="yes">This
paper...</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox_referencing_paper">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">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="label" translatable="yes">Using these
attributes...</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">8</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table3">
+ <property name="visible">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="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</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="GtkEntry"
id="entry_doi_from_referencing_paper">
+ <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>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button3">
+ <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">Import from
DOI...</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <child>
+ <object class="GtkImage" id="image3">
+ <property name="visible">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="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</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="GtkEntry"
id="entry_url_from_referencing_paper">
+ <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>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button1">
+ <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">Import from this
URL...</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">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="stock">gtk-add</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry"
id="entry_line_from_referencing_paper">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">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="label"
translatable="yes">URL:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">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="label"
translatable="yes">DOI:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">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="label"
translatable="yes">Line:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">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="label" translatable="yes">References this
paper...</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">8</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="combobox_referenced_paper">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <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="label"
translatable="yes">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_delete">
+ <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="label"
translatable="yes">gtk-delete</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <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="label"
translatable="yes">gtk-save</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button3</action-widget>
+ <action-widget response="0">button1</action-widget>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_delete</action-widget>
+ <action-widget response="0">button_save</action-widget>
+ </action-widgets>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/data/source_edit_gui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<!--Generated with glade3 3.4.0 on Tue Feb 12 00:11:35 2008 -->
+<interface>
+ <object class="GtkDialog" id="source_edit_dialog">
+ <property name="width_request">500</property>
+ <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Edit Source</property>
+ <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">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="spacing">2</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">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="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">4</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkEntry" id="entry_issue">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">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="label" translatable="yes">Issue:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_location">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">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="label" translatable="yes">Location:
</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">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="label" translatable="yes">Name:</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry_name">
+ <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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="button_connect">
+ <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="label"
translatable="yes">gtk-connect</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_cancel">
+ <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="label"
translatable="yes">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_delete">
+ <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="label"
translatable="yes">gtk-delete</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_save">
+ <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="label"
translatable="yes">gtk-save</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">button_connect</action-widget>
+ <action-widget response="0">button_cancel</action-widget>
+ <action-widget response="0">button_delete</action-widget>
+ <action-widget response="0">button_save</action-widget>
+ </action-widgets>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/data/ui.xml Sun Jun 3 15:19:48 2012
@@ -0,0 +1,882 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <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>
+ <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>
+ <property name="window_position">center</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <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>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <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>
+ <child>
+ <object class="GtkMenuBar" id="menubar1"
constructor="uimanager1">
+ <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>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="busy_notifier">
+ <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="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHPaned" id="hpaned1">
+ <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>
+ <child>
+ <object class="GtkVBox" id="vbox6">
+ <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>
+ <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>
+ <child>
+ <object class="GtkTreeView" id="left_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="left_pane_selection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="left_pane_toolbar">
+ <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="toolbar_style">icons</property>
+ <property name="icon-size">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTreeView" id="treeview_running_tasks">
+ <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>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHPaned" id="hpaned2">
+ <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>
+ <child>
+ <object class="GtkVBox" id="vbox3">
+ <property name="width_request">384</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>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <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>
+ <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>
+ <property name="label"
translatable="yes">&lt;b&gt;My Library&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">16</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <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="label"
translatable="yes">search:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="middle_pane_search">
+ <property name="width_request">128</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="primary_icon_activatable">False</property>
+ <property
name="secondary_icon_activatable">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </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>
+ <property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="has_tooltip">True</property>
+ <property
name="use_action_appearance">False</property>
+ <property name="relief">none</property>
+ <child>
+ <object class="GtkImage" id="image3">
+ <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="stock">gtk-clear</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </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>
+ <property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="has_tooltip">True</property>
+ <property
name="use_action_appearance">False</property>
+ <property name="relief">none</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <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="stock">gtk-refresh</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </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="use_action_appearance">False</property>
+ <property name="relief">none</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <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="stock">gtk-save-as</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVPaned" id="vpaned1">
+ <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>
+ <child>
+ <object class="GtkHPaned"
id="my_library_filter_pane">
+ <property name="height_request">128</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>
+ <child>
+ <object class="GtkScrolledWindow"
id="scrolledwindow2">
+ <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>
+ <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>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHPaned" id="hpaned4">
+ <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>
+ <child>
+ <object class="GtkScrolledWindow"
id="scrolledwindow7">
+ <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>
+ <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>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow"
id="scrolledwindow9">
+ <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>
+ <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>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVPaned" id="vpaned2">
+ <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>
+ <child>
+ <object class="GtkScrolledWindow"
id="scrolledwindow3">
+ <property
name="height_request">100</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>
+ <child>
+ <object class="GtkTreeView"
id="middle_top_pane">
+ <property
name="height_request">100</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="rules_hint">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"
id="treeview-selection6"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox5">
+ <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>
+ <child>
+ <object class="GtkToolbar"
id="paper_information_toolbar">
+ <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="toolbar_style">icons</property>
+ <property name="icon-size">1</property>
+ </object>
+ <packing>
+ <property
name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow"
id="scrolledwindow4">
+ <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>
+ <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>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox2">
+ <property name="width_request">256</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>
+ <child>
+ <object class="GtkVPaned" id="vpaned3">
+ <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>
+ <child>
+ <object class="GtkScrolledWindow"
id="scrolledwindow5">
+ <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>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <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="resize_mode">queue</property>
+ <child>
+ <object class="GtkDrawingArea"
id="pdf_preview">
+ <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>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox4">
+ <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>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <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="label"
translatable="yes">Bookmarks / Notes</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVPaned" id="vpaned4">
+ <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>
+ <child>
+ <object class="GtkVBox" id="vbox7">
+ <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>
+ <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>
+ <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>
+ <packing>
+ <property
name="expand">True</property>
+ <property
name="fill">True</property>
+ <property
name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar"
id="toolbar_bookmarks">
+ <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="toolbar_style">icons</property>
+ <property
name="icon-size">1</property>
+ </object>
+ <packing>
+ <property
name="expand">False</property>
+ <property
name="fill">True</property>
+ <property
name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property
name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </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>
+ <child>
+ <object class="GtkTextView"
id="paper_notes">
+ <property
name="visible">True</property>
+ <property
name="sensitive">False</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="has_tooltip">True</property>
+ <property
name="pixels_above_lines">5</property>
+ <property
name="wrap_mode">word</property>
+ <property
name="left_margin">5</property>
+ <property
name="right_margin">5</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property
name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar1">
+ <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="icon-size">1</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>
+ <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="stock_id">gtk-print</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </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>
+ <property
name="use_action_appearance">False</property>
+ <property
name="stock_id">gtk-go-back</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </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>
+ <property
name="use_action_appearance">False</property>
+ <property
name="stock_id">gtk-go-forward</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </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>
+ <property
name="use_action_appearance">False</property>
+ <property
name="stock_id">gtk-zoom-in</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </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>
+ <property
name="use_action_appearance">False</property>
+ <property
name="stock_id">gtk-zoom-out</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </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>
+ <property
name="use_action_appearance">False</property>
+ <property
name="stock_id">gtk-zoom-fit</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </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>
+ <property
name="use_action_appearance">False</property>
+ <property
name="stock_id">gtk-zoom-100</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
=======================================
--- /dev/null
+++ /gpapers/icons/applications-development.png Sun Jun 3 15:19:48 2012
Binary file, no diff available.
=======================================
--- /dev/null
+++ /gpapers/icons/blank.gif Sun Jun 3 15:19:48 2012
@@ -0,0 +1,2 @@
+GIF89a ÿÿÿÿÿÿ!þ Created with GIMP !ù
+ , (c)Ëí £ ´Ú ³> ;
=======================================
--- /dev/null
+++ /gpapers/icons/bookmark.png Sun Jun 3 15:19:48 2012
Binary file, no diff available.
=======================================
--- /dev/null
+++ /gpapers/icons/bookmark.xcf Sun Jun 3 15:19:48 2012
@@ -0,0 +1,51 @@
+gimp xcf file B B
+ $ gimp-image-grid (style intersections)
+(fgcolor (color-rgba 0.650980 0.650980 0.650980 1.000000))
+(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
+(xspacing 10.000000)
+(yspacing 10.000000)
+(spacing-unit inches)
+(xoffset 0.000000)
+(yoffset 0.000000)
+(offset-unit inches)
+ i V ù New Layer
copy ÿ
+
+
+
J ^ n ü
ü ý ü øüýþþýüü ü þüýüü ü ý ü ü ü é
øéëóøîéé øéñýþøéé øéñûýôêé øéìñòìéé é é OûSQOO øOb¨È SO øO óûËVO øT êõ¯WO øOi ¢hRO OüSOO
+ O ù /eP ø*±ëï¥' øNáýþðy øAÚúüãk ø fÍÙ<<8 ú *P9
+ ü New Layer#1 ÿ

+
+ % 5 6ý76 ý 6³ ³ý6 ø5
+jj
+7 ø1rSSr3 ø.lLMm/ ø0pQPp1 ø4uWWu5 ø6wZZx7 ø6wpnx7 ø6v66w7 6ü566 ù646 36 D HýIH ÷ HÁÁÂÁH øG I øB qq D ø= hh > øA nm A øF vv F øH zz I øH I øH HH I HüGHH ùHEH DH D xýyx ý xÔ Ôýx øwº¬¬>>y
øn(c) ªp øf ¡g øl| |l øu° ¯u øx³¤¤´y øx³°¯´y øx³xx³y xûvtxx ùxsx qx D ýqþý ý üýå ýIüÿ ÿýýL ýEýÿ ÿýýK ýEýÿ ÿýýK ýFýÿ ÿýýK ýFþÿ ÿýþJ ýFþÿ ÿýþI ýFþÿ ÿýþH ý?þÿ ÿþ@ þ6ÿ ÿþ6 ÷.ÿÿÉÁÿÿ- ÷%ÿy qÿ$ ý ý 3 Background ÿ

+
+ ý ! þ ý ü ÿ
+ÿ÷ ÿìêêë ë ìóíðÿ ÿêÄÅÅÆ ÆôÇðÿ ÿêëëì ì íõîðÿ ÿëÅÆ ÆóÇðÿ ÿëëììí íõìîðÿ ÿëÆ Æ îðíîðÿ ÿììííîîï ï÷ðÿ ÿìÆ Æ Ç Èñðÿ ÿìíîîïïðñ ñõÿ ÿíÆÇÇÈ È ñéòÿ ÿííîïïððñòòÿ ÿ
+ÿû
+ þ þ ý ü ÿ
+ÿ÷ ÿìêêë ë ìóíðÿ ÿêÄÅÅÆ ÆôÇðÿ ÿêëëì ì íõîðÿ ÿëÅÆ ÆóÇðÿ ÿëëììí íõìîðÿ ÿëÆ Æ îðíîðÿ ÿììííîîï ï÷ðÿ ÿìÆ Æ Ç Èñðÿ ÿìíîîïïðñ ñõÿ ÿíÆÇÇÈ È ñéòÿ ÿííîïïððñòòÿ ÿ
+ÿû
+ þ þ ý ü ÿ
+ÿ÷ ÿìêêë ë ìóíðÿ ÿêÄÅÅÆ ÆôÇðÿ ÿêëëì ì íõîðÿ ÿëÅÆ ÆæÇðÿ ÿëëììííåìîðÿ ÿëÆ Æ îðæîðÿ ÿììííîîï ï÷ðÿ ÿìÆ Æ Ç Èñðÿ ÿìíîîïïðñ ñõÿ ÿíÆÇÇÈ È ñéòÿ ÿííîïïððñòòÿ ÿ
+ÿû
+ þ þ¬ÿ
+ÿüV ÿ ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ
+ÿ þ´ÿ
+ÿþ¨
+New Layer ÿ
+
+
+

+Ã î î ì ÿ
=======================================
--- /dev/null
+++ /gpapers/icons/drawing.png Sun Jun 3 15:19:48 2012
@@ -0,0 +1,19 @@
+ PNG
+
+
+IHDR óÿa
pHYs tIME Ö $ Î c 1/4 IDAT8Ë- ¿k a Ç?Ï 8 [{J=ä*B' u t 7 Nö up \
+CÃ @Ìà" R D\ZDJ§,
+âà P0¹â 1/2 9 ¶i¹æ^ ´¡Òx ð>><ïà ÷Ãó|
) Ë A ¸ | ¥Ré ç Qåy Ù#(c) 1/2 Ö ×uÉçóh-ÑZS(c)Thë6º-)
+äÜ f÷7 ã °¶ 3/4 B#X&²[<yÿ '(R)õýéét@±Xdm}
+zô {Æâ¸:I ô¨ ÊõÛó ºz þn
+F° íXllwèl üÞê`; Ö 2$Í @D¨ÕªDÝ Á ¥²D[M <<Õ ¸ss
+
+³I
+Jú !IzL Ùäri!*áþËol&çèE¯°
+ ¥2$I ÃñO.Ùó ,=ö ÞÖ9 É } |ý°ÃåÉ Ô
+-âßóSV !ÞîÒ ;È
+| ùõæ4Ç2w9³ ~ ÿ^A0ÌÞy@üi Ù >>
+ ´w=a¡´ ¹Ã `¤o
+ ¹Ò¯û +}Ì0
+ ãã<1/4 u Q µ,ëµïû³£|²,ë9ÿK 1/2 Ï
+e(c)¯ IEND(R)B`
=======================================
--- /dev/null
+++ /gpapers/icons/emblem-favorite.png Sun Jun 3 15:19:48 2012
Binary file, no diff available.
=======================================
--- /dev/null
+++ /gpapers/icons/favicon_acm.ico Sun Jun 3 15:19:48 2012
Binary file, no diff available.
=======================================
--- /dev/null
+++ /gpapers/icons/favicon_citeseer.ico Sun Jun 3 15:19:48 2012
@@ -0,0 +1,28 @@
+ h (
d d Âcgá Ôx}Ý-<<Ách¿R[à Ïz~Úz
+Ó Ç{|
⸳·chæ-°>>DSýÿü¹IUûêç´LW 1/2 GT 1/2`i 1/4 KY(R)HTÃmwÄkn¿Y^¿JSÇV`ÀESÃS_3/4 KTØ(R)(c)×<<²à ¥Ö(R)°ìÍÌß-¯ûÿûúÿûê´¹Í è 1/4 1/2 øúúÿûÿøþÿöÿÿÿýþÿÿüöþþÿÿþÿþ÷ÿ÷êñÀ¶Ô Ý è Ù Ö âÁ 3/4 ûÝÜÿýúöÿþÿúýÿýÿÿÿüìâÛÖji± ²
µ
+ § ¶ ¹ º º
+ ¸ >>1%Ò
+ÿÿøùþÿçÎÄÂ
+$¶ ³ 3/4 1/4 (R)
+ µ ·

+ >> ± µ >>
+ ÿüõ÷ýÿÓ_X° -
+ (R)
+ · µ Ê_\øÓËöÿöþòîá--Óei± ¸ ðÐÑñþÿ¸ °
+ µ ¿ ´ Ò]^üÿûúýÿÿÿþÿùÿûþÿÿÿþùÝÒã ë 3/4 ºÿÿþ 1/4 - ´ ² ¯ è¯-ÿüüóÿüÿúÿÿýÿÿýþÿÿüûÿüÿþþÿýÿûÿÿÆ<0À 1/2
+ ³ µ
æ ÿþþþýÿÿýÿùÿýôÿþÿÿþÿþþüÿýóÿþùÿþØ ª << (R) - Ä)-ýÿùöÿÿøýûýÿþÿüýÿýÿøüýûÿÿÿÿÿùþýýðî¶
+1/2
+ ´ 1/2
+ -
+ ÎpjÿýúÿýÿñÿÿÿüþÿûÿôÿÿÿÿþëÉÉùãÞþüÿë<<ª¶
+¿ ¯ ¯ µ ÏMNìÏÊýÿùýÿùÿÿøóÓÍÊZZ¶
+ ØIDùûÿÿÿüê(R)¨¸
+
+- ¿ ´
+ ª À 1/4-*ÊLG>>+&¬ << µ ² ÿþÿñÿÿþüûÿðçÏnk³ °


+ ³ ª
+ ° >> 1/2 ¹ 1/4
+ÿÿûüûÿûþÿÿÿüÿÿ÷ýòîì¬¨Þ ÆKAËRHÏPGÌJCÃNIé Ø¡ ùñê
=======================================
--- /dev/null
+++ /gpapers/icons/favicon_google.ico Sun Jun 3 15:19:48 2012
Binary file, no diff available.
=======================================
--- /dev/null
+++ /gpapers/icons/favicon_ieee.ico Sun Jun 3 15:19:48 2012
Binary file, no diff available.
=======================================
--- /dev/null
+++ /gpapers/icons/favicon_jstor.ico Sun Jun 3 15:19:48 2012
Binary file, no diff available.
=======================================
--- /dev/null
+++ /gpapers/icons/favicon_pubmed.ico Sun Jun 3 15:19:48 2012
@@ -0,0 +1,2 @@
+ ( (
dB$ ´¢ äÚÔ r\ È 3/4 ´ tZ< ôòô t ÜÎÄ fL ìæä ¤ lN, 1/4 (R) ~d üþü ÿÿÿÿ(ÿÿÿÿÿÿÿ0 Fÿÿÿÿÿ /ÿÿ- ÿöÐ ÿñvÿÿÿlOÿ ÿÿÿúäÿÿà ÿÿÿÿÿÿ% ;JÿÿÿÿGÀ ÿÿÿÿö
+ÀOÿúèÿÿÿe ÿEoÿÿÿ%¯ÿ5oÿÿý ÿÿ / ÿÿÿø0 ?ÿÿÿÿÿöAOÿÿÿ
=======================================
--- /dev/null
+++ /gpapers/icons/note-write.png Sun Jun 3 15:19:48 2012
@@ -0,0 +1,15 @@
+ PNG
+
+
+IHDR óÿa bKGD ÿ ÿ ÿ 1/2 §
pHYs tIME Ö 2ÛL¬a öIDAT8Ë ?hSQ Å ç 3/4 4(c) kG'
+Dü·øg*B39(. Å ¸<<±£Ô Vª%4 B iÒ.:õ MÑ`-X-µ´d(i Ã>>yÖêR?ø ûxçÜó}ç\M ØçÀYv^Å#éÖE Þ ì
+R tºS ³ !÷µ
+´ yùâ ñ l¬>úû Y¤ à!Y | o/E¿X îmH ä ñ b ì
+¹[ I TiTÆÉ2 8 ä ° L
+) E$C7çIg<<,L 2][ú M ÄC% 1Ô_# -ò¡ §V_æÇ " ±¶L Èø[nO¸îb¨¿FßÝ
+ó¥
+sï ù6=ÎÁS )P É ÛÄ#% oÌÐwg ÷¥
+³ WX }ʵ O¶/1å û Hq æ sSS4 Wùù¶È {1/2 ¤ ¨ c" Ð2g ,2> ×_QÿÚC 3/4 P Ç 1/4 æêý^ Ïæ|
+G =
+ ¢  yHÎs, ±6Ç÷Ö
+øRè âl4¿t&8 *@.$(R)e < N / 1I· Ý4 ¢- {v de-tÔv Ú Éó\xÌï x |
¯ XY+ krĶ]ØwT]å F í*· îÌeí " õò`dã³õìàùÿxÎ ~ ×n A$Ú ´ IEND(R)B`
=======================================
--- /dev/null
+++ /gpapers/icons/note.png Sun Jun 3 15:19:48 2012
@@ -0,0 +1,11 @@
+ PNG
+
+
+IHDR óÿa bKGD ÿ ÿ ÿ 1/2 §
pHYs tIME Ö 2 <<´
+Y SIDAT8Ë- =/ Q ÷Ü >>,Ѫd - B-A r Ò ÑHd tJµ_@'Ñh4>6vG1wfÇ
Nr ¹ ÷=Ϲ÷ÕÍ ` ß×pí = lõ ÷
+ ꪪo BétR 1/4 swp 3/4 à 3×aôtüu <R
+ ³ õ/
+@6ÛR R H! ]iDÄübÛ Ó ;d R , BÃÄ ÙüO V -O YIÒ räz
+H ²Ø ·H|2É õ 3/4!P@ e[ö
+IH&3 k t {ølÔ&Q ÍPÐ àú <<
+*Äz ÅéJ5IDDÆãróÎ ëV.ßE¸tIéÍñéöC ¤ Ê =? /¯ l UÆd@j Jï>% È xyë1)rXí lø*°Ý¥Ó L Ká±i n|
Ïãí ¯ÃK #Ý ¤°ÿºÖNþ|ûßú J1ùÝTÍ 1/2 IEND(R)B`
=======================================
--- /dev/null
+++ /gpapers/icons/process-working.gif Sun Jun 3 15:19:48 2012
@@ -0,0 +1,41 @@
+GIF89a ÿÿÿ!ÿ NETSCAPE2.0 !ù
+ , (c)ËÍ` t2Lz Nu[ âH Z !ù
+ , (c)Ë Ð /RXc¶ÜÍ âH &R !ù
+ , (c)Ë Ð /RXí´ 1/4 û âHr !ù
+ , (c)Ë ÐÒ aZȰѴû âH J !ù
+ , (c)Ë ÐÒ aZȰѴû âH J !ù
+ , (c)Ë ÐÒ N Ï¥ 1/4 û âH* !ù
+ , (c)Ë ÐÒ30Î OÍ|á âH b !ù
+ , (c)Ëí Æw(ÞénÏ
+âH [ !ù
+ , (c)Ëí à; Î`¯|ùÕ
+ âH6 !ù
+ , (c)Ëíß fÒ äÕ ò âS !ù
+ , (c)Ëíß fÒ ¤} Sy ÞHb !ù
+ , (c)Ëíï 4rZ òÌõ>1/2 uÞHN !ù
+ , (c)Ëí £ Øh
+ ë
+ P !ù
+ , (c)Ëí £ iiÌïrwi¢X !ù
+ , (c)Ëí £ iiÌ.óÆ]Ú8 !ù
+ , (c)Ëí £ ´Z Ö l
+Q !ù
+ , (c)Ëí £ ´Z Ö ÛO !ù
+ , (c)Ëí £ ´Zà0Ð8w¸YbP !ù
+ , (c)Ëí £ ´F 0 ï hU !ù
+ , (c)Ëí £ ´F 0 ï hU !ù
+ , (c)Ëí £ ´B $ ;ö Yb !ù
+ , (c)Ëí £ ´B $ Y÷ûYU !ù
+ , (c)Ëí £ ´B $ YÏn
+ !ù
+ , (c)Ëí £ :-Ôñ ßa"R !ù
+ , (c)Ëí £| È:3 Ú J !ù
+ , (c)Ëí £| È:3 ;û !ù
+ , (c)Ëí £t Æ
+| ùî !ù
+ , (c)Ëí rZ '(R)¶ þ ÞH !ù
+ , (c)Ëí FÒ ä {¿}â( !ù
+ , (c)Ëí FÒ ä¤ û ¢W !ù
+ , (c)Ëí
+ ñ *óÄ ë â8 !ù
+ , (c)ËÍ` t2Lz Nuû âHz ;
=======================================
--- /dev/null
+++ /gpapers/icons/process-working.xcf Sun Jun 3 15:19:48 2012
@@ -0,0 +1,209 @@
+gimp xcf
file B B ¶ O
+gimp-comment Created with GIMP gimp-image-grid (style
intersections)
+(fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
+(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
+(xspacing 32.000000)
+(yspacing 32.000000)
+(spacing-unit inches)
+(xoffset 0.000000)
+(yoffset 0.000000)
+(offset-unit inches)
+ 2 ö R ¬
+m Î
++ ÷ ] Ä - ø Z ·
+~
+â F (c) "
+ #d $3/4 &$ ' (õ *W +3/4 -$ Pasted
Layer#32 ÿ
+
+ 3 æ ú
+ ' ý% ù4 ÿ§ öZÿÊ èl 1
+ ÷ û% : þ
+ þ ûg ü
+5& ûQ~y ü ." þ ÷%9 <
+ ö 2/ /( 1 ú 3, ý
+ $ Pasted Layer#31 ÿ
+
+ 2 B V f ' þ
ù s (R)
+ öOÿ× 1
+ ÷£ÿ, : þ
+ þ û
+(R)(c) ü
+5& ûn ü ." þ þ ÷6B <
+ ö ;. /( 1 ú 3, ý
+ $ Pasted Layer#30 ÿ
+
+ 1 ¢ ¶ Æ ' ý
+ û 1+ ÷(c)ã *% 1
+ ÷ ÿ' : þ þ û Áº ü
+5& û}<<£
+ ü ." þ þ ÷L] <
+ ö \4 /( 1 ú 3.
+% Pasted Layer#29 ÿ
+
+ 0 þ " ' ý ý1+
÷±Ï +% 1
+ ÷¨ÿ$ : þ" þ û¢ÒÊ ü
+5& û 3/4 ¶ ü ." þ þ ÷^} <
+ ö N .( 1 ú( 3.
+% Pasted Layer#28 ÿ
+
+ / X l |
' ý û1+ ÷ 4 -% 3
+ ÷À· : ý & þ û(R)à× ü
+5& û ÐÆ ü ." þ þ ÷m <
+ ö2¢b .( 1
+ ù I 4- ý $ Pasted
Layer#27 ÿ
+
+ .
¸ Ì
Ü ' ý û1+ ÷!, -% 3
+ ÷8; : þ þ û ñä
+ ü
+5& û ãÓ ü ." þ þ ÷|¶
+ ;
+ öA 1/4 x 3( 1$ ÷
+l :,
+ ý $ Pasted Layer#26 ÿ

+
+ - - = ' ý û1+ ÷#- -% 3
+ ÷"9 : þ þ û Øò
+ ü
+5& û Äà
+ ü ." þ þ ÷ Î! ;
+ öHÔ J' 1$ ÷"} [/
+ ý5 $ Pasted Layer#25 ÿ

+
+ , z ' ý û1+ ÷#- -% 3
+ ÷"9 : þ û ÚÂ ü
+5& û Ðï ü ." þ þ ÷ ä%
+;
+ öOë d8 1( ö& yG ýQ6 $ Pasted
Layer#24 ÿ
+
+ +


+û ' ý û1+ ÷#- -% 3
+ ÷"9 : þ þ ýF5 ü
+5& û Öâ ü ." ý þ ÷ ÷( ;
+ öUþ° |P 1+ ö)
+ ^ ü \ Pasted
Layer#23 ÿ
+
+ * = Q a ' ý û1+ ÷#- -% 3
+ ÷"9 : þ þ ý'* ü
+5+ ý;U ü ." ý $ þ ÷¨ÿ+ ;
öLÿÁ f 81 ö t ¨v ü ¤o ý Pasted
Layer#22 ÿ
+
+ ) £ · Ç ' ý û1+ ÷#- -% 3
+ ÷"9 : þ þ û +/ û
+4. ý)- ü .# þ% þ ÷¤ÿ& J! ö¡Þ ¥z VI ø 1/2 ü ¹ ý
+ Pasted Layer#21 ÿ
+
+ (

+ - ' ý û1+ ÷#- -% 3
+ ÷"9 : þ þ û +/ û
+40 ý). û .( þ$ þ ÷£ÿ'
+j2 ö ç · nn ø Ð 0 ü Ì ý! Pasted
Layer#20 ÿ
+
+ ' p ' ý û1+ ÷#- -% 2! ÷"9 : þ þ û +/ û
+40 ü)/ û -- þ þ ÷3ê. % E ö þ Ç
+ ÷ á° S ü Ü ý$ Pasted
Layer#19 ÿ
+
+ & Ù í ý ' ý û1+ ÷#- -% 2! ÷"9 : þ þ û +/ û
+40 ü)/ û -- þ þ ÷3ê. % E ö þ Ç
+ ÷ á° S ü Ü ý$ Pasted
Layer#18 ÿ
+
+ % B V f ' ý û1+ ÷#- -% 2$ ÷"9 9 þ þ û +/ û
44 ü)/ û
@@
+ þ ÷ c$ ,§V ö!Å#Ô(c) ¯) ÷
+ ð %q ýÉ þ Pasted
Layer#17 ÿ
+
+ $ ¤ ¸ È ' ý ú1+ ÷#- -% 2( ÷"9 9 þ þ û +/ û
+IO ü)/ û
+[] þ þ ÷!: 2Âe ö /
å¸ ¬È/ ø ù>> ) ý+ $ Pasted
Layer#16 ÿ
+
+ * ' ý ú4* ÷%- -% 2* ÷!9 9 þ
+ û +/ û fi0 ü)/ û s~3 þ þ ÷!: 8Ús ö / î 1/2 ß5 ø ÿÀ -
+ ý* $ Pasted Layer#15 ÿ

+
+
+ c w ' ý ú3- ÷%- -$ 13 ÷!9 B% þ ü û +/ û N ü)/ û O þ þ ÷!:
+ >ï ö!0 ÃÑ Ìô; ùßÏ 0 ý,
+ $ Pasted Layer#14 ÿ
+
+
+ Æ Ú ê ' ý
÷ 3/ ÷*- -$ CT ÷!9 `5 þ ü û +/ û
+ y ü)/ û ¨v þ þ ÷!: Bÿ ö!0 LØ Ûÿ ú<Á (t
+ þ $ Pasted Layer#13 ÿ

+
+
+
+*
+>
+N ' ý
+ ÷ 3. ö*- -# `{
+ ÷!9
+ C þ ü û +/ û"±µ ü)/ û
+(R)>> þ þ ÷!: Lÿ ÷!0 +V(ï û0.
+ ý $ Pasted Layer#12 ÿ

+
+
+

+² ' ý
+
÷ 26 8 ö*- ,+ z ÷!9 & O þ ü ü+/ û%ÅÉ û ,/ û
+3/4 Ë þ þ ÷#9 Tÿ ÷"0 /"#ø
+ û3(
+ ý $ Pasted Layer#11 ÿ

+
+ ò

' ý
+ ö ?R
l ö.- 8B º# ÷"9 -¹X þ ü ü+/ û)×Ú¤ û ,/ û!ÌÙ þ þ ÷#9 Oÿ ÷"0 /& Ã
ý3) ý $ Pasted Layer#10 ÿ

+
+ !U !i !y ' ý1+
ø `j &~
+ .ø RV |Õ: ÷"9 4Ñb þ þ ü+/ û,çån û ,/ û#×ím þ þ% ÷#9 ¸ ÷"0 /) $.
ý3) ý $ Pasted
Layer#9 ÿ

+
+ "µ "É "Ù ' ýRJ
ö { + ! õ 10 jh ºê? ÷#: :æk þ þ ü+/ ü.û¸ û ,/ ü'è<< þ ÷#9 <
+ ÷"0 /) 1 ý3) ý $ Pasted
Layer#8 ÿ
+
+ $ $# $3 ' ývw
ö / $ õ <H x ÌýD ÷#H ?ùr þ þ ü+/ ü0ÿÀ û ,/ ü)ï± þ ÷#9 <
+ ÷"0 /) 1 ý3) ý $ Pasted
Layer#7 ÿ
+
+ %i %} % ý
+ ý ö ¨¨ 3¤& õ ]b ÛÿH ÷0g
+ Cÿy þ
+ þ û 0/ ü:ÿÆ û ./ ü Y= þ þ ÷#9 <
+ ÷$0 /) 1 ý3) ý $ Pasted
Layer#6 ÿ
+
+
+ &Ï &ã &ó ý ý¯§
ö/
+ 1/2 ¹ 8~ õ
+ y | ëÿ) ÷E
+ Gÿ þ ý' û /. ü ]+ û // ü *! þ þ ÷#9 <
+ ÷(1 /) 1 ú 3) ý $ Pasted
Layer#5 ÿ
+
+ (9 (M (] ý
+ ýÀ´ ÷ = ÐÈ ö,£ µ¡
+ù ÷Y¤ Hÿt þ þ
+ û
+45 ü 4& û /. ü ." þ þ ÷#9 <
+ ÷(1 /) 1 ú 3) ý $ Pasted
Layer#4 ÿ
+
+ ) )´ )Ä ý ýÏÀ ÷
+x áÔ ö;1/4 Â<< ÿ ÷k 1/2
+ Oâ' þ
+ û JN ü 5& û /1 ü ." þ þ ÷#9 <
+ ÷(1 /) 1 ú 3) ý $ Pasted
Layer#3 ÿ
+
+
+ + + +& ý! ýÜÊ ÷+ ïÞ öIÕ¯ δ y
+ ÷{Ô "= þ þ û hi ü
+5& û FE ü ." þ þ ÷#9 <
+ ÷+0 /) 1 ü 4) ý
+ $ Pasted Layer#2 ÿ
+
+
,i ,} , þ
+ ýÒ 1/2 ÷0 ýé öRë 1/2 Ø¿ 3
+ ÷ é# : þ þ û5 ü
+5& û)f_ ü ." þ þ ÷$9 <
+ ÷-0 /( 1 ü 3, ý
+ $ Pasted Layer#1 ÿ
+
+ -Ï -ã -ó ' ý% ÷4 ÿ§ öZÿÊ
èl 3
+ ÷ û% : þ
+ þ ûR ü
+5& û@ x ü ." þ ÷%9 <
+ ö 10 /( 1 ú 3, ý
+ $
=======================================
--- /data/author_edit_gui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,313 +0,0 @@
-<?xml version="1.0"?>
-<!--Generated with glade3 3.4.0 on Mon Feb 4 20:54:41 2008 -->
-<interface>
- <object class="GtkAdjustment" id="adjustment1">
- <property name="upper">10</property>
- <property name="lower">-10</property>
- <property name="page_increment">2</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
- <object class="GtkDialog" id="author_edit_dialog">
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Edit Author</property>
- <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
- <property name="visible">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="spacing">2</property>
- <child>
- <object class="GtkTable" id="table1">
- <property name="width_request">500</property>
- <property name="visible">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="n_rows">5</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">4</property>
- <property name="row_spacing">4</property>
- <child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</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="GtkLabel" id="label8">
- <property name="visible">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="label"
translatable="yes">(bad)</property>
- </object>
- <packing>
- <property name="expand">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkHScale" id="rating">
- <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="adjustment">adjustment1</property>
- <property name="fill_level">1000</property>
- <property name="digits">0</property>
- <property name="draw_value">False</property>
- <property name="value_pos">GTK_POS_BOTTOM</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label7">
- <property name="visible">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="label"
translatable="yes">(good)</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow2">
- <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">GTK_POLICY_AUTOMATIC</property>
- <property
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <child>
- <object class="GtkTextView" id="notes">
- <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="wrap_mode">GTK_WRAP_WORD</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label6">
- <property name="visible">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="label"
translatable="yes">Rating:</property>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label5">
- <property name="visible">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="label" translatable="yes">Notes:</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label3">
- <property name="visible">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="label"
translatable="yes">Papers:</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">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="label"
translatable="yes">Organizations:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry_name">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="visible">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="label" translatable="yes">Name:</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="label_paper_count">
- <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="editable">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <property name="visible">True</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="GtkScrolledWindow" id="scrolledwindow1">
- <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">GTK_POLICY_AUTOMATIC</property>
- <property
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <child>
- <object class="GtkTreeView"
id="treeview_organizations">
- <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_clickable">True</property>
- <property name="rules_hint">True</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkToolbar" id="toolbar_organizations">
- <property name="visible">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="orientation">GTK_ORIENTATION_VERTICAL</property>
- <property
name="toolbar_style">GTK_TOOLBAR_ICONS</property>
- <property
name="icon_size">GTK_ICON_SIZE_MENU</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="button_connect">
- <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_markup">This author is a duplicate
- merge with another...</property>
- <property name="label"
translatable="yes">gtk-connect</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_cancel">
- <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="label"
translatable="yes">gtk-cancel</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_delete">
- <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="label"
translatable="yes">gtk-delete</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_save">
- <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="label"
translatable="yes">gtk-save</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">button_connect</action-widget>
- <action-widget response="0">button_cancel</action-widget>
- <action-widget response="0">button_delete</action-widget>
- <action-widget response="0">button_save</action-widget>
- </action-widgets>
- </object>
-</interface>
=======================================
--- /data/citation_edit_gui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version="1.0"?>
-<!--Generated with glade3 3.4.0 on Mon Jan 28 14:22:33 2008 -->
-<interface>
- <object class="GtkDialog" id="citation_edit_dialog">
- <property name="width_request">500</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Edit Citation</property>
- <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
- <property name="visible">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="spacing">2</property>
- <child>
- <object class="GtkVBox" id="vbox1">
- <property name="visible">True</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="GtkLabel" id="label1">
- <property name="visible">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="label" translatable="yes">This
paper...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="padding">8</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="combobox_referenced_paper">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label3">
- <property name="visible">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="label" translatable="yes">Is cited by this
paper...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="padding">8</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="combobox_referencing_paper">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">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="label" translatable="yes">With these known
attributes...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="padding">8</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkTable" id="table3">
- <property name="visible">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="n_rows">3</property>
- <property name="n_columns">2</property>
- <child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</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="GtkEntry"
id="entry_doi_from_referenced_paper">
- <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>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button3">
- <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">Import from
DOI...</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <child>
- <object class="GtkImage" id="image3">
- <property name="visible">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="stock">gtk-add</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <property name="visible">True</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="GtkEntry"
id="entry_url_from_referenced_paper">
- <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>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button1">
- <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">Import from this
URL...</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <child>
- <object class="GtkImage" id="image1">
- <property name="visible">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="stock">gtk-add</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry"
id="entry_line_from_referenced_paper">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label12">
- <property name="visible">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="label"
translatable="yes">URL:</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label11">
- <property name="visible">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="label"
translatable="yes">DOI:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label6">
- <property name="visible">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="label"
translatable="yes">Line:</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="button_cancel">
- <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="label"
translatable="yes">gtk-cancel</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_delete">
- <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="label"
translatable="yes">gtk-delete</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_save">
- <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="label"
translatable="yes">gtk-save</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">button3</action-widget>
- <action-widget response="0">button1</action-widget>
- <action-widget response="0">button_cancel</action-widget>
- <action-widget response="0">button_delete</action-widget>
- <action-widget response="0">button_save</action-widget>
- </action-widgets>
- </object>
-</interface>
=======================================
--- /data/organization_edit_gui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0"?>
-<!--Generated with glade3 3.4.0 on Thu Jan 24 13:52:04 2008 -->
-<interface>
- <object class="GtkDialog" id="organization_edit_dialog">
- <property name="width_request">500</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Edit Organization</property>
- <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
- <property name="visible">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="spacing">2</property>
- <child>
- <object class="GtkTable" id="table1">
- <property name="visible">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="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">4</property>
- <property name="row_spacing">4</property>
- <child>
- <object class="GtkEntry" id="entry_location">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">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="label"
translatable="yes">Location:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry_name">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="visible">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="label" translatable="yes">Name:</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="button_connect">
- <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_markup">This organization is a
duplicate - merge with another...</property>
- <property name="label"
translatable="yes">gtk-connect</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_cancel">
- <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="label"
translatable="yes">gtk-cancel</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_delete">
- <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="label"
translatable="yes">gtk-delete</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_save">
- <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="label"
translatable="yes">gtk-save</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">button_connect</action-widget>
- <action-widget response="0">button_cancel</action-widget>
- <action-widget response="0">button_delete</action-widget>
- <action-widget response="0">button_save</action-widget>
- </action-widgets>
- </object>
-</interface>
=======================================
--- /data/paper_edit_gui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,669 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <!-- interface-requires gtk+ 2.12 -->
- <object class="GtkAdjustment" id="adjustment1">
- <property name="upper">1000</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
- <object class="GtkAdjustment" id="adjustment2">
- <property name="lower">-10</property>
- <property name="upper">10</property>
- <property name="step_increment">1</property>
- <property name="page_increment">2</property>
- </object>
- <object class="GtkDialog" id="paper_edit_dialog">
- <property name="width_request">500</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="border_width">5</property>
- <property name="title" translatable="yes">Edit Paper</property>
- <property name="window_position">center-on-parent</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="dialog-vbox1">
- <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="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area1">
- <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="layout_style">end</property>
- <child>
- <object class="GtkButton" id="button_cancel">
- <property name="label">gtk-cancel</property>
- <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="use_action_appearance">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_delete">
- <property name="label">gtk-delete</property>
- <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="use_action_appearance">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_save">
- <property name="label">gtk-save</property>
- <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="use_action_appearance">False</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkNotebook" id="notebook1">
- <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>
- <child>
- <object class="GtkTable" id="table1">
- <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="border_width">4</property>
- <property name="n_rows">9</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">4</property>
- <property name="row_spacing">4</property>
- <child>
- <object class="GtkEntry" id="entry_import_url">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_import_url">
- <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="label"
translatable="yes">URL:</property>
- <accessibility>
- <relation type="label-for"
target="entry_import_url"/>
- </accessibility>
- </object>
- <packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_authors">
- <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="label"
translatable="yes">Authors:</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow1">
- <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>
- <child>
- <object class="GtkTextView" id="textview_abstract">
- <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="wrap_mode">word</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow2">
- <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>
- <child>
- <object class="GtkTextView" id="textview_bibtex">
- <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="wrap_mode">word</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkFileChooserButton"
id="filechooserbutton">
- <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="has_tooltip">True</property>
- <property name="tooltip_markup">Any new file will be
copied into your local gPapers database.</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="spinbutton_read_count">
- <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="adjustment">adjustment1</property>
- <property name="numeric">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_abstract">
- <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="label"
translatable="yes">Abstract:</property>
- <accessibility>
- <relation type="label-for"
target="textview_abstract"/>
- </accessibility>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_bibtex">
- <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="label"
translatable="yes">BibTeX:</property>
- <accessibility>
- <relation type="label-for" target="textview_bibtex"/>
- </accessibility>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_file">
- <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="label"
translatable="yes">File:</property>
- <accessibility>
- <relation type="label-for"
target="filechooserbutton"/>
- </accessibility>
- </object>
- <packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_rating">
- <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="label"
translatable="yes">Rating:</property>
- <accessibility>
- <relation type="label-for" target="rating"/>
- </accessibility>
- </object>
- <packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_read_count">
- <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="label" translatable="yes">Read
Count:</property>
- <accessibility>
- <relation type="label-for"
target="spinbutton_read_count"/>
- </accessibility>
- </object>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry_doi">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_doi">
- <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="label"
translatable="yes">DOI:</property>
- <accessibility>
- <relation type="label-for" target="entry_doi"/>
- </accessibility>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_title">
- <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="label"
translatable="yes">Title:</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry_title">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <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>
- <child>
- <object class="GtkScrolledWindow"
id="scrolledwindow3">
- <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>
- <child>
- <object class="GtkTreeView"
id="treeview_authors">
- <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="has_tooltip">True</property>
- <property name="tooltip_text">Drag and drop to
reorder authors...</property>
- <property
name="vscroll_policy">natural</property>
- <property
name="headers_visible">False</property>
- <property name="reorderable">True</property>
- <property name="rules_hint">True</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection"
id="treeview-selection1"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolbar" id="toolbar_authors">
- <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="orientation">vertical</property>
- <property name="toolbar_style">icons</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox2">
- <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>
- <child>
- <object class="GtkLabel" id="label_bad">
- <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="label"
translatable="yes">(bad)</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHScale" id="rating">
- <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="adjustment">adjustment2</property>
- <property name="draw_value">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_good">
- <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="label"
translatable="yes">(good)</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label9">
- <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="label" translatable="yes">General
Information</property>
- </object>
- <packing>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox2">
- <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>
- <child>
- <object class="GtkToolbar" id="toolbar1">
- <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="toolbar_style">both-horiz</property>
- <child>
- <object class="GtkToolButton"
id="toolbutton_refresh_from_pdf">
- <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>
- <property
name="use_action_appearance">False</property>
- <property name="is_important">True</property>
- <property name="label" translatable="yes">Refresh
from PDF</property>
- <property name="stock_id">gtk-refresh</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow6">
- <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>
- <child>
- <object class="GtkTextView"
id="textview_extracted_text">
- <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="editable">False</property>
- <property name="wrap_mode">word</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label_extracted_text">
- <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="label" translatable="yes">Extracted
Text</property>
- </object>
- <packing>
- <property name="position">3</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox1">
- <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>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow4">
- <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>
- <child>
- <object class="GtkTreeView" id="treeview_references">
- <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-selection2"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolbar" id="toolbar_references">
- <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="toolbar_style">both-horiz</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label_references">
- <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="label"
translatable="yes">References</property>
- </object>
- <packing>
- <property name="position">2</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scrolledwindow5">
- <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>
- <child>
- <object class="GtkTreeView" id="treeview_citations">
- <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-selection3"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="label_citations">
- <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="label"
translatable="yes">Citations</property>
- </object>
- <packing>
- <property name="position">3</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">button_cancel</action-widget>
- <action-widget response="0">button_delete</action-widget>
- <action-widget response="0">button_save</action-widget>
- </action-widgets>
- </object>
-</interface>
=======================================
--- /data/preferences_gui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--Generated with glade3 3.4.0 on Fri Jan 18 15:56:39 2008 -->
-<interface>
- <object class="GtkDialog" id="preferences_dialog">
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Preferences</property>
- <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
- <property name="visible">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="spacing">2</property>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="visible">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="label" translatable="yes">coming
soon...</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="button_cancel">
- <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="label"
translatable="yes">gtk-cancel</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_save">
- <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="label"
translatable="yes">gtk-save</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">button_cancel</action-widget>
- <action-widget response="0">button_save</action-widget>
- </action-widgets>
- </object>
-</interface>
=======================================
--- /data/reference_edit_gui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version="1.0"?>
-<!--Generated with glade3 3.4.0 on Mon Jan 28 13:46:52 2008 -->
-<interface>
- <object class="GtkDialog" id="reference_edit_dialog">
- <property name="width_request">500</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Edit Reference</property>
- <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
- <property name="visible">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="spacing">2</property>
- <child>
- <object class="GtkVBox" id="vbox1">
- <property name="visible">True</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="GtkLabel" id="label1">
- <property name="visible">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="label" translatable="yes">This
paper...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="padding">8</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="combobox_referencing_paper">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">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="label" translatable="yes">Using these
attributes...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="padding">8</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkTable" id="table3">
- <property name="visible">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="n_rows">3</property>
- <property name="n_columns">2</property>
- <child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</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="GtkEntry"
id="entry_doi_from_referencing_paper">
- <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>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button3">
- <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">Import from
DOI...</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <child>
- <object class="GtkImage" id="image3">
- <property name="visible">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="stock">gtk-add</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <property name="visible">True</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="GtkEntry"
id="entry_url_from_referencing_paper">
- <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>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button1">
- <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">Import from this
URL...</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <child>
- <object class="GtkImage" id="image1">
- <property name="visible">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="stock">gtk-add</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry"
id="entry_line_from_referencing_paper">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label12">
- <property name="visible">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="label"
translatable="yes">URL:</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label11">
- <property name="visible">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="label"
translatable="yes">DOI:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label6">
- <property name="visible">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="label"
translatable="yes">Line:</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label3">
- <property name="visible">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="label" translatable="yes">References this
paper...</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="padding">8</property>
- <property name="position">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="combobox_referenced_paper">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="button_cancel">
- <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="label"
translatable="yes">gtk-cancel</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_delete">
- <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="label"
translatable="yes">gtk-delete</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_save">
- <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="label"
translatable="yes">gtk-save</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">button3</action-widget>
- <action-widget response="0">button1</action-widget>
- <action-widget response="0">button_cancel</action-widget>
- <action-widget response="0">button_delete</action-widget>
- <action-widget response="0">button_save</action-widget>
- </action-widgets>
- </object>
-</interface>
=======================================
--- /data/source_edit_gui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0"?>
-<!--Generated with glade3 3.4.0 on Tue Feb 12 00:11:35 2008 -->
-<interface>
- <object class="GtkDialog" id="source_edit_dialog">
- <property name="width_request">500</property>
- <property name="events">GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Edit Source</property>
- <property
name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
- <property name="visible">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="spacing">2</property>
- <child>
- <object class="GtkTable" id="table1">
- <property name="visible">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="n_rows">3</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">4</property>
- <property name="row_spacing">4</property>
- <child>
- <object class="GtkEntry" id="entry_issue">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label4">
- <property name="visible">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="label" translatable="yes">Issue:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry_location">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">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="label" translatable="yes">Location:
</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="visible">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="label" translatable="yes">Name:</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry_name">
- <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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">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="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="button_connect">
- <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="label"
translatable="yes">gtk-connect</property>
- <property name="use_stock">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="button_cancel">
- <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="label"
translatable="yes">gtk-cancel</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_delete">
- <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="label"
translatable="yes">gtk-delete</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="button_save">
- <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="label"
translatable="yes">gtk-save</property>
- <property name="use_stock">True</property>
- </object>
- <packing>
- <property name="position">3</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">button_connect</action-widget>
- <action-widget response="0">button_cancel</action-widget>
- <action-widget response="0">button_delete</action-widget>
- <action-widget response="0">button_save</action-widget>
- </action-widgets>
- </object>
-</interface>
=======================================
--- /data/ui.xml Thu Apr 5 14:13:17 2012
+++ /dev/null
@@ -1,882 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <!-- interface-requires gtk+ 3.0 -->
- <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>
- <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>
- <property name="window_position">center</property>
- <child>
- <object class="GtkVBox" id="vbox1">
- <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>
- <child>
- <object class="GtkHBox" id="hbox1">
- <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>
- <child>
- <object class="GtkMenuBar" id="menubar1"
constructor="uimanager1">
- <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>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkImage" id="busy_notifier">
- <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="stock">gtk-missing-image</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHPaned" id="hpaned1">
- <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>
- <child>
- <object class="GtkVBox" id="vbox6">
- <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>
- <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>
- <child>
- <object class="GtkTreeView" id="left_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="left_pane_selection"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolbar" id="left_pane_toolbar">
- <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="toolbar_style">icons</property>
- <property name="icon-size">1</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkTreeView" id="treeview_running_tasks">
- <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>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">False</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkHPaned" id="hpaned2">
- <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>
- <child>
- <object class="GtkVBox" id="vbox3">
- <property name="width_request">384</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>
- <child>
- <object class="GtkHBox" id="hbox2">
- <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>
- <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>
- <property name="label"
translatable="yes">&lt;b&gt;My Library&lt;/b&gt;</property>
- <property name="use_markup">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="padding">16</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label4">
- <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="label"
translatable="yes">search:</property>
- <property name="justify">right</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="middle_pane_search">
- <property name="width_request">128</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="primary_icon_activatable">False</property>
- <property
name="secondary_icon_activatable">False</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </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>
- <property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="has_tooltip">True</property>
- <property
name="use_action_appearance">False</property>
- <property name="relief">none</property>
- <child>
- <object class="GtkImage" id="image3">
- <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="stock">gtk-clear</property>
- <property name="icon-size">1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </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>
- <property
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="has_tooltip">True</property>
- <property
name="use_action_appearance">False</property>
- <property name="relief">none</property>
- <child>
- <object class="GtkImage" id="image2">
- <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="stock">gtk-refresh</property>
- <property name="icon-size">1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
- </packing>
- </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="use_action_appearance">False</property>
- <property name="relief">none</property>
- <child>
- <object class="GtkImage" id="image1">
- <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="stock">gtk-save-as</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">5</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVPaned" id="vpaned1">
- <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>
- <child>
- <object class="GtkHPaned"
id="my_library_filter_pane">
- <property name="height_request">128</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>
- <child>
- <object class="GtkScrolledWindow"
id="scrolledwindow2">
- <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>
- <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>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkHPaned" id="hpaned4">
- <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>
- <child>
- <object class="GtkScrolledWindow"
id="scrolledwindow7">
- <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>
- <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>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow"
id="scrolledwindow9">
- <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>
- <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>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">False</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkVPaned" id="vpaned2">
- <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>
- <child>
- <object class="GtkScrolledWindow"
id="scrolledwindow3">
- <property
name="height_request">100</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>
- <child>
- <object class="GtkTreeView"
id="middle_top_pane">
- <property
name="height_request">100</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="rules_hint">True</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection"
id="treeview-selection6"/>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox5">
- <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>
- <child>
- <object class="GtkToolbar"
id="paper_information_toolbar">
- <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="toolbar_style">icons</property>
- <property name="icon-size">1</property>
- </object>
- <packing>
- <property
name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow"
id="scrolledwindow4">
- <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>
- <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>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox2">
- <property name="width_request">256</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>
- <child>
- <object class="GtkVPaned" id="vpaned3">
- <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>
- <child>
- <object class="GtkScrolledWindow"
id="scrolledwindow5">
- <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>
- <child>
- <object class="GtkViewport" id="viewport1">
- <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="resize_mode">queue</property>
- <child>
- <object class="GtkDrawingArea"
id="pdf_preview">
- <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>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox4">
- <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>
- <child>
- <object class="GtkLabel" id="label1">
- <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="label"
translatable="yes">Bookmarks / Notes</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkVPaned" id="vpaned4">
- <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>
- <child>
- <object class="GtkVBox" id="vbox7">
- <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>
- <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>
- <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>
- <packing>
- <property
name="expand">True</property>
- <property
name="fill">True</property>
- <property
name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolbar"
id="toolbar_bookmarks">
- <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="toolbar_style">icons</property>
- <property
name="icon-size">1</property>
- </object>
- <packing>
- <property
name="expand">False</property>
- <property
name="fill">True</property>
- <property
name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property
name="resize">False</property>
- <property name="shrink">True</property>
- </packing>
- </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>
- <child>
- <object class="GtkTextView"
id="paper_notes">
- <property
name="visible">True</property>
- <property
name="sensitive">False</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="has_tooltip">True</property>
- <property
name="pixels_above_lines">5</property>
- <property
name="wrap_mode">word</property>
- <property
name="left_margin">5</property>
- <property
name="right_margin">5</property>
- </object>
- </child>
- </object>
- <packing>
- <property
name="resize">False</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">False</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkToolbar" id="toolbar1">
- <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="icon-size">1</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>
- <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="stock_id">gtk-print</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </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>
- <property
name="use_action_appearance">False</property>
- <property
name="stock_id">gtk-go-back</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </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>
- <property
name="use_action_appearance">False</property>
- <property
name="stock_id">gtk-go-forward</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </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>
- <property
name="use_action_appearance">False</property>
- <property
name="stock_id">gtk-zoom-in</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </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>
- <property
name="use_action_appearance">False</property>
- <property
name="stock_id">gtk-zoom-out</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </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>
- <property
name="use_action_appearance">False</property>
- <property
name="stock_id">gtk-zoom-fit</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </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>
- <property
name="use_action_appearance">False</property>
- <property
name="stock_id">gtk-zoom-100</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="homogeneous">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
-</interface>
=======================================
--- /icons/applications-development.png Sun Jan 20 18:45:12 2008
+++ /dev/null
Binary file, no diff available.
=======================================
--- /icons/blank.gif Tue Jan 15 07:34:16 2008
+++ /dev/null
@@ -1,2 +0,0 @@
-GIF89a ÿÿÿÿÿÿ!þ Created with GIMP !ù
- , (c)Ëí £ ´Ú ³> ;
=======================================
--- /icons/bookmark.png Fri Feb 15 11:54:45 2008
+++ /dev/null
Binary file, no diff available.
=======================================
--- /icons/bookmark.xcf Fri Feb 15 11:54:45 2008
+++ /dev/null
@@ -1,51 +0,0 @@
-gimp xcf file B B
- $ gimp-image-grid (style intersections)
-(fgcolor (color-rgba 0.650980 0.650980 0.650980 1.000000))
-(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
-(xspacing 10.000000)
-(yspacing 10.000000)
-(spacing-unit inches)
-(xoffset 0.000000)
-(yoffset 0.000000)
-(offset-unit inches)
- i V ù New Layer
copy ÿ
-
-
-
J ^ n ü
ü ý ü øüýþþýüü ü þüýüü ü ý ü ü ü é
øéëóøîéé øéñýþøéé øéñûýôêé øéìñòìéé é é OûSQOO øOb¨È SO øO óûËVO øT êõ¯WO øOi ¢hRO OüSOO
- O ù /eP ø*±ëï¥' øNáýþðy øAÚúüãk ø fÍÙ<<8 ú *P9
- ü New Layer#1 ÿ

-
- % 5 6ý76 ý 6³ ³ý6 ø5
-jj
-7 ø1rSSr3 ø.lLMm/ ø0pQPp1 ø4uWWu5 ø6wZZx7 ø6wpnx7 ø6v66w7 6ü566 ù646 36 D HýIH ÷ HÁÁÂÁH øG I øB qq D ø= hh > øA nm A øF vv F øH zz I øH I øH HH I HüGHH ùHEH DH D xýyx ý xÔ Ôýx øwº¬¬>>y
øn(c) ªp øf ¡g øl| |l øu° ¯u øx³¤¤´y øx³°¯´y øx³xx³y xûvtxx ùxsx qx D ýqþý ý üýå ýIüÿ ÿýýL ýEýÿ ÿýýK ýEýÿ ÿýýK ýFýÿ ÿýýK ýFþÿ ÿýþJ ýFþÿ ÿýþI ýFþÿ ÿýþH ý?þÿ ÿþ@ þ6ÿ ÿþ6 ÷.ÿÿÉÁÿÿ- ÷%ÿy qÿ$ ý ý 3 Background ÿ

-
- ý ! þ ý ü ÿ
-ÿ÷ ÿìêêë ë ìóíðÿ ÿêÄÅÅÆ ÆôÇðÿ ÿêëëì ì íõîðÿ ÿëÅÆ ÆóÇðÿ ÿëëììí íõìîðÿ ÿëÆ Æ îðíîðÿ ÿììííîîï ï÷ðÿ ÿìÆ Æ Ç Èñðÿ ÿìíîîïïðñ ñõÿ ÿíÆÇÇÈ È ñéòÿ ÿííîïïððñòòÿ ÿ
-ÿû
- þ þ ý ü ÿ
-ÿ÷ ÿìêêë ë ìóíðÿ ÿêÄÅÅÆ ÆôÇðÿ ÿêëëì ì íõîðÿ ÿëÅÆ ÆóÇðÿ ÿëëììí íõìîðÿ ÿëÆ Æ îðíîðÿ ÿììííîîï ï÷ðÿ ÿìÆ Æ Ç Èñðÿ ÿìíîîïïðñ ñõÿ ÿíÆÇÇÈ È ñéòÿ ÿííîïïððñòòÿ ÿ
-ÿû
- þ þ ý ü ÿ
-ÿ÷ ÿìêêë ë ìóíðÿ ÿêÄÅÅÆ ÆôÇðÿ ÿêëëì ì íõîðÿ ÿëÅÆ ÆæÇðÿ ÿëëììííåìîðÿ ÿëÆ Æ îðæîðÿ ÿììííîîï ï÷ðÿ ÿìÆ Æ Ç Èñðÿ ÿìíîîïïðñ ñõÿ ÿíÆÇÇÈ È ñéòÿ ÿííîïïððñòòÿ ÿ
-ÿû
- þ þ¬ÿ
-ÿüV ÿ ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ
-ÿ þ´ÿ
-ÿþ¨
-New Layer ÿ
-
-
-

-Ã î î ì ÿ
=======================================
--- /icons/drawing.png Fri Feb 15 16:26:07 2008
+++ /dev/null
@@ -1,19 +0,0 @@
- PNG
-
-
-IHDR óÿa
pHYs tIME Ö $ Î c 1/4 IDAT8Ë- ¿k a Ç?Ï 8 [{J=ä*B' u t 7 Nö up \
-CÃ @Ìà" R D\ZDJ§,
-âà P0¹â 1/2 9 ¶i¹æ^ ´¡Òx ð>><ïà ÷Ãó|
) Ë A ¸ | ¥Ré ç Qåy Ù#(c) 1/2 Ö ×uÉçóh-ÑZS(c)Thë6º-)
-äÜ f÷7 ã °¶ 3/4 B#X&²[<yÿ '(R)õýéét@±Xdm}
-zô {Æâ¸:I ô¨ ÊõÛó ºz þn
-F° íXllwèl üÞê`; Ö 2$Í @D¨ÕªDÝ Á ¥²D[M <<Õ ¸ss
-
-³I
-Jú !IzL Ùäri!*áþËol&çèE¯°
- ¥2$I ÃñO.Ùó ,=ö ÞÖ9 É } |ý°ÃåÉ Ô
--âßóSV !ÞîÒ ;È
-| ùõæ4Ç2w9³ ~ ÿ^A0ÌÞy@üi Ù >>
- ´w=a¡´ ¹Ã `¤o
- ¹Ò¯û +}Ì0
- ãã<1/4 u Q µ,ëµïû³£|²,ë9ÿK 1/2 Ï
-e(c)¯ IEND(R)B`
=======================================
--- /icons/emblem-favorite.png Fri Jan 18 16:03:36 2008
+++ /dev/null
Binary file, no diff available.
=======================================
--- /icons/favicon_acm.ico Thu Jan 10 05:22:55 2008
+++ /dev/null
Binary file, no diff available.
=======================================
--- /icons/favicon_citeseer.ico Tue Jan 22 13:58:15 2008
+++ /dev/null
@@ -1,28 +0,0 @@
- h (
d d Âcgá Ôx}Ý-<<Ách¿R[à Ïz~Úz
-Ó Ç{|
⸳·chæ-°>>DSýÿü¹IUûêç´LW 1/2 GT 1/2`i 1/4 KY(R)HTÃmwÄkn¿Y^¿JSÇV`ÀESÃS_3/4 KTØ(R)(c)×<<²à ¥Ö(R)°ìÍÌß-¯ûÿûúÿûê´¹Í è 1/4 1/2 øúúÿûÿøþÿöÿÿÿýþÿÿüöþþÿÿþÿþ÷ÿ÷êñÀ¶Ô Ý è Ù Ö âÁ 3/4 ûÝÜÿýúöÿþÿúýÿýÿÿÿüìâÛÖji± ²
µ
- § ¶ ¹ º º
- ¸ >>1%Ò
-ÿÿøùþÿçÎÄÂ
-$¶ ³ 3/4 1/4 (R)
- µ ·

- >> ± µ >>
- ÿüõ÷ýÿÓ_X° -
- (R)
- · µ Ê_\øÓËöÿöþòîá--Óei± ¸ ðÐÑñþÿ¸ °
- µ ¿ ´ Ò]^üÿûúýÿÿÿþÿùÿûþÿÿÿþùÝÒã ë 3/4 ºÿÿþ 1/4 - ´ ² ¯ è¯-ÿüüóÿüÿúÿÿýÿÿýþÿÿüûÿüÿþþÿýÿûÿÿÆ<0À 1/2
- ³ µ
æ ÿþþþýÿÿýÿùÿýôÿþÿÿþÿþþüÿýóÿþùÿþØ ª << (R) - Ä)-ýÿùöÿÿøýûýÿþÿüýÿýÿøüýûÿÿÿÿÿùþýýðî¶
-1/2
- ´ 1/2
- -
- ÎpjÿýúÿýÿñÿÿÿüþÿûÿôÿÿÿÿþëÉÉùãÞþüÿë<<ª¶
-¿ ¯ ¯ µ ÏMNìÏÊýÿùýÿùÿÿøóÓÍÊZZ¶
- ØIDùûÿÿÿüê(R)¨¸
-
-- ¿ ´
- ª À 1/4-*ÊLG>>+&¬ << µ ² ÿþÿñÿÿþüûÿðçÏnk³ °


- ³ ª
- ° >> 1/2 ¹ 1/4
-ÿÿûüûÿûþÿÿÿüÿÿ÷ýòîì¬¨Þ ÆKAËRHÏPGÌJCÃNIé Ø¡ ùñê
=======================================
--- /icons/favicon_google.ico Fri Feb 22 15:13:30 2008
+++ /dev/null
Binary file, no diff available.
=======================================
--- /icons/favicon_ieee.ico Thu Jan 10 05:22:55 2008
+++ /dev/null
Binary file, no diff available.
=======================================
--- /icons/favicon_jstor.ico Sun Feb 12 12:44:15 2012
+++ /dev/null
Binary file, no diff available.
=======================================
--- /icons/favicon_pubmed.ico Thu Jan 10 05:22:55 2008
+++ /dev/null
@@ -1,2 +0,0 @@
- ( (
dB$ ´¢ äÚÔ r\ È 3/4 ´ tZ< ôòô t ÜÎÄ fL ìæä ¤ lN, 1/4 (R) ~d üþü ÿÿÿÿ(ÿÿÿÿÿÿÿ0 Fÿÿÿÿÿ /ÿÿ- ÿöÐ ÿñvÿÿÿlOÿ ÿÿÿúäÿÿà ÿÿÿÿÿÿ% ;JÿÿÿÿGÀ ÿÿÿÿö
-ÀOÿúèÿÿÿe ÿEoÿÿÿ%¯ÿ5oÿÿý ÿÿ / ÿÿÿø0 ?ÿÿÿÿÿöAOÿÿÿ
=======================================
--- /icons/note-write.png Tue Feb 12 13:29:24 2008
+++ /dev/null
@@ -1,15 +0,0 @@
- PNG
-
-
-IHDR óÿa bKGD ÿ ÿ ÿ 1/2 §
pHYs tIME Ö 2ÛL¬a öIDAT8Ë ?hSQ Å ç 3/4 4(c) kG'
-Dü·øg*B39(. Å ¸<<±£Ô Vª%4 B iÒ.:õ MÑ`-X-µ´d(i Ã>>yÖêR?ø ûxçÜó}ç\M ØçÀYv^Å#éÖE Þ ì
-R tºS ³ !÷µ
-´ yùâ ñ l¬>úû Y¤ à!Y | o/E¿X îmH ä ñ b ì
-¹[ I TiTÆÉ2 8 ä ° L
-) E$C7çIg<<,L 2][ú M ÄC% 1Ô_# -ò¡ §V_æÇ " ±¶L Èø[nO¸îb¨¿FßÝ
-ó¥
-sï ù6=ÎÁS )P É ÛÄ#% oÌÐwg ÷¥
-³ WX }ʵ O¶/1å û Hq æ sSS4 Wùù¶È {1/2 ¤ ¨ c" Ð2g ,2> ×_QÿÚC 3/4 P Ç 1/4 æêý^ Ïæ|
-G =
- ¢  yHÎs, ±6Ç÷Ö
-øRè âl4¿t&8 *@.$(R)e < N / 1I· Ý4 ¢- {v de-tÔv Ú Éó\xÌï x |
¯ XY+ krĶ]ØwT]å F í*· îÌeí " õò`dã³õìàùÿxÎ ~ ×n A$Ú ´ IEND(R)B`
=======================================
--- /icons/note.png Tue Feb 12 13:29:24 2008
+++ /dev/null
@@ -1,11 +0,0 @@
- PNG
-
-
-IHDR óÿa bKGD ÿ ÿ ÿ 1/2 §
pHYs tIME Ö 2 <<´
-Y SIDAT8Ë- =/ Q ÷Ü >>,Ѫd - B-A r Ò ÑHd tJµ_@'Ñh4>6vG1wfÇ
Nr ¹ ÷=Ϲ÷ÕÍ ` ß×pí = lõ ÷
- ꪪo BétR 1/4 swp 3/4 à 3×aôtüu <R
- ³ õ/
-@6ÛR R H! ]iDÄübÛ Ó ;d R , BÃÄ ÙüO V -O YIÒ räz
-H ²Ø ·H|2É õ 3/4!P@ e[ö
-IH&3 k t {ølÔ&Q ÍPÐ àú <<
-*Äz ÅéJ5IDDÆãróÎ ëV.ßE¸tIéÍñéöC ¤ Ê =? /¯ l UÆd@j Jï>% È xyë1)rXí lø*°Ý¥Ó L Ká±i n|
Ïãí ¯ÃK #Ý ¤°ÿºÖNþ|ûßú J1ùÝTÍ 1/2 IEND(R)B`
=======================================
--- /icons/process-working.gif Tue Jan 15 07:34:16 2008
+++ /dev/null
@@ -1,41 +0,0 @@
-GIF89a ÿÿÿ!ÿ NETSCAPE2.0 !ù
- , (c)ËÍ` t2Lz Nu[ âH Z !ù
- , (c)Ë Ð /RXc¶ÜÍ âH &R !ù
- , (c)Ë Ð /RXí´ 1/4 û âHr !ù
- , (c)Ë ÐÒ aZȰѴû âH J !ù
- , (c)Ë ÐÒ aZȰѴû âH J !ù
- , (c)Ë ÐÒ N Ï¥ 1/4 û âH* !ù
- , (c)Ë ÐÒ30Î OÍ|á âH b !ù
- , (c)Ëí Æw(ÞénÏ
-âH [ !ù
- , (c)Ëí à; Î`¯|ùÕ
- âH6 !ù
- , (c)Ëíß fÒ äÕ ò âS !ù
- , (c)Ëíß fÒ ¤} Sy ÞHb !ù
- , (c)Ëíï 4rZ òÌõ>1/2 uÞHN !ù
- , (c)Ëí £ Øh
- ë
- P !ù
- , (c)Ëí £ iiÌïrwi¢X !ù
- , (c)Ëí £ iiÌ.óÆ]Ú8 !ù
- , (c)Ëí £ ´Z Ö l
-Q !ù
- , (c)Ëí £ ´Z Ö ÛO !ù
- , (c)Ëí £ ´Zà0Ð8w¸YbP !ù
- , (c)Ëí £ ´F 0 ï hU !ù
- , (c)Ëí £ ´F 0 ï hU !ù
- , (c)Ëí £ ´B $ ;ö Yb !ù
- , (c)Ëí £ ´B $ Y÷ûYU !ù
- , (c)Ëí £ ´B $ YÏn
- !ù
- , (c)Ëí £ :-Ôñ ßa"R !ù
- , (c)Ëí £| È:3 Ú J !ù
- , (c)Ëí £| È:3 ;û !ù
- , (c)Ëí £t Æ
-| ùî !ù
- , (c)Ëí rZ '(R)¶ þ ÞH !ù
- , (c)Ëí FÒ ä {¿}â( !ù
- , (c)Ëí FÒ ä¤ û ¢W !ù
- , (c)Ëí
- ñ *óÄ ë â8 !ù
- , (c)ËÍ` t2Lz Nuû âHz ;
=======================================
--- /icons/process-working.xcf Tue Jan 15 07:35:20 2008
+++ /dev/null
@@ -1,209 +0,0 @@
-gimp xcf
file B B ¶ O
-gimp-comment Created with GIMP gimp-image-grid (style
intersections)
-(fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
-(bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
-(xspacing 32.000000)
-(yspacing 32.000000)
-(spacing-unit inches)
-(xoffset 0.000000)
-(yoffset 0.000000)
-(offset-unit inches)
- 2 ö R ¬
-m Î
-+ ÷ ] Ä - ø Z ·
-~
-â F (c) "
- #d $3/4 &$ ' (õ *W +3/4 -$ Pasted
Layer#32 ÿ
-
- 3 æ ú
- ' ý% ù4 ÿ§ öZÿÊ èl 1
- ÷ û% : þ
- þ ûg ü
-5& ûQ~y ü ." þ ÷%9 <
- ö 2/ /( 1 ú 3, ý
- $ Pasted Layer#31 ÿ
-
- 2 B V f ' þ
ù s (R)
- öOÿ× 1
- ÷£ÿ, : þ
- þ û
-(R)(c) ü
-5& ûn ü ." þ þ ÷6B <
- ö ;. /( 1 ú 3, ý
- $ Pasted Layer#30 ÿ
-
- 1 ¢ ¶ Æ ' ý
- û 1+ ÷(c)ã *% 1
- ÷ ÿ' : þ þ û Áº ü
-5& û}<<£
- ü ." þ þ ÷L] <
- ö \4 /( 1 ú 3.
-% Pasted Layer#29 ÿ
-
- 0 þ " ' ý ý1+
÷±Ï +% 1
- ÷¨ÿ$ : þ" þ û¢ÒÊ ü
-5& û 3/4 ¶ ü ." þ þ ÷^} <
- ö N .( 1 ú( 3.
-% Pasted Layer#28 ÿ
-
- / X l |
' ý û1+ ÷ 4 -% 3
- ÷À· : ý & þ û(R)à× ü
-5& û ÐÆ ü ." þ þ ÷m <
- ö2¢b .( 1
- ù I 4- ý $ Pasted
Layer#27 ÿ
-
- .
¸ Ì
Ü ' ý û1+ ÷!, -% 3
- ÷8; : þ þ û ñä
- ü
-5& û ãÓ ü ." þ þ ÷|¶
- ;
- öA 1/4 x 3( 1$ ÷
-l :,
- ý $ Pasted Layer#26 ÿ

-
- - - = ' ý û1+ ÷#- -% 3
- ÷"9 : þ þ û Øò
- ü
-5& û Äà
- ü ." þ þ ÷ Î! ;
- öHÔ J' 1$ ÷"} [/
- ý5 $ Pasted Layer#25 ÿ

-
- , z ' ý û1+ ÷#- -% 3
- ÷"9 : þ û ÚÂ ü
-5& û Ðï ü ." þ þ ÷ ä%
-;
- öOë d8 1( ö& yG ýQ6 $ Pasted
Layer#24 ÿ
-
- +


-û ' ý û1+ ÷#- -% 3
- ÷"9 : þ þ ýF5 ü
-5& û Öâ ü ." ý þ ÷ ÷( ;
- öUþ° |P 1+ ö)
- ^ ü \ Pasted
Layer#23 ÿ
-
- * = Q a ' ý û1+ ÷#- -% 3
- ÷"9 : þ þ ý'* ü
-5+ ý;U ü ." ý $ þ ÷¨ÿ+ ;
öLÿÁ f 81 ö t ¨v ü ¤o ý Pasted
Layer#22 ÿ
-
- ) £ · Ç ' ý û1+ ÷#- -% 3
- ÷"9 : þ þ û +/ û
-4. ý)- ü .# þ% þ ÷¤ÿ& J! ö¡Þ ¥z VI ø 1/2 ü ¹ ý
- Pasted Layer#21 ÿ
-
- (

- - ' ý û1+ ÷#- -% 3
- ÷"9 : þ þ û +/ û
-40 ý). û .( þ$ þ ÷£ÿ'
-j2 ö ç · nn ø Ð 0 ü Ì ý! Pasted
Layer#20 ÿ
-
- ' p ' ý û1+ ÷#- -% 2! ÷"9 : þ þ û +/ û
-40 ü)/ û -- þ þ ÷3ê. % E ö þ Ç
- ÷ á° S ü Ü ý$ Pasted
Layer#19 ÿ
-
- & Ù í ý ' ý û1+ ÷#- -% 2! ÷"9 : þ þ û +/ û
-40 ü)/ û -- þ þ ÷3ê. % E ö þ Ç
- ÷ á° S ü Ü ý$ Pasted
Layer#18 ÿ
-
- % B V f ' ý û1+ ÷#- -% 2$ ÷"9 9 þ þ û +/ û
44 ü)/ û
@@
- þ ÷ c$ ,§V ö!Å#Ô(c) ¯) ÷
- ð %q ýÉ þ Pasted
Layer#17 ÿ
-
- $ ¤ ¸ È ' ý ú1+ ÷#- -% 2( ÷"9 9 þ þ û +/ û
-IO ü)/ û
-[] þ þ ÷!: 2Âe ö /
å¸ ¬È/ ø ù>> ) ý+ $ Pasted
Layer#16 ÿ
-
- * ' ý ú4* ÷%- -% 2* ÷!9 9 þ
- û +/ û fi0 ü)/ û s~3 þ þ ÷!: 8Ús ö / î 1/2 ß5 ø ÿÀ -
- ý* $ Pasted Layer#15 ÿ

-
-
- c w ' ý ú3- ÷%- -$ 13 ÷!9 B% þ ü û +/ û N ü)/ û O þ þ ÷!:
- >ï ö!0 ÃÑ Ìô; ùßÏ 0 ý,
- $ Pasted Layer#14 ÿ
-
-
- Æ Ú ê ' ý
÷ 3/ ÷*- -$ CT ÷!9 `5 þ ü û +/ û
- y ü)/ û ¨v þ þ ÷!: Bÿ ö!0 LØ Ûÿ ú<Á (t
- þ $ Pasted Layer#13 ÿ

-
-
-
-*
->
-N ' ý
- ÷ 3. ö*- -# `{
- ÷!9
- C þ ü û +/ û"±µ ü)/ û
-(R)>> þ þ ÷!: Lÿ ÷!0 +V(ï û0.
- ý $ Pasted Layer#12 ÿ

-
-
-

-² ' ý
-
÷ 26 8 ö*- ,+ z ÷!9 & O þ ü ü+/ û%ÅÉ û ,/ û
-3/4 Ë þ þ ÷#9 Tÿ ÷"0 /"#ø
- û3(
- ý $ Pasted Layer#11 ÿ

-
- ò

' ý
- ö ?R
l ö.- 8B º# ÷"9 -¹X þ ü ü+/ û)×Ú¤ û ,/ û!ÌÙ þ þ ÷#9 Oÿ ÷"0 /& Ã
ý3) ý $ Pasted Layer#10 ÿ

-
- !U !i !y ' ý1+
ø `j &~
- .ø RV |Õ: ÷"9 4Ñb þ þ ü+/ û,çån û ,/ û#×ím þ þ% ÷#9 ¸ ÷"0 /) $.
ý3) ý $ Pasted
Layer#9 ÿ

-
- "µ "É "Ù ' ýRJ
ö { + ! õ 10 jh ºê? ÷#: :æk þ þ ü+/ ü.û¸ û ,/ ü'è<< þ ÷#9 <
- ÷"0 /) 1 ý3) ý $ Pasted
Layer#8 ÿ
-
- $ $# $3 ' ývw
ö / $ õ <H x ÌýD ÷#H ?ùr þ þ ü+/ ü0ÿÀ û ,/ ü)ï± þ ÷#9 <
- ÷"0 /) 1 ý3) ý $ Pasted
Layer#7 ÿ
-
- %i %} % ý
- ý ö ¨¨ 3¤& õ ]b ÛÿH ÷0g
- Cÿy þ
- þ û 0/ ü:ÿÆ û ./ ü Y= þ þ ÷#9 <
- ÷$0 /) 1 ý3) ý $ Pasted
Layer#6 ÿ
-
-
- &Ï &ã &ó ý ý¯§
ö/
- 1/2 ¹ 8~ õ
- y | ëÿ) ÷E
- Gÿ þ ý' û /. ü ]+ û // ü *! þ þ ÷#9 <
- ÷(1 /) 1 ú 3) ý $ Pasted
Layer#5 ÿ
-
- (9 (M (] ý
- ýÀ´ ÷ = ÐÈ ö,£ µ¡
-ù ÷Y¤ Hÿt þ þ
- û
-45 ü 4& û /. ü ." þ þ ÷#9 <
- ÷(1 /) 1 ú 3) ý $ Pasted
Layer#4 ÿ
-
- ) )´ )Ä ý ýÏÀ ÷
-x áÔ ö;1/4 Â<< ÿ ÷k 1/2
- Oâ' þ
- û JN ü 5& û /1 ü ." þ þ ÷#9 <
- ÷(1 /) 1 ú 3) ý $ Pasted
Layer#3 ÿ
-
-
- + + +& ý! ýÜÊ ÷+ ïÞ öIÕ¯ δ y
- ÷{Ô "= þ þ û hi ü
-5& û FE ü ." þ þ ÷#9 <
- ÷+0 /) 1 ü 4) ý
- $ Pasted Layer#2 ÿ
-
-
,i ,} , þ
- ýÒ 1/2 ÷0 ýé öRë 1/2 Ø¿ 3
- ÷ é# : þ þ û5 ü
-5& û)f_ ü ." þ þ ÷$9 <
- ÷-0 /( 1 ü 3, ý
- $ Pasted Layer#1 ÿ
-
- -Ï -ã -ó ' ý% ÷4 ÿ§ öZÿÊ
èl 3
- ÷ û% : þ
- þ ûR ü
-5& û@ x ü ." þ ÷%9 <
- ö 10 /( 1 ú 3, ý
- $
=======================================
--- /gpapers/__init__.py Sun Jun 3 15:18:04 2012
+++ /gpapers/__init__.py Sun Jun 3 15:19:48 2012
@@ -60,7 +60,8 @@

log_level_debug()

-BASE_DIR = os.path.abspath(os.path.split(__file__)[0]) + '/../'
+# our directory
+BASE_DIR = os.path.abspath(os.path.split(__file__)[0])
PROGRAM = 'gPapers'
DATE_FORMAT = '%Y-%m-%d'
LEFT_PANE_ADD_TO_PLAYLIST_DND_ACTION = ('add_to_playlist',
=======================================
--- /setup.py Mon Apr 9 13:29:00 2012
+++ /setup.py Sun Jun 3 15:19:48 2012
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#! /usr/bin/python

# gPapers
# Copyright (C) 2007-2009 Derek Anderson
@@ -19,15 +19,35 @@
# You should have received a copy of the GNU General Public License
# along with gPapers. If not, see <http://www.gnu.org/licenses/>.

+import os
from distutils.core import setup
+from distutils.command.build_scripts import build_scripts as
build_scripts_class
+
+
+class gpapers_build_scripts_class(build_scripts_class):
+ # Adjust bin/gpapers.py --> gpapers
+ # (adapted from code in zim written by Jaap Karssenberg: zim-wiki.org )
+
+ def run(self):
+ build_scripts_class.run(self)
+ if os.name == 'posix' and not self.dry_run:
+ for script in self.scripts:
+ fname, ext = os.path.splitext(script)
+ if ext == '.py':
+ file = os.path.join(self.build_dir, script)
+ file_no_ext = os.path.join(self.build_dir, fname)
+ print 'renaming %s to %s' % (file, file_no_ext)
+ os.rename(file, file_no_ext)

setup(name='gPapers',
+ cmdclass={'build_scripts': gpapers_build_scripts_class},
version='0.5dev',
description='The Gnome-based Scientific Paper Organizer',
author='Derek Anderson',
author_email='pub...@kered.org',
url='http://gpapers.org/',
- packages=['gpapers', 'gpapers.gPapers', 'gpapers.importer', 'deseb'],
+ packages=['gpapers', 'deseb'],
+ package_data = {'gpapers': ['data/*', 'icons/*']},
scripts=['gpapers.py'],
- #TODO: Icons, UI files, desktop file
- )
+ #TODO: desktop file
+ )

==============================================================================
Revision: 56e763b823fe
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:20:46 2012
Log: remove deseb (for now)
http://code.google.com/p/gpapers/source/detail?r=56e763b823fe

Deleted:
/deseb/__init__.py
/deseb/backends/__init__.py
/deseb/backends/mysql.py
/deseb/backends/postgresql.py
/deseb/backends/postgresql_psycopg2.py
/deseb/backends/sqlite3.py
/deseb/management/__init__.py
/deseb/management/commands/__init__.py
/deseb/management/commands/evolvedb.py
/deseb/management/commands/fingerprint.py
/deseb/management/commands/sqlevolve.py
/deseb/schema_evolution.py
Modified:
/gpapers/__init__.py
/setup.py

=======================================
--- /deseb/__init__.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,156 +0,0 @@
-import django.core.management
-try:
- import django.core.management.sql
- version = 'trunk'
-except ImportError:
- version = '0.96'
-"""
- django has its own internal set of commands (stored in
django.core.management.commands).
- this function adds our commands to django's own.
-"""
-
-added_aka_support = False
-
-def db_type(self):
- from django.db import get_creation_module
- from django.db.models.fields.related import ForeignKey
- data_types = get_creation_module().DATA_TYPES
- internal_type = self.get_internal_type()
- if internal_type in ['ForeignKey']:
- return db_type(self.rel.to._meta.pk)
- assert internal_type in data_types.keys(), "No such django type.
Please send this error to maintainer."
- return data_types.get(internal_type,'') % self.__dict__
-
-def add_aka_support():
- global added_aka_support
- if added_aka_support: return
- else: added_aka_support = True
-
- import django.db.models
- try:
- import django.contrib.localflavor.us.models as us_models
- except ImportError:
- us_models = django.db.models
- """
- django is picky about unknown attributes on both fields and models, so
here
- we preempt their init methods to remove the offending information.
-
- these two methods pull the aka information (used for detecting
renames),
- format it properly and store it as a class attribute. then the
original
- __init__() is called as originally planned.
- """
-
- def set_field_aka(func):
- def inner(self, *args, **kwargs):
- try:
- if not self.aka: self.aka = None
- except:
- self.aka = None
- if kwargs.has_key('aka'):
- self.aka = kwargs['aka']
- if self.aka.__class__.__name__=='str':
- self.aka = (self.aka,)
- del kwargs['aka']
- if version == 'trunk' and kwargs.has_key('maxlength'):
- kwargs['max_length'] = kwargs['maxlength']
- del kwargs['maxlength']
- func(self, *args, **kwargs)
- return inner
-
- django.db.models.CharField.__init__ =
set_field_aka(django.db.models.CharField.__init__)
- django.db.models.CommaSeparatedIntegerField.__init__ =
set_field_aka(django.db.models.CommaSeparatedIntegerField.__init__)
- django.db.models.DateField.__init__ =
set_field_aka(django.db.models.DateField.__init__)
- django.db.models.Field.__init__ =
set_field_aka(django.db.models.Field.__init__)
- django.db.models.FloatField.__init__ =
set_field_aka(django.db.models.FloatField.__init__)
- django.db.models.IntegerField.__init__ =
set_field_aka(django.db.models.IntegerField.__init__)
- us_models.PhoneNumberField.__init__ =
set_field_aka(us_models.PhoneNumberField.__init__)
- django.db.models.PositiveIntegerField.__init__ =
set_field_aka(django.db.models.PositiveIntegerField.__init__)
- django.db.models.PositiveSmallIntegerField.__init__ =
set_field_aka(django.db.models.PositiveSmallIntegerField.__init__)
- django.db.models.SmallIntegerField.__init__ =
set_field_aka(django.db.models.SmallIntegerField.__init__)
- django.db.models.TextField.__init__ =
set_field_aka(django.db.models.TextField.__init__)
- us_models.USStateField.__init__ =
set_field_aka(us_models.USStateField.__init__)
-
- # some v0.96 and v0.97 pre compatibility below
- try:
- django.db.models.Field.db_type
- except:
- django.db.models.Field.db_type = db_type
-
- def set_model_aka(func):
- def inner(self, cls, name):
- self.aka = None
- if self.meta:
- meta_attrs = self.meta.__dict__
- if meta_attrs.has_key('aka'):
- self.aka = meta_attrs['aka']
- if self.aka.__class__.__name__=='str':
- self.aka = (self.aka,)
- del meta_attrs['aka']
- func(self, cls, name)
- return inner
-
- django.db.models.options.Options.contribute_to_class =
set_model_aka(django.db.models.options.Options.contribute_to_class)
-
-def add_management_commands(func):
- def inner(*args, **kwargs):
- add_aka_support()
- rv = func(*args, **kwargs)
- rv['evolvedb'] = 'deseb'
- rv['sqlevolve'] = 'deseb'
- rv['fingerprint'] = 'deseb'
- return rv
- return inner
-
-PASS_ARGS =
{'--dont-save':'do_save', '--dont-notify':'do_notify', '--noinput': 'interactive', '--managed-upgrades-only':'managed_upgrade_only'}
-HIDE_ARGS = ['--dont-save', '--dont-notify']
-
-def get_additional_args():
- import sys
- kwargs = {}
- for k,v in PASS_ARGS.items():
- if k in sys.argv: kwargs[v] = False
- return kwargs
-
-def management_command_evolvedb_v0_96():
- def inner(*args, **kwargs):
- "Interactively runs the SQL statements to bring your schema up to
date with your models."
- import schema_evolution
- kwargs.update(get_additional_args())
- return schema_evolution.run_sql_evolution_v0_96(*args, **kwargs)
- inner.args = '[--noinput] [--dont-notify] [--dont-save] ' +
django.core.management.APP_ARGS
- return inner
-
-def management_command_sqlevolve_v0_96():
- def inner(*args, **kwargs):
- "Output the SQL ALTER statements to bring your schema up to date
with your models."
- import schema_evolution
- kwargs.update(get_additional_args())
- return schema_evolution.get_sql_evolution_v0_96(*args, **kwargs)
- inner.args = '[--noinput] [--dont-notify] ' +
django.core.management.APP_ARGS
- return inner
-
-def management_command_sqlfingerprint_v0_96():
- def inner(*args, **kwargs):
- "Prints the app fingerprints."
- import schema_evolution
- kwargs.update(get_additional_args())
- return schema_evolution.get_sql_fingerprint_v0_96(*args, **kwargs)
- inner.args = '' + django.core.management.APP_ARGS
- return inner
-
-def execute_from_command_line_v0_96(func):
- def inner(action_mapping, argv):
- add_aka_support()
- if argv is None: import sys; argv = sys.argv
- return func(action_mapping, [c for c in argv if not c in
HIDE_ARGS])
- return inner
-
-try:
- django.core.management.get_commands =
add_management_commands(django.core.management.get_commands)
-except:
- django.core.management.DEFAULT_ACTION_MAPPING['evolvedb'] =
management_command_evolvedb_v0_96()
- django.core.management.DEFAULT_ACTION_MAPPING['sqlevolve'] =
management_command_sqlevolve_v0_96()
- django.core.management.DEFAULT_ACTION_MAPPING['fingerprint'] =
management_command_sqlfingerprint_v0_96()
- django.core.management.NO_SQL_TRANSACTION =
tuple(['evolvedb', 'sqlevolve', 'fingerprint']+list(django.core.management.NO_SQL_TRANSACTION))
- django.core.management.execute_from_command_line =
execute_from_command_line_v0_96(django.core.management.execute_from_command_line)
-
=======================================
--- /deseb/backends/mysql.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,225 +0,0 @@
-try: set
-except NameError: from sets import Set as set # Python 2.3 fallback
-from deseb.schema_evolution import NotNullColumnNeedsDefaultException
-
-class DatabaseOperations:
-
- def quote_value(self, s):
- if type(s) is bool:
- if s: return "true"
- else: return "false"
- if type(s) is int:
- return str(s)
- else:
- return u"'%s'" % unicode(s).replace("'","\'")
-
- def __init__(self, connection, style):
- self.connection = connection
- self.style = style
-
- pk_requires_unique = False
-
- def get_change_table_name_sql( self, table_name, old_table_name ):
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- output.append(
- kw('ALTER TABLE ')+ tqn(old_table_name) +
- kw(' RENAME TO ')+ tqn(table_name) + ';')
- return output
-
- def get_change_column_name_sql( self, table_name, indexes,
old_col_name, new_col_name, col_type, f ):
- pk_name = None
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fld = self.style.SQL_FIELD
- fct = self.style.SQL_COLTYPE
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- for key in indexes.keys():
- if indexes[key]['primary_key']: pk_name = key
- output = []
- col_def = fct(col_type)
- if not f.primary_key:
- col_def += ' ' + kw(not f.null and 'NOT NULL' or 'NULL')
- output.append(
- kw('ALTER TABLE ')+ tqn(table_name) +
- kw(' CHANGE COLUMN ')+ fqn(old_col_name) + ' ' +
- fqn(new_col_name) + ' ' + kw(col_def) + ';' )
- return output
-
- def get_change_column_def_sql( self, table_name, col_name, col_type,
f, column_flags, f_default, updates ):
- from django.db.models.fields import NOT_PROVIDED
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fct = self.style.SQL_COLTYPE
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- fqv = lambda s: self.style.SQL_FIELD(self.quote_value(s))
- output = []
-
- if updates['update_null'] or updates['update_type']:
- if str(f_default)==str(NOT_PROVIDED) and not f.null:
- details = 'column "%s" of table "%s"' % (col_name,
table_name)
- raise NotNullColumnNeedsDefaultException("when modified "
+ details)
- if str(f_default)!=str(NOT_PROVIDED) and not f.null:
- output.append(
- kw('UPDATE ') + tqn(table_name) +
- kw(' SET ') + fqn(col_name) + ' = ' + fqv(f_default) +
- kw(' WHERE ') + fqn(col_name) + kw(' IS NULL;') )
-
- col_def = fct(col_type)
- if not f.primary_key:
- col_def += ' ' + kw(not f.null and 'NOT NULL' or 'NULL')
- #if f.unique:
- # col_def += ' ' + kw('UNIQUE')
- #if f.primary_key:
- # col_def += ' ' + kw('PRIMARY KEY')
- output.append(
- kw('ALTER TABLE ')+ tqn(table_name) +
- kw(' MODIFY COLUMN ')+ fqn(col_name) + ' '+ col_def + ';' )
-
- return output
-
- def get_add_column_sql( self, table_name, col_name, col_type, null,
unique, primary_key, f_default ):
- from django.db.models.fields import NOT_PROVIDED
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fct = self.style.SQL_COLTYPE
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- fqv = lambda s: self.style.SQL_FIELD(self.quote_value(s))
- field_output = []
- field_output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ADD COLUMN ') + fqn(col_name) + ' ' + fct(col_type))
- if unique:
- field_output.append(kw('UNIQUE'))
- if primary_key:
- field_output.append(kw('PRIMARY KEY'))
- output.append(' '.join(field_output) + ';')
- if primary_key: return output
- if str(f_default)==str(NOT_PROVIDED) and not null:
- details = 'column "%s" into table "%s"' % (col_name,
table_name)
- raise NotNullColumnNeedsDefaultException("when added " +
details)
- if str(f_default)!=str(NOT_PROVIDED) and not null:
- output.append(
- kw('UPDATE ') + tqn(table_name) +
- kw(' SET ') + fqn(col_name) + ' = ' + fqv(f_default) +
- kw(' WHERE ') + fqn(col_name) + kw(' IS NULL;') )
- if not null:
- col_def = fct(col_type) + kw(not null and ' NOT NULL' or '')
- #if unique:
- # col_def += ' '+ kw('UNIQUE')
- #if primary_key:
- # col_def += ' '+ kw('PRIMARY KEY')
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' MODIFY COLUMN ') + fqn(col_name) + ' '+
- kw(col_def+';') )
- if unique:
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) + kw(' ADD
CONSTRAINT ') +
- table_name + '_' + col_name + '_unique_constraint'+
- kw(' UNIQUE(') + fqn(col_name) + kw(')')+';' )
- return output
-
- def get_drop_column_sql( self, table_name, col_name ):
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- output.append(
- kw('ALTER TABLE ')+ tqn(table_name)
- +kw(' DROP COLUMN ')+ fqn(col_name) + ';' )
- return output
-
- def get_drop_table_sql( self, delete_tables):
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- for table_name in delete_tables:
- output.append(
- kw('DROP TABLE ')+ tqn(table_name) + ';' )
- return output
-
- def get_autoinc_sql(self, table):
- return None
-
-
-class DatabaseIntrospection:
-
- def __init__(self, connection):
- self.connection = connection
-
- def get_schema_fingerprint( self, cursor, app):
- """it's important that the output of these methods don't change,
otherwise the hashes they
- produce will be inconsistent (and detection of existing schemas
will fail. unless you are
- absolutely sure the outout for ALL valid inputs will remain the
same, you should bump the version by creating a new method"""
- return self.get_schema_fingerprint_fv1(cursor, app)
-
- def get_schema_fingerprint_fv1( self, cursor, app):
- from django.db import models
- app_name = app.__name__.split('.')[-2]
- qn = self.connection.ops.quote_name
- schema = ['app_name := '+ app_name]
-
- cursor.execute('SHOW TABLES;')
- for table_name in [row[0] for row in cursor.fetchall()]:
- if not table_name.startswith(app_name):
- continue # skip tables not in this app
- schema.append('table_name := '+ table_name)
- cursor.execute("describe %s" % qn(table_name))
- for row in cursor.fetchall():
- tmp = []
- for x in row:
- tmp.append(str(x))
- schema.append( '\t'.join(tmp) )
- cursor.execute("SHOW INDEX FROM %s" % qn(table_name))
- for row in cursor.fetchall():
- schema.append( '\t'.join([ str(row[0]), str(row[1]),
str(row[2]), str(row[3]), str(row[4]), str(row[5]), str(row[9]), ]) )
- return 'fv1:'+ str('\n'.join(schema).__hash__())
-
- def get_columns( self, cursor, table_name):
- try:
- cursor.execute("describe %s" %
self.connection.ops.quote_name(table_name))
- return [row[0] for row in cursor.fetchall()]
- except:
- return []
-
- def get_known_column_flags( self, cursor, table_name, column_name ):
- cursor.execute("describe %s" %
self.connection.ops.quote_name(table_name))
- dict = {
- 'primary_key': False,
- 'foreign_key': False,
- 'unique': False,
- 'allow_null': False,
- 'max_length': None
- }
- for row in cursor.fetchall():
- if row[0] == column_name:
-
- # maxlength check goes here
- dict['coltype'] = row[1]
- if row[1][0:7]=='varchar':
- dict['max_length'] = row[1][8:len(row[1])-1]
- elif row[1]=='text':
- dict['max_length'] = 65534
- elif row[1]=='longtext':
- dict['max_length'] = 100000000
-
- # f_default flag check goes here
- if row[2]=='YES': dict['allow_null'] = True
- else: dict['allow_null'] = False
-
- # primary/foreign/unique key flag check goes here
- if row[3]=='PRI': dict['primary_key'] = True
- if row[3]=='FOR': dict['foreign_key'] = True
- if row[3]=='UNI': dict['unique'] = True
-
- # print table_name, column_name, dict
- return dict
=======================================
--- /deseb/backends/postgresql.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,308 +0,0 @@
-from deseb.schema_evolution import NotNullColumnNeedsDefaultException
-
-try: set
-except NameError: from sets import Set as set # Python 2.3 fallback
-
-class DatabaseOperations:
- def quote_value(self, s):
- if type(s) is bool:
- if s: return "'t'"
- else: return "'f'"
- if type(s) is int:
- return str(s)
- else:
- return u"'%s'" % unicode(s).replace("'","\'")
-
- def __init__(self, connection, style):
- self.connection = connection
- self.style = style
-
- pk_requires_unique = False
-
- def get_change_table_name_sql( self, table_name, old_table_name ):
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- output.append(
- kw('ALTER TABLE ') + tqn(old_table_name) +
- kw(' RENAME TO ') + tqn(table_name) + ';')
- return output
-
- def get_change_column_name_sql( self, table_name, indexes,
old_col_name, new_col_name, col_type, f ):
- # TODO: only supports a single primary key so far
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- for key in indexes.keys():
- if indexes[key]['primary_key']: pk_name = key
- output = []
- output.append(
- kw('ALTER TABLE ') + tqn(table_name)
- + kw(' RENAME COLUMN ') + fqn(old_col_name)
- + kw(' TO ') + fqn(new_col_name) + ';')
- return output
-
- def get_change_column_def_sql( self, table_name, col_name, col_type,
f, column_flags, f_default, updates ):
- from django.db.models.fields import NOT_PROVIDED
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fct = self.style.SQL_COLTYPE
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- fqv = lambda s: self.style.SQL_FIELD(self.quote_value(s))
- if updates['update_type']:
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ADD COLUMN ') + fqn(col_name+'_tmp') + ' ' +
fct(col_type) + ';' )
- output.append(
- kw('UPDATE ') + tqn(table_name) +
- kw(' SET ') + fqn(col_name+'_tmp') +
- ' = ' + fqn(col_name) + ';' )
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' DROP COLUMN ') + fqn(col_name) + ';' )
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' RENAME COLUMN ') + fqn(col_name+'_tmp') +
- kw(' TO ') + fqn(col_name) + ';' )
- elif updates['update_length']:
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ALTER COLUMN ') + fqn(col_name) +
- kw(' TYPE ')+ fct(col_type) + ';' )
-
- if updates['update_sequences'] and column_flags and 'sequence' in
column_flags:
- seq_name = column_flags['sequence']
- seq_name_correct = table_name+'_'+col_name+'_seq'
- if seq_name != seq_name_correct:
- output.append(
- kw('ALTER TABLE ') + tqn(seq_name) +
- kw(' RENAME TO ') + tqn(seq_name_correct)+';')
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ALTER COLUMN ') + tqn(col_name) +
- kw(' SET DEFAULT nextval(')+
- fqv(seq_name_correct)+'::regclass);')
-
- if updates['update_null']:
- if str(f_default)==str(NOT_PROVIDED) and not f.null:
- details = 'column "%s" of table "%s"' % (col_name,
table_name)
- raise NotNullColumnNeedsDefaultException("when modified "
+ details)
- if str(f_default)!=str(NOT_PROVIDED) and not f.null:
- output.append(
- kw('UPDATE ') + tqn(table_name) +
- kw(' SET ') + fqn(col_name) + ' = ' + fqv(f_default) +
- kw(' WHERE ') + fqn(col_name) + kw(' IS NULL;') )
- if not f.null:
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ALTER COLUMN ') + fqn(col_name) +
- kw(' SET NOT NULL;') )
- elif not updates['update_type']:
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ALTER COLUMN ') + fqn(col_name) +
- kw(' DROP NOT NULL;') )
-
- if updates['update_unique'] and f.unique:
- output.append( kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ADD CONSTRAINT ') +
- table_name + '_' + col_name + '_unique_constraint'+
- kw(' UNIQUE(') + fqn(col_name) + kw(')')+';' )
-
- return output
-
- def get_add_column_sql( self, table_name, col_name, col_type, null,
unique, primary_key, f_default):
- from django.db.models.fields import NOT_PROVIDED
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fct = self.style.SQL_COLTYPE
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- fqv = lambda s: self.style.SQL_FIELD(self.quote_value(s))
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ADD COLUMN ') + fqn(col_name) + ' ' + fct(col_type) + ';'
)
- if primary_key: return output
- if str(f_default)==str(NOT_PROVIDED) and not null:
- details = 'column "%s" into table "%s"' % (col_name,
table_name)
- raise NotNullColumnNeedsDefaultException("when added " +
details)
- if str(f_default)!=str(NOT_PROVIDED) and not null:
- output.append(
- kw('UPDATE ') + tqn(table_name) +
- kw(' SET ') + fqn(col_name) + ' = ' + fqv(f_default) +
- kw(' WHERE ') + fqn(col_name) + kw(' IS NULL;') )
- if not null:
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' ALTER COLUMN ') + fqn(col_name) +
- kw(' SET NOT NULL;') )
- if unique:
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) + kw(' ADD
CONSTRAINT ') +
- table_name + '_' + col_name + '_unique_constraint'+
- kw(' UNIQUE(') + fqn(col_name) + kw(')')+';' )
- return output
-
- def get_drop_column_sql( self, table_name, col_name ):
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- output = []
- output.append(
- kw('ALTER TABLE ') + tqn(table_name) +
- kw(' DROP COLUMN ') + fqn(col_name) + ';' )
- return output
-
- def get_drop_table_sql( self, delete_tables):
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- for table_name in delete_tables:
- output.append(
- kw('DROP TABLE ')+ tqn(table_name) + ' CASCADE;' )
- return output
-
- def get_autoinc_sql(self, table):
- return None
-
-
-class DatabaseIntrospection:
-
- def __init__(self, connection):
- self.connection = connection
-
- def get_schema_fingerprint( self, cursor, app):
- pass
-
- def get_schema_fingerprint_fv1( self, cursor, app):
- pass
-
- def get_columns( self, cursor, table_name):
- try:
- cursor.execute("SELECT column_name FROM
information_schema.columns WHERE table_name = %s",[table_name])
- return [row[0] for row in cursor.fetchall()]
- except:
- return []
-
- def get_known_column_flags_new( self, cursor, table_name, column_name
):
- from django.db.models.fields import NOT_PROVIDED
- dict = {
- 'primary_key': False,
- 'foreign_key': False,
- 'unique': False,
-#DEFAULT 'default': '',
- 'max_length': '',
- 'allow_null': False,
- }
- cursor.execute("""
- SELECT character_maximum_length, is_nullable, column_default,
data_type
- FROM information_schema.columns
- WHERE table_name = %s AND column_name = %s
- AND table_schema != 'pg_catalog' AND
table_schema != 'information_schema'
- """, [table_name,column_name])
- row = cursor.fetchone()
- # maxlength check goes here
- if row[0] != None:
- dict['max_length'] = str(row[0])
- # null flag check goes here
- if row[1] == 'YES':
- dict['allow_null'] = True
-
- if row[3] == 'character varying':
- dict['coltype'] = 'varchar'
- elif row[3]=='text':
- dict['max_length'] = 64000
- dict['coltype'] = 'text'
- else:
- dict['coltype'] = row[3]
- # default value check goes here
- if row[2] and row[2][0:7] == 'nextval':
- if row[2].startswith("nextval('") and
row[2].endswith("'::regclass)"):
- dict['sequence'] = row[2][9:-12]
-#DEFAULT elif row[2][0] == "'":
-#DEFAULT dict['default'] = row[2][1:row[2].index("'",1)]
-#DEFAULT else:
-#DEFAULT dict['default'] = row[2]
-
- cursor.execute("""
- SELECT constraint_name, constraint_type, column_name
- FROM information_schema.table_constraints
- INNER JOIN information_schema.constraint_column_usage u USING
(constraint_name)
- WHERE u.table_name = %s AND u.column_name = %s
- AND NOT (constraint_type = 'UNIQUE' AND 1<(SELECT count(*)
- FROM information_schema.constraint_column_usage
- WHERE constraint_name = u.constraint_name))
- """, [table_name,column_name])
- for row in cursor.fetchall():
- if row[1]=='PRIMARY KEY': dict['primary_key'] = True
- if row[1]=='FOREIGN KEY': dict['foreign_key'] = True
- if row[1]=='UNIQUE': dict['unique']= True
- return dict
-
- def get_known_column_flags_compare( self, cursor, table_name,
column_name ):
- gcfold = self.get_known_column_flags_old(cursor, table_name,
column_name)
- gcfnew = self.get_known_column_flags_new(cursor, table_name,
column_name)
- d1 = [i for i in dict.items() if not i in gcfnew.items()]
- d2 = [i for i in gcfnew.items() if not i in dict.items()]
- if d1 or d2:
- print 'Diff!', d1, '<->', d2
- return gcfold
-
- def get_known_column_flags( self, cursor, table_name, column_name ):
- # print "SELECT a.attname, pg_catalog.format_type(a.atttypid,
a.atttypmod), (SELECT substring(d.adsrc for 128) FROM pg_catalog.pg_attrdef
d WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),
a.attnotnull, a.attnum, pg_catalog.col_description(a.attrelid, a.attnum)
FROM pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid from
pg_catalog.pg_class c where c.relname ~ '^%s$') AND a.attnum > 0 AND NOT
a.attisdropped ORDER BY a.attnum" % table_name
- cursor.execute("SELECT a.attname,
pg_catalog.format_type(a.atttypid, a.atttypmod), (SELECT substring(d.adsrc
for 128) FROM pg_catalog.pg_attrdef d WHERE d.adrelid = a.attrelid AND
d.adnum = a.attnum AND a.atthasdef), a.attnotnull, a.attnum,
pg_catalog.col_description(a.attrelid, a.attnum) FROM
pg_catalog.pg_attribute a WHERE a.attrelid = (SELECT c.oid from
pg_catalog.pg_class c where c.relname ~ '^%s$') AND a.attnum > 0 AND NOT
a.attisdropped ORDER BY a.attnum" % table_name)
- dict = {
- 'primary_key': False,
- 'foreign_key': False,
- 'unique': False,
- 'allow_null': False,
- 'max_length': None
- }
-
- for row in cursor.fetchall():
- if row[0] == column_name:
- # maxlength check goes here
- dict['allow_null'] = not row[3]
- dict['coltype'] = row[1]
- if row[1][0:17]=='character varying':
- dict['max_length'] = str(row[1][18:len(row[1])-1])
- dict['coltype'] = 'varchar'
- elif row[1][0:4]=='text':
- dict['max_length'] = 1000000000
- # null flag check goes here
-
- # pk, fk and unique checks go here
- # print "select pg_constraint.conname, pg_constraint.contype,
pg_attribute.attname from pg_constraint, pg_attribute where
pg_constraint.conrelid=pg_attribute.attrelid and
pg_attribute.attnum=any(pg_constraint.conkey) and
pg_constraint.conname~'^%s'" % table_name
- unique_conname = None
- shared_unique_connames = set()
- cursor.execute("select pg_constraint.conname,
pg_constraint.contype, pg_attribute.attname from pg_constraint,
pg_attribute, pg_class where pg_constraint.conrelid=pg_class.oid and
pg_constraint.conrelid=pg_attribute.attrelid and
pg_attribute.attnum=any(pg_constraint.conkey) and pg_class.relname='%s'" %
table_name )
- for row in cursor.fetchall():
- # print row
- if row[2] == column_name:
- if row[1]=='p': dict['primary_key'] = True
- if row[1]=='f': dict['foreign_key'] = True
- if row[1]=='u': unique_conname = row[0]
- else:
- if row[1]=='u': shared_unique_connames.add( row[0] )
- if unique_conname and unique_conname not in shared_unique_connames:
- dict['unique'] = True
-
- # default value check goes here
- #cursor.execute("SELECT character_maximum_length, is_nullable,
column_default FROM information_schema.columns WHERE table_name = %s AND
column_name = %s" , [table_name,column_name])
- #print 'cursor.fetchall()', cursor.fetchall()
- cursor.execute("select pg_attribute.attname, adsrc from
pg_attrdef, pg_attribute WHERE pg_attrdef.adrelid=pg_attribute.attrelid and
pg_attribute.attnum=pg_attrdef.adnum and pg_attrdef.adrelid = (SELECT c.oid
from pg_catalog.pg_class c where c.relname ~ '^%s$')" % table_name )
- for row in cursor.fetchall():
- if row[0] == column_name:
- if row[1][0:7] == 'nextval':
- if row[1].startswith("nextval('") and
row[1].endswith("'::regclass)"):
- dict['sequence'] = row[1][9:-12]
- continue
-
- return dict
=======================================
--- /deseb/backends/postgresql_psycopg2.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,1 +0,0 @@
-from postgresql import *
=======================================
--- /deseb/backends/sqlite3.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,221 +0,0 @@
-import deseb.schema_evolution
-
-try: set
-except NameError: from sets import Set as set # Python 2.3 fallback
-
-model_create = deseb.schema_evolution.fixed_sql_model_create
-
-class DatabaseOperations:
- def quote_value(self, s):
- if type(s) is bool:
- if s: return "'t'"
- else: return "'f'"
- if type(s) is int:
- return str(s)
- else:
- return u"'%s'" % unicode(s).replace("'", "\'")
-
- def __init__(self, connection, style):
- self.connection = connection
- self.style = style
-
- pk_requires_unique = True
-
- def get_change_table_name_sql(self, table_name, old_table_name):
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- return [kw('ALTER TABLE ') + tqn(old_table_name) +
- kw(' RENAME TO ') + tqn(table_name) + ';']
-
- def get_rebuild_table_sql(self, table_name, indexes, old_columns,
renamed_columns):
- # sqlite doesn't support column renames, so we fake it
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fld = self.style.SQL_FIELD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- fqv = lambda s: self.style.SQL_FIELD(self.quote_value(s))
- model = self.get_model_from_table_name(table_name)
- if not model: return []
- output = []
- output.append('-- FYI: so we create a new ' + qn(table_name) +'
and delete the old ')
- output.append('-- FYI: this could take a while if you have a lot
of data')
-
- tmp_table_name = table_name + '_1337_TMP' # unlikely to produce a
namespace conflict
- output.extend(self.get_change_table_name_sql(tmp_table_name,
table_name))
- output.extend(model_create(model,
self.get_all_models_in_app_from_table_name(table_name), self.style)[0])
-
- old_cols = []
- opts = model._meta
- for f in getattr(opts, 'local_fields', getattr(opts, 'fields',
None)):
- if f.column in old_columns:
- old_cols.append(fqn(f.column))
- elif f.column in renamed_columns:
- old_cols.append(fqn(renamed_columns[f.column]))
- else:
- NOT_PROVIDED = 'django.db.models.fields.NOT_PROVIDED'
- default = f.default
- if default is None or str(default) == NOT_PROVIDED or
callable(default):
- default = ''
- old_cols.append(fqv(default))
-
- output.append(kw('INSERT INTO ') + tqn(table_name) +
- kw(' SELECT ') + fld(','.join(old_cols)) +
- kw(' FROM ') + tqn(tmp_table_name) +';')
- output.append(kw('DROP TABLE ') + tqn(tmp_table_name) +';')
-
- return output
-
- def get_change_column_name_sql( self, table_name, indexes,
old_col_name, new_col_name, col_type, f ):
- # sqlite doesn't support column modifications, so we fake it
- qn = self.connection.ops.quote_name
- model = self.get_model_from_table_name(table_name)
- if not model:
- return ['-- model not found']
- output = []
- output.append('-- FYI: sqlite does not support renaming columns')
- return output
-
- def get_change_column_def_sql(self, table_name, col_name, col_type, f,
column_flags, f_default, updates):
- # sqlite doesn't support column modifications, so we fake it
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fld = self.style.SQL_FIELD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- model = self.get_model_from_table_name(table_name)
- if not model:
- return ['-- model not found']
- output = []
- output.append('-- FYI: sqlite does not support changing columns')
- output.append('-- FYI: have to change "%s"' % col_name)
- return output
-
- def get_add_column_sql(self, table_name, col_name, col_type, null,
unique, primary_key, default):
- # versions >= sqlite 3.2.0, see
http://www.sqlite.org/lang_altertable.html
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- fct = self.style.SQL_COLTYPE
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- fqn = lambda s: self.style.SQL_FIELD(qn(s))
- if unique or primary_key or not null:
- output.append('-- FYI: sqlite does not support adding primary
keys or unique or not null fields')
- else:
- output.append(' '.join(
- [ kw('ALTER TABLE'), tqn(table_name),
- kw('ADD COLUMN'), fqn(col_name), fct(col_type), 'NULL']))
- return output
-
- def get_drop_column_sql(self, table_name, col_name):
- output = []
- output.append('-- FYI: sqlite does not support deleting columns')
- return output
-
- def get_drop_table_sql( self, delete_tables):
- output = []
- qn = self.connection.ops.quote_name
- kw = self.style.SQL_KEYWORD
- tqn = lambda s: self.style.SQL_TABLE(qn(s))
- for table_name in delete_tables:
- output.append(
- kw('DROP TABLE ')+ tqn(table_name) + ';' )
- return output
-
- def get_autoinc_sql(self, table):
- return None
-
- def get_model_from_table_name(self, table_name):
- from django.db import models
- for app in models.get_apps():
- app_name = app.__name__.split('.')[-2]
- if table_name.startswith(app_name):
- for model in models.get_models(app):
- if model._meta.db_table == table_name:
- return model
- return None
-
- def get_all_models_in_app_from_table_name(self, table_name):
- #print 'table_name', table_name
- from django.db import models
- for app in models.get_apps():
- app_name = app.__name__.split('.')[-2]
- if table_name.startswith(app_name):
- for model in models.get_models(app):
- if model._meta.db_table == table_name:
- return set(models.get_models(app))
- return set()
-
-
-class DatabaseIntrospection:
-
- def __init__(self, connection):
- self.connection = connection
-
- def get_schema_fingerprint(self, cursor, app):
- """it's important that the output of these methods don't change,
otherwise the hashes they
- produce will be inconsistent (and detection of existing schemas
will fail. unless you are
- absolutely sure the outout for ALL valid inputs will remain the
same, you should bump the version by creating a new method"""
- return self.get_schema_fingerprint_fv1(cursor, app)
-
- def get_schema_fingerprint_fv1(self, cursor, app):
- from django.db import models
- app_name = app.__name__.split('.')[-2]
-
- schema = ['app_name := '+ app_name]
-
- cursor.execute("select * from sqlite_master where type='table'
order by name;")
- for row in cursor.fetchall():
- table_name = row[1]
- if not table_name.startswith(app_name):
- continue # skip tables not in this app
- table_description = [ s.strip() for s in
row[4].split('\n')[1:-1] ]
- table_description.sort()
- schema.append('table_name := '+ table_name)
- for s in table_description:
- schema.append('\t'+s)
-
- schema_string = '\n'.join(schema)
- #print 'schema_string', schema_string
- return 'fv1:'+ str(schema_string.__hash__())
-
- def get_columns(self, cursor, table_name):
- try:
- qn = self.connection.ops.quote_name
- cursor.execute("PRAGMA table_info(%s)" % qn(table_name))
- return [row[1] for row in cursor.fetchall()]
- except:
- return []
-
- def get_known_column_flags(self, cursor, table_name, column_name):
- qn = self.connection.ops.quote_name
- cursor.execute("PRAGMA table_info(%s)" % qn(table_name))
- dict = {
- 'primary_key': False,
- 'foreign_key': False,
- 'unique': False,
- 'allow_null': False,
- 'max_length': None
- }
-
- for row in cursor.fetchall():
- # print row
- if row[1] == column_name:
- col_type = row[2]
-
- # maxlength check goes here
- dict['coltype'] = col_type
- if row[2][0:7]=='varchar':
- dict['max_length'] = row[2][8:len(row[2])-1]
- # f_default flag check goes here
- dict['allow_null'] = (row[3]==0)
-
- cursor.execute("select sql from sqlite_master where name=%s;" %
qn(table_name))
- for row in cursor.fetchall():
- table_description = [ s.strip() for s in
row[0].split('\n')[1:-1] ]
- for column_description in table_description:
- if column_description.startswith('"'+column_name+'"'):
- dict['primary_key'] = column_description.find('
PRIMARY KEY')>-1
- dict['unique'] = column_description.find(' UNIQUE')>-1
- # print dict
- return dict
=======================================
--- /deseb/management/commands/evolvedb.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,47 +0,0 @@
-from django.core.management.base import AppCommand
-from optparse import make_option
-
-class Command(AppCommand):
- option_list = AppCommand.option_list + (
- make_option('--noinput', action='store_false', dest='interactive',
default=True,
- help='Tells Django to NOT prompt the user for input of any
kind.'),
- make_option('--dont-save', action='store_false', dest='do_save',
default=True,
- help='Don\'t save evolution to schema_evolution.py near to
models.py.'),
- make_option('--dont-notify', action='store_false',
dest='do_notify', default=True,
- help='Don\'t save evolution to schema_evolution.py near to
models.py.'),
- make_option('--managed-upgrades-only', action='store_true',
dest='managed_upgrade_only', default=False,
- help='Only use upgrades found in app_name/schema_evolution.py
(recommended for deployments)'),
- )
- help = """Interactively runs the SQL statements to non-destructively
-bring your schema into compliance with your models.
-See: http://code.google.com/p/deseb/wiki/Usage"""
-
- output_transaction = True
-
- def handle(self, *app_labels, **options):
- from django.db import connection
- from django.db.models.loading import get_apps
- all_apps = get_apps()
- run_apps = []
-
- if app_labels:
- for app in all_apps:
- app_name = app.__name__.split('.')[-2]
- if app_name in app_labels:
- run_apps.append(app)
- else:
- run_apps = all_apps
-
- cursor = connection.cursor()
-
- for app in run_apps:
- if app.__name__.startswith('django'): continue
- self.handle_app(app, **options)
-
- def handle_app(self, app, **options):
- import deseb.schema_evolution
- deseb.schema_evolution.evolvedb(app,
- options.get('interactive', True),
- options.get('do_save', True),
- options.get('do_notify', True),
- options.get('managed_upgrade_only', False))
=======================================
--- /deseb/management/commands/fingerprint.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.core.management.base import AppCommand
-
-class Command(AppCommand):
- help = """Prints the app fingerprints
-See: http://code.google.com/p/deseb/wiki/Usage"""
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- import deseb.schema_evolution
- deseb.schema_evolution.get_sql_fingerprint(app, self.style)
=======================================
--- /deseb/management/commands/sqlevolve.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,39 +0,0 @@
-from django.core.management.base import AppCommand
-from optparse import make_option
-
-class Command(AppCommand):
- help = """Prints the ALTER TABLE SQL statements for the given app
name(s), in order to
-non-destructively bring them into compliance with your models.
-See: http://code.google.com/p/deseb/wiki/Usage"""
- option_list = AppCommand.option_list + (
- make_option('--dont-notify', action='store_false',
dest='do_notify', default=True,
- help='Don\'t save evolution to schema_evolution.py near to
models.py.'),
- )
-
- output_transaction = True
-
- def handle(self, *app_labels, **options):
- from django.db.models.loading import get_apps
- all_apps = get_apps()
- run_apps = []
-
- if app_labels:
- for app in all_apps:
- app_name = app.__name__.split('.')[-2]
- if app_name in app_labels:
- run_apps.append(app)
- else:
- run_apps = all_apps
-
- output = []
- for app in run_apps:
- app_output = self.handle_app(app, **options)
- if app_output:
- output.append(app_output)
- return '\n'.join(output)
-
- def handle_app(self, app, **options):
- import deseb.schema_evolution
- output = deseb.schema_evolution.get_sql_evolution(app, self.style,
- options.get('do_notify', True))
- return '\n'.join(output)
=======================================
--- /deseb/schema_evolution.py Wed Jan 21 14:35:31 2009
+++ /dev/null
@@ -1,724 +0,0 @@
-from django.core.exceptions import ImproperlyConfigured
-from optparse import OptionParser
-from django.utils import termcolors
-from django.conf import settings
-
-import os, re, shutil, sys, textwrap, datetime, traceback
-try:
- import django.core.management.sql as management
- from django.core.management import color
- version = 'trunk'
-except ImportError:
- # v0.96 compatibility
- import django.core.management as management
- management.installed_models = management._get_installed_models
- class color_class:
- def color_style(self):
- return management.style
- def no_style(self):
- class no_style:
- def __getattr__(self, attr):
- return lambda x: x
- return no_style()
- color = color_class()
- version = '0.96'
-
-try:
- from django.db import connection
- management.installed_models = connection.creation.installed_models
-except AttributeError:
- pass
-
-try: set
-except NameError: from sets import Set as set # Python 2.3 fallback
-
-class NotNullColumnNeedsDefaultException(Exception): pass
-class MultipleRenamesPossibleException(Exception): pass
-
-DEBUG = False
-
-def get_operations_and_introspection_classes(style):
- from django.db import backend, connection
-
- try: # v0.96 compatibility
- v0_96_quote_name = backend.quote_name
- class dummy: pass
- setattr(connection, 'ops', dummy())
- setattr(connection.ops, 'quote_name', v0_96_quote_name)
- except:
- pass
-
- backend_type = str(connection.__class__).split('.')[3]
- if backend_type=='mysql': import deseb.backends.mysql as backend
- elif backend_type=='postgresql': import deseb.backends.postgresql as
backend
- elif backend_type=='postgresql_psycopg2': import
deseb.backends.postgresql_psycopg2 as backend
- elif backend_type=='sqlite3': import deseb.backends.sqlite3 as backend
- else: raise Exception('backend '+ backend_type +' not supported yet -
sorry!')
- ops = backend.DatabaseOperations(connection, style)
- introspection = backend.DatabaseIntrospection(connection)
- return ops, introspection
-
-def get_sql_indexes_for_field(model, f, style):
- "Returns the CREATE INDEX SQL statement for a single field"
- from django.db import backend, connection
- output = []
- if f.db_index and not ((f.primary_key or f.unique) and
connection.features.autoindexes_primary_keys):
- unique = f.unique and 'UNIQUE ' or ''
- try:
- tablespace = f.db_tablespace or model._meta.db_tablespace
- except: # v0.96 compatibility
- tablespace = None
- if tablespace and backend.supports_tablespaces:
- tablespace_sql = ' ' + backend.get_tablespace_sql(tablespace)
- else:
- tablespace_sql = ''
- output.append(
- style.SQL_KEYWORD('CREATE %sINDEX' % unique) + ' ' + \
- style.SQL_TABLE(connection.ops.quote_name('%s_%s' %
(model._meta.db_table, f.column))) + ' ' + \
- style.SQL_KEYWORD('ON') + ' ' + \
-
style.SQL_TABLE(connection.ops.quote_name(model._meta.db_table)) + ' ' + \
- "(%s)" % style.SQL_FIELD(connection.ops.quote_name(f.column))
+ \
- "%s;" % tablespace_sql
- )
- return output
-
-def get_sql_evolution_check_for_new_fields(model, old_table_name, style):
- "checks for model fields that are not in the existing data structure"
- from django.db import connection
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- data_types = connection.creation.data_types
- cursor = connection.cursor()
-# introspection = ops = get_ops_class(connection)
- opts = model._meta
- output = []
- db_table = model._meta.db_table
- if old_table_name:
- db_table = old_table_name
- existing_fields = introspection.get_columns(cursor,db_table)
- for f in getattr(opts, 'local_fields', getattr(opts, 'fields', None)):
- if f.column not in existing_fields and (not f.aka or f.aka not in
existing_fields and len(set(f.aka) & set(existing_fields))==0):
- col_type = f.db_type()
- if col_type is not None:
- output.extend( ops.get_add_column_sql(
model._meta.db_table, f.column, style.SQL_COLTYPE(col_type), f.null,
f.unique, f.primary_key, f.default ) )
- if settings.DATABASE_ENGINE == 'sqlite3':
- if f.unique or f.primary_key or not f.null:
- continue
- output.extend( get_sql_indexes_for_field(model, f, style) )
- return output
-
-def get_sql_evolution_check_for_changed_model_name(klass, style):
- from django.db import connection
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- cursor = connection.cursor()
- introspection = connection.introspection
-# ops = get_ops_class(connection)
- table_list = introspection.get_table_list(cursor)
- if klass._meta.db_table in table_list:
- return [], None
- aka_db_tables = set()
- if klass._meta.aka:
- for x in klass._meta.aka:
- aka_db_tables.add( "%s_%s" % (klass._meta.app_label,
x.lower()) )
- matches = list(aka_db_tables & set(table_list))
- if len(matches)==1:
- return ops.get_change_table_name_sql( klass._meta.db_table,
matches[0]), matches[0]
- else:
- return [], None
-
-def get_sql_evolution_check_for_changed_field_name(klass, old_table_name,
style):
- from django.db import connection
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- cursor = connection.cursor()
- opts = klass._meta
- output = []
- db_table = klass._meta.db_table
- if old_table_name:
- db_table = old_table_name
- for f in getattr(opts, 'local_fields', getattr(opts, 'fields', None)):
- existing_fields = introspection.get_columns(cursor,db_table)
- if f.column in existing_fields:
- old_col = f.column
- elif f.aka and
len(set(f.aka).intersection(set(existing_fields)))==1:
- old_col = set(f.aka).intersection(set(existing_fields)).pop()
- elif f.aka and
len(set(f.aka).intersection(set(existing_fields)))>1:
- details = 'column "%s" of table "%s"' % (f.column,
klass._meta.db_table)
- raise MultipleRenamesPossibleException("when renamed " +
details)
- else:
- continue
- if old_col != f.column:
- col_type = f.db_type()
- col_type_def = style.SQL_COLTYPE(col_type)
- if col_type is not None:
- col_def = style.SQL_COLTYPE(col_type) +' '+
style.SQL_KEYWORD('%sNULL' % (not f.null and 'NOT ' or ''))
- if f.unique and not f.primary_key:
- col_def += style.SQL_KEYWORD(' UNIQUE')
- if f.primary_key:
- col_def += style.SQL_KEYWORD(' PRIMARY KEY')
- output.extend( ops.get_change_column_name_sql(
klass._meta.db_table,
connection.introspection.get_indexes(cursor,db_table), old_col, f.column,
col_type_def, f ) )
- return output
-
-def get_sql_evolution_rebuild_table(klass, old_table_name, style):
- from django.db import connection
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- cursor = connection.cursor()
- opts = klass._meta
- output = []
- db_table = klass._meta.db_table
- if old_table_name:
- db_table = old_table_name
-
- existing_fields = introspection.get_columns(cursor,db_table)
- renamed_fields = {}
-
- for f in getattr(opts, 'local_fields', getattr(opts, 'fields', None)):
- if f.column in existing_fields:
- old_col = f.column
- elif f.aka and
len(set(f.aka).intersection(set(existing_fields)))==1:
- old_col = set(f.aka).intersection(set(existing_fields)).pop()
- elif f.aka and
len(set(f.aka).intersection(set(existing_fields)))>1:
- details = 'column "%s" of table "%s"' % (f.column,
klass._meta.db_table)
- raise MultipleRenamesPossibleException("when renamed " +
details)
- else:
- continue
- if old_col != f.column:
- renamed_fields[f.column] = old_col
-
- output.extend( ops.get_rebuild_table_sql( klass._meta.db_table,
connection.introspection.get_indexes(cursor,db_table), existing_fields,
renamed_fields) )
- return output
-
-def get_field_default(f):
- from django.db.models.fields import NOT_PROVIDED
- if callable(f.default): return NOT_PROVIDED
- return f.default
-
-def get_field_type(f):
- f = f.split('(')[0].split(' ')[0]
- if f in ['integer', 'serial']: return 'int'
- if f in ['tinyint']: return 'bool'
- if f in ['decimal']: return 'numeric'
- return f
-
-def compare_field_length(f, column_flags):
- from django.db.models.fields import CharField, SlugField
- f_maxlength = str(getattr(f, 'maxlength',
getattr(f, 'max_length', '')))
- db_maxlength = str(column_flags.get('max_length', 64000))
- return( not f.primary_key and isinstance(f, CharField) and
db_maxlength!= f_maxlength) or \
- ( not f.primary_key and isinstance(f, SlugField) and
db_maxlength!= f_maxlength)
-
-def get_sql_evolution_check_for_changed_field_flags(klass, old_table_name,
style):
- ops, introspection = get_operations_and_introspection_classes(style)
-
- from django.db import connection
- data_types = connection.creation.data_types
- cursor = connection.cursor()
-# introspection = ops = get_ops_class(connection)
- opts = klass._meta
- output = []
- db_table = klass._meta.db_table
- if old_table_name:
- db_table = old_table_name
- for f in getattr(opts, 'local_fields', getattr(opts, 'fields', None)):
- existing_fields = introspection.get_columns(cursor,db_table)
- #existing_relations = introspection.get_relations(cursor,db_table)
- cf = None # current field, ie what it is before any renames
- if f.column in existing_fields:
- cf = f.column
- f_col_type = f.db_type()
- elif f.aka and
len(set(f.aka).intersection(set(existing_fields)))==1:
- cf = set(f.aka).intersection(set(existing_fields)).pop()
- #hack
- tempname = f.column
- f.column = cf
- f_col_type = f.db_type()
- f.column = tempname
- else:
- continue # no idea what column you're talking about - should
be handled by get_sql_evolution_check_for_new_fields())
- data_type = f.get_internal_type()
- if data_types.has_key(data_type):
- #print cf, data_type, f_col_type
- is_postgresql = settings.DATABASE_ENGINE in
['postgresql', 'postgresql_psycopg2']
- column_flags = introspection.get_known_column_flags(cursor,
db_table, cf)
- update_length = compare_field_length(f, column_flags)
- update_type = get_field_type(column_flags['coltype']) !=
get_field_type(f_col_type)
- if DEBUG and update_type:
- print get_field_type(column_flags['coltype']), '->',
get_field_type(f_col_type)
- update_unique = ( column_flags['unique']!=f.unique and not
(f.primary_key) )
- update_null = column_flags['allow_null'] != f.null and not
f.primary_key
- update_primary = column_flags['primary_key']!=f.primary_key
- update_sequences = False
- if column_flags.has_key('sequence'):
- correct_seq_name = klass._meta.db_table+"_"+cf+'_seq'
- update_sequences = column_flags['sequence'] !=
correct_seq_name
- #if DEBUG and update_length:
- # print f_col_type, column_flags['coltype'],
column_flags['maxlength']
- if update_type or update_null or update_length or
update_unique or update_primary or update_sequences:
- #print "cf, f.default, column_flags['default']", cf,
f.default, column_flags['default'], f.default.__class__
- f_default = get_field_default(f)
- updates = {
- 'update_type': update_type,
- 'update_length': update_length,
- 'update_unique': update_unique,
- 'update_null': update_null,
- 'update_primary': update_primary,
- 'update_sequences': update_sequences,
- }
- output.extend( ops.get_change_column_def_sql(
klass._meta.db_table, cf, f_col_type, f, column_flags, f_default, updates )
)
- return output
-
-def get_sql_evolution_check_for_dead_fields(klass, old_table_name, style):
- from django.db import connection
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- cursor = connection.cursor()
-# introspection = ops = get_ops_class(connection)
- opts = klass._meta
- output = []
- db_table = klass._meta.db_table
- if old_table_name:
- db_table = old_table_name
- suspect_fields = set(introspection.get_columns(cursor,db_table))
-# print 'suspect_fields = ', suspect_fields
- for f in getattr(opts, 'local_fields', getattr(opts, 'fields', None)):
-# print 'f = ', f
-# print 'f.aka = ', f.aka
- suspect_fields.discard(f.column)
- suspect_fields.discard(f.aka)
- if f.aka: suspect_fields.difference_update(f.aka)
- if len(suspect_fields)>0:
- output.append( '-- warning: the following may cause data loss' )
- for suspect_field in suspect_fields:
- output.extend( ops.get_drop_column_sql( klass._meta.db_table,
suspect_field ) )
- output.append( '-- end warning' )
- return output
-
-def get_sql_evolution_check_for_dead_models(table_list, safe_tables,
app_name, app_models, style):
- from django.db import connection
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- if not app_models: return []
- app_label = app_models[0]._meta.app_label
- safe_tables = set(safe_tables)
- for model in app_models:
- for f in model._meta.many_to_many:
- safe_tables.add(f.m2m_db_table())
- try:
- app_se = __import__(app_name +'.schema_evolution').schema_evolution
- for table_name in app_se.protected_tables:
- safe_tables.add(table_name)
- safe_tables.add(app_label +'_'+ table_name)
- except:
- pass
- delete_tables = set()
- for t in table_list:
- if t.startswith(app_label) and not t in safe_tables:
- delete_tables.add(t)
- return ops.get_drop_table_sql(delete_tables)
-
-def get_sql_evolution_v0_96(app, do_notify=True):
- return get_sql_evolution(app, management.style, do_notify)
-
-def run_sql_evolution_v0_96(app, interactive=True, do_save=True,
do_notify=True):
- return evolvedb(app, interactive, do_save, do_notify)
-
-def get_sql_evolution(app, style, notify=True):
- "Returns SQL to update an existing schema to match the existing
models."
- return get_sql_evolution_detailed(app, style, notify)[2]
-
-def get_sql_evolution_detailed(app, style, notify):
- "Returns SQL to update an existing schema to match the existing
models."
-
- ops, introspection = get_operations_and_introspection_classes(style)
- from django.db import connection
- cursor = connection.cursor()
- app_name = app.__name__.split('.')[-2]
-
- final_output = []
-
- schema_fingerprint = introspection.get_schema_fingerprint(cursor, app)
- schema_recognized, all_upgrade_paths, available_upgrades, best_upgrade
= get_managed_evolution_options(app, schema_fingerprint, style, notify)
- if schema_recognized:
- if notify: sys.stderr.write(style.NOTICE("deseb: Current
schema fingerprint for '%s' is '%s' (recognized)\n" % (app_name,
schema_fingerprint)))
- if best_upgrade:
- final_output.extend( best_upgrade[2] )
- return schema_fingerprint, False, final_output
- else:
- if notify: sys.stderr.write(style.NOTICE("deseb: Current schema
fingerprint for '%s' is '%s' (unrecognized)\n" % (app_name,
schema_fingerprint)))
-
- final_output.extend( get_introspected_evolution_options(app, style) )
-
- return schema_fingerprint, True, final_output
-
-
-def fixed_sql_model_create(model, known_models, style):
- if version == 'trunk':
- from django.db import connection
- return connection.creation.sql_create_model( model, style,
known_models )
- else:
- return management._get_sql_model_create( model, known_models )
-
-def _get_many_to_many_sql_for_field(model, f, style):
- from django.db import backend, models, connection
- try:
- from django.contrib.contenttypes import generic
- except: # v0.96 compatibility
- from django.db.models.fields import generic #@UnresolvedImport
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- opts = model._meta
- final_output = []
- if not isinstance(f.rel, generic.GenericRel):
- try:
- tablespace = f.db_tablespace or opts.db_tablespace
- except: # v0.96 compatibility
- tablespace = None
- if tablespace and backend.supports_tablespaces and
connection.features.autoindexes_primary_keys:
- tablespace_sql = ' ' + backend.get_tablespace_sql(tablespace,
inline=True)
- else:
- tablespace_sql = ''
- table_output = [style.SQL_KEYWORD('CREATE TABLE') + ' ' + \
- style.SQL_TABLE(connection.ops.quote_name(f.m2m_db_table()))
+ ' (']
- table_output.append(' %s %s %s%s,' % \
- (style.SQL_FIELD(connection.ops.quote_name('id')),
-
style.SQL_COLTYPE(models.AutoField(primary_key=True).db_type()),
- style.SQL_KEYWORD('NOT NULL PRIMARY KEY'),
- tablespace_sql))
- table_output.append(' %s %s %s %s (%s)%s,' % \
-
(style.SQL_FIELD(connection.ops.quote_name(f.m2m_column_name())),
- style.SQL_COLTYPE(models.ForeignKey(model).db_type()),
- style.SQL_KEYWORD('NOT NULL REFERENCES'),
- style.SQL_TABLE(connection.ops.quote_name(opts.db_table)),
- style.SQL_FIELD(connection.ops.quote_name(opts.pk.column)),
-# backend.get_deferrable_sql()))
- ''))
- table_output.append(' %s %s %s %s (%s)%s,' % \
-
(style.SQL_FIELD(connection.ops.quote_name(f.m2m_reverse_name())),
- style.SQL_COLTYPE(models.ForeignKey(f.rel.to).db_type()),
- style.SQL_KEYWORD('NOT NULL REFERENCES'),
-
style.SQL_TABLE(connection.ops.quote_name(f.rel.to._meta.db_table)),
-
style.SQL_FIELD(connection.ops.quote_name(f.rel.to._meta.pk.column)),
-# backend.get_deferrable_sql()))
- ''))
- table_output.append(' %s (%s, %s)%s' % \
- (style.SQL_KEYWORD('UNIQUE'),
-
style.SQL_FIELD(connection.ops.quote_name(f.m2m_column_name())),
-
style.SQL_FIELD(connection.ops.quote_name(f.m2m_reverse_name())),
- tablespace_sql))
- table_output.append(')')
- try:
- if opts.db_tablespace and backend.supports_tablespaces:
- # f.db_tablespace is only for indices, so ignore its value
here.
-
table_output.append(backend.get_tablespace_sql(opts.db_tablespace))
- except: # v0.96 compatibility
- pass
- table_output.append(';')
- final_output.append('\n'.join(table_output))
-
- # Add any extra SQL needed to support auto-incrementing PKs
- autoinc_sql = ops.get_autoinc_sql(f.m2m_db_table())
- if autoinc_sql:
- for stmt in autoinc_sql:
- final_output.append(stmt)
-
- return final_output
-
-def get_fingerprints_evolutions_from_app(app, style, notify):
- from django.conf import settings
- try:
- app_name = app.__name__.split('.')[-2]
- app_se = __import__(app_name +'.schema_evolution').schema_evolution
- evolutions_list =
app_se.__getattribute__(settings.DATABASE_ENGINE+'_evolutions')
- evolutions = {}
- fingerprints = []
- end_fingerprints = []
- for x in evolutions_list:
- if evolutions.has_key(x[0]):
- if notify: sys.stderr.write(style.NOTICE("Warning:
Fingerprint mapping %s is defined twice in %s.schema_evolution\n" %
(str(x[0]),app_name)))
- else:
- evolutions[x[0]] = x[1:]
- if x[0][0] not in fingerprints:
- fingerprints.append(x[0][0])
- if x[0][1] not in fingerprints and x[0][1] not in
end_fingerprints:
- end_fingerprints.append(x[0][1])
- fingerprints.extend(end_fingerprints)
- return fingerprints, evolutions
- except:
- return [], {}
-
-def get_sql_fingerprint_v0_96(app):
- return get_sql_fingerprint(app, management.style)
-
-def get_sql_fingerprint(app, style, notify=True):
- "Returns the fingerprint of the current schema, used in schema
evolution."
- from django.db import connection
- # This should work even if a connecton isn't available
- try:
- cursor = connection.cursor()
- except:
- cursor = None
-
- ops, introspection = get_operations_and_introspection_classes(style)
-
- app_name = app.__name__.split('.')[-2]
- schema_fingerprint = introspection.get_schema_fingerprint(cursor, app)
- try:
- fingerprints, evolutions =
get_fingerprints_evolutions_from_app(app, style, notify)
- # is this a schema we recognize?
- schema_recognized = schema_fingerprint in fingerprints
- if schema_recognized:
- if notify: sys.stderr.write(style.NOTICE("deseb: Current
schema fingerprint for '%s' is '%s' (recognized)\n" % (app_name,
schema_fingerprint)))
- else:
- if notify: sys.stderr.write(style.NOTICE("deseb: Current
schema fingerprint for '%s' is '%s' (unrecognized)\n" % (app_name,
schema_fingerprint)))
- except:
- traceback.print_exc()
- if notify: sys.stderr.write(style.NOTICE("deseb: Current schema
fingerprint for '%s' is '%s' (no schema_evolution module found)\n" %
(app_name, schema_fingerprint)))
- return
-
-def get_sql_all(app, style):
- return management.sql_all(app, style)
-
-def get_managed_evolution_options(app, schema_fingerprint, style, notify):
- # return schema_recognized, available_upgrades, best_upgrade
-# try:
- # is this a schema we recognize?
- fingerprints, evolutions =
get_fingerprints_evolutions_from_app(app, style, notify)
- schema_recognized = schema_fingerprint in fingerprints
- if schema_recognized:
- available_upgrades = []
- all_upgrade_paths = set()
- for (vfrom, vto), upgrade in evolutions.iteritems():
- all_upgrade_paths.add( (vfrom, vto) )
- if vfrom == schema_fingerprint:
- distance =
fingerprints.index(vto)-fingerprints.index(vfrom)
- available_upgrades.append( ( vfrom, vto, upgrade,
distance ) )
- if len(available_upgrades):
- best_upgrade = available_upgrades[0]
- for an_upgrade in available_upgrades:
- if an_upgrade[3] > best_upgrade[3]:
- best_upgrade = an_upgrade
- return schema_recognized, all_upgrade_paths,
available_upgrades, best_upgrade
- else:
- return schema_recognized, all_upgrade_paths,
available_upgrades, None
- else:
- return False, set(), [], None
-# except:
-# print sys.exc_info()[0]
-# return False, [], None
-
-def get_introspected_evolution_options(app, style):
- ops, introspection = get_operations_and_introspection_classes(style)
- from django.db import models, connection
- cursor = connection.cursor()
- app_name = app.__name__.split('.')[-2]
-
- final_output = []
-
- table_list = connection.introspection.get_table_list(cursor)
- seen_models = connection.introspection.installed_models(table_list)
- created_models = set()
- final_output = []
-
- seen_tables = set()
-
- model_list = models.get_models(app)
- for model in model_list:
- # Create the model's database table, if it doesn't already exist.
- aka_db_tables = set()
- if model._meta.aka:
- for x in model._meta.aka:
- aka_db_tables.add( "%s_%s" % (model._meta.app_label,
x.lower()) )
- if model._meta.db_table in table_list or len(aka_db_tables &
set(table_list))>0:
- continue #renamed
- sql, references = fixed_sql_model_create(model, seen_models, style)
- final_output.extend(sql)
- seen_models.add(model)
- created_models.add(model)
- table_list.append(model._meta.db_table)
- seen_tables.add(model._meta.db_table)
-
- # get the existing models, minus the models we've just created
- app_models = models.get_models(app)
- for model in created_models:
- if model in app_models:
- app_models.remove(model)
-
- for model in app_models:
- if model._meta.db_table:
- seen_tables.add(model._meta.db_table)
- output, old_table_name =
get_sql_evolution_check_for_changed_model_name(model, style)
- if old_table_name: seen_tables.add(old_table_name)
- final_output.extend(output)
-
- rebuild = False
- output = get_sql_evolution_check_for_changed_field_flags(model,
old_table_name, style)
- if output and settings.DATABASE_ENGINE == 'sqlite3': rebuild = True
- final_output.extend(output)
-
- output = get_sql_evolution_check_for_changed_field_name(model,
old_table_name, style)
- final_output.extend(output)
- if output and settings.DATABASE_ENGINE == 'sqlite3': rebuild = True
-
- output = get_sql_evolution_check_for_new_fields(model,
old_table_name, style)
- if output and settings.DATABASE_ENGINE == 'sqlite3': rebuild = True
- final_output.extend(output)
-
- output = get_sql_evolution_check_for_dead_fields(model,
old_table_name, style)
- if output and settings.DATABASE_ENGINE == 'sqlite3': rebuild = True
- final_output.extend(output)
-
- if rebuild:
- output = get_sql_evolution_rebuild_table(model,
old_table_name, style)
- final_output.extend(output)
-
- for model in app_models + list(created_models):
- for f in model._meta.many_to_many:
- #creating many_to_many table
- if not f.m2m_db_table() in
connection.introspection.get_table_list(cursor):
- final_output.extend(
_get_many_to_many_sql_for_field(model, f, style) )
- seen_tables.add(f.m2m_db_table())
- output = get_sql_evolution_check_for_dead_models(table_list,
seen_tables, app_name, app_models, style)
- final_output.extend(output)
-
- return final_output
-
-
-def save_managed_evolution( app, commands, schema_fingerprint,
new_schema_fingerprint ):
- from django.conf import settings
- app_name = app.__name__.split('.')[-2]
-
- # find path to app
- se_file = None
- for p in sys.path:
- if os.path.isdir( os.path.join( p, app_name ) ) and
app_name!='deseb':
- se_file = os.path.join( p, app_name, 'schema_evolution.py' )
-
- if os.path.isfile(se_file):
- file = open(se_file, 'r')
- contents = file.readlines()
- else:
- contents = []
-
- insertion_point = None
- for i in range(0, len(contents)):
- if contents[i].strip().endswith("## "+ settings.DATABASE_ENGINE
+"_evolutions_end ##"):
- insertion_point = i
- if insertion_point==None:
- contents.extend( [
- "\n",
- "# all of your evolution scripts, mapping the from_version and
to_version to a list if sql commands\n",
- settings.DATABASE_ENGINE +"_evolutions = [\n",
- "] # don't delete this comment! ## "+ settings.DATABASE_ENGINE
+"_evolutions_end ##\n",
- ])
- insertion_point = len(contents) - 1
-
- contents.insert( insertion_point, ' ],\n' )
- for i in range( len(commands)-1, -1, -1 ):
- contents.insert( insertion_point, ' "'+
commands[i].replace('"','\\"').replace('\n','\\n') +'",\n' )
- contents.insert( insertion_point, " [('%s','%s'), #
generated %s\n" % (schema_fingerprint, new_schema_fingerprint,
datetime.datetime.now()) )
-
- file = open(se_file, 'w')
- file.writelines(contents)
-
-def evolvedb(app, interactive=True, do_save=False, do_notify=True,
managed_upgrade_only=False):
- from django.db import connection
- cursor = connection.cursor()
-
- style = color.no_style()
- ops, introspection = get_operations_and_introspection_classes(style)
- app_name = app.__name__.split('.')[-2]
-
- last_schema_fingerprint = None
- seen_schema_fingerprints = set()
-
- fingerprints, evolutions = get_fingerprints_evolutions_from_app(app,
style, do_notify)
- if fingerprints and evolutions:
- if do_notify:
- print 'deseb: %s.schema_evolution module found (%i
fingerprints, %i evolutions)' % (app_name, len(fingerprints),
len(evolutions))
-
- while True:
- commands = []
- commands_color = []
-
- schema_fingerprint = introspection.get_schema_fingerprint(cursor,
app)
- schema_recognized, all_upgrade_paths, available_upgrades,
best_upgrade = get_managed_evolution_options(app, schema_fingerprint,
style, do_notify)
- if fingerprints and evolutions:
- if schema_recognized:
- if do_notify or interactive: print "deseb: fingerprint
for '%s' is '%s' (recognized)" % (app_name, schema_fingerprint)
- else:
- if do_notify or interactive: print "deseb: fingerprint
for '%s' is '%s' (unrecognized)" % (app_name, schema_fingerprint)
- managed_upgrade = schema_recognized and available_upgrades and
best_upgrade and best_upgrade[3]>0
- if managed_upgrade:
- if do_notify or interactive:
- print "\t and a managed schema upgrade to '%s' is
available:" % best_upgrade[1], best_upgrade[3]
- commands_color = commands = best_upgrade[2]
- elif not managed_upgrade_only:
- commands = get_introspected_evolution_options(app, style)
- commands_color = get_introspected_evolution_options(app,
color.color_style())
- if interactive:
- if commands:
- print '%s: the following schema upgrade is
available:' % app_name
- # else:
- # print '%s: schema is up to date' % app_name
-
- if commands:
- if interactive or DEBUG:
- for cmd in commands_color:
- print cmd
- else:
- break
-
- if interactive:
- confirm = raw_input("do you want to run the preceeding
commands?\ntype 'yes' to continue, or 'no' to cancel: ")
- else:
- confirm = 'yes'
-
- if confirm == 'yes':
- connection._commit() # clean previous commands run state
- for cmd in commands:
- if cmd[:3] != '-- ':
- cursor.execute(cmd)
- connection._commit() # commit changes
- if interactive: print 'schema upgrade executed'
- new_schema_fingerprint =
introspection.get_schema_fingerprint(cursor, app)
-
- if schema_fingerprint==new_schema_fingerprint:
- print "schema fingerprint was unchanged - this really
shouldn't happen"
- else:
- if commands and not managed_upgrade and
(schema_fingerprint,new_schema_fingerprint) not in all_upgrade_paths:
- if interactive and do_save:
- confirm = raw_input("do you want to save these
commands in %s.schema_evolution?\ntype 'yes' to continue, or 'no' to
cancel: " % app_name)
- else:
- confirm = 'yes'
- if do_save and confirm == 'yes':
- save_managed_evolution( app, commands,
schema_fingerprint, new_schema_fingerprint )
-
- if not managed_upgrade: break
- else:
- if interactive: print 'schema not saved'
- break
-
- seen_schema_fingerprints.add(schema_fingerprint)
- schema_fingerprint = new_schema_fingerprint
-
- if managed_upgrade:
- if schema_fingerprint==best_upgrade[1]:
- if do_notify: print '\tfingerprint verification successful'
- else:
- if do_notify: print "\tfingerprint verification failed
(is '%s'; was expecting '%s')" % (schema_fingerprint, best_upgrade[1])
- break
-
- print
-
- if schema_fingerprint in seen_schema_fingerprints:
- break
-
=======================================
--- /gpapers/__init__.py Sun Jun 3 15:19:48 2012
+++ /gpapers/__init__.py Sun Jun 3 15:20:46 2012
@@ -2793,11 +2793,6 @@
def init_db():
import django.core.management.commands.syncdb

django.core.management.commands.syncdb.Command().handle_noargs(interactive=False)
- for app in models.get_apps():
- app_name = app.__name__.split('.')[-2]
- if app_name == 'gPapers':
- import deseb.schema_evolution
- deseb.schema_evolution.evolvedb(app, interactive=False,
managed_upgrade_only=True)


def main(argv):
=======================================
--- /setup.py Sun Jun 3 15:19:48 2012
+++ /setup.py Sun Jun 3 15:20:46 2012
@@ -46,7 +46,7 @@
author='Derek Anderson',
author_email='pub...@kered.org',
url='http://gpapers.org/',
- packages=['gpapers', 'deseb'],
+ packages=['gpapers'],
package_data = {'gpapers': ['data/*', 'icons/*']},
scripts=['gpapers.py'],
#TODO: desktop file

==============================================================================
Revision: 285d81357a5c
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:21:17 2012
Log: use os.path.join for constructing paths
http://code.google.com/p/gpapers/source/detail?r=285d81357a5c

Modified:
/gpapers/__init__.py

=======================================
--- /gpapers/__init__.py Sun Jun 3 15:20:46 2012
+++ /gpapers/__init__.py Sun Jun 3 15:21:17 2012
@@ -543,7 +543,7 @@
'jstor' : jstor.JSTORSearch()}
self.displayed_paper = None
self.ui = Gtk.Builder()
- self.ui.add_from_file(BASE_DIR + 'data/ui.xml')
+ self.ui.add_from_file(os.path.join(BASE_DIR, 'data', 'ui.xml'))
self.main_window = self.ui.get_object('main_window')
self.main_window.connect("delete-event", lambda x, y: sys.exit(0))
self.init_menu()
@@ -2134,7 +2134,7 @@
else:
self.author = Author.objects.get(id=author_id)
self.ui = Gtk.Builder()
- self.ui.add_from_file(BASE_DIR + 'data/author_edit_gui.xml')
+
self.ui.add_from_file(os.path.join(BASE_DIR, 'data', 'author_edit_gui.xml'))
self.author_edit_dialog = self.ui.get_object('author_edit_dialog')
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())
@@ -2293,7 +2293,7 @@
def __init__(self, id):
self.organization = Organization.objects.get(id=id)
self.ui = Gtk.Builder()
- self.ui.add_from_file(BASE_DIR + 'data/organization_edit_gui.xml')
+
self.ui.add_from_file(os.path.join(BASE_DIR, 'data', 'organization_edit_gui.xml'))
self.edit_dialog = self.ui.get_object('organization_edit_dialog')
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())
@@ -2352,7 +2352,7 @@
def __init__(self, id):
self.source = Source.objects.get(id=id)
self.ui = Gtk.Builder()
- self.ui.add_from_file(BASE_DIR + 'data/source_edit_gui.xml')
+
self.ui.add_from_file(os.path.join(BASE_DIR, 'data', 'source_edit_gui.xml'))
self.edit_dialog = self.ui.get_object('source_edit_dialog')
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())
@@ -2413,7 +2413,7 @@
def __init__(self, id):
self.reference = Reference.objects.get(id=id)
self.ui = Gtk.Builder()
- self.ui.add_from_file(BASE_DIR + 'data/reference_edit_gui.xml')
+
self.ui.add_from_file(os.path.join(BASE_DIR, 'data', 'reference_edit_gui.xml'))
self.edit_dialog = self.ui.get_object('reference_edit_dialog')
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())
@@ -2471,7 +2471,7 @@
def __init__(self, id):
self.reference = Reference.objects.get(id=id)
self.ui = Gtk.Builder()
- self.ui.add_from_file(BASE_DIR + 'data/citation_edit_gui.xml')
+
self.ui.add_from_file(os.path.join(BASE_DIR, 'data', 'citation_edit_gui.xml'))
self.edit_dialog = self.ui.get_object('citation_edit_dialog')
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())
@@ -2528,7 +2528,7 @@
def __init__(self, id):
self.paper = Paper.objects.get(id=id)
self.ui = Gtk.Builder()
- self.ui.add_from_file(BASE_DIR + 'data/paper_edit_gui.xml')
+
self.ui.add_from_file(os.path.join(BASE_DIR, 'data', 'paper_edit_gui.xml'))
self.edit_dialog = self.ui.get_object('paper_edit_dialog')
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())

==============================================================================
Revision: b255cee9ba50
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:22:03 2012
Log: fix bibtex download
http://code.google.com/p/gpapers/source/detail?r=b255cee9ba50

Modified:
/gpapers/importer/bibtex.py
/gpapers/importer/google_scholar.py

=======================================
--- /gpapers/importer/bibtex.py Mon Apr 9 13:29:00 2012
+++ /gpapers/importer/bibtex.py Sun Jun 3 15:22:03 2012
@@ -171,6 +171,9 @@


def paper_info_from_bibtex(data):
+
+ if data is None:
+ return {}

# ieee puts <br>s in their bibtex
data = data.replace('<br>', '\n')
=======================================
--- /gpapers/importer/google_scholar.py Mon Apr 9 14:09:14 2012
+++ /gpapers/importer/google_scholar.py Sun Jun 3 15:22:03 2012
@@ -119,7 +119,8 @@

def _got_bibtex(self, message, callback, user_data):
if message.status_code == Soup.KnownStatusCode.OK:
- bibtex_data = message.request_body.data
+ bibtex_data = message.response_body.flatten().get_data()
+
log_debug('Received BibTeX data:\n%s' % bibtex_data)
paper_info = paper_info_from_bibtex(bibtex_data)
else:

==============================================================================
Revision: 11d5307ec2c3
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:22:34 2012
Log: add more info to setup.py
http://code.google.com/p/gpapers/source/detail?r=11d5307ec2c3

Modified:
/setup.py

=======================================
--- /setup.py Sun Jun 3 15:20:46 2012
+++ /setup.py Sun Jun 3 15:22:34 2012
@@ -46,8 +46,18 @@
author='Derek Anderson',
author_email='pub...@kered.org',
url='http://gpapers.org/',
- packages=['gpapers'],
- package_data = {'gpapers': ['data/*', 'icons/*']},
+ packages=['gpapers', 'gpapers.gPapers', 'gpapers.importer'],
+ package_data={'gpapers': ['data/*', 'icons/*']},
scripts=['gpapers.py'],
+ classifiers=[
+ 'Development Status :: 3 - Alpha',
+ 'Environment :: X11 Applications :: GTK',
+ 'Intended Audience :: End Users/Desktop',
+ 'Intended Audience :: Science/Research',
+ 'License :: OSI Approved :: GNU General Public License v3 or
later (GPLv3+)',
+ 'Operating System :: POSIX :: Linux',
+ 'Programming Language :: Python',
+ 'Topic :: Utilities'
+ ],
#TODO: desktop file
)

==============================================================================
Revision: a11e0962edd9
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:23:06 2012
Log: save raw bibtex in database
http://code.google.com/p/gpapers/source/detail?r=a11e0962edd9

Modified:
/gpapers/__init__.py

=======================================
--- /gpapers/__init__.py Sun Jun 3 15:21:17 2012
+++ /gpapers/__init__.py Sun Jun 3 15:23:06 2012
@@ -249,7 +249,7 @@
author_obj.save()

# Simple attributes
- attributes = ['title', 'abstract', 'doi', 'extracted_text']
+ attributes = ['title', 'abstract', 'doi', 'extracted_text', 'bibtex']

for attr in attributes:
log_debug('Checking if %s is in paper_info' % attr)
@@ -2466,7 +2466,6 @@
self.edit_dialog.destroy()


-
class CitationEditGUI:
def __init__(self, id):
self.reference = Reference.objects.get(id=id)

==============================================================================
Revision: 47b15b5da2a8
Author: Marcel Stimberg <marcel...@gmail.com>
Date: Sun Jun 3 15:25:40 2012
Log: some UI fixes
http://code.google.com/p/gpapers/source/detail?r=47b15b5da2a8

Modified:
/gpapers/data/ui.xml

=======================================
--- /gpapers/data/ui.xml Sun Jun 3 15:19:48 2012
+++ /gpapers/data/ui.xml Sun Jun 3 15:25:40 2012
@@ -1,141 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
- <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>
<object class="GtkWindow" id="main_window">
<property name="width_request">800</property>
<property name="height_request">600</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" id="menubar1"
constructor="uimanager1">
+ <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>
@@ -225,7 +90,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>
<property name="toolbar_style">icons</property>
- <property name="icon-size">1</property>
+ <property name="icon_size">1</property>
</object>
<packing>
<property name="expand">False</property>
@@ -272,7 +137,6 @@
<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>
@@ -302,7 +166,7 @@
</child>
<child>
<object class="GtkEntry" id="middle_pane_search">
- <property name="width_request">128</property>
+ <property name="width_request">100</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>
@@ -415,6 +279,7 @@
<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="min_content_width">100</property>
<child>
<object class="GtkTreeView"
id="author_filter">
<property
name="visible">True</property>
@@ -434,6 +299,7 @@
</child>
<child>
<object class="GtkHPaned" id="hpaned4">
+ <property
name="width_request">200</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>
@@ -442,6 +308,7 @@
<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="min_content_width">100</property>
<child>
<object class="GtkTreeView"
id="source_filter">
<property
name="visible">True</property>
@@ -464,6 +331,7 @@
<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="min_content_width">100</property>
<child>
<object class="GtkTreeView"
id="organization_filter">
<property
name="visible">True</property>
@@ -533,7 +401,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>
<property
name="toolbar_style">icons</property>
- <property name="icon-size">1</property>
+ <property name="icon_size">1</property>
</object>
<packing>
<property
name="expand">False</property>
@@ -630,6 +498,7 @@
</child>
<child>
<object class="GtkVBox" id="vbox4">
+ <property name="height_request">200</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>
@@ -686,7 +555,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>
<property
name="toolbar_style">icons</property>
- <property
name="icon-size">1</property>
+ <property
name="icon_size">1</property>
</object>
<packing>
<property
name="expand">False</property>
@@ -750,7 +619,7 @@
<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="icon-size">1</property>
+ <property name="icon_size">1</property>
<child>
<object class="GtkToolButton" id="toolbutton1">
<property
name="use_action_appearance">False</property>
@@ -878,5 +747,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>
Reply all
Reply to author
Forward
0 new messages