diff --git a/src/cli/arghandler.py b/src/cli/arghandler.py index f98fba352..ccefda83a 100644 --- a/src/cli/arghandler.py +++ b/src/cli/arghandler.py @@ -3,10 +3,12 @@ # # Copyright (C) 2000-2006 Donald N. Allingham, A. Roitman # Copyright (C) 2007-2009 B. Malengier -# Copyright (C) 2008 Lukasz Rymarczyk -# Copyright (C) 2008 Raphael Ackermann -# Copyright (C) 2008 Brian G. Matherly -# Copyright (C) 2010 Jakim Friant +# Copyright (C) 2008 Lukasz Rymarczyk +# Copyright (C) 2008 Raphael Ackermann +# Copyright (C) 2008 Brian G. Matherly +# Copyright (C) 2010 Jakim Friant +# Copyright (C) 2012 Doug Blank +# Copyright (C) 2012 Paul Franklin # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -168,7 +170,7 @@ class ArgHandler(object): self.imports = [] self.exports = [] - self.open = self.__handle_open_option(parser.open) + self.open = self.__handle_open_option(parser.open, parser.create) self.sanitize_args(parser.imports, parser.exports) def __error(self, msg1, msg2=None): @@ -196,10 +198,11 @@ class ArgHandler(object): for (value, family_tree_format) in exportlist: self.__handle_export_option(value, family_tree_format) - def __handle_open_option(self, value): + def __handle_open_option(self, value, create): """ - Handle the "-O" or "--open" option. + Handle the "-O" or "--open" and "-C" or "--create" options. Only Family trees or a dir with a family tree can be opened. + If create is True, then create the tree if it doesn't exist. """ if value is None: return None @@ -211,6 +214,14 @@ class ArgHandler(object): # Check if it is good. if not self.check_db(db_path, self.force_unlock): sys.exit(0) + if create: + self.__error( _("Error: Family tree '%s' already exists.\n" + "The '-C' option cannot be used.") % value) + sys.exit(0) + return db_path + elif create: + # create the tree here, and continue + db_path, title = self.dbman.create_new_db_cli(title=value) return db_path else: self.__error( _('Error: Input family tree "%s" does not exist.\n' diff --git a/src/cli/argparser.py b/src/cli/argparser.py index f2976d0fc..647da9fc9 100644 --- a/src/cli/argparser.py +++ b/src/cli/argparser.py @@ -4,9 +4,11 @@ # # Copyright (C) 2000-2006 Donald N. Allingham, A. Roitman # Copyright (C) 2007-2009 B. Malengier -# Copyright (C) 2008 Lukasz Rymarczyk -# Copyright (C) 2008 Raphael Ackermann -# Copyright (C) 2008 Brian G. Matherly +# Copyright (C) 2008 Lukasz Rymarczyk +# Copyright (C) 2008 Raphael Ackermann +# Copyright (C) 2008 Brian G. Matherly +# Copyright (C) 2012 Doug Blank +# Copyright (C) 2012 Paul Franklin # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -60,6 +62,7 @@ Help options Application options -O, --open=FAMILY_TREE Open family tree + -C, --create=FAMILY_TREE Create on open if new family tree -i, --import=FILENAME Import file -e, --export=FILENAME Export file -f, --format=FORMAT Specify family tree format @@ -174,6 +177,7 @@ class ArgParser(object): self.help = False self.usage = False self.force_unlock = False + self.create = None self.runqml = False self.errors = [] @@ -252,6 +256,8 @@ class ArgParser(object): option, value = options[opt_ix] if option in ( '-O', '--open'): self.open = value + elif option in ( '-C', '--create'): + self.create = value elif option in ( '-i', '--import'): family_tree_format = None if opt_ix < len(options) - 1 \ @@ -376,6 +382,12 @@ class ArgParser(object): if (self.exports or self.actions): # have both data and what to do with it => no GUI return False + elif self.create: + if self.open: # create an empty DB, open a GUI to fill it + return True + else: # create a DB, then do the import, with no GUI + self.open = self.create + return False else: # data given, but no action/export => GUI return True diff --git a/src/const.py.in b/src/const.py.in index 23048a4ce..af2cab646 100644 --- a/src/const.py.in +++ b/src/const.py.in @@ -3,6 +3,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2000-2006 Donald N. Allingham +# Copyright (C) 2012 Doug Blank # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -245,6 +246,7 @@ NO_GIVEN = "(%s)" % _("none") POPT_TABLE = [ ("config", 'c', str, None, 0, "Set config setting(s) and start Gramps", ""), ("open", 'O', str, None, 0, "Open family tree", "FAMILY_TREE"), + ("create", 'C', str, None, 0, "Create or Open family tree", "FAMILY_TREE"), ("import", 'i', str, None, 0, "Import file", "FILENAME"), ("export", 'e', str, None, 0, "Export file", "FILENAME"), ("format", 'f', str, None, 0, 'Specify format', "FORMAT"), @@ -286,6 +288,7 @@ LONGOPTS = [ "oaf-ior-fd=", "oaf-private", "open=", + "create=", "options=", "screen=", "show", @@ -298,6 +301,6 @@ LONGOPTS = [ "qml", ] -SHORTOPTS = "O:i:e:f:a:p:d:c:lLhuv?s" +SHORTOPTS = "O:C:i:e:f:a:p:d:c:lLhuv?s" GRAMPS_UUID = uuid.UUID('516cd010-5a41-470f-99f8-eb22f1098ad6')