Merge branch 'calamares' of https://github.com/calamares/calamares into development
This commit is contained in:
commit
8ae76edd88
42
CHANGES
42
CHANGES
@ -7,7 +7,7 @@ contributors are listed. Note that Calamares does not have a historical
|
|||||||
changelog -- this log starts with version 3.2.0. The release notes on the
|
changelog -- this log starts with version 3.2.0. The release notes on the
|
||||||
website will have to do for older versions.
|
website will have to do for older versions.
|
||||||
|
|
||||||
# 3.2.42 (unreleased) #
|
# 3.2.43 (unreleased) #
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
This release contains contributions from (alphabetically by first name):
|
||||||
- No external contributors yet
|
- No external contributors yet
|
||||||
@ -19,6 +19,46 @@ This release contains contributions from (alphabetically by first name):
|
|||||||
- No module changes yet
|
- No module changes yet
|
||||||
|
|
||||||
|
|
||||||
|
# 3.2.42 (2021-09-06) #
|
||||||
|
|
||||||
|
This release contains contributions from (alphabetically by first name):
|
||||||
|
- Anke Boersma
|
||||||
|
- Artem Grinev
|
||||||
|
- Nico 'dr460nf1r3' (new contributor, welcome!)
|
||||||
|
- Waneon Kim (new contributor, welcome!)
|
||||||
|
|
||||||
|
## Core ##
|
||||||
|
- No core changes yet
|
||||||
|
|
||||||
|
## Modules ##
|
||||||
|
- BTRFS partitions are no longer listed as "check in phase 2" in
|
||||||
|
the *fstab* module. (Thanks Nico)
|
||||||
|
- The *keyboard* module (and *keyboardq*) now pick an English layout
|
||||||
|
(with Rupee) for keyboards when the language is English and locale is India,
|
||||||
|
rather than Hindi layout.
|
||||||
|
- The *localeq* module had the i18n.qml rewritten to make it easier
|
||||||
|
to customize. A bug in the layout has been fixed, and the overall
|
||||||
|
look has been updated.
|
||||||
|
- *networkcfg* now translates the "live user" on an ISO to the regular
|
||||||
|
user on the installed system, so that network configuration changes
|
||||||
|
made in the live system are automatically used after installation. #1755
|
||||||
|
- *partition* no longer allows you to delete an extended partition with
|
||||||
|
children (which led to crashes). #1749 (Thanks Artem)
|
||||||
|
- *partition* complains in more detail about the state of the UEFI
|
||||||
|
boot partition (under manual partitioning schemes). #1761
|
||||||
|
- *welcome* can now check multiple URLs to determine if internet connectivity
|
||||||
|
is available. It is still recommended to check the distro home-page or
|
||||||
|
some special "ping" page of the distro, although that has some privacy
|
||||||
|
implications; using example.com or google.com may work as well. Listing
|
||||||
|
multiple URLs will ping each of them in turn until one succeeds. #1669
|
||||||
|
- The work to make a QML version available for all view modules is almost
|
||||||
|
completed. Two new QML modules have been added *packagechooserq* and *summaryq*.
|
||||||
|
Summaryq brings the option to present the summary page in a customizable
|
||||||
|
way, with a bit more of a contemporary look. Packagechooserq adds the option
|
||||||
|
to preselect an item and displays all options in one overview.
|
||||||
|
(Thanks Anke)
|
||||||
|
|
||||||
|
|
||||||
# 3.2.41.1 (2021-08-05) #
|
# 3.2.41.1 (2021-08-05) #
|
||||||
|
|
||||||
This is a hotfix release for a crash in the *partition* module, reported on
|
This is a hotfix release for a crash in the *partition* module, reported on
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
# TODO:3.3: Require CMake 3.12
|
# TODO:3.3: Require CMake 3.12
|
||||||
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
||||||
project( CALAMARES
|
project( CALAMARES
|
||||||
VERSION 3.2.42
|
VERSION 3.2.43
|
||||||
LANGUAGES C CXX
|
LANGUAGES C CXX
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -133,13 +133,14 @@ set( CALAMARES_DESCRIPTION_SUMMARY
|
|||||||
# `txstats.py -e`. See also
|
# `txstats.py -e`. See also
|
||||||
#
|
#
|
||||||
# Total 79 languages
|
# Total 79 languages
|
||||||
set( _tx_complete az az_AZ ca fi_FI he hi hr ja lt sq sv uk zh_TW )
|
set( _tx_complete az az_AZ ca de fi_FI he hi hr ja ko lt pt_BR sq
|
||||||
set( _tx_good as be ca@valencia cs_CZ da de fr fur it_IT ko ml nl
|
sv uk zh_TW )
|
||||||
pt_BR pt_PT ru sk tg tr_TR vi zh_CN )
|
set( _tx_good as be ca@valencia cs_CZ da fr fur it_IT ml nl pt_PT
|
||||||
|
ru sk tg tr_TR vi zh_CN )
|
||||||
set( _tx_ok ar ast bg bn el en_GB es es_MX es_PR et eu fa gl hu id
|
set( _tx_ok ar ast bg bn el en_GB es es_MX es_PR et eu fa gl hu id
|
||||||
is mr nb pl ro sl sr sr@latin th zh_HK )
|
is mr nb pl ro si sl sr sr@latin th zh_HK )
|
||||||
set( _tx_incomplete eo es_PE fr_CH gu id_ID ie kk kn ko_KR lo lv mk
|
set( _tx_incomplete eo es_PE fr_CH gu id_ID ie kk kn ko_KR lo lv mk
|
||||||
ne ne_NP ru_RU si te ur uz zh )
|
ne ne_NP ru_RU te ur uz zh )
|
||||||
|
|
||||||
### Required versions
|
### Required versions
|
||||||
#
|
#
|
||||||
|
@ -510,12 +510,13 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="32"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="32"/>
|
||||||
<source>Set filesystem label on %1.</source>
|
<source>Set filesystem label on %1.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Setze Dateisytem-Label für %1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="39"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="39"/>
|
||||||
<source>Set filesystem label <strong>%1</strong> to partition <strong>%2</strong>.</source>
|
<source>Set filesystem label <strong>%1</strong> to partition <strong>%2</strong>.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Setze Dateisytem-Label <strong>%1</strong> für Partition <strong>%2</strong>.
|
||||||
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="70"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="70"/>
|
||||||
@ -896,7 +897,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/Config.cpp" line="548"/>
|
<location filename="../src/modules/users/Config.cpp" line="548"/>
|
||||||
<source>OK!</source>
|
<source>OK!</source>
|
||||||
<translation type="unfinished"/>
|
<translation>OK!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
||||||
@ -1012,12 +1013,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="231"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="231"/>
|
||||||
<source>Label for the filesystem</source>
|
<source>Label for the filesystem</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Label für das Dateisystem</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="241"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="241"/>
|
||||||
<source>FS Label:</source>
|
<source>FS Label:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>FS Label:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="65"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="65"/>
|
||||||
@ -1376,12 +1377,12 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="186"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="186"/>
|
||||||
<source>Label for the filesystem</source>
|
<source>Label for the filesystem</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Label für das Dateisystem</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="196"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="196"/>
|
||||||
<source>FS Label:</source>
|
<source>FS Label:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>FS Label:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="291"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="291"/>
|
||||||
@ -1889,7 +1890,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamares/locale/Tests.cpp" line="273"/>
|
<location filename="../src/libcalamares/locale/Tests.cpp" line="273"/>
|
||||||
<source>Quit</source>
|
<source>Quit</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Beenden</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -2113,7 +2114,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/Offline.qml" line="41"/>
|
<location filename="../src/modules/localeq/Offline.qml" line="41"/>
|
||||||
<source>Select your preferred Region, or use the default settings.</source>
|
<source>Select your preferred Region, or use the default settings.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Wählen Sie Ihre bevorzugte Region oder nutzen Sie die Standardeinstellungen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/Offline.qml" line="98"/>
|
<location filename="../src/modules/localeq/Offline.qml" line="98"/>
|
||||||
@ -2653,7 +2654,7 @@ Dies wird das Installationsprogramm beenden und alle Änderungen gehen verloren.
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="304"/>
|
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="304"/>
|
||||||
<source>File System Label</source>
|
<source>File System Label</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Dateisystem-Label</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="306"/>
|
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="306"/>
|
||||||
@ -4263,7 +4264,7 @@ Ausgabe:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="118"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="118"/>
|
||||||
<source>root is not allowed as username.</source>
|
<source>root is not allowed as username.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>root ist als Benutzername nicht erlaubt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="127"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="127"/>
|
||||||
@ -4283,7 +4284,7 @@ Ausgabe:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
||||||
<source>localhost is not allowed as hostname.</source>
|
<source>localhost is not allowed as hostname.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>localhost ist als Computername nicht erlaubt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
||||||
@ -4323,7 +4324,7 @@ Ausgabe:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
||||||
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Es sind nur Buchstaben, Zahlen, Unterstrich und Bindestrich erlaubt, minimal zwei Zeichen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
||||||
|
@ -495,12 +495,12 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>CalamaresWindow</name>
|
<name>CalamaresWindow</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/CalamaresWindow.cpp" line="368"/>
|
<location filename="../src/calamares/CalamaresWindow.cpp" line="370"/>
|
||||||
<source>%1 Setup Program</source>
|
<source>%1 Setup Program</source>
|
||||||
<translation>%1 Setup Program</translation>
|
<translation>%1 Setup Program</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/CalamaresWindow.cpp" line="369"/>
|
<location filename="../src/calamares/CalamaresWindow.cpp" line="371"/>
|
||||||
<source>%1 Installer</source>
|
<source>%1 Installer</source>
|
||||||
<translation>%1 Installer</translation>
|
<translation>%1 Installer</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -539,149 +539,149 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<translation>Form</translation>
|
<translation>Form</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="121"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="139"/>
|
||||||
<source>Select storage de&vice:</source>
|
<source>Select storage de&vice:</source>
|
||||||
<translation>Select storage de&vice:</translation>
|
<translation>Select storage de&vice:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="122"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="140"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="987"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="996"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1033"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1042"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1124"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1133"/>
|
||||||
<source>Current:</source>
|
<source>Current:</source>
|
||||||
<translation>Current:</translation>
|
<translation>Current:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="123"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="141"/>
|
||||||
<source>After:</source>
|
<source>After:</source>
|
||||||
<translation>After:</translation>
|
<translation>After:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="332"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1671"/>
|
||||||
<source><strong>Manual partitioning</strong><br/>You can create or resize partitions yourself.</source>
|
<source><strong>Manual partitioning</strong><br/>You can create or resize partitions yourself.</source>
|
||||||
<translation><strong>Manual partitioning</strong><br/>You can create or resize partitions yourself.</translation>
|
<translation><strong>Manual partitioning</strong><br/>You can create or resize partitions yourself.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="852"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="861"/>
|
||||||
<source>Reuse %1 as home partition for %2.</source>
|
<source>Reuse %1 as home partition for %2.</source>
|
||||||
<translation>Reuse %1 as home partition for %2.</translation>
|
<translation>Reuse %1 as home partition for %2.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="988"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="997"/>
|
||||||
<source><strong>Select a partition to shrink, then drag the bottom bar to resize</strong></source>
|
<source><strong>Select a partition to shrink, then drag the bottom bar to resize</strong></source>
|
||||||
<translation><strong>Select a partition to shrink, then drag the bottom bar to resize</strong></translation>
|
<translation><strong>Select a partition to shrink, then drag the bottom bar to resize</strong></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1005"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1014"/>
|
||||||
<source>%1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4.</source>
|
<source>%1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4.</source>
|
||||||
<translation>%1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4.</translation>
|
<translation>%1 will be shrunk to %2MiB and a new %3MiB partition will be created for %4.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1062"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1071"/>
|
||||||
<source>Boot loader location:</source>
|
<source>Boot loader location:</source>
|
||||||
<translation>Boot loader location:</translation>
|
<translation>Boot loader location:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1115"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1124"/>
|
||||||
<source><strong>Select a partition to install on</strong></source>
|
<source><strong>Select a partition to install on</strong></source>
|
||||||
<translation><strong>Select a partition to install on</strong></translation>
|
<translation><strong>Select a partition to install on</strong></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1174"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1183"/>
|
||||||
<source>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1.</source>
|
<source>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1.</source>
|
||||||
<translation>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1.</translation>
|
<translation>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1182"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1191"/>
|
||||||
<source>The EFI system partition at %1 will be used for starting %2.</source>
|
<source>The EFI system partition at %1 will be used for starting %2.</source>
|
||||||
<translation>The EFI system partition at %1 will be used for starting %2.</translation>
|
<translation>The EFI system partition at %1 will be used for starting %2.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1190"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1199"/>
|
||||||
<source>EFI system partition:</source>
|
<source>EFI system partition:</source>
|
||||||
<translation>EFI system partition:</translation>
|
<translation>EFI system partition:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1325"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1334"/>
|
||||||
<source>This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
<translation>This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1330"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1339"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1367"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1376"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1389"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1398"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1414"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1423"/>
|
||||||
<source><strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device.</source>
|
<source><strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device.</source>
|
||||||
<translation><strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device.</translation>
|
<translation><strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1334"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1343"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1363"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1372"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1385"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1394"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1410"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1419"/>
|
||||||
<source><strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1.</source>
|
<source><strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1.</source>
|
||||||
<translation><strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1.</translation>
|
<translation><strong>Install alongside</strong><br/>The installer will shrink a partition to make room for %1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1338"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1347"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1372"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1381"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1393"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1402"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1418"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1427"/>
|
||||||
<source><strong>Replace a partition</strong><br/>Replaces a partition with %1.</source>
|
<source><strong>Replace a partition</strong><br/>Replaces a partition with %1.</source>
|
||||||
<translation><strong>Replace a partition</strong><br/>Replaces a partition with %1.</translation>
|
<translation><strong>Replace a partition</strong><br/>Replaces a partition with %1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1357"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1366"/>
|
||||||
<source>This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
<translation>This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1380"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1389"/>
|
||||||
<source>This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
<translation>This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1405"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1414"/>
|
||||||
<source>This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
<translation>This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1477"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1486"/>
|
||||||
<source>This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/></source>
|
<source>This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/></source>
|
||||||
<translation>This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/></translation>
|
<translation>This storage device already has an operating system on it, but the partition table <strong>%1</strong> is different from the needed <strong>%2</strong>.<br/></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1500"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1509"/>
|
||||||
<source>This storage device has one of its partitions <strong>mounted</strong>.</source>
|
<source>This storage device has one of its partitions <strong>mounted</strong>.</source>
|
||||||
<translation>This storage device has one of its partitions <strong>mounted</strong>.</translation>
|
<translation>This storage device has one of its partitions <strong>mounted</strong>.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1505"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1514"/>
|
||||||
<source>This storage device is a part of an <strong>inactive RAID</strong> device.</source>
|
<source>This storage device is a part of an <strong>inactive RAID</strong> device.</source>
|
||||||
<translation>This storage device is a part of an <strong>inactive RAID</strong> device.</translation>
|
<translation>This storage device is a part of an <strong>inactive RAID</strong> device.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1632"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1641"/>
|
||||||
<source>No Swap</source>
|
<source>No Swap</source>
|
||||||
<translation>No Swap</translation>
|
<translation>No Swap</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1640"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1649"/>
|
||||||
<source>Reuse Swap</source>
|
<source>Reuse Swap</source>
|
||||||
<translation>Reuse Swap</translation>
|
<translation>Reuse Swap</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1643"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1652"/>
|
||||||
<source>Swap (no Hibernate)</source>
|
<source>Swap (no Hibernate)</source>
|
||||||
<translation>Swap (no Hibernate)</translation>
|
<translation>Swap (no Hibernate)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1646"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1655"/>
|
||||||
<source>Swap (with Hibernate)</source>
|
<source>Swap (with Hibernate)</source>
|
||||||
<translation>Swap (with Hibernate)</translation>
|
<translation>Swap (with Hibernate)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1649"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1658"/>
|
||||||
<source>Swap to file</source>
|
<source>Swap to file</source>
|
||||||
<translation>Swap to file</translation>
|
<translation>Swap to file</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -749,12 +749,12 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>Config</name>
|
<name>Config</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboard/Config.cpp" line="330"/>
|
<location filename="../src/modules/keyboard/Config.cpp" line="354"/>
|
||||||
<source>Set keyboard model to %1.<br/></source>
|
<source>Set keyboard model to %1.<br/></source>
|
||||||
<translation>Set keyboard model to %1.<br/></translation>
|
<translation>Set keyboard model to %1.<br/></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboard/Config.cpp" line="337"/>
|
<location filename="../src/modules/keyboard/Config.cpp" line="361"/>
|
||||||
<source>Set keyboard layout to %1/%2.</source>
|
<source>Set keyboard layout to %1/%2.</source>
|
||||||
<translation>Set keyboard layout to %1/%2.</translation>
|
<translation>Set keyboard layout to %1/%2.</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -804,47 +804,47 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<translation>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</translation>
|
<translation>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="50"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="55"/>
|
||||||
<source>This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a></source>
|
<source>This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a></source>
|
||||||
<translation>This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a></translation>
|
<translation>This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="54"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="59"/>
|
||||||
<source>This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a></source>
|
<source>This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a></source>
|
||||||
<translation>This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a></translation>
|
<translation>This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="61"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="66"/>
|
||||||
<source>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</source>
|
<source>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</source>
|
||||||
<translation>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</translation>
|
<translation>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="65"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="70"/>
|
||||||
<source>This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled.</source>
|
<source>This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled.</source>
|
||||||
<translation>This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled.</translation>
|
<translation>This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="75"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="80"/>
|
||||||
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
||||||
<translation>This program will ask you some questions and set up %2 on your computer.</translation>
|
<translation>This program will ask you some questions and set up %2 on your computer.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="244"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="252"/>
|
||||||
<source><h1>Welcome to the Calamares setup program for %1</h1></source>
|
<source><h1>Welcome to the Calamares setup program for %1</h1></source>
|
||||||
<translation><h1>Welcome to the Calamares setup program for %1</h1></translation>
|
<translation><h1>Welcome to the Calamares setup program for %1</h1></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="245"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="253"/>
|
||||||
<source><h1>Welcome to %1 setup</h1></source>
|
<source><h1>Welcome to %1 setup</h1></source>
|
||||||
<translation><h1>Welcome to %1 setup</h1></translation>
|
<translation><h1>Welcome to %1 setup</h1></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="250"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="257"/>
|
||||||
<source><h1>Welcome to the Calamares installer for %1</h1></source>
|
<source><h1>Welcome to the Calamares installer for %1</h1></source>
|
||||||
<translation><h1>Welcome to the Calamares installer for %1</h1></translation>
|
<translation><h1>Welcome to the Calamares installer for %1</h1></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="251"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="258"/>
|
||||||
<source><h1>Welcome to the %1 installer</h1></source>
|
<source><h1>Welcome to the %1 installer</h1></source>
|
||||||
<translation><h1>Welcome to the %1 installer</h1></translation>
|
<translation><h1>Welcome to the %1 installer</h1></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -939,15 +939,40 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<translation>The installation of %1 is complete.</translation>
|
<translation>The installation of %1 is complete.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/packagechooser/Config.cpp" line="85"/>
|
<location filename="../src/modules/packagechooser/Config.cpp" line="86"/>
|
||||||
<source>Package Selection</source>
|
<source>Package Selection</source>
|
||||||
<translation>Package Selection</translation>
|
<translation>Package Selection</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/packagechooser/Config.cpp" line="87"/>
|
<location filename="../src/modules/packagechooser/Config.cpp" line="88"/>
|
||||||
<source>Please pick a product from the list. The selected product will be installed.</source>
|
<source>Please pick a product from the list. The selected product will be installed.</source>
|
||||||
<translation>Please pick a product from the list. The selected product will be installed.</translation>
|
<translation>Please pick a product from the list. The selected product will be installed.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooser/Config.cpp" line="177"/>
|
||||||
|
<source>Install option: <strong>%1</strong></source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooser/Config.cpp" line="177"/>
|
||||||
|
<source>None</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/summary/Config.cpp" line="82"/>
|
||||||
|
<source>Summary</source>
|
||||||
|
<translation type="unfinished">Summary</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/summary/Config.cpp" line="86"/>
|
||||||
|
<source>This is an overview of what will happen once you start the setup procedure.</source>
|
||||||
|
<translation type="unfinished">This is an overview of what will happen once you start the setup procedure.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/summary/Config.cpp" line="91"/>
|
||||||
|
<source>This is an overview of what will happen once you start the install procedure.</source>
|
||||||
|
<translation type="unfinished">This is an overview of what will happen once you start the install procedure.</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ContextualProcessJob</name>
|
<name>ContextualProcessJob</name>
|
||||||
@ -2446,6 +2471,14 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<translation>Please pick a product from the list. The selected product will be installed.</translation>
|
<translation>Please pick a product from the list. The selected product will be installed.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>PackageChooserQmlViewStep</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/PackageChooserQmlViewStep.cpp" line="32"/>
|
||||||
|
<source>Packages</source>
|
||||||
|
<translation type="unfinished">Packages</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>PackageChooserViewStep</name>
|
<name>PackageChooserViewStep</name>
|
||||||
<message>
|
<message>
|
||||||
@ -2729,17 +2762,17 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<translation>I&nstall boot loader on:</translation>
|
<translation>I&nstall boot loader on:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="219"/>
|
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="228"/>
|
||||||
<source>Are you sure you want to create a new partition table on %1?</source>
|
<source>Are you sure you want to create a new partition table on %1?</source>
|
||||||
<translation>Are you sure you want to create a new partition table on %1?</translation>
|
<translation>Are you sure you want to create a new partition table on %1?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="254"/>
|
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="263"/>
|
||||||
<source>Can not create new partition</source>
|
<source>Can not create new partition</source>
|
||||||
<translation>Can not create new partition</translation>
|
<translation>Can not create new partition</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="255"/>
|
<location filename="../src/modules/partition/gui/PartitionPage.cpp" line="264"/>
|
||||||
<source>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</source>
|
<source>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</source>
|
||||||
<translation>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</translation>
|
<translation>The partition table on %1 already has %2 primary partitions, and no more can be added. Please remove one primary partition and add an extended partition, instead.</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -2757,107 +2790,82 @@ The installer will quit and all changes will be lost.</translation>
|
|||||||
<translation>Partitions</translation>
|
<translation>Partitions</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="147"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="301"/>
|
||||||
<source>Install %1 <strong>alongside</strong> another operating system.</source>
|
|
||||||
<translation>Install %1 <strong>alongside</strong> another operating system.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="151"/>
|
|
||||||
<source><strong>Erase</strong> disk and install %1.</source>
|
|
||||||
<translation><strong>Erase</strong> disk and install %1.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="154"/>
|
|
||||||
<source><strong>Replace</strong> a partition with %1.</source>
|
|
||||||
<translation><strong>Replace</strong> a partition with %1.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="158"/>
|
|
||||||
<source><strong>Manual</strong> partitioning.</source>
|
|
||||||
<translation><strong>Manual</strong> partitioning.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="171"/>
|
|
||||||
<source>Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3).</source>
|
|
||||||
<translation>Install %1 <strong>alongside</strong> another operating system on disk <strong>%2</strong> (%3).</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="178"/>
|
|
||||||
<source><strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1.</source>
|
|
||||||
<translation><strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="184"/>
|
|
||||||
<source><strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1.</source>
|
|
||||||
<translation><strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="191"/>
|
|
||||||
<source><strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2).</source>
|
|
||||||
<translation><strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2).</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="200"/>
|
|
||||||
<source>Disk <strong>%1</strong> (%2)</source>
|
|
||||||
<translation>Disk <strong>%1</strong> (%2)</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="226"/>
|
|
||||||
<source>Current:</source>
|
<source>Current:</source>
|
||||||
<translation>Current:</translation>
|
<translation>Current:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="244"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="319"/>
|
||||||
<source>After:</source>
|
<source>After:</source>
|
||||||
<translation>After:</translation>
|
<translation>After:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="450"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="528"/>
|
||||||
<source>No EFI system partition configured</source>
|
<source>No EFI system partition configured</source>
|
||||||
<translation>No EFI system partition configured</translation>
|
<translation>No EFI system partition configured</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="451"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="532"/>
|
||||||
<source>An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start.</source>
|
<source>EFI system partition configured incorrectly</source>
|
||||||
<translation>An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a FAT32 filesystem with the <strong>%3</strong> flag enabled and mount point <strong>%2</strong>.<br/><br/>You can continue without setting up an EFI system partition but your system may fail to start.</translation>
|
<translation type="unfinished"/>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="465"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="536"/>
|
||||||
<source>An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start.</source>
|
<source>An EFI system partition is necessary to start %1.<br/><br/>To configure an EFI system partition, go back and select or create a suitable filesystem.</source>
|
||||||
<translation>An EFI system partition is necessary to start %1.<br/><br/>A partition was configured with mount point <strong>%2</strong> but its <strong>%3</strong> flag is not set.<br/>To set the flag, go back and edit the partition.<br/><br/>You can continue without setting the flag but your system may fail to start.</translation>
|
<translation type="unfinished"/>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="464"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="544"/>
|
||||||
<source>EFI system partition flag not set</source>
|
<source>The filesystem must be mounted on <strong>%1</strong>.</source>
|
||||||
<translation>EFI system partition flag not set</translation>
|
<translation type="unfinished"/>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="491"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="549"/>
|
||||||
|
<source>The filesystem must have type FAT32.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="554"/>
|
||||||
|
<source>The filesystem must be at least %1 MiB in size.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="560"/>
|
||||||
|
<source>The filesystem must have flag <strong>%1</strong> set.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="564"/>
|
||||||
|
<source>You can continue without setting up an EFI system partition but your system may fail to start.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="580"/>
|
||||||
<source>Option to use GPT on BIOS</source>
|
<source>Option to use GPT on BIOS</source>
|
||||||
<translation>Option to use GPT on BIOS</translation>
|
<translation>Option to use GPT on BIOS</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="492"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="581"/>
|
||||||
<source>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</source>
|
<source>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</source>
|
||||||
<translation>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</translation>
|
<translation>A GPT partition table is the best option for all systems. This installer supports such a setup for BIOS systems too.<br/><br/>To configure a GPT partition table on BIOS, (if not done so already) go back and set the partition table to GPT, next create a 8 MB unformatted partition with the <strong>bios_grub</strong> flag enabled.<br/><br/>An unformatted 8 MB partition is necessary to start %1 on a BIOS system with GPT.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="521"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="610"/>
|
||||||
<source>Boot partition not encrypted</source>
|
<source>Boot partition not encrypted</source>
|
||||||
<translation>Boot partition not encrypted</translation>
|
<translation>Boot partition not encrypted</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="522"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="611"/>
|
||||||
<source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window.</source>
|
<source>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window.</source>
|
||||||
<translation>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window.</translation>
|
<translation>A separate boot partition was set up together with an encrypted root partition, but the boot partition is not encrypted.<br/><br/>There are security concerns with this kind of setup, because important system files are kept on an unencrypted partition.<br/>You may continue if you wish, but filesystem unlocking will happen later during system startup.<br/>To encrypt the boot partition, go back and recreate it, selecting <strong>Encrypt</strong> in the partition creation window.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="608"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="696"/>
|
||||||
<source>has at least one disk device available.</source>
|
<source>has at least one disk device available.</source>
|
||||||
<translation>has at least one disk device available.</translation>
|
<translation>has at least one disk device available.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="609"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="697"/>
|
||||||
<source>There are no partitions to install on.</source>
|
<source>There are no partitions to install on.</source>
|
||||||
<translation>There are no partitions to install on.</translation>
|
<translation>There are no partitions to install on.</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -2992,7 +3000,7 @@ Output:
|
|||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamares/locale/Label.cpp" line="29"/>
|
<location filename="../src/libcalamares/locale/Label.cpp" line="61"/>
|
||||||
<source>%1 (%2)</source>
|
<source>%1 (%2)</source>
|
||||||
<translation>%1 (%2)</translation>
|
<translation>%1 (%2)</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -3318,44 +3326,16 @@ Output:
|
|||||||
<context>
|
<context>
|
||||||
<name>ResultsListDialog</name>
|
<name>ResultsListDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="138"/>
|
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="137"/>
|
||||||
<source>For best results, please ensure that this computer:</source>
|
<source>For best results, please ensure that this computer:</source>
|
||||||
<translation>For best results, please ensure that this computer:</translation>
|
<translation>For best results, please ensure that this computer:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="139"/>
|
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="138"/>
|
||||||
<source>System requirements</source>
|
<source>System requirements</source>
|
||||||
<translation>System requirements</translation>
|
<translation>System requirements</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
|
||||||
<name>ResultsListWidget</name>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="263"/>
|
|
||||||
<source>This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a></source>
|
|
||||||
<translation>This computer does not satisfy the minimum requirements for setting up %1.<br/>Setup cannot continue. <a href="#details">Details...</a></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="267"/>
|
|
||||||
<source>This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a></source>
|
|
||||||
<translation>This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="274"/>
|
|
||||||
<source>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</source>
|
|
||||||
<translation>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>Setup can continue, but some features might be disabled.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="278"/>
|
|
||||||
<source>This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled.</source>
|
|
||||||
<translation>This computer does not satisfy some of the recommended requirements for installing %1.<br/>Installation can continue, but some features might be disabled.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="287"/>
|
|
||||||
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
|
||||||
<translation>This program will ask you some questions and set up %2 on your computer.</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
<context>
|
||||||
<name>ScanningDialog</name>
|
<name>ScanningDialog</name>
|
||||||
<message>
|
<message>
|
||||||
@ -3647,27 +3627,6 @@ Output:
|
|||||||
<translation>%L1 / %L2</translation>
|
<translation>%L1 / %L2</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
|
||||||
<name>SummaryPage</name>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/summary/SummaryPage.cpp" line="49"/>
|
|
||||||
<source>This is an overview of what will happen once you start the setup procedure.</source>
|
|
||||||
<translation>This is an overview of what will happen once you start the setup procedure.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/summary/SummaryPage.cpp" line="51"/>
|
|
||||||
<source>This is an overview of what will happen once you start the install procedure.</source>
|
|
||||||
<translation>This is an overview of what will happen once you start the install procedure.</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>SummaryViewStep</name>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/modules/summary/SummaryViewStep.cpp" line="36"/>
|
|
||||||
<source>Summary</source>
|
|
||||||
<translation>Summary</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
<context>
|
||||||
<name>TrackingInstallJob</name>
|
<name>TrackingInstallJob</name>
|
||||||
<message>
|
<message>
|
||||||
@ -3999,7 +3958,7 @@ Output:
|
|||||||
<context>
|
<context>
|
||||||
<name>WelcomeQmlViewStep</name>
|
<name>WelcomeQmlViewStep</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/WelcomeQmlViewStep.cpp" line="41"/>
|
<location filename="../src/modules/welcomeq/WelcomeQmlViewStep.cpp" line="40"/>
|
||||||
<source>Welcome</source>
|
<source>Welcome</source>
|
||||||
<translation>Welcome</translation>
|
<translation>Welcome</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -4007,7 +3966,7 @@ Output:
|
|||||||
<context>
|
<context>
|
||||||
<name>WelcomeViewStep</name>
|
<name>WelcomeViewStep</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="48"/>
|
<location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="46"/>
|
||||||
<source>Welcome</source>
|
<source>Welcome</source>
|
||||||
<translation>Welcome</translation>
|
<translation>Welcome</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -4090,21 +4049,21 @@ Output:
|
|||||||
<context>
|
<context>
|
||||||
<name>i18n</name>
|
<name>i18n</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/i18n.qml" line="46"/>
|
<location filename="../src/modules/localeq/i18n.qml" line="50"/>
|
||||||
<source><h1>Languages</h1> </br>
|
<source><h1>Languages</h1> </br>
|
||||||
The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>.</source>
|
The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>.</source>
|
||||||
<translation><h1>Languages</h1> </br>
|
<translation><h1>Languages</h1> </br>
|
||||||
The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>.</translation>
|
The system locale setting affects the language and character set for some command line user interface elements. The current setting is <strong>%1</strong>.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/i18n.qml" line="106"/>
|
<location filename="../src/modules/localeq/i18n.qml" line="123"/>
|
||||||
<source><h1>Locales</h1> </br>
|
<source><h1>Locales</h1> </br>
|
||||||
The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>.</source>
|
The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>.</source>
|
||||||
<translation><h1>Locales</h1> </br>
|
<translation><h1>Locales</h1> </br>
|
||||||
The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>.</translation>
|
The system locale setting affects the numbers and dates format. The current setting is <strong>%1</strong>.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/i18n.qml" line="158"/>
|
<location filename="../src/modules/localeq/i18n.qml" line="189"/>
|
||||||
<source>Back</source>
|
<source>Back</source>
|
||||||
<translation>Back</translation>
|
<translation>Back</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -4170,6 +4129,45 @@ Output:
|
|||||||
<p>These are example release notes.</p></translation>
|
<p>These are example release notes.</p></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>packagechooserq</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/packagechooserq.qml" line="45"/>
|
||||||
|
<source>LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/>
|
||||||
|
Default option.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/packagechooserq.qml" line="59"/>
|
||||||
|
<source>LibreOffice</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/packagechooserq.qml" line="108"/>
|
||||||
|
<source>If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/packagechooserq.qml" line="121"/>
|
||||||
|
<source>No Office Suite</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/packagechooserq.qml" line="172"/>
|
||||||
|
<source>Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/packagechooserq.qml" line="185"/>
|
||||||
|
<source>Minimal Install</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/modules/packagechooserq/packagechooserq.qml" line="233"/>
|
||||||
|
<source>Please select an option for your install, or use the default: LibreOffice included.</source>
|
||||||
|
<translation type="unfinished"/>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>release_notes</name>
|
<name>release_notes</name>
|
||||||
<message>
|
<message>
|
||||||
@ -4226,132 +4224,132 @@ Output:
|
|||||||
<context>
|
<context>
|
||||||
<name>usersq</name>
|
<name>usersq</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="36"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="43"/>
|
||||||
<source>Pick your user name and credentials to login and perform admin tasks</source>
|
<source>Pick your user name and credentials to login and perform admin tasks</source>
|
||||||
<translation>Pick your user name and credentials to login and perform admin tasks</translation>
|
<translation>Pick your user name and credentials to login and perform admin tasks</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="49"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="56"/>
|
||||||
<source>What is your name?</source>
|
<source>What is your name?</source>
|
||||||
<translation>What is your name?</translation>
|
<translation>What is your name?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="56"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="63"/>
|
||||||
<source>Your Full Name</source>
|
<source>Your Full Name</source>
|
||||||
<translation>Your Full Name</translation>
|
<translation>Your Full Name</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="71"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="80"/>
|
||||||
<source>What name do you want to use to log in?</source>
|
<source>What name do you want to use to log in?</source>
|
||||||
<translation>What name do you want to use to log in?</translation>
|
<translation>What name do you want to use to log in?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="78"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="87"/>
|
||||||
<source>Login Name</source>
|
<source>Login Name</source>
|
||||||
<translation>Login Name</translation>
|
<translation>Login Name</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="98"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="116"/>
|
||||||
<source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
|
<source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
|
||||||
<translation>If more than one person will use this computer, you can create multiple accounts after installation.</translation>
|
<translation>If more than one person will use this computer, you can create multiple accounts after installation.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="110"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="128"/>
|
||||||
<source>Only lowercase letters, numbers, underscore and hyphen are allowed.</source>
|
<source>Only lowercase letters, numbers, underscore and hyphen are allowed.</source>
|
||||||
<translation>Only lowercase letters, numbers, underscore and hyphen are allowed.</translation>
|
<translation>Only lowercase letters, numbers, underscore and hyphen are allowed.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="118"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="136"/>
|
||||||
<source>root is not allowed as username.</source>
|
<source>root is not allowed as username.</source>
|
||||||
<translation>root is not allowed as username.</translation>
|
<translation>root is not allowed as username.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="127"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="145"/>
|
||||||
<source>What is the name of this computer?</source>
|
<source>What is the name of this computer?</source>
|
||||||
<translation>What is the name of this computer?</translation>
|
<translation>What is the name of this computer?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="133"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="151"/>
|
||||||
<source>Computer Name</source>
|
<source>Computer Name</source>
|
||||||
<translation>Computer Name</translation>
|
<translation>Computer Name</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="154"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="178"/>
|
||||||
<source>This name will be used if you make the computer visible to others on a network.</source>
|
<source>This name will be used if you make the computer visible to others on a network.</source>
|
||||||
<translation>This name will be used if you make the computer visible to others on a network.</translation>
|
<translation>This name will be used if you make the computer visible to others on a network.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="198"/>
|
||||||
<source>localhost is not allowed as hostname.</source>
|
<source>localhost is not allowed as hostname.</source>
|
||||||
<translation>localhost is not allowed as hostname.</translation>
|
<translation>localhost is not allowed as hostname.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="207"/>
|
||||||
<source>Choose a password to keep your account safe.</source>
|
<source>Choose a password to keep your account safe.</source>
|
||||||
<translation>Choose a password to keep your account safe.</translation>
|
<translation>Choose a password to keep your account safe.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="193"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="217"/>
|
||||||
<source>Password</source>
|
<source>Password</source>
|
||||||
<translation>Password</translation>
|
<translation>Password</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="208"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="234"/>
|
||||||
<source>Repeat Password</source>
|
<source>Repeat Password</source>
|
||||||
<translation>Repeat Password</translation>
|
<translation>Repeat Password</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="232"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="261"/>
|
||||||
<source>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</source>
|
<source>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</source>
|
||||||
<translation>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</translation>
|
<translation>Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="373"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="406"/>
|
||||||
<source>Validate passwords quality</source>
|
<source>Validate passwords quality</source>
|
||||||
<translation>Validate passwords quality</translation>
|
<translation>Validate passwords quality</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="383"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="416"/>
|
||||||
<source>When this box is checked, password-strength checking is done and you will not be able to use a weak password.</source>
|
<source>When this box is checked, password-strength checking is done and you will not be able to use a weak password.</source>
|
||||||
<translation>When this box is checked, password-strength checking is done and you will not be able to use a weak password.</translation>
|
<translation>When this box is checked, password-strength checking is done and you will not be able to use a weak password.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="365"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="398"/>
|
||||||
<source>Log in automatically without asking for the password</source>
|
<source>Log in automatically without asking for the password</source>
|
||||||
<translation>Log in automatically without asking for the password</translation>
|
<translation>Log in automatically without asking for the password</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="190"/>
|
||||||
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
||||||
<translation>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</translation>
|
<translation>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="293"/>
|
||||||
<source>Reuse user password as root password</source>
|
<source>Reuse user password as root password</source>
|
||||||
<translation>Reuse user password as root password</translation>
|
<translation>Reuse user password as root password</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="272"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="301"/>
|
||||||
<source>Use the same password for the administrator account.</source>
|
<source>Use the same password for the administrator account.</source>
|
||||||
<translation>Use the same password for the administrator account.</translation>
|
<translation>Use the same password for the administrator account.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="285"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="314"/>
|
||||||
<source>Choose a root password to keep your account safe.</source>
|
<source>Choose a root password to keep your account safe.</source>
|
||||||
<translation>Choose a root password to keep your account safe.</translation>
|
<translation>Choose a root password to keep your account safe.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="295"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="324"/>
|
||||||
<source>Root Password</source>
|
<source>Root Password</source>
|
||||||
<translation>Root Password</translation>
|
<translation>Root Password</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="311"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="342"/>
|
||||||
<source>Repeat Root Password</source>
|
<source>Repeat Root Password</source>
|
||||||
<translation>Repeat Root Password</translation>
|
<translation>Repeat Root Password</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="335"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="368"/>
|
||||||
<source>Enter the same password twice, so that it can be checked for typing errors.</source>
|
<source>Enter the same password twice, so that it can be checked for typing errors.</source>
|
||||||
<translation>Enter the same password twice, so that it can be checked for typing errors.</translation>
|
<translation>Enter the same password twice, so that it can be checked for typing errors.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -4312,7 +4312,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
||||||
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>문자, 숫자, 밑줄 및 하이픈만 허용되며, 최소 2자 이상이어야 합니다.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
||||||
|
@ -232,7 +232,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamares/PythonJob.cpp" line="304"/>
|
<location filename="../src/libcalamares/PythonJob.cpp" line="304"/>
|
||||||
<source>Boost.Python error in job "%1".</source>
|
<source>Boost.Python error in job "%1".</source>
|
||||||
<translation>Boost.Python klaida užduotyje "%1".</translation>
|
<translation>Boost.Python klaida užduotyje „%1“.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1225,7 +1225,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="48"/>
|
<location filename="../src/modules/partition/jobs/DeactivateVolumeGroupJob.cpp" line="48"/>
|
||||||
<source>The installer failed to deactivate a volume group named %1.</source>
|
<source>The installer failed to deactivate a volume group named %1.</source>
|
||||||
<translation>Diegimo programai nepavyko pasyvinti tomų grupės, pavadinimu "%1".</translation>
|
<translation>Diegimo programai nepavyko pasyvinti tomų grupės, pavadinimu „%1“.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1309,7 +1309,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="121"/>
|
<location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="121"/>
|
||||||
<source>Skip writing LUKS configuration for Dracut: "/" partition is not encrypted</source>
|
<source>Skip writing LUKS configuration for Dracut: "/" partition is not encrypted</source>
|
||||||
<translation>Praleisti LUKS konfigūracijos, kuri yra skirta Dracut, įrašymą: "/" skaidinys nėra užšifruotas</translation>
|
<translation>Praleisti LUKS konfigūracijos, kuri yra skirta Dracut, įrašymą: „/“ skaidinys nėra užšifruotas</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="138"/>
|
<location filename="../src/modules/dracutlukscfg/DracutLuksCfgJob.cpp" line="138"/>
|
||||||
@ -2162,7 +2162,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CheckPWQuality.cpp" line="196"/>
|
<location filename="../src/modules/users/CheckPWQuality.cpp" line="196"/>
|
||||||
<source>Memory allocation error when setting '%1'</source>
|
<source>Memory allocation error when setting '%1'</source>
|
||||||
<translation>Atminties paskirstymo klaida, nustatant "%1"</translation>
|
<translation>Atminties paskirstymo klaida, nustatant „%1“</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CheckPWQuality.cpp" line="199"/>
|
<location filename="../src/modules/users/CheckPWQuality.cpp" line="199"/>
|
||||||
@ -3123,7 +3123,7 @@ Išvestis:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
|
<location filename="../src/modules/partition/jobs/RemoveVolumeGroupJob.cpp" line="48"/>
|
||||||
<source>The installer failed to remove a volume group named '%1'.</source>
|
<source>The installer failed to remove a volume group named '%1'.</source>
|
||||||
<translation>Diegimo programai nepavyko pašalinti tomų grupės, pavadinimu "%1".</translation>
|
<translation>Diegimo programai nepavyko pašalinti tomų grupės, pavadinimu „%1“.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/AutoMountManagementJob.cpp" line="22"/>
|
<location filename="../src/modules/partition/jobs/AutoMountManagementJob.cpp" line="22"/>
|
||||||
<source>Manage auto-mount settings</source>
|
<source>Manage auto-mount settings</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ഓട്ടോ-മൗണ്ട് ക്രമീകരണങ്ങൾ സജ്ജീകരിക്കുക</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -4024,7 +4024,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/about.qml" line="96"/>
|
<location filename="../src/modules/welcomeq/about.qml" line="96"/>
|
||||||
<source>Back</source>
|
<source>Back</source>
|
||||||
<translation type="unfinished"/>
|
<translation>പുറകോട്ട്</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -4082,7 +4082,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/i18n.qml" line="158"/>
|
<location filename="../src/modules/localeq/i18n.qml" line="158"/>
|
||||||
<source>Back</source>
|
<source>Back</source>
|
||||||
<translation type="unfinished"/>
|
<translation>പുറകോട്ട്</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -4175,7 +4175,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/release_notes.qml" line="76"/>
|
<location filename="../src/modules/welcomeq/release_notes.qml" line="76"/>
|
||||||
<source>Back</source>
|
<source>Back</source>
|
||||||
<translation type="unfinished"/>
|
<translation>പുറകോട്ട്</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -4203,7 +4203,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="78"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="78"/>
|
||||||
<source>Login Name</source>
|
<source>Login Name</source>
|
||||||
<translation type="unfinished"/>
|
<translation>പ്രവേശന നാമം</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="98"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="98"/>
|
||||||
@ -4238,7 +4238,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
||||||
<source>localhost is not allowed as hostname.</source>
|
<source>localhost is not allowed as hostname.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>localhost അനുവദനീയമായ ഒരു ഹോസ്റ്റ്നെയിം അല്ല.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
||||||
@ -4263,7 +4263,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="373"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="373"/>
|
||||||
<source>Validate passwords quality</source>
|
<source>Validate passwords quality</source>
|
||||||
<translation type="unfinished"/>
|
<translation>രഹസ്യവാക്കിന്റെ ഗുണനിലവാരം ഉറപ്പുവരുത്തുക</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="383"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="383"/>
|
||||||
@ -4273,17 +4273,17 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="365"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="365"/>
|
||||||
<source>Log in automatically without asking for the password</source>
|
<source>Log in automatically without asking for the password</source>
|
||||||
<translation type="unfinished"/>
|
<translation>രഹസ്യവാക്ക് ചോദിക്കാതെ സ്വയം പ്രവേശിക്കുക</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
||||||
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>അക്ഷരങ്ങൾ, അക്കങ്ങൾ, ഹൈഫൻ, അണ്ടർസ്കോർ എന്നിവ മാത്രമേ അനുവദിക്കപ്പെട്ടിട്ടുള്ളൂ, കുറഞ്ഞത് രണ്ടെണ്ണമെങ്കിലും.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
||||||
<source>Reuse user password as root password</source>
|
<source>Reuse user password as root password</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ഉപയോക്തൃ രഹസ്യവാക്ക് റൂട്ട് രഹസ്യവാക്കായി പുനരുപയോഗിക്കുക</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="272"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="272"/>
|
||||||
@ -4293,22 +4293,22 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="285"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="285"/>
|
||||||
<source>Choose a root password to keep your account safe.</source>
|
<source>Choose a root password to keep your account safe.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>താങ്കളുടെ അക്കൗണ്ട് സുരക്ഷിതമാക്കാൻ ഒരു റൂട്ട് രഹസ്യവാക്ക് തിരഞ്ഞെടുക്കുക.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="295"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="295"/>
|
||||||
<source>Root Password</source>
|
<source>Root Password</source>
|
||||||
<translation type="unfinished"/>
|
<translation>റൂട്ട് രഹസ്യവാക്ക്</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="311"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="311"/>
|
||||||
<source>Repeat Root Password</source>
|
<source>Repeat Root Password</source>
|
||||||
<translation type="unfinished"/>
|
<translation>റൂട്ട് രഹസ്യവാക്ക് വീണ്ടും</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="335"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="335"/>
|
||||||
<source>Enter the same password twice, so that it can be checked for typing errors.</source>
|
<source>Enter the same password twice, so that it can be checked for typing errors.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ടൈപ്പിങ്ങ് പിഴവുകളില്ല എന്നുറപ്പിക്കുന്നതിനായി ഒരേ രഹസ്യവാക്ക് രണ്ട് തവണ നൽകുക.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -4322,27 +4322,27 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/welcomeq.qml" line="66"/>
|
<location filename="../src/modules/welcomeq/welcomeq.qml" line="66"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"/>
|
<translation>വിവരം</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/welcomeq.qml" line="80"/>
|
<location filename="../src/modules/welcomeq/welcomeq.qml" line="80"/>
|
||||||
<source>Support</source>
|
<source>Support</source>
|
||||||
<translation type="unfinished"/>
|
<translation>സഹായം</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/welcomeq.qml" line="91"/>
|
<location filename="../src/modules/welcomeq/welcomeq.qml" line="91"/>
|
||||||
<source>Known issues</source>
|
<source>Known issues</source>
|
||||||
<translation type="unfinished"/>
|
<translation>അറിയാവുന്ന പ്രശ്നങ്ങൾ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/welcomeq.qml" line="102"/>
|
<location filename="../src/modules/welcomeq/welcomeq.qml" line="102"/>
|
||||||
<source>Release notes</source>
|
<source>Release notes</source>
|
||||||
<translation type="unfinished"/>
|
<translation>പ്രകാശനക്കുറിപ്പുകൾ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/welcomeq.qml" line="114"/>
|
<location filename="../src/modules/welcomeq/welcomeq.qml" line="114"/>
|
||||||
<source>Donate</source>
|
<source>Donate</source>
|
||||||
<translation type="unfinished"/>
|
<translation>സംഭാവന</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="84"/>
|
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="84"/>
|
||||||
<source>This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own.</source>
|
<source>This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own.</source>
|
||||||
<translation>Este sistema foi iniciado utilizando o <strong>BIOS</strong> como ambiente de inicialização.<br><br>Para configurar a inicialização em um ambiente BIOS, este instalador deve instalar um gerenciador de boot, como o <strong>GRUB</strong>, no começo de uma partição ou no <strong>Master Boot Record</strong>, perto do começo da tabela de partições (recomendado). Esse processo é automático, a não ser que você escolha o particionamento manual, onde você deverá configurá-lo manualmente.</translation>
|
<translation>Este sistema foi iniciado utilizando o <strong>BIOS</strong> como ambiente de inicialização.<br><br>Para configurar a inicialização em um ambiente BIOS, este instalador deve instalar um gerenciador de inicialização, como o <strong>GRUB</strong>, no começo de uma partição ou no <strong>Master Boot Record</strong>, perto do começo da tabela de partições (recomendado). Esse processo é automático, a não ser que você escolha o particionamento manual, onde você deverá configurá-lo manualmente.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -510,12 +510,12 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="32"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="32"/>
|
||||||
<source>Set filesystem label on %1.</source>
|
<source>Set filesystem label on %1.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Definir etiqueta do sistema de arquivos em %1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="39"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="39"/>
|
||||||
<source>Set filesystem label <strong>%1</strong> to partition <strong>%2</strong>.</source>
|
<source>Set filesystem label <strong>%1</strong> to partition <strong>%2</strong>.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Definir etiqueta do sistema de arquivos <strong>%1</strong> para partição <strong>%2</strong>.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="70"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="70"/>
|
||||||
@ -896,7 +896,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/Config.cpp" line="548"/>
|
<location filename="../src/modules/users/Config.cpp" line="548"/>
|
||||||
<source>OK!</source>
|
<source>OK!</source>
|
||||||
<translation type="unfinished"/>
|
<translation>OK!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
||||||
@ -1012,12 +1012,12 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="231"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="231"/>
|
||||||
<source>Label for the filesystem</source>
|
<source>Label for the filesystem</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Etiqueta para o sistema de arquivos</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="241"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="241"/>
|
||||||
<source>FS Label:</source>
|
<source>FS Label:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Etiqueta do FS:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="65"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="65"/>
|
||||||
@ -1376,12 +1376,12 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="186"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="186"/>
|
||||||
<source>Label for the filesystem</source>
|
<source>Label for the filesystem</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Etiqueta para o sistema de arquivos</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="196"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="196"/>
|
||||||
<source>FS Label:</source>
|
<source>FS Label:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Etiqueta do FS:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="291"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="291"/>
|
||||||
@ -1889,7 +1889,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamares/locale/Tests.cpp" line="273"/>
|
<location filename="../src/libcalamares/locale/Tests.cpp" line="273"/>
|
||||||
<source>Quit</source>
|
<source>Quit</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Sair</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -2113,7 +2113,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/Offline.qml" line="41"/>
|
<location filename="../src/modules/localeq/Offline.qml" line="41"/>
|
||||||
<source>Select your preferred Region, or use the default settings.</source>
|
<source>Select your preferred Region, or use the default settings.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Selecione sua região preferida ou use as configurações predefinidas.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/Offline.qml" line="98"/>
|
<location filename="../src/modules/localeq/Offline.qml" line="98"/>
|
||||||
@ -2653,7 +2653,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="304"/>
|
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="304"/>
|
||||||
<source>File System Label</source>
|
<source>File System Label</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Etiqueta do Sistema de Arquivos</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="306"/>
|
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="306"/>
|
||||||
@ -2844,7 +2844,7 @@ O instalador será fechado e todas as alterações serão perdidas.</translation
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="521"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="521"/>
|
||||||
<source>Boot partition not encrypted</source>
|
<source>Boot partition not encrypted</source>
|
||||||
<translation>Partição de boot não criptografada</translation>
|
<translation>Partição de inicialização não criptografada</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="522"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="522"/>
|
||||||
@ -4263,7 +4263,7 @@ Saída:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="118"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="118"/>
|
||||||
<source>root is not allowed as username.</source>
|
<source>root is not allowed as username.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>root não é permitido como um nome de usuário.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="127"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="127"/>
|
||||||
@ -4283,7 +4283,7 @@ Saída:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
||||||
<source>localhost is not allowed as hostname.</source>
|
<source>localhost is not allowed as hostname.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>localhost não é permitido como hostname.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
||||||
@ -4323,7 +4323,7 @@ Saída:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
||||||
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>São permitidos apenas letras, números, sublinhado e hífen, com no mínimo dois caracteres.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
||||||
|
@ -277,7 +277,7 @@
|
|||||||
<numerusform>(% секунда)</numerusform>
|
<numerusform>(% секунда)</numerusform>
|
||||||
<numerusform>(% секунд)</numerusform>
|
<numerusform>(% секунд)</numerusform>
|
||||||
<numerusform>(% секунд)</numerusform>
|
<numerusform>(% секунд)</numerusform>
|
||||||
<numerusform>(% секунд)</numerusform>
|
<numerusform>(%n секунд)</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@ -1011,12 +1011,12 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="231"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="231"/>
|
||||||
<source>Label for the filesystem</source>
|
<source>Label for the filesystem</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Метка файловой системы</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="241"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="241"/>
|
||||||
<source>FS Label:</source>
|
<source>FS Label:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Метка ФС:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="65"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="65"/>
|
||||||
@ -1054,7 +1054,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="121"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="121"/>
|
||||||
<source>Create new %1MiB partition on %3 (%2).</source>
|
<source>Create new %1MiB partition on %3 (%2).</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Создать новый раздел %1МиБ на %3 (%2).</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="128"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="128"/>
|
||||||
@ -1069,7 +1069,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="154"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="154"/>
|
||||||
<source>Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2).</source>
|
<source>Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2).</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Создать новый раздел <strong>%1МиБ</strong> на <strong>%3</strong> (%2).</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="161"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="161"/>
|
||||||
@ -1375,12 +1375,12 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="186"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="186"/>
|
||||||
<source>Label for the filesystem</source>
|
<source>Label for the filesystem</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Метка файловой системы</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="196"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="196"/>
|
||||||
<source>FS Label:</source>
|
<source>FS Label:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Метка ФС:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="291"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.cpp" line="291"/>
|
||||||
@ -1442,7 +1442,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="221"/>
|
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="221"/>
|
||||||
<source>Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3.</source>
|
<source>Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Настроить <strong>новый</strong> %2 раздел с точкой монтирования <strong>%1</strong> %3.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="235"/>
|
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="235"/>
|
||||||
@ -1457,7 +1457,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="263"/>
|
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="263"/>
|
||||||
<source>Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4.</source>
|
<source>Set up %3 partition <strong>%1</strong> with mount point <strong>%2</strong>%4.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Настроить %3 раздел <strong>%1</strong> с точкой монтирования <strong>%2</strong>%4.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="244"/>
|
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="244"/>
|
||||||
@ -2525,7 +2525,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/page_usersetup.ui" line="148"/>
|
<location filename="../src/modules/users/page_usersetup.ui" line="148"/>
|
||||||
<source>login</source>
|
<source>login</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Вход</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/page_usersetup.ui" line="223"/>
|
<location filename="../src/modules/users/page_usersetup.ui" line="223"/>
|
||||||
@ -2668,7 +2668,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="304"/>
|
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="304"/>
|
||||||
<source>File System Label</source>
|
<source>File System Label</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Метка файловой системы</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="306"/>
|
<location filename="../src/modules/partition/core/PartitionModel.cpp" line="306"/>
|
||||||
@ -3053,7 +3053,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/machineid/MachineIdJob.cpp" line="83"/>
|
<location filename="../src/modules/machineid/MachineIdJob.cpp" line="83"/>
|
||||||
<source>Directory not found</source>
|
<source>Directory not found</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Папка не найдена</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/machineid/MachineIdJob.cpp" line="84"/>
|
<location filename="../src/modules/machineid/MachineIdJob.cpp" line="84"/>
|
||||||
@ -3088,7 +3088,7 @@ Output:
|
|||||||
<location filename="../src/modules/welcomeq/Recommended.qml" line="40"/>
|
<location filename="../src/modules/welcomeq/Recommended.qml" line="40"/>
|
||||||
<source><p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>
|
<source><p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>
|
||||||
Setup can continue, but some features might be disabled.</p></source>
|
Setup can continue, but some features might be disabled.</p></source>
|
||||||
<translation type="unfinished"/>
|
<translation><p>Этот компьютер соответствует не всем рекомендуемым требованиям для установки %1.<br/>Можно продолжить установку, но некоторые возможности могут быть недоступны.</p></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -3206,7 +3206,7 @@ Output:
|
|||||||
<location filename="../src/modules/welcomeq/Requirements.qml" line="40"/>
|
<location filename="../src/modules/welcomeq/Requirements.qml" line="40"/>
|
||||||
<source><p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>
|
<source><p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>
|
||||||
Setup can continue, but some features might be disabled.</p></source>
|
Setup can continue, but some features might be disabled.</p></source>
|
||||||
<translation type="unfinished"/>
|
<translation><p>Этот компьютер соответствует не всем рекомендуемым требованиям для установки %1.<br/>Можно продолжить установку, но некоторые возможности могут быть недоступны.</p></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -3657,7 +3657,7 @@ Output:
|
|||||||
<location filename="../src/qml/calamares/slideshow/SlideCounter.qml" line="27"/>
|
<location filename="../src/qml/calamares/slideshow/SlideCounter.qml" line="27"/>
|
||||||
<source>%L1 / %L2</source>
|
<source>%L1 / %L2</source>
|
||||||
<extracomment>slide counter, %1 of %2 (numeric)</extracomment>
|
<extracomment>slide counter, %1 of %2 (numeric)</extracomment>
|
||||||
<translation type="unfinished"/>
|
<translation>%L1 / %L2</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -3714,13 +3714,13 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="128"/>
|
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="128"/>
|
||||||
<source>Configuring KDE user feedback.</source>
|
<source>Configuring KDE user feedback.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Настройка обратной связи KDE</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="150"/>
|
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="150"/>
|
||||||
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="156"/>
|
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="156"/>
|
||||||
<source>Error in KDE user feedback configuration.</source>
|
<source>Error in KDE user feedback configuration.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Ошибка в настройке обратной связи KDE</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="151"/>
|
<location filename="../src/modules/tracking/TrackingJobs.cpp" line="151"/>
|
||||||
@ -3936,7 +3936,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/WelcomePage.ui" line="153"/>
|
<location filename="../src/modules/welcome/WelcomePage.ui" line="153"/>
|
||||||
<source>&Donate</source>
|
<source>&Donate</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Пожертвовать</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/WelcomePage.ui" line="163"/>
|
<location filename="../src/modules/welcome/WelcomePage.ui" line="163"/>
|
||||||
@ -4062,7 +4062,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finishedq/finishedq.qml" line="36"/>
|
<location filename="../src/modules/finishedq/finishedq.qml" line="36"/>
|
||||||
<source>Installation Completed</source>
|
<source>Installation Completed</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Установка завершена </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finishedq/finishedq.qml" line="43"/>
|
<location filename="../src/modules/finishedq/finishedq.qml" line="43"/>
|
||||||
@ -4073,7 +4073,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finishedq/finishedq.qml" line="65"/>
|
<location filename="../src/modules/finishedq/finishedq.qml" line="65"/>
|
||||||
<source>Close Installer</source>
|
<source>Close Installer</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Закрыть установщик</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finishedq/finishedq.qml" line="71"/>
|
<location filename="../src/modules/finishedq/finishedq.qml" line="71"/>
|
||||||
@ -4117,7 +4117,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboardq/keyboardq.qml" line="377"/>
|
<location filename="../src/modules/keyboardq/keyboardq.qml" line="377"/>
|
||||||
<source>Layouts</source>
|
<source>Layouts</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Раскладки</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboardq/keyboardq.qml" line="148"/>
|
<location filename="../src/modules/keyboardq/keyboardq.qml" line="148"/>
|
||||||
@ -4127,7 +4127,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
|
<location filename="../src/modules/keyboardq/keyboardq.qml" line="60"/>
|
||||||
<source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
|
<source>Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Выберете предпочитаемую модель клавиатуры, чтобы выбрать раскладку и вариант, или используйте модель по умолчанию в зависимости от обнаруженного оборудования.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
|
<location filename="../src/modules/keyboardq/keyboardq.qml" line="253"/>
|
||||||
@ -4231,7 +4231,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="98"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="98"/>
|
||||||
<source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
|
<source>If more than one person will use this computer, you can create multiple accounts after installation.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Если этот компьютер используется несколькими людьми, Вы сможете создать соответствующие учетные записи сразу после установки.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="110"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="110"/>
|
||||||
@ -4241,7 +4241,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="118"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="118"/>
|
||||||
<source>root is not allowed as username.</source>
|
<source>root is not allowed as username.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>root не допускается в качестве имени пользователя.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="127"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="127"/>
|
||||||
@ -4261,7 +4261,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="174"/>
|
||||||
<source>localhost is not allowed as hostname.</source>
|
<source>localhost is not allowed as hostname.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>localhost не допускается в качестве имени пользователя.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="183"/>
|
||||||
@ -4296,7 +4296,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="365"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="365"/>
|
||||||
<source>Log in automatically without asking for the password</source>
|
<source>Log in automatically without asking for the password</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Входить автоматически, не спрашивая пароль</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
||||||
@ -4326,12 +4326,12 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="311"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="311"/>
|
||||||
<source>Repeat Root Password</source>
|
<source>Repeat Root Password</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Повторите пароль от root</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="335"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="335"/>
|
||||||
<source>Enter the same password twice, so that it can be checked for typing errors.</source>
|
<source>Enter the same password twice, so that it can be checked for typing errors.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Введите пароль повторно, чтобы не допустить ошибок при вводе</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="28"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="28"/>
|
||||||
<source>GlobalStorage</source>
|
<source>GlobalStorage</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ගෝලීය ආචයනය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="38"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="38"/>
|
||||||
@ -88,7 +88,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="61"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="61"/>
|
||||||
<source>Type:</source>
|
<source>Type:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>වර්ගය:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="68"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="68"/>
|
||||||
@ -99,7 +99,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="75"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="75"/>
|
||||||
<source>Interface:</source>
|
<source>Interface:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>අතුරුමුහුණත:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="102"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="102"/>
|
||||||
@ -240,7 +240,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/viewpages/QmlViewStep.cpp" line="67"/>
|
<location filename="../src/libcalamaresui/viewpages/QmlViewStep.cpp" line="67"/>
|
||||||
<source>Loading ...</source>
|
<source>Loading ...</source>
|
||||||
<translation type="unfinished"/>
|
<translation>පූරණය වෙමින්...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/viewpages/QmlViewStep.cpp" line="88"/>
|
<location filename="../src/libcalamaresui/viewpages/QmlViewStep.cpp" line="88"/>
|
||||||
@ -308,18 +308,18 @@
|
|||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="519"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="519"/>
|
||||||
<source>&Yes</source>
|
<source>&Yes</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ඔව් (Y)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="520"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="520"/>
|
||||||
<source>&No</source>
|
<source>&No</source>
|
||||||
<translation type="unfinished"/>
|
<translation>නැහැ (N)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="186"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="186"/>
|
||||||
<source>&Close</source>
|
<source>&Close</source>
|
||||||
<translation type="unfinished"/>
|
<translation>වසන්න (C)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/utils/Paste.cpp" line="170"/>
|
<location filename="../src/libcalamaresui/utils/Paste.cpp" line="170"/>
|
||||||
@ -388,7 +388,7 @@ Link copied to clipboard</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="343"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="343"/>
|
||||||
<source>Go &back</source>
|
<source>Go &back</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ආපසු යන්න</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="393"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="393"/>
|
||||||
@ -428,7 +428,7 @@ Link copied to clipboard</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="414"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="414"/>
|
||||||
<source>&Back</source>
|
<source>&Back</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ආපසු (B)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="420"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="420"/>
|
||||||
@ -448,7 +448,7 @@ Link copied to clipboard</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="512"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="512"/>
|
||||||
<source>Cancel installation?</source>
|
<source>Cancel installation?</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ස්ථාපනය අවලංගු කරනවාද?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="513"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="513"/>
|
||||||
@ -543,7 +543,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1033"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1033"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1124"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1124"/>
|
||||||
<source>Current:</source>
|
<source>Current:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>වත්මන්:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="123"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="123"/>
|
||||||
@ -845,7 +845,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/Config.cpp" line="217"/>
|
<location filename="../src/modules/users/Config.cpp" line="217"/>
|
||||||
<source>Your username is too long.</source>
|
<source>Your username is too long.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>පරිශීලක නාමය දිග වැඩිය.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/Config.cpp" line="223"/>
|
<location filename="../src/modules/users/Config.cpp" line="223"/>
|
||||||
@ -890,7 +890,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/Config.cpp" line="548"/>
|
<location filename="../src/modules/users/Config.cpp" line="548"/>
|
||||||
<source>OK!</source>
|
<source>OK!</source>
|
||||||
<translation type="unfinished"/>
|
<translation>හරි!</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
||||||
@ -961,7 +961,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="42"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="42"/>
|
||||||
<source>Si&ze:</source>
|
<source>Si&ze:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ප්රමාණය:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="52"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="52"/>
|
||||||
@ -986,7 +986,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="123"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="123"/>
|
||||||
<source>Fi&le System:</source>
|
<source>Fi&le System:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ගොනු පද්ධතිය:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="155"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="155"/>
|
||||||
@ -1139,12 +1139,12 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CreateUserJob.cpp" line="36"/>
|
<location filename="../src/modules/users/CreateUserJob.cpp" line="36"/>
|
||||||
<source>Create user %1</source>
|
<source>Create user %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 පරිශීලක සාදන්න</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CreateUserJob.cpp" line="43"/>
|
<location filename="../src/modules/users/CreateUserJob.cpp" line="43"/>
|
||||||
<source>Create user <strong>%1</strong>.</source>
|
<source>Create user <strong>%1</strong>.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><strong>%1</strong> පරිශීලක සාදන්න.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CreateUserJob.cpp" line="126"/>
|
<location filename="../src/modules/users/CreateUserJob.cpp" line="126"/>
|
||||||
@ -1155,12 +1155,12 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<location filename="../src/modules/users/CreateUserJob.cpp" line="50"/>
|
<location filename="../src/modules/users/CreateUserJob.cpp" line="50"/>
|
||||||
<location filename="../src/modules/users/CreateUserJob.cpp" line="143"/>
|
<location filename="../src/modules/users/CreateUserJob.cpp" line="143"/>
|
||||||
<source>Creating user %1</source>
|
<source>Creating user %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 පරිශීලක සෑදෙමින්</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CreateUserJob.cpp" line="151"/>
|
<location filename="../src/modules/users/CreateUserJob.cpp" line="151"/>
|
||||||
<source>Configuring user %1</source>
|
<source>Configuring user %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 පරිශීලක වින්යාසගත වෙමින්</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CreateUserJob.cpp" line="159"/>
|
<location filename="../src/modules/users/CreateUserJob.cpp" line="159"/>
|
||||||
@ -1280,13 +1280,13 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="84"/>
|
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="84"/>
|
||||||
<source>%1 - %2 (%3)</source>
|
<source>%1 - %2 (%3)</source>
|
||||||
<extracomment>device[name] - size[number] (device-node[name])</extracomment>
|
<extracomment>device[name] - size[number] (device-node[name])</extracomment>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 - %2 (%3)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="95"/>
|
<location filename="../src/modules/partition/core/DeviceModel.cpp" line="95"/>
|
||||||
<source>%1 - (%2)</source>
|
<source>%1 - (%2)</source>
|
||||||
<extracomment>device[name] - (device-node[name])</extracomment>
|
<extracomment>device[name] - (device-node[name])</extracomment>
|
||||||
<translation type="unfinished"/>
|
<translation>%1 - (%2)</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1350,7 +1350,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="123"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="123"/>
|
||||||
<source>Si&ze:</source>
|
<source>Si&ze:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ප්රමාණය:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="133"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="133"/>
|
||||||
@ -1360,7 +1360,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="140"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="140"/>
|
||||||
<source>Fi&le System:</source>
|
<source>Fi&le System:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ගොනු පද්ධතිය:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="153"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="153"/>
|
||||||
@ -1706,7 +1706,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboardq/KeyboardQmlViewStep.cpp" line="32"/>
|
<location filename="../src/modules/keyboardq/KeyboardQmlViewStep.cpp" line="32"/>
|
||||||
<source>Keyboard</source>
|
<source>Keyboard</source>
|
||||||
<translation type="unfinished"/>
|
<translation>යතුරුපුවරුව</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1714,7 +1714,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboard/KeyboardViewStep.cpp" line="42"/>
|
<location filename="../src/modules/keyboard/KeyboardViewStep.cpp" line="42"/>
|
||||||
<source>Keyboard</source>
|
<source>Keyboard</source>
|
||||||
<translation type="unfinished"/>
|
<translation>යතුරුපුවරුව</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1788,7 +1788,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/license/LicenseViewStep.cpp" line="43"/>
|
<location filename="../src/modules/license/LicenseViewStep.cpp" line="43"/>
|
||||||
<source>License</source>
|
<source>License</source>
|
||||||
<translation type="unfinished"/>
|
<translation>බලපත්රය</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1796,7 +1796,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="88"/>
|
<location filename="../src/modules/license/LicenseWidget.cpp" line="88"/>
|
||||||
<source>URL: %1</source>
|
<source>URL: %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ඒ.ස.නි.: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="109"/>
|
<location filename="../src/modules/license/LicenseWidget.cpp" line="109"/>
|
||||||
@ -1833,7 +1833,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="163"/>
|
<location filename="../src/modules/license/LicenseWidget.cpp" line="163"/>
|
||||||
<source>File: %1</source>
|
<source>File: %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ගොනුව: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/license/LicenseWidget.cpp" line="186"/>
|
<location filename="../src/modules/license/LicenseWidget.cpp" line="186"/>
|
||||||
@ -1867,7 +1867,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<location filename="../src/modules/locale/LocalePage.cpp" line="132"/>
|
<location filename="../src/modules/locale/LocalePage.cpp" line="132"/>
|
||||||
<location filename="../src/modules/locale/LocalePage.cpp" line="133"/>
|
<location filename="../src/modules/locale/LocalePage.cpp" line="133"/>
|
||||||
<source>&Change...</source>
|
<source>&Change...</source>
|
||||||
<translation type="unfinished"/>
|
<translation>වෙනස් කරන්න...</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1875,7 +1875,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/localeq/LocaleQmlViewStep.cpp" line="32"/>
|
<location filename="../src/modules/localeq/LocaleQmlViewStep.cpp" line="32"/>
|
||||||
<source>Location</source>
|
<source>Location</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ස්ථානය</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1883,7 +1883,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamares/locale/Tests.cpp" line="273"/>
|
<location filename="../src/libcalamares/locale/Tests.cpp" line="273"/>
|
||||||
<source>Quit</source>
|
<source>Quit</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ඉවත් වන්න</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1891,7 +1891,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/locale/LocaleViewStep.cpp" line="76"/>
|
<location filename="../src/modules/locale/LocaleViewStep.cpp" line="76"/>
|
||||||
<source>Location</source>
|
<source>Location</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ස්ථානය</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1973,27 +1973,27 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="50"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="50"/>
|
||||||
<source>Office software</source>
|
<source>Office software</source>
|
||||||
<translation type="unfinished"/>
|
<translation>කාර්යාලීය මෘදුකාංගය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/>
|
||||||
<source>Office package</source>
|
<source>Office package</source>
|
||||||
<translation type="unfinished"/>
|
<translation>කාර්යාලීය ඇසුරුම</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="52"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="52"/>
|
||||||
<source>Browser software</source>
|
<source>Browser software</source>
|
||||||
<translation type="unfinished"/>
|
<translation>අතිරික්සු මෘදුකාංගය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="53"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="53"/>
|
||||||
<source>Browser package</source>
|
<source>Browser package</source>
|
||||||
<translation type="unfinished"/>
|
<translation>අතිරික්සු ඇසුරුම</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="54"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="54"/>
|
||||||
<source>Web browser</source>
|
<source>Web browser</source>
|
||||||
<translation type="unfinished"/>
|
<translation>වියමන අතිරික්සුව</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="55"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="55"/>
|
||||||
@ -2003,7 +2003,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="56"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="56"/>
|
||||||
<source>Services</source>
|
<source>Services</source>
|
||||||
<translation type="unfinished"/>
|
<translation>සේවා</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="57"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="57"/>
|
||||||
@ -2018,32 +2018,32 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="59"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="59"/>
|
||||||
<source>Applications</source>
|
<source>Applications</source>
|
||||||
<translation type="unfinished"/>
|
<translation>යෙදුම්</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="60"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="60"/>
|
||||||
<source>Communication</source>
|
<source>Communication</source>
|
||||||
<translation type="unfinished"/>
|
<translation>සන්නිවේදනය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="61"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="61"/>
|
||||||
<source>Development</source>
|
<source>Development</source>
|
||||||
<translation type="unfinished"/>
|
<translation>සංවර්ධනය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="62"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="62"/>
|
||||||
<source>Office</source>
|
<source>Office</source>
|
||||||
<translation type="unfinished"/>
|
<translation>කාර්යාලීය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="63"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="63"/>
|
||||||
<source>Multimedia</source>
|
<source>Multimedia</source>
|
||||||
<translation type="unfinished"/>
|
<translation>බහුමාධ්ය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="64"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="64"/>
|
||||||
<source>Internet</source>
|
<source>Internet</source>
|
||||||
<translation type="unfinished"/>
|
<translation>අන්තර්ජාලය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="65"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="65"/>
|
||||||
@ -2066,7 +2066,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/notesqml/NotesQmlViewStep.cpp" line="23"/>
|
<location filename="../src/modules/notesqml/NotesQmlViewStep.cpp" line="23"/>
|
||||||
<source>Notes</source>
|
<source>Notes</source>
|
||||||
<translation type="unfinished"/>
|
<translation>සටහන්</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -2135,12 +2135,12 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CheckPWQuality.cpp" line="51"/>
|
<location filename="../src/modules/users/CheckPWQuality.cpp" line="51"/>
|
||||||
<source>Password is too short</source>
|
<source>Password is too short</source>
|
||||||
<translation type="unfinished"/>
|
<translation>මුරපදය ඉතා කෙටිය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CheckPWQuality.cpp" line="67"/>
|
<location filename="../src/modules/users/CheckPWQuality.cpp" line="67"/>
|
||||||
<source>Password is too long</source>
|
<source>Password is too long</source>
|
||||||
<translation type="unfinished"/>
|
<translation>මුරපදය ඉතා දිගය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CheckPWQuality.cpp" line="188"/>
|
<location filename="../src/modules/users/CheckPWQuality.cpp" line="188"/>
|
||||||
@ -2223,7 +2223,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CheckPWQuality.cpp" line="249"/>
|
<location filename="../src/modules/users/CheckPWQuality.cpp" line="249"/>
|
||||||
<source>The password is too short</source>
|
<source>The password is too short</source>
|
||||||
<translation type="unfinished"/>
|
<translation>මුරපදය ඉතා කෙටිය</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/users/CheckPWQuality.cpp" line="258"/>
|
<location filename="../src/modules/users/CheckPWQuality.cpp" line="258"/>
|
||||||
@ -2796,7 +2796,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="226"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="226"/>
|
||||||
<source>Current:</source>
|
<source>Current:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>වත්මන්:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="244"/>
|
<location filename="../src/modules/partition/PartitionViewStep.cpp" line="244"/>
|
||||||
|
@ -285,7 +285,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="155"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="155"/>
|
||||||
<source>Setup Failed</source>
|
<source>Setup Failed</source>
|
||||||
<translation type="unfinished"/>
|
<translation>การตั้งค่าล้มเหลว</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="155"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="155"/>
|
||||||
@ -306,18 +306,18 @@
|
|||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="179"/>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="519"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="519"/>
|
||||||
<source>&Yes</source>
|
<source>&Yes</source>
|
||||||
<translation type="unfinished"/>
|
<translation>&ใช่</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="520"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="520"/>
|
||||||
<source>&No</source>
|
<source>&No</source>
|
||||||
<translation type="unfinished"/>
|
<translation>&ไม่</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="186"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="186"/>
|
||||||
<source>&Close</source>
|
<source>&Close</source>
|
||||||
<translation type="unfinished"/>
|
<translation>ปิ&ด</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/utils/Paste.cpp" line="170"/>
|
<location filename="../src/libcalamaresui/utils/Paste.cpp" line="170"/>
|
||||||
@ -376,7 +376,7 @@ Link copied to clipboard</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="335"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="335"/>
|
||||||
<source>&Set up now</source>
|
<source>&Set up now</source>
|
||||||
<translation>&ตั้งค่าตอนนี้</translation>
|
<translation>ตั้&งค่าตอนนี้</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="335"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="335"/>
|
||||||
@ -391,12 +391,12 @@ Link copied to clipboard</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="393"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="393"/>
|
||||||
<source>&Set up</source>
|
<source>&Set up</source>
|
||||||
<translation>&ตั้งค่า</translation>
|
<translation>ตั้&งค่า</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="393"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="393"/>
|
||||||
<source>&Install</source>
|
<source>&Install</source>
|
||||||
<translation>&ติดตั้ง</translation>
|
<translation>ติ&ดตั้ง</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/ViewManager.cpp" line="395"/>
|
<location filename="../src/libcalamaresui/ViewManager.cpp" line="395"/>
|
||||||
@ -534,7 +534,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="121"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="121"/>
|
||||||
<source>Select storage de&vice:</source>
|
<source>Select storage de&vice:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>เลือกอุปก&รณ์จัดเก็บ:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="122"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="122"/>
|
||||||
@ -562,7 +562,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="988"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="988"/>
|
||||||
<source><strong>Select a partition to shrink, then drag the bottom bar to resize</strong></source>
|
<source><strong>Select a partition to shrink, then drag the bottom bar to resize</strong></source>
|
||||||
<translation type="unfinished"/>
|
<translation><strong>เลือกพาร์ทิชันที่จะลดขนาด แล้วลากแถบด้านล่างเพื่อปรับขนาด</strong></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1005"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1005"/>
|
||||||
@ -597,7 +597,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1325"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1325"/>
|
||||||
<source>This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>ดูเหมือนว่าอุปกรณ์จัดเก็บนี้ไม่มีระบบปฏิบัติการ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บของคุณ</translation>
|
<translation>ดูเหมือนว่าอุปกรณ์จัดเก็บข้อมูลนี้ไม่มีระบบปฏิบัติการ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บข้อมูลของคุณ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1330"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1330"/>
|
||||||
@ -605,7 +605,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1389"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1389"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1414"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1414"/>
|
||||||
<source><strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device.</source>
|
<source><strong>Erase disk</strong><br/>This will <font color="red">delete</font> all data currently present on the selected storage device.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><strong>ล้างดิสก์</strong><br/>การกระทำนี้จะ<font color="red">ลบ</font>ข้อมูลทั้งหมดที่อยู่บนอุปกรณ์จัดเก็บข้อมูลที่เลือก</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1334"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1334"/>
|
||||||
@ -626,17 +626,17 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1357"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1357"/>
|
||||||
<source>This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device has %1 on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>อุปกรณ์จัดเก็บนี้มีระบบปฏิบัติการ %1 อยู่ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บของคุณ</translation>
|
<translation>อุปกรณ์จัดเก็บข้อมูลนี้มีระบบปฏิบัติการ %1 อยู่ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บข้อมูลของคุณ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1380"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1380"/>
|
||||||
<source>This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device already has an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>อุปกรณ์จัดเก็บนี้มีระบบปฏิบัติการอยู่แล้ว คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บของคุณ</translation>
|
<translation>อุปกรณ์จัดเก็บข้อมูลนี้มีระบบปฏิบัติการอยู่แล้ว คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บข้อมูลของคุณ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1405"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1405"/>
|
||||||
<source>This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
<source>This storage device has multiple operating systems on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device.</source>
|
||||||
<translation>อุปกรณ์จัดเก็บนี้มีหลายระบบปฏิบัติการ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บของคุณ</translation>
|
<translation>อุปกรณ์จัดเก็บข้อมูลนี้มีหลายระบบปฏิบัติการ คุณต้องการทำอย่างไร?<br/>คุณจะสามารถทบทวนและยืนยันตัวเลือกของคุณก่อนที่จะกระทำการเปลี่ยนแปลงไปยังอุปกรณ์จัดเก็บข้อมูลของคุณ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1477"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1477"/>
|
||||||
@ -819,7 +819,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="75"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="75"/>
|
||||||
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
||||||
<translation>โปรแกรมนี้จะถามตำถามต่าง ๆ เพื่อติดตั้ง %2 ลงในคอมพิวเตอร์ของคุณ</translation>
|
<translation>โปรแกรมนี้จะถามคำถามต่าง ๆ เพื่อติดตั้ง %2 ลงในคอมพิวเตอร์ของคุณ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/Config.cpp" line="244"/>
|
<location filename="../src/modules/welcome/Config.cpp" line="244"/>
|
||||||
@ -894,7 +894,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
||||||
<source>Setup Failed</source>
|
<source>Setup Failed</source>
|
||||||
<translation type="unfinished"/>
|
<translation>การตั้งค่าล้มเหลว</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
<location filename="../src/modules/finished/Config.cpp" line="145"/>
|
||||||
@ -3329,7 +3329,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="287"/>
|
<location filename="../src/modules/welcome/checker/ResultsListWidget.cpp" line="287"/>
|
||||||
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
<source>This program will ask you some questions and set up %2 on your computer.</source>
|
||||||
<translation>โปรแกรมนี้จะถามคุณบางอย่าง เพื่อติดตั้ง %2 ไว้ในคอมพิวเตอร์ของคุณ</translation>
|
<translation>โปรแกรมนี้จะถามคำถามต่าง ๆ เพื่อติดตั้ง %2 ลงในคอมพิวเตอร์ของคุณ</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -3889,7 +3889,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
|
<location filename="../src/modules/welcome/WelcomePage.ui" line="140"/>
|
||||||
<source>&About</source>
|
<source>&About</source>
|
||||||
<translation>&A เกี่ยวกับ</translation>
|
<translation>&เกี่ยวกับ</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/WelcomePage.ui" line="150"/>
|
<location filename="../src/modules/welcome/WelcomePage.ui" line="150"/>
|
||||||
|
@ -105,7 +105,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="102"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="102"/>
|
||||||
<source>Crashes Calamares, so that Dr. Konqui can look at it.</source>
|
<source>Crashes Calamares, so that Dr. Konqui can look at it.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>使 Calamares 崩溃,以便 Konqui 医生可以查看它。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="115"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="115"/>
|
||||||
@ -130,7 +130,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="128"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="128"/>
|
||||||
<source>Displays the tree of widget names in the log (for stylesheet debugging).</source>
|
<source>Displays the tree of widget names in the log (for stylesheet debugging).</source>
|
||||||
<translation type="unfinished"/>
|
<translation>在日志中显示小部件名称树(用于样式表调试)。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="131"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="131"/>
|
||||||
@ -514,7 +514,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="39"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="39"/>
|
||||||
<source>Set filesystem label <strong>%1</strong> to partition <strong>%2</strong>.</source>
|
<source>Set filesystem label <strong>%1</strong> to partition <strong>%2</strong>.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>设置文件系统标签 <strong>%1</strong> 至分区 <strong>%2</strong>。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="70"/>
|
<location filename="../src/modules/partition/jobs/ChangeFilesystemLabelJob.cpp" line="70"/>
|
||||||
@ -1056,7 +1056,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="121"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="121"/>
|
||||||
<source>Create new %1MiB partition on %3 (%2).</source>
|
<source>Create new %1MiB partition on %3 (%2).</source>
|
||||||
<translation type="unfinished"/>
|
<translation>在 %3 (%2) 上建立新的 %1MiB 分区。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="128"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="128"/>
|
||||||
@ -1071,7 +1071,7 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="154"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="154"/>
|
||||||
<source>Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2).</source>
|
<source>Create new <strong>%1MiB</strong> partition on <strong>%3</strong> (%2).</source>
|
||||||
<translation type="unfinished"/>
|
<translation>在<strong>%3</strong>(%2)上创建新的<strong>%1MiB</strong>分区</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="161"/>
|
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="161"/>
|
||||||
@ -1445,12 +1445,12 @@ The installer will quit and all changes will be lost.</source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="221"/>
|
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="221"/>
|
||||||
<source>Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3.</source>
|
<source>Set up <strong>new</strong> %2 partition with mount point <strong>%1</strong>%3.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>设置 <strong>新的</strong> 含挂载点 <strong>%1</strong>%3 的 %2 分区。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="235"/>
|
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="235"/>
|
||||||
<source>Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em>.</source>
|
<source>Install %2 on %3 system partition <strong>%1</strong> with features <em>%4</em>.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>在具有功能<em>%4</em>的 %3 系统分区<strong>%1</strong>上安装 %2。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="254"/>
|
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="254"/>
|
||||||
@ -4319,7 +4319,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="166"/>
|
||||||
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
<source>Only letters, numbers, underscore and hyphen are allowed, minimal of two characters.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>只允许字母、数组、下划线"_" 和 连字符"-",最少两个字符。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
<location filename="../src/modules/usersq/usersq.qml" line="264"/>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/AutoMountManagementJob.cpp" line="22"/>
|
<location filename="../src/modules/partition/jobs/AutoMountManagementJob.cpp" line="22"/>
|
||||||
<source>Manage auto-mount settings</source>
|
<source>Manage auto-mount settings</source>
|
||||||
<translation type="unfinished"/>
|
<translation>管理自動掛載設定</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -14,12 +14,12 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="62"/>
|
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="62"/>
|
||||||
<source>The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode.</source>
|
<source>The <strong>boot environment</strong> of this system.<br><br>Older x86 systems only support <strong>BIOS</strong>.<br>Modern systems usually use <strong>EFI</strong>, but may also show up as BIOS if started in compatibility mode.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>這個系統的<strong>開機環境</strong>。<br><br>較舊的 x86 系統只支援 <strong>BIOS</strong>。<br>現時的系統則通常使用 <strong>EFI</strong>,但若使用相容模式 (CSM),也可能顯示為 BIOS。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="72"/>
|
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="72"/>
|
||||||
<source>This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source>
|
<source>This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>這個系統以 <strong>EFI</strong> 開機。<br><br>要從 EFI 環境開機,本安裝程式必須安裝開機載入器程式,像是 <strong>GRUB</strong> 或 <strong>systemd-boot</strong> 在 <strong>EFI 系統分割區</strong>。這是自動的,除非選擇手動分割;在這種情況,您必須自行選取或建立它。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="84"/>
|
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="84"/>
|
||||||
|
543
lang/python.pot
543
lang/python.pot
@ -2,406 +2,381 @@
|
|||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
"POT-Creation-Date: 2021-09-06 11:40+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Language: \n"
|
|
||||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||||
|
|
||||||
#: src/modules/grubcfg/main.py:28
|
#: src/modules/bootloader/main.py:43
|
||||||
msgid "Configure GRUB."
|
msgid "Install bootloader."
|
||||||
msgstr "Configure GRUB."
|
|
||||||
|
|
||||||
#: src/modules/mount/main.py:30
|
|
||||||
msgid "Mounting partitions."
|
|
||||||
msgstr "Mounting partitions."
|
|
||||||
|
|
||||||
#: src/modules/mount/main.py:144 src/modules/initcpiocfg/main.py:197
|
|
||||||
#: src/modules/initcpiocfg/main.py:201
|
|
||||||
#: src/modules/luksopenswaphookcfg/main.py:86
|
|
||||||
#: src/modules/luksopenswaphookcfg/main.py:90 src/modules/rawfs/main.py:164
|
|
||||||
#: src/modules/initramfscfg/main.py:85 src/modules/initramfscfg/main.py:89
|
|
||||||
#: src/modules/openrcdmcryptcfg/main.py:72
|
|
||||||
#: src/modules/openrcdmcryptcfg/main.py:76 src/modules/fstab/main.py:355
|
|
||||||
#: src/modules/fstab/main.py:361 src/modules/fstab/main.py:388
|
|
||||||
#: src/modules/localecfg/main.py:135 src/modules/networkcfg/main.py:39
|
|
||||||
msgid "Configuration Error"
|
|
||||||
msgstr "Configuration Error"
|
|
||||||
|
|
||||||
#: src/modules/mount/main.py:145 src/modules/initcpiocfg/main.py:198
|
|
||||||
#: src/modules/luksopenswaphookcfg/main.py:87 src/modules/rawfs/main.py:165
|
|
||||||
#: src/modules/initramfscfg/main.py:86 src/modules/openrcdmcryptcfg/main.py:73
|
|
||||||
#: src/modules/fstab/main.py:356
|
|
||||||
msgid "No partitions are defined for <pre>{!s}</pre> to use."
|
|
||||||
msgstr "No partitions are defined for <pre>{!s}</pre> to use."
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:26
|
|
||||||
msgid "Configure systemd services"
|
|
||||||
msgstr "Configure systemd services"
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:59
|
|
||||||
#: src/modules/services-openrc/main.py:93
|
|
||||||
msgid "Cannot modify service"
|
|
||||||
msgstr "Cannot modify service"
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:60
|
|
||||||
msgid ""
|
|
||||||
"<code>systemctl {arg!s}</code> call in chroot returned error code {num!s}."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<code>systemctl {arg!s}</code> call in chroot returned error code {num!s}."
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:63
|
#: src/modules/bootloader/main.py:508
|
||||||
#: src/modules/services-systemd/main.py:67
|
msgid "Bootloader installation error"
|
||||||
msgid "Cannot enable systemd service <code>{name!s}</code>."
|
|
||||||
msgstr "Cannot enable systemd service <code>{name!s}</code>."
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:65
|
|
||||||
msgid "Cannot enable systemd target <code>{name!s}</code>."
|
|
||||||
msgstr "Cannot enable systemd target <code>{name!s}</code>."
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:69
|
|
||||||
msgid "Cannot disable systemd target <code>{name!s}</code>."
|
|
||||||
msgstr "Cannot disable systemd target <code>{name!s}</code>."
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:71
|
|
||||||
msgid "Cannot mask systemd unit <code>{name!s}</code>."
|
|
||||||
msgstr "Cannot mask systemd unit <code>{name!s}</code>."
|
|
||||||
|
|
||||||
#: src/modules/services-systemd/main.py:73
|
|
||||||
msgid ""
|
|
||||||
"Unknown systemd commands <code>{command!s}</code> and "
|
|
||||||
"<code>{suffix!s}</code> for unit {name!s}."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Unknown systemd commands <code>{command!s}</code> and "
|
|
||||||
"<code>{suffix!s}</code> for unit {name!s}."
|
|
||||||
|
|
||||||
#: src/modules/umount/main.py:31
|
#: src/modules/bootloader/main.py:509
|
||||||
msgid "Unmount file systems."
|
|
||||||
msgstr "Unmount file systems."
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:35
|
|
||||||
msgid "Filling up filesystems."
|
|
||||||
msgstr "Filling up filesystems."
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:255
|
|
||||||
msgid "rsync failed with error code {}."
|
|
||||||
msgstr "rsync failed with error code {}."
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:300
|
|
||||||
msgid "Unpacking image {}/{}, file {}/{}"
|
|
||||||
msgstr "Unpacking image {}/{}, file {}/{}"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:315
|
|
||||||
msgid "Starting to unpack {}"
|
|
||||||
msgstr "Starting to unpack {}"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:324 src/modules/unpackfs/main.py:464
|
|
||||||
msgid "Failed to unpack image \"{}\""
|
|
||||||
msgstr "Failed to unpack image \"{}\""
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:431
|
|
||||||
msgid "No mount point for root partition"
|
|
||||||
msgstr "No mount point for root partition"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:432
|
|
||||||
msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing"
|
|
||||||
msgstr "globalstorage does not contain a \"rootMountPoint\" key, doing nothing"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:437
|
|
||||||
msgid "Bad mount point for root partition"
|
|
||||||
msgstr "Bad mount point for root partition"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:438
|
|
||||||
msgid "rootMountPoint is \"{}\", which does not exist, doing nothing"
|
|
||||||
msgstr "rootMountPoint is \"{}\", which does not exist, doing nothing"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:454 src/modules/unpackfs/main.py:458
|
|
||||||
#: src/modules/unpackfs/main.py:478
|
|
||||||
msgid "Bad unsquash configuration"
|
|
||||||
msgstr "Bad unsquash configuration"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:455
|
|
||||||
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
|
||||||
msgstr "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:459
|
|
||||||
msgid "The source filesystem \"{}\" does not exist"
|
|
||||||
msgstr "The source filesystem \"{}\" does not exist"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:465
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Failed to find unsquashfs, make sure you have the squashfs-tools package "
|
"The bootloader could not be installed. The installation command <pre>{!s}</"
|
||||||
"installed"
|
"pre> returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Failed to find unsquashfs, make sure you have the squashfs-tools package "
|
|
||||||
"installed"
|
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:479
|
|
||||||
msgid "The destination \"{}\" in the target system is not a directory"
|
|
||||||
msgstr "The destination \"{}\" in the target system is not a directory"
|
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:526
|
#: src/modules/displaymanager/main.py:526
|
||||||
msgid "Cannot write KDM configuration file"
|
msgid "Cannot write KDM configuration file"
|
||||||
msgstr "Cannot write KDM configuration file"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:527
|
#: src/modules/displaymanager/main.py:527
|
||||||
msgid "KDM config file {!s} does not exist"
|
msgid "KDM config file {!s} does not exist"
|
||||||
msgstr "KDM config file {!s} does not exist"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:588
|
#: src/modules/displaymanager/main.py:588
|
||||||
msgid "Cannot write LXDM configuration file"
|
msgid "Cannot write LXDM configuration file"
|
||||||
msgstr "Cannot write LXDM configuration file"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:589
|
#: src/modules/displaymanager/main.py:589
|
||||||
msgid "LXDM config file {!s} does not exist"
|
msgid "LXDM config file {!s} does not exist"
|
||||||
msgstr "LXDM config file {!s} does not exist"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:672
|
#: src/modules/displaymanager/main.py:672
|
||||||
msgid "Cannot write LightDM configuration file"
|
msgid "Cannot write LightDM configuration file"
|
||||||
msgstr "Cannot write LightDM configuration file"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:673
|
#: src/modules/displaymanager/main.py:673
|
||||||
msgid "LightDM config file {!s} does not exist"
|
msgid "LightDM config file {!s} does not exist"
|
||||||
msgstr "LightDM config file {!s} does not exist"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:747
|
#: src/modules/displaymanager/main.py:747
|
||||||
msgid "Cannot configure LightDM"
|
msgid "Cannot configure LightDM"
|
||||||
msgstr "Cannot configure LightDM"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:748
|
#: src/modules/displaymanager/main.py:748
|
||||||
msgid "No LightDM greeter installed."
|
msgid "No LightDM greeter installed."
|
||||||
msgstr "No LightDM greeter installed."
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:779
|
#: src/modules/displaymanager/main.py:779
|
||||||
msgid "Cannot write SLIM configuration file"
|
msgid "Cannot write SLIM configuration file"
|
||||||
msgstr "Cannot write SLIM configuration file"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:780
|
#: src/modules/displaymanager/main.py:780
|
||||||
msgid "SLIM config file {!s} does not exist"
|
msgid "SLIM config file {!s} does not exist"
|
||||||
msgstr "SLIM config file {!s} does not exist"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:906
|
#: src/modules/displaymanager/main.py:906
|
||||||
msgid "No display managers selected for the displaymanager module."
|
msgid "No display managers selected for the displaymanager module."
|
||||||
msgstr "No display managers selected for the displaymanager module."
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:907
|
#: src/modules/displaymanager/main.py:907
|
||||||
msgid ""
|
msgid ""
|
||||||
"The displaymanagers list is empty or undefined in both globalstorage and "
|
"The displaymanagers list is empty or undefined in both globalstorage and "
|
||||||
"displaymanager.conf."
|
"displaymanager.conf."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The displaymanagers list is empty or undefined in both globalstorage and "
|
|
||||||
"displaymanager.conf."
|
|
||||||
|
|
||||||
#: src/modules/displaymanager/main.py:989
|
#: src/modules/displaymanager/main.py:989
|
||||||
msgid "Display manager configuration was incomplete"
|
msgid "Display manager configuration was incomplete"
|
||||||
msgstr "Display manager configuration was incomplete"
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/dracut/main.py:27
|
||||||
|
msgid "Creating initramfs with dracut."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/dracut/main.py:49
|
||||||
|
msgid "Failed to run dracut on the target"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/dracut/main.py:50 src/modules/mkinitfs/main.py:50
|
||||||
|
msgid "The exit code was {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/dummypython/main.py:35
|
||||||
|
msgid "Dummy python job."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/dummypython/main.py:37 src/modules/dummypython/main.py:93
|
||||||
|
#: src/modules/dummypython/main.py:94
|
||||||
|
msgid "Dummy python step {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/fstab/main.py:29
|
||||||
|
msgid "Writing fstab."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/fstab/main.py:355 src/modules/fstab/main.py:361
|
||||||
|
#: src/modules/fstab/main.py:388 src/modules/initcpiocfg/main.py:197
|
||||||
|
#: src/modules/initcpiocfg/main.py:201 src/modules/initramfscfg/main.py:85
|
||||||
|
#: src/modules/initramfscfg/main.py:89 src/modules/localecfg/main.py:135
|
||||||
|
#: src/modules/luksopenswaphookcfg/main.py:86
|
||||||
|
#: src/modules/luksopenswaphookcfg/main.py:90 src/modules/mount/main.py:144
|
||||||
|
#: src/modules/networkcfg/main.py:42 src/modules/openrcdmcryptcfg/main.py:72
|
||||||
|
#: src/modules/openrcdmcryptcfg/main.py:76 src/modules/rawfs/main.py:164
|
||||||
|
msgid "Configuration Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/fstab/main.py:356 src/modules/initcpiocfg/main.py:198
|
||||||
|
#: src/modules/initramfscfg/main.py:86
|
||||||
|
#: src/modules/luksopenswaphookcfg/main.py:87 src/modules/mount/main.py:145
|
||||||
|
#: src/modules/openrcdmcryptcfg/main.py:73 src/modules/rawfs/main.py:165
|
||||||
|
msgid "No partitions are defined for <pre>{!s}</pre> to use."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/fstab/main.py:362 src/modules/initcpiocfg/main.py:202
|
||||||
|
#: src/modules/initramfscfg/main.py:90 src/modules/localecfg/main.py:136
|
||||||
|
#: src/modules/luksopenswaphookcfg/main.py:91 src/modules/networkcfg/main.py:43
|
||||||
|
#: src/modules/openrcdmcryptcfg/main.py:77
|
||||||
|
msgid "No root mount point is given for <pre>{!s}</pre> to use."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/fstab/main.py:389
|
||||||
|
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/grubcfg/main.py:28
|
||||||
|
msgid "Configure GRUB."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/hwclock/main.py:26
|
||||||
|
msgid "Setting hardware clock."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/initcpiocfg/main.py:28
|
#: src/modules/initcpiocfg/main.py:28
|
||||||
msgid "Configuring mkinitcpio."
|
msgid "Configuring mkinitcpio."
|
||||||
msgstr "Configuring mkinitcpio."
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/initcpiocfg/main.py:202
|
#: src/modules/initramfscfg/main.py:32
|
||||||
#: src/modules/luksopenswaphookcfg/main.py:91
|
msgid "Configuring initramfs."
|
||||||
#: src/modules/initramfscfg/main.py:90 src/modules/openrcdmcryptcfg/main.py:77
|
msgstr ""
|
||||||
#: src/modules/fstab/main.py:362 src/modules/localecfg/main.py:136
|
|
||||||
#: src/modules/networkcfg/main.py:40
|
#: src/modules/localecfg/main.py:30
|
||||||
msgid "No root mount point is given for <pre>{!s}</pre> to use."
|
msgid "Configuring locales."
|
||||||
msgstr "No root mount point is given for <pre>{!s}</pre> to use."
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/luksopenswaphookcfg/main.py:26
|
#: src/modules/luksopenswaphookcfg/main.py:26
|
||||||
msgid "Configuring encrypted swap."
|
msgid "Configuring encrypted swap."
|
||||||
msgstr "Configuring encrypted swap."
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/mkinitfs/main.py:27
|
||||||
|
msgid "Creating initramfs with mkinitfs."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/mkinitfs/main.py:49
|
||||||
|
msgid "Failed to run mkinitfs on the target"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/mount/main.py:30
|
||||||
|
msgid "Mounting partitions."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/networkcfg/main.py:29
|
||||||
|
msgid "Saving network configuration."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/openrcdmcryptcfg/main.py:26
|
||||||
|
msgid "Configuring OpenRC dmcrypt service."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:50 src/modules/packages/main.py:59
|
||||||
|
#: src/modules/packages/main.py:69
|
||||||
|
msgid "Install packages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:57
|
||||||
|
#, python-format
|
||||||
|
msgid "Processing packages (%(count)d / %(total)d)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:62
|
||||||
|
#, python-format
|
||||||
|
msgid "Installing one package."
|
||||||
|
msgid_plural "Installing %(num)d packages."
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:65
|
||||||
|
#, python-format
|
||||||
|
msgid "Removing one package."
|
||||||
|
msgid_plural "Removing %(num)d packages."
|
||||||
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:638 src/modules/packages/main.py:650
|
||||||
|
#: src/modules/packages/main.py:678
|
||||||
|
msgid "Package Manager error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:639
|
||||||
|
msgid ""
|
||||||
|
"The package manager could not prepare updates. The command <pre>{!s}</pre> "
|
||||||
|
"returned error code {!s}."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:651
|
||||||
|
msgid ""
|
||||||
|
"The package manager could not update the system. The command <pre>{!s}</pre> "
|
||||||
|
"returned error code {!s}."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/packages/main.py:679
|
||||||
|
msgid ""
|
||||||
|
"The package manager could not make changes to the installed system. The "
|
||||||
|
"command <pre>{!s}</pre> returned error code {!s}."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/plymouthcfg/main.py:27
|
||||||
|
msgid "Configure Plymouth theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/rawfs/main.py:26
|
#: src/modules/rawfs/main.py:26
|
||||||
msgid "Installing data."
|
msgid "Installing data."
|
||||||
msgstr "Installing data."
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:29
|
#: src/modules/services-openrc/main.py:29
|
||||||
msgid "Configure OpenRC services"
|
msgid "Configure OpenRC services"
|
||||||
msgstr "Configure OpenRC services"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:57
|
#: src/modules/services-openrc/main.py:57
|
||||||
msgid "Cannot add service {name!s} to run-level {level!s}."
|
msgid "Cannot add service {name!s} to run-level {level!s}."
|
||||||
msgstr "Cannot add service {name!s} to run-level {level!s}."
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:59
|
#: src/modules/services-openrc/main.py:59
|
||||||
msgid "Cannot remove service {name!s} from run-level {level!s}."
|
msgid "Cannot remove service {name!s} from run-level {level!s}."
|
||||||
msgstr "Cannot remove service {name!s} from run-level {level!s}."
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:61
|
#: src/modules/services-openrc/main.py:61
|
||||||
msgid ""
|
msgid ""
|
||||||
"Unknown service-action <code>{arg!s}</code> for service {name!s} in run-"
|
"Unknown service-action <code>{arg!s}</code> for service {name!s} in run-"
|
||||||
"level {level!s}."
|
"level {level!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Unknown service-action <code>{arg!s}</code> for service {name!s} in run-"
|
|
||||||
"level {level!s}."
|
#: src/modules/services-openrc/main.py:93
|
||||||
|
#: src/modules/services-systemd/main.py:59
|
||||||
|
msgid "Cannot modify service"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:94
|
#: src/modules/services-openrc/main.py:94
|
||||||
msgid ""
|
msgid ""
|
||||||
"<code>rc-update {arg!s}</code> call in chroot returned error code {num!s}."
|
"<code>rc-update {arg!s}</code> call in chroot returned error code {num!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"<code>rc-update {arg!s}</code> call in chroot returned error code {num!s}."
|
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:101
|
#: src/modules/services-openrc/main.py:101
|
||||||
msgid "Target runlevel does not exist"
|
msgid "Target runlevel does not exist"
|
||||||
msgstr "Target runlevel does not exist"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:102
|
#: src/modules/services-openrc/main.py:102
|
||||||
msgid ""
|
msgid ""
|
||||||
"The path for runlevel {level!s} is <code>{path!s}</code>, which does not "
|
"The path for runlevel {level!s} is <code>{path!s}</code>, which does not "
|
||||||
"exist."
|
"exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The path for runlevel {level!s} is <code>{path!s}</code>, which does not "
|
|
||||||
"exist."
|
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:110
|
#: src/modules/services-openrc/main.py:110
|
||||||
msgid "Target service does not exist"
|
msgid "Target service does not exist"
|
||||||
msgstr "Target service does not exist"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:111
|
#: src/modules/services-openrc/main.py:111
|
||||||
msgid ""
|
msgid ""
|
||||||
"The path for service {name!s} is <code>{path!s}</code>, which does not "
|
"The path for service {name!s} is <code>{path!s}</code>, which does not exist."
|
||||||
"exist."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The path for service {name!s} is <code>{path!s}</code>, which does not "
|
|
||||||
"exist."
|
|
||||||
|
|
||||||
#: src/modules/plymouthcfg/main.py:27
|
#: src/modules/services-systemd/main.py:26
|
||||||
msgid "Configure Plymouth theme"
|
msgid "Configure systemd services"
|
||||||
msgstr "Configure Plymouth theme"
|
msgstr ""
|
||||||
|
|
||||||
#: src/modules/packages/main.py:50 src/modules/packages/main.py:59
|
#: src/modules/services-systemd/main.py:60
|
||||||
#: src/modules/packages/main.py:69
|
|
||||||
msgid "Install packages."
|
|
||||||
msgstr "Install packages."
|
|
||||||
|
|
||||||
#: src/modules/packages/main.py:57
|
|
||||||
#, python-format
|
|
||||||
msgid "Processing packages (%(count)d / %(total)d)"
|
|
||||||
msgstr "Processing packages (%(count)d / %(total)d)"
|
|
||||||
|
|
||||||
#: src/modules/packages/main.py:62
|
|
||||||
#, python-format
|
|
||||||
msgid "Installing one package."
|
|
||||||
msgid_plural "Installing %(num)d packages."
|
|
||||||
msgstr[0] "Installing one package."
|
|
||||||
msgstr[1] "Installing %(num)d packages."
|
|
||||||
|
|
||||||
#: src/modules/packages/main.py:65
|
|
||||||
#, python-format
|
|
||||||
msgid "Removing one package."
|
|
||||||
msgid_plural "Removing %(num)d packages."
|
|
||||||
msgstr[0] "Removing one package."
|
|
||||||
msgstr[1] "Removing %(num)d packages."
|
|
||||||
|
|
||||||
#: src/modules/packages/main.py:588 src/modules/packages/main.py:600
|
|
||||||
#: src/modules/packages/main.py:628
|
|
||||||
msgid "Package Manager error"
|
|
||||||
msgstr "Package Manager error"
|
|
||||||
|
|
||||||
#: src/modules/packages/main.py:589
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not prepare updates. The command <pre>{!s}</pre> "
|
"<code>systemctl {arg!s}</code> call in chroot returned error code {num!s}."
|
||||||
"returned error code {!s}."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The package manager could not prepare updates. The command <pre>{!s}</pre> "
|
|
||||||
"returned error code {!s}."
|
|
||||||
|
|
||||||
#: src/modules/packages/main.py:601
|
#: src/modules/services-systemd/main.py:63
|
||||||
|
#: src/modules/services-systemd/main.py:67
|
||||||
|
msgid "Cannot enable systemd service <code>{name!s}</code>."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/services-systemd/main.py:65
|
||||||
|
msgid "Cannot enable systemd target <code>{name!s}</code>."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/services-systemd/main.py:69
|
||||||
|
msgid "Cannot disable systemd target <code>{name!s}</code>."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/services-systemd/main.py:71
|
||||||
|
msgid "Cannot mask systemd unit <code>{name!s}</code>."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/services-systemd/main.py:73
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not update the system. The command <pre>{!s}</pre>"
|
"Unknown systemd commands <code>{command!s}</code> and <code>{suffix!s}</"
|
||||||
" returned error code {!s}."
|
"code> for unit {name!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The package manager could not update the system. The command <pre>{!s}</pre>"
|
|
||||||
" returned error code {!s}."
|
|
||||||
|
|
||||||
#: src/modules/packages/main.py:629
|
#: src/modules/umount/main.py:31
|
||||||
|
msgid "Unmount file systems."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:35
|
||||||
|
msgid "Filling up filesystems."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:255
|
||||||
|
msgid "rsync failed with error code {}."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:300
|
||||||
|
msgid "Unpacking image {}/{}, file {}/{}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:315
|
||||||
|
msgid "Starting to unpack {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:324 src/modules/unpackfs/main.py:464
|
||||||
|
msgid "Failed to unpack image \"{}\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:431
|
||||||
|
msgid "No mount point for root partition"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:432
|
||||||
|
msgid "globalstorage does not contain a \"rootMountPoint\" key, doing nothing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:437
|
||||||
|
msgid "Bad mount point for root partition"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:438
|
||||||
|
msgid "rootMountPoint is \"{}\", which does not exist, doing nothing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:454 src/modules/unpackfs/main.py:458
|
||||||
|
#: src/modules/unpackfs/main.py:478
|
||||||
|
msgid "Bad unsquash configuration"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:455
|
||||||
|
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:459
|
||||||
|
msgid "The source filesystem \"{}\" does not exist"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/modules/unpackfs/main.py:465
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not make changes to the installed system. The "
|
"Failed to find unsquashfs, make sure you have the squashfs-tools package "
|
||||||
"command <pre>{!s}</pre> returned error code {!s}."
|
"installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The package manager could not make changes to the installed system. The "
|
|
||||||
"command <pre>{!s}</pre> returned error code {!s}."
|
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:43
|
#: src/modules/unpackfs/main.py:479
|
||||||
msgid "Install bootloader."
|
msgid "The destination \"{}\" in the target system is not a directory"
|
||||||
msgstr "Install bootloader."
|
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:502
|
|
||||||
msgid "Bootloader installation error"
|
|
||||||
msgstr "Bootloader installation error"
|
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:503
|
|
||||||
msgid ""
|
|
||||||
"The bootloader could not be installed. The installation command "
|
|
||||||
"<pre>{!s}</pre> returned error code {!s}."
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"The bootloader could not be installed. The installation command "
|
|
||||||
"<pre>{!s}</pre> returned error code {!s}."
|
|
||||||
|
|
||||||
#: src/modules/hwclock/main.py:26
|
|
||||||
msgid "Setting hardware clock."
|
|
||||||
msgstr "Setting hardware clock."
|
|
||||||
|
|
||||||
#: src/modules/mkinitfs/main.py:27
|
|
||||||
msgid "Creating initramfs with mkinitfs."
|
|
||||||
msgstr "Creating initramfs with mkinitfs."
|
|
||||||
|
|
||||||
#: src/modules/mkinitfs/main.py:49
|
|
||||||
msgid "Failed to run mkinitfs on the target"
|
|
||||||
msgstr "Failed to run mkinitfs on the target"
|
|
||||||
|
|
||||||
#: src/modules/mkinitfs/main.py:50 src/modules/dracut/main.py:50
|
|
||||||
msgid "The exit code was {}"
|
|
||||||
msgstr "The exit code was {}"
|
|
||||||
|
|
||||||
#: src/modules/dracut/main.py:27
|
|
||||||
msgid "Creating initramfs with dracut."
|
|
||||||
msgstr "Creating initramfs with dracut."
|
|
||||||
|
|
||||||
#: src/modules/dracut/main.py:49
|
|
||||||
msgid "Failed to run dracut on the target"
|
|
||||||
msgstr "Failed to run dracut on the target"
|
|
||||||
|
|
||||||
#: src/modules/initramfscfg/main.py:32
|
|
||||||
msgid "Configuring initramfs."
|
|
||||||
msgstr "Configuring initramfs."
|
|
||||||
|
|
||||||
#: src/modules/openrcdmcryptcfg/main.py:26
|
|
||||||
msgid "Configuring OpenRC dmcrypt service."
|
|
||||||
msgstr "Configuring OpenRC dmcrypt service."
|
|
||||||
|
|
||||||
#: src/modules/fstab/main.py:29
|
|
||||||
msgid "Writing fstab."
|
|
||||||
msgstr "Writing fstab."
|
|
||||||
|
|
||||||
#: src/modules/fstab/main.py:389
|
|
||||||
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
|
|
||||||
msgstr "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
|
|
||||||
|
|
||||||
#: src/modules/dummypython/main.py:35
|
|
||||||
msgid "Dummy python job."
|
|
||||||
msgstr "Dummy python job."
|
|
||||||
|
|
||||||
#: src/modules/dummypython/main.py:37 src/modules/dummypython/main.py:93
|
|
||||||
#: src/modules/dummypython/main.py:94
|
|
||||||
msgid "Dummy python step {}"
|
|
||||||
msgstr "Dummy python step {}"
|
|
||||||
|
|
||||||
#: src/modules/localecfg/main.py:30
|
|
||||||
msgid "Configuring locales."
|
|
||||||
msgstr "Configuring locales."
|
|
||||||
|
|
||||||
#: src/modules/networkcfg/main.py:28
|
|
||||||
msgid "Saving network configuration."
|
|
||||||
msgstr "Saving network configuration."
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Xəyyam Qocayev <xxmn77@gmail.com>, 2021
|
# xxmn77 <xxmn77@gmail.com>, 2021
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
||||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||||
"Last-Translator: Xəyyam Qocayev <xxmn77@gmail.com>, 2021\n"
|
"Last-Translator: xxmn77 <xxmn77@gmail.com>, 2021\n"
|
||||||
"Language-Team: Azerbaijani (https://www.transifex.com/calamares/teams/20061/az/)\n"
|
"Language-Team: Azerbaijani (https://www.transifex.com/calamares/teams/20061/az/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Xəyyam Qocayev <xxmn77@gmail.com>, 2021
|
# xxmn77 <xxmn77@gmail.com>, 2021
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
||||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||||
"Last-Translator: Xəyyam Qocayev <xxmn77@gmail.com>, 2021\n"
|
"Last-Translator: xxmn77 <xxmn77@gmail.com>, 2021\n"
|
||||||
"Language-Team: Azerbaijani (Azerbaijan) (https://www.transifex.com/calamares/teams/20061/az_AZ/)\n"
|
"Language-Team: Azerbaijani (Azerbaijan) (https://www.transifex.com/calamares/teams/20061/az_AZ/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# pavelrz, 2017
|
# pavelrz, 2017
|
||||||
# LiberteCzech <liberte.czech@gmail.com>, 2020
|
# LiberteCzech <martin.kriz.czech@gmail.com>, 2020
|
||||||
# Pavel Borecki <pavel.borecki@gmail.com>, 2020
|
# Pavel Borecki <pavel.borecki@gmail.com>, 2020
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Adriaan de Groot <groot@kde.org>, 2020
|
# Adriaan de Groot <groot@kde.org>, 2020
|
||||||
# Gustav Gyges, 2020
|
|
||||||
# Andreas Eitel <github-aneitel@online.de>, 2020
|
# Andreas Eitel <github-aneitel@online.de>, 2020
|
||||||
|
# Gustav Gyges, 2021
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -15,7 +15,7 @@ msgstr ""
|
|||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
||||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||||
"Last-Translator: Andreas Eitel <github-aneitel@online.de>, 2020\n"
|
"Last-Translator: Gustav Gyges, 2021\n"
|
||||||
"Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n"
|
"Language-Team: German (https://www.transifex.com/calamares/teams/20061/de/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -319,25 +319,31 @@ msgstr[1] "Entferne %(num)d Pakete."
|
|||||||
#: src/modules/packages/main.py:588 src/modules/packages/main.py:600
|
#: src/modules/packages/main.py:588 src/modules/packages/main.py:600
|
||||||
#: src/modules/packages/main.py:628
|
#: src/modules/packages/main.py:628
|
||||||
msgid "Package Manager error"
|
msgid "Package Manager error"
|
||||||
msgstr ""
|
msgstr "Fehler im Paketmanager"
|
||||||
|
|
||||||
#: src/modules/packages/main.py:589
|
#: src/modules/packages/main.py:589
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not prepare updates. The command <pre>{!s}</pre> "
|
"The package manager could not prepare updates. The command <pre>{!s}</pre> "
|
||||||
"returned error code {!s}."
|
"returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Der Paketmanager konnte die Aktualisierungen nicht vorbereiten. Der Befehl "
|
||||||
|
"<pre>{!s}</pre> erzeugte Fehlercode {!s}."
|
||||||
|
|
||||||
#: src/modules/packages/main.py:601
|
#: src/modules/packages/main.py:601
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not update the system. The command <pre>{!s}</pre>"
|
"The package manager could not update the system. The command <pre>{!s}</pre>"
|
||||||
" returned error code {!s}."
|
" returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Der Paketmanager konnte das System nicht aktualisieren. Der Befehl "
|
||||||
|
"<pre>{!s}</pre> erzeugte Fehlercode {!s}."
|
||||||
|
|
||||||
#: src/modules/packages/main.py:629
|
#: src/modules/packages/main.py:629
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not make changes to the installed system. The "
|
"The package manager could not make changes to the installed system. The "
|
||||||
"command <pre>{!s}</pre> returned error code {!s}."
|
"command <pre>{!s}</pre> returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Der Paketmanager konnte das installierte System nicht verändern. Der Befehl "
|
||||||
|
"<pre>{!s}</pre> erzeugte Fehlercode {!s}."
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:43
|
#: src/modules/bootloader/main.py:43
|
||||||
msgid "Install bootloader."
|
msgid "Install bootloader."
|
||||||
@ -345,13 +351,15 @@ msgstr "Installiere Bootloader."
|
|||||||
|
|
||||||
#: src/modules/bootloader/main.py:502
|
#: src/modules/bootloader/main.py:502
|
||||||
msgid "Bootloader installation error"
|
msgid "Bootloader installation error"
|
||||||
msgstr ""
|
msgstr "Fehler beim Installieren des Bootloaders"
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:503
|
#: src/modules/bootloader/main.py:503
|
||||||
msgid ""
|
msgid ""
|
||||||
"The bootloader could not be installed. The installation command "
|
"The bootloader could not be installed. The installation command "
|
||||||
"<pre>{!s}</pre> returned error code {!s}."
|
"<pre>{!s}</pre> returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Der Bootloader konnte nicht installiert werden. Der Installationsbefehl "
|
||||||
|
"<pre>{!s}</pre> erzeugte Fehlercode {!s}."
|
||||||
|
|
||||||
#: src/modules/hwclock/main.py:26
|
#: src/modules/hwclock/main.py:26
|
||||||
msgid "Setting hardware clock."
|
msgid "Setting hardware clock."
|
||||||
@ -392,6 +400,8 @@ msgstr "Schreibe fstab."
|
|||||||
#: src/modules/fstab/main.py:389
|
#: src/modules/fstab/main.py:389
|
||||||
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
|
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Keine <pre>{!s}</pre> Konfiguration gegeben die <pre>{!s}</pre> benutzen "
|
||||||
|
"könnte."
|
||||||
|
|
||||||
#: src/modules/dummypython/main.py:35
|
#: src/modules/dummypython/main.py:35
|
||||||
msgid "Dummy python job."
|
msgid "Dummy python job."
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
# strel, 2017
|
# strel, 2017
|
||||||
# Francisco Sánchez López de Lerma <fslopezlerma@gmail.com>, 2018
|
# Francisco Sánchez López de Lerma <fslopezlerma@gmail.com>, 2018
|
||||||
# Guido Grasso <cuquiman97@gmail.com>, 2018
|
# Guido Grasso <cuquiman97@gmail.com>, 2018
|
||||||
# Adolfo Jayme Barrientos, 2019
|
# Adolfo Jayme-Barrientos, 2019
|
||||||
# Miguel Mayol <mitcoes@gmail.com>, 2020
|
# Miguel Mayol <mitcoes@gmail.com>, 2020
|
||||||
# Pier Jose Gotta Perez <piegope@protonmail.com>, 2020
|
# Pier Jose Gotta Perez <piegope@protonmail.com>, 2020
|
||||||
#
|
#
|
||||||
|
@ -320,6 +320,7 @@ msgid ""
|
|||||||
"The package manager could not make changes to the installed system. The "
|
"The package manager could not make changes to the installed system. The "
|
||||||
"command <pre>{!s}</pre> returned error code {!s}."
|
"command <pre>{!s}</pre> returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"패키지 관리자가 설치된 시스템을 변경할 수 없습니다. <pre>{!s}</pre> 명령에서 {!s} 오류 코드를 반환했습니다."
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:43
|
#: src/modules/bootloader/main.py:43
|
||||||
msgid "Install bootloader."
|
msgid "Install bootloader."
|
||||||
|
@ -137,7 +137,7 @@ msgstr "Bloga unsquash konfigūracija"
|
|||||||
|
|
||||||
#: src/modules/unpackfs/main.py:455
|
#: src/modules/unpackfs/main.py:455
|
||||||
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
msgid "The filesystem for \"{}\" ({}) is not supported by your current kernel"
|
||||||
msgstr "Jūsų branduolys nepalaiko failų sistemos, kuri skirta \"{}\" ({})"
|
msgstr "Jūsų branduolys nepalaiko failų sistemos, kuri skirta „{}“ ({})"
|
||||||
|
|
||||||
#: src/modules/unpackfs/main.py:459
|
#: src/modules/unpackfs/main.py:459
|
||||||
msgid "The source filesystem \"{}\" does not exist"
|
msgid "The source filesystem \"{}\" does not exist"
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# André Marcelo Alvarenga <alvarenga@kde.org>, 2020
|
# André Marcelo Alvarenga <alvarenga@kde.org>, 2020
|
||||||
# Guilherme Marçal Silva, 2020
|
# Guilherme Marçal Silva, 2021
|
||||||
#
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
||||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||||
"Last-Translator: Guilherme Marçal Silva, 2020\n"
|
"Last-Translator: Guilherme Marçal Silva, 2021\n"
|
||||||
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n"
|
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/calamares/teams/20061/pt_BR/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -317,39 +317,47 @@ msgstr[1] "Removendo %(num)d pacotes."
|
|||||||
#: src/modules/packages/main.py:588 src/modules/packages/main.py:600
|
#: src/modules/packages/main.py:588 src/modules/packages/main.py:600
|
||||||
#: src/modules/packages/main.py:628
|
#: src/modules/packages/main.py:628
|
||||||
msgid "Package Manager error"
|
msgid "Package Manager error"
|
||||||
msgstr ""
|
msgstr "Erro do Gerenciador de Pacotes"
|
||||||
|
|
||||||
#: src/modules/packages/main.py:589
|
#: src/modules/packages/main.py:589
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not prepare updates. The command <pre>{!s}</pre> "
|
"The package manager could not prepare updates. The command <pre>{!s}</pre> "
|
||||||
"returned error code {!s}."
|
"returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O gerenciador de pacotes não pôde preparar as atualizações. O comando "
|
||||||
|
"<pre>{!s}</pre> retornou o código de erro {!s}."
|
||||||
|
|
||||||
#: src/modules/packages/main.py:601
|
#: src/modules/packages/main.py:601
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not update the system. The command <pre>{!s}</pre>"
|
"The package manager could not update the system. The command <pre>{!s}</pre>"
|
||||||
" returned error code {!s}."
|
" returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O gerenciador de pacotes não pôde atualizar o sistema. O comando "
|
||||||
|
"<pre>{!s}</pre> retornou o código de erro {!s}."
|
||||||
|
|
||||||
#: src/modules/packages/main.py:629
|
#: src/modules/packages/main.py:629
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package manager could not make changes to the installed system. The "
|
"The package manager could not make changes to the installed system. The "
|
||||||
"command <pre>{!s}</pre> returned error code {!s}."
|
"command <pre>{!s}</pre> returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O gerenciador de pacotes não pôde fazer mudanças no sistema instalado. O "
|
||||||
|
"comando <pre>{!s}</pre> retornou o código de erro {!s}."
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:43
|
#: src/modules/bootloader/main.py:43
|
||||||
msgid "Install bootloader."
|
msgid "Install bootloader."
|
||||||
msgstr "Instalar bootloader."
|
msgstr "Instalar carregador de inicialização."
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:502
|
#: src/modules/bootloader/main.py:502
|
||||||
msgid "Bootloader installation error"
|
msgid "Bootloader installation error"
|
||||||
msgstr ""
|
msgstr "Erro de instalação do carregador de inicialização"
|
||||||
|
|
||||||
#: src/modules/bootloader/main.py:503
|
#: src/modules/bootloader/main.py:503
|
||||||
msgid ""
|
msgid ""
|
||||||
"The bootloader could not be installed. The installation command "
|
"The bootloader could not be installed. The installation command "
|
||||||
"<pre>{!s}</pre> returned error code {!s}."
|
"<pre>{!s}</pre> returned error code {!s}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O carregador de inicialização não pôde ser instalado. O comando de "
|
||||||
|
"instalação <pre>{!s}</pre> retornou o código de erro {!s}."
|
||||||
|
|
||||||
#: src/modules/hwclock/main.py:26
|
#: src/modules/hwclock/main.py:26
|
||||||
msgid "Setting hardware clock."
|
msgid "Setting hardware clock."
|
||||||
@ -390,6 +398,8 @@ msgstr "Escrevendo fstab."
|
|||||||
#: src/modules/fstab/main.py:389
|
#: src/modules/fstab/main.py:389
|
||||||
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
|
msgid "No <pre>{!s}</pre> configuration is given for <pre>{!s}</pre> to use."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Nenhuma configuração <pre>{!s}</pre> é dada para que <pre>{!s}</pre> possa "
|
||||||
|
"utilizar."
|
||||||
|
|
||||||
#: src/modules/dummypython/main.py:35
|
#: src/modules/dummypython/main.py:35
|
||||||
msgid "Dummy python job."
|
msgid "Dummy python job."
|
||||||
|
@ -3,6 +3,9 @@
|
|||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
|
# Translators:
|
||||||
|
# Hela Basa, 2021
|
||||||
|
#
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -10,6 +13,7 @@ msgstr ""
|
|||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
"POT-Creation-Date: 2021-07-14 12:55+0200\n"
|
||||||
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
"PO-Revision-Date: 2017-08-09 10:34+0000\n"
|
||||||
|
"Last-Translator: Hela Basa, 2021\n"
|
||||||
"Language-Team: Sinhala (https://www.transifex.com/calamares/teams/20061/si/)\n"
|
"Language-Team: Sinhala (https://www.transifex.com/calamares/teams/20061/si/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -216,7 +220,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/modules/rawfs/main.py:26
|
#: src/modules/rawfs/main.py:26
|
||||||
msgid "Installing data."
|
msgid "Installing data."
|
||||||
msgstr ""
|
msgstr "දත්ත ස්ථාපනය වෙමින්."
|
||||||
|
|
||||||
#: src/modules/services-openrc/main.py:29
|
#: src/modules/services-openrc/main.py:29
|
||||||
msgid "Configure OpenRC services"
|
msgid "Configure OpenRC services"
|
||||||
@ -268,7 +272,7 @@ msgstr ""
|
|||||||
#: src/modules/packages/main.py:50 src/modules/packages/main.py:59
|
#: src/modules/packages/main.py:50 src/modules/packages/main.py:59
|
||||||
#: src/modules/packages/main.py:69
|
#: src/modules/packages/main.py:69
|
||||||
msgid "Install packages."
|
msgid "Install packages."
|
||||||
msgstr ""
|
msgstr "ඇසුරුම් ස්ථාපනය කරන්න."
|
||||||
|
|
||||||
#: src/modules/packages/main.py:57
|
#: src/modules/packages/main.py:57
|
||||||
#, python-format
|
#, python-format
|
||||||
@ -279,15 +283,15 @@ msgstr ""
|
|||||||
#, python-format
|
#, python-format
|
||||||
msgid "Installing one package."
|
msgid "Installing one package."
|
||||||
msgid_plural "Installing %(num)d packages."
|
msgid_plural "Installing %(num)d packages."
|
||||||
msgstr[0] ""
|
msgstr[0] "ඇසුරුමක් ස්ථාපනය වෙමින්."
|
||||||
msgstr[1] ""
|
msgstr[1] "ඇසුරුම් %(num)d ක් ස්ථාපනය වෙමින්."
|
||||||
|
|
||||||
#: src/modules/packages/main.py:65
|
#: src/modules/packages/main.py:65
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Removing one package."
|
msgid "Removing one package."
|
||||||
msgid_plural "Removing %(num)d packages."
|
msgid_plural "Removing %(num)d packages."
|
||||||
msgstr[0] ""
|
msgstr[0] "ඇසුරුමක් ඉවත් වෙමින්."
|
||||||
msgstr[1] ""
|
msgstr[1] "ඇසුරුම් %(num)d ක් ඉවත් වෙමින්."
|
||||||
|
|
||||||
#: src/modules/packages/main.py:588 src/modules/packages/main.py:600
|
#: src/modules/packages/main.py:588 src/modules/packages/main.py:600
|
||||||
#: src/modules/packages/main.py:628
|
#: src/modules/packages/main.py:628
|
||||||
@ -328,7 +332,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/modules/hwclock/main.py:26
|
#: src/modules/hwclock/main.py:26
|
||||||
msgid "Setting hardware clock."
|
msgid "Setting hardware clock."
|
||||||
msgstr ""
|
msgstr "දෘඩාංග ඔරලෝසුව සැකසෙමින්."
|
||||||
|
|
||||||
#: src/modules/mkinitfs/main.py:27
|
#: src/modules/mkinitfs/main.py:27
|
||||||
msgid "Creating initramfs with mkinitfs."
|
msgid "Creating initramfs with mkinitfs."
|
||||||
@ -381,4 +385,4 @@ msgstr ""
|
|||||||
|
|
||||||
#: src/modules/networkcfg/main.py:28
|
#: src/modules/networkcfg/main.py:28
|
||||||
msgid "Saving network configuration."
|
msgid "Saving network configuration."
|
||||||
msgstr ""
|
msgstr "ජාල වින්යාසය සුරැකෙමින්."
|
||||||
|
@ -104,6 +104,10 @@ Settings* Settings::s_instance = nullptr;
|
|||||||
Settings*
|
Settings*
|
||||||
Settings::instance()
|
Settings::instance()
|
||||||
{
|
{
|
||||||
|
if ( !s_instance )
|
||||||
|
{
|
||||||
|
cWarning() << "Getting nullptr Settings instance.";
|
||||||
|
}
|
||||||
return s_instance;
|
return s_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,6 +242,9 @@ Settings::Settings( bool debugMode )
|
|||||||
, m_disableCancel( false )
|
, m_disableCancel( false )
|
||||||
, m_disableCancelDuringExec( false )
|
, m_disableCancelDuringExec( false )
|
||||||
{
|
{
|
||||||
|
cWarning() << "Using bogus Calamares settings in"
|
||||||
|
<< ( debugMode ? QStringLiteral( "debug" ) : QStringLiteral( "regular" ) ) << "mode";
|
||||||
|
s_instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings::Settings( const QString& settingsFilePath, bool debugMode )
|
Settings::Settings( const QString& settingsFilePath, bool debugMode )
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
namespace CalamaresUtils
|
namespace CalamaresUtils
|
||||||
{
|
{
|
||||||
namespace Network
|
namespace Network
|
||||||
@ -27,7 +29,7 @@ namespace Network
|
|||||||
void
|
void
|
||||||
RequestOptions::applyToRequest( QNetworkRequest* request ) const
|
RequestOptions::applyToRequest( QNetworkRequest* request ) const
|
||||||
{
|
{
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
|
#if QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 )
|
||||||
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::FollowRedirectsAttribute;
|
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::FollowRedirectsAttribute;
|
||||||
#else
|
#else
|
||||||
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::RedirectPolicyAttribute;
|
constexpr const auto RedirectPolicyAttribute = QNetworkRequest::RedirectPolicyAttribute;
|
||||||
@ -60,8 +62,9 @@ public slots:
|
|||||||
void cleanupNam();
|
void cleanupNam();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QUrl m_hasInternetUrl;
|
QVector< QUrl > m_hasInternetUrls;
|
||||||
bool m_hasInternet;
|
bool m_hasInternet = false;
|
||||||
|
int m_lastCheckedUrlIndex = -1;
|
||||||
|
|
||||||
Private();
|
Private();
|
||||||
|
|
||||||
@ -155,14 +158,47 @@ Manager::hasInternet()
|
|||||||
bool
|
bool
|
||||||
Manager::checkHasInternet()
|
Manager::checkHasInternet()
|
||||||
{
|
{
|
||||||
|
if ( d->m_hasInternetUrls.empty() )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// It's possible that access was switched off (see below, if the check
|
||||||
|
// fails) so we want to turn it back on first. Otherwise all the
|
||||||
|
// checks will fail **anyway**, defeating the point of the checks.
|
||||||
|
#if ( QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 ) )
|
||||||
|
if ( !d->m_hasInternet )
|
||||||
|
{
|
||||||
|
d->nam()->setNetworkAccessible( QNetworkAccessManager::Accessible );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if ( d->m_lastCheckedUrlIndex < 0 )
|
||||||
|
{
|
||||||
|
d->m_lastCheckedUrlIndex = 0;
|
||||||
|
}
|
||||||
|
int attempts = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
// Start by pinging the same one as last time
|
||||||
|
d->m_hasInternet = synchronousPing( d->m_hasInternetUrls.at( d->m_lastCheckedUrlIndex ) );
|
||||||
|
// if it's not responding, **then** move on to the next one,
|
||||||
|
// and wrap around if needed
|
||||||
|
if ( !d->m_hasInternet )
|
||||||
|
{
|
||||||
|
if ( ++( d->m_lastCheckedUrlIndex ) >= d->m_hasInternetUrls.size() )
|
||||||
|
{
|
||||||
|
d->m_lastCheckedUrlIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// keep track of how often we've tried, because there's no point in
|
||||||
|
// going around more than once.
|
||||||
|
attempts++;
|
||||||
|
} while ( !d->m_hasInternet && ( attempts < d->m_hasInternetUrls.size() ) );
|
||||||
|
|
||||||
d->m_hasInternet = synchronousPing( d->m_hasInternetUrl );
|
|
||||||
|
|
||||||
// For earlier Qt versions (< 5.15.0), set the accessibility flag to
|
// For earlier Qt versions (< 5.15.0), set the accessibility flag to
|
||||||
// NotAccessible if synchronous ping has failed, so that any module
|
// NotAccessible if synchronous ping has failed, so that any module
|
||||||
// using Qt's networkAccessible method to determine whether or not
|
// using Qt's networkAccessible method to determine whether or not
|
||||||
// internet connection is actually avaialable won't get confused over
|
// internet connection is actually available won't get confused.
|
||||||
// virtualization technologies.
|
|
||||||
#if ( QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 ) )
|
#if ( QT_VERSION < QT_VERSION_CHECK( 5, 15, 0 ) )
|
||||||
if ( !d->m_hasInternet )
|
if ( !d->m_hasInternet )
|
||||||
{
|
{
|
||||||
@ -177,7 +213,40 @@ Manager::checkHasInternet()
|
|||||||
void
|
void
|
||||||
Manager::setCheckHasInternetUrl( const QUrl& url )
|
Manager::setCheckHasInternetUrl( const QUrl& url )
|
||||||
{
|
{
|
||||||
d->m_hasInternetUrl = url;
|
d->m_lastCheckedUrlIndex = -1;
|
||||||
|
d->m_hasInternetUrls.clear();
|
||||||
|
if ( url.isValid() )
|
||||||
|
{
|
||||||
|
d->m_hasInternetUrls.append( url );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Manager::setCheckHasInternetUrl( const QVector< QUrl >& urls )
|
||||||
|
{
|
||||||
|
d->m_lastCheckedUrlIndex = -1;
|
||||||
|
d->m_hasInternetUrls = urls;
|
||||||
|
auto it = std::remove_if(
|
||||||
|
d->m_hasInternetUrls.begin(), d->m_hasInternetUrls.end(), []( const QUrl& u ) { return !u.isValid(); } );
|
||||||
|
if ( it != d->m_hasInternetUrls.end() )
|
||||||
|
{
|
||||||
|
d->m_hasInternetUrls.erase( it, d->m_hasInternetUrls.end() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Manager::addCheckHasInternetUrl( const QUrl& url )
|
||||||
|
{
|
||||||
|
if ( url.isValid() )
|
||||||
|
{
|
||||||
|
d->m_hasInternetUrls.append( url );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector< QUrl >
|
||||||
|
Manager::getCheckInternetUrls() const
|
||||||
|
{
|
||||||
|
return d->m_hasInternetUrls;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief Does a request asynchronously, returns the (pending) reply
|
/** @brief Does a request asynchronously, returns the (pending) reply
|
||||||
@ -200,6 +269,7 @@ asynchronousRun( QNetworkAccessManager* nam, const QUrl& url, const RequestOptio
|
|||||||
// Bail out early if the request is bad
|
// Bail out early if the request is bad
|
||||||
if ( reply->error() )
|
if ( reply->error() )
|
||||||
{
|
{
|
||||||
|
cWarning() << "Early reply error" << reply->error() << reply->errorString();
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
#include <QVector>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -89,6 +90,7 @@ class DLLEXPORT Manager : public QObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY( bool hasInternet READ hasInternet NOTIFY hasInternetChanged FINAL )
|
Q_PROPERTY( bool hasInternet READ hasInternet NOTIFY hasInternetChanged FINAL )
|
||||||
|
Q_PROPERTY( QVector< QUrl > checkInternetUrls READ getCheckInternetUrls WRITE setCheckHasInternetUrl )
|
||||||
|
|
||||||
Manager();
|
Manager();
|
||||||
|
|
||||||
@ -122,6 +124,15 @@ public:
|
|||||||
/// @brief Set the URL which is used for the general "is there internet" check.
|
/// @brief Set the URL which is used for the general "is there internet" check.
|
||||||
void setCheckHasInternetUrl( const QUrl& url );
|
void setCheckHasInternetUrl( const QUrl& url );
|
||||||
|
|
||||||
|
/// @brief Adds an (extra) URL to check
|
||||||
|
void addCheckHasInternetUrl( const QUrl& url );
|
||||||
|
|
||||||
|
/// @brief Set a collection of URLs used for the general "is there internet" check.
|
||||||
|
void setCheckHasInternetUrl( const QVector< QUrl >& urls );
|
||||||
|
|
||||||
|
/// @brief What URLs are used to check for internet connectivity?
|
||||||
|
QVector< QUrl > getCheckInternetUrls() const;
|
||||||
|
|
||||||
/** @brief Do a network request asynchronously.
|
/** @brief Do a network request asynchronously.
|
||||||
*
|
*
|
||||||
* Returns a pointer to the reply-from-the-request.
|
* Returns a pointer to the reply-from-the-request.
|
||||||
|
@ -30,6 +30,7 @@ NetworkTests::testInstance()
|
|||||||
{
|
{
|
||||||
auto& nam = CalamaresUtils::Network::Manager::instance();
|
auto& nam = CalamaresUtils::Network::Manager::instance();
|
||||||
QVERIFY( !nam.hasInternet() );
|
QVERIFY( !nam.hasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -60,3 +61,87 @@ NetworkTests::testPing()
|
|||||||
QVERIFY( canPing_www_kde_org );
|
QVERIFY( canPing_www_kde_org );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkTests::testCheckUrl()
|
||||||
|
{
|
||||||
|
using namespace CalamaresUtils::Network;
|
||||||
|
Logger::setupLogLevel( Logger::LOGVERBOSE );
|
||||||
|
auto& nam = Manager::instance();
|
||||||
|
|
||||||
|
{
|
||||||
|
QUrl u( "http://example.com" );
|
||||||
|
QVERIFY( u.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( u );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 ); // Valid URL
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u( "http://nonexistent.example.com" );
|
||||||
|
QVERIFY( u.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( u );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 ); // Valid URL even if it doesn't resolve
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u;
|
||||||
|
QVERIFY( !u.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( u );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 0 ); // Invalid URL tried
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkTests::testCheckMultiUrl()
|
||||||
|
{
|
||||||
|
using namespace CalamaresUtils::Network;
|
||||||
|
Logger::setupLogLevel( Logger::LOGVERBOSE );
|
||||||
|
auto& nam = Manager::instance();
|
||||||
|
|
||||||
|
{
|
||||||
|
QUrl u0( "http://example.com" );
|
||||||
|
QUrl u1( "https://kde.org" );
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u0, u1 } );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 );
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u0( "http://nonexistent.example.com" );
|
||||||
|
QUrl u1( "http://bogus.example.com" );
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u0, u1 } );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 ); // Both are valid URLs
|
||||||
|
nam.addCheckHasInternetUrl( QUrl( "http://example.com" ) );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 3 );
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u0( "http://nonexistent.example.com" );
|
||||||
|
QUrl u1;
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( !u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u0, u1 } );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QVERIFY( !nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 ); // Only valid URL added
|
||||||
|
nam.addCheckHasInternetUrl( QUrl( "http://example.com" ) );
|
||||||
|
QVERIFY( nam.checkHasInternet() );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 );
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QUrl u0( "http://nonexistent.example.com" );
|
||||||
|
QUrl u1;
|
||||||
|
QVERIFY( u0.isValid() );
|
||||||
|
QVERIFY( !u1.isValid() );
|
||||||
|
nam.setCheckHasInternetUrl( { u1, u1, u1, u1 } );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 0 );
|
||||||
|
nam.setCheckHasInternetUrl( { u1, u1, u0, u1 } );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -24,6 +24,9 @@ private Q_SLOTS:
|
|||||||
|
|
||||||
void testInstance();
|
void testInstance();
|
||||||
void testPing();
|
void testPing();
|
||||||
|
|
||||||
|
void testCheckUrl();
|
||||||
|
void testCheckMultiUrl();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -92,7 +92,7 @@ struct TemporaryMount::Private
|
|||||||
|
|
||||||
|
|
||||||
TemporaryMount::TemporaryMount( const QString& devicePath, const QString& filesystemName, const QString& options )
|
TemporaryMount::TemporaryMount( const QString& devicePath, const QString& filesystemName, const QString& options )
|
||||||
: m_d( new Private )
|
: m_d( std::make_unique<Private>() )
|
||||||
{
|
{
|
||||||
m_d->m_devicePath = devicePath;
|
m_d->m_devicePath = devicePath;
|
||||||
m_d->m_mountDir.setAutoRemove( false );
|
m_d->m_mountDir.setAutoRemove( false );
|
||||||
@ -100,8 +100,7 @@ TemporaryMount::TemporaryMount( const QString& devicePath, const QString& filesy
|
|||||||
if ( r )
|
if ( r )
|
||||||
{
|
{
|
||||||
cWarning() << "Mount of" << devicePath << "on" << m_d->m_mountDir.path() << "failed, code" << r;
|
cWarning() << "Mount of" << devicePath << "on" << m_d->m_mountDir.path() << "failed, code" << r;
|
||||||
delete m_d;
|
m_d.reset();
|
||||||
m_d = nullptr;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,8 +114,6 @@ TemporaryMount::~TemporaryMount()
|
|||||||
cWarning() << "UnMount of temporary" << m_d->m_devicePath << "on" << m_d->m_mountDir.path()
|
cWarning() << "UnMount of temporary" << m_d->m_devicePath << "on" << m_d->m_mountDir.path()
|
||||||
<< "failed, code" << r;
|
<< "failed, code" << r;
|
||||||
}
|
}
|
||||||
delete m_d;
|
|
||||||
m_d = nullptr;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
namespace CalamaresUtils
|
namespace CalamaresUtils
|
||||||
{
|
{
|
||||||
namespace Partition
|
namespace Partition
|
||||||
@ -58,12 +60,12 @@ public:
|
|||||||
TemporaryMount& operator=( const TemporaryMount& ) = delete;
|
TemporaryMount& operator=( const TemporaryMount& ) = delete;
|
||||||
~TemporaryMount();
|
~TemporaryMount();
|
||||||
|
|
||||||
bool isValid() const { return m_d; }
|
bool isValid() const { return bool( m_d ); }
|
||||||
QString path() const;
|
QString path() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct Private;
|
struct Private;
|
||||||
Private* m_d = nullptr;
|
std::unique_ptr< Private > m_d;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Partition
|
} // namespace Partition
|
||||||
|
@ -102,7 +102,7 @@ System::instance()
|
|||||||
if ( !s_instance )
|
if ( !s_instance )
|
||||||
{
|
{
|
||||||
cError() << "No Calamares system-object has been created.";
|
cError() << "No Calamares system-object has been created.";
|
||||||
cError() << Logger::SubEntry << "using a bogus instance instead.";
|
cDebug() << Logger::SubEntry << "using a bogus instance instead.";
|
||||||
return new System( true, nullptr );
|
return new System( true, nullptr );
|
||||||
}
|
}
|
||||||
return s_instance;
|
return s_instance;
|
||||||
|
@ -34,7 +34,7 @@ DLLEXPORT QString getString( const QVariantMap& map, const QString& key, const Q
|
|||||||
|
|
||||||
/** @brief Get a string list from a mapping with a given key; returns @p d if no value.
|
/** @brief Get a string list from a mapping with a given key; returns @p d if no value.
|
||||||
*
|
*
|
||||||
* This is slightly more lenient that getString(), and a single-string value will
|
* This is slightly more lenient than getString(), and a single-string value will
|
||||||
* be returned as a 1-item list.
|
* be returned as a 1-item list.
|
||||||
*/
|
*/
|
||||||
DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key, const QStringList& d = QStringList() );
|
DLLEXPORT QStringList getStringList( const QVariantMap& map, const QString& key, const QStringList& d = QStringList() );
|
||||||
|
@ -49,6 +49,10 @@ Branding* Branding::s_instance = nullptr;
|
|||||||
Branding*
|
Branding*
|
||||||
Branding::instance()
|
Branding::instance()
|
||||||
{
|
{
|
||||||
|
if ( !s_instance )
|
||||||
|
{
|
||||||
|
cWarning() << "No Branding instance created yet.";
|
||||||
|
}
|
||||||
return s_instance;
|
return s_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,6 +133,12 @@ def create_systemd_boot_conf(install_path, efi_dir, uuid, entry, entry_name, ker
|
|||||||
"root=/dev/mapper/"
|
"root=/dev/mapper/"
|
||||||
+ partition["luksMapperName"]]
|
+ partition["luksMapperName"]]
|
||||||
|
|
||||||
|
# systemd-boot with a BTRFS root filesystem needs to be told
|
||||||
|
# about the root subvolume.
|
||||||
|
for partition in partitions:
|
||||||
|
if partition["mountPoint"] == "/" and partition["fs"] == "btrfs":
|
||||||
|
kernel_params.append("rootflags=subvol=@")
|
||||||
|
|
||||||
if cryptdevice_params:
|
if cryptdevice_params:
|
||||||
kernel_params.extend(cryptdevice_params)
|
kernel_params.extend(cryptdevice_params)
|
||||||
else:
|
else:
|
||||||
|
@ -244,9 +244,9 @@ class FstabGenerator(object):
|
|||||||
if extra:
|
if extra:
|
||||||
options += "," + extra
|
options += "," + extra
|
||||||
|
|
||||||
if mount_point == "/":
|
if mount_point == "/" and filesystem != "btrfs":
|
||||||
check = 1
|
check = 1
|
||||||
elif mount_point and mount_point != "swap":
|
elif mount_point and mount_point != "swap" and filesystem != "btrfs":
|
||||||
check = 2
|
check = 2
|
||||||
else:
|
else:
|
||||||
check = 0
|
check = 0
|
||||||
|
@ -467,12 +467,12 @@ Config::guessLocaleKeyboardLayout()
|
|||||||
{ "ar_TN", arabic },
|
{ "ar_TN", arabic },
|
||||||
{ "ar_YE", arabic },
|
{ "ar_YE", arabic },
|
||||||
{ "ca_ES", "cat_ES" }, /* Catalan */
|
{ "ca_ES", "cat_ES" }, /* Catalan */
|
||||||
{ "as_ES", "ast_ES" }, /* Asturian */
|
|
||||||
{ "en_CA", "us" }, /* Canadian English */
|
{ "en_CA", "us" }, /* Canadian English */
|
||||||
{ "el_CY", "gr" }, /* Greek in Cyprus */
|
{ "el_CY", "gr" }, /* Greek in Cyprus */
|
||||||
{ "el_GR", "gr" }, /* Greek in Greeze */
|
{ "el_GR", "gr" }, /* Greek in Greece */
|
||||||
{ "ig_NG", "igbo_NG" }, /* Igbo in Nigeria */
|
{ "ig_NG", "igbo_NG" }, /* Igbo in Nigeria */
|
||||||
{ "ha_NG", "hausa_NG" } /* Hausa */
|
{ "ha_NG", "hausa_NG" }, /* Hausa */
|
||||||
|
{ "en_IN", "eng_in" }, /* India, English with Rupee */
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Try to preselect a layout, depending on language and locale
|
// Try to preselect a layout, depending on language and locale
|
||||||
@ -508,14 +508,7 @@ Config::guessLocaleKeyboardLayout()
|
|||||||
}
|
}
|
||||||
if ( !lang.isEmpty() )
|
if ( !lang.isEmpty() )
|
||||||
{
|
{
|
||||||
const auto langParts = lang.split( '_', SplitSkipEmptyParts );
|
guessLayout( lang.split( '_', SplitSkipEmptyParts ), m_keyboardLayoutsModel, m_keyboardVariantsModel );
|
||||||
|
|
||||||
// Note that this his string is not fit for display purposes!
|
|
||||||
// It doesn't come from QLocale::nativeCountryName.
|
|
||||||
QString country = QLocale::countryToString( QLocale( lang ).country() );
|
|
||||||
cDebug() << Logger::SubEntry << "extracted country" << country << "::" << langParts;
|
|
||||||
|
|
||||||
guessLayout( langParts, m_keyboardLayoutsModel, m_keyboardVariantsModel );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,10 +124,7 @@ KeyBoardPreview::loadCodes()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList param;
|
QStringList param { "-model", "pc106", "-layout", layout, "-compact" };
|
||||||
param << "-model"
|
|
||||||
<< "pc106"
|
|
||||||
<< "-layout" << layout << "-compact";
|
|
||||||
if ( !variant.isEmpty() )
|
if ( !variant.isEmpty() )
|
||||||
{
|
{
|
||||||
param << "-variant" << variant;
|
param << "-variant" << variant;
|
||||||
@ -140,13 +137,18 @@ KeyBoardPreview::loadCodes()
|
|||||||
process.start( "ckbcomp", param );
|
process.start( "ckbcomp", param );
|
||||||
if ( !process.waitForStarted() )
|
if ( !process.waitForStarted() )
|
||||||
{
|
{
|
||||||
cWarning() << "ckbcomp not found , keyboard preview disabled";
|
static bool need_warning = true;
|
||||||
|
if ( need_warning )
|
||||||
|
{
|
||||||
|
cWarning() << "ckbcomp not found , keyboard preview disabled";
|
||||||
|
need_warning = false;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !process.waitForFinished() )
|
if ( !process.waitForFinished() )
|
||||||
{
|
{
|
||||||
cWarning() << "ckbcomp failed, keyboard preview disabled";
|
cWarning() << "ckbcomp failed, keyboard preview skipped for" << layout << variant;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* === This file is part of Calamares - <https://calamares.io> ===
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
*
|
*
|
||||||
* SPDX-FileCopyrightText: 2020 Anke Boersma <demm@kaosx.us>
|
* SPDX-FileCopyrightText: 2020 - 2021 Anke Boersma <demm@kaosx.us>
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*
|
*
|
||||||
* Calamares is Free Software: see the License-Identifier above.
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
@ -16,19 +16,23 @@ import QtQuick.Layouts 1.3
|
|||||||
import org.kde.kirigami 2.7 as Kirigami
|
import org.kde.kirigami 2.7 as Kirigami
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
readonly property color backgroundColor: Kirigami.Theme.backgroundColor //"#F5F5F5"
|
||||||
|
readonly property color headerBackgroundColor: Kirigami.Theme.alternateBackgroundColor //"#d3d3d3"
|
||||||
|
readonly property color backgroundLighterColor: "#ffffff"
|
||||||
|
readonly property color highlightColor: Kirigami.Theme.highlightColor //"#3498DB"
|
||||||
|
readonly property color textColor: Kirigami.Theme.textColor
|
||||||
|
readonly property color highlightedTextColor: Kirigami.Theme.highlightedTextColor
|
||||||
|
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: parent.height
|
height: parent.height
|
||||||
focus: true
|
focus: true
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: textArea
|
id: textArea
|
||||||
x: 28
|
x: 28
|
||||||
y: 14
|
y: 14
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
Kirigami.Theme.backgroundColor: Kirigami.Theme.backgroundColor
|
color: backgroundColor
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
id: languages
|
id: languages
|
||||||
@ -38,7 +42,7 @@ Item {
|
|||||||
Rectangle {
|
Rectangle {
|
||||||
width: 250
|
width: 250
|
||||||
height: 140
|
height: 140
|
||||||
color: "#d3d3d3"
|
color: headerBackgroundColor
|
||||||
Text {
|
Text {
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
width: 240
|
width: 240
|
||||||
@ -57,30 +61,43 @@ Item {
|
|||||||
id: scroll1
|
id: scroll1
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
contentHeight: 800
|
contentHeight: 800
|
||||||
clip: true
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
id: list1
|
id: list1
|
||||||
focus: true
|
focus: true
|
||||||
|
clip: true
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
model: config.supportedLocales
|
model: config.supportedLocales
|
||||||
|
|
||||||
currentIndex: -1
|
currentIndex: -1 //model.currentLanguageCodeIndex
|
||||||
highlight: Rectangle {
|
delegate: ItemDelegate {
|
||||||
color: Kirigami.Theme.highlightColor
|
|
||||||
}
|
|
||||||
delegate: Text {
|
|
||||||
text: modelData
|
|
||||||
|
|
||||||
MouseArea {
|
hoverEnabled: true
|
||||||
hoverEnabled: true
|
width: parent.width
|
||||||
anchors.fill: parent
|
implicitHeight: 18
|
||||||
cursorShape: Qt.PointingHandCursor
|
highlighted: ListView.isCurrentItem
|
||||||
onEntered: {
|
Label {
|
||||||
color: "#0000ff"
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
width: parent.width
|
||||||
|
height: 18
|
||||||
|
color: highlighted ? highlightedTextColor : textColor
|
||||||
|
text: modelData
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? highlightColor : backgroundLighterColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.9
|
||||||
}
|
}
|
||||||
onClicked: {
|
|
||||||
list1.currentIndex = index
|
MouseArea {
|
||||||
|
hoverEnabled: true
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: {
|
||||||
|
list1.currentIndex = index
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -98,7 +115,7 @@ Item {
|
|||||||
Rectangle {
|
Rectangle {
|
||||||
width: 250
|
width: 250
|
||||||
height: 140
|
height: 140
|
||||||
color: "#d3d3d3"
|
color: headerBackgroundColor
|
||||||
Text {
|
Text {
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
width: 240
|
width: 240
|
||||||
@ -117,28 +134,42 @@ Item {
|
|||||||
id: scroll2
|
id: scroll2
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
contentHeight: 800
|
contentHeight: 800
|
||||||
clip: true
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
id: list2
|
id: list2
|
||||||
width: 180; height: 200
|
|
||||||
focus: true
|
focus: true
|
||||||
|
clip: true
|
||||||
|
|
||||||
model: config.supportedLocales
|
model: config.supportedLocales
|
||||||
|
|
||||||
currentIndex: -1
|
currentIndex: -1 //model.currentLCCodeIndex
|
||||||
highlight: Rectangle {
|
delegate: ItemDelegate {
|
||||||
color: Kirigami.Theme.highlightColor
|
|
||||||
}
|
|
||||||
delegate: Text {
|
|
||||||
text: modelData
|
|
||||||
|
|
||||||
MouseArea {
|
hoverEnabled: true
|
||||||
hoverEnabled: true
|
width: parent.width
|
||||||
anchors.fill: parent
|
implicitHeight: 18
|
||||||
cursorShape: Qt.PointingHandCursor
|
highlighted: ListView.isCurrentItem
|
||||||
onClicked: {
|
Label {
|
||||||
list2.currentIndex = index
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
width: parent.width
|
||||||
|
height: 18
|
||||||
|
color: highlighted ? highlightedTextColor : textColor
|
||||||
|
text: modelData
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? highlightColor : backgroundLighterColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.9
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
hoverEnabled: true
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: {
|
||||||
|
list2.currentIndex = index
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||||
# SPDX-FileCopyrightText: 2017 Alf Gaida <agaida@siduction.org>
|
# SPDX-FileCopyrightText: 2017 Alf Gaida <agaida@siduction.org>
|
||||||
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2021 Anke boersma <demm@koasx.us>
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
# Calamares is Free Software: see the License-Identifier above.
|
# Calamares is Free Software: see the License-Identifier above.
|
||||||
@ -33,6 +34,8 @@ def run():
|
|||||||
Setup network configuration
|
Setup network configuration
|
||||||
"""
|
"""
|
||||||
root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
|
root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
|
||||||
|
user = libcalamares.globalstorage.value("username")
|
||||||
|
live_user = os.getlogin()
|
||||||
|
|
||||||
if root_mount_point is None:
|
if root_mount_point is None:
|
||||||
libcalamares.utils.warning("rootMountPoint is empty, {!s}".format(root_mount_point))
|
libcalamares.utils.warning("rootMountPoint is empty, {!s}".format(root_mount_point))
|
||||||
@ -60,6 +63,16 @@ def run():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
shutil.copy(source_network, target_network, follow_symlinks=False)
|
shutil.copy(source_network, target_network, follow_symlinks=False)
|
||||||
|
if live_user in open(target_network).read():
|
||||||
|
text = []
|
||||||
|
with open(target_network, "r") as network_conf:
|
||||||
|
text = network_conf.readlines()
|
||||||
|
with open(target_network, "w") as network_conf:
|
||||||
|
for line in text:
|
||||||
|
if 'permissions=user:{}:;'.format(live_user) in line:
|
||||||
|
line = 'permissions=user:{}:;\n'.format(user)
|
||||||
|
network_conf.write(line)
|
||||||
|
network_conf.close()
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
libcalamares.utils.debug(
|
libcalamares.utils.debug(
|
||||||
"Can't copy network configuration files in "
|
"Can't copy network configuration files in "
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* === This file is part of Calamares - <https://calamares.io> ===
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
*
|
*
|
||||||
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*
|
*
|
||||||
* Calamares is Free Software: see the License-Identifier above.
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
@ -94,14 +95,24 @@ Config::introductionPackage() const
|
|||||||
return *defaultIntroduction;
|
return *defaultIntroduction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline QString
|
||||||
|
make_gs_key( const Calamares::ModuleSystem::InstanceKey& key )
|
||||||
|
{
|
||||||
|
return QStringLiteral( "packagechooser_" ) + key.id();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Config::updateGlobalStorage( const QStringList& selected ) const
|
Config::updateGlobalStorage( const QStringList& selected ) const
|
||||||
{
|
{
|
||||||
|
if ( m_packageChoice.has_value() )
|
||||||
|
{
|
||||||
|
cWarning() << "Inconsistent package choices -- both model and single-selection QML";
|
||||||
|
}
|
||||||
if ( m_method == PackageChooserMethod::Legacy )
|
if ( m_method == PackageChooserMethod::Legacy )
|
||||||
{
|
{
|
||||||
QString value = selected.join( ',' );
|
QString value = selected.join( ',' );
|
||||||
Calamares::JobQueue::instance()->globalStorage()->insert( m_id, value );
|
Calamares::JobQueue::instance()->globalStorage()->insert( make_gs_key( m_defaultId ), value );
|
||||||
cDebug() << m_id<< "selected" << value;
|
cDebug() << m_defaultId << "selected" << value;
|
||||||
}
|
}
|
||||||
else if ( m_method == PackageChooserMethod::Packages )
|
else if ( m_method == PackageChooserMethod::Packages )
|
||||||
{
|
{
|
||||||
@ -116,6 +127,55 @@ Config::updateGlobalStorage( const QStringList& selected ) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Config::updateGlobalStorage() const
|
||||||
|
{
|
||||||
|
if ( m_model->packageCount() > 0 )
|
||||||
|
{
|
||||||
|
cWarning() << "Inconsistent package choices -- both model and single-selection QML";
|
||||||
|
}
|
||||||
|
if ( m_method == PackageChooserMethod::Legacy )
|
||||||
|
{
|
||||||
|
auto* gs = Calamares::JobQueue::instance()->globalStorage();
|
||||||
|
if ( m_packageChoice.has_value() )
|
||||||
|
{
|
||||||
|
gs->insert( make_gs_key( m_defaultId ), m_packageChoice.value() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gs->remove( make_gs_key( m_defaultId ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( m_method == PackageChooserMethod::Packages )
|
||||||
|
{
|
||||||
|
cWarning() << "Unsupported single-selection packagechooser method 'Packages'";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "Unknown packagechooser method" << smash( m_method );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Config::setPackageChoice( const QString& packageChoice )
|
||||||
|
{
|
||||||
|
if ( packageChoice.isEmpty() )
|
||||||
|
{
|
||||||
|
m_packageChoice.reset();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_packageChoice = packageChoice;
|
||||||
|
}
|
||||||
|
emit packageChoiceChanged( m_packageChoice.value_or( QString() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
Config::prettyStatus() const
|
||||||
|
{
|
||||||
|
return tr( "Install option: <strong>%1</strong>" ).arg( m_packageChoice.value_or( tr( "None" ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fillModel( PackageListModel* model, const QVariantList& items )
|
fillModel( PackageListModel* model, const QVariantList& items )
|
||||||
@ -186,46 +246,35 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
|
|
||||||
if ( m_method == PackageChooserMethod::Legacy )
|
if ( m_method == PackageChooserMethod::Legacy )
|
||||||
{
|
{
|
||||||
const QString configId = CalamaresUtils::getString( configurationMap, "id" );
|
cDebug() << "Using module ID" << m_defaultId;
|
||||||
const QString base = QStringLiteral( "packagechooser_" );
|
|
||||||
if ( configId.isEmpty() )
|
|
||||||
{
|
|
||||||
if ( m_defaultId.id().isEmpty() )
|
|
||||||
{
|
|
||||||
// We got nothing to work with
|
|
||||||
m_id = base;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_id = base + m_defaultId.id();
|
|
||||||
}
|
|
||||||
cDebug() << "Using default ID" << m_id << "from" << m_defaultId.toString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_id = base + configId;
|
|
||||||
cDebug() << "Using configured ID" << m_id;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( configurationMap.contains( "items" ) )
|
if ( configurationMap.contains( "items" ) )
|
||||||
{
|
{
|
||||||
fillModel( m_model, configurationMap.value( "items" ).toList() );
|
fillModel( m_model, configurationMap.value( "items" ).toList() );
|
||||||
}
|
|
||||||
|
|
||||||
QString default_item_id = CalamaresUtils::getString( configurationMap, "default" );
|
QString default_item_id = CalamaresUtils::getString( configurationMap, "default" );
|
||||||
if ( !default_item_id.isEmpty() )
|
if ( !default_item_id.isEmpty() )
|
||||||
{
|
|
||||||
for ( int item_n = 0; item_n < m_model->packageCount(); ++item_n )
|
|
||||||
{
|
{
|
||||||
QModelIndex item_idx = m_model->index( item_n, 0 );
|
for ( int item_n = 0; item_n < m_model->packageCount(); ++item_n )
|
||||||
QVariant item_id = m_model->data( item_idx, PackageListModel::IdRole );
|
|
||||||
|
|
||||||
if ( item_id.toString() == default_item_id )
|
|
||||||
{
|
{
|
||||||
m_defaultModelIndex = item_idx;
|
QModelIndex item_idx = m_model->index( item_n, 0 );
|
||||||
break;
|
QVariant item_id = m_model->data( item_idx, PackageListModel::IdRole );
|
||||||
|
|
||||||
|
if ( item_id.toString() == default_item_id )
|
||||||
|
{
|
||||||
|
m_defaultModelIndex = item_idx;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setPackageChoice( CalamaresUtils::getString( configurationMap, "packageChoice" ) );
|
||||||
|
if ( m_method != PackageChooserMethod::Legacy )
|
||||||
|
{
|
||||||
|
cWarning() << "Single-selection QML module must use 'Legacy' method.";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* === This file is part of Calamares - <https://calamares.io> ===
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
*
|
*
|
||||||
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*
|
*
|
||||||
* Calamares is Free Software: see the License-Identifier above.
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
@ -16,6 +17,7 @@
|
|||||||
#include "modulesystem/InstanceKey.h"
|
#include "modulesystem/InstanceKey.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
enum class PackageChooserMode
|
enum class PackageChooserMode
|
||||||
{
|
{
|
||||||
@ -39,6 +41,18 @@ class Config : public Calamares::ModuleSystem::Config
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
/** @brief This is the single-select package-choice
|
||||||
|
*
|
||||||
|
* For (QML) modules that support only a single selection and
|
||||||
|
* just want to do things in a straightforward pick-this-one
|
||||||
|
* way, the packageChoice property is a (the) way to go.
|
||||||
|
*
|
||||||
|
* Writing to this property means that any other form of package-
|
||||||
|
* choice or selection is ignored.
|
||||||
|
*/
|
||||||
|
Q_PROPERTY( QString packageChoice READ packageChoice WRITE setPackageChoice NOTIFY packageChoiceChanged )
|
||||||
|
Q_PROPERTY( QString prettyStatus READ prettyStatus NOTIFY prettyStatusChanged FINAL )
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Config( QObject* parent = nullptr );
|
Config( QObject* parent = nullptr );
|
||||||
~Config() override;
|
~Config() override;
|
||||||
@ -71,8 +85,22 @@ public:
|
|||||||
* (and only) the packages in @p selected as selected.
|
* (and only) the packages in @p selected as selected.
|
||||||
*/
|
*/
|
||||||
void updateGlobalStorage( const QStringList& selected ) const;
|
void updateGlobalStorage( const QStringList& selected ) const;
|
||||||
/// As updateGlobalStorage() with an empty selection list
|
/** @brief Write selection to global storage
|
||||||
void fillGSSecondaryConfiguration() const { updateGlobalStorage( QStringList() ); }
|
*
|
||||||
|
* Updates the GS keys for this packagechooser, marking **only**
|
||||||
|
* the package choice as selected. This assumes that the single-
|
||||||
|
* selection QML code is in use.
|
||||||
|
*/
|
||||||
|
void updateGlobalStorage() const;
|
||||||
|
|
||||||
|
QString packageChoice() const { return m_packageChoice.value_or( QString() ); }
|
||||||
|
void setPackageChoice( const QString& packageChoice );
|
||||||
|
|
||||||
|
QString prettyStatus() const;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void packageChoiceChanged( QString packageChoice );
|
||||||
|
void prettyStatusChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PackageListModel* m_model = nullptr;
|
PackageListModel* m_model = nullptr;
|
||||||
@ -82,10 +110,14 @@ private:
|
|||||||
PackageChooserMode m_mode = PackageChooserMode::Optional;
|
PackageChooserMode m_mode = PackageChooserMode::Optional;
|
||||||
/// How this module stores to GS
|
/// How this module stores to GS
|
||||||
PackageChooserMethod m_method = PackageChooserMethod::Legacy;
|
PackageChooserMethod m_method = PackageChooserMethod::Legacy;
|
||||||
/// Id (used to identify settings from this module in GS)
|
|
||||||
QString m_id;
|
|
||||||
/// Value to use for id if none is set in the config file
|
/// Value to use for id if none is set in the config file
|
||||||
Calamares::ModuleSystem::InstanceKey m_defaultId;
|
Calamares::ModuleSystem::InstanceKey m_defaultId;
|
||||||
|
/** @brief QML selection (for single-selection approaches)
|
||||||
|
*
|
||||||
|
* If there is no value, then there has been no selection.
|
||||||
|
* Reading the property will return an empty QString.
|
||||||
|
*/
|
||||||
|
std::optional< QString > m_packageChoice;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,11 +15,10 @@ mode: required
|
|||||||
#
|
#
|
||||||
# - "legacy" or "custom" or "contextualprocess"
|
# - "legacy" or "custom" or "contextualprocess"
|
||||||
# When set to "legacy", writes a GlobalStorage value for the choice that
|
# When set to "legacy", writes a GlobalStorage value for the choice that
|
||||||
# has been made. The key is *packagechooser_<id>*. Normally, the module's
|
# has been made. The key is *packagechooser_<id>*. The module's
|
||||||
# instance name is used; see the *instances* section of `settings.conf`.
|
# instance name is used; see the *instances* section of `settings.conf`.
|
||||||
# If there is just one packagechooser module, and no special instance is set,
|
# If there is just one packagechooser module, and no special instance is set,
|
||||||
# resulting GS key is probably *packagechooser@packagechooser*.
|
# resulting GS key is probably *packagechooser_packagechooser*.
|
||||||
# You can set *id* to change that, but it is not recommended.
|
|
||||||
#
|
#
|
||||||
# The GS value is a comma-separated list of the IDs of the selected
|
# The GS value is a comma-separated list of the IDs of the selected
|
||||||
# packages, or an empty string if none is selected.
|
# packages, or an empty string if none is selected.
|
||||||
@ -33,15 +32,12 @@ mode: required
|
|||||||
# consumption by the *packages* module (which should appear later
|
# consumption by the *packages* module (which should appear later
|
||||||
# in the `exec` section. These package settings will then be handed
|
# in the `exec` section. These package settings will then be handed
|
||||||
# off to whatever package manager is configured there.
|
# off to whatever package manager is configured there.
|
||||||
# The *id* key is not used.
|
|
||||||
#
|
#
|
||||||
# There is no need to put this module in the `exec` section. There
|
# There is no need to put this module in the `exec` section. There
|
||||||
# are no jobs that this module provides. You should put **other**
|
# are no jobs that this module provides. You should put **other**
|
||||||
# modules, either *contextualprocess* or *packages* or some custom
|
# modules, either *contextualprocess* or *packages* or some custom
|
||||||
# module, in the `exec` section to do the actual work.
|
# module, in the `exec` section to do the actual work.
|
||||||
method: legacy
|
method: legacy
|
||||||
# The *id* key is used only in "legacy" mode
|
|
||||||
# id: ""
|
|
||||||
|
|
||||||
|
|
||||||
# Human-visible strings in this module. These are all optional.
|
# Human-visible strings in this module. These are all optional.
|
||||||
@ -51,13 +47,13 @@ method: legacy
|
|||||||
# Each key can have a [locale] added to it, which is used as
|
# Each key can have a [locale] added to it, which is used as
|
||||||
# the translated string for that locale. For the strings
|
# the translated string for that locale. For the strings
|
||||||
# associated with the "no-selection" item, see *items*, below
|
# associated with the "no-selection" item, see *items*, below
|
||||||
# with the explicit id "".
|
# with the explicit item-*id* "".
|
||||||
#
|
#
|
||||||
labels:
|
labels:
|
||||||
step: "Office Suite"
|
step: "Office Suite"
|
||||||
step[de]: "Office-Paket"
|
step[de]: "Office-Paket"
|
||||||
|
|
||||||
# (Optional) 'id' of pre-selected list-view item.
|
# (Optional) item-*id* of pre-selected list-view item.
|
||||||
# Pre-selects one of the items below.
|
# Pre-selects one of the items below.
|
||||||
# default: kde
|
# default: kde
|
||||||
|
|
||||||
|
69
src/modules/packagechooserq/CMakeLists.txt
Normal file
69
src/modules/packagechooserq/CMakeLists.txt
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
# SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
if( NOT WITH_QML )
|
||||||
|
calamares_skip_module( "packagechooserq (QML is not supported in this build)" )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core )
|
||||||
|
|
||||||
|
# Add optional libraries here
|
||||||
|
set( USER_EXTRA_LIB )
|
||||||
|
|
||||||
|
# include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../packagechooser )
|
||||||
|
set( _packagechooser ${CMAKE_CURRENT_SOURCE_DIR}/../packagechooser )
|
||||||
|
include_directories( ${_packagechooser} )
|
||||||
|
|
||||||
|
### OPTIONAL AppData XML support in PackageModel
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# TODO:3.3:WITH->BUILD (this doesn't affect the ABI offered by Calamares)
|
||||||
|
option( WITH_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON )
|
||||||
|
if ( WITH_APPDATA )
|
||||||
|
find_package(Qt5 COMPONENTS Xml)
|
||||||
|
if ( Qt5Xml_FOUND )
|
||||||
|
add_definitions( -DHAVE_APPDATA )
|
||||||
|
list( APPEND _extra_libraries Qt5::Xml )
|
||||||
|
list( APPEND _extra_src ${_packagechooser}/ItemAppData.cpp )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
### OPTIONAL AppStream support in PackageModel
|
||||||
|
#
|
||||||
|
#
|
||||||
|
option( WITH_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON )
|
||||||
|
if ( WITH_APPSTREAM )
|
||||||
|
find_package(AppStreamQt)
|
||||||
|
set_package_properties(
|
||||||
|
AppStreamQt PROPERTIES
|
||||||
|
DESCRIPTION "Support for AppStream (cache) data"
|
||||||
|
URL "https://github.com/ximion/appstream"
|
||||||
|
PURPOSE "AppStream provides package data"
|
||||||
|
TYPE OPTIONAL
|
||||||
|
)
|
||||||
|
if ( AppStreamQt_FOUND )
|
||||||
|
add_definitions( -DHAVE_APPSTREAM )
|
||||||
|
list( APPEND _extra_libraries AppStreamQt )
|
||||||
|
list( APPEND _extra_src ${_packagechooser}/ItemAppStream.cpp )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
calamares_add_plugin( packagechooserq
|
||||||
|
TYPE viewmodule
|
||||||
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
|
SOURCES
|
||||||
|
PackageChooserQmlViewStep.cpp
|
||||||
|
${_packagechooser}/Config.cpp
|
||||||
|
${_packagechooser}/PackageModel.cpp
|
||||||
|
${_extra_src}
|
||||||
|
RESOURCES
|
||||||
|
packagechooserq.qrc
|
||||||
|
LINK_PRIVATE_LIBRARIES
|
||||||
|
calamaresui
|
||||||
|
${_extra_libraries}
|
||||||
|
SHARED_LIB
|
||||||
|
)
|
86
src/modules/packagechooserq/PackageChooserQmlViewStep.cpp
Normal file
86
src/modules/packagechooserq/PackageChooserQmlViewStep.cpp
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PackageChooserQmlViewStep.h"
|
||||||
|
|
||||||
|
#include "GlobalStorage.h"
|
||||||
|
#include "JobQueue.h"
|
||||||
|
#include "locale/TranslatableConfiguration.h"
|
||||||
|
#include "utils/CalamaresUtilsSystem.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
|
CALAMARES_PLUGIN_FACTORY_DEFINITION( PackageChooserQmlViewStepFactory, registerPlugin< PackageChooserQmlViewStep >(); )
|
||||||
|
|
||||||
|
PackageChooserQmlViewStep::PackageChooserQmlViewStep( QObject* parent )
|
||||||
|
: Calamares::QmlViewStep( parent )
|
||||||
|
, m_config( new Config( this ) )
|
||||||
|
{
|
||||||
|
emit nextStatusChanged( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
PackageChooserQmlViewStep::prettyName() const
|
||||||
|
{
|
||||||
|
return tr( "Packages" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
PackageChooserQmlViewStep::prettyStatus() const
|
||||||
|
{
|
||||||
|
//QString option = m_pkgc;
|
||||||
|
//return tr( "Install option: %1" ).arg( option );
|
||||||
|
return m_config->prettyStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PackageChooserQmlViewStep::isNextEnabled() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PackageChooserQmlViewStep::isBackEnabled() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PackageChooserQmlViewStep::isAtBeginning() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PackageChooserQmlViewStep::isAtEnd() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Calamares::JobList
|
||||||
|
PackageChooserQmlViewStep::jobs() const
|
||||||
|
{
|
||||||
|
Calamares::JobList l;
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PackageChooserQmlViewStep::onLeave()
|
||||||
|
{
|
||||||
|
m_config->updateGlobalStorage();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PackageChooserQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
|
{
|
||||||
|
m_config->setDefaultId( moduleInstanceKey() );
|
||||||
|
m_config->setConfigurationMap( configurationMap );
|
||||||
|
Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last
|
||||||
|
}
|
58
src/modules/packagechooserq/PackageChooserQmlViewStep.h
Normal file
58
src/modules/packagechooserq/PackageChooserQmlViewStep.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PACKAGECHOOSERQMLVIEWSTEP_H
|
||||||
|
#define PACKAGECHOOSERQMLVIEWSTEP_H
|
||||||
|
|
||||||
|
// Config from packagechooser module
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
|
#include "DllMacro.h"
|
||||||
|
#include "locale/TranslatableConfiguration.h"
|
||||||
|
#include "utils/PluginFactory.h"
|
||||||
|
#include "viewpages/QmlViewStep.h"
|
||||||
|
|
||||||
|
#include <QVariantMap>
|
||||||
|
|
||||||
|
class Config;
|
||||||
|
class PackageChooserPage;
|
||||||
|
|
||||||
|
class PLUGINDLLEXPORT PackageChooserQmlViewStep : public Calamares::QmlViewStep
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit PackageChooserQmlViewStep( QObject* parent = nullptr );
|
||||||
|
|
||||||
|
QString prettyName() const override;
|
||||||
|
QString prettyStatus() const override;
|
||||||
|
|
||||||
|
bool isNextEnabled() const override;
|
||||||
|
bool isBackEnabled() const override;
|
||||||
|
|
||||||
|
bool isAtBeginning() const override;
|
||||||
|
bool isAtEnd() const override;
|
||||||
|
|
||||||
|
//void onActivate() override;
|
||||||
|
void onLeave() override;
|
||||||
|
|
||||||
|
Calamares::JobList jobs() const override;
|
||||||
|
|
||||||
|
void setConfigurationMap( const QVariantMap& configurationMap ) override;
|
||||||
|
|
||||||
|
QObject* getConfig() override { return m_config; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
Config* m_config;
|
||||||
|
};
|
||||||
|
|
||||||
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( PackageChooserQmlViewStepFactory )
|
||||||
|
|
||||||
|
#endif // PACKAGECHOOSERQMLVIEWSTEP_H
|
BIN
src/modules/packagechooserq/images/libreoffice.jpg
Normal file
BIN
src/modules/packagechooserq/images/libreoffice.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 47 KiB |
@ -0,0 +1,2 @@
|
|||||||
|
SPDX-FileCopyrightText: 2020 demmm <anke62@gmail.com>
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
BIN
src/modules/packagechooserq/images/no-selection.png
Normal file
BIN
src/modules/packagechooserq/images/no-selection.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 184 KiB |
@ -0,0 +1,2 @@
|
|||||||
|
SPDX-FileCopyrightText: 2020 demmm <anke62@gmail.com>
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
BIN
src/modules/packagechooserq/images/plasma.png
Normal file
BIN
src/modules/packagechooserq/images/plasma.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
2
src/modules/packagechooserq/images/plasma.png.license
Normal file
2
src/modules/packagechooserq/images/plasma.png.license
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SPDX-FileCopyrightText: 2021 pngegg <https://www.pngegg.com/>
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
53
src/modules/packagechooserq/packagechooserq.conf
Normal file
53
src/modules/packagechooserq/packagechooserq.conf
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Configuration for the low-density software chooser, QML implementation
|
||||||
|
#
|
||||||
|
# The example QML implementation uses single-selection, rather than
|
||||||
|
# a model for the available packages. That makes it simpler: the
|
||||||
|
# QML itself codes the available options, descriptions and images
|
||||||
|
# -- after all, this is **low density** selection, so a custom UI
|
||||||
|
# can make sense for the few choices that need to be made.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
---
|
||||||
|
# Software installation method:
|
||||||
|
#
|
||||||
|
# - "legacy" or "custom" or "contextualprocess"
|
||||||
|
# When set to "legacy", writes a GlobalStorage value for the choice that
|
||||||
|
# has been made. The key is *packagechooser_<id>*. The module's
|
||||||
|
# instance name is used; see the *instances* section of `settings.conf`.
|
||||||
|
# If there is just one packagechooserq module, and no special instance is set,
|
||||||
|
# resulting GS key is probably *packagechooser_packagechooserq*.
|
||||||
|
# (Do note that the prefix of the GS key remains "packagechooser_")
|
||||||
|
#
|
||||||
|
# The GS value is a comma-separated list of the IDs of the selected
|
||||||
|
# packages, or an empty string if none is selected.
|
||||||
|
#
|
||||||
|
# With "legacy" installation, you should have a contextualprocess or similar
|
||||||
|
# module somewhere in the `exec` phase to process the GlobalStorage key
|
||||||
|
# and actually **do** something for the packages.
|
||||||
|
#
|
||||||
|
# - "packages"
|
||||||
|
# When set to "packages", writes GlobalStorage values suitable for
|
||||||
|
# consumption by the *packages* module (which should appear later
|
||||||
|
# in the `exec` section. These package settings will then be handed
|
||||||
|
# off to whatever package manager is configured there.
|
||||||
|
#
|
||||||
|
# There is no need to put this module in the `exec` section. There
|
||||||
|
# are no jobs that this module provides. You should put **other**
|
||||||
|
# modules, either *contextualprocess* or *packages* or some custom
|
||||||
|
# module, in the `exec` section to do the actual work.
|
||||||
|
#
|
||||||
|
method: legacy
|
||||||
|
|
||||||
|
# The *packageChoice* value is used for setting the default selection
|
||||||
|
# in the QML view; this should match one of the keys used in the QML
|
||||||
|
# module for package names.
|
||||||
|
#
|
||||||
|
# (e.g. the sample QML uses "no_office_suite", "minimal_install" and
|
||||||
|
# "libreoffice" as possible choices).
|
||||||
|
#
|
||||||
|
packageChoice: libreoffice
|
||||||
|
|
241
src/modules/packagechooserq/packagechooserq.qml
Normal file
241
src/modules/packagechooserq/packagechooserq.qml
Normal file
@ -0,0 +1,241 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#f2f2f2"
|
||||||
|
|
||||||
|
ButtonGroup {
|
||||||
|
id: switchGroup
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: column
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: 5
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
//id: rectangle
|
||||||
|
width: 700
|
||||||
|
height: 150
|
||||||
|
color: "#ffffff"
|
||||||
|
radius: 10
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
width: 450
|
||||||
|
height: 104
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("LibreOffice is a powerful and free office suite, used by millions of people around the world. It includes several applications that make it the most versatile Free and Open Source office suite on the market.<br/>
|
||||||
|
Default option.")
|
||||||
|
font.pointSize: 10
|
||||||
|
anchors.verticalCenterOffset: -10
|
||||||
|
anchors.horizontalCenterOffset: 100
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
|
||||||
|
Switch {
|
||||||
|
id: element2
|
||||||
|
x: 500
|
||||||
|
y: 110
|
||||||
|
width: 187
|
||||||
|
height: 14
|
||||||
|
text: qsTr("LibreOffice")
|
||||||
|
checked: true
|
||||||
|
hoverEnabled: true
|
||||||
|
ButtonGroup.group: switchGroup
|
||||||
|
|
||||||
|
indicator: Rectangle {
|
||||||
|
implicitWidth: 40
|
||||||
|
implicitHeight: 14
|
||||||
|
radius: 10
|
||||||
|
color: element2.checked ? "#3498db" : "#B9B9B9"
|
||||||
|
border.color: element2.checked ? "#3498db" : "#cccccc"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
x: element2.checked ? parent.width - width : 0
|
||||||
|
y: (parent.height - height) / 2
|
||||||
|
width: 20
|
||||||
|
height: 20
|
||||||
|
radius: 10
|
||||||
|
color: element2.down ? "#cccccc" : "#ffffff"
|
||||||
|
border.color: element2.checked ? (element1.down ? "#3498db" : "#3498db") : "#999999"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
if ( checked ) {
|
||||||
|
config.packageChoice = "libreoffice"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image2
|
||||||
|
x: 8
|
||||||
|
y: 25
|
||||||
|
height: 100
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "images/libreoffice.jpg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 700
|
||||||
|
height: 150
|
||||||
|
radius: 10
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
width: 450
|
||||||
|
height: 104
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("If you don't want to install an office suite, just select No Office Suite. You can always add one (or more) later on your installed system as the need arrives.")
|
||||||
|
font.pointSize: 10
|
||||||
|
anchors.verticalCenterOffset: -10
|
||||||
|
anchors.horizontalCenterOffset: 100
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
|
||||||
|
Switch {
|
||||||
|
id: element1
|
||||||
|
x: 500
|
||||||
|
y: 110
|
||||||
|
width: 187
|
||||||
|
height: 14
|
||||||
|
text: qsTr("No Office Suite")
|
||||||
|
checked: false
|
||||||
|
hoverEnabled: true
|
||||||
|
ButtonGroup.group: switchGroup
|
||||||
|
|
||||||
|
indicator: Rectangle {
|
||||||
|
implicitWidth: 40
|
||||||
|
implicitHeight: 14
|
||||||
|
radius: 10
|
||||||
|
color: element1.checked ? "#3498db" : "#B9B9B9"
|
||||||
|
border.color: element1.checked ? "#3498db" : "#cccccc"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
x: element1.checked ? parent.width - width : 0
|
||||||
|
y: (parent.height - height) / 2
|
||||||
|
width: 20
|
||||||
|
height: 20
|
||||||
|
radius: 10
|
||||||
|
color: element1.down ? "#cccccc" : "#ffffff"
|
||||||
|
border.color: element1.checked ? (element1.down ? "#3498db" : "#3498db") : "#999999"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
if ( checked ) {
|
||||||
|
config.packageChoice = "no_office_suite"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
x: 8
|
||||||
|
y: 25
|
||||||
|
height: 100
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "images/no-selection.png"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 700
|
||||||
|
height: 150
|
||||||
|
color: "#ffffff"
|
||||||
|
radius: 10
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
width: 450
|
||||||
|
height: 104
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("Create a minimal Desktop install, remove all extra applications and decide later on what you would like to add to your system. Examples of what won't be on such an install, there will be no Office Suite, no media players, no image viewer or print support. It will be just a desktop, file browser, package manager, text editor and simple web-browser.")
|
||||||
|
font.pointSize: 10
|
||||||
|
anchors.verticalCenterOffset: -10
|
||||||
|
anchors.horizontalCenterOffset: 100
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
|
||||||
|
Switch {
|
||||||
|
id: element3
|
||||||
|
x: 500
|
||||||
|
y: 110
|
||||||
|
width: 187
|
||||||
|
height: 14
|
||||||
|
text: qsTr("Minimal Install")
|
||||||
|
checked: false
|
||||||
|
hoverEnabled: true
|
||||||
|
ButtonGroup.group: switchGroup
|
||||||
|
|
||||||
|
indicator: Rectangle {
|
||||||
|
implicitWidth: 40
|
||||||
|
implicitHeight: 14
|
||||||
|
radius: 10
|
||||||
|
color: element3.checked ? "#3498db" : "#B9B9B9"
|
||||||
|
border.color: element3.checked ? "#3498db" : "#cccccc"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
x: element3.checked ? parent.width - width : 0
|
||||||
|
y: (parent.height - height) / 2
|
||||||
|
width: 20
|
||||||
|
height: 20
|
||||||
|
radius: 10
|
||||||
|
color: element3.down ? "#cccccc" : "#ffffff"
|
||||||
|
border.color: element3.checked ? (element3.down ? "#3498db" : "#3498db") : "#999999"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
if ( checked ) {
|
||||||
|
config.packageChoice = "minimal_install"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image3
|
||||||
|
x: 8
|
||||||
|
y: 25
|
||||||
|
height: 100
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "images/plasma.png"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 700
|
||||||
|
height: 25
|
||||||
|
color: "#f2f2f2"
|
||||||
|
border.width: 0
|
||||||
|
Text {
|
||||||
|
height: 25
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("Please select an option for your install, or use the default: LibreOffice included.")
|
||||||
|
font.pointSize: 10
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
8
src/modules/packagechooserq/packagechooserq.qrc
Normal file
8
src/modules/packagechooserq/packagechooserq.qrc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file>packagechooserq.qml</file>
|
||||||
|
<file>images/libreoffice.jpg</file>
|
||||||
|
<file>images/no-selection.png</file>
|
||||||
|
<file>images/plasma.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -227,7 +227,8 @@ fillGSConfigurationEFI( Calamares::GlobalStorage* gs, const QVariantMap& configu
|
|||||||
QString firmwareType( PartUtils::isEfiSystem() ? QStringLiteral( "efi" ) : QStringLiteral( "bios" ) );
|
QString firmwareType( PartUtils::isEfiSystem() ? QStringLiteral( "efi" ) : QStringLiteral( "bios" ) );
|
||||||
gs->insert( "firmwareType", firmwareType );
|
gs->insert( "firmwareType", firmwareType );
|
||||||
|
|
||||||
gs->insert( "efiSystemPartition", CalamaresUtils::getString( configurationMap, "efiSystemPartition", QStringLiteral( "/boot/efi" ) ) );
|
gs->insert( "efiSystemPartition",
|
||||||
|
CalamaresUtils::getString( configurationMap, "efiSystemPartition", QStringLiteral( "/boot/efi" ) ) );
|
||||||
|
|
||||||
// Read and parse key efiSystemPartitionSize
|
// Read and parse key efiSystemPartitionSize
|
||||||
if ( configurationMap.contains( "efiSystemPartitionSize" ) )
|
if ( configurationMap.contains( "efiSystemPartitionSize" ) )
|
||||||
@ -243,7 +244,7 @@ fillGSConfigurationEFI( Calamares::GlobalStorage* gs, const QVariantMap& configu
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Config::fillConfigurationFSTypes(const QVariantMap& configurationMap)
|
Config::fillConfigurationFSTypes( const QVariantMap& configurationMap )
|
||||||
{
|
{
|
||||||
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
|
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
|
||||||
|
|
||||||
@ -256,15 +257,16 @@ Config::fillConfigurationFSTypes(const QVariantMap& configurationMap)
|
|||||||
if ( fsName.isEmpty() )
|
if ( fsName.isEmpty() )
|
||||||
{
|
{
|
||||||
cWarning() << "Partition-module setting *defaultFileSystemType* is missing, will use ext4";
|
cWarning() << "Partition-module setting *defaultFileSystemType* is missing, will use ext4";
|
||||||
fsRealName = PartUtils::canonicalFilesystemName( QStringLiteral("ext4"), &fsType );
|
fsRealName = PartUtils::canonicalFilesystemName( QStringLiteral( "ext4" ), &fsType );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fsRealName = PartUtils::canonicalFilesystemName( fsName, &fsType );
|
fsRealName = PartUtils::canonicalFilesystemName( fsName, &fsType );
|
||||||
if ( fsType == FileSystem::Type::Unknown )
|
if ( fsType == FileSystem::Type::Unknown )
|
||||||
{
|
{
|
||||||
cWarning() << "Partition-module setting *defaultFileSystemType* is bad (" << fsName << ") using ext4 instead";
|
cWarning() << "Partition-module setting *defaultFileSystemType* is bad (" << fsName
|
||||||
fsRealName = PartUtils::canonicalFilesystemName( QStringLiteral("ext4"), &fsType );
|
<< ") using ext4 instead";
|
||||||
|
fsRealName = PartUtils::canonicalFilesystemName( QStringLiteral( "ext4" ), &fsType );
|
||||||
}
|
}
|
||||||
else if ( fsRealName != fsName )
|
else if ( fsRealName != fsName )
|
||||||
{
|
{
|
||||||
@ -326,7 +328,7 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
m_requiredPartitionTableType = CalamaresUtils::getStringList( configurationMap, "requiredPartitionTableType" );
|
m_requiredPartitionTableType = CalamaresUtils::getStringList( configurationMap, "requiredPartitionTableType" );
|
||||||
gs->insert( "requiredPartitionTableType", m_requiredPartitionTableType );
|
gs->insert( "requiredPartitionTableType", m_requiredPartitionTableType );
|
||||||
|
|
||||||
fillGSConfigurationEFI(gs, configurationMap);
|
fillGSConfigurationEFI( gs, configurationMap );
|
||||||
fillConfigurationFSTypes( configurationMap );
|
fillConfigurationFSTypes( configurationMap );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@ class Config : public QObject
|
|||||||
Q_PROPERTY( SwapChoice swapChoice READ swapChoice WRITE setSwapChoice NOTIFY swapChoiceChanged )
|
Q_PROPERTY( SwapChoice swapChoice READ swapChoice WRITE setSwapChoice NOTIFY swapChoiceChanged )
|
||||||
|
|
||||||
///@brief Name of the FS that will be used when erasing type disk (e.g. "default filesystem")
|
///@brief Name of the FS that will be used when erasing type disk (e.g. "default filesystem")
|
||||||
Q_PROPERTY( QString eraseModeFilesystem READ eraseFsType WRITE setEraseFsTypeChoice NOTIFY eraseModeFilesystemChanged )
|
Q_PROPERTY(
|
||||||
|
QString eraseModeFilesystem READ eraseFsType WRITE setEraseFsTypeChoice NOTIFY eraseModeFilesystemChanged )
|
||||||
|
|
||||||
Q_PROPERTY( bool allowManualPartitioning READ allowManualPartitioning CONSTANT FINAL )
|
Q_PROPERTY( bool allowManualPartitioning READ allowManualPartitioning CONSTANT FINAL )
|
||||||
|
|
||||||
@ -134,7 +135,7 @@ public Q_SLOTS:
|
|||||||
void setInstallChoice( InstallChoice );
|
void setInstallChoice( InstallChoice );
|
||||||
void setSwapChoice( int ); ///< Translates a button ID or so to SwapChoice
|
void setSwapChoice( int ); ///< Translates a button ID or so to SwapChoice
|
||||||
void setSwapChoice( SwapChoice );
|
void setSwapChoice( SwapChoice );
|
||||||
void setEraseFsTypeChoice( const QString& filesystemName ); ///< See property eraseModeFilesystem
|
void setEraseFsTypeChoice( const QString& filesystemName ); ///< See property eraseModeFilesystem
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void installChoiceChanged( InstallChoice );
|
void installChoiceChanged( InstallChoice );
|
||||||
|
@ -109,13 +109,142 @@ PartitionViewStep::prettyName() const
|
|||||||
return tr( "Partitions" );
|
return tr( "Partitions" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @brief Gather the pretty descriptions of all the partitioning jobs
|
||||||
QWidget*
|
*
|
||||||
PartitionViewStep::widget()
|
* Returns a QStringList of each job's pretty description, including
|
||||||
|
* empty strings and duplicates. The list is in-order of how the
|
||||||
|
* jobs will be run.
|
||||||
|
*/
|
||||||
|
static QStringList
|
||||||
|
jobDescriptions( const Calamares::JobList& jobs )
|
||||||
{
|
{
|
||||||
return m_widget;
|
QStringList jobsLines;
|
||||||
|
for ( const Calamares::job_ptr& job : qAsConst( jobs ) )
|
||||||
|
{
|
||||||
|
if ( !job->prettyDescription().isEmpty() )
|
||||||
|
{
|
||||||
|
jobsLines.append( job->prettyDescription() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return jobsLines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @brief A top-level description of what @p choice does
|
||||||
|
*
|
||||||
|
* Returns a (branded) string describing what @p choice will do.
|
||||||
|
*/
|
||||||
|
static QString
|
||||||
|
modeDescription( Config::InstallChoice choice )
|
||||||
|
{
|
||||||
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
static const char context[] = "PartitionViewStep";
|
||||||
|
|
||||||
|
switch ( choice )
|
||||||
|
{
|
||||||
|
case Config::InstallChoice::Alongside:
|
||||||
|
return QCoreApplication::translate( context, "Install %1 <strong>alongside</strong> another operating system." )
|
||||||
|
.arg( branding->shortVersionedName() );
|
||||||
|
break;
|
||||||
|
case Config::InstallChoice::Erase:
|
||||||
|
return QCoreApplication::translate( context, "<strong>Erase</strong> disk and install %1." )
|
||||||
|
.arg( branding->shortVersionedName() );
|
||||||
|
break;
|
||||||
|
case Config::InstallChoice::Replace:
|
||||||
|
return QCoreApplication::translate( context, "<strong>Replace</strong> a partition with %1." )
|
||||||
|
.arg( branding->shortVersionedName() );
|
||||||
|
break;
|
||||||
|
case Config::InstallChoice::NoChoice:
|
||||||
|
case Config::InstallChoice::Manual:
|
||||||
|
return QCoreApplication::translate( context, "<strong>Manual</strong> partitioning." );
|
||||||
|
}
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief A top-level description of what @p choice does to disk @p info
|
||||||
|
*
|
||||||
|
* Returns a (branded, and device-specific) string describing what
|
||||||
|
* will be done to device @p info when @p choice is made. The @p listLength
|
||||||
|
* is used to provide context; when more than one disk is in use, the description
|
||||||
|
* works differently.
|
||||||
|
*/
|
||||||
|
static QString
|
||||||
|
diskDescription( int listLength, const PartitionCoreModule::SummaryInfo& info, Config::InstallChoice choice )
|
||||||
|
{
|
||||||
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
static const char context[] = "PartitionViewStep";
|
||||||
|
|
||||||
|
if ( listLength == 1 ) // this is the only disk preview
|
||||||
|
{
|
||||||
|
switch ( choice )
|
||||||
|
{
|
||||||
|
case Config::Alongside:
|
||||||
|
return QCoreApplication::translate(
|
||||||
|
context,
|
||||||
|
"Install %1 <strong>alongside</strong> another operating system on disk "
|
||||||
|
"<strong>%2</strong> (%3)." )
|
||||||
|
.arg( branding->shortVersionedName() )
|
||||||
|
.arg( info.deviceNode )
|
||||||
|
.arg( info.deviceName );
|
||||||
|
break;
|
||||||
|
case Config::Erase:
|
||||||
|
return QCoreApplication::translate( context,
|
||||||
|
"<strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1." )
|
||||||
|
.arg( branding->shortVersionedName() )
|
||||||
|
.arg( info.deviceNode )
|
||||||
|
.arg( info.deviceName );
|
||||||
|
break;
|
||||||
|
case Config::Replace:
|
||||||
|
return QCoreApplication::translate(
|
||||||
|
context, "<strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1." )
|
||||||
|
.arg( branding->shortVersionedName() )
|
||||||
|
.arg( info.deviceNode )
|
||||||
|
.arg( info.deviceName );
|
||||||
|
break;
|
||||||
|
case Config::NoChoice:
|
||||||
|
case Config::Manual:
|
||||||
|
return QCoreApplication::translate(
|
||||||
|
context, "<strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2)." )
|
||||||
|
.arg( info.deviceNode )
|
||||||
|
.arg( info.deviceName );
|
||||||
|
}
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
else // multiple disk previews!
|
||||||
|
{
|
||||||
|
return QCoreApplication::translate( context, "Disk <strong>%1</strong> (%2)" )
|
||||||
|
.arg( info.deviceNode )
|
||||||
|
.arg( info.deviceName );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
PartitionViewStep::prettyStatus() const
|
||||||
|
{
|
||||||
|
QString jobsLabel, modeText, diskInfoLabel;
|
||||||
|
|
||||||
|
const Config::InstallChoice choice = m_config->installChoice();
|
||||||
|
const QList< PartitionCoreModule::SummaryInfo > list = m_core->createSummaryInfo();
|
||||||
|
|
||||||
|
cDebug() << "Summary for Partition" << list.length() << choice;
|
||||||
|
if ( list.length() > 1 ) // There are changes on more than one disk
|
||||||
|
{
|
||||||
|
modeText = modeDescription( choice );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( const auto& info : list )
|
||||||
|
{
|
||||||
|
// TODO: this overwrites each iteration
|
||||||
|
diskInfoLabel = diskDescription( list.length(), info, choice );
|
||||||
|
}
|
||||||
|
|
||||||
|
const QStringList jobsLines = jobDescriptions( jobs() );
|
||||||
|
if ( !jobsLines.isEmpty() )
|
||||||
|
{
|
||||||
|
jobsLabel = jobsLines.join( "<br/>" );
|
||||||
|
}
|
||||||
|
|
||||||
|
return diskInfoLabel + "<br/>" + jobsLabel;
|
||||||
|
}
|
||||||
|
|
||||||
QWidget*
|
QWidget*
|
||||||
PartitionViewStep::createSummaryWidget() const
|
PartitionViewStep::createSummaryWidget() const
|
||||||
@ -132,73 +261,19 @@ PartitionViewStep::createSummaryWidget() const
|
|||||||
formLayout->setContentsMargins( MARGIN, 0, MARGIN, MARGIN );
|
formLayout->setContentsMargins( MARGIN, 0, MARGIN, MARGIN );
|
||||||
mainLayout->addLayout( formLayout );
|
mainLayout->addLayout( formLayout );
|
||||||
|
|
||||||
const auto* branding = Calamares::Branding::instance();
|
const QList< PartitionCoreModule::SummaryInfo > list = m_core->createSummaryInfo();
|
||||||
QList< PartitionCoreModule::SummaryInfo > list = m_core->createSummaryInfo();
|
|
||||||
if ( list.length() > 1 ) // There are changes on more than one disk
|
if ( list.length() > 1 ) // There are changes on more than one disk
|
||||||
{
|
{
|
||||||
//NOTE: all of this should only happen when Manual partitioning is active.
|
//NOTE: all of this should only happen when Manual partitioning is active.
|
||||||
// Any other choice should result in a list.length() == 1.
|
// Any other choice should result in a list.length() == 1.
|
||||||
QLabel* modeLabel = new QLabel;
|
QLabel* modeLabel = new QLabel;
|
||||||
formLayout->addRow( modeLabel );
|
formLayout->addRow( modeLabel );
|
||||||
QString modeText;
|
modeLabel->setText( modeDescription( choice ) );
|
||||||
switch ( choice )
|
|
||||||
{
|
|
||||||
case Config::InstallChoice::Alongside:
|
|
||||||
modeText = tr( "Install %1 <strong>alongside</strong> another operating system." )
|
|
||||||
.arg( branding->shortVersionedName() );
|
|
||||||
break;
|
|
||||||
case Config::InstallChoice::Erase:
|
|
||||||
modeText = tr( "<strong>Erase</strong> disk and install %1." ).arg( branding->shortVersionedName() );
|
|
||||||
break;
|
|
||||||
case Config::InstallChoice::Replace:
|
|
||||||
modeText = tr( "<strong>Replace</strong> a partition with %1." ).arg( branding->shortVersionedName() );
|
|
||||||
break;
|
|
||||||
case Config::InstallChoice::NoChoice:
|
|
||||||
case Config::InstallChoice::Manual:
|
|
||||||
modeText = tr( "<strong>Manual</strong> partitioning." );
|
|
||||||
}
|
|
||||||
modeLabel->setText( modeText );
|
|
||||||
}
|
}
|
||||||
for ( const auto& info : list )
|
for ( const auto& info : list )
|
||||||
{
|
{
|
||||||
QLabel* diskInfoLabel = new QLabel;
|
QLabel* diskInfoLabel = new QLabel;
|
||||||
if ( list.length() == 1 ) // this is the only disk preview
|
diskInfoLabel->setText( diskDescription( list.length(), info, choice ) );
|
||||||
{
|
|
||||||
QString modeText;
|
|
||||||
switch ( choice )
|
|
||||||
{
|
|
||||||
case Config::InstallChoice::Alongside:
|
|
||||||
modeText = tr( "Install %1 <strong>alongside</strong> another operating system on disk "
|
|
||||||
"<strong>%2</strong> (%3)." )
|
|
||||||
.arg( branding->shortVersionedName() )
|
|
||||||
.arg( info.deviceNode )
|
|
||||||
.arg( info.deviceName );
|
|
||||||
break;
|
|
||||||
case Config::InstallChoice::Erase:
|
|
||||||
modeText = tr( "<strong>Erase</strong> disk <strong>%2</strong> (%3) and install %1." )
|
|
||||||
.arg( branding->shortVersionedName() )
|
|
||||||
.arg( info.deviceNode )
|
|
||||||
.arg( info.deviceName );
|
|
||||||
break;
|
|
||||||
case Config::InstallChoice::Replace:
|
|
||||||
modeText = tr( "<strong>Replace</strong> a partition on disk <strong>%2</strong> (%3) with %1." )
|
|
||||||
.arg( branding->shortVersionedName() )
|
|
||||||
.arg( info.deviceNode )
|
|
||||||
.arg( info.deviceName );
|
|
||||||
break;
|
|
||||||
case Config::InstallChoice::NoChoice:
|
|
||||||
case Config::InstallChoice::Manual:
|
|
||||||
modeText = tr( "<strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2)." )
|
|
||||||
.arg( info.deviceNode )
|
|
||||||
.arg( info.deviceName );
|
|
||||||
}
|
|
||||||
diskInfoLabel->setText( modeText );
|
|
||||||
}
|
|
||||||
else // multiple disk previews!
|
|
||||||
{
|
|
||||||
diskInfoLabel->setText(
|
|
||||||
tr( "Disk <strong>%1</strong> (%2)" ).arg( info.deviceNode ).arg( info.deviceName ) );
|
|
||||||
}
|
|
||||||
formLayout->addRow( diskInfoLabel );
|
formLayout->addRow( diskInfoLabel );
|
||||||
|
|
||||||
PartitionBarsView* preview;
|
PartitionBarsView* preview;
|
||||||
@ -243,14 +318,7 @@ PartitionViewStep::createSummaryWidget() const
|
|||||||
field->addWidget( previewLabels );
|
field->addWidget( previewLabels );
|
||||||
formLayout->addRow( tr( "After:" ), field );
|
formLayout->addRow( tr( "After:" ), field );
|
||||||
}
|
}
|
||||||
QStringList jobsLines;
|
const QStringList jobsLines = jobDescriptions( jobs() );
|
||||||
foreach ( const Calamares::job_ptr& job, jobs() )
|
|
||||||
{
|
|
||||||
if ( !job->prettyDescription().isEmpty() )
|
|
||||||
{
|
|
||||||
jobsLines.append( job->prettyDescription() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( !jobsLines.isEmpty() )
|
if ( !jobsLines.isEmpty() )
|
||||||
{
|
{
|
||||||
QLabel* jobsLabel = new QLabel( widget );
|
QLabel* jobsLabel = new QLabel( widget );
|
||||||
@ -265,6 +333,11 @@ PartitionViewStep::createSummaryWidget() const
|
|||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWidget*
|
||||||
|
PartitionViewStep::widget()
|
||||||
|
{
|
||||||
|
return m_widget;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PartitionViewStep::next()
|
PartitionViewStep::next()
|
||||||
@ -434,50 +507,66 @@ PartitionViewStep::onLeave()
|
|||||||
{
|
{
|
||||||
const QString espMountPoint
|
const QString espMountPoint
|
||||||
= Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString();
|
= Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString();
|
||||||
const QString espFlagName = PartitionTable::flagName(
|
|
||||||
#ifdef WITH_KPMCORE4API
|
#ifdef WITH_KPMCORE4API
|
||||||
PartitionTable::Flag::Boot
|
const auto espFlag = PartitionTable::Flag::Boot;
|
||||||
#else
|
#else
|
||||||
PartitionTable::FlagEsp
|
const auto espFlag = PartitionTable::FlagEsp;
|
||||||
#endif
|
#endif
|
||||||
);
|
|
||||||
Partition* esp = m_core->findPartitionByMountPoint( espMountPoint );
|
Partition* esp = m_core->findPartitionByMountPoint( espMountPoint );
|
||||||
|
|
||||||
QString message;
|
QString message;
|
||||||
QString description;
|
QString description;
|
||||||
if ( !esp || ( esp && !PartUtils::isEfiFilesystemSuitable( esp ) ) )
|
|
||||||
|
Logger::Once o;
|
||||||
|
|
||||||
|
const bool okType = esp && PartUtils::isEfiFilesystemSuitableType( esp );
|
||||||
|
const bool okSize = esp && PartUtils::isEfiFilesystemSuitableSize( esp );
|
||||||
|
const bool okFlag = esp && PartUtils::isEfiBootable( esp );
|
||||||
|
|
||||||
|
if ( !esp )
|
||||||
{
|
{
|
||||||
message = tr( "No EFI system partition configured" );
|
message = tr( "No EFI system partition configured" );
|
||||||
description = tr( "An EFI system partition is necessary to start %1."
|
|
||||||
"<br/><br/>"
|
|
||||||
"To configure an EFI system partition, go back and "
|
|
||||||
"select or create a FAT32 filesystem with the "
|
|
||||||
"<strong>%3</strong> flag enabled and mount point "
|
|
||||||
"<strong>%2</strong>.<br/><br/>"
|
|
||||||
"You can continue without setting up an EFI system "
|
|
||||||
"partition but your system may fail to start." )
|
|
||||||
.arg( branding->shortProductName() )
|
|
||||||
.arg( espMountPoint, espFlagName );
|
|
||||||
}
|
}
|
||||||
else if ( esp && !PartUtils::isEfiBootable( esp ) )
|
else if ( !(okType && okSize && okFlag ) )
|
||||||
{
|
{
|
||||||
message = tr( "EFI system partition flag not set" );
|
message = tr( "EFI system partition configured incorrectly" );
|
||||||
description = tr( "An EFI system partition is necessary to start %1."
|
|
||||||
"<br/><br/>"
|
|
||||||
"A partition was configured with mount point "
|
|
||||||
"<strong>%2</strong> but its <strong>%3</strong> "
|
|
||||||
"flag is not set.<br/>"
|
|
||||||
"To set the flag, go back and edit the partition."
|
|
||||||
"<br/><br/>"
|
|
||||||
"You can continue without setting the flag but your "
|
|
||||||
"system may fail to start." )
|
|
||||||
.arg( branding->shortProductName() )
|
|
||||||
.arg( espMountPoint, espFlagName );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !esp || !(okType&&okSize &&okFlag)) {
|
||||||
|
description = tr( "An EFI system partition is necessary to start %1."
|
||||||
|
"<br/><br/>"
|
||||||
|
"To configure an EFI system partition, go back and "
|
||||||
|
"select or create a suitable filesystem.").arg( branding->shortProductName() );
|
||||||
|
}
|
||||||
|
if (!esp) {
|
||||||
|
cDebug() << o << "No ESP mounted";
|
||||||
|
description.append(' ');
|
||||||
|
description.append(tr("The filesystem must be mounted on <strong>%1</strong>.").arg(espMountPoint));
|
||||||
|
}
|
||||||
|
if (!okType) {
|
||||||
|
cDebug() << o << "ESP wrong type";
|
||||||
|
description.append(' ');
|
||||||
|
description.append(tr("The filesystem must have type FAT32."));
|
||||||
|
}
|
||||||
|
if (!okSize) {
|
||||||
|
cDebug() << o << "ESP too small";
|
||||||
|
description.append(' ');
|
||||||
|
description.append(tr("The filesystem must be at least %1 MiB in size.").arg( PartUtils::efiFilesystemMinimumSize() ));
|
||||||
|
}
|
||||||
|
if (!okFlag)
|
||||||
|
{
|
||||||
|
cDebug() << o << "ESP missing flag";
|
||||||
|
description.append(' ');
|
||||||
|
description.append(tr("The filesystem must have flag <strong>%1</strong> set.").arg(PartitionTable::flagName( espFlag )));
|
||||||
|
}
|
||||||
|
if (!description.isEmpty()) {
|
||||||
|
description.append( "<br/><br/>" );
|
||||||
|
description.append( tr(
|
||||||
|
"You can continue without setting up an EFI system "
|
||||||
|
"partition but your system may fail to start." ));
|
||||||
|
}
|
||||||
if ( !message.isEmpty() )
|
if ( !message.isEmpty() )
|
||||||
{
|
{
|
||||||
cWarning() << message;
|
|
||||||
QMessageBox::warning( m_manualPartitionPage, message, description );
|
QMessageBox::warning( m_manualPartitionPage, message, description );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,8 +672,7 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
QFuture< void > future = QtConcurrent::run( this, &PartitionViewStep::initPartitionCoreModule );
|
QFuture< void > future = QtConcurrent::run( this, &PartitionViewStep::initPartitionCoreModule );
|
||||||
m_future->setFuture( future );
|
m_future->setFuture( future );
|
||||||
|
|
||||||
m_core->initLayout( m_config->defaultFsType(),
|
m_core->initLayout( m_config->defaultFsType(), configurationMap.value( "partitionLayout" ).toList() );
|
||||||
configurationMap.value( "partitionLayout" ).toList() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@ public:
|
|||||||
~PartitionViewStep() override;
|
~PartitionViewStep() override;
|
||||||
|
|
||||||
QString prettyName() const override;
|
QString prettyName() const override;
|
||||||
|
QString prettyStatus() const override;
|
||||||
QWidget* createSummaryWidget() const override;
|
QWidget* createSummaryWidget() const override;
|
||||||
|
|
||||||
QWidget* widget() override;
|
QWidget* widget() override;
|
||||||
|
@ -112,6 +112,11 @@ QList< Device* >
|
|||||||
getDevices( DeviceType which )
|
getDevices( DeviceType which )
|
||||||
{
|
{
|
||||||
CoreBackend* backend = CoreBackendManager::self()->backend();
|
CoreBackend* backend = CoreBackendManager::self()->backend();
|
||||||
|
if ( !backend )
|
||||||
|
{
|
||||||
|
cWarning() << "No KPM backend found.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
#if defined( WITH_KPMCORE4API )
|
#if defined( WITH_KPMCORE4API )
|
||||||
DeviceList devices = backend->scanDevices( /* not includeReadOnly, not includeLoopback */ ScanFlag( 0 ) );
|
DeviceList devices = backend->scanDevices( /* not includeReadOnly, not includeLoopback */ ScanFlag( 0 ) );
|
||||||
#else
|
#else
|
||||||
|
@ -447,31 +447,40 @@ isEfiSystem()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
isEfiFilesystemSuitable(const Partition* candidate)
|
isEfiFilesystemSuitableType( const Partition* candidate )
|
||||||
{
|
{
|
||||||
auto type = candidate->fileSystem().type();
|
auto type = candidate->fileSystem().type();
|
||||||
|
|
||||||
|
switch ( type )
|
||||||
|
{
|
||||||
|
case FileSystem::Type::Fat32:
|
||||||
|
return true;
|
||||||
|
#ifdef WITH_KPMCORE4API
|
||||||
|
case FileSystem::Type::Fat12:
|
||||||
|
#endif
|
||||||
|
case FileSystem::Type::Fat16:
|
||||||
|
cWarning() << "FAT12 and FAT16 are probably not supported by EFI";
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
cWarning() << "EFI boot partition must be FAT32";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
isEfiFilesystemSuitableSize( const Partition* candidate )
|
||||||
|
{
|
||||||
auto size = candidate->capacity(); // bytes
|
auto size = candidate->capacity(); // bytes
|
||||||
|
|
||||||
using CalamaresUtils::Units::operator""_MiB;
|
using CalamaresUtils::Units::operator""_MiB;
|
||||||
|
if ( size >= 300_MiB )
|
||||||
switch( type )
|
|
||||||
{
|
{
|
||||||
case FileSystem::Type::Fat32:
|
return true;
|
||||||
if ( size >= 300_MiB )
|
}
|
||||||
{
|
else
|
||||||
return true;
|
{
|
||||||
}
|
cWarning() << "Filesystem for EFI is too small (" << size << "bytes)";
|
||||||
cWarning() << "FAT32 filesystem is too small (" << size << "bytes)";
|
return false;
|
||||||
return false;
|
|
||||||
#ifdef WITH_KPMCORE4API
|
|
||||||
case FileSystem::Type::Fat12:
|
|
||||||
#endif
|
|
||||||
case FileSystem::Type::Fat16:
|
|
||||||
cWarning() << "FAT12 and FAT16 are probably not supported by EFI";
|
|
||||||
return false;
|
|
||||||
default:
|
|
||||||
cWarning() << "EFI boot partition must be FAT32";
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,6 +517,15 @@ isEfiBootable( const Partition* candidate )
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: this is configurable via the config file **already**
|
||||||
|
size_t
|
||||||
|
efiFilesystemMinimumSize()
|
||||||
|
{
|
||||||
|
using CalamaresUtils::Units::operator""_MiB;
|
||||||
|
return 300_MiB;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString
|
QString
|
||||||
canonicalFilesystemName( const QString& fsName, FileSystem::Type* fsType )
|
canonicalFilesystemName( const QString& fsName, FileSystem::Type* fsType )
|
||||||
{
|
{
|
||||||
|
@ -84,9 +84,24 @@ bool isEfiSystem();
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Is the @p partition suitable as an EFI boot partition?
|
* @brief Is the @p partition suitable as an EFI boot partition?
|
||||||
* Checks for filesystem type (FAT32) and size (300MiB at least).
|
* Checks for filesystem type (FAT32).
|
||||||
*/
|
*/
|
||||||
bool isEfiFilesystemSuitable( const Partition* candidate );
|
bool isEfiFilesystemSuitableType( const Partition* candidate );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Is the @p partition suitable as an EFI boot partition?
|
||||||
|
* Checks for filesystem size (300MiB, see efiFilesystemMinimumSize).
|
||||||
|
*/
|
||||||
|
bool isEfiFilesystemSuitableSize( const Partition* candidate );
|
||||||
|
|
||||||
|
/** @brief Returns the minimum size of an EFI boot partition.
|
||||||
|
*
|
||||||
|
* This is determined as 300MiB, based on the FAT32 standard
|
||||||
|
* and EFI documentation (and not a little discussion in Calamares
|
||||||
|
* issues about what works, what is effective, and what is mandated
|
||||||
|
* by the standard and how all of those are different).
|
||||||
|
*/
|
||||||
|
size_t efiFilesystemMinimumSize();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Is the given @p partition bootable in EFI? Depending on
|
* @brief Is the given @p partition bootable in EFI? Depending on
|
||||||
|
@ -138,61 +138,63 @@ PartitionLayout::init( FileSystem::Type defaultFsType, const QVariantList& confi
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PartitionLayout::setDefaultFsType(FileSystem::Type defaultFsType)
|
PartitionLayout::setDefaultFsType( FileSystem::Type defaultFsType )
|
||||||
{
|
{
|
||||||
using FileSystem = FileSystem::Type;
|
using FileSystem = FileSystem::Type;
|
||||||
switch ( defaultFsType )
|
switch ( defaultFsType )
|
||||||
{
|
{
|
||||||
case FileSystem::Unknown:
|
case FileSystem::Unknown:
|
||||||
case FileSystem::Unformatted:
|
case FileSystem::Unformatted:
|
||||||
case FileSystem::Extended:
|
case FileSystem::Extended:
|
||||||
case FileSystem::LinuxSwap:
|
case FileSystem::LinuxSwap:
|
||||||
case FileSystem::Luks:
|
case FileSystem::Luks:
|
||||||
case FileSystem::Ocfs2:
|
case FileSystem::Ocfs2:
|
||||||
case FileSystem::Lvm2_PV:
|
case FileSystem::Lvm2_PV:
|
||||||
case FileSystem::Udf:
|
case FileSystem::Udf:
|
||||||
case FileSystem::Iso9660:
|
case FileSystem::Iso9660:
|
||||||
#ifdef WITH_KPMCORE4API
|
#ifdef WITH_KPMCORE4API
|
||||||
case FileSystem::Luks2:
|
case FileSystem::Luks2:
|
||||||
case FileSystem::LinuxRaidMember:
|
case FileSystem::LinuxRaidMember:
|
||||||
case FileSystem::BitLocker:
|
case FileSystem::BitLocker:
|
||||||
#endif
|
#endif
|
||||||
// bad bad
|
// bad bad
|
||||||
cWarning() << "The selected default FS" << defaultFsType << "is not suitable." << "Using ext4 instead.";
|
cWarning() << "The selected default FS" << defaultFsType << "is not suitable."
|
||||||
defaultFsType = FileSystem::Ext4;
|
<< "Using ext4 instead.";
|
||||||
break;
|
defaultFsType = FileSystem::Ext4;
|
||||||
case FileSystem::Ext2:
|
break;
|
||||||
case FileSystem::Ext3:
|
case FileSystem::Ext2:
|
||||||
case FileSystem::Ext4:
|
case FileSystem::Ext3:
|
||||||
case FileSystem::Fat32:
|
case FileSystem::Ext4:
|
||||||
case FileSystem::Ntfs:
|
case FileSystem::Fat32:
|
||||||
case FileSystem::Reiser4:
|
case FileSystem::Ntfs:
|
||||||
case FileSystem::ReiserFS:
|
case FileSystem::Reiser4:
|
||||||
case FileSystem::Xfs:
|
case FileSystem::ReiserFS:
|
||||||
case FileSystem::Jfs:
|
case FileSystem::Xfs:
|
||||||
case FileSystem::Btrfs:
|
case FileSystem::Jfs:
|
||||||
case FileSystem::Exfat:
|
case FileSystem::Btrfs:
|
||||||
case FileSystem::F2fs:
|
case FileSystem::Exfat:
|
||||||
// ok
|
case FileSystem::F2fs:
|
||||||
break;
|
// ok
|
||||||
case FileSystem::Fat16:
|
break;
|
||||||
case FileSystem::Hfs:
|
case FileSystem::Fat16:
|
||||||
case FileSystem::HfsPlus:
|
case FileSystem::Hfs:
|
||||||
case FileSystem::Ufs:
|
case FileSystem::HfsPlus:
|
||||||
case FileSystem::Hpfs:
|
case FileSystem::Ufs:
|
||||||
case FileSystem::Zfs:
|
case FileSystem::Hpfs:
|
||||||
case FileSystem::Nilfs2:
|
case FileSystem::Zfs:
|
||||||
|
case FileSystem::Nilfs2:
|
||||||
#ifdef WITH_KPMCORE4API
|
#ifdef WITH_KPMCORE4API
|
||||||
case FileSystem::Fat12:
|
case FileSystem::Fat12:
|
||||||
case FileSystem::Apfs:
|
case FileSystem::Apfs:
|
||||||
case FileSystem::Minix:
|
case FileSystem::Minix:
|
||||||
#endif
|
#endif
|
||||||
// weird
|
// weird
|
||||||
cWarning() << "The selected default FS" << defaultFsType << "is unusual, but not wrong.";
|
cWarning() << "The selected default FS" << defaultFsType << "is unusual, but not wrong.";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cWarning() << "The selected default FS" << defaultFsType << "is not known to Calamares." << "Using ext4 instead.";
|
cWarning() << "The selected default FS" << defaultFsType << "is not known to Calamares."
|
||||||
defaultFsType = FileSystem::Ext4;
|
<< "Using ext4 instead.";
|
||||||
|
defaultFsType = FileSystem::Ext4;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_defaultFsType = defaultFsType;
|
m_defaultFsType = defaultFsType;
|
||||||
@ -278,7 +280,7 @@ PartitionLayout::createPartitions( Device* dev,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto correctFS = [d=m_defaultFsType]( FileSystem::Type t ) { return t == FileSystem::Type::Unknown ? d : t; };
|
auto correctFS = [d = m_defaultFsType]( FileSystem::Type t ) { return t == FileSystem::Type::Unknown ? d : t; };
|
||||||
|
|
||||||
// Create the partitions.
|
// Create the partitions.
|
||||||
currentSector = firstSector;
|
currentSector = firstSector;
|
||||||
|
@ -125,8 +125,8 @@ PartitionPage::~PartitionPage() {}
|
|||||||
void
|
void
|
||||||
PartitionPage::updateButtons()
|
PartitionPage::updateButtons()
|
||||||
{
|
{
|
||||||
bool create = false, createTable = false, edit = false, del = false, currentDeviceIsVG = false,
|
bool allow_create = false, allow_create_table = false, allow_edit = false, allow_delete = false;
|
||||||
isDeactivable = false;
|
bool currentDeviceIsVG = false, isDeactivable = false;
|
||||||
bool isRemovable = false, isVGdeactivated = false;
|
bool isRemovable = false, isVGdeactivated = false;
|
||||||
|
|
||||||
QModelIndex index = m_ui->partitionTreeView->currentIndex();
|
QModelIndex index = m_ui->partitionTreeView->currentIndex();
|
||||||
@ -136,12 +136,21 @@ PartitionPage::updateButtons()
|
|||||||
Q_ASSERT( model );
|
Q_ASSERT( model );
|
||||||
Partition* partition = model->partitionForIndex( index );
|
Partition* partition = model->partitionForIndex( index );
|
||||||
Q_ASSERT( partition );
|
Q_ASSERT( partition );
|
||||||
bool isFree = CalamaresUtils::Partition::isPartitionFreeSpace( partition );
|
const bool isFree = CalamaresUtils::Partition::isPartitionFreeSpace( partition );
|
||||||
bool isExtended = partition->roles().has( PartitionRole::Extended );
|
const bool isExtended = partition->roles().has( PartitionRole::Extended );
|
||||||
|
|
||||||
bool isInVG = m_core->isInVG( partition );
|
// An extended partition can have a "free space" child; that one does
|
||||||
|
// not count as a real child. If there are more children, at least one
|
||||||
|
// is a real one and we should not allow the extended partition to be
|
||||||
|
// deleted.
|
||||||
|
const bool hasChildren = isExtended
|
||||||
|
&& ( partition->children().length() > 1
|
||||||
|
|| ( partition->children().length() == 1
|
||||||
|
&& !CalamaresUtils::Partition::isPartitionFreeSpace( partition->children().at( 0 ) ) ) );
|
||||||
|
|
||||||
create = isFree;
|
const bool isInVG = m_core->isInVG( partition );
|
||||||
|
|
||||||
|
allow_create = isFree;
|
||||||
|
|
||||||
// Keep it simple for now: do not support editing extended partitions as
|
// Keep it simple for now: do not support editing extended partitions as
|
||||||
// it does not work with our current edit implementation which is
|
// it does not work with our current edit implementation which is
|
||||||
@ -150,8 +159,8 @@ PartitionPage::updateButtons()
|
|||||||
// inside them, so an edit must be applied without altering the job
|
// inside them, so an edit must be applied without altering the job
|
||||||
// order.
|
// order.
|
||||||
// TODO: See if LVM PVs can be edited in Calamares
|
// TODO: See if LVM PVs can be edited in Calamares
|
||||||
edit = !isFree && !isExtended;
|
allow_edit = !isFree && !isExtended;
|
||||||
del = !isFree && !isInVG;
|
allow_delete = !isFree && !isInVG && !hasChildren;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( m_ui->deviceComboBox->currentIndex() >= 0 )
|
if ( m_ui->deviceComboBox->currentIndex() >= 0 )
|
||||||
@ -168,14 +177,14 @@ PartitionPage::updateButtons()
|
|||||||
}
|
}
|
||||||
else if ( device->type() != Device::Type::LVM_Device )
|
else if ( device->type() != Device::Type::LVM_Device )
|
||||||
{
|
{
|
||||||
createTable = true;
|
allow_create_table = true;
|
||||||
|
|
||||||
#ifdef WITH_KPMCORE4API
|
#ifdef WITH_KPMCORE4API
|
||||||
if ( device->type() == Device::Type::SoftwareRAID_Device
|
if ( device->type() == Device::Type::SoftwareRAID_Device
|
||||||
&& static_cast< SoftwareRAID* >( device )->status() == SoftwareRAID::Status::Inactive )
|
&& static_cast< SoftwareRAID* >( device )->status() == SoftwareRAID::Status::Inactive )
|
||||||
{
|
{
|
||||||
createTable = false;
|
allow_create_table = false;
|
||||||
create = false;
|
allow_create = false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -197,10 +206,10 @@ PartitionPage::updateButtons()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui->createButton->setEnabled( create );
|
m_ui->createButton->setEnabled( allow_create );
|
||||||
m_ui->editButton->setEnabled( edit );
|
m_ui->editButton->setEnabled( allow_edit );
|
||||||
m_ui->deleteButton->setEnabled( del );
|
m_ui->deleteButton->setEnabled( allow_delete );
|
||||||
m_ui->newPartitionTableButton->setEnabled( createTable );
|
m_ui->newPartitionTableButton->setEnabled( allow_create_table );
|
||||||
m_ui->resizeVolumeGroupButton->setEnabled( currentDeviceIsVG && !isVGdeactivated );
|
m_ui->resizeVolumeGroupButton->setEnabled( currentDeviceIsVG && !isVGdeactivated );
|
||||||
m_ui->deactivateVolumeGroupButton->setEnabled( currentDeviceIsVG && isDeactivable && !isVGdeactivated );
|
m_ui->deactivateVolumeGroupButton->setEnabled( currentDeviceIsVG && isDeactivable && !isVGdeactivated );
|
||||||
m_ui->removeVolumeGroupButton->setEnabled( currentDeviceIsVG && isRemovable );
|
m_ui->removeVolumeGroupButton->setEnabled( currentDeviceIsVG && isRemovable );
|
||||||
|
@ -15,7 +15,7 @@ include_directories(
|
|||||||
)
|
)
|
||||||
|
|
||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
partitionjobtests
|
partitionjobtest
|
||||||
SOURCES
|
SOURCES
|
||||||
PartitionJobTests.cpp
|
PartitionJobTests.cpp
|
||||||
${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp
|
${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp
|
||||||
@ -31,7 +31,7 @@ calamares_add_test(
|
|||||||
)
|
)
|
||||||
|
|
||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
clearmountsjobtests
|
partitionclearmountsjobtest
|
||||||
SOURCES
|
SOURCES
|
||||||
${PartitionModule_SOURCE_DIR}/jobs/ClearMountsJob.cpp
|
${PartitionModule_SOURCE_DIR}/jobs/ClearMountsJob.cpp
|
||||||
ClearMountsJobTests.cpp
|
ClearMountsJobTests.cpp
|
||||||
@ -42,27 +42,32 @@ calamares_add_test(
|
|||||||
|
|
||||||
|
|
||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
createlayoutstests
|
partitioncreatelayoutstest
|
||||||
SOURCES
|
SOURCES
|
||||||
|
CreateLayoutsTests.cpp
|
||||||
${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp
|
${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp
|
||||||
${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp
|
${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp
|
||||||
${PartitionModule_SOURCE_DIR}/core/PartitionLayout.cpp
|
${PartitionModule_SOURCE_DIR}/core/PartitionLayout.cpp
|
||||||
${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp
|
${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp
|
||||||
${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp
|
${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp
|
||||||
CreateLayoutsTests.cpp
|
|
||||||
LIBRARIES
|
LIBRARIES
|
||||||
kpmcore
|
kpmcore
|
||||||
calamares
|
Calamares::calamaresui
|
||||||
calamaresui
|
|
||||||
Qt5::Gui
|
|
||||||
DEFINITIONS ${_partition_defs}
|
DEFINITIONS ${_partition_defs}
|
||||||
)
|
)
|
||||||
|
|
||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
automounttests
|
partitionautomounttest
|
||||||
SOURCES
|
SOURCES
|
||||||
${PartitionModule_SOURCE_DIR}/jobs/AutoMountManagementJob.cpp
|
${PartitionModule_SOURCE_DIR}/jobs/AutoMountManagementJob.cpp
|
||||||
AutoMountTests.cpp
|
AutoMountTests.cpp
|
||||||
LIBRARIES
|
)
|
||||||
calamares
|
|
||||||
|
calamares_add_test(
|
||||||
|
partitiondevicestest
|
||||||
|
SOURCES
|
||||||
|
DevicesTests.cpp
|
||||||
|
${PartitionModule_SOURCE_DIR}/core/DeviceList.cpp
|
||||||
|
LIBRARIES
|
||||||
|
kpmcore
|
||||||
)
|
)
|
||||||
|
90
src/modules/partition/tests/DevicesTests.cpp
Normal file
90
src/modules/partition/tests/DevicesTests.cpp
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "core/DeviceList.h"
|
||||||
|
|
||||||
|
#include "partition/KPMManager.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
|
#include <kpmcore/backend/corebackend.h>
|
||||||
|
#include <kpmcore/backend/corebackendmanager.h>
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
class DevicesTests : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
DevicesTests();
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void testKPMScanDevices();
|
||||||
|
void testPartUtilScanDevices();
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unique_ptr< CalamaresUtils::Partition::KPMManager > m_d;
|
||||||
|
bool m_isRoot = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
DevicesTests::DevicesTests()
|
||||||
|
: m_d( std::make_unique< CalamaresUtils::Partition::KPMManager >() )
|
||||||
|
, m_isRoot( geteuid() == 0 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DevicesTests::testKPMScanDevices()
|
||||||
|
{
|
||||||
|
Logger::setupLogLevel( Logger::LOGVERBOSE );
|
||||||
|
|
||||||
|
cDebug() << "Getting devices via KPMCore";
|
||||||
|
CoreBackend* backend = CoreBackendManager::self()->backend();
|
||||||
|
QVERIFY( backend );
|
||||||
|
#if defined( WITH_KPMCORE4API )
|
||||||
|
auto flags = ScanFlag( ~0 );
|
||||||
|
#else
|
||||||
|
auto flags = true;
|
||||||
|
#endif
|
||||||
|
auto devices = backend->scanDevices( flags ); // These flags try to get "all"
|
||||||
|
cDebug() << Logger::SubEntry << "Done getting devices.";
|
||||||
|
|
||||||
|
if ( !m_isRoot )
|
||||||
|
{
|
||||||
|
QEXPECT_FAIL( "", "Test invalid when not root", Continue );
|
||||||
|
}
|
||||||
|
QVERIFY( devices.count() > 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DevicesTests::testPartUtilScanDevices()
|
||||||
|
{
|
||||||
|
Logger::setupLogLevel( Logger::LOGVERBOSE );
|
||||||
|
|
||||||
|
cDebug() << "Getting devices via PartUtils";
|
||||||
|
auto devices = PartUtils::getDevices();
|
||||||
|
cDebug() << Logger::SubEntry << "Done getting devices.";
|
||||||
|
|
||||||
|
if ( !m_isRoot )
|
||||||
|
{
|
||||||
|
QEXPECT_FAIL( "", "Test invalid when not root", Continue );
|
||||||
|
}
|
||||||
|
QVERIFY( devices.count() > 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
QTEST_GUILESS_MAIN( DevicesTests )
|
||||||
|
|
||||||
|
#include "utils/moc-warnings.h"
|
||||||
|
|
||||||
|
#include "DevicesTests.moc"
|
@ -42,16 +42,11 @@ ShellProcessTests::testProcessListSampleConfig()
|
|||||||
{
|
{
|
||||||
YAML::Node doc;
|
YAML::Node doc;
|
||||||
|
|
||||||
QStringList dirs { "src/modules/shellprocess", "." };
|
QString filename = QStringLiteral( "shellprocess.conf" );
|
||||||
for ( const auto& dir : dirs )
|
QFile fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
{
|
|
||||||
QString filename = dir + "/shellprocess.conf";
|
QVERIFY( fi.exists() );
|
||||||
if ( QFileInfo::exists( filename ) )
|
doc = YAML::LoadFile( fi.fileName().toStdString() );
|
||||||
{
|
|
||||||
doc = YAML::LoadFile( filename.toStdString() );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandList cl( CalamaresUtils::yamlMapToVariant( doc ).value( "script" ) );
|
CommandList cl( CalamaresUtils::yamlMapToVariant( doc ).value( "script" ) );
|
||||||
QVERIFY( !cl.isEmpty() );
|
QVERIFY( !cl.isEmpty() );
|
||||||
|
@ -8,8 +8,9 @@ calamares_add_plugin( summary
|
|||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
SOURCES
|
SOURCES
|
||||||
SummaryViewStep.cpp
|
Config.cpp
|
||||||
SummaryPage.cpp
|
SummaryPage.cpp
|
||||||
|
SummaryViewStep.cpp
|
||||||
UI
|
UI
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
NO_CONFIG
|
NO_CONFIG
|
||||||
|
127
src/modules/summary/Config.cpp
Normal file
127
src/modules/summary/Config.cpp
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020, Camilo Higuita <milo.h@aol.com>
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
|
#include "Branding.h"
|
||||||
|
#include "Settings.h"
|
||||||
|
#include "ViewManager.h"
|
||||||
|
#include "utils/CalamaresUtilsGui.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
#include "utils/Retranslator.h"
|
||||||
|
#include "viewpages/ExecutionViewStep.h"
|
||||||
|
|
||||||
|
SummaryModel::SummaryModel( QObject* parent )
|
||||||
|
: QAbstractListModel( parent )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash< int, QByteArray >
|
||||||
|
SummaryModel::roleNames() const
|
||||||
|
{
|
||||||
|
return { { Qt::DisplayRole, "title" }, { Qt::UserRole, "message" } };
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant
|
||||||
|
SummaryModel::data( const QModelIndex& index, int role ) const
|
||||||
|
{
|
||||||
|
if ( !index.isValid() )
|
||||||
|
{
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
const auto item = m_summary.at( index.row() );
|
||||||
|
return role == Qt::DisplayRole ? item.title : item.message;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
SummaryModel::rowCount( const QModelIndex& ) const
|
||||||
|
{
|
||||||
|
return m_summary.count();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SummaryModel::setSummaryList( const Calamares::ViewStepList& steps, bool withWidgets )
|
||||||
|
{
|
||||||
|
Q_EMIT beginResetModel();
|
||||||
|
m_summary.clear();
|
||||||
|
|
||||||
|
for ( Calamares::ViewStep* step : steps )
|
||||||
|
{
|
||||||
|
QString text = step->prettyStatus();
|
||||||
|
QWidget* widget = withWidgets ? step->createSummaryWidget() : nullptr;
|
||||||
|
|
||||||
|
if ( text.isEmpty() && !widget )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_summary << StepSummary { step->prettyName(), text, widget };
|
||||||
|
}
|
||||||
|
Q_EMIT endResetModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
Config::Config( QObject* parent )
|
||||||
|
: QObject( parent )
|
||||||
|
, m_summary( new SummaryModel( this ) )
|
||||||
|
|
||||||
|
{
|
||||||
|
CALAMARES_RETRANSLATE_SLOT( &Config::retranslate );
|
||||||
|
retranslate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Config::retranslate()
|
||||||
|
{
|
||||||
|
m_title = tr( "Summary" );
|
||||||
|
|
||||||
|
if ( Calamares::Settings::instance()->isSetupMode() )
|
||||||
|
{
|
||||||
|
m_message = tr( "This is an overview of what will happen once you start "
|
||||||
|
"the setup procedure." );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_message = tr( "This is an overview of what will happen once you start "
|
||||||
|
"the install procedure." );
|
||||||
|
}
|
||||||
|
Q_EMIT titleChanged( m_title );
|
||||||
|
Q_EMIT messageChanged( m_message );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Config::collectSummaries( const Calamares::ViewStep* upToHere )
|
||||||
|
{
|
||||||
|
Calamares::ViewStepList steps;
|
||||||
|
for ( Calamares::ViewStep* step : Calamares::ViewManager::instance()->viewSteps() )
|
||||||
|
{
|
||||||
|
// *Assume* that if there's an exec step in the sequence,
|
||||||
|
// we don't need a summary for steps before it. This works in
|
||||||
|
// practice if there's a summary step before each exec --
|
||||||
|
// and in practice, there's only one of each.
|
||||||
|
if ( qobject_cast< Calamares::ExecutionViewStep* >( step ) )
|
||||||
|
{
|
||||||
|
steps.clear();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Having reached the parent view-step of the Config object,
|
||||||
|
// we know we're providing a summary of steps up until this
|
||||||
|
// view step, so we now have steps since the previous exec, up
|
||||||
|
// to this summary.
|
||||||
|
if ( upToHere == step )
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
steps.append( step );
|
||||||
|
}
|
||||||
|
|
||||||
|
m_summary->setSummaryList( steps );
|
||||||
|
}
|
96
src/modules/summary/Config.h
Normal file
96
src/modules/summary/Config.h
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2019-2020, Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2020, Camilo Higuita <milo.h@aol.com>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SUMMARY_CONFIG_H
|
||||||
|
#define SUMMARY_CONFIG_H
|
||||||
|
|
||||||
|
#include "viewpages/ViewStep.h"
|
||||||
|
|
||||||
|
#include <QAbstractListModel>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QQmlParserStatus>
|
||||||
|
|
||||||
|
class Config;
|
||||||
|
|
||||||
|
/** @brief Data for one step
|
||||||
|
*
|
||||||
|
* A step generally has a text description, but **may** have a
|
||||||
|
* QWidget. There is no ownership of the QWidget, that is assumed
|
||||||
|
* to be handed off to some owning parent-widget.
|
||||||
|
*/
|
||||||
|
struct StepSummary
|
||||||
|
{
|
||||||
|
QString title;
|
||||||
|
QString message;
|
||||||
|
QWidget* widget = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SummaryModel : public QAbstractListModel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
friend class Config;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SummaryModel( QObject* parent = nullptr );
|
||||||
|
int rowCount( const QModelIndex& = QModelIndex() ) const override;
|
||||||
|
QVariant data( const QModelIndex& index, int role ) const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QHash< int, QByteArray > roleNames() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/** @brief Sets the model data from @p steps
|
||||||
|
*
|
||||||
|
* Replaces the list of summaries with summaries given by
|
||||||
|
* the jobs and ViewSteps objects in @p steps. If @p withWidgets
|
||||||
|
* is @c true, then also queries for widget summaries alongside
|
||||||
|
* the text summaries for each step.
|
||||||
|
*/
|
||||||
|
void setSummaryList( const Calamares::ViewStepList& steps, bool withWidgets = false );
|
||||||
|
|
||||||
|
QVector< StepSummary > m_summary;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Config : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
///@brief Name of this summary (generally, "Summary")
|
||||||
|
Q_PROPERTY( QString title READ title NOTIFY titleChanged )
|
||||||
|
///@brief Description of what the summary means
|
||||||
|
Q_PROPERTY( QString message READ message NOTIFY messageChanged )
|
||||||
|
|
||||||
|
Q_PROPERTY( QAbstractListModel* summaryModel READ summaryModel CONSTANT FINAL )
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Config( QObject* parent = nullptr );
|
||||||
|
|
||||||
|
///@brief Called later, to load the model once all viewsteps are there
|
||||||
|
void collectSummaries( const Calamares::ViewStep* upToHere );
|
||||||
|
|
||||||
|
QAbstractListModel* summaryModel() const { return m_summary; }
|
||||||
|
|
||||||
|
QString title() const { return m_title; }
|
||||||
|
QString message() const { return m_message; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
Calamares::ViewStepList stepsForSummary( const Calamares::ViewStepList& allSteps ) const;
|
||||||
|
void retranslate();
|
||||||
|
|
||||||
|
SummaryModel* m_summary;
|
||||||
|
|
||||||
|
QString m_title;
|
||||||
|
QString m_message;
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void titleChanged( QString title );
|
||||||
|
void messageChanged( QString message );
|
||||||
|
};
|
||||||
|
#endif
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
static const int SECTION_SPACING = 12;
|
static const int SECTION_SPACING = 12;
|
||||||
|
|
||||||
SummaryPage::SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent )
|
SummaryPage::SummaryPage( Config* config, const SummaryViewStep* thisViewStep, QWidget* parent )
|
||||||
: QWidget()
|
: QWidget()
|
||||||
, m_thisViewStep( thisViewStep )
|
, m_thisViewStep( thisViewStep )
|
||||||
, m_contentWidget( nullptr )
|
, m_contentWidget( nullptr )
|
||||||
@ -37,6 +37,7 @@ SummaryPage::SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent )
|
|||||||
{
|
{
|
||||||
Q_UNUSED( parent )
|
Q_UNUSED( parent )
|
||||||
|
|
||||||
|
|
||||||
this->setObjectName( "summaryStep" );
|
this->setObjectName( "summaryStep" );
|
||||||
|
|
||||||
Q_ASSERT( m_thisViewStep );
|
Q_ASSERT( m_thisViewStep );
|
||||||
@ -45,11 +46,8 @@ SummaryPage::SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent )
|
|||||||
|
|
||||||
QLabel* headerLabel = new QLabel( this );
|
QLabel* headerLabel = new QLabel( this );
|
||||||
headerLabel->setObjectName( "summaryTitle" );
|
headerLabel->setObjectName( "summaryTitle" );
|
||||||
CALAMARES_RETRANSLATE( if ( Calamares::Settings::instance()->isSetupMode() )
|
headerLabel->setText( config->message() );
|
||||||
headerLabel->setText( tr( "This is an overview of what will happen once you start "
|
connect( config, &Config::messageChanged, headerLabel, &QLabel::setText );
|
||||||
"the setup procedure." ) );
|
|
||||||
else headerLabel->setText( tr( "This is an overview of what will happen once you start "
|
|
||||||
"the install procedure." ) ); );
|
|
||||||
layout->addWidget( headerLabel );
|
layout->addWidget( headerLabel );
|
||||||
layout->addWidget( m_scrollArea );
|
layout->addWidget( m_scrollArea );
|
||||||
m_scrollArea->setWidgetResizable( true );
|
m_scrollArea->setWidgetResizable( true );
|
||||||
@ -63,12 +61,45 @@ SummaryPage::SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static QLabel*
|
||||||
|
createTitleLabel( const QString& text, const QFont& titleFont )
|
||||||
|
{
|
||||||
|
QLabel* label = new QLabel( text );
|
||||||
|
label->setObjectName( "summaryItemTitle" );
|
||||||
|
label->setFont( titleFont );
|
||||||
|
label->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
static QLabel*
|
||||||
|
createBodyLabel( const QString& text, const QPalette& bodyPalette )
|
||||||
|
{
|
||||||
|
QLabel* label = new QLabel;
|
||||||
|
label->setObjectName( "summaryItemBody" );
|
||||||
|
label->setMargin( CalamaresUtils::defaultFontHeight() / 2 );
|
||||||
|
label->setAutoFillBackground( true );
|
||||||
|
label->setPalette( bodyPalette );
|
||||||
|
label->setText( text );
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
// Adds a widget for those ViewSteps that want a summary;
|
// Adds a widget for those ViewSteps that want a summary;
|
||||||
// see SummaryPage documentation and also ViewStep docs.
|
// see SummaryPage documentation and also ViewStep docs.
|
||||||
void
|
void
|
||||||
SummaryPage::onActivate()
|
SummaryPage::onActivate()
|
||||||
{
|
{
|
||||||
createContentWidget();
|
delete m_contentWidget; // It might have been created previously
|
||||||
|
m_contentWidget = new QWidget;
|
||||||
|
m_layout = new QVBoxLayout( m_contentWidget );
|
||||||
|
CalamaresUtils::unmarginLayout( m_layout );
|
||||||
|
|
||||||
|
QFont titleFont = font();
|
||||||
|
titleFont.setWeight( QFont::Light );
|
||||||
|
titleFont.setPointSize( CalamaresUtils::defaultFontSize() * 2 );
|
||||||
|
|
||||||
|
QPalette bodyPalette( palette() );
|
||||||
|
bodyPalette.setColor( WindowBackground, palette().window().color().lighter( 108 ) );
|
||||||
|
|
||||||
bool first = true;
|
bool first = true;
|
||||||
const Calamares::ViewStepList steps = stepsForSummary( Calamares::ViewManager::instance()->viewSteps() );
|
const Calamares::ViewStepList steps = stepsForSummary( Calamares::ViewManager::instance()->viewSteps() );
|
||||||
@ -92,7 +123,7 @@ SummaryPage::onActivate()
|
|||||||
m_layout->addSpacing( SECTION_SPACING );
|
m_layout->addSpacing( SECTION_SPACING );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_layout->addWidget( createTitleLabel( step->prettyName() ) );
|
m_layout->addWidget( createTitleLabel( step->prettyName(), titleFont ) );
|
||||||
QHBoxLayout* itemBodyLayout = new QHBoxLayout;
|
QHBoxLayout* itemBodyLayout = new QHBoxLayout;
|
||||||
m_layout->addSpacing( CalamaresUtils::defaultFontHeight() / 2 );
|
m_layout->addSpacing( CalamaresUtils::defaultFontHeight() / 2 );
|
||||||
m_layout->addLayout( itemBodyLayout );
|
m_layout->addLayout( itemBodyLayout );
|
||||||
@ -102,7 +133,7 @@ SummaryPage::onActivate()
|
|||||||
CalamaresUtils::unmarginLayout( itemBodyLayout );
|
CalamaresUtils::unmarginLayout( itemBodyLayout );
|
||||||
if ( !text.isEmpty() )
|
if ( !text.isEmpty() )
|
||||||
{
|
{
|
||||||
itemBodyCoreLayout->addWidget( createBodyLabel( text ) );
|
itemBodyCoreLayout->addWidget( createBodyLabel( text, bodyPalette ) );
|
||||||
}
|
}
|
||||||
if ( widget )
|
if ( widget )
|
||||||
{
|
{
|
||||||
@ -156,40 +187,9 @@ SummaryPage::stepsForSummary( const Calamares::ViewStepList& allSteps ) const
|
|||||||
return steps;
|
return steps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SummaryPage::createContentWidget()
|
SummaryPage::onLeave()
|
||||||
{
|
{
|
||||||
delete m_contentWidget;
|
delete m_contentWidget;
|
||||||
m_contentWidget = new QWidget;
|
m_contentWidget = nullptr;
|
||||||
m_layout = new QVBoxLayout( m_contentWidget );
|
|
||||||
CalamaresUtils::unmarginLayout( m_layout );
|
|
||||||
}
|
|
||||||
|
|
||||||
QLabel*
|
|
||||||
SummaryPage::createTitleLabel( const QString& text ) const
|
|
||||||
{
|
|
||||||
QLabel* label = new QLabel( text );
|
|
||||||
label->setObjectName( "summaryItemTitle" );
|
|
||||||
QFont fnt = font();
|
|
||||||
fnt.setWeight( QFont::Light );
|
|
||||||
fnt.setPointSize( CalamaresUtils::defaultFontSize() * 2 );
|
|
||||||
label->setFont( fnt );
|
|
||||||
label->setContentsMargins( 0, 0, 0, 0 );
|
|
||||||
|
|
||||||
return label;
|
|
||||||
}
|
|
||||||
|
|
||||||
QLabel*
|
|
||||||
SummaryPage::createBodyLabel( const QString& text ) const
|
|
||||||
{
|
|
||||||
QLabel* label = new QLabel;
|
|
||||||
label->setObjectName( "summaryItemBody" );
|
|
||||||
label->setMargin( CalamaresUtils::defaultFontHeight() / 2 );
|
|
||||||
QPalette pal( palette() );
|
|
||||||
pal.setColor( WindowBackground, palette().window().color().lighter( 108 ) );
|
|
||||||
label->setAutoFillBackground( true );
|
|
||||||
label->setPalette( pal );
|
|
||||||
label->setText( text );
|
|
||||||
return label;
|
|
||||||
}
|
}
|
||||||
|
@ -14,10 +14,13 @@
|
|||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
|
class Config;
|
||||||
|
class SummaryViewStep;
|
||||||
|
|
||||||
class QLabel;
|
class QLabel;
|
||||||
class QScrollArea;
|
class QScrollArea;
|
||||||
class QVBoxLayout;
|
class QVBoxLayout;
|
||||||
class SummaryViewStep;
|
|
||||||
|
|
||||||
/** @brief Provide a summary view with to-be-done action descriptions.
|
/** @brief Provide a summary view with to-be-done action descriptions.
|
||||||
*
|
*
|
||||||
@ -42,10 +45,12 @@ class SummaryPage : public QWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit SummaryPage( const SummaryViewStep* thisViewStep, QWidget* parent = nullptr );
|
explicit SummaryPage( Config* config, const SummaryViewStep* thisViewStep, QWidget* parent = nullptr );
|
||||||
|
|
||||||
|
/// @brief Create contents showing all of the summary
|
||||||
void onActivate();
|
void onActivate();
|
||||||
void createContentWidget();
|
/// @brief Clean up the widgets
|
||||||
|
void onLeave();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Calamares::ViewStepList stepsForSummary( const Calamares::ViewStepList& allSteps ) const;
|
Calamares::ViewStepList stepsForSummary( const Calamares::ViewStepList& allSteps ) const;
|
||||||
@ -55,9 +60,6 @@ private:
|
|||||||
QVBoxLayout* m_layout = nullptr;
|
QVBoxLayout* m_layout = nullptr;
|
||||||
QWidget* m_contentWidget = nullptr;
|
QWidget* m_contentWidget = nullptr;
|
||||||
|
|
||||||
QLabel* createTitleLabel( const QString& text ) const;
|
|
||||||
QLabel* createBodyLabel( const QString& text ) const;
|
|
||||||
|
|
||||||
QScrollArea* m_scrollArea;
|
QScrollArea* m_scrollArea;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,7 +15,8 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( SummaryViewStepFactory, registerPlugin< Sum
|
|||||||
|
|
||||||
SummaryViewStep::SummaryViewStep( QObject* parent )
|
SummaryViewStep::SummaryViewStep( QObject* parent )
|
||||||
: Calamares::ViewStep( parent )
|
: Calamares::ViewStep( parent )
|
||||||
, m_widget( new SummaryPage( this ) )
|
, m_config( new Config( this ) )
|
||||||
|
, m_widget( new SummaryPage( m_config, this ) )
|
||||||
{
|
{
|
||||||
emit nextStatusChanged( true );
|
emit nextStatusChanged( true );
|
||||||
}
|
}
|
||||||
@ -27,13 +28,14 @@ SummaryViewStep::~SummaryViewStep()
|
|||||||
{
|
{
|
||||||
m_widget->deleteLater();
|
m_widget->deleteLater();
|
||||||
}
|
}
|
||||||
|
delete m_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QString
|
QString
|
||||||
SummaryViewStep::prettyName() const
|
SummaryViewStep::prettyName() const
|
||||||
{
|
{
|
||||||
return tr( "Summary" );
|
return m_config->title();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -72,16 +74,17 @@ SummaryViewStep::isAtEnd() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QList< Calamares::job_ptr >
|
Calamares::JobList
|
||||||
SummaryViewStep::jobs() const
|
SummaryViewStep::jobs() const
|
||||||
{
|
{
|
||||||
return QList< Calamares::job_ptr >();
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SummaryViewStep::onActivate()
|
SummaryViewStep::onActivate()
|
||||||
{
|
{
|
||||||
|
m_config->collectSummaries( this );
|
||||||
m_widget->onActivate();
|
m_widget->onActivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,5 +92,5 @@ SummaryViewStep::onActivate()
|
|||||||
void
|
void
|
||||||
SummaryViewStep::onLeave()
|
SummaryViewStep::onLeave()
|
||||||
{
|
{
|
||||||
m_widget->createContentWidget();
|
m_widget->onLeave();
|
||||||
}
|
}
|
||||||
|
@ -10,12 +10,11 @@
|
|||||||
#ifndef SUMMARYPAGEPLUGIN_H
|
#ifndef SUMMARYPAGEPLUGIN_H
|
||||||
#define SUMMARYPAGEPLUGIN_H
|
#define SUMMARYPAGEPLUGIN_H
|
||||||
|
|
||||||
#include <QObject>
|
#include "Config.h"
|
||||||
|
|
||||||
#include "utils/PluginFactory.h"
|
|
||||||
#include "viewpages/ViewStep.h"
|
|
||||||
|
|
||||||
#include "DllMacro.h"
|
#include "DllMacro.h"
|
||||||
|
#include "utils/PluginFactory.h"
|
||||||
|
#include "viewpages/ViewStep.h"
|
||||||
|
|
||||||
class SummaryPage;
|
class SummaryPage;
|
||||||
|
|
||||||
@ -37,13 +36,14 @@ public:
|
|||||||
bool isAtBeginning() const override;
|
bool isAtBeginning() const override;
|
||||||
bool isAtEnd() const override;
|
bool isAtEnd() const override;
|
||||||
|
|
||||||
QList< Calamares::job_ptr > jobs() const override;
|
Calamares::JobList jobs() const override;
|
||||||
|
|
||||||
void onActivate() override;
|
void onActivate() override;
|
||||||
void onLeave() override;
|
void onLeave() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SummaryPage* m_widget;
|
Config* m_config = nullptr;
|
||||||
|
SummaryPage* m_widget = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DECLARATION( SummaryViewStepFactory )
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( SummaryViewStepFactory )
|
||||||
|
26
src/modules/summaryq/CMakeLists.txt
Normal file
26
src/modules/summaryq/CMakeLists.txt
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
if( NOT WITH_QML )
|
||||||
|
calamares_skip_module( "summaryq (QML is not supported in this build)" )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set( _summary ${CMAKE_CURRENT_SOURCE_DIR}/../summary )
|
||||||
|
include_directories( ${_summary} )
|
||||||
|
|
||||||
|
calamares_add_plugin( summaryq
|
||||||
|
TYPE viewmodule
|
||||||
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
|
SOURCES
|
||||||
|
SummaryQmlViewStep.cpp
|
||||||
|
${_summary}/Config.cpp
|
||||||
|
UI
|
||||||
|
RESOURCES
|
||||||
|
summaryq.qrc
|
||||||
|
LINK_PRIVATE_LIBRARIES
|
||||||
|
calamaresui
|
||||||
|
SHARED_LIB
|
||||||
|
)
|
73
src/modules/summaryq/SummaryQmlViewStep.cpp
Normal file
73
src/modules/summaryq/SummaryQmlViewStep.cpp
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2014-2015, Teo Mrnjavac <teo@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2020, Camilo Higuita <milo.h@aol.com>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "SummaryQmlViewStep.h"
|
||||||
|
|
||||||
|
CALAMARES_PLUGIN_FACTORY_DEFINITION( SummaryQmlViewStepFactory, registerPlugin< SummaryQmlViewStep >(); )
|
||||||
|
|
||||||
|
SummaryQmlViewStep::SummaryQmlViewStep( QObject* parent )
|
||||||
|
: Calamares::QmlViewStep( parent )
|
||||||
|
, m_config( new Config( this ) )
|
||||||
|
{
|
||||||
|
emit nextStatusChanged( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SummaryQmlViewStep::~SummaryQmlViewStep() {}
|
||||||
|
|
||||||
|
QString
|
||||||
|
SummaryQmlViewStep::prettyName() const
|
||||||
|
{
|
||||||
|
return m_config->title();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
SummaryQmlViewStep::isNextEnabled() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
SummaryQmlViewStep::isBackEnabled() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
SummaryQmlViewStep::isAtBeginning() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
SummaryQmlViewStep::isAtEnd() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Calamares::JobList
|
||||||
|
SummaryQmlViewStep::jobs() const
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
SummaryQmlViewStep::onActivate()
|
||||||
|
{
|
||||||
|
// Collect the steps before this one: those need to have their
|
||||||
|
// summary (text or widget) displayed.
|
||||||
|
m_config->collectSummaries( this );
|
||||||
|
}
|
49
src/modules/summaryq/SummaryQmlViewStep.h
Normal file
49
src/modules/summaryq/SummaryQmlViewStep.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2014-2015, Teo Mrnjavac <teo@kde.org>
|
||||||
|
* SPDX-FileCopyrightText: 2020, Camilo Higuita <milo.h@aol.com>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SUMMARYQMLVIEWSTEP_H
|
||||||
|
#define SUMMARYQMLVIEWSTEP_H
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
|
#include "DllMacro.h"
|
||||||
|
#include "utils/PluginFactory.h"
|
||||||
|
#include "viewpages/QmlViewStep.h"
|
||||||
|
|
||||||
|
class PLUGINDLLEXPORT SummaryQmlViewStep : public Calamares::QmlViewStep
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SummaryQmlViewStep( QObject* parent = nullptr );
|
||||||
|
virtual ~SummaryQmlViewStep() override;
|
||||||
|
|
||||||
|
QString prettyName() const override;
|
||||||
|
|
||||||
|
|
||||||
|
bool isNextEnabled() const override;
|
||||||
|
bool isBackEnabled() const override;
|
||||||
|
|
||||||
|
bool isAtBeginning() const override;
|
||||||
|
bool isAtEnd() const override;
|
||||||
|
|
||||||
|
Calamares::JobList jobs() const override;
|
||||||
|
|
||||||
|
void onActivate() override;
|
||||||
|
|
||||||
|
QObject* getConfig() override { return m_config; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
Config* m_config;
|
||||||
|
};
|
||||||
|
|
||||||
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( SummaryQmlViewStepFactory )
|
||||||
|
|
||||||
|
#endif // SUMMARYQMLVIEWSTEP_H
|
22
src/modules/summaryq/img/keyboard.svg
Normal file
22
src/modules/summaryq/img/keyboard.svg
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg width="64" version="1.1" xmlns="http://www.w3.org/2000/svg" height="64" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||||
|
<defs id="defs5455">
|
||||||
|
<linearGradient inkscape:collect="always" id="linearGradient4876">
|
||||||
|
<stop style="stop-color:#b0b8b8" id="stop4878"/>
|
||||||
|
<stop offset="1" style="stop-color:#eff1f1" id="stop4880"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4876" id="linearGradient4185" y1="539.79797" y2="506.47214" x2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.81249961 0 0 0.88235295 76.6073 64.50563)"/>
|
||||||
|
</defs>
|
||||||
|
<metadata id="metadata5458"/>
|
||||||
|
<g inkscape:label="Capa 1" inkscape:groupmode="layer" id="g4882" transform="matrix(1 0 0 1 -376.57144 -493.79798)">
|
||||||
|
<rect width="52" x="382.57144" y="510.79797" height="30" style="fill:url(#linearGradient4185)" id="rect4177"/>
|
||||||
|
<path style="fill:#334545" id="path4245" d="M 7 21 L 7 23 L 12 23 L 12 21 L 7 21 z M 13 21 L 13 23 L 17 23 L 17 21 L 13 21 z M 18 21 L 18 23 L 22 23 L 22 21 L 18 21 z M 23 21 L 23 23 L 27 23 L 27 21 L 23 21 z M 28 21 L 28 23 L 32 23 L 32 21 L 28 21 z M 33 21 L 33 23 L 37 23 L 37 21 L 33 21 z M 38 21 L 38 23 L 42 23 L 42 21 L 38 21 z M 43 21 L 43 23 L 47 23 L 47 21 L 43 21 z M 48 21 L 48 23 L 52 23 L 52 21 L 48 21 z M 53 21 L 53 23 L 57 23 L 57 21 L 53 21 z M 7 24 L 7 28 L 11 28 L 11 24 L 7 24 z M 12 24 L 12 28 L 16 28 L 16 24 L 12 24 z M 17 24 L 17 28 L 21 28 L 21 24 L 17 24 z M 22 24 L 22 28 L 26 28 L 26 24 L 22 24 z M 27 24 L 27 28 L 31 28 L 31 24 L 27 24 z M 32 24 L 32 28 L 36 28 L 36 24 L 32 24 z M 37 24 L 37 28 L 41 28 L 41 24 L 37 24 z M 42 24 L 42 28 L 46 28 L 46 24 L 42 24 z M 47 24 L 47 28 L 51 28 L 51 24 L 47 24 z M 52 24 L 52 28 L 57 28 L 57 24 L 52 24 z M 7 29 L 7 33 L 13 33 L 13 29 L 7 29 z M 14 29 L 14 33 L 18 33 L 18 29 L 14 29 z M 19 29 L 19 33 L 23 33 L 23 29 L 19 29 z M 24 29 L 24 33 L 28 33 L 28 29 L 24 29 z M 29 29 L 29 33 L 33 33 L 33 29 L 29 29 z M 34 29 L 34 33 L 38 33 L 38 29 L 34 29 z M 39 29 L 39 33 L 43 33 L 43 29 L 39 29 z M 44 29 L 44 33 L 48 33 L 48 29 L 44 29 z M 49 29 L 49 33 L 57 33 L 57 29 L 49 29 z M 7 34 L 7 38 L 17 38 L 17 34 L 7 34 z M 18 34 L 18 38 L 22 38 L 22 34 L 18 34 z M 23 34 L 23 38 L 27 38 L 27 34 L 23 34 z M 28 34 L 28 38 L 32 38 L 32 34 L 28 34 z M 33 34 L 33 38 L 37 38 L 37 34 L 33 34 z M 38 34 L 38 38 L 42 38 L 42 34 L 38 34 z M 43 34 L 43 38 L 47 38 L 47 34 L 43 34 z M 48 34 L 48 38 L 57 38 L 57 34 L 48 34 z M 7 39 L 7 43 L 13.099609 43 L 13.099609 39 L 7 39 z M 14 39 L 14 43 L 18 43 L 18 39 L 14 39 z M 19 39 L 19 43 L 37 43 L 37 39 L 19 39 z M 38 39 L 38 43 L 42 43 L 42 39 L 38 39 z M 48 39 L 48 43 L 52 43 L 52 39 L 48 39 z M 43 41 L 43 43 L 47 43 L 47 41 L 43 41 z M 53 41 L 53 43 L 57 43 L 57 41 L 53 41 z " transform="matrix(1 0 0 1 376.57144 493.79798)"/>
|
||||||
|
<rect width="51.999973" x="382.57144" y="539.79797" height="1" style="fill:#909c9c" id="rect4187"/>
|
||||||
|
<rect width="1" x="431.57141" y="511.79797" height="1" style="fill:#31c281" id="rect4462-0-90"/>
|
||||||
|
<rect width="1" x="428.57135" y="511.79797" height="1" style="fill:#31c281" id="rect4975"/>
|
||||||
|
<rect width="1" x="425.57141" y="511.79797" height="1" style="fill:#31c281" id="rect4977"/>
|
||||||
|
<path style="fill:#172525" id="path4245-5" d="M 7 22 L 7 23 L 11 23 L 12 23 L 12 22 L 7 22 z M 13 22 L 13 23 L 16 23 L 17 23 L 17 22 L 13 22 z M 18 22 L 18 23 L 21 23 L 22 23 L 22 22 L 18 22 z M 23 22 L 23 23 L 26 23 L 27 23 L 27 22 L 23 22 z M 28 22 L 28 23 L 31 23 L 32 23 L 32 22 L 28 22 z M 33 22 L 33 23 L 36 23 L 37 23 L 37 22 L 33 22 z M 38 22 L 38 23 L 41 23 L 42 23 L 42 22 L 38 22 z M 43 22 L 43 23 L 46 23 L 47 23 L 47 22 L 43 22 z M 48 22 L 48 23 L 51 23 L 52 23 L 52 22 L 48 22 z M 53 22 L 53 23 L 57 23 L 57 22 L 53 22 z M 7 27 L 7 28 L 11 28 L 11 27 L 7 27 z M 12 27 L 12 28 L 13 28 L 14 28 L 16 28 L 16 27 L 12 27 z M 17 27 L 17 28 L 18 28 L 19 28 L 21 28 L 21 27 L 17 27 z M 22 27 L 22 28 L 23 28 L 24 28 L 26 28 L 26 27 L 22 27 z M 27 27 L 27 28 L 28 28 L 29 28 L 31 28 L 31 27 L 27 27 z M 32 27 L 32 28 L 33 28 L 34 28 L 36 28 L 36 27 L 32 27 z M 37 27 L 37 28 L 38 28 L 39 28 L 41 28 L 41 27 L 37 27 z M 42 27 L 42 28 L 43 28 L 44 28 L 46 28 L 46 27 L 42 27 z M 47 27 L 47 28 L 48 28 L 49 28 L 51 28 L 51 27 L 47 27 z M 52 27 L 52 28 L 57 28 L 57 27 L 52 27 z M 7 32 L 7 33 L 13 33 L 13 32 L 7 32 z M 14 32 L 14 33 L 17 33 L 18 33 L 18 32 L 14 32 z M 19 32 L 19 33 L 22 33 L 23 33 L 23 32 L 19 32 z M 24 32 L 24 33 L 27 33 L 28 33 L 28 32 L 24 32 z M 29 32 L 29 33 L 32 33 L 33 33 L 33 32 L 29 32 z M 34 32 L 34 33 L 37 33 L 38 33 L 38 32 L 34 32 z M 39 32 L 39 33 L 42 33 L 43 33 L 43 32 L 39 32 z M 44 32 L 44 33 L 47 33 L 48 33 L 48 32 L 44 32 z M 49 32 L 49 33 L 57 33 L 57 32 L 49 32 z M 7 37 L 7 38 L 13.099609 38 L 14 38 L 17 38 L 17 37 L 7 37 z M 18 37 L 18 38 L 19 38 L 22 38 L 22 37 L 18 37 z M 23 37 L 23 38 L 27 38 L 27 37 L 23 37 z M 28 37 L 28 38 L 32 38 L 32 37 L 28 37 z M 33 37 L 33 38 L 37 38 L 37 37 L 33 37 z M 38 37 L 38 38 L 42 38 L 42 37 L 38 37 z M 43 37 L 43 38 L 47 38 L 47 37 L 43 37 z M 48 37 L 48 38 L 52 38 L 57 38 L 57 37 L 48 37 z M 48 40 L 48 41 L 52 41 L 52 40 L 48 40 z M 7 42 L 7 43 L 13.099609 43 L 13.099609 42 L 7 42 z M 14 42 L 14 43 L 18 43 L 18 42 L 14 42 z M 19 42 L 19 43 L 37 43 L 37 42 L 19 42 z M 38 42 L 38 43 L 42 43 L 42 42 L 38 42 z M 43 42 L 43 43 L 47 43 L 47 42 L 43 42 z M 48 42 L 48 43 L 52 43 L 52 42 L 48 42 z M 53 42 L 53 43 L 57 43 L 57 42 L 53 42 z " transform="matrix(1 0 0 1 376.57144 493.79798)"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
2
src/modules/summaryq/img/keyboard.svg.license
Normal file
2
src/modules/summaryq/img/keyboard.svg.license
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SPDX-FileCopyrightText: 2021 KDE Visual Design Group <visual-design@kde.org>
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
39
src/modules/summaryq/img/lokalize.svg
Normal file
39
src/modules/summaryq/img/lokalize.svg
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<svg width="48" xmlns="http://www.w3.org/2000/svg" height="48" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="a" y1="22" y2="8" x2="0" gradientUnits="userSpaceOnUse" gradientTransform="translate(429.57 508.8)">
|
||||||
|
<stop stop-color="#2e3436"/>
|
||||||
|
<stop offset="1" stop-color="#555753"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="b" y1="543.8" y2="502.66" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(.66667 0 0 .63518 139.19 192.52)">
|
||||||
|
<stop stop-color="#c6cdd1"/>
|
||||||
|
<stop offset="1" stop-color="#e0e5e7"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="c" y1="529.8" x1="400.57" y2="548.8" gradientUnits="userSpaceOnUse" x2="418.57" gradientTransform="translate(11-6)">
|
||||||
|
<stop/>
|
||||||
|
<stop offset="1" stop-opacity="0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient xlink:href="#b" id="d" y1="543.8" y2="502.66" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(.66667 0 0 .63518 124.19 185.52)"/>
|
||||||
|
<linearGradient xlink:href="#c" id="e" y1="523.8" x1="388.57" y2="538.8" gradientUnits="userSpaceOnUse" x2="400.57" gradientTransform="translate(11-7)"/>
|
||||||
|
</defs>
|
||||||
|
<g transform="translate(-384.57-499.8)">
|
||||||
|
<rect width="20" x="392.57" y="504.8" fill="url(#d)" rx="0" height="28"/>
|
||||||
|
<rect width="20" x="392.57" y="504.8" fill="#566069" height="4"/>
|
||||||
|
<rect width="20" x="392.57" y="508.8" fill="#3daee9" height="1"/>
|
||||||
|
<rect width="18" x="394.57" y="509.8" fill="#ffffff" height="21"/>
|
||||||
|
<path fill="#464e55" d="m412.57 504.8l-5 7v4l5-7z"/>
|
||||||
|
<g color-rendering="auto" color-interpolation-filters="linearRGB" shape-rendering="auto" image-rendering="auto" text-rendering="auto" color-interpolation="sRGB" color="#000000">
|
||||||
|
<path fill="#1583bd" d="m412.57 508.8l-5 7v1l5-7z"/>
|
||||||
|
<path fill="#a1aeb4" d="m412.57 509.8l-5 7v1l5-7z"/>
|
||||||
|
</g>
|
||||||
|
<rect width="20" x="407.57" y="511.8" fill="url(#b)" rx="0" height="28"/>
|
||||||
|
<rect width="20" x="407.57" y="511.8" fill="#566069" height="4"/>
|
||||||
|
<rect width="20" x="407.57" y="515.8" fill="#3daee9" height="1"/>
|
||||||
|
<rect width="18" x="407.57" y="516.8" fill="#ffffff" height="21"/>
|
||||||
|
<path opacity=".117" color-interpolation-filters="linearRGB" color="#000000" image-rendering="auto" color-rendering="auto" fill-rule="evenodd" d="m417.57 522.8l1 1h3l6 6v10l-5-.039-8.59-8.584 2.372-2.595-3.782-3.782 4-1z" color-interpolation="sRGB" text-rendering="auto" fill="url(#c)" shape-rendering="auto"/>
|
||||||
|
<rect width="2" x="424.57" y="512.8" fill="#eff0f1" rx="1" height="2"/>
|
||||||
|
<rect color-interpolation-filters="linearRGB" x="504.8" y="-392.57" color="#000000" image-rendering="auto" color-rendering="auto" width="41" color-interpolation="sRGB" text-rendering="auto" fill="url(#a)" height="2" shape-rendering="auto" transform="rotate(90)"/>
|
||||||
|
<path fill="#555753" d="m416.57 522.8v1h-4v1h6.125v.25c0 .226-.141.768-.299 1.143-.174.414-.556.977-.926 1.365l-.307.32-.221-.24c-.302-.33-.752-1.01-.92-1.391l-.141-.314h-1.205l.125.303c.234.568.749 1.348 1.244 1.883.44.476.454.38-.113.801-.851.632-1.508 1.016-2.256 1.32l-.404.164.707.773.27-.135c.834-.417 1.801-1.031 2.488-1.578l.385-.305.293.238c.14.113.36.276.531.4.026.019.059.046.082.063.161.114.236.167.275.178.564.386 1.164.766 1.738 1.053l.283.141.369-.406.371-.404-.424-.172c-.682-.278-1.313-.652-2.049-1.174-.062-.051-.142-.114-.314-.236-.228-.162-.414-.311-.414-.332 0-.021.13-.181.291-.355.867-.942 1.39-1.902 1.535-2.814l.072-.537h1.807v-1h-4v-1z"/>
|
||||||
|
<path opacity=".117" color-interpolation-filters="linearRGB" color="#000000" image-rendering="auto" color-rendering="auto" fill-rule="evenodd" d="m402.63 515.81l4.988 4.988-.05 12h-.254l-8.973-8.973 3.06-8.01z" color-interpolation="sRGB" text-rendering="auto" fill="url(#e)" shape-rendering="auto"/>
|
||||||
|
<path fill="#555753" d="m402.02 516.88l-1.444 3.922h2.885zm-.612-1.068h1.229l3.055 8.01h-1.127l-.726-2.025-3.617.004-.73 2.02h-1.143z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.8 KiB |
2
src/modules/summaryq/img/lokalize.svg.license
Normal file
2
src/modules/summaryq/img/lokalize.svg.license
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SPDX-FileCopyrightText: 2021 KDE Visual Design Group <visual-design@kde.org>
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
112
src/modules/summaryq/summaryq.qml
Normal file
112
src/modules/summaryq/summaryq.qml
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.core 1.0
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.13
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import org.kde.kirigami 2.7 as Kirigami
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
import QtQuick.Window 2.3
|
||||||
|
|
||||||
|
Kirigami.ScrollablePage {
|
||||||
|
width: 860 //parent.width //860
|
||||||
|
height: 640 //parent.height //640
|
||||||
|
|
||||||
|
Kirigami.Theme.backgroundColor: "#EFF0F1"
|
||||||
|
Kirigami.Theme.textColor: "#1F1F1F"
|
||||||
|
|
||||||
|
header: Kirigami.Heading {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
height: 100
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
font.weight: Font.Medium
|
||||||
|
font.pointSize: 12
|
||||||
|
text: config.message
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: _delegate
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: rect
|
||||||
|
border.color: "#BDC3C7"
|
||||||
|
width: parent.width - 80
|
||||||
|
implicitHeight: message.implicitHeight + title.implicitHeight + 20
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width - 80
|
||||||
|
implicitHeight: message.implicitHeight + title.implicitHeight + 20
|
||||||
|
|
||||||
|
Kirigami.FormLayout {
|
||||||
|
|
||||||
|
GridLayout {
|
||||||
|
anchors {
|
||||||
|
//left: parent.left
|
||||||
|
top: parent.top
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
rowSpacing: Kirigami.Units.largeSpacing
|
||||||
|
columnSpacing: Kirigami.Units.largeSpacing
|
||||||
|
columns: width > Kirigami.Units.gridUnit * 20 ? 4 : 2
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
Layout.maximumHeight: Kirigami.Units.iconSizes.huge
|
||||||
|
Layout.preferredWidth: height
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: index === 0 ? "img/lokalize.svg"
|
||||||
|
: ( index === 1 ? "img/keyboard.svg"
|
||||||
|
: ( index === 2 ? "qrc:/data/images/partition-manual.svg"
|
||||||
|
: "qrc:/data/images/partition-partition.svg" ) )
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: title
|
||||||
|
Layout.fillWidth: true
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
text: model.title
|
||||||
|
font.weight: Font.Medium
|
||||||
|
font.pointSize: 16
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
height: 2
|
||||||
|
width: 200
|
||||||
|
border.color: "#BDC3C7"
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: message
|
||||||
|
Layout.fillWidth: true
|
||||||
|
text: model.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 20
|
||||||
|
model: config.summaryModel
|
||||||
|
delegate: _delegate
|
||||||
|
}
|
||||||
|
}
|
7
src/modules/summaryq/summaryq.qrc
Normal file
7
src/modules/summaryq/summaryq.qrc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file>summaryq.qml</file>
|
||||||
|
<file>img/keyboard.svg</file>
|
||||||
|
<file>img/lokalize.svg</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -8,26 +8,22 @@ find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus Network )
|
|||||||
find_package( LIBPARTED )
|
find_package( LIBPARTED )
|
||||||
if ( LIBPARTED_FOUND )
|
if ( LIBPARTED_FOUND )
|
||||||
set( PARTMAN_SRC checker/partman_devices.c )
|
set( PARTMAN_SRC checker/partman_devices.c )
|
||||||
set( CHECKER_LINK_LIBRARIES ${LIBPARTED_LIBRARY} )
|
set( PARTMAN_LIB ${LIBPARTED_LIBRARY} )
|
||||||
else()
|
else()
|
||||||
set( PARTMAN_SRC )
|
set( PARTMAN_SRC )
|
||||||
set( CHECKER_LINK_LIBRARIES )
|
set( PARTMAN_LIB )
|
||||||
add_definitions( -DWITHOUT_LIBPARTED )
|
add_definitions( -DWITHOUT_LIBPARTED )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( CHECKER_SOURCES
|
|
||||||
checker/CheckerContainer.cpp
|
|
||||||
checker/GeneralRequirements.cpp
|
|
||||||
checker/ResultWidget.cpp
|
|
||||||
checker/ResultsListWidget.cpp
|
|
||||||
${PARTMAN_SRC}
|
|
||||||
)
|
|
||||||
|
|
||||||
calamares_add_plugin( welcome
|
calamares_add_plugin( welcome
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
SOURCES
|
SOURCES
|
||||||
${CHECKER_SOURCES}
|
checker/CheckerContainer.cpp
|
||||||
|
checker/GeneralRequirements.cpp
|
||||||
|
checker/ResultWidget.cpp
|
||||||
|
checker/ResultsListWidget.cpp
|
||||||
|
${PARTMAN_SRC}
|
||||||
WelcomeViewStep.cpp
|
WelcomeViewStep.cpp
|
||||||
Config.cpp
|
Config.cpp
|
||||||
Config.h
|
Config.h
|
||||||
@ -37,8 +33,23 @@ calamares_add_plugin( welcome
|
|||||||
RESOURCES
|
RESOURCES
|
||||||
welcome.qrc
|
welcome.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
${CHECKER_LINK_LIBRARIES}
|
${PARTMAN_LIB}
|
||||||
Qt5::DBus
|
Qt5::DBus
|
||||||
Qt5::Network
|
Qt5::Network
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
|
|
||||||
|
calamares_add_test(
|
||||||
|
welcometest
|
||||||
|
SOURCES
|
||||||
|
checker/GeneralRequirements.cpp
|
||||||
|
${PARTMAN_SRC}
|
||||||
|
Config.cpp
|
||||||
|
Tests.cpp
|
||||||
|
LIBRARIES
|
||||||
|
${PARTMAN_LIB}
|
||||||
|
Qt5::DBus
|
||||||
|
Qt5::Network
|
||||||
|
Qt5::Widgets
|
||||||
|
Calamares::calamaresui
|
||||||
|
)
|
||||||
|
@ -27,6 +27,7 @@ Config::Config( QObject* parent )
|
|||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
, m_languages( CalamaresUtils::Locale::availableTranslations() )
|
, m_languages( CalamaresUtils::Locale::availableTranslations() )
|
||||||
, m_filtermodel( std::make_unique< QSortFilterProxyModel >() )
|
, m_filtermodel( std::make_unique< QSortFilterProxyModel >() )
|
||||||
|
, m_requirementsChecker( std::make_unique< GeneralRequirements >( this ) )
|
||||||
{
|
{
|
||||||
initLanguages();
|
initLanguages();
|
||||||
|
|
||||||
@ -38,14 +39,16 @@ Config::Config( QObject* parent )
|
|||||||
void
|
void
|
||||||
Config::retranslate()
|
Config::retranslate()
|
||||||
{
|
{
|
||||||
m_genericWelcomeMessage = genericWelcomeMessage().arg( Calamares::Branding::instance()->versionedName() );
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
const auto* settings = Calamares::Settings::instance();
|
||||||
|
m_genericWelcomeMessage = genericWelcomeMessage().arg( branding ? branding->versionedName() : QString() );
|
||||||
emit genericWelcomeMessageChanged( m_genericWelcomeMessage );
|
emit genericWelcomeMessageChanged( m_genericWelcomeMessage );
|
||||||
|
|
||||||
const auto* r = requirementsModel();
|
const auto* r = requirementsModel();
|
||||||
if ( !r->satisfiedRequirements() )
|
if ( r && !r->satisfiedRequirements() )
|
||||||
{
|
{
|
||||||
QString message;
|
QString message;
|
||||||
const bool setup = Calamares::Settings::instance()->isSetupMode();
|
const bool setup = settings ? settings->isSetupMode() : false;
|
||||||
|
|
||||||
if ( !r->satisfiedMandatory() )
|
if ( !r->satisfiedMandatory() )
|
||||||
{
|
{
|
||||||
@ -70,13 +73,13 @@ Config::retranslate()
|
|||||||
"might be disabled." );
|
"might be disabled." );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_warningMessage = message.arg( Calamares::Branding::instance()->shortVersionedName() );
|
m_warningMessage = message.arg( branding ? branding->shortVersionedName() : QString() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_warningMessage = tr( "This program will ask you some questions and "
|
m_warningMessage = tr( "This program will ask you some questions and "
|
||||||
"set up %2 on your computer." )
|
"set up %2 on your computer." )
|
||||||
.arg( Calamares::Branding::instance()->productName() );
|
.arg( branding ? branding->productName() : QString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
emit warningMessageChanged( m_warningMessage );
|
emit warningMessageChanged( m_warningMessage );
|
||||||
@ -91,7 +94,8 @@ Config::languagesModel() const
|
|||||||
Calamares::RequirementsModel*
|
Calamares::RequirementsModel*
|
||||||
Config::requirementsModel() const
|
Config::requirementsModel() const
|
||||||
{
|
{
|
||||||
return Calamares::ModuleManager::instance()->requirementsModel();
|
auto* manager = Calamares::ModuleManager::instance();
|
||||||
|
return manager ? manager->requirementsModel() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
QAbstractItemModel*
|
QAbstractItemModel*
|
||||||
@ -150,8 +154,6 @@ Config::initLanguages()
|
|||||||
{
|
{
|
||||||
QString name = m_languages->locale( matchedLocaleIndex ).name();
|
QString name = m_languages->locale( matchedLocaleIndex ).name();
|
||||||
cDebug() << Logger::SubEntry << "Matched with index" << matchedLocaleIndex << name;
|
cDebug() << Logger::SubEntry << "Matched with index" << matchedLocaleIndex << name;
|
||||||
|
|
||||||
CalamaresUtils::installTranslator( name, Calamares::Branding::instance()->translationsDirectory() );
|
|
||||||
setLocaleIndex( matchedLocaleIndex );
|
setLocaleIndex( matchedLocaleIndex );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -190,7 +192,8 @@ Config::setLocaleIndex( int index )
|
|||||||
cDebug() << "Index" << index << "Selected locale" << selectedLocale;
|
cDebug() << "Index" << index << "Selected locale" << selectedLocale;
|
||||||
|
|
||||||
QLocale::setDefault( selectedLocale );
|
QLocale::setDefault( selectedLocale );
|
||||||
CalamaresUtils::installTranslator( selectedLocale, Calamares::Branding::instance()->translationsDirectory() );
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
CalamaresUtils::installTranslator( selectedLocale, branding ? branding->translationsDirectory() : QString() );
|
||||||
if ( Calamares::JobQueue::instance() && Calamares::JobQueue::instance()->globalStorage() )
|
if ( Calamares::JobQueue::instance() && Calamares::JobQueue::instance()->globalStorage() )
|
||||||
{
|
{
|
||||||
CalamaresUtils::Locale::insertGS( *Calamares::JobQueue::instance()->globalStorage(),
|
CalamaresUtils::Locale::insertGS( *Calamares::JobQueue::instance()->globalStorage(),
|
||||||
@ -240,17 +243,19 @@ Config::genericWelcomeMessage() const
|
|||||||
{
|
{
|
||||||
QString message;
|
QString message;
|
||||||
|
|
||||||
if ( Calamares::Settings::instance()->isSetupMode() )
|
const auto* settings = Calamares::Settings::instance();
|
||||||
|
const auto* branding = Calamares::Branding::instance();
|
||||||
|
const bool welcomeStyle = branding ? branding->welcomeStyleCalamares() : true;
|
||||||
|
|
||||||
|
if ( settings ? settings->isSetupMode() : false )
|
||||||
{
|
{
|
||||||
message = Calamares::Branding::instance()->welcomeStyleCalamares()
|
message = welcomeStyle ? tr( "<h1>Welcome to the Calamares setup program for %1</h1>" )
|
||||||
? tr( "<h1>Welcome to the Calamares setup program for %1</h1>" )
|
: tr( "<h1>Welcome to %1 setup</h1>" );
|
||||||
: tr( "<h1>Welcome to %1 setup</h1>" );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
message = Calamares::Branding::instance()->welcomeStyleCalamares()
|
message = welcomeStyle ? tr( "<h1>Welcome to the Calamares installer for %1</h1>" )
|
||||||
? tr( "<h1>Welcome to the Calamares installer for %1</h1>" )
|
: tr( "<h1>Welcome to the %1 installer</h1>" );
|
||||||
: tr( "<h1>Welcome to the %1 installer</h1>" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
@ -393,4 +398,15 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
|
|
||||||
::setLanguageIcon( this, configurationMap );
|
::setLanguageIcon( this, configurationMap );
|
||||||
::setGeoIP( this, configurationMap );
|
::setGeoIP( this, configurationMap );
|
||||||
|
|
||||||
|
if ( configurationMap.contains( "requirements" )
|
||||||
|
&& configurationMap.value( "requirements" ).type() == QVariant::Map )
|
||||||
|
{
|
||||||
|
m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "no valid requirements map found in welcome "
|
||||||
|
"module configuration.";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
#ifndef WELCOME_CONFIG_H
|
#ifndef WELCOME_CONFIG_H
|
||||||
#define WELCOME_CONFIG_H
|
#define WELCOME_CONFIG_H
|
||||||
|
|
||||||
|
#include "checker/GeneralRequirements.h"
|
||||||
|
|
||||||
#include "locale/LabelModel.h"
|
#include "locale/LabelModel.h"
|
||||||
#include "modulesystem/RequirementsModel.h"
|
#include "modulesystem/RequirementsModel.h"
|
||||||
|
|
||||||
@ -100,6 +102,9 @@ public slots:
|
|||||||
|
|
||||||
QAbstractItemModel* unsatisfiedRequirements() const;
|
QAbstractItemModel* unsatisfiedRequirements() const;
|
||||||
|
|
||||||
|
/// @brief Check the general requirements
|
||||||
|
Calamares::RequirementsList checkRequirements() const { return m_requirementsChecker->checkRequirements(); }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void countryCodeChanged( QString countryCode );
|
void countryCodeChanged( QString countryCode );
|
||||||
void localeIndexChanged( int localeIndex );
|
void localeIndexChanged( int localeIndex );
|
||||||
@ -118,6 +123,7 @@ private:
|
|||||||
|
|
||||||
CalamaresUtils::Locale::LabelModel* m_languages = nullptr;
|
CalamaresUtils::Locale::LabelModel* m_languages = nullptr;
|
||||||
std::unique_ptr< QSortFilterProxyModel > m_filtermodel;
|
std::unique_ptr< QSortFilterProxyModel > m_filtermodel;
|
||||||
|
std::unique_ptr< GeneralRequirements > m_requirementsChecker;
|
||||||
|
|
||||||
QString m_languageIcon;
|
QString m_languageIcon;
|
||||||
QString m_countryCode;
|
QString m_countryCode;
|
||||||
|
167
src/modules/welcome/Tests.cpp
Normal file
167
src/modules/welcome/Tests.cpp
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
|
#include "Branding.h"
|
||||||
|
#include "Settings.h"
|
||||||
|
#include "network/Manager.h"
|
||||||
|
#include "utils/CalamaresUtilsSystem.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
#include "utils/Yaml.h"
|
||||||
|
|
||||||
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
class WelcomeTests : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
WelcomeTests();
|
||||||
|
~WelcomeTests() override {}
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void initTestCase();
|
||||||
|
|
||||||
|
void testOneUrl();
|
||||||
|
void testUrls_data();
|
||||||
|
void testUrls();
|
||||||
|
|
||||||
|
void testBadConfigDoesNotResetUrls();
|
||||||
|
};
|
||||||
|
|
||||||
|
WelcomeTests::WelcomeTests() {}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::initTestCase()
|
||||||
|
{
|
||||||
|
Logger::setupLogLevel( Logger::LOGDEBUG );
|
||||||
|
cDebug() << "Welcome test started.";
|
||||||
|
|
||||||
|
// Ensure we have a system object, expect it to be a "bogus" one
|
||||||
|
CalamaresUtils::System* system = CalamaresUtils::System::instance();
|
||||||
|
QVERIFY( system );
|
||||||
|
cDebug() << Logger::SubEntry << "System @" << Logger::Pointer( system );
|
||||||
|
|
||||||
|
const auto* settings = Calamares::Settings::instance();
|
||||||
|
if ( !settings )
|
||||||
|
{
|
||||||
|
(void)new Calamares::Settings( true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::testOneUrl()
|
||||||
|
{
|
||||||
|
Config c;
|
||||||
|
|
||||||
|
// BUILD_AS_TEST is the source-directory path
|
||||||
|
QString filename = QStringLiteral( "1a-checkinternet.conf" );
|
||||||
|
QFile fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
|
bool ok = false;
|
||||||
|
const auto map = CalamaresUtils::loadYaml( fi, &ok );
|
||||||
|
QVERIFY( ok );
|
||||||
|
QVERIFY( map.count() > 0 );
|
||||||
|
QVERIFY( map.contains( "requirements" ) );
|
||||||
|
|
||||||
|
c.setConfigurationMap( map );
|
||||||
|
QCOMPARE( CalamaresUtils::Network::Manager::instance().getCheckInternetUrls().count(), 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::testUrls_data()
|
||||||
|
{
|
||||||
|
QTest::addColumn< QString >( "filename" );
|
||||||
|
QTest::addColumn< int >( "result" );
|
||||||
|
|
||||||
|
QTest::newRow( "one " ) << QString( "1a-checkinternet.conf" ) << 1;
|
||||||
|
QTest::newRow( "none " ) << QString( "1b-checkinternet.conf" ) << 0;
|
||||||
|
QTest::newRow( "blank" ) << QString( "1c-checkinternet.conf" ) << 1;
|
||||||
|
QTest::newRow( "bogus" ) << QString( "1d-checkinternet.conf" ) << 1;
|
||||||
|
QTest::newRow( "[] " ) << QString( "1e-checkinternet.conf" ) << 1;
|
||||||
|
QTest::newRow( "-3 " ) << QString( "1f-checkinternet.conf" ) << 3;
|
||||||
|
QTest::newRow( "[3] " ) << QString( "1g-checkinternet.conf" ) << 3;
|
||||||
|
QTest::newRow( "some " ) << QString( "1h-checkinternet.conf" ) << 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::testUrls()
|
||||||
|
{
|
||||||
|
QFETCH( QString, filename );
|
||||||
|
QFETCH( int, result );
|
||||||
|
|
||||||
|
Config c;
|
||||||
|
|
||||||
|
// BUILD_AS_TEST is the source-directory path
|
||||||
|
QFile fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
|
bool ok = false;
|
||||||
|
const auto map = CalamaresUtils::loadYaml( fi, &ok );
|
||||||
|
QVERIFY( ok );
|
||||||
|
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QVector< QUrl > {} );
|
||||||
|
QCOMPARE( CalamaresUtils::Network::Manager::instance().getCheckInternetUrls().count(), 0 );
|
||||||
|
c.setConfigurationMap( map );
|
||||||
|
QCOMPARE( CalamaresUtils::Network::Manager::instance().getCheckInternetUrls().count(), result );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
WelcomeTests::testBadConfigDoesNotResetUrls()
|
||||||
|
{
|
||||||
|
auto& nam = CalamaresUtils::Network::Manager::instance();
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QVector< QUrl > {} );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 0 );
|
||||||
|
nam.setCheckHasInternetUrl( QVector< QUrl > { QUrl( "http://example.com" ), QUrl( "https://www.kde.org" ) } );
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 );
|
||||||
|
|
||||||
|
Config c;
|
||||||
|
|
||||||
|
// This is slightly surprising: if there is **no** requirements
|
||||||
|
// configuration, the list of check-URLs is left unchanged.
|
||||||
|
{
|
||||||
|
const QString filename = QStringLiteral( "1b-checkinternet.conf" ); // "none"
|
||||||
|
|
||||||
|
// BUILD_AS_TEST is the source-directory path
|
||||||
|
QFile fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
|
bool ok = false;
|
||||||
|
const auto map = CalamaresUtils::loadYaml( fi, &ok );
|
||||||
|
QVERIFY( ok );
|
||||||
|
|
||||||
|
c.setConfigurationMap( map );
|
||||||
|
}
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 2 );
|
||||||
|
|
||||||
|
// But if the config contains a requirements entry, even if broken,
|
||||||
|
// the list is changed (to the default).
|
||||||
|
{
|
||||||
|
const QString filename = QStringLiteral( "1d-checkinternet.conf" ); // "bogus"
|
||||||
|
|
||||||
|
// BUILD_AS_TEST is the source-directory path
|
||||||
|
QFile fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
|
bool ok = false;
|
||||||
|
const auto map = CalamaresUtils::loadYaml( fi, &ok );
|
||||||
|
QVERIFY( ok );
|
||||||
|
|
||||||
|
c.setConfigurationMap( map );
|
||||||
|
}
|
||||||
|
QCOMPARE( nam.getCheckInternetUrls().count(), 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QTEST_GUILESS_MAIN( WelcomeTests )
|
||||||
|
|
||||||
|
#include "utils/moc-warnings.h"
|
||||||
|
|
||||||
|
#include "Tests.moc"
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "WelcomePage.h"
|
#include "WelcomePage.h"
|
||||||
#include "checker/GeneralRequirements.h"
|
|
||||||
|
|
||||||
#include "Branding.h"
|
#include "Branding.h"
|
||||||
#include "modulesystem/ModuleManager.h"
|
#include "modulesystem/ModuleManager.h"
|
||||||
@ -25,7 +24,6 @@ WelcomeViewStep::WelcomeViewStep( QObject* parent )
|
|||||||
: Calamares::ViewStep( parent )
|
: Calamares::ViewStep( parent )
|
||||||
, m_conf( new Config( this ) )
|
, m_conf( new Config( this ) )
|
||||||
, m_widget( new WelcomePage( m_conf ) )
|
, m_widget( new WelcomePage( m_conf ) )
|
||||||
, m_requirementsChecker( new GeneralRequirements( this ) )
|
|
||||||
{
|
{
|
||||||
connect( Calamares::ModuleManager::instance(),
|
connect( Calamares::ModuleManager::instance(),
|
||||||
&Calamares::ModuleManager::requirementsComplete,
|
&Calamares::ModuleManager::requirementsComplete,
|
||||||
@ -96,17 +94,6 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
{
|
{
|
||||||
m_conf->setConfigurationMap( configurationMap );
|
m_conf->setConfigurationMap( configurationMap );
|
||||||
|
|
||||||
if ( configurationMap.contains( "requirements" )
|
|
||||||
&& configurationMap.value( "requirements" ).type() == QVariant::Map )
|
|
||||||
{
|
|
||||||
m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cWarning() << "no valid requirements map found in welcome "
|
|
||||||
"module configuration.";
|
|
||||||
}
|
|
||||||
|
|
||||||
//here init the qml or qwidgets needed bits
|
//here init the qml or qwidgets needed bits
|
||||||
m_widget->init();
|
m_widget->init();
|
||||||
}
|
}
|
||||||
@ -114,5 +101,5 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
Calamares::RequirementsList
|
Calamares::RequirementsList
|
||||||
WelcomeViewStep::checkRequirements()
|
WelcomeViewStep::checkRequirements()
|
||||||
{
|
{
|
||||||
return m_requirementsChecker->checkRequirements();
|
return m_conf->checkRequirements();
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
Config* m_conf;
|
Config* m_conf;
|
||||||
WelcomePage* m_widget;
|
WelcomePage* m_widget;
|
||||||
GeneralRequirements* m_requirementsChecker;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeViewStepFactory )
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeViewStepFactory )
|
||||||
|
@ -215,6 +215,58 @@ GeneralRequirements::checkRequirements()
|
|||||||
return checkEntries;
|
return checkEntries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @brief Loads the check-internet URLs
|
||||||
|
*
|
||||||
|
* There may be zero or one or more URLs specified; returns
|
||||||
|
* @c true if the configuration is incomplete or damaged in some way.
|
||||||
|
*/
|
||||||
|
static bool
|
||||||
|
getCheckInternetUrls( const QVariantMap& configurationMap )
|
||||||
|
{
|
||||||
|
const QString exampleUrl = QStringLiteral( "http://example.com" );
|
||||||
|
|
||||||
|
bool incomplete = false;
|
||||||
|
QStringList checkInternetSetting = CalamaresUtils::getStringList( configurationMap, "internetCheckUrl" );
|
||||||
|
if ( !checkInternetSetting.isEmpty() )
|
||||||
|
{
|
||||||
|
QVector< QUrl > urls;
|
||||||
|
for ( const auto& urlString : qAsConst( checkInternetSetting ) )
|
||||||
|
{
|
||||||
|
QUrl url( urlString.trimmed() );
|
||||||
|
if ( url.isValid() )
|
||||||
|
{
|
||||||
|
urls.append( url );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "GeneralRequirements entry 'internetCheckUrl' in welcome.conf contains invalid"
|
||||||
|
<< urlString;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( urls.empty() )
|
||||||
|
{
|
||||||
|
cWarning() << "GeneralRequirements entry 'internetCheckUrl' contains no valid URLs, "
|
||||||
|
<< "reverting to default (" << exampleUrl << ").";
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QUrl( exampleUrl ) );
|
||||||
|
incomplete = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( urls );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is undefined in welcome.conf, "
|
||||||
|
"reverting to default ("
|
||||||
|
<< exampleUrl << ").";
|
||||||
|
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QUrl( exampleUrl ) );
|
||||||
|
incomplete = true;
|
||||||
|
}
|
||||||
|
return incomplete;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
|
GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
@ -302,30 +354,7 @@ GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
incompleteConfiguration = true;
|
incompleteConfiguration = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QUrl checkInternetUrl;
|
incompleteConfiguration |= getCheckInternetUrls( configurationMap );
|
||||||
QString checkInternetSetting = CalamaresUtils::getString( configurationMap, "internetCheckUrl" );
|
|
||||||
if ( !checkInternetSetting.isEmpty() )
|
|
||||||
{
|
|
||||||
checkInternetUrl = QUrl( checkInternetSetting.trimmed() );
|
|
||||||
if ( !checkInternetUrl.isValid() )
|
|
||||||
{
|
|
||||||
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is invalid in welcome.conf"
|
|
||||||
<< checkInternetSetting << "reverting to default (http://example.com).";
|
|
||||||
checkInternetUrl = QUrl( "http://example.com" );
|
|
||||||
incompleteConfiguration = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is undefined in welcome.conf,"
|
|
||||||
"reverting to default (http://example.com).";
|
|
||||||
checkInternetUrl = "http://example.com";
|
|
||||||
incompleteConfiguration = true;
|
|
||||||
}
|
|
||||||
if ( checkInternetUrl.isValid() )
|
|
||||||
{
|
|
||||||
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( checkInternetUrl );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( incompleteConfiguration )
|
if ( incompleteConfiguration )
|
||||||
{
|
{
|
||||||
|
5
src/modules/welcome/tests/1a-checkinternet.conf
Normal file
5
src/modules/welcome/tests/1a-checkinternet.conf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: http://example.com
|
6
src/modules/welcome/tests/1b-checkinternet.conf
Normal file
6
src/modules/welcome/tests/1b-checkinternet.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Nothing at all
|
||||||
|
---
|
||||||
|
bogus: 1
|
7
src/modules/welcome/tests/1c-checkinternet.conf
Normal file
7
src/modules/welcome/tests/1c-checkinternet.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Set to blank
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: ""
|
7
src/modules/welcome/tests/1d-checkinternet.conf
Normal file
7
src/modules/welcome/tests/1d-checkinternet.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Set to something broken
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: false
|
7
src/modules/welcome/tests/1e-checkinternet.conf
Normal file
7
src/modules/welcome/tests/1e-checkinternet.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Empty list
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: []
|
10
src/modules/welcome/tests/1f-checkinternet.conf
Normal file
10
src/modules/welcome/tests/1f-checkinternet.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Multiple, all valid
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl:
|
||||||
|
- http://example.com
|
||||||
|
- http://bogus.example.com
|
||||||
|
- http://nonexistent.example.com
|
7
src/modules/welcome/tests/1g-checkinternet.conf
Normal file
7
src/modules/welcome/tests/1g-checkinternet.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# Multiple, all valid, in short-list form
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl: [ http://example.com, http://bogus.example.com, http://nonexistent.example.com ]
|
11
src/modules/welcome/tests/1h-checkinternet.conf
Normal file
11
src/modules/welcome/tests/1h-checkinternet.conf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# SPDX-FileCopyrightText: no
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
#
|
||||||
|
# "0" is a valid URL (?) but "" is not
|
||||||
|
---
|
||||||
|
requirements:
|
||||||
|
internetCheckUrl:
|
||||||
|
- http://example.com
|
||||||
|
- 0
|
||||||
|
- ""
|
||||||
|
- http://nonexistent.example.com
|
@ -43,6 +43,21 @@ requirements:
|
|||||||
#
|
#
|
||||||
# The URL is only used if "internet" is in the *check* list below.
|
# The URL is only used if "internet" is in the *check* list below.
|
||||||
internetCheckUrl: http://example.com
|
internetCheckUrl: http://example.com
|
||||||
|
#
|
||||||
|
# This may be a single URL, or a list or URLs, in which case the
|
||||||
|
# URLs will be checked one-by-one; if any of them returns data,
|
||||||
|
# internet is assumed to be OK. This can be used to check via
|
||||||
|
# a number of places, where some domains may be down or blocked.
|
||||||
|
#
|
||||||
|
# To use a list of URLs, just use YAML list syntax (e.g.
|
||||||
|
#
|
||||||
|
# internetCheckUrl:
|
||||||
|
# - http://www.kde.org
|
||||||
|
# - http://www.freebsd.org
|
||||||
|
#
|
||||||
|
# or short-form
|
||||||
|
#
|
||||||
|
# internetCheckUrl: [ http://www.kde.org, http://www.freebsd.org ]
|
||||||
|
|
||||||
# List conditions to check. Each listed condition will be
|
# List conditions to check. Each listed condition will be
|
||||||
# probed in some way, and yields true or false according to
|
# probed in some way, and yields true or false according to
|
||||||
|
@ -26,7 +26,6 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeQmlViewStepFactory, registerPlugin<
|
|||||||
WelcomeQmlViewStep::WelcomeQmlViewStep( QObject* parent )
|
WelcomeQmlViewStep::WelcomeQmlViewStep( QObject* parent )
|
||||||
: Calamares::QmlViewStep( parent )
|
: Calamares::QmlViewStep( parent )
|
||||||
, m_config( new Config( this ) )
|
, m_config( new Config( this ) )
|
||||||
, m_requirementsChecker( new GeneralRequirements( this ) )
|
|
||||||
{
|
{
|
||||||
connect( Calamares::ModuleManager::instance(),
|
connect( Calamares::ModuleManager::instance(),
|
||||||
&Calamares::ModuleManager::requirementsComplete,
|
&Calamares::ModuleManager::requirementsComplete,
|
||||||
@ -58,7 +57,6 @@ WelcomeQmlViewStep::isBackEnabled() const
|
|||||||
bool
|
bool
|
||||||
WelcomeQmlViewStep::isAtBeginning() const
|
WelcomeQmlViewStep::isAtBeginning() const
|
||||||
{
|
{
|
||||||
// TODO: adjust to "pages" in the QML
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +64,6 @@ WelcomeQmlViewStep::isAtBeginning() const
|
|||||||
bool
|
bool
|
||||||
WelcomeQmlViewStep::isAtEnd() const
|
WelcomeQmlViewStep::isAtEnd() const
|
||||||
{
|
{
|
||||||
// TODO: adjust to "pages" in the QML
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,26 +78,13 @@ void
|
|||||||
WelcomeQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
WelcomeQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
{
|
{
|
||||||
m_config->setConfigurationMap( configurationMap );
|
m_config->setConfigurationMap( configurationMap );
|
||||||
|
|
||||||
if ( configurationMap.contains( "requirements" )
|
|
||||||
&& configurationMap.value( "requirements" ).type() == QVariant::Map )
|
|
||||||
{
|
|
||||||
m_requirementsChecker->setConfigurationMap( configurationMap.value( "requirements" ).toMap() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cWarning() << "no valid requirements map found in welcomeq "
|
|
||||||
"module configuration.";
|
|
||||||
}
|
|
||||||
|
|
||||||
Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last
|
Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last
|
||||||
setContextProperty( "Welcome", m_config );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Calamares::RequirementsList
|
Calamares::RequirementsList
|
||||||
WelcomeQmlViewStep::checkRequirements()
|
WelcomeQmlViewStep::checkRequirements()
|
||||||
{
|
{
|
||||||
return m_requirementsChecker->checkRequirements();
|
return m_config->checkRequirements();
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject*
|
QObject*
|
||||||
|
@ -29,9 +29,7 @@ class Handler;
|
|||||||
}
|
}
|
||||||
} // namespace CalamaresUtils
|
} // namespace CalamaresUtils
|
||||||
|
|
||||||
class GeneralRequirements;
|
|
||||||
|
|
||||||
// TODO: Needs a generic Calamares::QmlViewStep as base class
|
|
||||||
// TODO: refactor and move what makes sense to base class
|
// TODO: refactor and move what makes sense to base class
|
||||||
class PLUGINDLLEXPORT WelcomeQmlViewStep : public Calamares::QmlViewStep
|
class PLUGINDLLEXPORT WelcomeQmlViewStep : public Calamares::QmlViewStep
|
||||||
{
|
{
|
||||||
@ -65,7 +63,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Config* m_config;
|
Config* m_config;
|
||||||
GeneralRequirements* m_requirementsChecker;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeQmlViewStepFactory )
|
CALAMARES_PLUGIN_FACTORY_DECLARATION( WelcomeQmlViewStepFactory )
|
||||||
|
Loading…
Reference in New Issue
Block a user