Compare commits
46 Commits
Author | SHA1 | Date | |
---|---|---|---|
1f614bd76f | |||
0442c34258 | |||
c903f5e5a5 | |||
3329860f50 | |||
e7401f3aaa | |||
1a48e8a03e | |||
9a4adab9d6 | |||
bb0647274b | |||
f6bfb46fc0 | |||
b6fa5da8ee | |||
14c2d0e1b6 | |||
226e8c549a | |||
d173809d8c | |||
63c52fa1bb | |||
455628d44a | |||
670bb355cb | |||
202c7a9bf6 | |||
72955840f1 | |||
b8e73d5ee1 | |||
990db39664 | |||
9c0dca6bd1 | |||
02e0c1c67d | |||
ebf1715468 | |||
c10f2da00e | |||
9f71372a97 | |||
0993d9cfc3 | |||
34471834ab | |||
ff912f844c | |||
45eac501a9 | |||
d4e85c2397 | |||
c7a4d287f0 | |||
c0d622c16a | |||
b38f77f2aa | |||
d91fc9e2fb | |||
198602be61 | |||
3f9f3215ee | |||
beb388a30d | |||
29e78d4253 | |||
b80dcaf701 | |||
a876d94fbc | |||
95e1e8cb67 | |||
4147bc728a | |||
3a9a7053ec | |||
b96fd8a274 | |||
26cf0601d8 | |||
c59278ef20 |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
7
debian/changelog
vendored
@ -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
|
||||
|
||||
* New release
|
||||
|
2
debian/copyright
vendored
@ -3,7 +3,7 @@ Upstream-Name: Gramps
|
||||
Source: https://gramps-project.org
|
||||
|
||||
Files: *
|
||||
Copyright: 2000-2007, Alex Roitman
|
||||
Copyright: 2000-2007, 2020 Alex Roitman
|
||||
2000-2002, Bruce J. DeGrasse
|
||||
2000-2008, Donald N. Allingham
|
||||
2000-2007, Martin Hawlisch
|
||||
|
@ -145,7 +145,7 @@ sys.path.insert(0, ROOT_DIR)
|
||||
git_revision = get_git_revision(ROOT_DIR).replace('\n', '')
|
||||
if sys.platform == 'win32' and git_revision == "":
|
||||
git_revision = get_git_revision(os.path.split(ROOT_DIR)[1])
|
||||
#VERSION += git_revision
|
||||
VERSION += git_revision
|
||||
#VERSION += "-1"
|
||||
|
||||
#
|
||||
|
@ -52,7 +52,6 @@ methods should be changed to generate exceptions. Possibly by globally changing
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import logging
|
||||
import os
|
||||
import inspect
|
||||
from abc import ABCMeta
|
||||
from types import FunctionType
|
||||
@ -160,10 +159,12 @@ def wrapper(method):
|
||||
"""
|
||||
class_name = args[0].__class__.__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',
|
||||
class_name, func_name, os.path.split(caller_frame[1])[1],
|
||||
caller_frame[2], caller_frame[3])
|
||||
class_name, func_name, c_code.co_filename, c_frame.f_lineno,
|
||||
c_code.co_name)
|
||||
return method(*args, **keywargs)
|
||||
return wrapped
|
||||
|
||||
|
@ -78,15 +78,13 @@ class DbTxn(defaultdict):
|
||||
|
||||
elapsed_time = time.time() - self.start_time
|
||||
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, "
|
||||
"line %s, in %s **** %.2f seconds" %
|
||||
((hex(id(self)),)+
|
||||
(os.path.split(caller_frame[1])[1],)+
|
||||
tuple(caller_frame[i] for i in range(2, 4))+
|
||||
(elapsed_time,)
|
||||
)
|
||||
)
|
||||
"line %s, in %s **** %.2f seconds",
|
||||
hex(id(self)), c_code.co_filename, c_frame.f_lineno,
|
||||
c_code.co_name, elapsed_time)
|
||||
|
||||
return False
|
||||
|
||||
|
@ -42,6 +42,8 @@ from ..const import PLUGINS_DIR, USER_PLUGINS
|
||||
from ..constfunc import win, get_env_var
|
||||
from ..config import config
|
||||
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)
|
||||
db = database()
|
||||
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. "
|
||||
"Called from File %s, line %s, in %s"
|
||||
% ((db.__class__.__name__, hex(id(db)))
|
||||
+ (os.path.split(caller_frame[1])[1],)
|
||||
+ tuple(caller_frame[i] for i in range(2, 4))))
|
||||
"Called from File %s, line %s, in %s",
|
||||
db.__class__.__name__, hex(id(db)), c_code.co_filename,
|
||||
c_frame.f_lineno, c_code.co_name)
|
||||
|
||||
return db
|
||||
else:
|
||||
raise Exception("can't load database backend: '%s'" % plugin_id)
|
||||
@ -209,8 +213,8 @@ def write_lock_file(name):
|
||||
if win():
|
||||
user = get_env_var('USERNAME')
|
||||
host = get_env_var('USERDOMAIN')
|
||||
if host is None:
|
||||
host = ""
|
||||
if not user:
|
||||
user = _("Unknown")
|
||||
else:
|
||||
host = os.uname()[1]
|
||||
# An ugly workaround for os.getlogin() issue with Konsole
|
||||
|
@ -29,7 +29,6 @@ Provide the database state class
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
import sys
|
||||
import os
|
||||
import logging
|
||||
import inspect
|
||||
|
||||
@ -88,10 +87,12 @@ class DbState(Callback):
|
||||
"""
|
||||
class_name = self.__class__.__name__
|
||||
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',
|
||||
class_name, func_name, os.path.split(caller_frame[1])[1],
|
||||
caller_frame[2], caller_frame[3])
|
||||
class_name, func_name, c_code.co_filename, c_frame.f_lineno,
|
||||
c_code.co_name)
|
||||
return (self.db is not None) and self.db.is_open()
|
||||
|
||||
def change_database(self, database):
|
||||
|
@ -52,7 +52,7 @@ class MatchesEventFilter(MatchesEventFilterBase):
|
||||
name = _('Persons with events matching the <event filter>')
|
||||
description = _("Matches persons who have events that match a certain"
|
||||
" event filter")
|
||||
category = _('General filters')
|
||||
category = _('Event filters')
|
||||
|
||||
# we want to have this filter show event filters
|
||||
namespace = 'Event'
|
||||
|
@ -99,7 +99,8 @@ class BaseTest(unittest.TestCase):
|
||||
stime = perf_counter()
|
||||
results = filter_.apply(self.db)
|
||||
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))
|
||||
return set(results)
|
||||
|
||||
|
@ -113,6 +113,10 @@ else:
|
||||
_GS_CMD = where_is("gs")
|
||||
|
||||
|
||||
def esc(id_txt):
|
||||
return id_txt.replace('"', '\\"')
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# GVOptions
|
||||
@ -575,7 +579,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
text += ' URL="%s"' % url
|
||||
|
||||
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=""):
|
||||
"""
|
||||
@ -583,7 +587,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
|
||||
Implements GVDocBase.add_link().
|
||||
"""
|
||||
self.write(' "%s" -> "%s"' % (id1, id2))
|
||||
self.write(' "%s" -> "%s"' % (esc(id1), esc(id2)))
|
||||
|
||||
if style or head or tail:
|
||||
self.write(' [')
|
||||
@ -635,7 +639,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
|
||||
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):
|
||||
"""
|
||||
@ -643,7 +647,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
|
||||
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):
|
||||
""" Implement GVDocBase.start_subgraph() """
|
||||
|
@ -324,12 +324,16 @@ class Callback:
|
||||
return
|
||||
|
||||
# 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:
|
||||
self._warn("Attempt to emit to unknown signal: %s\n"
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
# check that the signal is not already being emitted. This prevents
|
||||
@ -340,7 +344,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
try:
|
||||
@ -358,7 +362,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
# type check arguments
|
||||
@ -369,7 +373,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
if len(args) > 0:
|
||||
@ -379,7 +383,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
if arg_types is not None:
|
||||
@ -391,7 +395,7 @@ class Callback:
|
||||
" line: %d\n"
|
||||
" func: %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]))))
|
||||
return
|
||||
if signal_name in self.__callback_map:
|
||||
|
@ -471,27 +471,36 @@ class ClipCitation(ClipHandleWrapper):
|
||||
|
||||
def refresh(self):
|
||||
if self._handle:
|
||||
citation = clipdb.get_citation_from_handle(self._handle)
|
||||
if citation:
|
||||
self._title = citation.get_gramps_id()
|
||||
notelist = list(map(clipdb.get_note_from_handle,
|
||||
citation.get_note_list()))
|
||||
srctxtlist = [note for note in notelist
|
||||
if note.get_type() == NoteType.SOURCE_TEXT]
|
||||
page = citation.get_page()
|
||||
if not page:
|
||||
page = _('not available|NA')
|
||||
text = ""
|
||||
if srctxtlist:
|
||||
text = " ".join(srctxtlist[0].get().split())
|
||||
#String must be unicode for truncation to work for non
|
||||
#ascii characters
|
||||
text = str(text)
|
||||
if len(text) > 60:
|
||||
text = text[:60] + "..."
|
||||
self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s") % {
|
||||
'pag' : page,
|
||||
'sourcetext' : text}
|
||||
try:
|
||||
citation = clipdb.get_citation_from_handle(self._handle)
|
||||
if citation:
|
||||
self._title = citation.get_gramps_id()
|
||||
notelist = list(map(clipdb.get_note_from_handle,
|
||||
citation.get_note_list()))
|
||||
srctxtlist = [note for note in notelist
|
||||
if note.get_type() == NoteType.SOURCE_TEXT]
|
||||
page = citation.get_page()
|
||||
if not page:
|
||||
page = _('not available|NA')
|
||||
text = ""
|
||||
if srctxtlist:
|
||||
text = " ".join(srctxtlist[0].get().split())
|
||||
#String must be unicode for truncation to work for non
|
||||
#ascii characters
|
||||
text = str(text)
|
||||
if len(text) > 60:
|
||||
text = text[:60] + "..."
|
||||
self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s"
|
||||
) % { 'pag' : page,
|
||||
'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):
|
||||
@ -1281,6 +1290,14 @@ class ClipboardListView:
|
||||
model.insert_before(node, data)
|
||||
else:
|
||||
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:
|
||||
model.append(data)
|
||||
|
||||
|
@ -532,7 +532,7 @@ class GrampsImportFileDialog(ManagedWindow):
|
||||
return True
|
||||
else:
|
||||
try:
|
||||
f = file(filename,'w')
|
||||
f = open(filename, 'w')
|
||||
f.close()
|
||||
os.remove(filename)
|
||||
except IOError:
|
||||
@ -548,7 +548,6 @@ class GrampsImportFileDialog(ManagedWindow):
|
||||
self.import_info = None
|
||||
self._begin_progress()
|
||||
self.uistate.set_sensitive(False)
|
||||
self.uistate.viewmanager.enable_menu(False)
|
||||
|
||||
try:
|
||||
#an importer can return an object with info, object.info_text()
|
||||
@ -569,7 +568,6 @@ class GrampsImportFileDialog(ManagedWindow):
|
||||
except Exception:
|
||||
_LOG.error("Failed to import database.", exc_info=True)
|
||||
self.uistate.set_sensitive(True)
|
||||
self.uistate.viewmanager.enable_menu(True)
|
||||
self._end_progress()
|
||||
|
||||
def build_menu_names(self, obj): # this is meaningless since it's modal
|
||||
|
@ -1013,7 +1013,7 @@ class DbManager(CLIDbManager, ManagedWindow):
|
||||
"""
|
||||
Handle the reception of drag data
|
||||
"""
|
||||
drag_value = selection.get_data().decode()
|
||||
drag_value = selection.get_data().decode().strip(' \r\n\x00')
|
||||
fname = None
|
||||
type = None
|
||||
title = None
|
||||
|
@ -520,7 +520,10 @@ class DisplayState(Callback):
|
||||
history.push(handle)
|
||||
|
||||
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):
|
||||
db.connect('long-op-start', self.progress_monitor.add_op)
|
||||
|
@ -39,6 +39,9 @@ from ..glade import Glade
|
||||
from gramps.gen.simple import SimpleAccess
|
||||
from gramps.gen.const import URL_MANUAL_SECT2
|
||||
|
||||
import logging
|
||||
_LOG = logging.getLogger("editlink")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Constants
|
||||
@ -154,6 +157,12 @@ class EditLink(ManagedWindow):
|
||||
|
||||
def _on_new_callback(self, obj):
|
||||
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(
|
||||
object_class, "handle", obj.handle))
|
||||
self.url_link.set_text("gramps://%s/%s/%s" %
|
||||
|
@ -1,11 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.18.3 -->
|
||||
<!-- Generated with glade 3.22.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.10"/>
|
||||
<requires lib="grampswidgets" version="0.0"/>
|
||||
<object class="GtkDialog" id="editplace">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<child type="titlebar">
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox" id="dialog-vbox19">
|
||||
<property name="visible">True</property>
|
||||
@ -101,7 +103,7 @@
|
||||
<child>
|
||||
<object class="GtkLabel" id="comment1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_focus">False</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="hexpand">True</property>
|
||||
|
@ -325,7 +325,6 @@ class BaseSelector(ManagedWindow):
|
||||
self.sortorder = Gtk.SortType.ASCENDING
|
||||
else:
|
||||
self.sortorder = Gtk.SortType.DESCENDING
|
||||
self.model.reverse_order()
|
||||
self.build_tree()
|
||||
|
||||
return True
|
||||
|
@ -496,6 +496,16 @@ class UIManager():
|
||||
"""
|
||||
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):
|
||||
''' A function used diagnostically to see what accels are present.
|
||||
This will only dump the current accel set, if other non-open windows
|
||||
|
@ -450,7 +450,7 @@ def open_file_with_default_application(path, uistate):
|
||||
GLib.timeout_add_seconds(1, poll_external, (proc, errstrings, uistate))
|
||||
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.
|
||||
"""
|
||||
|
@ -273,13 +273,13 @@ class ViewManager(CLIManager):
|
||||
Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK)
|
||||
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
self.window.add(vbox)
|
||||
hpane = Gtk.Paned()
|
||||
self.hpane = Gtk.Paned()
|
||||
self.ebox = Gtk.EventBox()
|
||||
|
||||
self.navigator = Navigator(self)
|
||||
self.ebox.add(self.navigator.get_top())
|
||||
hpane.pack1(self.ebox, False, False)
|
||||
hpane.show()
|
||||
self.hpane.pack1(self.ebox, False, False)
|
||||
self.hpane.show()
|
||||
|
||||
self.notebook = Gtk.Notebook()
|
||||
self.notebook.set_scrollable(True)
|
||||
@ -288,14 +288,14 @@ class ViewManager(CLIManager):
|
||||
self.__init_lists()
|
||||
self.__build_ui_manager()
|
||||
|
||||
hpane.add2(self.notebook)
|
||||
self.hpane.add2(self.notebook)
|
||||
toolbar = self.uimanager.get_widget('ToolBar')
|
||||
self.statusbar = Statusbar()
|
||||
self.statusbar.show()
|
||||
vbox.pack_end(self.statusbar, False, True, 0)
|
||||
vbox.pack_start(toolbar, False, True, 0)
|
||||
vbox.pack_end(hpane, True, True, 0)
|
||||
vbox.show()
|
||||
vbox.pack_end(self.hpane, True, True, 0)
|
||||
vbox.show_all()
|
||||
|
||||
self.uistate = DisplayState(self.window, self.statusbar,
|
||||
self.uimanager, self)
|
||||
@ -835,6 +835,7 @@ class ViewManager(CLIManager):
|
||||
hbox.add(Gtk.Label(label=pdata.name))
|
||||
hbox.show_all()
|
||||
page_num = self.notebook.append_page(page.get_display(), hbox)
|
||||
self.active_page.post_create()
|
||||
if not self.file_loaded:
|
||||
self.uimanager.set_actions_visible(self.actiongroup, False)
|
||||
self.uimanager.set_actions_visible(self.readonlygroup, False)
|
||||
@ -993,7 +994,8 @@ class ViewManager(CLIManager):
|
||||
The method called after load of a new database.
|
||||
Inherit CLI method to add GUI part
|
||||
"""
|
||||
self._post_load_newdb_nongui(filename, title)
|
||||
if self.dbstate.db.is_open():
|
||||
self._post_load_newdb_nongui(filename, title)
|
||||
self._post_load_newdb_gui(filename, filetype, title)
|
||||
|
||||
def _post_load_newdb_gui(self, filename, filetype, title=None):
|
||||
@ -1061,51 +1063,6 @@ class ViewManager(CLIManager):
|
||||
config.set('paths.recent-file', '')
|
||||
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):
|
||||
"""
|
||||
Change the UNDO label
|
||||
|
@ -138,6 +138,7 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
|
||||
self.sidebar = None
|
||||
self.bottombar = None
|
||||
self.widget = None
|
||||
self.vpane = None
|
||||
|
||||
DbGUIElement.__init__(self, dbstate.db)
|
||||
|
||||
@ -154,18 +155,20 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
|
||||
self.ident + "_bottombar",
|
||||
defaults[1])
|
||||
hpane = Gtk.Paned()
|
||||
vpane = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL)
|
||||
hpane.pack1(vpane, resize=True, shrink=False)
|
||||
self.vpane = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL)
|
||||
hpane.pack1(self.vpane, resize=True, shrink=False)
|
||||
hpane.pack2(self.sidebar, resize=False, shrink=False)
|
||||
hpane.show()
|
||||
vpane.show()
|
||||
self.vpane.show()
|
||||
|
||||
self.widget = self.build_widget()
|
||||
self.widget.show_all()
|
||||
self.widget.set_name('view')
|
||||
vpane.pack1(self.widget, resize=True, shrink=False)
|
||||
vpane.pack2(self.bottombar, resize=False, shrink=True)
|
||||
self._setup_slider_config(vpane, 'vpane.slider-position')
|
||||
self.vpane.pack1(self.widget, resize=True, shrink=False)
|
||||
self.vpane.pack2(self.bottombar, resize=False, shrink=True)
|
||||
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.hpane_sig = hpane.connect("draw", self.set_page_slider)
|
||||
@ -343,6 +346,11 @@ class PageView(DbGUIElement, metaclass=ABCMeta):
|
||||
self.bottombar.set_inactive()
|
||||
self.active = False
|
||||
|
||||
def post_create(self):
|
||||
if self.vpane:
|
||||
self._setup_slider_config(self.vpane, 'vpane.slider-position')
|
||||
self.vpane = None
|
||||
|
||||
@abstractmethod
|
||||
def build_tree(self):
|
||||
"""
|
||||
|
@ -29,7 +29,6 @@ BSDDBTxn class: Wrapper for BSDDB transaction-oriented methods
|
||||
#-------------------------------------------------------------------------
|
||||
import logging
|
||||
import inspect
|
||||
import os
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -73,14 +72,13 @@ class BSDDBTxn:
|
||||
"""
|
||||
# Conditional on __debug__ because all that frame stuff may be slow
|
||||
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,"
|
||||
" line %s, in %s" %
|
||||
((hex(id(self)),)+
|
||||
(os.path.split(caller_frame[1])[1],)+
|
||||
(tuple(caller_frame[i] for i in range(2, 4)))
|
||||
)
|
||||
)
|
||||
" line %s, in %s", hex(id(self)), c_code.co_filename,
|
||||
c_frame.f_lineno, c_code.co_name)
|
||||
|
||||
self.env = env
|
||||
self.db = db
|
||||
self.txn = None
|
||||
|
@ -31,7 +31,7 @@ SVG document generator.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from io import StringIO
|
||||
|
||||
from xml.sax.saxutils import escape
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
@ -147,7 +147,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
|
||||
linex = xpos + (width - self.string_width(font, line)) / 2
|
||||
self.buffer.write(
|
||||
'<tspan x="%4.2f" dy="%d">' % (linex, size) +
|
||||
line +
|
||||
escape(line) +
|
||||
'</tspan>'
|
||||
)
|
||||
self.buffer.write('</text>\n')
|
||||
@ -273,7 +273,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
|
||||
self.buffer.write(' font-family:serif;')
|
||||
self.buffer.write(
|
||||
'">' +
|
||||
line +
|
||||
escape(line) +
|
||||
'</text>\n'
|
||||
)
|
||||
|
||||
@ -307,7 +307,7 @@ class SvgDrawDoc(BaseDoc, DrawDoc):
|
||||
self.buffer.write('font-family:serif;')
|
||||
self.buffer.write(
|
||||
'">' +
|
||||
text +
|
||||
escape(text) +
|
||||
'</text>\n'
|
||||
)
|
||||
|
||||
|
@ -202,7 +202,7 @@ class CalendarWriter:
|
||||
date = event.get_date_object()
|
||||
place_handle = event.get_place_handle()
|
||||
date_string = self.format_date(date, 1)
|
||||
if date_string is not "":
|
||||
if date_string != "":
|
||||
# self.writeln("")
|
||||
self.writeln("BEGIN:VEVENT")
|
||||
time_s = time.gmtime(event.change)
|
||||
|
@ -300,6 +300,8 @@ class DateRange:
|
||||
"""
|
||||
start = None
|
||||
stop = None
|
||||
if date.is_empty():
|
||||
return (None, None)
|
||||
if date.modifier == Date.MOD_NONE:
|
||||
start = date.sortval
|
||||
stop = date.sortval
|
||||
|
@ -271,6 +271,7 @@ class BirthdayReport(Report):
|
||||
for person_handle in people:
|
||||
step()
|
||||
person = self.database.get_person_from_handle(person_handle)
|
||||
short_name = self.get_name(person)
|
||||
birth_ref = person.get_birth_ref()
|
||||
birth_date = None
|
||||
if birth_ref:
|
||||
|
@ -441,7 +441,8 @@ class TagReport(Report):
|
||||
|
||||
for place_handle in place_list:
|
||||
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()
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
VERSION_TUPLE = (5, 1, 3)
|
||||
VERSION_TUPLE = (5, 1, 4)
|
||||
VERSION_QUALIFIER = ""
|
||||
VERSION = '.'.join(map(str,VERSION_TUPLE)) + VERSION_QUALIFIER
|
||||
major_version = "%s.%s" % (VERSION_TUPLE[0], VERSION_TUPLE[1])
|
||||
|
BIN
images/hicolor/128x128/apps/gramps.png
Normal file
After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 709 B After Width: | Height: | Size: 709 B |
Before Width: | Height: | Size: 1003 B After Width: | Height: | Size: 1003 B |
Before Width: | Height: | Size: 1003 B After Width: | Height: | Size: 1003 B |
BIN
images/hicolor/256x256/apps/gramps.png
Normal file
After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Gramps</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>Gramps-5.1.2-1, (C) 1997-2020 The Gramps Team http://www.gramps-project.org</string>
|
||||
<string>Gramps-5.1.3-1, (C) 1997-2020 The Gramps Team http://www.gramps-project.org</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>gramps.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@ -17,11 +17,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>Gramps-5.1.2-1</string>
|
||||
<string>Gramps-5.1.3-1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>Gramps-5.1.2-1</string>
|
||||
<string>Gramps-5.1.3-1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright 1997 - 2020 The Gramps Team, GNU General Public License.</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
@ -41,7 +41,7 @@
|
||||
</binary>
|
||||
|
||||
<binary recurse="True">
|
||||
${prefix}/lib/python3.6/*.so
|
||||
${prefix}/lib/python3.8/*.so
|
||||
</binary>
|
||||
|
||||
<binary>
|
||||
@ -96,6 +96,10 @@
|
||||
${prefix}/lib/libgexiv2.dylib
|
||||
</binary>
|
||||
|
||||
<binary>
|
||||
${prefix}/lib/libgeocode-glib.dylib
|
||||
</binary>
|
||||
|
||||
<gir>
|
||||
${prefix}/share/gir-1.0/*.gir
|
||||
</gir>
|
||||
@ -144,19 +148,19 @@
|
||||
<!-- We have to pull in the python modules, which are mixed python
|
||||
and loadable modules. -->
|
||||
<data recurse="True">
|
||||
${prefix}/lib/python3.6/*.py
|
||||
${prefix}/lib/python3.8/*.py
|
||||
</data>
|
||||
|
||||
<data>
|
||||
${prefix}/lib/python3.6/config-3.6m-darwin/
|
||||
${prefix}/lib/python3.8/config-3.8-darwin/
|
||||
</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>
|
||||
${prefix}/include/python3.6m/pyconfig.h
|
||||
${prefix}/include/python3.8/pyconfig.h
|
||||
</data>
|
||||
|
||||
|
||||
@ -173,7 +177,7 @@
|
||||
</data>
|
||||
|
||||
<data recurse="True">
|
||||
${prefix}/lib/python3.6/site-packages/gramps/*.glade
|
||||
${prefix}/lib/python3.8/site-packages/gramps/*.glade
|
||||
</data>
|
||||
|
||||
<data>
|
||||
|
@ -65,9 +65,9 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
|
||||
</distutils>
|
||||
|
||||
<distutils id="gramps" supports-non-srcdir-builds="no">
|
||||
<branch module="gramps-project/gramps/archive/v5.1.2.tar.gz"
|
||||
repo="github-tarball" version="5.1.2"
|
||||
checkoutdir="gramps-gramps-5.1.2"/>
|
||||
<branch module="gramps-project/gramps/archive/v5.1.3.tar.gz"
|
||||
repo="github-tarball" version="5.1.3"
|
||||
checkoutdir="gramps-gramps-5.1.3"/>
|
||||
<dependencies>
|
||||
<dep package="meta-gramps-modules"/>
|
||||
</dependencies>
|
||||
@ -106,6 +106,25 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
|
||||
<branch module="xdg-utils-1.0.2.tgz" version="1.0.2" repo="xdg-utils"/>
|
||||
</autotools>
|
||||
|
||||
<meson id="json-glib">
|
||||
<branch module="json-glib/1.4/json-glib-1.4.4.tar.xz"
|
||||
version="1.4.4" repo="ftp.gnome.org"
|
||||
hash="sha256:720c5f4379513dc11fd97dc75336eb0c0d3338c53128044d9fabec4374f4bc47"/>
|
||||
<dependencies>
|
||||
<dep package="gobject-introspection"/>
|
||||
</dependencies>
|
||||
</meson>
|
||||
|
||||
<meson id="geocode-glib" mesonargs="-Denable-gtk-doc=false">
|
||||
<branch module="geocode-glib/3.26/geocode-glib-3.26.2.tar.xz"
|
||||
version="3.26.2" repo="ftp.gnome.org"
|
||||
hash="sha256:01fe84cfa0be50c6e401147a2bc5e2f1574326e2293b55c69879be3e82030fd1"/>
|
||||
<dependencies>
|
||||
<dep package="json-glib"/>
|
||||
<dep package="libsoup"/>
|
||||
</dependencies>
|
||||
</meson>
|
||||
|
||||
<autotools id="osmgpsmap" skip-autogen="never"
|
||||
autogenargs="--disable-gtk-doc-html"
|
||||
supports-non-srcdir-builds="no">
|
||||
@ -173,6 +192,7 @@ gtk-mac-bundler gtk-osx-build/projects/gramps/gramps.bundle
|
||||
<dep package="shared-mime-info"/>
|
||||
<dep package="hunspell"/>
|
||||
<dep package="gtkspell3"/>
|
||||
<dep package="geocode-glib"/>
|
||||
<dep package="osmgpsmap"/>
|
||||
<dep package="graphviz"/>
|
||||
<dep package="gexiv2"/>
|
||||
|
@ -40,6 +40,8 @@ environ['USERPROFILE'] = environ['HOME']
|
||||
environ['APPDATA'] = join(environ['HOME'], 'Library', 'Application Support')
|
||||
environ['PATH'] = join(bundle_contents, 'MacOS') + ':' + environ['PATH']
|
||||
|
||||
if __name__ == '__main__':
|
||||
__file__ = 'gramps_launcher.py'
|
||||
import gramps.grampsapp as app
|
||||
app.main()
|
||||
|
||||
|
94
po/cs.po
@ -38,7 +38,7 @@ msgstr ""
|
||||
"Project-Id-Version: gramps 3.3.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-15 22:20+0200\n"
|
||||
"PO-Revision-Date: 2020-01-07 16:39+0100\n"
|
||||
"PO-Revision-Date: 2020-09-25 09:02+0200\n"
|
||||
"Last-Translator: Zdeněk Hataš <zdenek.hatas@gmail.com>\n"
|
||||
"Language-Team: Czech <Czech <gnome-cs-list@gnome.org>>\n"
|
||||
"Language: cs\n"
|
||||
@ -48,7 +48,7 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Poedit-Bookmarks: 2035,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
|
||||
#: ../data/gramps.appdata.xml.in.h:1
|
||||
msgid ""
|
||||
@ -2514,7 +2514,7 @@ msgstr "P=červen|D=června|T=červnu|O=červnem"
|
||||
|
||||
#: ../gramps/gen/datehandler/_datestrings.py:85
|
||||
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
|
||||
msgid "localized lexeme inflections||August"
|
||||
@ -11805,11 +11805,13 @@ msgid "Show text label beside Navigator buttons (requires restart)"
|
||||
msgstr "Zobrazovat text vedle tlačítek Navigátoru (projeví se po restartu)"
|
||||
|
||||
#: ../gramps/gui/configure.py:1343
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Show or hide text beside Navigator buttons (People, Families, Events...).\n"
|
||||
"Requires Gramps restart to apply."
|
||||
msgstr "Zobrazovat text vedle tlačítek Navigátoru (projeví se po restartu)"
|
||||
msgstr ""
|
||||
"Zobrazovat nebo skrýt text vedle tlačítek Navigátoru (Osoby, Rodiny, "
|
||||
"Události ...).\n"
|
||||
"Projeví se po restartu Gramps."
|
||||
|
||||
#: ../gramps/gui/configure.py:1349
|
||||
msgid "Show close button in gramplet bar tabs"
|
||||
@ -14097,7 +14099,7 @@ msgstr "Link_Editor"
|
||||
|
||||
#: ../gramps/gui/editors/editlink.py:87 ../gramps/gui/editors/editlink.py:239
|
||||
msgid "Link Editor"
|
||||
msgstr " Editor linků"
|
||||
msgstr "Editor linků"
|
||||
|
||||
#: ../gramps/gui/editors/editlink.py:91
|
||||
msgid "Internet Address"
|
||||
@ -15388,7 +15390,7 @@ msgstr "Příště se již neptat"
|
||||
|
||||
#: ../gramps/gui/glade/displaystate.glade:7
|
||||
msgid "Gramps Warnings"
|
||||
msgstr " Varování Gramps"
|
||||
msgstr "Varování Gramps"
|
||||
|
||||
#: ../gramps/gui/glade/editaddress.glade:44
|
||||
#: ../gramps/gui/glade/editchildref.glade:47
|
||||
@ -23318,9 +23320,8 @@ msgid "Gramplet showing the events for all the family"
|
||||
msgstr "Gramplet zobrazující události pro celou rodinu"
|
||||
|
||||
#: ../gramps/plugins/gramplet/leak.py:99
|
||||
#, fuzzy
|
||||
msgid "Referrer"
|
||||
msgstr "Odkaz"
|
||||
msgstr "Odkazující"
|
||||
|
||||
#: ../gramps/plugins/gramplet/leak.py:103
|
||||
msgid "Uncollected object"
|
||||
@ -23434,7 +23435,7 @@ msgstr "Dvojklikem zobrazit osoby v generacích"
|
||||
#: ../gramps/plugins/gramplet/pedigreegramplet.py:264
|
||||
#, python-format
|
||||
msgid " has 1 of 1 individual (%(percent)s complete)\n"
|
||||
msgstr "zahrnuje pouze jednoho jednotlivce (dokončeno z %(percent)s)\n"
|
||||
msgstr " zahrnuje pouze jednoho jednotlivce (dokončeno z %(percent)s)\n"
|
||||
|
||||
#. Create the Generation title, set an index marker
|
||||
#: ../gramps/plugins/gramplet/pedigreegramplet.py:267
|
||||
@ -25069,7 +25070,7 @@ msgstr "Oddělený(á)"
|
||||
|
||||
#: ../gramps/plugins/importer/importgeneweb.py:197
|
||||
msgid "GeneWeb import"
|
||||
msgstr "importovat GeneWeb"
|
||||
msgstr "Importovat GeneWeb"
|
||||
|
||||
#: ../gramps/plugins/importer/importgeneweb.py:912
|
||||
#, python-brace-format
|
||||
@ -25167,11 +25168,12 @@ msgstr ""
|
||||
|
||||
#: ../gramps/plugins/importer/importprogen.glade:49
|
||||
#: ../gramps/plugins/importer/importprogen.glade:70
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Source reference\n"
|
||||
"(out of Settings)"
|
||||
msgstr "Hledají se problémové odkazy na prameny"
|
||||
msgstr ""
|
||||
"Zdrojový odkaz\n"
|
||||
"(mimo Předvolby)"
|
||||
|
||||
#: ../gramps/plugins/importer/importprogen.glade:124
|
||||
msgid ""
|
||||
@ -25218,11 +25220,10 @@ msgid "Import Text"
|
||||
msgstr "Import textu"
|
||||
|
||||
#: ../gramps/plugins/importer/importprogen.glade:415
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Default Tagtext\n"
|
||||
"(out of Settings)."
|
||||
msgstr "Nastavení výchozí předpony a spojky"
|
||||
msgstr "Výchozí text štítku (mimo Předvolby)."
|
||||
|
||||
#: ../gramps/plugins/importer/importprogen.glade:443
|
||||
msgid "Import Filename."
|
||||
@ -25330,7 +25331,7 @@ msgid ""
|
||||
"event description."
|
||||
msgstr ""
|
||||
"Uložit datum narození\n"
|
||||
"v popisu události"
|
||||
"v popisu události."
|
||||
|
||||
#: ../gramps/plugins/importer/importprogen.glade:1495
|
||||
msgid ""
|
||||
@ -25338,7 +25339,7 @@ msgid ""
|
||||
"event description."
|
||||
msgstr ""
|
||||
"Uložit datum úmrtí\n"
|
||||
"v popisu události"
|
||||
"v popisu události."
|
||||
|
||||
#: ../gramps/plugins/importer/importprogen.glade:1515
|
||||
msgid "Diverse"
|
||||
@ -25605,7 +25606,7 @@ msgstr " Štítky: %d\n"
|
||||
#: ../gramps/plugins/importer/importxml.py:291
|
||||
#, python-format
|
||||
msgid " Citations: %d\n"
|
||||
msgstr "Citací: %d\n"
|
||||
msgstr " Citací: %d\n"
|
||||
|
||||
#: ../gramps/plugins/importer/importxml.py:293
|
||||
msgid "Number of new objects imported:\n"
|
||||
@ -25916,7 +25917,7 @@ msgstr "Řádek ignorován "
|
||||
#: ../gramps/plugins/lib/libgedcom.py:1540
|
||||
#, python-format
|
||||
msgid "Illegal character%s"
|
||||
msgstr "neplatný znak%s"
|
||||
msgstr "Neplatný znak%s"
|
||||
|
||||
#: ../gramps/plugins/lib/libgedcom.py:1820
|
||||
msgid "Your GEDCOM file is corrupted. It appears to have been truncated."
|
||||
@ -30078,7 +30079,7 @@ msgstr "Importují se osoby."
|
||||
|
||||
#: ../gramps/plugins/lib/libprogen.py:1414
|
||||
msgid "see address on "
|
||||
msgstr "viz adresa"
|
||||
msgstr "viz adresa "
|
||||
|
||||
#: ../gramps/plugins/lib/libprogen.py:1417
|
||||
msgid "see also address"
|
||||
@ -30091,7 +30092,7 @@ msgstr "Důvod úmrtí"
|
||||
#. start feedback about import progress (GUI/TXT)
|
||||
#: ../gramps/plugins/lib/libprogen.py:1586
|
||||
msgid "Importing families."
|
||||
msgstr "Importují se rodiny"
|
||||
msgstr "Importují se rodiny."
|
||||
|
||||
#: ../gramps/plugins/lib/libprogen.py:1691
|
||||
msgid "Civil union"
|
||||
@ -30467,12 +30468,12 @@ msgstr "Dánsko"
|
||||
#. TODO for Arabic, should the next line's comma be translated?
|
||||
#: ../gramps/plugins/mapservices/eniroswedenmap.py:81
|
||||
msgid " parish"
|
||||
msgstr "farnost"
|
||||
msgstr " farnost"
|
||||
|
||||
#. TODO for Arabic, should the next line's comma be translated?
|
||||
#: ../gramps/plugins/mapservices/eniroswedenmap.py:87
|
||||
msgid " state"
|
||||
msgstr "kraj"
|
||||
msgstr " kraj"
|
||||
|
||||
#: ../gramps/plugins/mapservices/eniroswedenmap.py:150
|
||||
msgid "Latitude not within '54.55' to '69.05'\n"
|
||||
@ -31548,9 +31549,8 @@ msgid "Dead Symbol"
|
||||
msgstr "Symbol úmrtí"
|
||||
|
||||
#: ../gramps/plugins/textreport/birthdayreport.py:512
|
||||
#, fuzzy
|
||||
msgid "This will show after name to indicate that person is dead"
|
||||
msgstr "Štítek indikující, že osoba je kompletní"
|
||||
msgstr "Štítek za jménem indikující, že osoba zemřela"
|
||||
|
||||
#: ../gramps/plugins/textreport/birthdayreport.py:519
|
||||
msgid "Show event year"
|
||||
@ -31643,7 +31643,7 @@ msgstr "sp. %(reference)s : %(spouse)s"
|
||||
#: ../gramps/plugins/textreport/descendreport.py:393
|
||||
#, python-format
|
||||
msgid "%s sp."
|
||||
msgstr " %s sp."
|
||||
msgstr "%s sp."
|
||||
|
||||
#: ../gramps/plugins/textreport/descendreport.py:526
|
||||
#: ../gramps/plugins/textreport/detdescendantreport.py:1011
|
||||
@ -34288,9 +34288,8 @@ msgstr "ukazatel"
|
||||
|
||||
#. 2=double underline
|
||||
#: ../gramps/plugins/tool/removespaces.py:135
|
||||
#, fuzzy
|
||||
msgid "firstname"
|
||||
msgstr "Vyhovují lidé s chybějícím křestním jménem nebo příjmením"
|
||||
msgstr "křestní jméno"
|
||||
|
||||
#. 2=double underline
|
||||
#: ../gramps/plugins/tool/removespaces.py:143
|
||||
@ -35031,19 +35030,16 @@ msgid "Old age but no death"
|
||||
msgstr "Starý ale živý"
|
||||
|
||||
#: ../gramps/plugins/tool/verify.py:1806
|
||||
#, fuzzy
|
||||
msgid "Birth equals death"
|
||||
msgstr "Smrt před narozením"
|
||||
msgstr "Narození je rovno úmrtí"
|
||||
|
||||
#: ../gramps/plugins/tool/verify.py:1824
|
||||
#, fuzzy
|
||||
msgid "Birth equals marriage"
|
||||
msgstr "Sňatek před narozením"
|
||||
msgstr "Narození je rovno sňatku"
|
||||
|
||||
#: ../gramps/plugins/tool/verify.py:1842
|
||||
#, fuzzy
|
||||
msgid "Death equals marriage"
|
||||
msgstr "Sňatek po smrti"
|
||||
msgstr "Úmrtí je rovna sňatku"
|
||||
|
||||
#: ../gramps/plugins/view/citationlistview.py:105
|
||||
msgid "Source: Title"
|
||||
@ -35413,7 +35409,6 @@ msgstr "Stejnoměrné rozložení potomků"
|
||||
|
||||
#: ../gramps/plugins/view/fanchart2wayview.py:329
|
||||
#: ../gramps/plugins/view/fanchartdescview.py:328
|
||||
#, fuzzy
|
||||
msgid "Size proportional to number of descendants"
|
||||
msgstr "Velikost proporcionálně k počtu potomků"
|
||||
|
||||
@ -35600,14 +35595,13 @@ msgid "Selecting all events"
|
||||
msgstr "Vybírají se všechny události"
|
||||
|
||||
#: ../gramps/plugins/view/geoevents.py:368
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Right click on the map and select 'show all events' to show all known events "
|
||||
"with coordinates. You can use the history to navigate on the map. You can "
|
||||
"use filtering."
|
||||
msgstr ""
|
||||
"Klikněte pravým tlačítkem myši na mapu s vyberte 'Zobrazit všechna místa' "
|
||||
"pro zobrazení všech známých míst včetně souřadnic. Pro navigaci v mapě "
|
||||
"Klikněte pravým tlačítkem myši na mapu s vyberte 'zobrazit všechny události' "
|
||||
"pro zobrazení všech známých událostí včetně souřadnic. Pro navigaci v mapě "
|
||||
"můžete použít historii. Můžete použít filtrování."
|
||||
|
||||
#: ../gramps/plugins/view/geoevents.py:408
|
||||
@ -36243,7 +36237,7 @@ msgstr " (1 bratr)"
|
||||
#: ../gramps/plugins/view/relview.py:1053
|
||||
#: ../gramps/plugins/view/relview.py:1108
|
||||
msgid " (1 sister)"
|
||||
msgstr "(1 sestra)"
|
||||
msgstr " (1 sestra)"
|
||||
|
||||
#: ../gramps/plugins/view/relview.py:1055
|
||||
#: ../gramps/plugins/view/relview.py:1110
|
||||
@ -36310,14 +36304,14 @@ msgstr "Spusťte prosím nástroj pro ověření integrity/opravy databáze"
|
||||
#, python-brace-format
|
||||
msgid " ({number_of} child)"
|
||||
msgid_plural " ({number_of} children)"
|
||||
msgstr[0] "({number_of} potomek)"
|
||||
msgstr[1] "({number_of} potomci)"
|
||||
msgstr[2] "({number_of} potomků)"
|
||||
msgstr[0] " ({number_of} potomek)"
|
||||
msgstr[1] " ({number_of} potomci)"
|
||||
msgstr[2] " ({number_of} potomků)"
|
||||
|
||||
#: ../gramps/plugins/view/relview.py:1567
|
||||
#: ../gramps/plugins/view/relview.py:1613
|
||||
msgid " (no children)"
|
||||
msgstr "(bez dětí)"
|
||||
msgstr " (bez dětí)"
|
||||
|
||||
#: ../gramps/plugins/view/relview.py:1871
|
||||
msgid "Use shading"
|
||||
@ -36556,7 +36550,7 @@ msgstr "Poslední změna nastala %(date)s"
|
||||
#: ../gramps/plugins/webreport/basepage.py:1319
|
||||
#, python-format
|
||||
msgid " on %(date)s"
|
||||
msgstr "%(date)s"
|
||||
msgstr " %(date)s"
|
||||
|
||||
#: ../gramps/plugins/webreport/basepage.py:1340
|
||||
#: ../gramps/plugins/webreport/basepage.py:1345
|
||||
@ -36622,7 +36616,7 @@ msgstr "Další"
|
||||
|
||||
#: ../gramps/plugins/webreport/basepage.py:2127
|
||||
msgid " [Click to Go]"
|
||||
msgstr "[Kliknout pro pokračování]"
|
||||
msgstr " [Kliknout pro pokračování]"
|
||||
|
||||
#: ../gramps/plugins/webreport/basepage.py:2151
|
||||
msgid "Latter-Day Saints/ LDS Ordinance"
|
||||
@ -36913,7 +36907,7 @@ msgstr "Volby Html"
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1678
|
||||
#: ../gramps/plugins/webreport/webcal.py:1685
|
||||
msgid "File extension"
|
||||
msgstr "přípona souboru"
|
||||
msgstr "Přípona souboru"
|
||||
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1681
|
||||
#: ../gramps/plugins/webreport/webcal.py:1688
|
||||
@ -37043,9 +37037,9 @@ msgid "Sort places references either by date or by name"
|
||||
msgstr "Třídit odkazy na místa podle data nebo jména"
|
||||
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1796
|
||||
#, fuzzy
|
||||
msgid "Sort the places references by date or by name. Not set means by date."
|
||||
msgstr "Třídit odkazy na místa podle data nebo jména"
|
||||
msgstr ""
|
||||
"Třídit odkazy na místa podle data nebo jména. Nenastaveno znamená podle data."
|
||||
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1800
|
||||
msgid "Graph generations"
|
||||
@ -37184,13 +37178,11 @@ msgid "Max width of initial image"
|
||||
msgstr "Maximální šířka výchozího obrázku"
|
||||
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1893
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This allows you to set the maximum width of the image shown on the media "
|
||||
"page."
|
||||
msgstr ""
|
||||
"Umožní vám nastavit maximální šířku obrázku zobrazeného na stránce média. "
|
||||
"Nastavení na 0 ruší limit."
|
||||
"Umožní vám nastavit maximální šířku obrázku zobrazeného na stránce média."
|
||||
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1898
|
||||
msgid "Max height of initial image"
|
||||
|
19
po/sv.po
@ -27,7 +27,7 @@ msgstr ""
|
||||
"Project-Id-Version: sv\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-07-15 22:20+0200\n"
|
||||
"PO-Revision-Date: 2020-06-22 21:42+0200\n"
|
||||
"PO-Revision-Date: 2020-08-12 20:03+0200\n"
|
||||
"Last-Translator: Pär Ekholm <pehlm@pekholm.se>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: sv\n"
|
||||
@ -35,7 +35,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
|
||||
#: ../data/gramps.appdata.xml.in.h:1
|
||||
msgid ""
|
||||
@ -30540,6 +30540,18 @@ msgid ""
|
||||
"\n"
|
||||
"The next errors will be normal"
|
||||
msgstr ""
|
||||
"Du måste verifiera och ändra tilecachen\n"
|
||||
"...\n"
|
||||
"[geography]\n"
|
||||
"...\n"
|
||||
"path='bad/path'\n"
|
||||
"...\n"
|
||||
"i gramps.ini-filen :\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
"Innan ändring av gramps.ini-filen, måste gramps stängas ned\n"
|
||||
"\n"
|
||||
"Senare fel kommer att vara normala"
|
||||
|
||||
#: ../gramps/plugins/lib/maps/osmgps.py:174
|
||||
#: ../gramps/plugins/lib/maps/osmgps.py:239
|
||||
@ -37287,13 +37299,12 @@ msgid "Max width of initial image"
|
||||
msgstr "Största bredd på första bild"
|
||||
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1893
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This allows you to set the maximum width of the image shown on the media "
|
||||
"page."
|
||||
msgstr ""
|
||||
"Detta tillåter dig att ställa in den största bredden för bilden som visas på "
|
||||
"mediasidan. Sätt till 0 för obegränsad bredd."
|
||||
"mediasidan."
|
||||
|
||||
#: ../gramps/plugins/webreport/narrativeweb.py:1898
|
||||
msgid "Max height of initial image"
|
||||
|
425
po/zh_CN.po
21
setup.py
@ -419,8 +419,7 @@ package_data = package_data_core + package_data_gui
|
||||
# Resources
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
data_files_core = [('share/mime-info', ['data/gramps.mime']),
|
||||
('share/icons', ['images/gramps.png'])]
|
||||
data_files_core = [('share/mime-info', ['data/gramps.mime'])]
|
||||
DOC_FILES = ['AUTHORS', 'COPYING', 'FAQ', 'INSTALL', 'NEWS', 'README.md',
|
||||
'TODO']
|
||||
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'))
|
||||
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/gnome/scalable/mimetypes', SVG_FILES))
|
||||
data_files_core.append(('share/icons/hicolor/48x48/mimetypes', PNG_FILES))
|
||||
data_files_core.append(('share/icons/hicolor/scalable/mimetypes', SVG_FILES))
|
||||
|
||||
DTD_FILES = glob.glob(os.path.join('data', '*.dtd'))
|
||||
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/48x48/actions', ICON_48))
|
||||
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
|
||||
|
||||
|