Compare commits

...

41 Commits

Author SHA1 Message Date
romjerome
1f614bd76f
Add files via upload 2021-04-04 09:10:22 +02:00
Leonhaeuser
0442c34258 Some small fixes in German translation 2021-03-21 00:18:46 +01:00
Leonhaeuser
c903f5e5a5 Update German translation for csv import/export 2021-03-11 22:59:42 +01:00
Leonhaeuser
3329860f50 small fix in German translation 2021-03-01 23:21:46 +01:00
Matthias Kemmer
e7401f3aaa
Change category of 'MatchesEventFilter' (#1130) 2021-02-19 11:45:38 -06:00
Paul Culley
1a48e8a03e
Fix issue where separator between top and bottom bar of View creeps up. (#1122)
Fixes #11973
2021-02-19 11:44:32 -06:00
Paul Culley
9a4adab9d6
Fix Locations Gramplet (Enclosed by) to properly displaycertain nested places. (#1127)
when the smallest place has undated enclosure and larger places are dated.

Issue #11691
2021-02-19 11:32:33 -06:00
Paul Culley
bb0647274b
Fix Family Tree Manager drop error on Windows (#1132)
Fixes #10734
2021-02-19 11:31:43 -06:00
Paul Culley
f6bfb46fc0
Fix exportvcalendar error is "is not" with a literal (Python 3.8 issue) (#1135)
Fixes #12000
2021-02-19 11:31:06 -06:00
Serge Noiraud
b6fa5da8ee
Handle not found when copying source from the (#1175)
Citation tree

Fixes #12170
2021-02-19 11:25:02 -06:00
Paul Culley
14c2d0e1b6
DbLoader: Fix call to 'file' function, which doesn't exist in Python3 (#1173) 2021-02-19 11:23:47 -06:00
Paul Culley
226e8c549a
Fix write_lock_file exception when USERNAME is missing (#1171)
Fixes #12150
2021-02-19 11:23:06 -06:00
Paul Culley
d173809d8c
Fix EditPlace so Tab key doesn't get stuck on Private icon (#1168)
Fixes #12139
2021-02-19 11:22:35 -06:00
Paul Culley
63c52fa1bb
Fix Tag report for places that have a hierarchy. (#1162)
Fixes #12124
2021-02-19 11:21:11 -06:00
Paul Culley
455628d44a
Fix exception when cancelling out of a db upgrade in GUI (#1154)
Fixes #12063
2021-02-19 11:18:18 -06:00
Leonhaeuser
670bb355cb additional small German translation fixes 2021-02-12 21:36:51 +01:00
Leonhaeuser
202c7a9bf6 Small fixes German translation 2021-02-11 12:06:22 +01:00
Leonhaeuser
72955840f1 fix wrong translation of source text in German translation 2021-02-06 22:06:22 +01:00
Leonhaeuser
b8e73d5ee1 fixed small error in German translation 2021-02-06 00:04:33 +01:00
Leonhaeuser
990db39664 small fixes German translation 2021-01-26 18:59:23 +01:00
Nick Hall
9c0dca6bd1 Merge pull request #1053 from cjmayo:themeicon 2020-11-14 19:29:58 +00:00
Chris Mayo
02e0c1c67d Install 128x128 and 256x256 application icons
Created with ImageMagick using e.g.:

convert -background none ../../../gramps.svg -geometry 256x256 gramps.png
2020-11-14 19:23:25 +00:00
Chris Mayo
ebf1715468 Install MIME type icons into the hicolor theme
The gnome theme is defunct.

Remove gnome-mime- prefix from icon filenames.
2020-11-14 19:23:24 +00:00
Nick Hall
c10f2da00e Install application icons into correct directories 2020-11-14 19:10:34 +00:00
vantu5z
9f71372a97 Update Russian translation 2020-10-15 16:06:19 +03:00
Zdeněk Hataš
0993d9cfc3 Update Czech translation - typo fixes 2020-09-25 09:02:45 +02:00
Tian Shixiong
34471834ab Update Simplified Chinese translation 2020-09-24 22:37:57 +01:00
Jan Sparreboom
ff912f844c Update Dutch translation 2020-09-24 21:36:52 +01:00
Lajos Nemeséri
45eac501a9 Revised and updated hu translation 2020-09-24 19:41:31 +01:00
Juan Saavedra
d4e85c2397 Update Spanish translation 2020-09-24 17:52:35 +01:00
bokfink
c7a4d287f0
Fix error in Birthday and Anniversary report (#1113)
Fixes an error triggered when the first person_handle in the list
has a death event, but no birth event (get_birth_ref() == None)
and does not have family relationships (spouse_handle == None).
These conditions lead to the local variable short_name not being
declared before it comes time to process death events.

Fixes #11766
2020-09-14 11:13:08 -05:00
Paul Culley
c0d622c16a
Fix graphdoc to properly escape characters in ids for Graphviz (#1111)
Fixes #11741
2020-09-14 11:10:20 -05:00
John Ralls
b38f77f2aa
Replace inspect.stack() with inspect.currentframe() (#1104)
* Replace inspect.stack() with inspect.currentframe()

Fixes #11874

Works around https://bugs.python.org/issue12920 which causes every
call to inspect.trace() to fail because __main__ is always the
starting point.

* Fix a few Codecov complaints from files touched by previous commit.

Ignoring the "duplicate code" issue caused by the empty comment line
at the beginning of every file.
2020-09-14 11:08:58 -05:00
RossGammon
d91fc9e2fb
Update Debian directory after producing the deb file for the 5.1.3 (#1100)
Release.

Co-authored-by: Ross Gammon <rossgammon@debian.org>
2020-09-14 11:05:21 -05:00
Paul Culley
198602be61
Fix crash sorting on columns in Selectors with TreeModels (#1099)
Fixes #11750
2020-09-14 11:04:12 -05:00
Paul Culley
3f9f3215ee
Fix progress bar freeze due to changes in Gtk (#1103)
Fixes #11642
2020-09-14 11:02:48 -05:00
Paul Culley
beb388a30d
Fix svgdrawdoc for text containing XML invalid characters (#1110)
Fixes #11929
2020-09-14 11:00:43 -05:00
John Ralls
29e78d4253 Further changes for bundling with Python 3.8. 2020-08-30 14:46:35 -07:00
John Ralls
b80dcaf701 Add libgeocode-glib to bundle so that it actually works. 2020-08-30 14:44:51 -07:00
Leonhaeuser
a876d94fbc German tzranslation two smal corrections 2020-08-26 18:08:42 +02:00
John Ralls
95e1e8cb67 [mac] Set __file__ if gramps_launcher.py is run as __main__.
Fixes #11874.
2020-08-25 17:14:10 -07:00
54 changed files with 10805 additions and 16773 deletions

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
gramps (5.1.3-1) focal; urgency=medium
* New release
* Update debian/copyright for Alex Roitman
-- Ross Gammon <rosco2@ubuntu.com> Sun, 16 Aug 2020 20:23:34 +0200
gramps (5.1.2-1) unstable; urgency=medium gramps (5.1.2-1) unstable; urgency=medium
* New release * New release

2
debian/copyright vendored
View File

@ -3,7 +3,7 @@ Upstream-Name: Gramps
Source: https://gramps-project.org Source: https://gramps-project.org
Files: * Files: *
Copyright: 2000-2007, Alex Roitman Copyright: 2000-2007, 2020 Alex Roitman
2000-2002, Bruce J. DeGrasse 2000-2002, Bruce J. DeGrasse
2000-2008, Donald N. Allingham 2000-2008, Donald N. Allingham
2000-2007, Martin Hawlisch 2000-2007, Martin Hawlisch

View File

@ -52,7 +52,6 @@ methods should be changed to generate exceptions. Possibly by globally changing
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import logging import logging
import os
import inspect import inspect
from abc import ABCMeta from abc import ABCMeta
from types import FunctionType from types import FunctionType
@ -160,10 +159,12 @@ def wrapper(method):
""" """
class_name = args[0].__class__.__name__ class_name = args[0].__class__.__name__
func_name = method.__name__ func_name = method.__name__
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
LOG.debug('calling %s.%s()... from file %s, line %s in %s', LOG.debug('calling %s.%s()... from file %s, line %s in %s',
class_name, func_name, os.path.split(caller_frame[1])[1], class_name, func_name, c_code.co_filename, c_frame.f_lineno,
caller_frame[2], caller_frame[3]) c_code.co_name)
return method(*args, **keywargs) return method(*args, **keywargs)
return wrapped return wrapped

View File

@ -78,15 +78,13 @@ class DbTxn(defaultdict):
elapsed_time = time.time() - self.start_time elapsed_time = time.time() - self.start_time
if __debug__: if __debug__:
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug(" **** DbTxn %s exited. Called from file %s, " _LOG.debug(" **** DbTxn %s exited. Called from file %s, "
"line %s, in %s **** %.2f seconds" % "line %s, in %s **** %.2f seconds",
((hex(id(self)),)+ hex(id(self)), c_code.co_filename, c_frame.f_lineno,
(os.path.split(caller_frame[1])[1],)+ c_code.co_name, elapsed_time)
tuple(caller_frame[i] for i in range(2, 4))+
(elapsed_time,)
)
)
return False return False

View File

@ -42,6 +42,8 @@ from ..const import PLUGINS_DIR, USER_PLUGINS
from ..constfunc import win, get_env_var from ..constfunc import win, get_env_var
from ..config import config from ..config import config
from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -70,12 +72,14 @@ def make_database(plugin_id):
database = getattr(mod, pdata.databaseclass) database = getattr(mod, pdata.databaseclass)
db = database() db = database()
import inspect import inspect
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug("Database class instance created Class:%s instance:%s. " _LOG.debug("Database class instance created Class:%s instance:%s. "
"Called from File %s, line %s, in %s" "Called from File %s, line %s, in %s",
% ((db.__class__.__name__, hex(id(db))) db.__class__.__name__, hex(id(db)), c_code.co_filename,
+ (os.path.split(caller_frame[1])[1],) c_frame.f_lineno, c_code.co_name)
+ tuple(caller_frame[i] for i in range(2, 4))))
return db return db
else: else:
raise Exception("can't load database backend: '%s'" % plugin_id) raise Exception("can't load database backend: '%s'" % plugin_id)
@ -209,8 +213,8 @@ def write_lock_file(name):
if win(): if win():
user = get_env_var('USERNAME') user = get_env_var('USERNAME')
host = get_env_var('USERDOMAIN') host = get_env_var('USERDOMAIN')
if host is None: if not user:
host = "" user = _("Unknown")
else: else:
host = os.uname()[1] host = os.uname()[1]
# An ugly workaround for os.getlogin() issue with Konsole # An ugly workaround for os.getlogin() issue with Konsole

View File

@ -29,7 +29,6 @@ Provide the database state class
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import sys import sys
import os
import logging import logging
import inspect import inspect
@ -88,10 +87,12 @@ class DbState(Callback):
""" """
class_name = self.__class__.__name__ class_name = self.__class__.__name__
func_name = "is_open" func_name = "is_open"
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug('calling %s.%s()... from file %s, line %s in %s', _LOG.debug('calling %s.%s()... from file %s, line %s in %s',
class_name, func_name, os.path.split(caller_frame[1])[1], class_name, func_name, c_code.co_filename, c_frame.f_lineno,
caller_frame[2], caller_frame[3]) c_code.co_name)
return (self.db is not None) and self.db.is_open() return (self.db is not None) and self.db.is_open()
def change_database(self, database): def change_database(self, database):

View File

@ -52,7 +52,7 @@ class MatchesEventFilter(MatchesEventFilterBase):
name = _('Persons with events matching the <event filter>') name = _('Persons with events matching the <event filter>')
description = _("Matches persons who have events that match a certain" description = _("Matches persons who have events that match a certain"
" event filter") " event filter")
category = _('General filters') category = _('Event filters')
# we want to have this filter show event filters # we want to have this filter show event filters
namespace = 'Event' namespace = 'Event'

View File

@ -99,7 +99,8 @@ class BaseTest(unittest.TestCase):
stime = perf_counter() stime = perf_counter()
results = filter_.apply(self.db) results = filter_.apply(self.db)
if __debug__: if __debug__:
rulename = inspect.stack()[1][3] frame = inspect.currentframe()
rulename = frame.f_back.f_code.co_name
print("%s: %.2f\n" % (rulename, perf_counter() - stime)) print("%s: %.2f\n" % (rulename, perf_counter() - stime))
return set(results) return set(results)

View File

@ -113,6 +113,10 @@ else:
_GS_CMD = where_is("gs") _GS_CMD = where_is("gs")
def esc(id_txt):
return id_txt.replace('"', '\\"')
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# #
# GVOptions # GVOptions
@ -575,7 +579,7 @@ class GVDocBase(BaseDoc, GVDoc):
text += ' URL="%s"' % url text += ' URL="%s"' % url
text += " ]" text += " ]"
self.write(' "%s" %s;\n' % (node_id, text)) self.write(' "%s" %s;\n' % (esc(node_id), text))
def add_link(self, id1, id2, style="", head="", tail="", comment=""): def add_link(self, id1, id2, style="", head="", tail="", comment=""):
""" """
@ -583,7 +587,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.add_link(). Implements GVDocBase.add_link().
""" """
self.write(' "%s" -> "%s"' % (id1, id2)) self.write(' "%s" -> "%s"' % (esc(id1), esc(id2)))
if style or head or tail: if style or head or tail:
self.write(' [') self.write(' [')
@ -635,7 +639,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.add_samerank(). Implements GVDocBase.add_samerank().
""" """
self.write(' {rank=same "%s" "%s"}\n' % (id1, id2)) self.write(' {rank=same "%s" "%s"}\n' % (esc(id1), esc(id2)))
def rewrite_label(self, id, label): def rewrite_label(self, id, label):
""" """
@ -643,7 +647,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.rewrite_label(). Implements GVDocBase.rewrite_label().
""" """
self.write(' "%s" [label = "%s"]\n' % (id, label)) self.write(' "%s" [label = "%s"]\n' % (esc(id), label))
def start_subgraph(self, graph_id): def start_subgraph(self, graph_id):
""" Implement GVDocBase.start_subgraph() """ """ Implement GVDocBase.start_subgraph() """

View File

@ -324,12 +324,16 @@ class Callback:
return return
# Check signal exists # Check signal exists
frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
frame_info = (c_code.co_filename, c_frame.f_lineno, c_code.co_name)
if signal_name not in self.__signal_map: if signal_name not in self.__signal_map:
self._warn("Attempt to emit to unknown signal: %s\n" self._warn("Attempt to emit to unknown signal: %s\n"
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
# check that the signal is not already being emitted. This prevents # check that the signal is not already being emitted. This prevents
@ -340,7 +344,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
try: try:
@ -358,7 +362,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
# type check arguments # type check arguments
@ -369,7 +373,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
if len(args) > 0: if len(args) > 0:
@ -379,7 +383,7 @@ class Callback:
" from: file: %s\n" " from: file: %s\n"
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4])) % ((str(signal_name), ) + frame_info))
return return
if arg_types is not None: if arg_types is not None:
@ -391,7 +395,7 @@ class Callback:
" line: %d\n" " line: %d\n"
" func: %s\n" " func: %s\n"
" arg passed was: %s, type of arg passed %s, type should be: %s\n" " arg passed was: %s, type of arg passed %s, type should be: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4] +\ % ((str(signal_name), ) + frame_info +\
(args[i], repr(type(args[i])), repr(arg_types[i])))) (args[i], repr(type(args[i])), repr(arg_types[i]))))
return return
if signal_name in self.__callback_map: if signal_name in self.__callback_map:

View File

@ -471,6 +471,7 @@ class ClipCitation(ClipHandleWrapper):
def refresh(self): def refresh(self):
if self._handle: if self._handle:
try:
citation = clipdb.get_citation_from_handle(self._handle) citation = clipdb.get_citation_from_handle(self._handle)
if citation: if citation:
self._title = citation.get_gramps_id() self._title = citation.get_gramps_id()
@ -489,9 +490,17 @@ class ClipCitation(ClipHandleWrapper):
text = str(text) text = str(text)
if len(text) > 60: if len(text) > 60:
text = text[:60] + "..." text = text[:60] + "..."
self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s") % { self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s"
'pag' : page, ) % { 'pag' : page,
'sourcetext' : text} 'sourcetext' : text}
except:
# We are in the Source tree view. The shortcuts only
# work for citations.
print("We cannot copy the source from this view."
" Use drag and drop.")
self._title = self._value = ''
self._pickle = self._type = self._objclass = None
self._handle = self._dbid = self._dbname = None
class ClipRepoRef(ClipObjWrapper): class ClipRepoRef(ClipObjWrapper):
@ -1281,6 +1290,14 @@ class ClipboardListView:
model.insert_before(node, data) model.insert_before(node, data)
else: else:
model.insert_after(node, data) model.insert_after(node, data)
elif isinstance(data[1], ClipCitation):
if data[3]:
# we have a real citation
model.append(data)
#else:
# We are in a Source treeview and trying
# to copy a source with a shortcut.
# Use drag and drop to do that.
else: else:
model.append(data) model.append(data)

View File

@ -532,7 +532,7 @@ class GrampsImportFileDialog(ManagedWindow):
return True return True
else: else:
try: try:
f = file(filename,'w') f = open(filename, 'w')
f.close() f.close()
os.remove(filename) os.remove(filename)
except IOError: except IOError:
@ -548,7 +548,6 @@ class GrampsImportFileDialog(ManagedWindow):
self.import_info = None self.import_info = None
self._begin_progress() self._begin_progress()
self.uistate.set_sensitive(False) self.uistate.set_sensitive(False)
self.uistate.viewmanager.enable_menu(False)
try: try:
#an importer can return an object with info, object.info_text() #an importer can return an object with info, object.info_text()
@ -569,7 +568,6 @@ class GrampsImportFileDialog(ManagedWindow):
except Exception: except Exception:
_LOG.error("Failed to import database.", exc_info=True) _LOG.error("Failed to import database.", exc_info=True)
self.uistate.set_sensitive(True) self.uistate.set_sensitive(True)
self.uistate.viewmanager.enable_menu(True)
self._end_progress() self._end_progress()
def build_menu_names(self, obj): # this is meaningless since it's modal def build_menu_names(self, obj): # this is meaningless since it's modal

View File

@ -1013,7 +1013,7 @@ class DbManager(CLIDbManager, ManagedWindow):
""" """
Handle the reception of drag data Handle the reception of drag data
""" """
drag_value = selection.get_data().decode() drag_value = selection.get_data().decode().strip(' \r\n\x00')
fname = None fname = None
type = None type = None
title = None title = None

View File

@ -520,7 +520,10 @@ class DisplayState(Callback):
history.push(handle) history.push(handle)
def set_sensitive(self, state): def set_sensitive(self, state):
self.window.set_sensitive(state) tbar = self.uimanager.get_widget('ToolBar')
tbar.set_sensitive(state)
self.viewmanager.hpane.set_sensitive(state)
self.uimanager.enable_all_actions(state)
def db_changed(self, db): def db_changed(self, db):
db.connect('long-op-start', self.progress_monitor.add_op) db.connect('long-op-start', self.progress_monitor.add_op)

View File

@ -39,6 +39,9 @@ from ..glade import Glade
from gramps.gen.simple import SimpleAccess from gramps.gen.simple import SimpleAccess
from gramps.gen.const import URL_MANUAL_SECT2 from gramps.gen.const import URL_MANUAL_SECT2
import logging
_LOG = logging.getLogger("editlink")
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Constants # Constants
@ -154,6 +157,12 @@ class EditLink(ManagedWindow):
def _on_new_callback(self, obj): def _on_new_callback(self, obj):
object_class = obj.__class__.__name__ object_class = obj.__class__.__name__
# workaround for bug12260
try:
test = obj.handle
except AttributeError:
_LOG.warn(str(object_class))
return
self.selected.set_text(self.display_link( self.selected.set_text(self.display_link(
object_class, "handle", obj.handle)) object_class, "handle", obj.handle))
self.url_link.set_text("gramps://%s/%s/%s" % self.url_link.set_text("gramps://%s/%s/%s" %

View File

@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 --> <!-- Generated with glade 3.22.2 -->
<interface> <interface>
<requires lib="gtk+" version="3.10"/> <requires lib="gtk+" version="3.10"/>
<requires lib="grampswidgets" version="0.0"/>
<object class="GtkDialog" id="editplace"> <object class="GtkDialog" id="editplace">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child type="titlebar">
<placeholder/>
</child>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox19"> <object class="GtkBox" id="dialog-vbox19">
<property name="visible">True</property> <property name="visible">True</property>
@ -101,7 +103,7 @@
<child> <child>
<object class="GtkLabel" id="comment1"> <object class="GtkLabel" id="comment1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="label" translatable="yes">Either use the two fields below to enter coordinates (latitude and longitude),</property> <property name="label" translatable="yes">Either use the two fields below to enter coordinates (latitude and longitude),</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>

View File

@ -325,7 +325,6 @@ class BaseSelector(ManagedWindow):
self.sortorder = Gtk.SortType.ASCENDING self.sortorder = Gtk.SortType.ASCENDING
else: else:
self.sortorder = Gtk.SortType.DESCENDING self.sortorder = Gtk.SortType.DESCENDING
self.model.reverse_order()
self.build_tree() self.build_tree()
return True return True

View File

@ -496,6 +496,16 @@ class UIManager():
""" """
return group.act_group.lookup_action(actionname) return group.act_group.lookup_action(actionname)
def enable_all_actions(self, state):
for group in self.action_groups:
if group.act_group:
for item in group.actionlist:
action = group.act_group.lookup_action(item[ACTION_NAME])
if action:
# We check in case the group has not been inserted into
# UIManager yet
action.set_enabled(group.sensitive if state else False)
def dump_all_accels(self): def dump_all_accels(self):
''' A function used diagnostically to see what accels are present. ''' A function used diagnostically to see what accels are present.
This will only dump the current accel set, if other non-open windows This will only dump the current accel set, if other non-open windows

View File

@ -450,7 +450,7 @@ def open_file_with_default_application(path, uistate):
GLib.timeout_add_seconds(1, poll_external, (proc, errstrings, uistate)) GLib.timeout_add_seconds(1, poll_external, (proc, errstrings, uistate))
return return
def process_pending_events(max_count=10): def process_pending_events(max_count=20):
""" """
Process pending events, but don't get into an infinite loop. Process pending events, but don't get into an infinite loop.
""" """

View File

@ -273,13 +273,13 @@ class ViewManager(CLIManager):
Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK) Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.window.add(vbox) self.window.add(vbox)
hpane = Gtk.Paned() self.hpane = Gtk.Paned()
self.ebox = Gtk.EventBox() self.ebox = Gtk.EventBox()
self.navigator = Navigator(self) self.navigator = Navigator(self)
self.ebox.add(self.navigator.get_top()) self.ebox.add(self.navigator.get_top())
hpane.pack1(self.ebox, False, False) self.hpane.pack1(self.ebox, False, False)
hpane.show() self.hpane.show()
self.notebook = Gtk.Notebook() self.notebook = Gtk.Notebook()
self.notebook.set_scrollable(True) self.notebook.set_scrollable(True)
@ -288,14 +288,14 @@ class ViewManager(CLIManager):
self.__init_lists() self.__init_lists()
self.__build_ui_manager() self.__build_ui_manager()
hpane.add2(self.notebook) self.hpane.add2(self.notebook)
toolbar = self.uimanager.get_widget('ToolBar') toolbar = self.uimanager.get_widget('ToolBar')
self.statusbar = Statusbar() self.statusbar = Statusbar()
self.statusbar.show() self.statusbar.show()
vbox.pack_end(self.statusbar, False, True, 0) vbox.pack_end(self.statusbar, False, True, 0)
vbox.pack_start(toolbar, False, True, 0) vbox.pack_start(toolbar, False, True, 0)
vbox.pack_end(hpane, True, True, 0) vbox.pack_end(self.hpane, True, True, 0)
vbox.show() vbox.show_all()
self.uistate = DisplayState(self.window, self.statusbar, self.uistate = DisplayState(self.window, self.statusbar,
self.uimanager, self) self.uimanager, self)
@ -835,6 +835,7 @@ class ViewManager(CLIManager):
hbox.add(Gtk.Label(label=pdata.name)) hbox.add(Gtk.Label(label=pdata.name))
hbox.show_all() hbox.show_all()
page_num = self.notebook.append_page(page.get_display(), hbox) page_num = self.notebook.append_page(page.get_display(), hbox)
self.active_page.post_create()
if not self.file_loaded: if not self.file_loaded:
self.uimanager.set_actions_visible(self.actiongroup, False) self.uimanager.set_actions_visible(self.actiongroup, False)
self.uimanager.set_actions_visible(self.readonlygroup, False) self.uimanager.set_actions_visible(self.readonlygroup, False)
@ -993,6 +994,7 @@ class ViewManager(CLIManager):
The method called after load of a new database. The method called after load of a new database.
Inherit CLI method to add GUI part Inherit CLI method to add GUI part
""" """
if self.dbstate.db.is_open():
self._post_load_newdb_nongui(filename, title) self._post_load_newdb_nongui(filename, title)
self._post_load_newdb_gui(filename, filetype, title) self._post_load_newdb_gui(filename, filetype, title)
@ -1061,51 +1063,6 @@ class ViewManager(CLIManager):
config.set('paths.recent-file', '') config.set('paths.recent-file', '')
config.save() config.save()
def enable_menu(self, enable):
""" Enable/disable the menues. Used by the dbloader for import to
prevent other operations during import. Needed because simpler methods
don't work under Gnome with application menus at top of screen (instead
of Gramps window).
Note: enable must be set to False on first call.
"""
if not enable:
self.action_st = (
self.uimanager.get_actions_sensitive(self.actiongroup),
self.uimanager.get_actions_sensitive(self.readonlygroup),
self.uimanager.get_actions_sensitive(self.undoactions),
self.uimanager.get_actions_sensitive(self.redoactions),
self.uimanager.get_actions_sensitive(self.fileactions),
self.uimanager.get_actions_sensitive(self.toolactions),
self.uimanager.get_actions_sensitive(self.reportactions),
self.uimanager.get_actions_sensitive(
self.recent_manager.action_group))
self.uimanager.set_actions_sensitive(self.actiongroup, enable)
self.uimanager.set_actions_sensitive(self.readonlygroup, enable)
self.uimanager.set_actions_sensitive(self.undoactions, enable)
self.uimanager.set_actions_sensitive(self.redoactions, enable)
self.uimanager.set_actions_sensitive(self.fileactions, enable)
self.uimanager.set_actions_sensitive(self.toolactions, enable)
self.uimanager.set_actions_sensitive(self.reportactions, enable)
self.uimanager.set_actions_sensitive(
self.recent_manager.action_group, enable)
else:
self.uimanager.set_actions_sensitive(
self.actiongroup, self.action_st[0])
self.uimanager.set_actions_sensitive(
self.readonlygroup, self.action_st[1])
self.uimanager.set_actions_sensitive(
self.undoactions, self.action_st[2])
self.uimanager.set_actions_sensitive(
self.redoactions, self.action_st[3])
self.uimanager.set_actions_sensitive(
self.fileactions, self.action_st[4])
self.uimanager.set_actions_sensitive(
self.toolactions, self.action_st[5])
self.uimanager.set_actions_sensitive(
self.reportactions, self.action_st[6])
self.uimanager.set_actions_sensitive(
self.recent_manager.action_group, self.action_st[7])
def __change_undo_label(self, label, update_menu=True): def __change_undo_label(self, label, update_menu=True):
""" """
Change the UNDO label Change the UNDO label

View File

@ -138,6 +138,7 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
self.sidebar = None self.sidebar = None
self.bottombar = None self.bottombar = None
self.widget = None self.widget = None
self.vpane = None
DbGUIElement.__init__(self, dbstate.db) DbGUIElement.__init__(self, dbstate.db)
@ -154,18 +155,20 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
self.ident + "_bottombar", self.ident + "_bottombar",
defaults[1]) defaults[1])
hpane = Gtk.Paned() hpane = Gtk.Paned()
vpane = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL) self.vpane = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL)
hpane.pack1(vpane, resize=True, shrink=False) hpane.pack1(self.vpane, resize=True, shrink=False)
hpane.pack2(self.sidebar, resize=False, shrink=False) hpane.pack2(self.sidebar, resize=False, shrink=False)
hpane.show() hpane.show()
vpane.show() self.vpane.show()
self.widget = self.build_widget() self.widget = self.build_widget()
self.widget.show_all() self.widget.show_all()
self.widget.set_name('view') self.widget.set_name('view')
vpane.pack1(self.widget, resize=True, shrink=False) self.vpane.pack1(self.widget, resize=True, shrink=False)
vpane.pack2(self.bottombar, resize=False, shrink=True) self.vpane.pack2(self.bottombar, resize=False, shrink=True)
self._setup_slider_config(vpane, 'vpane.slider-position') self.vpane.show_all()
self._config.register('vpane.slider-position', -1)
self.vpane.set_position(self._config.get('vpane.slider-position'))
self.sidebar_toggled(self.sidebar.get_property('visible')) self.sidebar_toggled(self.sidebar.get_property('visible'))
self.hpane_sig = hpane.connect("draw", self.set_page_slider) self.hpane_sig = hpane.connect("draw", self.set_page_slider)
@ -343,6 +346,11 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
self.bottombar.set_inactive() self.bottombar.set_inactive()
self.active = False self.active = False
def post_create(self):
if self.vpane:
self._setup_slider_config(self.vpane, 'vpane.slider-position')
self.vpane = None
@abstractmethod @abstractmethod
def build_tree(self): def build_tree(self):
""" """

View File

@ -29,7 +29,6 @@ BSDDBTxn class: Wrapper for BSDDB transaction-oriented methods
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import logging import logging
import inspect import inspect
import os
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -73,14 +72,13 @@ class BSDDBTxn:
""" """
# Conditional on __debug__ because all that frame stuff may be slow # Conditional on __debug__ because all that frame stuff may be slow
if __debug__: if __debug__:
caller_frame = inspect.stack()[1] frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug(" BSDDBTxn %s instantiated. Called from file %s," _LOG.debug(" BSDDBTxn %s instantiated. Called from file %s,"
" line %s, in %s" % " line %s, in %s", hex(id(self)), c_code.co_filename,
((hex(id(self)),)+ c_frame.f_lineno, c_code.co_name)
(os.path.split(caller_frame[1])[1],)+
(tuple(caller_frame[i] for i in range(2, 4)))
)
)
self.env = env self.env = env
self.db = db self.db = db
self.txn = None self.txn = None

View File

@ -31,7 +31,7 @@ SVG document generator.
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from io import StringIO from io import StringIO
from xml.sax.saxutils import escape
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Gramps modules # Gramps modules
@ -147,7 +147,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
linex = xpos + (width - self.string_width(font, line)) / 2 linex = xpos + (width - self.string_width(font, line)) / 2
self.buffer.write( self.buffer.write(
'<tspan x="%4.2f" dy="%d">' % (linex, size) + '<tspan x="%4.2f" dy="%d">' % (linex, size) +
line + escape(line) +
'</tspan>' '</tspan>'
) )
self.buffer.write('</text>\n') self.buffer.write('</text>\n')
@ -273,7 +273,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
self.buffer.write(' font-family:serif;') self.buffer.write(' font-family:serif;')
self.buffer.write( self.buffer.write(
'">' + '">' +
line + escape(line) +
'</text>\n' '</text>\n'
) )
@ -307,7 +307,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
self.buffer.write('font-family:serif;') self.buffer.write('font-family:serif;')
self.buffer.write( self.buffer.write(
'">' + '">' +
text + escape(text) +
'</text>\n' '</text>\n'
) )

View File

@ -202,7 +202,7 @@ class CalendarWriter:
date = event.get_date_object() date = event.get_date_object()
place_handle = event.get_place_handle() place_handle = event.get_place_handle()
date_string = self.format_date(date, 1) date_string = self.format_date(date, 1)
if date_string is not "": if date_string != "":
# self.writeln("") # self.writeln("")
self.writeln("BEGIN:VEVENT") self.writeln("BEGIN:VEVENT")
time_s = time.gmtime(event.change) time_s = time.gmtime(event.change)

View File

@ -300,6 +300,8 @@ class DateRange:
""" """
start = None start = None
stop = None stop = None
if date.is_empty():
return (None, None)
if date.modifier == Date.MOD_NONE: if date.modifier == Date.MOD_NONE:
start = date.sortval start = date.sortval
stop = date.sortval stop = date.sortval

View File

@ -271,6 +271,7 @@ class BirthdayReport(Report):
for person_handle in people: for person_handle in people:
step() step()
person = self.database.get_person_from_handle(person_handle) person = self.database.get_person_from_handle(person_handle)
short_name = self.get_name(person)
birth_ref = person.get_birth_ref() birth_ref = person.get_birth_ref()
birth_date = None birth_date = None
if birth_ref: if birth_ref:

View File

@ -441,7 +441,8 @@ class TagReport(Report):
for place_handle in place_list: for place_handle in place_list:
place = self.database.get_place_from_handle(place_handle) place = self.database.get_place_from_handle(place_handle)
place_title = _pd.display(self.database, place, self.place_format) place_title = _pd.display(self.database, place, None,
self.place_format)
self.doc.start_row() self.doc.start_row()

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 709 B

After

Width:  |  Height:  |  Size: 709 B

View File

Before

Width:  |  Height:  |  Size: 1003 B

After

Width:  |  Height:  |  Size: 1003 B

View File

Before

Width:  |  Height:  |  Size: 1003 B

After

Width:  |  Height:  |  Size: 1003 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -41,7 +41,7 @@
</binary> </binary>
<binary recurse="True"> <binary recurse="True">
${prefix}/lib/python3.6/*.so ${prefix}/lib/python3.8/*.so
</binary> </binary>
<binary> <binary>
@ -96,6 +96,10 @@
${prefix}/lib/libgexiv2.dylib ${prefix}/lib/libgexiv2.dylib
</binary> </binary>
<binary>
${prefix}/lib/libgeocode-glib.dylib
</binary>
<gir> <gir>
${prefix}/share/gir-1.0/*.gir ${prefix}/share/gir-1.0/*.gir
</gir> </gir>
@ -144,19 +148,19 @@
<!-- We have to pull in the python modules, which are mixed python <!-- We have to pull in the python modules, which are mixed python
and loadable modules. --> and loadable modules. -->
<data recurse="True"> <data recurse="True">
${prefix}/lib/python3.6/*.py ${prefix}/lib/python3.8/*.py
</data> </data>
<data> <data>
${prefix}/lib/python3.6/config-3.6m-darwin/ ${prefix}/lib/python3.8/config-3.8-darwin/
</data> </data>
<data> <data>
${prefix}/lib/python3.6/site-packages/gramps/gen/utils/resource-path ${prefix}/lib/python3.8/site-packages/gramps/gen/utils/resource-path
</data> </data>
<data> <data>
${prefix}/include/python3.6m/pyconfig.h ${prefix}/include/python3.8/pyconfig.h
</data> </data>
@ -173,7 +177,7 @@
</data> </data>
<data recurse="True"> <data recurse="True">
${prefix}/lib/python3.6/site-packages/gramps/*.glade ${prefix}/lib/python3.8/site-packages/gramps/*.glade
</data> </data>
<data> <data>

View File

@ -40,6 +40,8 @@ environ['USERPROFILE'] = environ['HOME']
environ['APPDATA'] = join(environ['HOME'], 'Library', 'Application Support') environ['APPDATA'] = join(environ['HOME'], 'Library', 'Application Support')
environ['PATH'] = join(bundle_contents, 'MacOS') + ':' + environ['PATH'] environ['PATH'] = join(bundle_contents, 'MacOS') + ':' + environ['PATH']
if __name__ == '__main__':
__file__ = 'gramps_launcher.py'
import gramps.grampsapp as app import gramps.grampsapp as app
app.main() app.main()

View File

@ -38,7 +38,7 @@ msgstr ""
"Project-Id-Version: gramps 3.3.x\n" "Project-Id-Version: gramps 3.3.x\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-15 22:20+0200\n" "POT-Creation-Date: 2020-07-15 22:20+0200\n"
"PO-Revision-Date: 2020-08-21 11:01+0200\n" "PO-Revision-Date: 2020-09-25 09:02+0200\n"
"Last-Translator: Zdeněk Hataš <zdenek.hatas@gmail.com>\n" "Last-Translator: Zdeněk Hataš <zdenek.hatas@gmail.com>\n"
"Language-Team: Czech <Czech <gnome-cs-list@gnome.org>>\n" "Language-Team: Czech <Czech <gnome-cs-list@gnome.org>>\n"
"Language: cs\n" "Language: cs\n"
@ -2514,7 +2514,7 @@ msgstr "P=červen|D=června|T=červnu|O=červnem"
#: ../gramps/gen/datehandler/_datestrings.py:85 #: ../gramps/gen/datehandler/_datestrings.py:85
msgid "localized lexeme inflections||July" msgid "localized lexeme inflections||July"
msgstr "P=červenec|D=července|T=červenci|O=červencen" msgstr "P=červenec|D=července|T=červenci|O=červencem"
#: ../gramps/gen/datehandler/_datestrings.py:86 #: ../gramps/gen/datehandler/_datestrings.py:86
msgid "localized lexeme inflections||August" msgid "localized lexeme inflections||August"
@ -25070,7 +25070,7 @@ msgstr "Oddělený(á)"
#: ../gramps/plugins/importer/importgeneweb.py:197 #: ../gramps/plugins/importer/importgeneweb.py:197
msgid "GeneWeb import" msgid "GeneWeb import"
msgstr "importovat GeneWeb" msgstr "Importovat GeneWeb"
#: ../gramps/plugins/importer/importgeneweb.py:912 #: ../gramps/plugins/importer/importgeneweb.py:912
#, python-brace-format #, python-brace-format
@ -25331,7 +25331,7 @@ msgid ""
"event description." "event description."
msgstr "" msgstr ""
"Uložit datum narození\n" "Uložit datum narození\n"
"v popisu události" "v popisu události."
#: ../gramps/plugins/importer/importprogen.glade:1495 #: ../gramps/plugins/importer/importprogen.glade:1495
msgid "" msgid ""
@ -25339,7 +25339,7 @@ msgid ""
"event description." "event description."
msgstr "" msgstr ""
"Uložit datum úmrtí\n" "Uložit datum úmrtí\n"
"v popisu události" "v popisu události."
#: ../gramps/plugins/importer/importprogen.glade:1515 #: ../gramps/plugins/importer/importprogen.glade:1515
msgid "Diverse" msgid "Diverse"
@ -25917,7 +25917,7 @@ msgstr "Řádek ignorován "
#: ../gramps/plugins/lib/libgedcom.py:1540 #: ../gramps/plugins/lib/libgedcom.py:1540
#, python-format #, python-format
msgid "Illegal character%s" msgid "Illegal character%s"
msgstr "neplatný znak%s" msgstr "Neplatný znak%s"
#: ../gramps/plugins/lib/libgedcom.py:1820 #: ../gramps/plugins/lib/libgedcom.py:1820
msgid "Your GEDCOM file is corrupted. It appears to have been truncated." msgid "Your GEDCOM file is corrupted. It appears to have been truncated."
@ -30092,7 +30092,7 @@ msgstr "Důvod úmrtí"
#. start feedback about import progress (GUI/TXT) #. start feedback about import progress (GUI/TXT)
#: ../gramps/plugins/lib/libprogen.py:1586 #: ../gramps/plugins/lib/libprogen.py:1586
msgid "Importing families." msgid "Importing families."
msgstr "Importují se rodiny" msgstr "Importují se rodiny."
#: ../gramps/plugins/lib/libprogen.py:1691 #: ../gramps/plugins/lib/libprogen.py:1691
msgid "Civil union" msgid "Civil union"
@ -36907,7 +36907,7 @@ msgstr "Volby Html"
#: ../gramps/plugins/webreport/narrativeweb.py:1678 #: ../gramps/plugins/webreport/narrativeweb.py:1678
#: ../gramps/plugins/webreport/webcal.py:1685 #: ../gramps/plugins/webreport/webcal.py:1685
msgid "File extension" msgid "File extension"
msgstr "přípona souboru" msgstr "Přípona souboru"
#: ../gramps/plugins/webreport/narrativeweb.py:1681 #: ../gramps/plugins/webreport/narrativeweb.py:1681
#: ../gramps/plugins/webreport/webcal.py:1688 #: ../gramps/plugins/webreport/webcal.py:1688

675
po/de.po

File diff suppressed because it is too large Load Diff

3708
po/es.po

File diff suppressed because it is too large Load Diff

1290
po/hu.po

File diff suppressed because it is too large Load Diff

20572
po/nl.po

File diff suppressed because it is too large Load Diff

416
po/ru.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -419,8 +419,7 @@ package_data = package_data_core + package_data_gui
# Resources # Resources
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
data_files_core = [('share/mime-info', ['data/gramps.mime']), data_files_core = [('share/mime-info', ['data/gramps.mime'])]
('share/icons', ['images/gramps.png'])]
DOC_FILES = ['AUTHORS', 'COPYING', 'FAQ', 'INSTALL', 'NEWS', 'README.md', DOC_FILES = ['AUTHORS', 'COPYING', 'FAQ', 'INSTALL', 'NEWS', 'README.md',
'TODO'] 'TODO']
GEDCOM_FILES = glob.glob(os.path.join('example', 'gedcom', '*.*')) GEDCOM_FILES = glob.glob(os.path.join('example', 'gedcom', '*.*'))
@ -441,8 +440,8 @@ data_files_core.append(('share/gramps/css/swanky-purse/images', SWANKY_IMG))
PNG_FILES = glob.glob(os.path.join('data', '*.png')) PNG_FILES = glob.glob(os.path.join('data', '*.png'))
SVG_FILES = glob.glob(os.path.join('data', '*.svg')) SVG_FILES = glob.glob(os.path.join('data', '*.svg'))
data_files_core.append(('share/icons/gnome/48x48/mimetypes', PNG_FILES)) data_files_core.append(('share/icons/hicolor/48x48/mimetypes', PNG_FILES))
data_files_core.append(('share/icons/gnome/scalable/mimetypes', SVG_FILES)) data_files_core.append(('share/icons/hicolor/scalable/mimetypes', SVG_FILES))
DTD_FILES = glob.glob(os.path.join('data', '*.dtd')) DTD_FILES = glob.glob(os.path.join('data', '*.dtd'))
RNG_FILES = glob.glob(os.path.join('data', '*.rng')) RNG_FILES = glob.glob(os.path.join('data', '*.rng'))
@ -465,6 +464,20 @@ data_files_gui.append(('share/gramps/images/hicolor/22x22/actions', ICON_22))
data_files_gui.append(('share/gramps/images/hicolor/24x24/actions', ICON_24)) data_files_gui.append(('share/gramps/images/hicolor/24x24/actions', ICON_24))
data_files_gui.append(('share/gramps/images/hicolor/48x48/actions', ICON_48)) data_files_gui.append(('share/gramps/images/hicolor/48x48/actions', ICON_48))
data_files_gui.append(('share/gramps/images/hicolor/scalable/actions', ICON_SC)) data_files_gui.append(('share/gramps/images/hicolor/scalable/actions', ICON_SC))
APP_16 = os.path.join(THEME, '16x16', 'apps', 'gramps.png')
APP_22 = os.path.join(THEME, '22x22', 'apps', 'gramps.png')
APP_24 = os.path.join(THEME, '24x24', 'apps', 'gramps.png')
APP_48 = os.path.join(THEME, '48x48', 'apps', 'gramps.png')
APP_128 = os.path.join(THEME, '128x128', 'apps', 'gramps.png')
APP_256 = os.path.join(THEME, '256x256', 'apps', 'gramps.png')
APP_SC = os.path.join(THEME, 'scalable', 'apps', 'gramps.svg')
data_files_gui.append(('share/icons/hicolor/16x16/apps', [APP_16]))
data_files_gui.append(('share/icons/hicolor/22x22/apps', [APP_22]))
data_files_gui.append(('share/icons/hicolor/24x24/apps', [APP_24]))
data_files_gui.append(('share/icons/hicolor/48x48/apps', [APP_48]))
data_files_gui.append(('share/icons/hicolor/128x128/apps', [APP_128]))
data_files_gui.append(('share/icons/hicolor/256x256/apps', [APP_256]))
data_files_gui.append(('share/icons/hicolor/scalable/apps', [APP_SC]))
data_files = data_files_core + data_files_gui data_files = data_files_core + data_files_gui