From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
--- .tx/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.tx/config b/.tx/config index 5944c9e..4891d47 100644 --- a/.tx/config +++ b/.tx/config @@ -1,7 +1,7 @@ [main] host = https://www.transifex.com
-[anaconda-1.master] +[anaconda.f22-branch] file_filter = po/<lang>.po source_file = po/anaconda.pot source_lang = en
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
Forgot that we are using the temporary transifex branch. --- .tx/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.tx/config b/.tx/config index 4891d47..b8b9f2e 100644 --- a/.tx/config +++ b/.tx/config @@ -1,7 +1,7 @@ [main] host = https://www.transifex.com
-[anaconda.f22-branch] +[anaconda-1.f22-branch] file_filter = po/<lang>.po source_file = po/anaconda.pot source_lang = en
From: David Shea dshea@redhat.com
We currently test regular expressions in two ways: does the expression match and not match lists of strings, and does the expression parse a string into the expected groups. Share those two methods in a common module. --- tests/lib/regexcheck.py | 71 ++++++++++++++++++++++++++++++++++++ tests/regex_tests/groupparse_test.py | 11 +----- tests/regex_tests/hostname_test.py | 29 ++++----------- tests/regex_tests/repo_name_test.py | 23 ++---------- tests/regex_tests/url_test.py | 17 +-------- tests/regex_tests/username_test.py | 32 +++++----------- 6 files changed, 94 insertions(+), 89 deletions(-) create mode 100644 tests/lib/regexcheck.py
diff --git a/tests/lib/regexcheck.py b/tests/lib/regexcheck.py new file mode 100644 index 0000000..57307d9 --- /dev/null +++ b/tests/lib/regexcheck.py @@ -0,0 +1,71 @@ +# +# regexcheck.py: check a regular expression against lists of matching and non-matching strings +# +# Copyright (C) 2015 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# Author: David Shea dshea@redhat.com + +def regex_match(expression, goodlist, badlist): + """ Check that a regular expression matches and does not match lists of strings. + + This method will print a message for any failure and return a a bool + to indicate whether the testcase passed. + + :param expression: a compiled regular expression object + :param goodlist: a list of strings expected to be matched by expression + :param badlist: a list of strings expected not to be matched by expression + :returns: True if all strings in the lists matched or did not match as expected + :rtype: bool + """ + + success = True + + for good in goodlist: + if expression.match(good) is None: + success = False + print("Good string %s did not match expression" % good) + + for bad in badlist: + if expression.match(bad) is not None: + success = False + print("Bad string %s matched expression" % bad) + + return success + +def regex_group(expression, test_cases): + """ Check that a regex parses strings into expected groups. + + Test cases is a list of tuples of the form (test_string, expected_result) + where expected_result is the groups tuples that should be returned by + regex.match. + + :param expression: a compiled expression object + :param test_cases: a list of test strings and expected results + :returns: True if all test cases return the expected groups + :rtype: bool + """ + + success = True + for test_str, result in test_cases: + match = expression.match(test_str) + if match is not None: + match = match.groups() + + if match != result: + print("Test case `%s' did not parse as `%s': %s" % (test_str, result, match)) + success = False + + return success diff --git a/tests/regex_tests/groupparse_test.py b/tests/regex_tests/groupparse_test.py index 0d2e6ba..80e7187 100644 --- a/tests/regex_tests/groupparse_test.py +++ b/tests/regex_tests/groupparse_test.py @@ -20,6 +20,7 @@ # import unittest
+from regexcheck import regex_group from pyanaconda.regexes import GROUPLIST_FANCY_PARSE
class GroupParseTestCase(unittest.TestCase): @@ -49,13 +50,5 @@ def group_list_test(self): ("", ("", None)), ]
- got_error = False - for group, result in tests: - try: - self.assertEqual(GROUPLIST_FANCY_PARSE.match(group).groups(), result) - except AssertionError: - got_error = True - print("Group parse error: `%s' did not not parse as `%s'" % (group, result)) - - if got_error: + if not regex_group(GROUPLIST_FANCY_PARSE, tests): self.fail() diff --git a/tests/regex_tests/hostname_test.py b/tests/regex_tests/hostname_test.py index 529fbb7..df04327 100644 --- a/tests/regex_tests/hostname_test.py +++ b/tests/regex_tests/hostname_test.py @@ -22,28 +22,10 @@ import unittest import re
+from regexcheck import regex_match from pyanaconda.regexes import HOSTNAME_PATTERN_WITHOUT_ANCHORS, IPV4_PATTERN_WITHOUT_ANCHORS,\ IPV6_PATTERN_WITHOUT_ANCHORS
-def _run_tests(testcase, expression, goodlist, badlist): - got_error = False - for good in goodlist: - try: - testcase.assertIsNotNone(expression.match(good)) - except AssertionError: - got_error = True - print("Good string %s did not match expression" % good) - - for bad in badlist: - try: - testcase.assertIsNone(expression.match(bad)) - except AssertionError: - got_error = True - print("Bad string %s matched expression" % bad) - - if got_error: - testcase.fail() - class HostnameRegexTestCase(unittest.TestCase): def hostname_test(self): good_tests = [ @@ -76,7 +58,8 @@ def hostname_test(self): ]
hostname_re = re.compile('^' + HOSTNAME_PATTERN_WITHOUT_ANCHORS + '$') - _run_tests(self, hostname_re, good_tests, bad_tests) + if not regex_match(hostname_re, good_tests, bad_tests): + self.fail()
class IPv4RegexTestCase(unittest.TestCase): def ipv4_test(self): @@ -99,7 +82,8 @@ def ipv4_test(self): ]
ipv4_re = re.compile('^(' + IPV4_PATTERN_WITHOUT_ANCHORS + ')$') - _run_tests(self, ipv4_re, good_tests, bad_tests) + if not regex_match(ipv4_re, good_tests, bad_tests): + self.fail()
class IPv6RegexTestCase(unittest.TestCase): def ipv6_test(self): @@ -187,4 +171,5 @@ def ipv6_test(self): ]
ipv6_re = re.compile('^(' + IPV6_PATTERN_WITHOUT_ANCHORS + ')$') - _run_tests(self, ipv6_re, good_tests, bad_tests) + if not regex_match(ipv6_re, good_tests, bad_tests): + self.fail() diff --git a/tests/regex_tests/repo_name_test.py b/tests/regex_tests/repo_name_test.py index 85d9376..76ac0f9 100644 --- a/tests/regex_tests/repo_name_test.py +++ b/tests/regex_tests/repo_name_test.py @@ -21,27 +21,9 @@ # import unittest
+from regexcheck import regex_match from pyanaconda.regexes import REPO_NAME_VALID
-def _run_tests(testcase, expression, goodlist, badlist): - got_error = False - for good in goodlist: - try: - testcase.assertIsNotNone(expression.match(good)) - except AssertionError: - got_error = True - print("Good string %s did not match expression" % good) - - for bad in badlist: - try: - testcase.assertIsNone(expression.match(bad)) - except AssertionError: - got_error = True - print("Bad string %s matched expression" % bad) - - if got_error: - testcase.fail() - class RepoNameTestCase(unittest.TestCase): def reponame_test(self): good_tests = [ @@ -63,4 +45,5 @@ def reponame_test(self): '[reponame]' ]
- _run_tests(self, REPO_NAME_VALID, good_tests, bad_tests) + if not regex_match(REPO_NAME_VALID, good_tests, bad_tests): + self.fail() diff --git a/tests/regex_tests/url_test.py b/tests/regex_tests/url_test.py index 3c77f7d..0f40ea2 100644 --- a/tests/regex_tests/url_test.py +++ b/tests/regex_tests/url_test.py @@ -21,6 +21,7 @@
import unittest
+from regexcheck import regex_group from pyanaconda.regexes import URL_PARSE
class URLRegexTestCase(unittest.TestCase): @@ -165,19 +166,5 @@ def url_regex_test(self): ]
- got_error = False - for proxy, result in tests: - match = URL_PARSE.match(proxy) - if match: - match= match.groups() - else: - match = None - - try: - self.assertEqual(match, result) - except AssertionError: - got_error = True - print("Proxy parse error: `%s' did not parse as `%s': %s" % (proxy, result, match)) - - if got_error: + if not regex_group(URL_PARSE, tests): self.fail() diff --git a/tests/regex_tests/username_test.py b/tests/regex_tests/username_test.py index 3ac6bd7..b205945 100644 --- a/tests/regex_tests/username_test.py +++ b/tests/regex_tests/username_test.py @@ -21,28 +21,10 @@ # import unittest
+from regexcheck import regex_match from pyanaconda.regexes import GECOS_VALID, USERNAME_VALID, GROUPNAME_VALID, GROUPLIST_SIMPLE_VALID
class UsernameRegexTestCase(unittest.TestCase): - def _run_tests(self, expression, goodlist, badlist): - got_error = False - for good in goodlist: - try: - self.assertIsNotNone(expression.match(good)) - except AssertionError: - got_error = True - print("Good string %s did not match expression" % good) - - for bad in badlist: - try: - self.assertIsNone(expression.match(bad)) - except AssertionError: - got_error = True - print("Bad string %s matched expression" % bad) - - if got_error: - self.fail() - def gecos_test(self): """Test a list of possible Full Name values.""" # These are valid full names @@ -59,7 +41,8 @@ def gecos_test(self): # These are invalid full names bad_tests = ['George:Burdell']
- self._run_tests(GECOS_VALID, good_tests, bad_tests) + if not regex_match(GECOS_VALID, good_tests, bad_tests): + self.fail()
def username_test(self): """Test a list of possible username values.""" @@ -94,10 +77,12 @@ def username_test(self): '-' ]
- self._run_tests(USERNAME_VALID, good_tests, bad_tests) + if not regex_match(USERNAME_VALID, good_tests, bad_tests): + self.fail()
# The group name checks for the same thing as the user name - self._run_tests(GROUPNAME_VALID, good_tests, bad_tests) + if not regex_match(GROUPNAME_VALID, good_tests, bad_tests): + self.fail()
def grouplist_simple_test(self): good_tests = [ @@ -129,4 +114,5 @@ def grouplist_simple_test(self): 'gburdell, wheel,' ]
- self._run_tests(GROUPLIST_SIMPLE_VALID, good_tests, bad_tests) + if not regex_match(GROUPLIST_SIMPLE_VALID, good_tests, bad_tests): + self.fail()
From: David Shea dshea@redhat.com
If you make a Fedora image with a timestamp-based version you are going to get Fedora release twenty million some. If you are doing this please stop doing this. --- pyanaconda/packaging/__init__.py | 5 ----- 1 file changed, 5 deletions(-)
diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py index a8388e7..7f93b5e 100644 --- a/pyanaconda/packaging/__init__.py +++ b/pyanaconda/packaging/__init__.py @@ -393,11 +393,6 @@ def _getReleaseVersion(self, url): except ConfigParser.Error: pass
- # If the version looks like a timestamp, assume it's rawhide - # plz change before Fedora version 9999999 - if version[:8].isdigit(): - version = "rawhide" - log.debug("got a release version of %s", version) return version
From: David Shea dshea@redhat.com
--- tests/pylint/pylint-one.sh | 1 + 1 file changed, 1 insertion(+)
diff --git a/tests/pylint/pylint-one.sh b/tests/pylint/pylint-one.sh index d21df61..8a88f59 100755 --- a/tests/pylint/pylint-one.sh +++ b/tests/pylint/pylint-one.sh @@ -19,6 +19,7 @@ pylint_output="$(pylint \ --ignored-classes=DefaultInstall,Popen,QueueFactory,TransactionSet \ --defining-attr-methods=__init__,_grabObjects,initialize,reset,start,setUp \ --load-plugins=intl,preconf,markup,eintr,pointless-override,environ \ + --init-import=y \ --init-hook=\ 'import gi.overrides, os; gi.overrides.__path__[0:0] = (os.environ["ANACONDA_WIDGETS_OVERRIDES"].split(":") if "ANACONDA_WIDGETS_OVERRIDES" in os.environ else [])' \
From: David Shea dshea@redhat.com
--- pyanaconda/ui/gui/__init__.py | 2 +- pyanaconda/ui/tui/spokes/__init__.py | 2 +- tests/gui/outside/__init__.py | 1 - 3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py index c42744e..8b88484 100644 --- a/pyanaconda/ui/gui/__init__.py +++ b/pyanaconda/ui/gui/__init__.py @@ -31,7 +31,7 @@ from pyanaconda import threads
from pyanaconda.ui import UserInterface, common -from pyanaconda.ui.gui.utils import gtk_action_wait, busyCursor, unbusyCursor +from pyanaconda.ui.gui.utils import gtk_action_wait, unbusyCursor from pyanaconda import ihelp import os.path
diff --git a/pyanaconda/ui/tui/spokes/__init__.py b/pyanaconda/ui/tui/spokes/__init__.py index 8429bbf..8b1769f 100644 --- a/pyanaconda/ui/tui/spokes/__init__.py +++ b/pyanaconda/ui/tui/spokes/__init__.py @@ -19,7 +19,7 @@ # Red Hat Author(s): Martin Sivak msivak@redhat.com # from pyanaconda.ui.tui import simpleline as tui -from pyanaconda.ui.tui.tuiobject import TUIObject, YesNoDialog +from pyanaconda.ui.tui.tuiobject import TUIObject from pyanaconda.ui.common import Spoke, StandaloneSpoke, NormalSpoke from pyanaconda.users import validatePassword, cryptPassword import re diff --git a/tests/gui/outside/__init__.py b/tests/gui/outside/__init__.py index 597314a..c1e293a 100644 --- a/tests/gui/outside/__init__.py +++ b/tests/gui/outside/__init__.py @@ -19,7 +19,6 @@
__all__ = ["Creator", "OutsideMixin"]
-import blivet from blivet.size import MiB
from contextlib import contextmanager
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
--- anaconda.spec.in | 21 +++++++++++++++++++++ configure.ac | 2 +- po/anaconda.pot | 32 ++++++++++++++++---------------- 3 files changed, 38 insertions(+), 17 deletions(-)
diff --git a/anaconda.spec.in b/anaconda.spec.in index ca187c4..d0746a5 100644 --- a/anaconda.spec.in +++ b/anaconda.spec.in @@ -306,6 +306,27 @@ update-desktop-database &> /dev/null || : %{_prefix}/libexec/anaconda/dd_*
%changelog +* Fri Feb 20 2015 Samantha N. Bueno sbueno+anaconda@redhat.com - 22.20.1-1 +- Remove unused imports (dshea) +- Check for unused imports in __init__ files (dshea) +- Remove timestamp-based version support. (#1194494) (dshea) +- Add test lib methods to check regexes (dshea) +- Update txconfig for f22-branch (again).... (sbueno+anaconda) +- Update txconfig for f22-branch. (sbueno+anaconda) +- Cleanup BuildRequires (mkolman) +- Remove obsolete imports. (amulhern) +- Make print statement print output w/out surrounding parentheses. (amulhern) +- Remove an unused import (dshea) +- rpmostreepayload: Honor noverifyssl (walters) +- typo: packaging: Don't vary name of "verified" (walters) +- Disable the metacity mouse-button-modifier setting (dshea) +- Fix completion setting in TUI language spoke. (#1192230) (sbueno+anaconda) +- Remove the pylint false positives for the GLib module (dshea) +- Use ExtendAction for --ignore flag (amulhern) +- Use a simple ExtendAction for add_rpms option. (amulhern) +- Fix log message formating (mkolman) +- Don't clear nonexistent DNF package download location (#1193121) (mkolman) + * Mon Feb 16 2015 Brian C. Lane bcl@redhat.com - 22.20-1 - Make range usage Python 3 compatible (#1014220) (mkolman) - Make map() usage Python 3 compatible (#1014220) (mkolman) diff --git a/configure.ac b/configure.ac index f7979d5..f101fc5 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ m4_define(python_required_version, 2.5)
AC_PREREQ([2.63]) -AC_INIT([anaconda], [22.20], [anaconda-devel-list@redhat.com]) +AC_INIT([anaconda], [22.20.1], [anaconda-devel-list@redhat.com]) AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2 tar-ustar])
AC_CONFIG_HEADERS([config.h]) diff --git a/po/anaconda.pot b/po/anaconda.pot index ceb4886..0732e9c 100644 --- a/po/anaconda.pot +++ b/po/anaconda.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: anaconda 22.19\n" +"Project-Id-Version: anaconda 22.20.0\n" "Report-Msgid-Bugs-To: anaconda-devel-list@redhat.com\n" -"POT-Creation-Date: 2015-02-16 17:17-0800\n" +"POT-Creation-Date: 2015-02-20 15:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME EMAIL@ADDRESS\n" "Language-Team: LANGUAGE LL@li.org\n" @@ -1218,15 +1218,15 @@ msgid "" "Please enter a new one, or leave blank for no password." msgstr ""
-#: pyanaconda/packaging/__init__.py:1120 +#: pyanaconda/packaging/__init__.py:1113 msgid "Failed to set up installation source" msgstr ""
-#: pyanaconda/packaging/__init__.py:1121 +#: pyanaconda/packaging/__init__.py:1114 msgid "Error downloading package metadata" msgstr ""
-#: pyanaconda/packaging/__init__.py:1122 +#: pyanaconda/packaging/__init__.py:1115 msgid "No installation source available" msgstr ""
@@ -1280,22 +1280,22 @@ msgstr "" msgid "Installing %s" msgstr ""
-#: pyanaconda/packaging/rpmostreepayload.py:159 +#: pyanaconda/packaging/rpmostreepayload.py:163 #, python-format msgid "Starting pull of %(branchName)s from %(source)s" msgstr ""
-#: pyanaconda/packaging/rpmostreepayload.py:175 +#: pyanaconda/packaging/rpmostreepayload.py:179 #, python-format msgid "Preparing deployment of %s" msgstr ""
-#: pyanaconda/packaging/rpmostreepayload.py:195 +#: pyanaconda/packaging/rpmostreepayload.py:199 #, python-format msgid "Deployment starting: %s" msgstr ""
-#: pyanaconda/packaging/rpmostreepayload.py:198 +#: pyanaconda/packaging/rpmostreepayload.py:202 #, python-format msgid "Deployment complete: %s" msgstr "" @@ -1519,29 +1519,29 @@ msgstr "" msgid "The password cannot be more than eight characters long." msgstr ""
-#: pyanaconda/ui/tui/spokes/langsupport.py:40 +#: pyanaconda/ui/tui/spokes/langsupport.py:38 msgid "Language settings" msgstr ""
-#: pyanaconda/ui/tui/spokes/langsupport.py:70 +#: pyanaconda/ui/tui/spokes/langsupport.py:65 msgid "Language is not set." msgstr ""
-#: pyanaconda/ui/tui/spokes/langsupport.py:80 +#: pyanaconda/ui/tui/spokes/langsupport.py:75 msgid "Available locales" msgstr ""
-#: pyanaconda/ui/tui/spokes/langsupport.py:83 +#: pyanaconda/ui/tui/spokes/langsupport.py:78 msgid "Available languages" msgstr ""
#. TRANSLATORS: 'b' to go back -#: pyanaconda/ui/tui/spokes/langsupport.py:117 +#: pyanaconda/ui/tui/spokes/langsupport.py:112 msgctxt "TUI|Spoke Navigation|Language Support" msgid "b" msgstr ""
-#: pyanaconda/ui/tui/spokes/langsupport.py:125 +#: pyanaconda/ui/tui/spokes/langsupport.py:120 msgid "" "Please select language support to install.\n" "[b to language list, c to continue, q to quit]: " @@ -5624,7 +5624,7 @@ msgstr "" msgid "Install the live CD to your hard disk" msgstr ""
-#: /home/bcl/Red_Hat/projs/anaconda/data/liveinst/console.apps/liveinst:5 +#: /home/sbueno/scm/anaconda/data/liveinst/console.apps/liveinst:5 msgid "Starting Install to Hard Drive" msgstr ""
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
This reverts commit 1f996de767aeb5ef361aea7b040c9852640dba43.
The primary transifex project was re-activated. --- scripts/makebumpver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/makebumpver b/scripts/makebumpver index 4ec6c07..bb200ff 100755 --- a/scripts/makebumpver +++ b/scripts/makebumpver @@ -506,7 +506,7 @@ class MakeBumpVer: return False
ret = True - section_name = "anaconda-1."+self.git_branch + section_name = "anaconda."+self.git_branch
config = ConfigParser() config.read(self.tx_config)
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
This reverts commit af3c396932e75a04784e5e164a55bbf89dc54055.
The primary transifex project was re-activated. --- .tx/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.tx/config b/.tx/config index b8b9f2e..4891d47 100644 --- a/.tx/config +++ b/.tx/config @@ -1,7 +1,7 @@ [main] host = https://www.transifex.com
-[anaconda-1.f22-branch] +[anaconda.f22-branch] file_filter = po/<lang>.po source_file = po/anaconda.pot source_lang = en
From: Adam Williamson awilliam@redhat.com
It's a method, not an attribute. We were only checking if the method existed. This caused teamd to always be pulled in.
(cherry picked from commit 348b2bec71baabdcdac88b989d7e34ab23cd9a86) --- pyanaconda/install.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyanaconda/install.py b/pyanaconda/install.py index a68e793..a0c6f7f 100644 --- a/pyanaconda/install.py +++ b/pyanaconda/install.py @@ -216,7 +216,7 @@ def doInstall(storage, payload, ksdata, instClass): if willInstallBootloader: packages += storage.bootloader.packages
- if network.is_using_team_device: + if network.is_using_team_device(): packages.append("teamd")
# don't try to install packages from the install class' ignored list and the
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
This does a few things: -- self.errors -> self._error in the TUI source spoke; and it is now just a boolean value instead of a list, same as in the GUI source spoke; any error messages that were previously being stored here in a list were never being shown anyway -- gets rid of _update_summary() since that was never used -- before attempting to apply a user's selection, clear any errors which may have been incurred from a prior attempt
Resolves: rhbz#1192259 --- pyanaconda/ui/tui/spokes/source.py | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/pyanaconda/ui/tui/spokes/source.py b/pyanaconda/ui/tui/spokes/source.py index 50c50b8..67043dd 100644 --- a/pyanaconda/ui/tui/spokes/source.py +++ b/pyanaconda/ui/tui/spokes/source.py @@ -63,7 +63,7 @@ def __init__(self, app, data, storage, payload, instclass): EditTUISpoke.__init__(self, app, data, storage, payload, instclass) SourceSwitchHandler.__init__(self) self._ready = False - self.errors = [] + self._error = False self._cdrom = None
def initialize(self): @@ -88,7 +88,7 @@ def _initialize(self): self._ready = True
def _payload_error(self): - self.errors.append(payloadMgr.error) + self._error = True
def _repo_status(self): """ Return a string describing repo url or lack of one. """ @@ -113,28 +113,19 @@ def showable(self):
@property def status(self): - if self.errors: + if self._error: return _("Error setting up software source") elif not self.ready: return _("Processing...") else: return self._repo_status()
- def _update_summary(self): - """ Update screen with a summary. Show errors if there are any. """ - summary = (_("Repo URL set to: %s") % self._repo_status()) - - if self.errors: - summary = summary + "\n" + "\n".join(self.errors) - - return summary - @property def completed(self): if flags.automatedInstall and self.ready and not self.payload.baseRepo: return False else: - return not self.errors and self.ready and (self.data.method.method or self.payload.baseRepo) + return not self._error and self.ready and (self.data.method.method or self.payload.baseRepo)
def refresh(self, args=None): EditTUISpoke.refresh(self, args) @@ -198,7 +189,7 @@ def input(self, args, key): # preliminary NFS source switch self.set_source_nfs() newspoke = SpecifyNFSRepoSpoke(self.app, self.data, self.storage, - self.payload, self.instclass, self._selection, self.errors) + self.payload, self.instclass, self._selection, self._error) self.app.switch_screen_modal(newspoke) self.apply() self.close() @@ -240,6 +231,10 @@ def apply(self): if flags.askmethod: flags.askmethod = False
+ # if we had any errors, e.g. from a previous attempt to set the source, + # clear them at this point + self._error = False + payloadMgr.restartThread(self.storage, self.data, self.payload, self.instclass, checkmount=False)
@@ -291,11 +286,11 @@ class SpecifyNFSRepoSpoke(EditTUISpoke, SourceSwitchHandler): Entry(N_("NFS mount options"), "opts", re.compile(".*$"), True) ]
- def __init__(self, app, data, storage, payload, instclass, selection, errors): + def __init__(self, app, data, storage, payload, instclass, selection, error): EditTUISpoke.__init__(self, app, data, storage, payload, instclass) SourceSwitchHandler.__init__(self) self.selection = selection - self.errors = errors + self._error = error
nfs = self.data.method self.args = DataHolder(server="", opts=nfs.opts or "") @@ -322,7 +317,7 @@ def apply(self): (self.data.method.server, self.data.method.dir) = self.args.server.split(":", 2) except ValueError as err: LOG.error("ValueError: %s", err) - self.errors.append(_("Failed to set up installation source. Check the source address.")) + self._error = True return
opts = self.args.opts or ""
From: Vratislav Podzimek vpodzime@redhat.com
If we create an encrypted swap we need to use the LUKS device in fstab for such swap not the partition/LV.
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- pyanaconda/kickstart.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index 756eb81..3656352 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -933,6 +933,7 @@ def execute(self, storage, ksdata, instClass): raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("The "%s" file system type is not supported.") % ty))
+ add_fstab_swap = None # If we were given a pre-existing LV to create a filesystem on, we need # to verify it and its VG exists and then schedule a new format action # to take place there. Also, we only support a subset of all the @@ -956,7 +957,7 @@ def execute(self, storage, ksdata, instClass):
devicetree.registerAction(ActionCreateFormat(device, fmt)) if ty == "swap": - storage.addFstabSwap(device) + add_fstab_swap = device else: # If a previous device has claimed this mount point, delete the # old one. @@ -1011,7 +1012,7 @@ def execute(self, storage, ksdata, instClass):
storage.createDevice(request) if ty == "swap": - storage.addFstabSwap(request) + add_fstab_swap = request
if self.encrypted: if self.passphrase and not storage.encryptionPassphrase: @@ -1038,8 +1039,16 @@ def execute(self, storage, ksdata, instClass): luksdev = LUKSDevice("luks%d" % storage.nextID, fmt=luksformat, parents=request) + if ty == "swap": + # swap is on the LUKS device not on the LUKS' parent device, + # override the info here + add_fstab_swap = luksdev + storage.createDevice(luksdev)
+ if add_fstab_swap: + storage.addFstabSwap(add_fstab_swap) + class Logging(commands.logging.FC6_Logging): def execute(self, *args): if logger.loglevel == DEFAULT_LEVEL: @@ -1267,6 +1276,7 @@ def execute(self, storage, ksdata, instClass):
kwargs["primary"] = self.primOnly
+ add_fstab_swap = None # If we were given a pre-existing partition to create a filesystem on, # we need to verify it exists and then schedule a new format action to # take place there. Also, we only support a subset of all the options @@ -1289,7 +1299,7 @@ def execute(self, storage, ksdata, instClass):
devicetree.registerAction(ActionCreateFormat(device, kwargs["fmt"])) if ty == "swap": - storage.addFstabSwap(device) + add_fstab_swap = device # tmpfs mounts are not disks and don't occupy a disk partition, # so handle them here elif self.fstype == "tmpfs": @@ -1315,7 +1325,7 @@ def execute(self, storage, ksdata, instClass):
storage.createDevice(request) if ty == "swap": - storage.addFstabSwap(request) + add_fstab_swap = request
if self.encrypted: if self.passphrase and not storage.encryptionPassphrase: @@ -1342,8 +1352,17 @@ def execute(self, storage, ksdata, instClass): luksdev = LUKSDevice("luks%d" % storage.nextID, fmt=luksformat, parents=request) + + if ty == "swap": + # swap is on the LUKS device not on the LUKS' parent device, + # override the info here + add_fstab_swap = luksdev + storage.createDevice(luksdev)
+ if add_fstab_swap: + storage.addFstabSwap(add_fstab_swap) + class Raid(commands.raid.F20_Raid): def execute(self, storage, ksdata, instClass): for r in self.raidList:
From: David Shea dshea@redhat.com
execWithRedirect returns an int, not a tuple, and the argv used to execute realm still had the command as argv[0], which is no longer needed.
(cherry picked from commit 08a55ebeb6ce6fa9e66332bb9f34d0d69ea80ecc) --- pyanaconda/kickstart.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index 3656352..abd36af 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -562,11 +562,11 @@ def execute(self, *args): # no explicit password arg using implicit --no-password pw_args = ["--no-password"]
- argv = ["realm", "join", "--install", iutil.getSysroot(), "--verbose"] + \ + argv = ["join", "--install", iutil.getSysroot(), "--verbose"] + \ pw_args + self.join_args rc = -1 try: - rc = iutil.execWithRedirect("realm", argv)[0] + rc = iutil.execWithRedirect("realm", argv) except OSError: pass
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
--- anaconda.spec.in | 10 +++++ configure.ac | 2 +- po/anaconda.pot | 109 +++++++++++++++++++++++++------------------------------ 3 files changed, 61 insertions(+), 60 deletions(-)
diff --git a/anaconda.spec.in b/anaconda.spec.in index d0746a5..a3f3f30 100644 --- a/anaconda.spec.in +++ b/anaconda.spec.in @@ -306,6 +306,16 @@ update-desktop-database &> /dev/null || : %{_prefix}/libexec/anaconda/dd_*
%changelog +* Tue Mar 03 2015 Samantha N. Bueno sbueno+anaconda@redhat.com - 22.20.2-1 +- Fix a bad usage of execWithRedirect (#1197290) (dshea) +- Use the LUKS device for swap in fstab (#1196200) (vpodzime) +- Clear TUI source spoke errors that may have been leftover from a prior + attempt. (#1192259) (sbueno+anaconda) +- install.py: fix the 'is team device' check (awilliam) +- Revert "Update txconfig for f22-branch (again)...." (sbueno+anaconda) +- Revert "makebumpver needs to know about anaconda-1 transifex name" + (sbueno+anaconda) + * Fri Feb 20 2015 Samantha N. Bueno sbueno+anaconda@redhat.com - 22.20.1-1 - Remove unused imports (dshea) - Check for unused imports in __init__ files (dshea) diff --git a/configure.ac b/configure.ac index f101fc5..2773f10 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ m4_define(python_required_version, 2.5)
AC_PREREQ([2.63]) -AC_INIT([anaconda], [22.20.1], [anaconda-devel-list@redhat.com]) +AC_INIT([anaconda], [22.20.2], [anaconda-devel-list@redhat.com]) AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2 tar-ustar])
AC_CONFIG_HEADERS([config.h]) diff --git a/po/anaconda.pot b/po/anaconda.pot index 0732e9c..4a44b21 100644 --- a/po/anaconda.pot +++ b/po/anaconda.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: anaconda 22.20.0\n" +"Project-Id-Version: anaconda 22.20.1\n" "Report-Msgid-Bugs-To: anaconda-devel-list@redhat.com\n" -"POT-Creation-Date: 2015-02-20 15:58-0500\n" +"POT-Creation-Date: 2015-03-03 15:25-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME EMAIL@ADDRESS\n" "Language-Team: LANGUAGE LL@li.org\n" @@ -513,7 +513,7 @@ msgid "" msgstr ""
#: pyanaconda/kickstart.py:485 pyanaconda/kickstart.py:858 -#: pyanaconda/kickstart.py:1401 +#: pyanaconda/kickstart.py:1420 #, python-format msgid "The mount point "%s" is not valid. It must start with a /." msgstr "" @@ -586,14 +586,14 @@ msgstr "" msgid "logvol --noformat must also use the --name= option." msgstr ""
-#: pyanaconda/kickstart.py:884 pyanaconda/kickstart.py:944 +#: pyanaconda/kickstart.py:884 pyanaconda/kickstart.py:945 #, python-format msgid "Logical volume "%s" given in logvol command does not exist." msgstr ""
#: pyanaconda/kickstart.py:895 pyanaconda/kickstart.py:904 -#: pyanaconda/kickstart.py:954 pyanaconda/kickstart.py:1197 -#: pyanaconda/kickstart.py:1206 pyanaconda/kickstart.py:1287 +#: pyanaconda/kickstart.py:955 pyanaconda/kickstart.py:1206 +#: pyanaconda/kickstart.py:1215 pyanaconda/kickstart.py:1297 #, python-format msgid "Target size "%(size)s" for device "%(device)s" is invalid." msgstr "" @@ -612,122 +612,122 @@ msgid "" "extent size of "%(extentSize)s"." msgstr ""
-#: pyanaconda/kickstart.py:934 pyanaconda/kickstart.py:1224 -#: pyanaconda/kickstart.py:1451 +#: pyanaconda/kickstart.py:934 pyanaconda/kickstart.py:1233 +#: pyanaconda/kickstart.py:1470 #, python-format msgid "The "%s" file system type is not supported." msgstr ""
-#: pyanaconda/kickstart.py:1065 pyanaconda/kickstart.py:1069 +#: pyanaconda/kickstart.py:1074 pyanaconda/kickstart.py:1078 #, python-format msgid "The %s kickstart command is not currently supported." msgstr ""
-#: pyanaconda/kickstart.py:1094 +#: pyanaconda/kickstart.py:1103 #, python-format msgid "No disk found for specified BIOS disk "%s"." msgstr ""
-#: pyanaconda/kickstart.py:1129 +#: pyanaconda/kickstart.py:1138 #, python-format msgid "RAID partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1140 pyanaconda/kickstart.py:1376 +#: pyanaconda/kickstart.py:1149 pyanaconda/kickstart.py:1395 #, python-format msgid "PV partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1151 pyanaconda/kickstart.py:1386 +#: pyanaconda/kickstart.py:1160 pyanaconda/kickstart.py:1405 #, python-format msgid "Btrfs partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1174 +#: pyanaconda/kickstart.py:1183 #, python-format msgid "The size "%s" is invalid." msgstr ""
-#: pyanaconda/kickstart.py:1181 +#: pyanaconda/kickstart.py:1190 msgid "part --noformat must also use the --onpart option." msgstr ""
-#: pyanaconda/kickstart.py:1186 pyanaconda/kickstart.py:1278 +#: pyanaconda/kickstart.py:1195 pyanaconda/kickstart.py:1288 #, python-format msgid "Partition "%s" given in part command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1239 pyanaconda/kickstart.py:1253 +#: pyanaconda/kickstart.py:1248 pyanaconda/kickstart.py:1262 #, python-format msgid "Disk "%s" given in part command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1242 +#: pyanaconda/kickstart.py:1251 #, python-format msgid "Cannot install to unpartitionable device "%s"." msgstr ""
-#: pyanaconda/kickstart.py:1249 +#: pyanaconda/kickstart.py:1258 #, python-format msgid "Disk "%s" in part command is not partitioned." msgstr ""
-#: pyanaconda/kickstart.py:1262 +#: pyanaconda/kickstart.py:1271 #, python-format msgid "The maximum size "%s" is invalid." msgstr ""
-#: pyanaconda/kickstart.py:1408 +#: pyanaconda/kickstart.py:1427 msgid "raid --noformat must also use the --device option." msgstr ""
-#: pyanaconda/kickstart.py:1413 +#: pyanaconda/kickstart.py:1432 #, python-format msgid "RAID device "%s" given in raid command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1434 +#: pyanaconda/kickstart.py:1453 #, python-format msgid "" "RAID device "%(device)s" has a format of "%(format)s", but should have a " "format of "mdmember"." msgstr ""
-#: pyanaconda/kickstart.py:1439 +#: pyanaconda/kickstart.py:1458 #, python-format msgid "Tried to use undefined partition "%s" in RAID specification." msgstr ""
-#: pyanaconda/kickstart.py:1467 +#: pyanaconda/kickstart.py:1486 #, python-format msgid "RAID volume "%s" specified with --useexisting does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1474 +#: pyanaconda/kickstart.py:1493 #, python-format msgid "The RAID volume name "%s" is already in use." msgstr ""
-#: pyanaconda/kickstart.py:1689 +#: pyanaconda/kickstart.py:1708 #, python-format msgid "" "Physical volume "%(device)s" has a format of "%(format)s", but should " "have a format of "lvmpv"." msgstr ""
-#: pyanaconda/kickstart.py:1694 +#: pyanaconda/kickstart.py:1713 #, python-format msgid "Tried to use undefined partition "%s" in Volume Group specification" msgstr ""
-#: pyanaconda/kickstart.py:1700 +#: pyanaconda/kickstart.py:1719 #, python-format msgid "" "Volume group "%s" defined without any physical volumes. Either specify " "physical volumes or use --useexisting." msgstr ""
-#: pyanaconda/kickstart.py:1710 +#: pyanaconda/kickstart.py:1729 #, python-format msgid "" "Volume group given physical extent size of "%(extentSize)s", but must be " @@ -735,29 +735,29 @@ msgid "" "%(validExtentSizes)s." msgstr ""
-#: pyanaconda/kickstart.py:1717 +#: pyanaconda/kickstart.py:1736 msgid "" "volgroup --noformat and volgroup --useexisting must also use the --name= " "option." msgstr ""
-#: pyanaconda/kickstart.py:1722 +#: pyanaconda/kickstart.py:1741 #, python-format msgid "Volume group "%s" given in volgroup command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1725 +#: pyanaconda/kickstart.py:1744 #, python-format msgid "The volume group name "%s" is already in use." msgstr ""
-#: pyanaconda/kickstart.py:1781 +#: pyanaconda/kickstart.py:1800 msgid "" "The upgrade kickstart command is no longer supported. Upgrade functionality " "is provided through fedup." msgstr ""
-#: pyanaconda/kickstart.py:1995 +#: pyanaconda/kickstart.py:2014 msgid "Running pre-installation scripts" msgstr ""
@@ -1742,7 +1742,7 @@ msgid "No disks selected; please select at least one disk to install to." msgstr ""
#: pyanaconda/ui/tui/spokes/storage.py:193 -#: pyanaconda/ui/tui/spokes/source.py:371 +#: pyanaconda/ui/tui/spokes/source.py:366 #: pyanaconda/ui/gui/spokes/source.py:652 #: pyanaconda/ui/gui/spokes/storage.py:576 msgid "Probing storage..." @@ -1885,67 +1885,58 @@ msgstr "" msgid "Processing..." msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:125 -#, python-format -msgid "Repo URL set to: %s" -msgstr "" - -#: pyanaconda/ui/tui/spokes/source.py:144 +#: pyanaconda/ui/tui/spokes/source.py:135 msgid "CD/DVD" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:144 +#: pyanaconda/ui/tui/spokes/source.py:135 msgid "local ISO file" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:144 +#: pyanaconda/ui/tui/spokes/source.py:135 msgid "Network" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:148 +#: pyanaconda/ui/tui/spokes/source.py:139 #: pyanaconda/ui/gui/spokes/source.py:845 msgid "" "The installation source is in use by the installer and cannot be changed." msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:155 +#: pyanaconda/ui/tui/spokes/source.py:146 msgid "Choose an installation source type." msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:248 -#: pyanaconda/ui/tui/spokes/source.py:286 +#: pyanaconda/ui/tui/spokes/source.py:243 +#: pyanaconda/ui/tui/spokes/source.py:281 msgid "Specify Repo Options" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:252 +#: pyanaconda/ui/tui/spokes/source.py:247 msgid "Repo URL" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:290 +#: pyanaconda/ui/tui/spokes/source.py:285 msgid "<server>:/<path>" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:291 +#: pyanaconda/ui/tui/spokes/source.py:286 msgid "NFS mount options" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:325 -msgid "Failed to set up installation source. Check the source address." -msgstr "" - -#: pyanaconda/ui/tui/spokes/source.py:333 +#: pyanaconda/ui/tui/spokes/source.py:328 msgid "Select device containing the ISO file" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:392 +#: pyanaconda/ui/tui/spokes/source.py:387 msgid "No mountable devices found" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:420 +#: pyanaconda/ui/tui/spokes/source.py:415 msgid "Select an ISO to use as install source" msgstr ""
-#: pyanaconda/ui/tui/spokes/source.py:449 +#: pyanaconda/ui/tui/spokes/source.py:444 msgid "No *.iso files found in device root folder" msgstr ""
From: Vratislav Podzimek vpodzime@redhat.com
Otherwise we would have to use libblockdev for that as blivet no longer provides such code in its devicelibs module. --- anaconda.spec.in | 2 +- pyanaconda/kickstart.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/anaconda.spec.in b/anaconda.spec.in index a3f3f30..8474cbc 100644 --- a/anaconda.spec.in +++ b/anaconda.spec.in @@ -82,7 +82,7 @@ The anaconda package is a metapackage for the Anaconda installer. %package core Summary: Core of the Anaconda installer Requires: dnf >= %{dnfver} -Requires: python-blivet >= 1:1.0 +Requires: python-blivet >= 1:1.0.1 Requires: python-meh >= %{mehver} Requires: libreport-anaconda >= 2.0.21-1 Requires: libselinux-python diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index abd36af..28d5be9 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -21,7 +21,8 @@ from pyanaconda.errors import ScriptError, errorHandler from blivet.deviceaction import ActionCreateFormat, ActionDestroyFormat, ActionResizeDevice, ActionResizeFormat from blivet.devices import LUKSDevice -from blivet.devicelibs.lvm import getPossiblePhysicalExtents, LVM_PE_SIZE, KNOWN_THPOOL_PROFILES +from blivet.devices.lvm import LVMVolumeGroupDevice +from blivet.devicelibs.lvm import LVM_PE_SIZE, KNOWN_THPOOL_PROFILES from blivet.devicelibs.crypto import MIN_CREATE_ENTROPY from blivet.formats import getFormat from blivet.partitioning import doPartitioning @@ -1723,7 +1724,7 @@ def execute(self, storage, ksdata, instClass): self.pesize = LVM_PE_SIZE.convertTo(KiB)
pesize = Size("%d KiB" % self.pesize) - possible_extents = getPossiblePhysicalExtents() + possible_extents = LVMVolumeGroupDevice.get_supported_pe_sizes() if pesize not in possible_extents: raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("Volume group given physical extent size of "%(extentSize)s", but must be one of:\n%(validExtentSizes)s.") %
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
--- scripts/anaconda-cleanup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/anaconda-cleanup b/scripts/anaconda-cleanup index 5869cc1..ea3ebcd 100755 --- a/scripts/anaconda-cleanup +++ b/scripts/anaconda-cleanup @@ -38,7 +38,7 @@ flags.imageInstall = True import pyanaconda.anaconda_log pyanaconda.anaconda_log.init()
-from blivet import StorageDiscoveryConfig +from blivet.blivet import StorageDiscoveryConfig from blivet.devicetree import DeviceTree from blivet import devicelibs
From: Vratislav Podzimek vpodzime@redhat.com
It's now part of the blivet/osinstall.py module.
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- pyanaconda/rescue.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/pyanaconda/rescue.py b/pyanaconda/rescue.py index 342ee88..b3c96b3 100644 --- a/pyanaconda/rescue.py +++ b/pyanaconda/rescue.py @@ -36,11 +36,10 @@ from pyanaconda.i18n import _ from pyanaconda.kickstart import runPostScripts
-from blivet import mountExistingSystem from blivet import osinstall from blivet.errors import StorageError from blivet.devices import LUKSDevice -from blivet.osinstall import storageInitialize +from blivet.osinstall import storageInitialize, mountExistingSystem
from pykickstart.constants import KS_REBOOT, KS_SHUTDOWN
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
--- anaconda.spec.in | 5 ++ configure.ac | 2 +- po/anaconda.pot | 172 +++++++++++++++++++++++++++---------------------------- 3 files changed, 92 insertions(+), 87 deletions(-)
diff --git a/anaconda.spec.in b/anaconda.spec.in index 8474cbc..5841b04 100644 --- a/anaconda.spec.in +++ b/anaconda.spec.in @@ -306,6 +306,11 @@ update-desktop-database &> /dev/null || : %{_prefix}/libexec/anaconda/dd_*
%changelog +* Wed Mar 04 2015 Samantha N. Bueno sbueno+anaconda@redhat.com - 22.20.3-1 +- Fix the import of mountExistingSystem (vpodzime) +- Fix import error in anaconda-cleanup. (sbueno+anaconda) +- Use the new static method to get possible PE sizes (vpodzime) + * Tue Mar 03 2015 Samantha N. Bueno sbueno+anaconda@redhat.com - 22.20.2-1 - Fix a bad usage of execWithRedirect (#1197290) (dshea) - Use the LUKS device for swap in fstab (#1196200) (vpodzime) diff --git a/configure.ac b/configure.ac index 2773f10..7490530 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ m4_define(python_required_version, 2.5)
AC_PREREQ([2.63]) -AC_INIT([anaconda], [22.20.2], [anaconda-devel-list@redhat.com]) +AC_INIT([anaconda], [22.20.3], [anaconda-devel-list@redhat.com]) AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2 tar-ustar])
AC_CONFIG_HEADERS([config.h]) diff --git a/po/anaconda.pot b/po/anaconda.pot index 4a44b21..0911f15 100644 --- a/po/anaconda.pot +++ b/po/anaconda.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: anaconda 22.20.1\n" +"Project-Id-Version: anaconda 22.20.2\n" "Report-Msgid-Bugs-To: anaconda-devel-list@redhat.com\n" -"POT-Creation-Date: 2015-03-03 15:25-0500\n" +"POT-Creation-Date: 2015-03-04 18:42-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME EMAIL@ADDRESS\n" "Language-Team: LANGUAGE LL@li.org\n" @@ -177,9 +177,9 @@ msgstr "" msgid "Strong" msgstr ""
-#: pyanaconda/constants_text.py:40 pyanaconda/rescue.py:333 -#: pyanaconda/rescue.py:365 pyanaconda/rescue.py:433 pyanaconda/rescue.py:449 -#: pyanaconda/rescue.py:460 anaconda:513 +#: pyanaconda/constants_text.py:40 pyanaconda/rescue.py:332 +#: pyanaconda/rescue.py:364 pyanaconda/rescue.py:432 pyanaconda/rescue.py:448 +#: pyanaconda/rescue.py:459 anaconda:513 msgid "OK" msgstr ""
@@ -443,12 +443,12 @@ msgstr "" msgid "URL has no host component" msgstr ""
-#: pyanaconda/kickstart.py:160 +#: pyanaconda/kickstart.py:161 #, python-format msgid "Escrow certificate %s requires the network." msgstr ""
-#: pyanaconda/kickstart.py:168 +#: pyanaconda/kickstart.py:169 #, python-format msgid "" "SSL error while downloading the escrow certificate:\n" @@ -456,7 +456,7 @@ msgid "" "%s" msgstr ""
-#: pyanaconda/kickstart.py:171 +#: pyanaconda/kickstart.py:172 #, python-format msgid "" "The following error was encountered while downloading the escrow " @@ -465,269 +465,269 @@ msgid "" "%s" msgstr ""
-#: pyanaconda/kickstart.py:280 +#: pyanaconda/kickstart.py:281 #, python-format msgid "%s is missing. Cannot setup authentication." msgstr ""
-#: pyanaconda/kickstart.py:305 +#: pyanaconda/kickstart.py:306 #, python-format msgid "autopart fstype of %s is invalid." msgstr ""
-#: pyanaconda/kickstart.py:322 +#: pyanaconda/kickstart.py:323 #, python-format msgid "Settings default fstype to %s failed." msgstr ""
-#: pyanaconda/kickstart.py:353 +#: pyanaconda/kickstart.py:354 msgid "GRUB2 does not support installation to a partition." msgstr ""
-#: pyanaconda/kickstart.py:413 +#: pyanaconda/kickstart.py:414 #, python-format msgid "More than one match found for given boot drive "%s"." msgstr ""
-#: pyanaconda/kickstart.py:416 +#: pyanaconda/kickstart.py:417 #, python-format msgid "Requested boot drive "%s" doesn't exist or cannot be used." msgstr ""
-#: pyanaconda/kickstart.py:458 +#: pyanaconda/kickstart.py:459 #, python-format msgid "" "Btrfs partition "%(device)s" has a format of "%(format)s", but should " "have a format of "btrfs"." msgstr ""
-#: pyanaconda/kickstart.py:463 +#: pyanaconda/kickstart.py:464 #, python-format msgid "Tried to use undefined partition "%s" in Btrfs volume specification." msgstr ""
-#: pyanaconda/kickstart.py:476 +#: pyanaconda/kickstart.py:477 msgid "" "Btrfs volume defined without any member devices. Either specify member " "devices or use --useexisting." msgstr ""
-#: pyanaconda/kickstart.py:485 pyanaconda/kickstart.py:858 -#: pyanaconda/kickstart.py:1420 +#: pyanaconda/kickstart.py:486 pyanaconda/kickstart.py:859 +#: pyanaconda/kickstart.py:1421 #, python-format msgid "The mount point "%s" is not valid. It must start with a /." msgstr ""
-#: pyanaconda/kickstart.py:500 +#: pyanaconda/kickstart.py:501 #, python-format msgid "Btrfs volume "%s" specified with --useexisting does not exist." msgstr ""
-#: pyanaconda/kickstart.py:586 +#: pyanaconda/kickstart.py:587 #, python-format msgid "" "Disklabel "%s" given in clearpart command is not supported on this " "platform." msgstr ""
-#: pyanaconda/kickstart.py:598 +#: pyanaconda/kickstart.py:599 #, python-format msgid "Disk "%s" given in clearpart command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:611 +#: pyanaconda/kickstart.py:612 #, python-format msgid "Device "%s" given in clearpart device list does not exist." msgstr ""
-#: pyanaconda/kickstart.py:638 +#: pyanaconda/kickstart.py:639 #, python-format msgid "NIC "%s" given in fcoe command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:689 +#: pyanaconda/kickstart.py:690 #, python-format msgid "%s is missing. Cannot setup firewall." msgstr ""
-#: pyanaconda/kickstart.py:737 pyanaconda/kickstart.py:748 +#: pyanaconda/kickstart.py:738 pyanaconda/kickstart.py:749 #, python-format msgid "Disk "%s" given in ignoredisk command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:761 +#: pyanaconda/kickstart.py:762 #, python-format msgid "" "Network interface "%(nic)s" required by iSCSI "%(iscsiTarget)s" target " "is not up." msgstr ""
-#: pyanaconda/kickstart.py:771 +#: pyanaconda/kickstart.py:772 msgid "" "iscsi --iface must be specified (binding used) either for all targets or for " "none" msgstr ""
-#: pyanaconda/kickstart.py:864 +#: pyanaconda/kickstart.py:865 #, python-format msgid "" "No volume group exists with the name "%s". Specify volume groups before " "logical volumes." msgstr ""
-#: pyanaconda/kickstart.py:871 +#: pyanaconda/kickstart.py:872 #, python-format msgid "" "No thin pool exists with the name "%s". Specify thin pools before thin " "volumes." msgstr ""
-#: pyanaconda/kickstart.py:879 +#: pyanaconda/kickstart.py:880 msgid "logvol --noformat must also use the --name= option." msgstr ""
-#: pyanaconda/kickstart.py:884 pyanaconda/kickstart.py:945 +#: pyanaconda/kickstart.py:885 pyanaconda/kickstart.py:946 #, python-format msgid "Logical volume "%s" given in logvol command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:895 pyanaconda/kickstart.py:904 -#: pyanaconda/kickstart.py:955 pyanaconda/kickstart.py:1206 -#: pyanaconda/kickstart.py:1215 pyanaconda/kickstart.py:1297 +#: pyanaconda/kickstart.py:896 pyanaconda/kickstart.py:905 +#: pyanaconda/kickstart.py:956 pyanaconda/kickstart.py:1207 +#: pyanaconda/kickstart.py:1216 pyanaconda/kickstart.py:1298 #, python-format msgid "Target size "%(size)s" for device "%(device)s" is invalid." msgstr ""
-#: pyanaconda/kickstart.py:918 +#: pyanaconda/kickstart.py:919 #, python-format msgid "" "Logical volume name "%(logvol)s" is already in use in volume group " ""%(volgroup)s"." msgstr ""
-#: pyanaconda/kickstart.py:923 +#: pyanaconda/kickstart.py:924 #, python-format msgid "" "Logical volume size "%(logvolSize)s" must be larger than the volume group " "extent size of "%(extentSize)s"." msgstr ""
-#: pyanaconda/kickstart.py:934 pyanaconda/kickstart.py:1233 -#: pyanaconda/kickstart.py:1470 +#: pyanaconda/kickstart.py:935 pyanaconda/kickstart.py:1234 +#: pyanaconda/kickstart.py:1471 #, python-format msgid "The "%s" file system type is not supported." msgstr ""
-#: pyanaconda/kickstart.py:1074 pyanaconda/kickstart.py:1078 +#: pyanaconda/kickstart.py:1075 pyanaconda/kickstart.py:1079 #, python-format msgid "The %s kickstart command is not currently supported." msgstr ""
-#: pyanaconda/kickstart.py:1103 +#: pyanaconda/kickstart.py:1104 #, python-format msgid "No disk found for specified BIOS disk "%s"." msgstr ""
-#: pyanaconda/kickstart.py:1138 +#: pyanaconda/kickstart.py:1139 #, python-format msgid "RAID partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1149 pyanaconda/kickstart.py:1395 +#: pyanaconda/kickstart.py:1150 pyanaconda/kickstart.py:1396 #, python-format msgid "PV partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1160 pyanaconda/kickstart.py:1405 +#: pyanaconda/kickstart.py:1161 pyanaconda/kickstart.py:1406 #, python-format msgid "Btrfs partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1183 +#: pyanaconda/kickstart.py:1184 #, python-format msgid "The size "%s" is invalid." msgstr ""
-#: pyanaconda/kickstart.py:1190 +#: pyanaconda/kickstart.py:1191 msgid "part --noformat must also use the --onpart option." msgstr ""
-#: pyanaconda/kickstart.py:1195 pyanaconda/kickstart.py:1288 +#: pyanaconda/kickstart.py:1196 pyanaconda/kickstart.py:1289 #, python-format msgid "Partition "%s" given in part command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1248 pyanaconda/kickstart.py:1262 +#: pyanaconda/kickstart.py:1249 pyanaconda/kickstart.py:1263 #, python-format msgid "Disk "%s" given in part command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1251 +#: pyanaconda/kickstart.py:1252 #, python-format msgid "Cannot install to unpartitionable device "%s"." msgstr ""
-#: pyanaconda/kickstart.py:1258 +#: pyanaconda/kickstart.py:1259 #, python-format msgid "Disk "%s" in part command is not partitioned." msgstr ""
-#: pyanaconda/kickstart.py:1271 +#: pyanaconda/kickstart.py:1272 #, python-format msgid "The maximum size "%s" is invalid." msgstr ""
-#: pyanaconda/kickstart.py:1427 +#: pyanaconda/kickstart.py:1428 msgid "raid --noformat must also use the --device option." msgstr ""
-#: pyanaconda/kickstart.py:1432 +#: pyanaconda/kickstart.py:1433 #, python-format msgid "RAID device "%s" given in raid command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1453 +#: pyanaconda/kickstart.py:1454 #, python-format msgid "" "RAID device "%(device)s" has a format of "%(format)s", but should have a " "format of "mdmember"." msgstr ""
-#: pyanaconda/kickstart.py:1458 +#: pyanaconda/kickstart.py:1459 #, python-format msgid "Tried to use undefined partition "%s" in RAID specification." msgstr ""
-#: pyanaconda/kickstart.py:1486 +#: pyanaconda/kickstart.py:1487 #, python-format msgid "RAID volume "%s" specified with --useexisting does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1493 +#: pyanaconda/kickstart.py:1494 #, python-format msgid "The RAID volume name "%s" is already in use." msgstr ""
-#: pyanaconda/kickstart.py:1708 +#: pyanaconda/kickstart.py:1709 #, python-format msgid "" "Physical volume "%(device)s" has a format of "%(format)s", but should " "have a format of "lvmpv"." msgstr ""
-#: pyanaconda/kickstart.py:1713 +#: pyanaconda/kickstart.py:1714 #, python-format msgid "Tried to use undefined partition "%s" in Volume Group specification" msgstr ""
-#: pyanaconda/kickstart.py:1719 +#: pyanaconda/kickstart.py:1720 #, python-format msgid "" "Volume group "%s" defined without any physical volumes. Either specify " "physical volumes or use --useexisting." msgstr ""
-#: pyanaconda/kickstart.py:1729 +#: pyanaconda/kickstart.py:1730 #, python-format msgid "" "Volume group given physical extent size of "%(extentSize)s", but must be " @@ -735,29 +735,29 @@ msgid "" "%(validExtentSizes)s." msgstr ""
-#: pyanaconda/kickstart.py:1736 +#: pyanaconda/kickstart.py:1737 msgid "" "volgroup --noformat and volgroup --useexisting must also use the --name= " "option." msgstr ""
-#: pyanaconda/kickstart.py:1741 +#: pyanaconda/kickstart.py:1742 #, python-format msgid "Volume group "%s" given in volgroup command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1744 +#: pyanaconda/kickstart.py:1745 #, python-format msgid "The volume group name "%s" is already in use." msgstr ""
-#: pyanaconda/kickstart.py:1800 +#: pyanaconda/kickstart.py:1801 msgid "" "The upgrade kickstart command is no longer supported. Upgrade functionality " "is provided through fedup." msgstr ""
-#: pyanaconda/kickstart.py:2014 +#: pyanaconda/kickstart.py:2015 msgid "Running pre-installation scripts" msgstr ""
@@ -843,25 +843,25 @@ msgstr "" msgid "New %(name)s %(version)s Installation" msgstr ""
-#: pyanaconda/rescue.py:184 pyanaconda/rescue.py:350 pyanaconda/rescue.py:426 +#: pyanaconda/rescue.py:183 pyanaconda/rescue.py:349 pyanaconda/rescue.py:425 #, python-format msgid "Run %s to unmount the system when you are finished." msgstr ""
-#: pyanaconda/rescue.py:187 +#: pyanaconda/rescue.py:186 msgid "When finished please exit from the shell and your system will reboot." msgstr ""
-#: pyanaconda/rescue.py:200 +#: pyanaconda/rescue.py:199 msgid "Unable to find /bin/sh to execute! Not starting shell" msgstr ""
-#: pyanaconda/rescue.py:288 pyanaconda/rescue.py:358 pyanaconda/rescue.py:429 -#: pyanaconda/rescue.py:460 +#: pyanaconda/rescue.py:287 pyanaconda/rescue.py:357 pyanaconda/rescue.py:428 +#: pyanaconda/rescue.py:459 msgid "Rescue" msgstr ""
-#: pyanaconda/rescue.py:289 +#: pyanaconda/rescue.py:288 #, python-format msgid "" "The rescue environment will now attempt to find your Linux installation and " @@ -875,35 +875,35 @@ msgid "" "\n" msgstr ""
-#: pyanaconda/rescue.py:299 +#: pyanaconda/rescue.py:298 msgid "Continue" msgstr ""
-#: pyanaconda/rescue.py:299 pyanaconda/rescue.py:305 +#: pyanaconda/rescue.py:298 pyanaconda/rescue.py:304 msgid "Read-Only" msgstr ""
-#: pyanaconda/rescue.py:299 pyanaconda/rescue.py:301 +#: pyanaconda/rescue.py:298 pyanaconda/rescue.py:300 msgid "Skip" msgstr ""
-#: pyanaconda/rescue.py:330 +#: pyanaconda/rescue.py:329 msgid "System to Rescue" msgstr ""
-#: pyanaconda/rescue.py:331 +#: pyanaconda/rescue.py:330 msgid "Which device holds the root partition of your installation?" msgstr ""
-#: pyanaconda/rescue.py:333 pyanaconda/rescue.py:337 +#: pyanaconda/rescue.py:332 pyanaconda/rescue.py:336 msgid "Exit" msgstr ""
-#: pyanaconda/rescue.py:347 pyanaconda/rescue.py:423 +#: pyanaconda/rescue.py:346 pyanaconda/rescue.py:422 msgid "The system will reboot automatically when you exit from the shell." msgstr ""
-#: pyanaconda/rescue.py:359 +#: pyanaconda/rescue.py:358 #, python-format msgid "" "Your system has been mounted under %(rootPath)s.\n" @@ -916,7 +916,7 @@ msgid "" "%(msg)s" msgstr ""
-#: pyanaconda/rescue.py:430 +#: pyanaconda/rescue.py:429 #, python-format msgid "" "An error occurred trying to mount some or all of your system. Some of it may " @@ -925,24 +925,24 @@ msgid "" "Press <return> to get a shell." msgstr ""
-#: pyanaconda/rescue.py:438 +#: pyanaconda/rescue.py:437 msgid "You don't have any Linux partitions. Rebooting.\n" msgstr ""
-#: pyanaconda/rescue.py:442 +#: pyanaconda/rescue.py:441 msgid " The system will reboot automatically when you exit from the shell." msgstr ""
-#: pyanaconda/rescue.py:446 +#: pyanaconda/rescue.py:445 msgid "Rescue Mode" msgstr ""
-#: pyanaconda/rescue.py:447 +#: pyanaconda/rescue.py:446 #, python-format msgid "You don't have any Linux partitions. Press return to get a shell.%s" msgstr ""
-#: pyanaconda/rescue.py:459 +#: pyanaconda/rescue.py:458 #, python-format msgid "Your system is mounted under the %s directory." msgstr ""
From: Vratislav Podzimek vpodzime@redhat.com
If passphrase cannot be determined, raise an explanatory exception instead of creating a LUKS device with no passhprase and leaving to error out somewhere deep in Blivet. --- pyanaconda/kickstart.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index 28d5be9..b64bd09 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -1019,6 +1019,15 @@ def execute(self, storage, ksdata, instClass): if self.passphrase and not storage.encryptionPassphrase: storage.encryptionPassphrase = self.passphrase
+ # try to use the global passphrase if available + # XXX: we require the LV/part with --passphrase to be processed + # before this one to setup the storage.encryptionPassphrase + self.passphrase = self.passphrase or storage.encryptionPassphrase + + if not self.passphrase: + raise KickstartValueError(formatErrorMsg(self.lineno, + msg=_("No passphrase given for encrypted LV"))) + cert = getEscrowCertificate(storage.escrowCertificates, self.escrowcert) if self.preexist: luksformat = fmt @@ -1332,6 +1341,15 @@ def execute(self, storage, ksdata, instClass): if self.passphrase and not storage.encryptionPassphrase: storage.encryptionPassphrase = self.passphrase
+ # try to use the global passphrase if available + # XXX: we require the LV/part with --passphrase to be processed + # before this one to setup the storage.encryptionPassphrase + self.passphrase = self.passphrase or storage.encryptionPassphrase + + if not self.passphrase: + raise KickstartValueError(formatErrorMsg(self.lineno, + msg=_("No passphrase given for encrypted part"))) + cert = getEscrowCertificate(storage.escrowCertificates, self.escrowcert) if self.onPart: luksformat = kwargs["fmt"]
From: David Shea dshea@redhat.com
When we use GtkScrolledWindow with non-natively scrollable widgets, the scroll adjustments on the intermediate viewport need to be connected to the focus adjustments on non-scrollable container in order for the viewport to automatically scroll on keyboard navigation events. Normally this is done automatically by gtk, but adding silent surprises in the middle of the widget hierarchy breaks glade so glade requires the viewport be explicit, and glade does not allow one to change any of the adjustment settings we need to get to. See https://bugzilla.gnome.org/show_bug.cgi?id=744721
I am not optimistic about glade changing things quickly or ever so let's just work around it and have things work a little nicer.
(cherry picked from commit 35324b3fd891400c0405c50a18798080910627ed) --- pyanaconda/ui/gui/spokes/custom.py | 8 ++++++++ pyanaconda/ui/gui/spokes/filter.glade | 16 ++++++++-------- pyanaconda/ui/gui/spokes/filter.py | 21 +++++++++++++++++++++ pyanaconda/ui/gui/spokes/software.py | 6 ++++++ pyanaconda/ui/gui/spokes/source.glade | 6 +++--- pyanaconda/ui/gui/spokes/source.py | 5 +++++ pyanaconda/ui/gui/spokes/storage.glade | 6 +++--- pyanaconda/ui/gui/spokes/storage.py | 11 +++++++++++ 8 files changed, 65 insertions(+), 14 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/custom.py b/pyanaconda/ui/gui/spokes/custom.py index a36312d..a278842 100644 --- a/pyanaconda/ui/gui/spokes/custom.py +++ b/pyanaconda/ui/gui/spokes/custom.py @@ -213,6 +213,10 @@ def _grabObjects(self): self._partitionsViewport = self.builder.get_object("partitionsViewport") self._partitionsNotebook = self.builder.get_object("partitionsNotebook")
+ # Connect partitionsNotebook focus events to scrolling in the parent viewport + partitionsNotebookViewport = self.builder.get_object("partitionsNotebookViewport") + self._partitionsNotebook.set_focus_vadjustment(partitionsNotebookViewport.get_vadjustment()) + self._whenCreateLabel = self.builder.get_object("whenCreateLabel")
self._availableSpaceLabel = self.builder.get_object("availableSpaceLabel") @@ -281,6 +285,10 @@ def initialize(self): self._accordion = Accordion() self._partitionsViewport.add(self._accordion)
+ # Connect viewport scrolling with accordion focus events + self._accordion.set_focus_hadjustment(self._partitionsViewport.get_hadjustment()) + self._accordion.set_focus_vadjustment(self._partitionsViewport.get_vadjustment()) + threadMgr.add(AnacondaThread(name=THREAD_CUSTOM_STORAGE_INIT, target=self._initialize))
def _initialize(self): diff --git a/pyanaconda/ui/gui/spokes/filter.glade b/pyanaconda/ui/gui/spokes/filter.glade index bad9beb..c25aeef 100644 --- a/pyanaconda/ui/gui/spokes/filter.glade +++ b/pyanaconda/ui/gui/spokes/filter.glade @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.1 --> +<!-- Generated with glade 3.18.3 --> <interface> <requires lib="gtk+" version="3.0"/> <requires lib="AnacondaWidgets" version="1.0"/> @@ -112,7 +112,7 @@ <property name="can_focus">True</property> <property name="shadow_type">in</property> <child> - <object class="GtkViewport" id="viewport1"> + <object class="GtkViewport" id="searchScrolledViewport"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="shadow_type">none</property> @@ -534,7 +534,7 @@ <property name="can_focus">True</property> <property name="shadow_type">in</property> <child> - <object class="GtkViewport" id="viewport2"> + <object class="GtkViewport" id="multipathViewport"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="shadow_type">none</property> @@ -866,7 +866,7 @@ <property name="can_focus">True</property> <property name="shadow_type">in</property> <child> - <object class="GtkViewport" id="viewport4"> + <object class="GtkViewport" id="otherViewport"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="shadow_type">none</property> @@ -1189,7 +1189,7 @@ <property name="can_focus">True</property> <property name="shadow_type">in</property> <child> - <object class="GtkViewport" id="viewport3"> + <object class="GtkViewport" id="zViewport"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="shadow_type">none</property> @@ -1533,9 +1533,9 @@ <property name="left_attach">1</property> <property name="top_attach">0</property> <property name="width">1</property> - <property name="height">1</property> - </packing> - </child> + <property name="height">1</property> + </packing> + </child> </object> </child> </object> diff --git a/pyanaconda/ui/gui/spokes/filter.py b/pyanaconda/ui/gui/spokes/filter.py index 807130c..da1c971 100644 --- a/pyanaconda/ui/gui/spokes/filter.py +++ b/pyanaconda/ui/gui/spokes/filter.py @@ -497,6 +497,27 @@ def initialize(self): self._store = self.builder.get_object("diskStore") self._addDisksButton = self.builder.get_object("addDisksButton")
+ # Connect focus events in scrolled viewport children to scrolling on the viewport + searchScrolledViewport = self.builder.get_object("searchScrolledViewport") + searchGrid = self.builder.get_object("searchGrid") + searchGrid.set_focus_hadjustment(searchScrolledViewport.get_hadjustment()) + searchGrid.set_focus_vadjustment(searchScrolledViewport.get_vadjustment()) + + multipathViewport = self.builder.get_object("multipathViewport") + multipathGrid = self.builder.get_object("multipathGrid") + multipathGrid.set_focus_hadjustment(multipathViewport.get_hadjustment()) + multipathGrid.set_focus_vadjustment(multipathViewport.get_vadjustment()) + + otherViewport = self.builder.get_object("otherViewport") + otherGrid = self.builder.get_object("otherGrid") + otherGrid.set_focus_hadjustment(otherViewport.get_hadjustment()) + otherGrid.set_focus_vadjustment(otherViewport.get_vadjustment()) + + zViewport = self.builder.get_object("zViewport") + zGrid = self.builder.get_object("zGrid") + zGrid.set_focus_hadjustment(zViewport.get_hadjustment()) + zGrid.set_focus_vadjustment(zViewport.get_vadjustment()) + def _real_ancestors(self, disk): # Return a list of all the ancestors of a disk, but remove the disk # itself from this list. diff --git a/pyanaconda/ui/gui/spokes/software.py b/pyanaconda/ui/gui/spokes/software.py index 5006e4c..12e0608 100644 --- a/pyanaconda/ui/gui/spokes/software.py +++ b/pyanaconda/ui/gui/spokes/software.py @@ -72,6 +72,12 @@ def __init__(self, *args, **kwargs): self._environmentListBox = self.builder.get_object("environmentListBox") self._addonListBox = self.builder.get_object("addonListBox")
+ # Connect viewport scrolling with listbox focus events + environmentViewport = self.builder.get_object("environmentViewport") + addonViewport = self.builder.get_object("addonViewport") + self._environmentListBox.set_focus_vadjustment(environmentViewport.get_vadjustment()) + self._addonListBox.set_focus_vadjustment(addonViewport.get_vadjustment()) + # Used to store how the user has interacted with add-ons for the default add-on # selection logic. The dictionary keys are group IDs, and the values are selection # state constants. See refreshAddons for how the values are used. diff --git a/pyanaconda/ui/gui/spokes/source.glade b/pyanaconda/ui/gui/spokes/source.glade index 3703f40..abb2841 100644 --- a/pyanaconda/ui/gui/spokes/source.glade +++ b/pyanaconda/ui/gui/spokes/source.glade @@ -508,18 +508,18 @@ <property name="vexpand">True</property> <property name="orientation">vertical</property> <child> - <object class="GtkScrolledWindow" id="scrolledwindow1"> + <object class="GtkScrolledWindow" id="mainScrolledWindow"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="hscrollbar_policy">never</property> <child> - <object class="GtkViewport" id="viewport1"> + <object class="GtkViewport" id="mainViewport"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_right">24</property> <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="box4"> + <object class="GtkBox" id="mainBox"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="orientation">vertical</property> diff --git a/pyanaconda/ui/gui/spokes/source.py b/pyanaconda/ui/gui/spokes/source.py index 1b35ca9..7b69085 100644 --- a/pyanaconda/ui/gui/spokes/source.py +++ b/pyanaconda/ui/gui/spokes/source.py @@ -122,6 +122,11 @@ def __init__(self, data, proxy_url): self._proxyValidate = self.add_check(self._proxyURLEntry, self._checkProxyURL) self._proxyValidate.update_check_status()
+ # Connect scroll events on the viewport with focus events on the box + mainViewport = self.builder.get_object("mainViewport") + mainBox = self.builder.get_object("mainBox") + mainBox.set_focus_vadjustment(mainViewport.get_vadjustment()) + def _checkProxyURL(self, inputcheck): proxy_string = self.get_input(inputcheck.input_obj)
diff --git a/pyanaconda/ui/gui/spokes/storage.glade b/pyanaconda/ui/gui/spokes/storage.glade index b1fa02c..0acdd3a 100644 --- a/pyanaconda/ui/gui/spokes/storage.glade +++ b/pyanaconda/ui/gui/spokes/storage.glade @@ -482,18 +482,18 @@ <property name="orientation">vertical</property> <property name="spacing">6</property> <child> - <object class="GtkScrolledWindow" id="scrolledwindow1"> + <object class="GtkScrolledWindow" id="storageScrolledWindow"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="vexpand">True</property> <property name="hscrollbar_policy">never</property> <child> - <object class="GtkViewport" id="viewport1"> + <object class="GtkViewport" id="storageViewport"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="shadow_type">none</property> <child> - <object class="GtkBox" id="box3"> + <object class="GtkBox" id="storageMainBox"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="orientation">vertical</property> diff --git a/pyanaconda/ui/gui/spokes/storage.py b/pyanaconda/ui/gui/spokes/storage.py index 8273dcb..f4378cb 100644 --- a/pyanaconda/ui/gui/spokes/storage.py +++ b/pyanaconda/ui/gui/spokes/storage.py @@ -525,6 +525,17 @@ def initialize(self): self.local_disks_box = self.builder.get_object("local_disks_box") self.specialized_disks_box = self.builder.get_object("specialized_disks_box")
+ # Connect the viewport adjustments to the child widgets + # See also https://bugzilla.gnome.org/show_bug.cgi?id=744721 + localViewport = self.builder.get_object("localViewport") + specializedViewport = self.builder.get_object("specializedViewport") + self.local_disks_box.set_focus_hadjustment(localViewport.get_hadjustment()) + self.specialized_disks_box.set_focus_hadjustment(specializedViewport.get_hadjustment()) + + mainViewport = self.builder.get_object("storageViewport") + mainBox = self.builder.get_object("storageMainBox") + mainBox.set_focus_vadjustment(mainViewport.get_vadjustment()) + threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE_WATCHER, target=self._initialize))
From: David Shea dshea@redhat.com
The invisible_char setting is usually non-ASCII, so sometimes, say if someone opens a glade file in a non-unicode-aware editor and then saves the file, the string gets trashed to ? or ???. Check that this didn't happen.
Also add a check that invisible_char is needed at all since it's just glade noise more often than not.
(cherry picked from commit 8100c2f693792fb2422be814f7e146dd1fc4a3fa) --- tests/glade/pw_visibility/check_invisible_char.py | 79 +++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 tests/glade/pw_visibility/check_invisible_char.py
diff --git a/tests/glade/pw_visibility/check_invisible_char.py b/tests/glade/pw_visibility/check_invisible_char.py new file mode 100755 index 0000000..2eaaa96 --- /dev/null +++ b/tests/glade/pw_visibility/check_invisible_char.py @@ -0,0 +1,79 @@ +#!/usr/bin/python2 +# +# Copyright (C) 2015 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# Author: David Shea dshea@redhat.com +# + +""" +Check that the invisible_char in glade files is actually a char. + +The invisible char is often non-ASCII and sometimes that gets clobbered. +""" + +import argparse +import sys + +try: + from lxml import etree +except ImportError: + print("You need to install the python-lxml package to use check_pw_visibility.py") + sys.exit(1) + +def check_glade_file(glade_file_path): + succ = True + + with open(glade_file_path, "r") as glade_file: + tree = etree.parse(glade_file) + # Only look for entries with an invisible_char property + for entry in tree.xpath("//object[@class='GtkEntry' and ./property[@name='invisible_char']]"): + # Check the contents of the invisible_char property + invis = entry.xpath("./property[@name='invisible_char']")[0] + if len(invis.text) != 1: + print("invisible_char at %s:%s not a character" % (glade_file_path, invis.sourceline)) + succ = False + + # If the char is '?' that's probably also bad + if invis.text == '?': + print("invisible_char at %s:%s is not what you want" % (glade_file_path, invis.sourceline)) + + # Check that invisible_char even does anything: visibility should be False + if not entry.xpath("./property[@name='visibility' and ./text() = 'False']"): + print("Pointless invisible_char found at %s:%s" % (glade_file_path, invis.sourceline)) + succ = False + + return succ + + +if __name__ == "__main__": + parser = argparse.ArgumentParser("Check that invisible character properties are set correctly") + + # Ignore translation arguments + parser.add_argument("-t", "--translate", action='store_true', + help=argparse.SUPPRESS) + parser.add_argument("-p", "--podir", action='store', type=str, + metavar='PODIR', help=argparse.SUPPRESS, default='./po') + + parser.add_argument("glade_files", nargs="+", metavar="GLADE-FILE", + help='The glade file to check') + args = parser.parse_args(args=sys.argv[1:]) + + success = True + for file_path in args.glade_files: + if not check_glade_file(file_path): + success = False + + sys.exit(0 if success else 1)
From: David Shea dshea@redhat.com
This also caught all the ? and ??? ones so good riddance
(cherry picked from commit 94bf89e6fd5d40a71b97d5e71bdec6e6e62d6ac2) --- pyanaconda/ui/gui/spokes/advanced_user.glade | 1 - pyanaconda/ui/gui/spokes/advstorage/dasd.glade | 1 - pyanaconda/ui/gui/spokes/advstorage/iscsi.glade | 8 -------- pyanaconda/ui/gui/spokes/advstorage/zfcp.glade | 4 ---- pyanaconda/ui/gui/spokes/custom.glade | 4 ---- pyanaconda/ui/gui/spokes/datetime_spoke.glade | 1 - pyanaconda/ui/gui/spokes/filter.glade | 11 ----------- pyanaconda/ui/gui/spokes/keyboard.glade | 1 - pyanaconda/ui/gui/spokes/langsupport.glade | 1 - pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade | 3 --- pyanaconda/ui/gui/spokes/network.glade | 7 ------- pyanaconda/ui/gui/spokes/source.glade | 8 -------- pyanaconda/ui/gui/spokes/user.glade | 2 -- pyanaconda/ui/gui/spokes/welcome.glade | 1 - 14 files changed, 53 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/advanced_user.glade b/pyanaconda/ui/gui/spokes/advanced_user.glade index 0063d9c..4bed411 100644 --- a/pyanaconda/ui/gui/spokes/advanced_user.glade +++ b/pyanaconda/ui/gui/spokes/advanced_user.glade @@ -270,7 +270,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="margin_top">3</property> - <property name="invisible_char">●</property> </object> <packing> <property name="expand">False</property> diff --git a/pyanaconda/ui/gui/spokes/advstorage/dasd.glade b/pyanaconda/ui/gui/spokes/advstorage/dasd.glade index 048c59f..2246829 100644 --- a/pyanaconda/ui/gui/spokes/advstorage/dasd.glade +++ b/pyanaconda/ui/gui/spokes/advstorage/dasd.glade @@ -109,7 +109,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">?</property> </object> <packing> <property name="left_attach">1</property> diff --git a/pyanaconda/ui/gui/spokes/advstorage/iscsi.glade b/pyanaconda/ui/gui/spokes/advstorage/iscsi.glade index 0079cf5..203a66f 100644 --- a/pyanaconda/ui/gui/spokes/advstorage/iscsi.glade +++ b/pyanaconda/ui/gui/spokes/advstorage/iscsi.glade @@ -126,7 +126,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_discover_field_changed" swapped="no"/> </object> <packing> @@ -154,7 +153,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_discover_field_changed" swapped="no"/> </object> <packing> @@ -289,7 +287,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_discover_field_changed" swapped="no"/> </object> <packing> @@ -330,7 +327,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_discover_field_changed" swapped="no"/> </object> <packing> @@ -357,7 +353,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_discover_field_changed" swapped="no"/> </object> <packing> @@ -819,7 +814,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_login_field_changed" swapped="no"/> </object> <packing> @@ -860,7 +854,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_login_field_changed" swapped="no"/> </object> <packing> @@ -887,7 +880,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_login_field_changed" swapped="no"/> </object> <packing> diff --git a/pyanaconda/ui/gui/spokes/advstorage/zfcp.glade b/pyanaconda/ui/gui/spokes/advstorage/zfcp.glade index 289576a..56b95a5 100644 --- a/pyanaconda/ui/gui/spokes/advstorage/zfcp.glade +++ b/pyanaconda/ui/gui/spokes/advstorage/zfcp.glade @@ -123,7 +123,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">???</property> </object> <packing> <property name="left_attach">1</property> @@ -153,7 +152,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">???</property> </object> <packing> <property name="left_attach">1</property> @@ -371,8 +369,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">???</property> - <property name="invisible_char_set">True</property> </object> <packing> <property name="left_attach">1</property> diff --git a/pyanaconda/ui/gui/spokes/custom.glade b/pyanaconda/ui/gui/spokes/custom.glade index 8f2182e..9d1e780 100644 --- a/pyanaconda/ui/gui/spokes/custom.glade +++ b/pyanaconda/ui/gui/spokes/custom.glade @@ -389,7 +389,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">start</property> - <property name="invisible_char">●</property> <property name="width_chars">20</property> <property name="completion">mountPointCompletion</property> <signal name="changed" handler="on_value_changed" swapped="no"/> @@ -437,7 +436,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">start</property> - <property name="invisible_char">●</property> <property name="width_chars">10</property> <signal name="changed" handler="on_value_changed" swapped="no"/> </object> @@ -490,7 +488,6 @@ <property name="can_focus">True</property> <property name="halign">start</property> <property name="max_length">20</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_value_changed" swapped="no"/> </object> <packing> @@ -599,7 +596,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="halign">start</property> - <property name="invisible_char">●</property> <property name="width_chars">20</property> <signal name="changed" handler="on_value_changed" swapped="no"/> </object> diff --git a/pyanaconda/ui/gui/spokes/datetime_spoke.glade b/pyanaconda/ui/gui/spokes/datetime_spoke.glade index c5f4fdb..82da7b4 100644 --- a/pyanaconda/ui/gui/spokes/datetime_spoke.glade +++ b/pyanaconda/ui/gui/spokes/datetime_spoke.glade @@ -163,7 +163,6 @@ <object class="GtkEntry" id="serverEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <signal name="activate" handler="on_entry_activated" swapped="no"/> <child internal-child="accessible"> <object class="AtkObject" id="serverEntry-atkobject"> diff --git a/pyanaconda/ui/gui/spokes/filter.glade b/pyanaconda/ui/gui/spokes/filter.glade index c25aeef..3e94e46 100644 --- a/pyanaconda/ui/gui/spokes/filter.glade +++ b/pyanaconda/ui/gui/spokes/filter.glade @@ -235,7 +235,6 @@ <object class="GtkEntry" id="searchTargetEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> </object> @@ -264,7 +263,6 @@ <object class="GtkEntry" id="searchLUNEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> </object> @@ -306,7 +304,6 @@ <object class="GtkEntry" id="searchWWIDEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> <property name="width_chars">30</property> @@ -695,7 +692,6 @@ <object class="GtkEntry" id="multipathWWIDEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> <property name="width_chars">30</property> @@ -1137,7 +1133,6 @@ <object class="GtkEntry" id="otherIDEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> <property name="width_chars">30</property> @@ -1398,11 +1393,9 @@ <object class="GtkEntry" id="zCCWEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">???</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> <property name="width_chars">30</property> - <property name="invisible_char_set">True</property> </object> <packing> <property name="expand">False</property> @@ -1447,11 +1440,9 @@ <object class="GtkEntry" id="zWWPNEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">???</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> <property name="width_chars">30</property> - <property name="invisible_char_set">True</property> </object> <packing> <property name="expand">False</property> @@ -1491,11 +1482,9 @@ <object class="GtkEntry" id="zLUNEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">???</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="icon-release" handler="on_clear_icon_clicked" swapped="no"/> <property name="width_chars">30</property> - <property name="invisible_char_set">True</property> </object> <packing> <property name="expand">False</property> diff --git a/pyanaconda/ui/gui/spokes/keyboard.glade b/pyanaconda/ui/gui/spokes/keyboard.glade index 0f4d9cb..4df7951 100644 --- a/pyanaconda/ui/gui/spokes/keyboard.glade +++ b/pyanaconda/ui/gui/spokes/keyboard.glade @@ -546,7 +546,6 @@ <object class="GtkEntry" id="addLayoutEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <signal name="changed" handler="on_entry_changed" swapped="no"/> <signal name="icon-press" handler="on_entry_icon_clicked" swapped="no"/> diff --git a/pyanaconda/ui/gui/spokes/langsupport.glade b/pyanaconda/ui/gui/spokes/langsupport.glade index 420cd56..2777769 100644 --- a/pyanaconda/ui/gui/spokes/langsupport.glade +++ b/pyanaconda/ui/gui/spokes/langsupport.glade @@ -189,7 +189,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="valign">start</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <property name="placeholder_text" translatable="yes">Type here to search.</property> <signal name="changed" handler="on_entry_changed" swapped="no"/> diff --git a/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade b/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade index a534ab4..69b03b1 100644 --- a/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade +++ b/pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade @@ -549,7 +549,6 @@ use. Try something else?</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="tooltip_text" translatable="yes">eg: "20 GB", "500mb" (minus the quotation marks)</property> - <property name="invisible_char">●</property> </object> <packing> <property name="left_attach">1</property> @@ -745,7 +744,6 @@ use. Try something else?</property> <object class="GtkEntry" id="container_name_entry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="expand">False</property> @@ -981,7 +979,6 @@ use. Try something else?</property> <object class="GtkEntry" id="containerSizeEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="expand">False</property> diff --git a/pyanaconda/ui/gui/spokes/network.glade b/pyanaconda/ui/gui/spokes/network.glade index ba5df59..2a7c19a 100644 --- a/pyanaconda/ui/gui/spokes/network.glade +++ b/pyanaconda/ui/gui/spokes/network.glade @@ -1055,7 +1055,6 @@ <child internal-child="entry"> <object class="GtkEntry" id="combobox-entry4"> <property name="can_focus">False</property> - <property name="invisible_char">●</property> </object> </child> </object> @@ -1895,7 +1894,6 @@ <object class="GtkEntry" id="entry_proxy_url"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="left_attach">1</property> @@ -1978,7 +1976,6 @@ <object class="GtkEntry" id="entry_proxy_http"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="left_attach">1</property> @@ -2001,7 +1998,6 @@ <object class="GtkEntry" id="entry_proxy_https"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="left_attach">1</property> @@ -2012,7 +2008,6 @@ <object class="GtkEntry" id="entry_proxy_ftp"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="left_attach">1</property> @@ -2023,7 +2018,6 @@ <object class="GtkEntry" id="entry_proxy_socks"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="left_attach">1</property> @@ -2233,7 +2227,6 @@ <object class="GtkEntry" id="entry_hostname"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="width_chars">35</property> <child internal-child="accessible"> <object class="AtkObject" id="entry_hostname-atkobject"> diff --git a/pyanaconda/ui/gui/spokes/source.glade b/pyanaconda/ui/gui/spokes/source.glade index abb2841..fe81465 100644 --- a/pyanaconda/ui/gui/spokes/source.glade +++ b/pyanaconda/ui/gui/spokes/source.glade @@ -326,7 +326,6 @@ <object class="GtkEntry" id="proxyURLEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="width_chars">40</property> </object> <packing> @@ -406,7 +405,6 @@ <object class="GtkEntry" id="proxyUsernameEntry"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_proxyUsernameEntry_changed" swapped="no"/> </object> <packing> @@ -770,7 +768,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> </object> <packing> <property name="left_attach">1</property> @@ -849,7 +846,6 @@ <property name="has_tooltip">True</property> <property name="tooltip_markup" translatable="yes">This field is optional.</property> <property name="tooltip_text" translatable="yes">This field is optional.</property> - <property name="invisible_char">●</property> </object> <packing> <property name="expand">True</property> @@ -1092,7 +1088,6 @@ <property name="can_focus">True</property> <property name="tooltip_markup" translatable="yes">URL for the repository, without protocol.</property> <property name="tooltip_text" translatable="yes">URL for the repository, without protocol.</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_repoUrl_changed" swapped="no"/> </object> <packing> @@ -1106,7 +1101,6 @@ <property name="can_focus">True</property> <property name="tooltip_markup" translatable="yes">URL of proxy in the form of protocol://host:[port]</property> <property name="tooltip_text" translatable="yes">URL of proxy in the form of protocol://host:[port]</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_repoProxy_changed" swapped="no"/> </object> <packing> @@ -1120,7 +1114,6 @@ <property name="can_focus">True</property> <property name="tooltip_markup" translatable="yes">Optional proxy user name.</property> <property name="tooltip_text" translatable="yes">Optional proxy user name.</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_repoProxy_changed" swapped="no"/> </object> <packing> @@ -1255,7 +1248,6 @@ <property name="tooltip_markup" translatable="yes">Name of the repository.</property> <property name="tooltip_text" translatable="yes">Name of the repository.</property> <property name="hexpand">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="on_repoNameEntry_changed" swapped="no"/> </object> <packing> diff --git a/pyanaconda/ui/gui/spokes/user.glade b/pyanaconda/ui/gui/spokes/user.glade index 547c408..335c3c7 100644 --- a/pyanaconda/ui/gui/spokes/user.glade +++ b/pyanaconda/ui/gui/spokes/user.glade @@ -93,7 +93,6 @@ <object class="GtkEntry" id="t_fullname"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <property name="caps_lock_warning">False</property> <signal name="changed" handler="full_name_changed" swapped="no"/> <child internal-child="accessible"> @@ -111,7 +110,6 @@ <object class="GtkEntry" id="t_username"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> <signal name="changed" handler="username_changed" swapped="no"/> <child internal-child="accessible"> <object class="AtkObject" id="t_username-atkobject"> diff --git a/pyanaconda/ui/gui/spokes/welcome.glade b/pyanaconda/ui/gui/spokes/welcome.glade index 0180e63..bdd5308 100644 --- a/pyanaconda/ui/gui/spokes/welcome.glade +++ b/pyanaconda/ui/gui/spokes/welcome.glade @@ -332,7 +332,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="valign">start</property> - <property name="invisible_char">●</property> <property name="secondary_icon_name">edit-clear-symbolic</property> <property name="placeholder_text" translatable="yes">Type here to search.</property> <signal name="changed" handler="on_entry_changed" swapped="no"/>
From: David Shea dshea@redhat.com
Exceptions can occur between the start of GUI initialization and the Gtk main loop, in particular if product images specify missing or bad stylesheets. If an exception occurs in this code, the GUI must release the GUI lock so that python-meh knows to start its own main loop. Otherwise meh will enqueue itself in a main loop that will never be run, and anaconda exits and reboots the system.
(cherry picked from commit 55a8cb76f4c22d0e2fe5105e771b18202482d582) --- pyanaconda/ui/gui/__init__.py | 78 +++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 36 deletions(-)
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py index 8b88484..41e28ae 100644 --- a/pyanaconda/ui/gui/__init__.py +++ b/pyanaconda/ui/gui/__init__.py @@ -654,55 +654,61 @@ def run(self): threads.threadMgr.wait_for_error_threads() sys.exit(1)
- # Apply a widget-scale to hidpi monitors - self._widgetScale() + try: + # Apply a widget-scale to hidpi monitors + self._widgetScale()
- while not self._currentAction: - self._currentAction = self._instantiateAction(self._actions[0]) - if not self._currentAction: - self._actions.pop(0) + while not self._currentAction: + self._currentAction = self._instantiateAction(self._actions[0]) + if not self._currentAction: + self._actions.pop(0)
- if not self._actions: - return - - self._currentAction.initialize() - self._currentAction.entry_logger() - self._currentAction.refresh() + if not self._actions: + return
- self._currentAction.window.set_beta(not self._isFinal) - self._currentAction.window.set_property("distribution", self._distributionText().upper()) + self._currentAction.initialize() + self._currentAction.entry_logger() + self._currentAction.refresh()
- # Set some program-wide settings. - settings = Gtk.Settings.get_default() - settings.set_property("gtk-font-name", "Cantarell") - settings.set_property("gtk-icon-theme-name", "gnome") + self._currentAction.window.set_beta(not self._isFinal) + self._currentAction.window.set_property("distribution", self._distributionText().upper())
- # Apply the application stylesheet - provider = Gtk.CssProvider() - provider.load_from_path("/usr/share/anaconda/anaconda-gtk.css") - Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider, - Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) + # Set some program-wide settings. + settings = Gtk.Settings.get_default() + settings.set_property("gtk-font-name", "Cantarell") + settings.set_property("gtk-icon-theme-name", "gnome")
- # Apply the installclass stylesheet - if self.instclass.stylesheet: + # Apply the application stylesheet provider = Gtk.CssProvider() - provider.load_from_path(self.instclass.stylesheet) + provider.load_from_path("/usr/share/anaconda/anaconda-gtk.css") Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider, - STYLE_PROVIDER_PRIORITY_INSTALLCLASS) + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
- # Look for updates to the stylesheet and apply them at a higher priority - for updates_dir in ("updates", "product"): - updates_css = "/run/install/%s/anaconda-gtk.css" % updates_dir - if os.path.exists(updates_css): + # Apply the installclass stylesheet + if self.instclass.stylesheet: provider = Gtk.CssProvider() - provider.load_from_path(updates_css) + provider.load_from_path(self.instclass.stylesheet) Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider, - STYLE_PROVIDER_PRIORITY_UPDATES) + STYLE_PROVIDER_PRIORITY_INSTALLCLASS)
- self.mainWindow.setCurrentAction(self._currentAction) + # Look for updates to the stylesheet and apply them at a higher priority + for updates_dir in ("updates", "product"): + updates_css = "/run/install/%s/anaconda-gtk.css" % updates_dir + if os.path.exists(updates_css): + provider = Gtk.CssProvider() + provider.load_from_path(updates_css) + Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider, + STYLE_PROVIDER_PRIORITY_UPDATES)
- # Do this at the last possible minute. - unbusyCursor() + self.mainWindow.setCurrentAction(self._currentAction) + + # Do this at the last possible minute. + unbusyCursor() + # If anything went wrong before we start the Gtk main loop, release + # the gui lock and re-raise the exception so that meh can take over + except Exception: + self._gui_lock.release() + raise
Gtk.main()
From: David Shea dshea@redhat.com
Setup the help button label modifier every time the screen changes instead of only when entering a hub or standalone spoke.
(cherry picked from commit 6d82f26f07dd38661da1d441b4cb8a95f8b34342) --- pyanaconda/ui/gui/__init__.py | 55 +++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 25 deletions(-)
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py index 41e28ae..bcf32f6 100644 --- a/pyanaconda/ui/gui/__init__.py +++ b/pyanaconda/ui/gui/__init__.py @@ -328,6 +328,11 @@ def __init__(self, fullscreen):
self._current_action = None
+ # Help button mnemonics handling + self._mnemonic_signal = None + # we have a sensible initial value, just in case + self._saved_help_button_label = _("Help!") + def _on_delete_event(self, widget, event, user_data=None): # Use the quit-clicked signal on the the current standalone, even if the # standalone is not currently displayed. @@ -347,6 +352,20 @@ def _on_overlay_get_child_position(self, overlay_container, overlayed_widget, al # Return False to indicate that the child allocation is not yet set return False
+ def _on_mnemonics_visible_changed(self, window, property_type, obj): + # mnemonics display has been activated or deactivated, + # add or remove the F1 mnemonics display from the help button + help_button = obj.window.get_help_button() + if window.props.mnemonics_visible: + # save current label + old_label = help_button.get_label() + self._saved_help_button_label = old_label + # add the (F1) "mnemonics" to the help button + help_button.set_label("%s (F1)" % old_label) + else: + # restore the old label + help_button.set_label(self._saved_help_button_label) + @property def current_action(self): return self._current_action @@ -370,17 +389,20 @@ def _setVisibleChild(self, child): if isinstance(child.window, AnacondaWidgets.BaseStandalone): child.window.add_accelerator("continue-clicked", self._accel_group, Gdk.KEY_F12, 0, 0) - child.window.add_accelerator("help-button-clicked", self._accel_group, - Gdk.KEY_F1, 0, 0) - child.window.add_accelerator("help-button-clicked", self._accel_group, - Gdk.KEY_F1, Gdk.ModifierType.MOD1_MASK, 0) elif isinstance(child.window, AnacondaWidgets.SpokeWindow): child.window.add_accelerator("button-clicked", self._accel_group, Gdk.KEY_F12, 0, 0) - child.window.add_accelerator("help-button-clicked", self._accel_group, - Gdk.KEY_F1, 0, 0) - child.window.add_accelerator("help-button-clicked", self._accel_group, - Gdk.KEY_F1, Gdk.ModifierType.MOD1_MASK, 0) + + # Configure the help button + child.window.add_accelerator("help-button-clicked", self._accel_group, + Gdk.KEY_F1, 0, 0) + child.window.add_accelerator("help-button-clicked", self._accel_group, + Gdk.KEY_F1, Gdk.ModifierType.MOD1_MASK, 0) + + # Connect to mnemonics-visible to add the (F1) mnemonic to the button label + if self._mnemonic_signal: + self.disconnect(self._mnemonic_signal) + self._mnemonic_signal = self.connect("notify::mnemonics-visible", self._on_mnemonics_visible_changed, child)
self._stack.set_visible_child(child.window)
@@ -479,8 +501,6 @@ def __init__(self, storage, payload, instclass, self.mainWindow.lightbox_on)
ANACONDA_WINDOW_GROUP.add_window(self.mainWindow) - # we have a sensible initial value, just in case - self._saved_help_button_label = _("Help!")
basemask = "pyanaconda.ui" basepath = os.path.dirname(__file__) @@ -631,7 +651,6 @@ def _instantiateAction(self, actionClass): # Use connect_after so classes can add actions before we change screens obj.window.connect_after("continue-clicked", self._on_continue_clicked) obj.window.connect_after("help-button-clicked", self._on_help_clicked, obj) - self.mainWindow.connect("notify::mnemonics-visible", self._on_mnemonics_visible_changed, obj) obj.window.connect_after("quit-clicked", self._on_quit_clicked)
return obj @@ -823,20 +842,6 @@ def _on_help_clicked(self, window, obj): # content for the current screen ihelp.start_yelp(ihelp.get_help_path(obj.helpFile, self.instclass))
- def _on_mnemonics_visible_changed(self, window, property_type, obj): - # mnemonics display has been activated or deactivated, - # add or remove the F1 mnemonics display from the help button - help_button = obj.window.get_help_button() - if window.props.mnemonics_visible: - # save current label - old_label = help_button.get_label() - self._saved_help_button_label = old_label - # add the (F1) "mnemonics" to the help button - help_button.set_label("%s (F1)" % old_label) - else: - # restore the old label - help_button.set_label(self._saved_help_button_label) - def _on_quit_clicked(self, win, userData=None): if not win.get_quit_button(): return
From: David Shea dshea@redhat.com
We had been pulling in "snack" by way of authconfig, and authconfig is changing to use python3.
(cherry picked from commit 0c0177b626d20a6260187c5b7bf54f54c2387eb7) --- anaconda.spec.in | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/anaconda.spec.in b/anaconda.spec.in index 5841b04..9e1e334 100644 --- a/anaconda.spec.in +++ b/anaconda.spec.in @@ -136,6 +136,9 @@ Requires: hfsplus-tools Requires: python-coverage Requires: pygobject3
+# Used by rescue.py and the low RAM message in /sbin/anaconda +Requires: newt-python + # required because of the rescue mode and VNC question Requires: anaconda-tui = %{version}-%{release}
From: Martin Kolman mkolman@redhat.com
This makes it possible to easily add multiple RPMs to the updates image without the need to individually name them all.
Usage examples:
makeupdates --add rpm/*.rpm
or
makeupdates --add rpm/libblockdev*.rpm --- scripts/makeupdates | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/scripts/makeupdates b/scripts/makeupdates index f3d0559..e03dd79 100755 --- a/scripts/makeupdates +++ b/scripts/makeupdates @@ -502,7 +502,17 @@ def addRpms(updates_path, add_rpms): # relative paths can be used with -a/--add add_rpms = map(os.path.abspath, add_rpms)
+ # resolve wildcards and also eliminate non-existing RPMs + resolved_rpms = [] for rpm in add_rpms: + resolved_path = glob.glob(rpm) + if not(resolved_path): + print("warning: requested rpm %s does not exist and can't be aded" % rpm) + elif len(resolved_path) > 1: + print("wildcard %s resolved to %d paths" % (rpm, len(resolved_path))) + resolved_rpms.extend(resolved_path) + + for rpm in resolved_rpms: cmd = "cd %s && rpm2cpio %s | cpio -dium" % (updates_path, rpm) sys.stdout.write(cmd+"\n") os.system(cmd) @@ -989,7 +999,7 @@ def main():
parser.add_argument('-a', '--add', action=ExtendAction, type=str, nargs='+', dest='add_rpms', metavar='PATH_TO_RPM', default=[], - help='add contents of RPMs to the updates image') + help='add contents of RPMs to the updates image (glob supported)')
parser.add_argument('-f', '--fetch', action='store', type=str, metavar="ARCH", help='autofetch new dependencies from Koji for ARCH')
From: David Shea dshea@redhat.com
Using .strip strips the first letters of the hostname if they happen be n, f or s.
(cherry picked from commit c420772742cfbc4d5e7f9aaf580b41f6ca746e86) --- pyanaconda/packaging/yumpayload.py | 2 +- pyanaconda/ui/tui/spokes/source.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py index 4f45171..aa9019f 100644 --- a/pyanaconda/packaging/yumpayload.py +++ b/pyanaconda/packaging/yumpayload.py @@ -656,7 +656,7 @@ def _configureAddOnRepo(self, repo): url = repo.baseurl if url and url.startswith("nfs://"): # Let the assignment throw ValueError for bad NFS urls from kickstart - (server, path) = url.strip("nfs://").split(":", 1) + (server, path) = url[6:].split(":", 1) mountpoint = "%s/%s.nfs" % (MOUNT_DIR, repo.name) self._setupNFS(mountpoint, server, path, None)
diff --git a/pyanaconda/ui/tui/spokes/source.py b/pyanaconda/ui/tui/spokes/source.py index 67043dd..970a77d 100644 --- a/pyanaconda/ui/tui/spokes/source.py +++ b/pyanaconda/ui/tui/spokes/source.py @@ -311,7 +311,7 @@ def apply(self): return False
if self.args.server.startswith("nfs://"): - self.args.server = self.args.server.strip("nfs://") + self.args.server = self.args.server[6:]
try: (self.data.method.server, self.data.method.dir) = self.args.server.split(":", 2)
From: David Shea dshea@redhat.com
The list is supposed to contain versions, not full paths.
(cherry picked from commit 1a7a1cc62f8035eef7d54922ce2f2df3b3f7f640) --- pyanaconda/bootloader.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/bootloader.py b/pyanaconda/bootloader.py index 074bbca..51cd8cf 100644 --- a/pyanaconda/bootloader.py +++ b/pyanaconda/bootloader.py @@ -2395,8 +2395,10 @@ def writeBootLoader(storage, payload, instClass, ksdata): # get a list of installed kernel packages # add whatever rescue kernels we can find to the end kernel_versions = list(payload.kernelVersionList) - kernel_versions += glob(iutil.getSysroot() + "/boot/vmlinuz-*-rescue-*") - kernel_versions += glob(iutil.getSysroot() + "/boot/efi/EFI/%s/vmlinuz-*-rescue-*" % instClass.efi_dir) + + rescue_versions = glob(iutil.getSysroot() + "/boot/vmlinuz-*-rescue-*") + rescue_versions += glob(iutil.getSysroot() + "/boot/efi/EFI/%s/vmlinuz-*-rescue-*" % instClass.efi_dir) + kernel_versions += (f.split("/")[-1][8:] for f in rescue_versions)
if not kernel_versions: log.warning("no kernel was installed -- boot loader config unchanged")
From: David Shea dshea@redhat.com
(cherry picked from commit e4392530941b7eab7ca6f3d3305e9a0729ba180b) --- pyanaconda/ui/gui/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py index bcf32f6..232070e 100644 --- a/pyanaconda/ui/gui/__init__.py +++ b/pyanaconda/ui/gui/__init__.py @@ -562,7 +562,7 @@ def _widgetScale(self): if monitor_height_px >= 1200 and monitor_dpi_x > 192 and monitor_dpi_y > 192: display.set_window_scale(2) # Export the scale so that Gtk programs launched by anaconda are also scaled - iutil.setenv("GDK_SCALE", 2) + iutil.setenv("GDK_SCALE", "2")
def _convertSignals(self): # What tends to happen when we receive a signal is that the signal will
From: "Samantha N. Bueno" sbueno+anaconda@redhat.com
--- anaconda.spec.in | 14 + configure.ac | 2 +- po/anaconda.pot | 906 ++++++++++++++++++++++++++++--------------------------- 3 files changed, 472 insertions(+), 450 deletions(-)
diff --git a/anaconda.spec.in b/anaconda.spec.in index 9e1e334..62ef6b9 100644 --- a/anaconda.spec.in +++ b/anaconda.spec.in @@ -309,6 +309,20 @@ update-desktop-database &> /dev/null || : %{_prefix}/libexec/anaconda/dd_*
%changelog +* Fri Mar 13 2015 Samantha N. Bueno sbueno+anaconda@redhat.com - 22.20.4-1 +- Only insert strings into the environment (#1201411) (dshea) +- Fix the rescue kernel version list in writeBootLoader (#1201429) (dshea) +- Fix the handling of nfs:// URLs. (dshea) +- Add glob support for the -a/--add option in makeupdates (mkolman) +- Require newt-python in anaconda-core (dshea) +- Fix the help button mnemonic display on spokes (dshea) +- Display an error for exceptions during GUI setup (dshea) +- Remove unused invisible char properties (dshea) +- Add a check for invisible_char validity (dshea) +- Connect viewport adjustments to child focus adjustments (#1192155) (dshea) +- Try using the global LUKS passphrase if none is given for LV/part (#1196112) + (vpodzime) + * Wed Mar 04 2015 Samantha N. Bueno sbueno+anaconda@redhat.com - 22.20.3-1 - Fix the import of mountExistingSystem (vpodzime) - Fix import error in anaconda-cleanup. (sbueno+anaconda) diff --git a/configure.ac b/configure.ac index 7490530..746f1b6 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ m4_define(python_required_version, 2.5)
AC_PREREQ([2.63]) -AC_INIT([anaconda], [22.20.3], [anaconda-devel-list@redhat.com]) +AC_INIT([anaconda], [22.20.4], [anaconda-devel-list@redhat.com]) AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2 tar-ustar])
AC_CONFIG_HEADERS([config.h]) diff --git a/po/anaconda.pot b/po/anaconda.pot index 0911f15..c109c25 100644 --- a/po/anaconda.pot +++ b/po/anaconda.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: anaconda 22.20.2\n" +"Project-Id-Version: anaconda 22.20.3\n" "Report-Msgid-Bugs-To: anaconda-devel-list@redhat.com\n" -"POT-Creation-Date: 2015-03-04 18:42-0500\n" +"POT-Creation-Date: 2015-03-13 13:39-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME EMAIL@ADDRESS\n" "Language-Team: LANGUAGE LL@li.org\n" @@ -513,7 +513,7 @@ msgid "" msgstr ""
#: pyanaconda/kickstart.py:486 pyanaconda/kickstart.py:859 -#: pyanaconda/kickstart.py:1421 +#: pyanaconda/kickstart.py:1439 #, python-format msgid "The mount point "%s" is not valid. It must start with a /." msgstr "" @@ -592,8 +592,8 @@ msgid "Logical volume "%s" given in logvol command does not exist." msgstr ""
#: pyanaconda/kickstart.py:896 pyanaconda/kickstart.py:905 -#: pyanaconda/kickstart.py:956 pyanaconda/kickstart.py:1207 -#: pyanaconda/kickstart.py:1216 pyanaconda/kickstart.py:1298 +#: pyanaconda/kickstart.py:956 pyanaconda/kickstart.py:1216 +#: pyanaconda/kickstart.py:1225 pyanaconda/kickstart.py:1307 #, python-format msgid "Target size "%(size)s" for device "%(device)s" is invalid." msgstr "" @@ -612,122 +612,130 @@ msgid "" "extent size of "%(extentSize)s"." msgstr ""
-#: pyanaconda/kickstart.py:935 pyanaconda/kickstart.py:1234 -#: pyanaconda/kickstart.py:1471 +#: pyanaconda/kickstart.py:935 pyanaconda/kickstart.py:1243 +#: pyanaconda/kickstart.py:1489 #, python-format msgid "The "%s" file system type is not supported." msgstr ""
-#: pyanaconda/kickstart.py:1075 pyanaconda/kickstart.py:1079 +#: pyanaconda/kickstart.py:1029 +msgid "No passphrase given for encrypted LV" +msgstr "" + +#: pyanaconda/kickstart.py:1084 pyanaconda/kickstart.py:1088 #, python-format msgid "The %s kickstart command is not currently supported." msgstr ""
-#: pyanaconda/kickstart.py:1104 +#: pyanaconda/kickstart.py:1113 #, python-format msgid "No disk found for specified BIOS disk "%s"." msgstr ""
-#: pyanaconda/kickstart.py:1139 +#: pyanaconda/kickstart.py:1148 #, python-format msgid "RAID partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1150 pyanaconda/kickstart.py:1396 +#: pyanaconda/kickstart.py:1159 pyanaconda/kickstart.py:1414 #, python-format msgid "PV partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1161 pyanaconda/kickstart.py:1406 +#: pyanaconda/kickstart.py:1170 pyanaconda/kickstart.py:1424 #, python-format msgid "Btrfs partition "%s" is defined multiple times." msgstr ""
-#: pyanaconda/kickstart.py:1184 +#: pyanaconda/kickstart.py:1193 #, python-format msgid "The size "%s" is invalid." msgstr ""
-#: pyanaconda/kickstart.py:1191 +#: pyanaconda/kickstart.py:1200 msgid "part --noformat must also use the --onpart option." msgstr ""
-#: pyanaconda/kickstart.py:1196 pyanaconda/kickstart.py:1289 +#: pyanaconda/kickstart.py:1205 pyanaconda/kickstart.py:1298 #, python-format msgid "Partition "%s" given in part command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1249 pyanaconda/kickstart.py:1263 +#: pyanaconda/kickstart.py:1258 pyanaconda/kickstart.py:1272 #, python-format msgid "Disk "%s" given in part command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1252 +#: pyanaconda/kickstart.py:1261 #, python-format msgid "Cannot install to unpartitionable device "%s"." msgstr ""
-#: pyanaconda/kickstart.py:1259 +#: pyanaconda/kickstart.py:1268 #, python-format msgid "Disk "%s" in part command is not partitioned." msgstr ""
-#: pyanaconda/kickstart.py:1272 +#: pyanaconda/kickstart.py:1281 #, python-format msgid "The maximum size "%s" is invalid." msgstr ""
-#: pyanaconda/kickstart.py:1428 +#: pyanaconda/kickstart.py:1351 +msgid "No passphrase given for encrypted part" +msgstr "" + +#: pyanaconda/kickstart.py:1446 msgid "raid --noformat must also use the --device option." msgstr ""
-#: pyanaconda/kickstart.py:1433 +#: pyanaconda/kickstart.py:1451 #, python-format msgid "RAID device "%s" given in raid command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1454 +#: pyanaconda/kickstart.py:1472 #, python-format msgid "" "RAID device "%(device)s" has a format of "%(format)s", but should have a " "format of "mdmember"." msgstr ""
-#: pyanaconda/kickstart.py:1459 +#: pyanaconda/kickstart.py:1477 #, python-format msgid "Tried to use undefined partition "%s" in RAID specification." msgstr ""
-#: pyanaconda/kickstart.py:1487 +#: pyanaconda/kickstart.py:1505 #, python-format msgid "RAID volume "%s" specified with --useexisting does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1494 +#: pyanaconda/kickstart.py:1512 #, python-format msgid "The RAID volume name "%s" is already in use." msgstr ""
-#: pyanaconda/kickstart.py:1709 +#: pyanaconda/kickstart.py:1727 #, python-format msgid "" "Physical volume "%(device)s" has a format of "%(format)s", but should " "have a format of "lvmpv"." msgstr ""
-#: pyanaconda/kickstart.py:1714 +#: pyanaconda/kickstart.py:1732 #, python-format msgid "Tried to use undefined partition "%s" in Volume Group specification" msgstr ""
-#: pyanaconda/kickstart.py:1720 +#: pyanaconda/kickstart.py:1738 #, python-format msgid "" "Volume group "%s" defined without any physical volumes. Either specify " "physical volumes or use --useexisting." msgstr ""
-#: pyanaconda/kickstart.py:1730 +#: pyanaconda/kickstart.py:1748 #, python-format msgid "" "Volume group given physical extent size of "%(extentSize)s", but must be " @@ -735,29 +743,29 @@ msgid "" "%(validExtentSizes)s." msgstr ""
-#: pyanaconda/kickstart.py:1737 +#: pyanaconda/kickstart.py:1755 msgid "" "volgroup --noformat and volgroup --useexisting must also use the --name= " "option." msgstr ""
-#: pyanaconda/kickstart.py:1742 +#: pyanaconda/kickstart.py:1760 #, python-format msgid "Volume group "%s" given in volgroup command does not exist." msgstr ""
-#: pyanaconda/kickstart.py:1745 +#: pyanaconda/kickstart.py:1763 #, python-format msgid "The volume group name "%s" is already in use." msgstr ""
-#: pyanaconda/kickstart.py:1801 +#: pyanaconda/kickstart.py:1819 msgid "" "The upgrade kickstart command is no longer supported. Upgrade functionality " "is provided through fedup." msgstr ""
-#: pyanaconda/kickstart.py:2015 +#: pyanaconda/kickstart.py:2033 msgid "Running pre-installation scripts" msgstr ""
@@ -776,7 +784,7 @@ msgid "" "'-'." msgstr ""
-#: pyanaconda/network.py:1325 pyanaconda/ui/gui/spokes/custom.py:536 +#: pyanaconda/network.py:1325 pyanaconda/ui/gui/spokes/custom.py:544 #: pyanaconda/ui/gui/spokes/network.py:302 #: pyanaconda/ui/gui/spokes/lib/accordion.py:61 msgid "Unknown" @@ -829,7 +837,7 @@ msgstr "" msgid "Not connected" msgstr ""
-#: pyanaconda/network.py:1394 pyanaconda/ui/gui/spokes/network.glade:2103 +#: pyanaconda/network.py:1394 pyanaconda/ui/gui/spokes/network.glade:2097 msgid "No network devices available" msgstr ""
@@ -972,7 +980,7 @@ msgid "Btrfs" msgstr ""
#: pyanaconda/storage_utils.py:55 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:786 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:784 #: pyanaconda/ui/gui/spokes/lib/resize.glade:152 msgid "Disk" msgstr "" @@ -1591,8 +1599,8 @@ msgid "Configure device %s" msgstr ""
#: pyanaconda/ui/tui/spokes/network.py:173 -#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:225 -#: pyanaconda/ui/gui/spokes/network.glade:2240 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:224 +#: pyanaconda/ui/gui/spokes/network.glade:2233 msgid "Host Name" msgstr ""
@@ -1679,7 +1687,7 @@ msgstr ""
#: pyanaconda/ui/tui/spokes/password.py:70 #: pyanaconda/ui/gui/spokes/password.glade:86 -#: pyanaconda/ui/gui/spokes/user.glade:172 +#: pyanaconda/ui/gui/spokes/user.glade:170 msgid "Password" msgstr ""
@@ -1730,21 +1738,21 @@ msgid "Custom partitioning selected" msgstr ""
#: pyanaconda/ui/tui/spokes/storage.py:176 -#: pyanaconda/ui/gui/spokes/storage.py:625 +#: pyanaconda/ui/gui/spokes/storage.py:636 msgid "" "No disks detected. Please shut down the computer, connect at least one " "disk, and restart to complete installation." msgstr ""
#: pyanaconda/ui/tui/spokes/storage.py:178 -#: pyanaconda/ui/gui/spokes/storage.py:627 +#: pyanaconda/ui/gui/spokes/storage.py:638 msgid "No disks selected; please select at least one disk to install to." msgstr ""
#: pyanaconda/ui/tui/spokes/storage.py:193 #: pyanaconda/ui/tui/spokes/source.py:366 -#: pyanaconda/ui/gui/spokes/source.py:652 -#: pyanaconda/ui/gui/spokes/storage.py:576 +#: pyanaconda/ui/gui/spokes/source.py:657 +#: pyanaconda/ui/gui/spokes/storage.py:587 msgid "Probing storage..." msgstr ""
@@ -1850,33 +1858,33 @@ msgstr ""
#: pyanaconda/ui/tui/spokes/source.py:57 #: pyanaconda/ui/tui/spokes/source.py:106 -#: pyanaconda/ui/gui/spokes/source.py:547 -#: pyanaconda/ui/gui/spokes/source.glade:759 +#: pyanaconda/ui/gui/spokes/source.py:552 +#: pyanaconda/ui/gui/spokes/source.glade:757 msgid "Closest mirror" msgstr ""
#: pyanaconda/ui/tui/spokes/source.py:98 -#: pyanaconda/ui/gui/spokes/source.py:539 +#: pyanaconda/ui/gui/spokes/source.py:544 #, python-format msgid "NFS server %s" msgstr ""
#: pyanaconda/ui/tui/spokes/source.py:100 -#: pyanaconda/ui/gui/spokes/source.py:541 +#: pyanaconda/ui/gui/spokes/source.py:546 msgid "Local media" msgstr ""
#: pyanaconda/ui/tui/spokes/source.py:103 #: pyanaconda/ui/tui/spokes/source.py:117 -#: pyanaconda/ui/gui/spokes/source.py:535 +#: pyanaconda/ui/gui/spokes/source.py:540 msgid "Error setting up software source" msgstr ""
#: pyanaconda/ui/tui/spokes/source.py:108 #: pyanaconda/ui/tui/spokes/software.py:121 #: pyanaconda/ui/gui/spokes/datetime_spoke.py:531 -#: pyanaconda/ui/gui/spokes/software.py:218 -#: pyanaconda/ui/gui/spokes/source.py:549 +#: pyanaconda/ui/gui/spokes/software.py:224 +#: pyanaconda/ui/gui/spokes/source.py:554 msgid "Nothing selected" msgstr ""
@@ -1898,7 +1906,7 @@ msgid "Network" msgstr ""
#: pyanaconda/ui/tui/spokes/source.py:139 -#: pyanaconda/ui/gui/spokes/source.py:845 +#: pyanaconda/ui/gui/spokes/source.py:850 msgid "" "The installation source is in use by the installer and cannot be changed." msgstr "" @@ -1945,22 +1953,22 @@ msgid "Software selection" msgstr ""
#: pyanaconda/ui/tui/spokes/software.py:107 -#: pyanaconda/ui/gui/spokes/software.py:202 +#: pyanaconda/ui/gui/spokes/software.py:208 msgid "Error checking software selection" msgstr ""
#: pyanaconda/ui/tui/spokes/software.py:111 -#: pyanaconda/ui/gui/spokes/software.py:205 +#: pyanaconda/ui/gui/spokes/software.py:211 msgid "Installation source not set up" msgstr ""
#: pyanaconda/ui/tui/spokes/software.py:113 -#: pyanaconda/ui/gui/spokes/software.py:208 +#: pyanaconda/ui/gui/spokes/software.py:214 msgid "Source changed - please verify" msgstr ""
#: pyanaconda/ui/tui/spokes/software.py:120 -#: pyanaconda/ui/gui/spokes/software.py:216 +#: pyanaconda/ui/gui/spokes/software.py:222 msgid "Custom software selected" msgstr ""
@@ -1999,7 +2007,7 @@ msgid "Warnings" msgstr ""
#: pyanaconda/ui/tui/spokes/warnings.py:44 -#: pyanaconda/ui/gui/spokes/welcome.glade:518 +#: pyanaconda/ui/gui/spokes/welcome.glade:517 msgid "" "This hardware (or a combination thereof) is not supported by Red Hat. For " "more information on supported hardware, please refer to http://www.redhat." @@ -2073,19 +2081,19 @@ msgstr "" msgid "Password set." msgstr ""
-#: pyanaconda/ui/gui/__init__.py:483 widgets/src/BaseWindow.c:115 +#: pyanaconda/ui/gui/__init__.py:334 widgets/src/BaseWindow.c:115 msgid "Help!" msgstr ""
-#: pyanaconda/ui/gui/__init__.py:727 widgets/src/StandaloneWindow.c:51 +#: pyanaconda/ui/gui/__init__.py:752 widgets/src/StandaloneWindow.c:51 msgid "_Quit" msgstr ""
-#: pyanaconda/ui/gui/__init__.py:742 +#: pyanaconda/ui/gui/__init__.py:767 msgid "_No" msgstr ""
-#: pyanaconda/ui/gui/__init__.py:742 +#: pyanaconda/ui/gui/__init__.py:767 msgid "_Yes" msgstr ""
@@ -2150,7 +2158,7 @@ msgstr "" msgid "MANUAL PARTITIONING" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:360 +#: pyanaconda/ui/gui/spokes/custom.py:368 #, python-format msgctxt "GUI|Custom Partitioning" msgid "%d _storage device selected" @@ -2158,63 +2166,63 @@ msgid_plural "%d _storage devices selected" msgstr[0] "" msgstr[1] ""
-#: pyanaconda/ui/gui/spokes/custom.py:486 +#: pyanaconda/ui/gui/spokes/custom.py:494 #, python-format msgid "" "When you create mount points for your %(name)s %(version)s installation, " "you'll be able to view their details here." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:646 +#: pyanaconda/ui/gui/spokes/custom.py:654 #, python-format msgid "" "/boot/efi must be on a device of type %(oneFsType)s or %(anotherFsType)s" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:650 +#: pyanaconda/ui/gui/spokes/custom.py:658 #, python-format msgid "%(fs)s must be on a device of type %(type)s" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:653 -#: pyanaconda/ui/gui/spokes/custom.py:655 +#: pyanaconda/ui/gui/spokes/custom.py:661 +#: pyanaconda/ui/gui/spokes/custom.py:663 #, python-format msgid "%s cannot be encrypted" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:657 +#: pyanaconda/ui/gui/spokes/custom.py:665 msgid "You must create a new file system on the root device." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:662 +#: pyanaconda/ui/gui/spokes/custom.py:670 #, python-format msgid "Device does not support RAID level selection %s." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:775 +#: pyanaconda/ui/gui/spokes/custom.py:783 msgid "Device resize request failed. Click for details." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:848 +#: pyanaconda/ui/gui/spokes/custom.py:856 msgid "Device reformat request failed. Click for details." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1219 -#: pyanaconda/ui/gui/spokes/custom.py:2110 +#: pyanaconda/ui/gui/spokes/custom.py:1227 +#: pyanaconda/ui/gui/spokes/custom.py:2118 #, python-format msgid "Invalid device name: %s" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1225 +#: pyanaconda/ui/gui/spokes/custom.py:1233 #, python-format msgid "Specified name %s already in use." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1429 +#: pyanaconda/ui/gui/spokes/custom.py:1437 msgid "No disks assigned" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1435 +#: pyanaconda/ui/gui/spokes/custom.py:1443 #, python-format msgctxt "GUI|Custom Partitioning|Devices" msgid " and %d other" @@ -2222,101 +2230,101 @@ msgid_plural " and %d others" msgstr[0] "" msgstr[1] ""
-#: pyanaconda/ui/gui/spokes/custom.py:1493 +#: pyanaconda/ui/gui/spokes/custom.py:1501 msgid "The container is encrypted." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1529 +#: pyanaconda/ui/gui/spokes/custom.py:1537 msgid "" "The space available to this mount point can be changed by modifying the " "volume below." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1531 +#: pyanaconda/ui/gui/spokes/custom.py:1539 msgid "This file system may not be resized." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1585 +#: pyanaconda/ui/gui/spokes/custom.py:1593 msgid "" "Error checking storage configuration. Click for details or press Done again " "to continue." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1587 +#: pyanaconda/ui/gui/spokes/custom.py:1595 msgid "" "Warning checking storage configuration. Click for details or press Done " "again to continue." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1693 +#: pyanaconda/ui/gui/spokes/custom.py:1701 #, python-format msgid "Added new %(type)s to existing container %(name)s." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1704 +#: pyanaconda/ui/gui/spokes/custom.py:1712 msgid "Failed to add new device. Click for details." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1709 +#: pyanaconda/ui/gui/spokes/custom.py:1717 msgid "Invalid partition size set. Use a valid integer." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:1816 +#: pyanaconda/ui/gui/spokes/custom.py:1824 msgid "Device removal request failed. Click for details." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2051 +#: pyanaconda/ui/gui/spokes/custom.py:2059 #, python-format msgid "Volume Group name %s is already in use. Not saving changes." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2081 +#: pyanaconda/ui/gui/spokes/custom.py:2089 #, python-format msgid "(%s free)" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2228 +#: pyanaconda/ui/gui/spokes/custom.py:2236 #, python-format msgid "" "This Software RAID array is missing %(missingMembers)d of %(totalMembers)d " "member partitions. You can remove it or select a different device." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2234 +#: pyanaconda/ui/gui/spokes/custom.py:2242 #, python-format msgid "" "This LVM Volume Group is missing %(missingPVs)d of %(totalPVs)d physical " "volumes. You can remove it or select a different device." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2317 +#: pyanaconda/ui/gui/spokes/custom.py:2325 msgid "No disks selected." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2322 +#: pyanaconda/ui/gui/spokes/custom.py:2330 msgid "Not enough free space on selected disks." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2327 -#: pyanaconda/ui/gui/spokes/custom.py:2352 +#: pyanaconda/ui/gui/spokes/custom.py:2335 +#: pyanaconda/ui/gui/spokes/custom.py:2360 msgid "Automatic partitioning failed. Click for details." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2576 +#: pyanaconda/ui/gui/spokes/custom.py:2584 msgid "" "Continuing with this action will reset all your partitioning selections to " "their current on-disk state." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2584 +#: pyanaconda/ui/gui/spokes/custom.py:2592 msgid "_Reset selections" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2584 +#: pyanaconda/ui/gui/spokes/custom.py:2592 msgid "_Preserve current selections" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.py:2659 +#: pyanaconda/ui/gui/spokes/custom.py:2667 msgid "Failed to unlock encrypted block device. Click for details" msgstr ""
@@ -2336,7 +2344,7 @@ msgstr "" #: pyanaconda/ui/gui/spokes/datetime_spoke.py:701 #: pyanaconda/ui/gui/spokes/datetime_spoke.py:715 #: pyanaconda/ui/gui/spokes/datetime_spoke.py:901 -#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:720 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:719 msgid "PM" msgstr ""
@@ -2360,7 +2368,7 @@ msgctxt "GUI|Spoke" msgid "_INSTALLATION DESTINATION" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.py:552 +#: pyanaconda/ui/gui/spokes/filter.py:573 #, python-format msgctxt "GUI|Installation Destination|Filter" msgid "%d _storage device selected" @@ -2486,13 +2494,13 @@ msgstr "" #: pyanaconda/ui/gui/spokes/network.py:820 #: pyanaconda/ui/gui/spokes/network.glade:516 #: pyanaconda/ui/gui/spokes/network.glade:853 -#: pyanaconda/ui/gui/spokes/network.glade:1421 +#: pyanaconda/ui/gui/spokes/network.glade:1420 msgid "IPv6 Address" msgstr ""
#: pyanaconda/ui/gui/spokes/network.py:822 #: pyanaconda/ui/gui/spokes/network.py:824 -#: pyanaconda/ui/gui/spokes/network.glade:1409 +#: pyanaconda/ui/gui/spokes/network.glade:1408 msgid "IP Address" msgstr ""
@@ -2519,15 +2527,15 @@ msgstr ""
#: pyanaconda/ui/gui/spokes/network.py:1149 widgets/src/SpokeSelector.c:59 #: pyanaconda/ui/gui/spokes/filter.glade:160 -#: pyanaconda/ui/gui/spokes/filter.glade:569 -#: pyanaconda/ui/gui/spokes/filter.glade:901 -#: pyanaconda/ui/gui/spokes/filter.glade:1525 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:603 +#: pyanaconda/ui/gui/spokes/filter.glade:566 +#: pyanaconda/ui/gui/spokes/filter.glade:897 +#: pyanaconda/ui/gui/spokes/filter.glade:1514 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:602 msgid "None" msgstr ""
#: pyanaconda/ui/gui/spokes/network.py:1281 -#: pyanaconda/ui/gui/spokes/network.glade:2442 +#: pyanaconda/ui/gui/spokes/network.glade:2435 msgid "Authentication required by wireless network" msgstr ""
@@ -2592,46 +2600,46 @@ msgctxt "GUI|Spoke" msgid "_SOFTWARE SELECTION" msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:92 +#: pyanaconda/ui/gui/spokes/software.py:98 #: pyanaconda/ui/gui/spokes/source.py:54 msgid "Downloading package metadata..." msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:95 +#: pyanaconda/ui/gui/spokes/software.py:101 msgid "Downloading group metadata..." msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:137 -#: pyanaconda/ui/gui/spokes/source.py:529 +#: pyanaconda/ui/gui/spokes/software.py:143 +#: pyanaconda/ui/gui/spokes/source.py:534 msgid "Checking software dependencies..." msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:142 +#: pyanaconda/ui/gui/spokes/software.py:148 msgid "Error checking software dependencies" msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:364 +#: pyanaconda/ui/gui/spokes/software.py:370 msgid "Error checking software dependencies. Click for details." msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:466 +#: pyanaconda/ui/gui/spokes/software.py:472 msgid "" "The software marked for installation has the following errors. This is " "likely caused by an error with your installation source. You can quit the " "installer, change your software source, or change your software selections." msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:471 +#: pyanaconda/ui/gui/spokes/software.py:477 msgctxt "GUI|Software Selection|Error Dialog" msgid "_Quit" msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:472 +#: pyanaconda/ui/gui/spokes/software.py:478 msgctxt "GUI|Software Selection|Error Dialog" msgid "_Modify Software Source" msgstr ""
-#: pyanaconda/ui/gui/spokes/software.py:473 +#: pyanaconda/ui/gui/spokes/software.py:479 msgctxt "GUI|Software Selection|Error Dialog" msgid "Modify _Selections" msgstr "" @@ -2657,84 +2665,84 @@ msgstr "" msgid "Proxy authentication data duplicated" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:231 +#: pyanaconda/ui/gui/spokes/source.py:236 msgid "This media is good to install from." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:233 +#: pyanaconda/ui/gui/spokes/source.py:238 msgid "This media is not good to install from." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:354 +#: pyanaconda/ui/gui/spokes/source.py:359 msgctxt "GUI|Spoke" msgid "_INSTALLATION SOURCE" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:469 -#: pyanaconda/ui/gui/spokes/source.py:668 +#: pyanaconda/ui/gui/spokes/source.py:474 +#: pyanaconda/ui/gui/spokes/source.py:673 msgid "Failed to set up installation source; check the repo url" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:533 +#: pyanaconda/ui/gui/spokes/source.py:538 msgid "Error setting up base repository" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:544 +#: pyanaconda/ui/gui/spokes/source.py:549 msgid "Error setting up ISO file" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:670 +#: pyanaconda/ui/gui/spokes/source.py:675 msgid "" "Failed to set up installation source; check the repo url and proxy settings" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:699 +#: pyanaconda/ui/gui/spokes/source.py:704 #, python-format msgid "Device: %s" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:700 +#: pyanaconda/ui/gui/spokes/source.py:705 #, python-format msgid "Label: %s" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:902 +#: pyanaconda/ui/gui/spokes/source.py:907 msgid "URL is empty" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:906 +#: pyanaconda/ui/gui/spokes/source.py:911 msgid "Invalid URL" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:923 +#: pyanaconda/ui/gui/spokes/source.py:928 msgid "Protocol in URL does not match selected protocol" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:926 +#: pyanaconda/ui/gui/spokes/source.py:931 msgid "NFS server is empty" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:933 +#: pyanaconda/ui/gui/spokes/source.py:938 msgid "Invalid host name" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:936 +#: pyanaconda/ui/gui/spokes/source.py:941 msgid "Remote directory is required" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:957 +#: pyanaconda/ui/gui/spokes/source.py:962 msgid "Duplicate repository names." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:964 +#: pyanaconda/ui/gui/spokes/source.py:969 msgid "Empty repository name" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:967 +#: pyanaconda/ui/gui/spokes/source.py:972 msgid "Invalid repository name" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.py:973 +#: pyanaconda/ui/gui/spokes/source.py:978 msgid "Repository name conflicts with internal repository name." msgstr ""
@@ -2802,7 +2810,7 @@ msgid "Failed to save storage configuration..." msgstr ""
#: pyanaconda/ui/gui/spokes/storage.py:378 -#: pyanaconda/ui/gui/spokes/storage.py:658 +#: pyanaconda/ui/gui/spokes/storage.py:669 msgid "Formatting DASDs" msgstr ""
@@ -2814,7 +2822,7 @@ msgstr "" msgid "Warning checking storage configuration. Click for details." msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:550 +#: pyanaconda/ui/gui/spokes/storage.py:561 #, python-format msgid "" "FCP device %(hba_id)s\n" @@ -2822,52 +2830,52 @@ msgid "" "LUN %(lun)s" msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:560 +#: pyanaconda/ui/gui/spokes/storage.py:571 #, python-format msgid "%s free" msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:607 +#: pyanaconda/ui/gui/spokes/storage.py:618 #, python-format msgid "%(count)d disk selected; %(capacity)s capacity; %(free)s free" msgid_plural "%(count)d disks selected; %(capacity)s capacity; %(free)s free" msgstr[0] "" msgstr[1] ""
-#: pyanaconda/ui/gui/spokes/storage.py:691 +#: pyanaconda/ui/gui/spokes/storage.py:702 msgid "" "You have chosen to skip boot loader installation. Your system may not be " "bootable." msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:904 +#: pyanaconda/ui/gui/spokes/storage.py:915 msgid "You'll be able to make space available during custom partitioning." msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:920 +#: pyanaconda/ui/gui/spokes/storage.py:931 msgid "" "The following errors were encountered when checking your storage " "configuration. You can modify your storage layout or quit the installer." msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:925 +#: pyanaconda/ui/gui/spokes/storage.py:936 msgctxt "GUI|Storage|Error Dialog" msgid "_Quit" msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:926 +#: pyanaconda/ui/gui/spokes/storage.py:937 msgctxt "GUI|Storage|Error Dialog" msgid "_Modify Storage Layout" msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:940 +#: pyanaconda/ui/gui/spokes/storage.py:951 msgid "" "The following warnings were encountered when checking your storage " "configuration. These are not fatal, but you may wish to make changes to " "your storage layout." msgstr ""
-#: pyanaconda/ui/gui/spokes/storage.py:944 +#: pyanaconda/ui/gui/spokes/storage.py:955 msgid "_OK" msgstr ""
@@ -3334,19 +3342,19 @@ msgctxt "GUI|Advanced User" msgid "_Add user to the following groups:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advanced_user.glade:291 +#: pyanaconda/ui/gui/spokes/advanced_user.glade:290 msgid "Example:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advanced_user.glade:308 +#: pyanaconda/ui/gui/spokes/advanced_user.glade:307 msgid "wheel, my-team (1245), project-x (29935)" msgstr ""
-#: pyanaconda/ui/gui/spokes/advanced_user.glade:342 +#: pyanaconda/ui/gui/spokes/advanced_user.glade:341 msgid "Tip:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advanced_user.glade:361 +#: pyanaconda/ui/gui/spokes/advanced_user.glade:360 msgid "" "You may input a comma-separated list of group names and group IDs here. " "Groups that do not already exist will be created; specify their GID in " @@ -3367,107 +3375,107 @@ msgstr "" msgid "Add and mark for usage NTP servers" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:170 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:169 msgid "New NTP Server" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:189 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:188 msgid "Add NTP Server" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:240 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:239 msgid "Working" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:248 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:247 msgid "Use" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:276 -#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:490 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:275 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:489 msgid "Configure NTP" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:297 -#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:905 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:296 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:904 msgid "TIME & DATE" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:347 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:346 msgctxt "GUI|Date and Time" msgid "_Region:" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:377 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:376 msgid "Region" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:394 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:393 msgctxt "GUI|Date and Time" msgid "_City:" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:424 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:423 msgid "City" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:452 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:451 msgctxt "GUI|Date and Time" msgid "_Network Time" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:470 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:469 msgid "Use Network Time" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:557 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:556 msgid "Hours" msgstr ""
#. TRANSLATORS: This is the separator between hours and minutes, like in HH:MM -#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:570 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:569 msgid ":" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:590 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:589 msgid "Minutes" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:608 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:607 msgid "Hour Up" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:626 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:625 msgid "Hour Down" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:644 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:643 msgid "Minutes Up" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:662 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:661 msgid "Minutes Down" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:706 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:705 msgid "AM/PM Up" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:742 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:741 msgid "AM/PM Down" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:793 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:792 msgctxt "GUI|Date and Time" msgid "24-_hour" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:811 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:810 msgctxt "GUI|Date and Time" msgid "_AM/PM" msgstr ""
-#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:870 +#: pyanaconda/ui/gui/spokes/datetime_spoke.glade:869 msgid "Set Date & Time" msgstr ""
@@ -3504,221 +3512,221 @@ msgctxt "GUI|Installation Destination|Filter|Search|Port Target LUN" msgid "_Target:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:253 +#: pyanaconda/ui/gui/spokes/filter.glade:252 msgctxt "GUI|Installation Destination|Filter|Search|Port Target LUN" msgid "_LUN:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:295 +#: pyanaconda/ui/gui/spokes/filter.glade:293 msgctxt "GUI|Installation Destination|Filter|Search|WWID" msgid "_WWID:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:369 -#: pyanaconda/ui/gui/spokes/filter.glade:1272 +#: pyanaconda/ui/gui/spokes/filter.glade:366 +#: pyanaconda/ui/gui/spokes/filter.glade:1267 #: pyanaconda/ui/gui/spokes/keyboard.glade:520 -#: pyanaconda/ui/gui/spokes/source.glade:991 +#: pyanaconda/ui/gui/spokes/source.glade:987 #: pyanaconda/ui/gui/spokes/lib/cart.glade:133 #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:235 #: pyanaconda/ui/gui/spokes/lib/resize.glade:163 msgid "Name" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:383 -#: pyanaconda/ui/gui/spokes/filter.glade:572 -#: pyanaconda/ui/gui/spokes/filter.glade:752 +#: pyanaconda/ui/gui/spokes/filter.glade:380 +#: pyanaconda/ui/gui/spokes/filter.glade:569 +#: pyanaconda/ui/gui/spokes/filter.glade:748 msgid "WWID" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:397 -#: pyanaconda/ui/gui/spokes/filter.glade:766 -#: pyanaconda/ui/gui/spokes/filter.glade:958 -#: pyanaconda/ui/gui/spokes/filter.glade:1300 +#: pyanaconda/ui/gui/spokes/filter.glade:394 +#: pyanaconda/ui/gui/spokes/filter.glade:762 +#: pyanaconda/ui/gui/spokes/filter.glade:954 +#: pyanaconda/ui/gui/spokes/filter.glade:1295 #: pyanaconda/ui/gui/spokes/lib/cart.glade:145 #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:248 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:799 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:797 msgid "Capacity" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:411 -#: pyanaconda/ui/gui/spokes/filter.glade:571 -#: pyanaconda/ui/gui/spokes/filter.glade:795 -#: pyanaconda/ui/gui/spokes/filter.glade:903 -#: pyanaconda/ui/gui/spokes/filter.glade:987 +#: pyanaconda/ui/gui/spokes/filter.glade:408 +#: pyanaconda/ui/gui/spokes/filter.glade:568 +#: pyanaconda/ui/gui/spokes/filter.glade:791 +#: pyanaconda/ui/gui/spokes/filter.glade:899 +#: pyanaconda/ui/gui/spokes/filter.glade:983 msgid "Interconnect" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:425 +#: pyanaconda/ui/gui/spokes/filter.glade:422 msgid "Model" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:439 -#: pyanaconda/ui/gui/spokes/filter.glade:1328 -#: pyanaconda/ui/gui/spokes/filter.glade:1528 +#: pyanaconda/ui/gui/spokes/filter.glade:436 +#: pyanaconda/ui/gui/spokes/filter.glade:1323 +#: pyanaconda/ui/gui/spokes/filter.glade:1517 msgid "LUN" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:453 -#: pyanaconda/ui/gui/spokes/filter.glade:1342 +#: pyanaconda/ui/gui/spokes/filter.glade:450 +#: pyanaconda/ui/gui/spokes/filter.glade:1337 msgid "Port" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:467 +#: pyanaconda/ui/gui/spokes/filter.glade:464 msgid "Target" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:481 -#: pyanaconda/ui/gui/spokes/filter.glade:570 -#: pyanaconda/ui/gui/spokes/filter.glade:780 -#: pyanaconda/ui/gui/spokes/filter.glade:902 -#: pyanaconda/ui/gui/spokes/filter.glade:972 +#: pyanaconda/ui/gui/spokes/filter.glade:478 +#: pyanaconda/ui/gui/spokes/filter.glade:567 +#: pyanaconda/ui/gui/spokes/filter.glade:776 +#: pyanaconda/ui/gui/spokes/filter.glade:898 +#: pyanaconda/ui/gui/spokes/filter.glade:968 msgid "Vendor" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:502 +#: pyanaconda/ui/gui/spokes/filter.glade:499 msgctxt "GUI|Installation Destination|Filter|Search" msgid "_Find" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:524 +#: pyanaconda/ui/gui/spokes/filter.glade:521 msgctxt "GUI|Installation Destination|Filter" msgid "Searc_h" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:555 +#: pyanaconda/ui/gui/spokes/filter.glade:552 msgctxt "GUI|Installation Destination|Filter|Multipath" msgid "Filter _By:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:608 +#: pyanaconda/ui/gui/spokes/filter.glade:605 msgctxt "GUI|Installation Destination|Filter|Multipath|Vendor" msgid "Show Only _Devices From:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:646 +#: pyanaconda/ui/gui/spokes/filter.glade:643 msgctxt "GUI|Installation Destination|Filter|Multipath|Interconnect" msgid "Show Only _Devices With:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:684 +#: pyanaconda/ui/gui/spokes/filter.glade:681 msgctxt "GUI|Installation Destination|Filter|Multipath|WWID" msgid "Show Only _Devices Containing:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:809 +#: pyanaconda/ui/gui/spokes/filter.glade:805 msgid "Paths" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:830 +#: pyanaconda/ui/gui/spokes/filter.glade:826 msgctxt "GUI|Installation Destination|Filter|Multipath" msgid "_Find" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:855 +#: pyanaconda/ui/gui/spokes/filter.glade:851 msgctxt "GUI|Installation Destination|Filter" msgid "_Multipath Devices" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:887 +#: pyanaconda/ui/gui/spokes/filter.glade:883 msgctxt "GUI|Installation Destination|Filter|Other" msgid "Filter _By:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:904 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:825 +#: pyanaconda/ui/gui/spokes/filter.glade:900 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:823 msgid "ID" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:944 +#: pyanaconda/ui/gui/spokes/filter.glade:940 msgid "Identifier" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1050 +#: pyanaconda/ui/gui/spokes/filter.glade:1046 msgctxt "GUI|Installation Destination|Filter|Other|Vendor" msgid "Show Only _Devices From:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1088 +#: pyanaconda/ui/gui/spokes/filter.glade:1084 msgctxt "GUI|Installation Destination|Filter|Other|Interconnect" msgid "Show Only _Devices With:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1126 +#: pyanaconda/ui/gui/spokes/filter.glade:1122 msgctxt "GUI|Installation Destination|Filter|Other|ID" msgid "Show Only _Devices Containing:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1178 +#: pyanaconda/ui/gui/spokes/filter.glade:1173 msgctxt "GUI|Installation Destination|Filter" msgid "_Other SAN Devices" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1210 +#: pyanaconda/ui/gui/spokes/filter.glade:1205 msgctxt "GUI|Installation Destination|Filter|zSeries" msgid "Filter B_y:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1220 +#: pyanaconda/ui/gui/spokes/filter.glade:1215 msgctxt "GUI|Installation Destination|Filter|zSeries" msgid "_Find" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1258 -#: pyanaconda/ui/gui/spokes/filter.glade:1526 +#: pyanaconda/ui/gui/spokes/filter.glade:1253 +#: pyanaconda/ui/gui/spokes/filter.glade:1515 msgid "CCW" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1286 +#: pyanaconda/ui/gui/spokes/filter.glade:1281 #: pyanaconda/ui/gui/spokes/lib/summary.glade:155 msgid "Type" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1314 -#: pyanaconda/ui/gui/spokes/filter.glade:1527 +#: pyanaconda/ui/gui/spokes/filter.glade:1309 +#: pyanaconda/ui/gui/spokes/filter.glade:1516 msgid "WWPN" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1387 +#: pyanaconda/ui/gui/spokes/filter.glade:1382 msgctxt "GUI|Installation Destination|Filter|zSeries|CCW" msgid "_CCW:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1436 +#: pyanaconda/ui/gui/spokes/filter.glade:1429 msgctxt "GUI|Installation Destination|Filter|zSeries|WWPN" msgid "_WWPN:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1480 +#: pyanaconda/ui/gui/spokes/filter.glade:1471 msgctxt "GUI|Installation Destination|Filter|zSeries|LUN" msgid "_LUN:" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1552 +#: pyanaconda/ui/gui/spokes/filter.glade:1541 msgctxt "GUI|Installation Destination|Filter" msgid "_zSeries Devices" msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1575 +#: pyanaconda/ui/gui/spokes/filter.glade:1564 msgctxt "GUI|Installation Destination|Filter" msgid "_Add zFCP LUN..." msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1590 +#: pyanaconda/ui/gui/spokes/filter.glade:1579 msgctxt "GUI|Installation Destination|Filter" msgid "Add EC_KD DASD..." msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1605 +#: pyanaconda/ui/gui/spokes/filter.glade:1594 msgctxt "GUI|Installation Destination|Filter" msgid "Add _iSCSI Target..." msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1620 +#: pyanaconda/ui/gui/spokes/filter.glade:1609 msgctxt "GUI|Installation Destination|Filter" msgid "Add FCo_E SAN..." msgstr ""
-#: pyanaconda/ui/gui/spokes/filter.glade:1635 +#: pyanaconda/ui/gui/spokes/filter.glade:1624 msgid "Refresh _List" msgstr ""
@@ -3742,7 +3750,7 @@ msgid "_Select the type of device you wish to add" msgstr ""
#: pyanaconda/ui/gui/spokes/network.glade:165 -#: pyanaconda/ui/gui/spokes/network.glade:2277 +#: pyanaconda/ui/gui/spokes/network.glade:2270 msgid "NETWORK & HOST NAME" msgstr ""
@@ -3758,13 +3766,13 @@ msgstr ""
#: pyanaconda/ui/gui/spokes/network.glade:442 #: pyanaconda/ui/gui/spokes/network.glade:878 -#: pyanaconda/ui/gui/spokes/network.glade:1446 +#: pyanaconda/ui/gui/spokes/network.glade:1445 msgid "DNS" msgstr ""
#: pyanaconda/ui/gui/spokes/network.glade:468 #: pyanaconda/ui/gui/spokes/network.glade:865 -#: pyanaconda/ui/gui/spokes/network.glade:1433 +#: pyanaconda/ui/gui/spokes/network.glade:1432 msgid "Default Route" msgstr ""
@@ -3774,7 +3782,7 @@ msgstr ""
#: pyanaconda/ui/gui/spokes/network.glade:564 #: pyanaconda/ui/gui/spokes/network.glade:829 -#: pyanaconda/ui/gui/spokes/network.glade:1277 +#: pyanaconda/ui/gui/spokes/network.glade:1276 msgid "Speed" msgstr ""
@@ -3817,139 +3825,139 @@ msgstr "" msgid "Security Key" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1112 +#: pyanaconda/ui/gui/spokes/network.glade:1111 msgctxt "GUI|Network|Wireless" msgid "_Use as Hotspot..." msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1129 +#: pyanaconda/ui/gui/spokes/network.glade:1128 msgctxt "GUI|Network|Wireless" msgid "_Stop Hotspot..." msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1146 +#: pyanaconda/ui/gui/spokes/network.glade:1145 msgctxt "GUI|Network|Wireless" msgid "_Configure..." msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1265 +#: pyanaconda/ui/gui/spokes/network.glade:1264 msgid "IMEI" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1289 +#: pyanaconda/ui/gui/spokes/network.glade:1288 msgid "Provider" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1471 +#: pyanaconda/ui/gui/spokes/network.glade:1470 msgctxt "GUI|Network|Mobile Broadband" msgid "_Configure..." msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1582 +#: pyanaconda/ui/gui/spokes/network.glade:1581 msgid "VPN Type" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1594 +#: pyanaconda/ui/gui/spokes/network.glade:1593 msgid "Gateway" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1606 +#: pyanaconda/ui/gui/spokes/network.glade:1605 msgid "Group Name" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1618 +#: pyanaconda/ui/gui/spokes/network.glade:1617 msgid "Group Password" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1630 -#: pyanaconda/ui/gui/spokes/user.glade:118 +#: pyanaconda/ui/gui/spokes/network.glade:1629 +#: pyanaconda/ui/gui/spokes/user.glade:116 msgid "User Name" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1737 +#: pyanaconda/ui/gui/spokes/network.glade:1736 msgctxt "GUI|Network|VPN" msgid "_Configure..." msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1860 +#: pyanaconda/ui/gui/spokes/network.glade:1859 msgctxt "GUI|Network|Proxy" msgid "_Method" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1885 +#: pyanaconda/ui/gui/spokes/network.glade:1884 msgctxt "GUI|Network|Proxy" msgid "_Configuration URL" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1911 +#: pyanaconda/ui/gui/spokes/network.glade:1909 msgctxt "GUI|Network|Proxy" msgid "HTTP _Proxy" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1925 +#: pyanaconda/ui/gui/spokes/network.glade:1923 msgctxt "GUI|Network|Proxy" msgid "H_TTPS Proxy" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1939 +#: pyanaconda/ui/gui/spokes/network.glade:1937 msgctxt "GUI|Network|Proxy" msgid "_FTP Proxy" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:1953 +#: pyanaconda/ui/gui/spokes/network.glade:1951 msgctxt "GUI|Network|Proxy" msgid "_Socks Host" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2146 +#: pyanaconda/ui/gui/spokes/network.glade:2140 msgid "Network Config Box" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2162 +#: pyanaconda/ui/gui/spokes/network.glade:2156 msgctxt "GUI|Network" msgid "Unloc_k" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2183 +#: pyanaconda/ui/gui/spokes/network.glade:2177 msgctxt "GUI|Network" msgid "_Airplane Mode" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2202 +#: pyanaconda/ui/gui/spokes/network.glade:2196 msgid "More Network Config Box" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2222 +#: pyanaconda/ui/gui/spokes/network.glade:2216 msgctxt "GUI|Network" msgid "_Host Name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2283 +#: pyanaconda/ui/gui/spokes/network.glade:2276 msgid "NETWORK CONFIGURATION" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2328 +#: pyanaconda/ui/gui/spokes/network.glade:2321 msgid "" "We'll need network access to fetch information about your location and to " "make software\n" "updates available for you." msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2358 +#: pyanaconda/ui/gui/spokes/network.glade:2351 msgid "Authentication" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2372 +#: pyanaconda/ui/gui/spokes/network.glade:2365 msgctxt "GUI|Network|Authentication Dialog" msgid "_Cancel" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2387 +#: pyanaconda/ui/gui/spokes/network.glade:2380 msgctxt "GUI|Network|Authentication Dialog" msgid "C_onnect" msgstr ""
-#: pyanaconda/ui/gui/spokes/network.glade:2461 +#: pyanaconda/ui/gui/spokes/network.glade:2454 msgid "" "Passwords or encryption keys are required to access\n" "the wireless network" @@ -4195,38 +4203,38 @@ msgstr "" msgid "Available Layouts" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:575 +#: pyanaconda/ui/gui/spokes/keyboard.glade:574 msgid "Add Layout" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:607 +#: pyanaconda/ui/gui/spokes/keyboard.glade:606 msgctxt "GUI|Keyboard Layout|Switching Options" msgid "_Cancel" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:621 +#: pyanaconda/ui/gui/spokes/keyboard.glade:620 msgctxt "GUI|Keyboard Layout|Switching Options" msgid "_OK" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:653 +#: pyanaconda/ui/gui/spokes/keyboard.glade:652 msgid "LAYOUT SWITCHING OPTIONS" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:670 +#: pyanaconda/ui/gui/spokes/keyboard.glade:669 msgid "" "Which combination(s) would you prefer for switching between keyboard layouts?" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:706 +#: pyanaconda/ui/gui/spokes/keyboard.glade:705 msgid "use" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:719 +#: pyanaconda/ui/gui/spokes/keyboard.glade:718 msgid "description" msgstr ""
-#: pyanaconda/ui/gui/spokes/keyboard.glade:753 +#: pyanaconda/ui/gui/spokes/keyboard.glade:752 msgid "Layout Options" msgstr ""
@@ -4239,9 +4247,9 @@ msgid "Select additional language support to be installed:" msgstr ""
#: pyanaconda/ui/gui/spokes/langsupport.glade:138 -#: pyanaconda/ui/gui/spokes/langsupport.glade:242 +#: pyanaconda/ui/gui/spokes/langsupport.glade:241 #: pyanaconda/ui/gui/spokes/welcome.glade:273 -#: pyanaconda/ui/gui/spokes/welcome.glade:373 +#: pyanaconda/ui/gui/spokes/welcome.glade:372 msgid "nativeName" msgstr ""
@@ -4255,12 +4263,12 @@ msgstr "" msgid "selected" msgstr ""
-#: pyanaconda/ui/gui/spokes/langsupport.glade:194 -#: pyanaconda/ui/gui/spokes/welcome.glade:337 +#: pyanaconda/ui/gui/spokes/langsupport.glade:193 +#: pyanaconda/ui/gui/spokes/welcome.glade:336 msgid "Type here to search." msgstr ""
-#: pyanaconda/ui/gui/spokes/langsupport.glade:228 +#: pyanaconda/ui/gui/spokes/langsupport.glade:227 msgid "checked" msgstr ""
@@ -4280,12 +4288,12 @@ msgid "_Confirm:" msgstr ""
#: pyanaconda/ui/gui/spokes/password.glade:104 -#: pyanaconda/ui/gui/spokes/user.glade:189 +#: pyanaconda/ui/gui/spokes/user.glade:187 msgid "Confirm Password" msgstr ""
#: pyanaconda/ui/gui/spokes/password.glade:150 -#: pyanaconda/ui/gui/spokes/user.glade:253 +#: pyanaconda/ui/gui/spokes/user.glade:251 msgid "empty password" msgstr ""
@@ -4342,188 +4350,188 @@ msgstr "" msgid "<span size="small"><b>Example:</b> squid.mysite.org:3128</span>" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:349 +#: pyanaconda/ui/gui/spokes/source.glade:348 msgctxt "GUI|Software Source|Proxy Dialog" msgid "_Use Authentication" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:376 +#: pyanaconda/ui/gui/spokes/source.glade:375 msgctxt "GUI|Software Source|Proxy Dialog" msgid "User _name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:393 +#: pyanaconda/ui/gui/spokes/source.glade:392 msgctxt "GUI|Software Source|Proxy Dialog" msgid "Pass_word:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:473 +#: pyanaconda/ui/gui/spokes/source.glade:471 msgid "INSTALLATION SOURCE" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:532 +#: pyanaconda/ui/gui/spokes/source.glade:530 msgid "Which installation source would you like to use?" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:546 +#: pyanaconda/ui/gui/spokes/source.glade:544 msgctxt "GUI|Software Source" msgid "_Auto-detected installation media:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:573 +#: pyanaconda/ui/gui/spokes/source.glade:571 msgid "Device:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:585 +#: pyanaconda/ui/gui/spokes/source.glade:583 msgid "Label:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:594 -#: pyanaconda/ui/gui/spokes/source.glade:694 +#: pyanaconda/ui/gui/spokes/source.glade:592 +#: pyanaconda/ui/gui/spokes/source.glade:692 msgctxt "GUI|Software Source" msgid "_Verify" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:618 +#: pyanaconda/ui/gui/spokes/source.glade:616 msgctxt "GUI|Software Source" msgid "_ISO file:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:646 +#: pyanaconda/ui/gui/spokes/source.glade:644 msgctxt "GUI|Software Source" msgid "D_evice:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:677 +#: pyanaconda/ui/gui/spokes/source.glade:675 msgctxt "GUI|Software Source" msgid "_Choose an ISO" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:718 +#: pyanaconda/ui/gui/spokes/source.glade:716 msgctxt "GUI|Software Source" msgid "_On the network:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:782 +#: pyanaconda/ui/gui/spokes/source.glade:779 msgctxt "GUI|Software Source" msgid "_Proxy setup..." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:797 +#: pyanaconda/ui/gui/spokes/source.glade:794 msgctxt "GUI|Software Source" msgid "This URL refers to a _mirror list." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:835 +#: pyanaconda/ui/gui/spokes/source.glade:832 msgctxt "GUI|Software Source" msgid "N_FS mount options:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:850 -#: pyanaconda/ui/gui/spokes/source.glade:851 +#: pyanaconda/ui/gui/spokes/source.glade:847 +#: pyanaconda/ui/gui/spokes/source.glade:848 msgid "This field is optional." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:885 +#: pyanaconda/ui/gui/spokes/source.glade:881 msgid "Updates" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:912 +#: pyanaconda/ui/gui/spokes/source.glade:908 msgctxt "GUI|Software Source" msgid "" "Don't install the latest available software _updates. Install the default " "versions provided by the installation source above." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:937 +#: pyanaconda/ui/gui/spokes/source.glade:933 msgid "Additional repositories" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:978 +#: pyanaconda/ui/gui/spokes/source.glade:974 msgid "Enabled" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1023 -#: pyanaconda/ui/gui/spokes/source.glade:1024 +#: pyanaconda/ui/gui/spokes/source.glade:1019 +#: pyanaconda/ui/gui/spokes/source.glade:1020 msgid "Add a new repository." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1025 +#: pyanaconda/ui/gui/spokes/source.glade:1021 msgctxt "GUI|Software Source" msgid "A_dd" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1042 -#: pyanaconda/ui/gui/spokes/source.glade:1043 +#: pyanaconda/ui/gui/spokes/source.glade:1038 +#: pyanaconda/ui/gui/spokes/source.glade:1039 msgid "Remove the selected repository." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1044 +#: pyanaconda/ui/gui/spokes/source.glade:1040 msgctxt "GUI|Software Source" msgid "_Remove" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1061 -#: pyanaconda/ui/gui/spokes/source.glade:1062 +#: pyanaconda/ui/gui/spokes/source.glade:1057 +#: pyanaconda/ui/gui/spokes/source.glade:1058 msgid "Revert to the previous list of repositories." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1063 +#: pyanaconda/ui/gui/spokes/source.glade:1059 msgctxt "GUI|Software Source" msgid "Rese_t" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1093 -#: pyanaconda/ui/gui/spokes/source.glade:1094 +#: pyanaconda/ui/gui/spokes/source.glade:1089 +#: pyanaconda/ui/gui/spokes/source.glade:1090 msgid "URL for the repository, without protocol." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1107 -#: pyanaconda/ui/gui/spokes/source.glade:1108 +#: pyanaconda/ui/gui/spokes/source.glade:1102 +#: pyanaconda/ui/gui/spokes/source.glade:1103 msgid "URL of proxy in the form of protocol://host:[port]" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1121 -#: pyanaconda/ui/gui/spokes/source.glade:1122 +#: pyanaconda/ui/gui/spokes/source.glade:1115 +#: pyanaconda/ui/gui/spokes/source.glade:1116 msgid "Optional proxy user name." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1135 +#: pyanaconda/ui/gui/spokes/source.glade:1128 msgid "Optional proxy password." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1147 +#: pyanaconda/ui/gui/spokes/source.glade:1140 msgctxt "GUI|Software Source" msgid "This URL refers to a mirror _list." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1167 +#: pyanaconda/ui/gui/spokes/source.glade:1160 msgctxt "GUI|Software Source" msgid "_Name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1183 -#: pyanaconda/ui/gui/spokes/source.glade:1184 +#: pyanaconda/ui/gui/spokes/source.glade:1176 +#: pyanaconda/ui/gui/spokes/source.glade:1177 msgid "Protocol for the repository URL." msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1205 +#: pyanaconda/ui/gui/spokes/source.glade:1198 msgctxt "GUI|Software Source" msgid "Pro_xy URL:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1222 +#: pyanaconda/ui/gui/spokes/source.glade:1215 msgctxt "GUI|Software Source" msgid "U_ser name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1239 +#: pyanaconda/ui/gui/spokes/source.glade:1232 msgctxt "GUI|Software Source" msgid "Pass_word:" msgstr ""
-#: pyanaconda/ui/gui/spokes/source.glade:1255 -#: pyanaconda/ui/gui/spokes/source.glade:1256 +#: pyanaconda/ui/gui/spokes/source.glade:1248 +#: pyanaconda/ui/gui/spokes/source.glade:1249 msgid "Name of the repository." msgstr ""
@@ -4561,34 +4569,34 @@ msgstr "" msgid "Languages" msgstr ""
-#: pyanaconda/ui/gui/spokes/welcome.glade:389 +#: pyanaconda/ui/gui/spokes/welcome.glade:388 msgid "Locales" msgstr ""
-#: pyanaconda/ui/gui/spokes/welcome.glade:423 +#: pyanaconda/ui/gui/spokes/welcome.glade:422 msgid "WELCOME" msgstr ""
-#: pyanaconda/ui/gui/spokes/welcome.glade:444 +#: pyanaconda/ui/gui/spokes/welcome.glade:443 msgctxt "GUI|Welcome|Unsupported Hardware Dialog" msgid "_Quit" msgstr ""
-#: pyanaconda/ui/gui/spokes/welcome.glade:458 +#: pyanaconda/ui/gui/spokes/welcome.glade:457 msgctxt "GUI|Welcome|Unsupported Hardware Dialog" msgid "_Continue" msgstr ""
-#: pyanaconda/ui/gui/spokes/welcome.glade:489 +#: pyanaconda/ui/gui/spokes/welcome.glade:488 msgid "Unsupported Hardware Detected" msgstr ""
-#: pyanaconda/ui/gui/spokes/welcome.glade:547 +#: pyanaconda/ui/gui/spokes/welcome.glade:546 msgid "Unsupported Hardware" msgstr ""
#: pyanaconda/ui/gui/spokes/user.glade:10 -#: pyanaconda/ui/gui/spokes/user.glade:348 +#: pyanaconda/ui/gui/spokes/user.glade:346 msgid "CREATE USER" msgstr ""
@@ -4602,68 +4610,68 @@ msgctxt "GUI|User" msgid "_User name" msgstr ""
-#: pyanaconda/ui/gui/spokes/user.glade:101 +#: pyanaconda/ui/gui/spokes/user.glade:100 msgid "Full Name" msgstr ""
-#: pyanaconda/ui/gui/spokes/user.glade:133 +#: pyanaconda/ui/gui/spokes/user.glade:131 msgctxt "GUI|User" msgid "_Password" msgstr ""
-#: pyanaconda/ui/gui/spokes/user.glade:151 +#: pyanaconda/ui/gui/spokes/user.glade:149 msgctxt "GUI|User" msgid "_Confirm password" msgstr ""
-#: pyanaconda/ui/gui/spokes/user.glade:203 +#: pyanaconda/ui/gui/spokes/user.glade:201 msgid "" "<b>Tip:</b> Keep your user name shorter than 32 characters and do not use " "spaces." msgstr ""
-#: pyanaconda/ui/gui/spokes/user.glade:213 +#: pyanaconda/ui/gui/spokes/user.glade:211 msgctxt "GUI|User" msgid "_Require a password to use this account" msgstr ""
-#: pyanaconda/ui/gui/spokes/user.glade:272 +#: pyanaconda/ui/gui/spokes/user.glade:270 msgctxt "GUI|User" msgid "_Make this user administrator" msgstr ""
-#: pyanaconda/ui/gui/spokes/user.glade:291 +#: pyanaconda/ui/gui/spokes/user.glade:289 msgctxt "GUI|User" msgid "_Advanced..." msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:62 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:611 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:610 msgid "RAID0 <span foreground="grey">(Performance)</span>" msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:66 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:615 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:614 msgid "RAID1 <span foreground="grey">(Redundancy)</span>" msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:70 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:619 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:618 msgid "RAID4 <span foreground="grey">(Error Checking)</span>" msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:74 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:623 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:622 msgid "RAID5 <span foreground="grey">(Distributed Error Checking)</span>" msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:78 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:627 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:626 msgid "RAID6 <span foreground="grey">(Redundant Error Checking)</span>" msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:82 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:631 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:630 msgid "RAID10 <span foreground="grey">(Performance, Redundancy)</span>" msgstr ""
@@ -4704,16 +4712,16 @@ msgid "Help" msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:295 -#: pyanaconda/ui/gui/spokes/custom.glade:1033 -#: pyanaconda/ui/gui/spokes/custom.glade:1177 -#: pyanaconda/ui/gui/spokes/custom.glade:1264 +#: pyanaconda/ui/gui/spokes/custom.glade:1029 +#: pyanaconda/ui/gui/spokes/custom.glade:1173 +#: pyanaconda/ui/gui/spokes/custom.glade:1260 msgid "Selected Device" msgstr ""
#: pyanaconda/ui/gui/spokes/custom.glade:313 -#: pyanaconda/ui/gui/spokes/custom.glade:1051 -#: pyanaconda/ui/gui/spokes/custom.glade:1195 -#: pyanaconda/ui/gui/spokes/custom.glade:1282 +#: pyanaconda/ui/gui/spokes/custom.glade:1047 +#: pyanaconda/ui/gui/spokes/custom.glade:1191 +#: pyanaconda/ui/gui/spokes/custom.glade:1278 msgid "Device description" msgstr ""
@@ -4721,103 +4729,103 @@ msgstr "" msgid "Mount _Point:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:422 +#: pyanaconda/ui/gui/spokes/custom.glade:421 msgid "_Desired Capacity:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:474 +#: pyanaconda/ui/gui/spokes/custom.glade:472 msgid "_Label:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:522 +#: pyanaconda/ui/gui/spokes/custom.glade:519 msgid "Device(s):" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:552 +#: pyanaconda/ui/gui/spokes/custom.glade:549 msgctxt "GUI|Custom Partitioning|Configure|Devices" msgid "_Modify..." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:584 +#: pyanaconda/ui/gui/spokes/custom.glade:581 msgid "_Name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:640 +#: pyanaconda/ui/gui/spokes/custom.glade:636 msgctxt "GUI|Custom Partitioning|Configure" msgid "Device _Type:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:684 +#: pyanaconda/ui/gui/spokes/custom.glade:680 msgctxt "GUI|Custom Partitioning|Configure" msgid "_Encrypt" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:725 +#: pyanaconda/ui/gui/spokes/custom.glade:721 msgctxt "GUI|Custom Partitioning|Configure" msgid "File S_ystem:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:760 +#: pyanaconda/ui/gui/spokes/custom.glade:756 msgctxt "GUI|Custom Partitioning|Configure" msgid "Ref_ormat" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:814 +#: pyanaconda/ui/gui/spokes/custom.glade:810 msgctxt "GUI|Custom Partitioning|Configure" msgid "_Volume Group:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:868 +#: pyanaconda/ui/gui/spokes/custom.glade:864 msgctxt "GUI|Custom Partitioning|Configure" msgid "_Modify..." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:900 +#: pyanaconda/ui/gui/spokes/custom.glade:896 msgctxt "GUI|Custom Partitioning|Configure" msgid "RA_ID Level:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:965 +#: pyanaconda/ui/gui/spokes/custom.glade:961 msgid "_Update Settings" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:988 +#: pyanaconda/ui/gui/spokes/custom.glade:984 msgid "" "Note: The settings you make on this screen will not be applied until you " "click on the main menu's 'Begin Installation' button." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:1085 +#: pyanaconda/ui/gui/spokes/custom.glade:1081 msgid "" "This device is encrypted and cannot be read without a valid passphrase. You " "may unlock it below." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:1106 +#: pyanaconda/ui/gui/spokes/custom.glade:1102 msgctxt "GUI|Custom Partitioning|Encrypted" msgid "_Passphrase:" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:1134 +#: pyanaconda/ui/gui/spokes/custom.glade:1130 msgctxt "GUI|Custom Partitioning|Encrypted" msgid "_Unlock" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:1229 +#: pyanaconda/ui/gui/spokes/custom.glade:1225 msgid "" "This device cannot be edited directly. You can remove it or select a " "different device." msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:1377 +#: pyanaconda/ui/gui/spokes/custom.glade:1373 msgid "AVAILABLE SPACE" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:1430 +#: pyanaconda/ui/gui/spokes/custom.glade:1426 msgid "TOTAL SPACE" msgstr ""
-#: pyanaconda/ui/gui/spokes/custom.glade:1470 +#: pyanaconda/ui/gui/spokes/custom.glade:1466 msgctxt "GUI|Custom Partitioning" msgid "_Reset All" msgstr "" @@ -4882,168 +4890,168 @@ msgid "" "the iSCSI initiator name you've configured for your host." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:143 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:142 msgctxt "GUI|Advanced Storage|iSCSI|Configure" msgid "_Target IP Address:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:171 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:169 msgctxt "GUI|Advanced Storage|iSCSI|Configure" msgid "iSCSI _Initiator Name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:187 -#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:756 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:185 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:751 msgid "No credentials (discovery authentication disabled)" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:188 -#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:757 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:186 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:752 msgid "CHAP pair" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:189 -#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:758 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:187 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:753 msgid "CHAP pair and a reverse pair" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:204 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:202 msgctxt "GUI|Advanced Storage|iSCSI|Configure" msgid "_Discovery Authentication Type:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:219 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:217 msgid "" "<span size="small"><b>Example:</b> iqn.2012-09.com.example:diskarrays-sn-" "a8675309</span>" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:264 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:262 msgctxt "GUI|Advanced Storage|iSCSI|Configure|CHAP" msgid "CHAP _User name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:278 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:276 msgctxt "GUI|Advanced Storage|iSCSI|Configure|CHAP" msgid "CHAP _Password:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:387 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:382 msgctxt "GUI|Advanced Storage|iSCSI|Configure|Reverse CHAP" msgid "CHAP _User name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:401 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:396 msgctxt "GUI|Advanced Storage|iSCSI|Configure|Reverse CHAP" msgid "CHAP _Password:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:415 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:410 msgctxt "GUI|Advanced Storage|iSCSI|Configure|Reverse CHAP" msgid "Reverse CHAP User _name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:429 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:424 msgctxt "GUI|Advanced Storage|iSCSI|Configure|Reverse CHAP" msgid "Reverse CHAP Pass_word:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:462 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:457 msgctxt "GUI|Advanced Storage|iSCSI|Configure|Start" msgid "_Start Discovery" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:499 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:494 msgid "Discovering iSCSI targets. This may take a moment..." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:539 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:534 msgid "Discovery login rejected." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:554 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:549 msgid "" "The following error occurred discovering iSCSI targets. Please double check " "your authorization information and try again." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:576 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:571 msgctxt "GUI|Advanced Storage|iSCSI|Configure|Retry" msgid "_Retry Discovery" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:616 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:611 msgctxt "GUI|Advanced Storage|iSCSI|Configure" msgid "_Bind targets to network interfaces" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:691 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:686 msgid "Node Name" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:702 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:697 msgid "Interface" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:713 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:708 msgid "Portal" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:742 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:737 msgctxt "GUI|Advanced Storage|iSCSI|Login" msgid "_Node Login Authentication Type:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:759 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:754 msgid "Use the credentials from discovery" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:794 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:789 msgctxt "GUI|Advanced Storage|iSCSI|Login|CHAP" msgid "CHAP _User name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:808 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:803 msgctxt "GUI|Advanced Storage|iSCSI|Login|CHAP" msgid "CHAP _Password:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:917 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:909 msgctxt "GUI|Advanced Storage|iSCSI|Login|Reverse CHAP" msgid "CHAP _User name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:931 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:923 msgctxt "GUI|Advanced Storage|iSCSI|Login|Reverse CHAP" msgid "CHAP _Password:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:945 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:937 msgctxt "GUI|Advanced Storage|iSCSI|Login|Reverse CHAP" msgid "_Reverse CHAP User name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:959 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:951 msgctxt "GUI|Advanced Storage|iSCSI|Login|Reverse CHAP" msgid "Reverse CHAP Pass_word:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1007 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:999 msgctxt "GUI|Advanced Storage|iSCSI|Login|Login" msgid "_Log In" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1063 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1055 msgid "Node login failed." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1078 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1070 msgid "" "The following error occurred logging into the selected iSCSI node. Please " "double check your authorization information and try again" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1100 +#: pyanaconda/ui/gui/spokes/advstorage/iscsi.glade:1092 msgctxt "GUI|Advanced Storage|iSCSI|Login|Retry" msgid "Retry _Log In" msgstr "" @@ -5066,32 +5074,32 @@ msgstr "" msgid "To use DASD disks, you must provide the device number." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:126 +#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:125 msgctxt "GUI|Advanced Storage|DASD|Configure" msgid "_Device number:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:146 +#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:145 msgctxt "GUI|Advanced Storage|DASD|Configure" msgid "_Start Discovery" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:183 +#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:182 msgid "Discovering DASD devices. This may take a moment..." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:225 -#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:269 +#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:224 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:267 msgid "Device discovery failed." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:242 +#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:241 msgid "" "The following error occurred discovering DASD devices. Please double check " "your configuration information and try again." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:268 +#: pyanaconda/ui/gui/spokes/advstorage/dasd.glade:267 msgctxt "GUI|Advanced Storage|DASD|Configure" msgid "_Retry Discovery" msgstr "" @@ -5106,36 +5114,36 @@ msgid "" "configured for the device." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:140 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:139 msgctxt "GUI|Advanced Storage|zFCP|Device Number" msgid "_Device number:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:170 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:168 msgid "WWPN:" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:190 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:188 msgctxt "GUI|Advanced Storage|zFCP|Start Discovery" msgid "_Start Discovery" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:227 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:225 msgid "Discovering zFCP devices. This may take a moment..." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:286 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:284 msgid "" "The following error occurred discovering zFCP devices. Please double check " "your configuration information and try again." msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:312 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:310 msgctxt "GUI|Advanced Storage|zFCP|Retry Discovery" msgid "_Retry Discovery" msgstr ""
-#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:358 +#: pyanaconda/ui/gui/spokes/advstorage/zfcp.glade:356 msgid "LUN:" msgstr ""
@@ -5160,7 +5168,7 @@ msgstr ""
#: pyanaconda/ui/gui/spokes/lib/cart.glade:158 #: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:261 -#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:812 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:810 msgid "Free" msgstr ""
@@ -5250,60 +5258,60 @@ msgstr "" msgid "eg: "20 GB", "500mb" (minus the quotation marks)" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:607 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:606 msgid "Single <span foreground="grey">(No Redundancy, No Striping)</span>" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:655 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:654 msgctxt "GUI|Custom Partitioning|Container Dialog" msgid "_Cancel" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:669 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:668 msgctxt "GUI|Custom Partitioning|Container Dialog" msgid "_Save" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:701 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:700 msgid "CONFIGURE CONTAINER" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:716 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:715 msgid "" "Please create a name for this container and select at least one disk below." msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:734 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:733 msgctxt "GUI|Custom Partitioning|Container Dialog" msgid "_Name:" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:854 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:852 msgid "RAID Level:" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:882 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:880 msgid "Encrypt" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:923 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:921 msgid "Please enter a valid name." msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:953 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:951 msgctxt "GUI|Custom Partitioning|Container Dialog" msgid "Si_ze policy:" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:968 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:966 msgid "Automatic" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:969 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:967 msgid "As large as possible" msgstr ""
-#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:970 +#: pyanaconda/ui/gui/spokes/lib/custom_storage_helpers.glade:968 msgid "Fixed" msgstr ""
Wrong branch, my appologize.
Closed.
anaconda-patches@lists.fedorahosted.org