[merge] fix conflicts
This commit is contained in:
commit
828ad2e065
13
CHANGES
13
CHANGES
@ -3,6 +3,19 @@ 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.24 (unreleased) #
|
||||||
|
|
||||||
|
This release contains contributions from (alphabetically by first name):
|
||||||
|
- Gaël PORTAY
|
||||||
|
|
||||||
|
## Core ##
|
||||||
|
- There is now a bash-completions script for Calamares; turn on
|
||||||
|
the (CMake-time) option INSTALL_COMPLETION to get it. (Thanks Gaël)
|
||||||
|
|
||||||
|
## Modules ##
|
||||||
|
- No module changes yet
|
||||||
|
|
||||||
|
|
||||||
# 3.2.23 (2020-04-17) #
|
# 3.2.23 (2020-04-17) #
|
||||||
|
|
||||||
This release contains contributions from (alphabetically by first name):
|
This release contains contributions from (alphabetically by first name):
|
||||||
|
@ -49,6 +49,7 @@ set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during develop
|
|||||||
#
|
#
|
||||||
option( INSTALL_CONFIG "Install configuration files" OFF )
|
option( INSTALL_CONFIG "Install configuration files" OFF )
|
||||||
option( INSTALL_POLKIT "Install Polkit configuration" ON )
|
option( INSTALL_POLKIT "Install Polkit configuration" ON )
|
||||||
|
option( INSTALL_COMPLETION "Install shell completions" OFF )
|
||||||
option( BUILD_TESTING "Build the testing tree." ON )
|
option( BUILD_TESTING "Build the testing tree." ON )
|
||||||
option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON )
|
option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON )
|
||||||
option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF )
|
option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF )
|
||||||
@ -389,6 +390,13 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES )
|
|||||||
|
|
||||||
add_subdirectory( lang ) # i18n tools
|
add_subdirectory( lang ) # i18n tools
|
||||||
|
|
||||||
|
if ( INSTALL_COMPLETION )
|
||||||
|
if( NOT CMAKE_INSTALL_BASHCOMPLETIONDIR )
|
||||||
|
set( CMAKE_INSTALL_BASHCOMPLETIONDIR "${CMAKE_INSTALL_DATADIR}/bash-completion/completions" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install( FILES ${CMAKE_SOURCE_DIR}/data/completion/bash/calamares DESTINATION "${CMAKE_INSTALL_BASHCOMPLETIONDIR}" )
|
||||||
|
endif()
|
||||||
|
|
||||||
### Example Distro
|
### Example Distro
|
||||||
#
|
#
|
||||||
|
36
data/completion/bash/calamares
Normal file
36
data/completion/bash/calamares
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||||
|
#
|
||||||
|
# Copyright 2020, Gaël PORTAY <gael.portay@gmail.com>
|
||||||
|
#
|
||||||
|
# Calamares is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Calamares is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
_calamares()
|
||||||
|
{
|
||||||
|
local cur prev words cword
|
||||||
|
_init_completion || return
|
||||||
|
|
||||||
|
case "$prev" in
|
||||||
|
-D)
|
||||||
|
COMPREPLY=( $( compgen -W "$( seq 0 1 8 )" -- "$cur" ) )
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
-c|--config)
|
||||||
|
_filedir
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
COMPREPLY=( $( compgen -W "-h --help -v --version -d --debug -D -c --config -X -xdg-config -T --debug-translation" -- "$cur" ) )
|
||||||
|
} &&
|
||||||
|
complete -F _calamares calamares
|
@ -6,17 +6,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="71"/>
|
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="71"/>
|
||||||
<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>La <strong>praŝarga ĉirkaŭaĵo</strong> de ĉi tiu sistemo.<br><br>Pli maljuna x86 sistemoj subtenas nur <strong>BIOS</strong>.<br>Pli sistemoj kutime uzas <strong>EFI</strong>, sed povos ankaŭ aspektas kiel BIOS, sed ŝaltita en kongrua reĝimo.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="81"/>
|
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="81"/>
|
||||||
<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>Tio ĉi sistemo estis ŝaltita per <strong>EFI</strong> praŝarga ĉirkaŭaĵo.<br><br>Agordi praŝargo el EFI, la instalilo devas disponigi praŝargilon, kiel: <strong>GRUB</strong> aŭ <strong>systemd-boot</strong> sur <strong>EFI Sistema Subdisko</strong>. Tio estas aŭtomata, krom se vi selektas manan dispartigon, tiukaze vi devas selekti ĝin, aŭ kreias unu mane.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="93"/>
|
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="93"/>
|
||||||
<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 type="unfinished"/>
|
<translation>Tio ĉi sistemo estis ŝaltita per <strong>BIOS</strong> praŝarga ĉirkaŭaĵo.<br><br>Agordi praŝargo el BIOS, la instalilo devas disponigi praŝargilon, kiel: <strong>GRUB</strong>, ĉe la komenco de subdisko aŭ sur la<strong>Ĉefa Ŝargodosiero</strong> apud la komencao de la subdiska tablo (preferred). Tio estas aŭtomata, krom se vi selektas manan dispartigon, tiukaze vi devas manipuli ĝin mane.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -24,22 +24,22 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="68"/>
|
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="68"/>
|
||||||
<source>Master Boot Record of %1</source>
|
<source>Master Boot Record of %1</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Ĉefa Ŝargodosiero de %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="102"/>
|
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="102"/>
|
||||||
<source>Boot Partition</source>
|
<source>Boot Partition</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Praŝarga Subdisko</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="109"/>
|
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="109"/>
|
||||||
<source>System Partition</source>
|
<source>System Partition</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Sistema Subdisko</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="139"/>
|
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="139"/>
|
||||||
<source>Do not install a boot loader</source>
|
<source>Do not install a boot loader</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Ne instalu praŝargilon</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="157"/>
|
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="157"/>
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/viewpages/BlankViewStep.cpp" line="70"/>
|
<location filename="../src/libcalamaresui/viewpages/BlankViewStep.cpp" line="70"/>
|
||||||
<source>Blank Page</source>
|
<source>Blank Page</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Senskriba Paĝo</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -65,12 +65,12 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="24"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="24"/>
|
||||||
<source>GlobalStorage</source>
|
<source>GlobalStorage</source>
|
||||||
<translation type="unfinished"/>
|
<translation>GlobalStorage</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="34"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="34"/>
|
||||||
<source>JobQueue</source>
|
<source>JobQueue</source>
|
||||||
<translation type="unfinished"/>
|
<translation>JobQueue</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="44"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="44"/>
|
||||||
@ -101,17 +101,17 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="106"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="106"/>
|
||||||
<source>Reload Stylesheet</source>
|
<source>Reload Stylesheet</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Reŝargu Stilfolio</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.ui" line="113"/>
|
<location filename="../src/calamares/DebugWindow.ui" line="113"/>
|
||||||
<source>Widget Tree</source>
|
<source>Widget Tree</source>
|
||||||
<translation type="unfinished"/>
|
<translation>KromprogrametArbo</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/calamares/DebugWindow.cpp" line="231"/>
|
<location filename="../src/calamares/DebugWindow.cpp" line="231"/>
|
||||||
<source>Debug information</source>
|
<source>Debug information</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Sencimiga Informaĵo</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -124,7 +124,7 @@
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamaresui/viewpages/ExecutionViewStep.cpp" line="92"/>
|
<location filename="../src/libcalamaresui/viewpages/ExecutionViewStep.cpp" line="92"/>
|
||||||
<source>Install</source>
|
<source>Install</source>
|
||||||
<translation>Instali</translation>
|
<translation>Instalu</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -513,17 +513,17 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1002"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1002"/>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1088"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1088"/>
|
||||||
<source>Current:</source>
|
<source>Current:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Nune:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="158"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="158"/>
|
||||||
<source>After:</source>
|
<source>After:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Poste:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="334"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="334"/>
|
||||||
<source><strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one.</source>
|
<source><strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. Having a GPT partition table and <strong>fat32 512Mb /boot partition is a must for UEFI installs</strong>, either use an existing without formatting or create one.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><strong>Manan aranĝaĵon de subdisko</strong><br/>Vi povas kreii aŭ regrandigi subdiskon ajne.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="833"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="833"/>
|
||||||
@ -543,7 +543,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1030"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1030"/>
|
||||||
<source>Boot loader location:</source>
|
<source>Boot loader location:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Allokigo de la Praŝargilo:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1079"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1079"/>
|
||||||
@ -801,7 +801,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="14"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="14"/>
|
||||||
<source>Create a Partition</source>
|
<source>Create a Partition</source>
|
||||||
<translation>Kreiu Subdisko</translation>
|
<translation>Kreiu Subdiskon</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="38"/>
|
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="38"/>
|
||||||
@ -1153,12 +1153,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="70"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="70"/>
|
||||||
<source>Format</source>
|
<source>Format</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Strukturu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="89"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="89"/>
|
||||||
<source>Warning: Formatting the partition will erase all existing data.</source>
|
<source>Warning: Formatting the partition will erase all existing data.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Averto: Strukturi la subdiskon, forviŝos ĉiujn eksistantajn datumojn.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="99"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="99"/>
|
||||||
@ -1173,7 +1173,7 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="129"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="129"/>
|
||||||
<source> MiB</source>
|
<source> MiB</source>
|
||||||
<translation type="unfinished"/>
|
<translation> MiB</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="136"/>
|
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="136"/>
|
||||||
@ -1272,32 +1272,32 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="54"/>
|
<location filename="../src/modules/finished/FinishedPage.cpp" line="54"/>
|
||||||
<source><h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system.</source>
|
<source><h1>All done.</h1><br/>%1 has been set up on your computer.<br/>You may now start using your new system.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>Plenumita!</h1><br/>%1 estis agordita sur vian komputilon.<br/>Vi povas nun ekuzi vian novan sistemon.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="58"/>
|
<location filename="../src/modules/finished/FinishedPage.cpp" line="58"/>
|
||||||
<source><html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html></source>
|
<source><html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the setup program.</p></body></html></source>
|
||||||
<translation type="unfinished"/>
|
<translation><html><head/><body><p>Se ĉi tio elektobutono estas elektita, via sistemo restartos senprokraste, kiam vi klikas <span style="font-style:italic;">Finita</span> aŭ vi malfermas la agordilon.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="66"/>
|
<location filename="../src/modules/finished/FinishedPage.cpp" line="66"/>
|
||||||
<source><h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment.</source>
|
<source><h1>All done.</h1><br/>%1 has been installed on your computer.<br/>You may now restart into your new system, or continue using the %2 Live environment.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>Plenumita!</h1><br/>%1 estis instalita sur vian komputilon.<br/>Vi povas nun restartigas en vian novan sistemon, aŭ vi povas pluiri uzi la %2 aŭtonoman sistemon.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="71"/>
|
<location filename="../src/modules/finished/FinishedPage.cpp" line="71"/>
|
||||||
<source><html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html></source>
|
<source><html><head/><body><p>When this box is checked, your system will restart immediately when you click on <span style="font-style:italic;">Done</span> or close the installer.</p></body></html></source>
|
||||||
<translation type="unfinished"/>
|
<translation><html><head/><body><p>Se ĉi tio elektobutono estas elektita, via sistemo restartos senprokraste, kiam vi klikas <span style="font-style:italic;">Finita</span> aŭ vi malfermas la instalilon.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="133"/>
|
<location filename="../src/modules/finished/FinishedPage.cpp" line="133"/>
|
||||||
<source><h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2.</source>
|
<source><h1>Setup Failed</h1><br/>%1 has not been set up on your computer.<br/>The error message was: %2.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>Agorado Malsukcesis</h1><br/>%1 ne estis agordita sur vian komputilon.<br/>La erara mesaĝo estis: %2.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedPage.cpp" line="139"/>
|
<location filename="../src/modules/finished/FinishedPage.cpp" line="139"/>
|
||||||
<source><h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2.</source>
|
<source><h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>Instalaĵo Malsukcesis</h1><br/>%1 ne estis instalita sur vian komputilon.<br/>La erara mesaĝo estis: %2.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1305,27 +1305,27 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="78"/>
|
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="78"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Pretigu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="132"/>
|
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="132"/>
|
||||||
<source>Setup Complete</source>
|
<source>Setup Complete</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Agordaĵo Plenumita</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="133"/>
|
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="133"/>
|
||||||
<source>Installation Complete</source>
|
<source>Installation Complete</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Instalaĵo Plenumita</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="135"/>
|
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="135"/>
|
||||||
<source>The setup of %1 is complete.</source>
|
<source>The setup of %1 is complete.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>La agordaĵo de %1 estas plenumita.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="136"/>
|
<location filename="../src/modules/finished/FinishedViewStep.cpp" line="136"/>
|
||||||
<source>The installation of %1 is complete.</source>
|
<source>The installation of %1 is complete.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>La instalaĵo de %1 estas plenumita.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -1333,22 +1333,22 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="45"/>
|
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="45"/>
|
||||||
<source>Format partition %1 (file system: %2, size: %3 MiB) on %4.</source>
|
<source>Format partition %1 (file system: %2, size: %3 MiB) on %4.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Strukturu subdiskon %1 (dosiersistemo: %2, grandeco: %3 MiB) ja %4.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="56"/>
|
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="56"/>
|
||||||
<source>Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>.</source>
|
<source>Format <strong>%3MiB</strong> partition <strong>%1</strong> with file system <strong>%2</strong>.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Strukturu <strong>%3MiB</strong> subdiskon <strong>%1</strong> kiel dosiersistemo <strong>%2</strong>.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="67"/>
|
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="67"/>
|
||||||
<source>Formatting partition %1 with file system %2.</source>
|
<source>Formatting partition %1 with file system %2.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Strukturanta subdiskon %1 kiel dosiersistemo %2.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="81"/>
|
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="81"/>
|
||||||
<source>The installer failed to format partition %1 on disk '%2'.</source>
|
<source>The installer failed to format partition %1 on disk '%2'.</source>
|
||||||
<translation type="unfinished"/>
|
<translation>La instalilo malsukcesis strukturi ls subdiskon %1 sur disko '%2'.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@ -2539,12 +2539,12 @@ La instalilo forlasos kaj ĉiuj ŝanĝoj perdos.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="249"/>
|
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="249"/>
|
||||||
<source>Current:</source>
|
<source>Current:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Nune:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="266"/>
|
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="266"/>
|
||||||
<source>After:</source>
|
<source>After:</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Poste:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="426"/>
|
<location filename="../src/modules/partition/gui/PartitionViewStep.cpp" line="426"/>
|
||||||
@ -2746,7 +2746,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamares/partition/FileSystem.cpp" line="40"/>
|
<location filename="../src/libcalamares/partition/FileSystem.cpp" line="40"/>
|
||||||
<source>unformatted</source>
|
<source>unformatted</source>
|
||||||
<translation type="unfinished"/>
|
<translation>nestrukturita</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/libcalamares/partition/FileSystem.cpp" line="42"/>
|
<location filename="../src/libcalamares/partition/FileSystem.cpp" line="42"/>
|
||||||
|
@ -3665,7 +3665,7 @@ Output:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="234"/>
|
<location filename="../src/modules/welcome/WelcomePage.cpp" line="234"/>
|
||||||
<source><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.</source>
|
<source><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -623,12 +623,12 @@ Alla ändringar kommer att gå förlorade.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1515"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1515"/>
|
||||||
<source>Swap (no Hibernate)</source>
|
<source>Swap (no Hibernate)</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Swap (utan viloläge)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1518"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1518"/>
|
||||||
<source>Swap (with Hibernate)</source>
|
<source>Swap (with Hibernate)</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Swap (med viloläge)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1521"/>
|
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1521"/>
|
||||||
@ -1789,12 +1789,12 @@ Alla ändringar kommer att gå förlorade.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="66"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="66"/>
|
||||||
<source>Browser software</source>
|
<source>Browser software</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Webbläsare</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="67"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="67"/>
|
||||||
<source>Browser package</source>
|
<source>Browser package</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Webbläsare</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="68"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="68"/>
|
||||||
@ -1839,7 +1839,7 @@ Alla ändringar kommer att gå förlorade.</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="76"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="76"/>
|
||||||
<source>Office</source>
|
<source>Office</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Kontorsprogram</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="77"/>
|
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="77"/>
|
||||||
@ -3723,7 +3723,7 @@ Utdata:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboardq/keyboardq.qml" line="41"/>
|
<location filename="../src/modules/keyboardq/keyboardq.qml" line="41"/>
|
||||||
<source>Refresh</source>
|
<source>Refresh</source>
|
||||||
<translation type="unfinished"/>
|
<translation>Ladda om</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/keyboardq/keyboardq.qml" line="51"/>
|
<location filename="../src/modules/keyboardq/keyboardq.qml" line="51"/>
|
||||||
@ -3768,7 +3768,7 @@ Utdata:
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/welcomeq.qml" line="43"/>
|
<location filename="../src/modules/welcomeq/welcomeq.qml" line="43"/>
|
||||||
<source><h3>Welcome to the %1 <quote>%2</quote> installer</h3></source>
|
<source><h3>Welcome to the %1 <quote>%2</quote> installer</h3></source>
|
||||||
<translation type="unfinished"/>
|
<translation><h3>Välkommen till %1 <quote>%2</quote> installeraren</h3> </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcomeq/welcomeq.qml" line="75"/>
|
<location filename="../src/modules/welcomeq/welcomeq.qml" line="75"/>
|
||||||
|
@ -3673,7 +3673,7 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir.</t
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../src/modules/welcome/WelcomePage.cpp" line="234"/>
|
<location filename="../src/modules/welcome/WelcomePage.cpp" line="234"/>
|
||||||
<source><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.</source>
|
<source><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Copyright 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Copyright 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Thanks to <a href="https://calamares.io/team/">the Calamares team</a> and the <a href="https://www.transifex.com/calamares/calamares/">Calamares translators team</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> development is sponsored by <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Liberating Software.</source>
|
||||||
<translation type="unfinished"/>
|
<translation><h1>%1</h1><br/><strong>%2<br/>for %3</strong><br/><br/>Telif Hakkı 2014-2017 Teo Mrnjavac &lt;teo@kde.org&gt;<br/>Telif Hakkı 2017-2020 Adriaan de Groot &lt;groot@kde.org&gt;<br/>Teşekkrürler <a href="https://calamares.io/team/">Calamares takımı</a> ve <a href="https://www.transifex.com/calamares/calamares/">Calamares çeviri ekibi</a>.<br/><br/><a href="https://calamares.io/">Calamares</a> gelişim sponsoru <br/><a href="http://www.blue-systems.com/">Blue Systems</a> - Özgür Yazılım</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
BIN
src/branding/default/banner.png
Normal file
BIN
src/branding/default/banner.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
@ -106,6 +106,11 @@ strings:
|
|||||||
|
|
||||||
# These images are loaded from the branding module directory.
|
# These images are loaded from the branding module directory.
|
||||||
#
|
#
|
||||||
|
# productBanner is an optional image, which if present, will be shown
|
||||||
|
# on the welcome page of the application, above the welcome text.
|
||||||
|
# It is intended to have a width much greater than height.
|
||||||
|
# It is displayed at 64px height (also on HiDPI).
|
||||||
|
# Recommended size is 64px tall, and up to 460px wide.
|
||||||
# productIcon is used as the window icon, and will (usually) be used
|
# productIcon is used as the window icon, and will (usually) be used
|
||||||
# by the window manager to represent the application. This image
|
# by the window manager to represent the application. This image
|
||||||
# should be square, and may be displayed by the window manager
|
# should be square, and may be displayed by the window manager
|
||||||
@ -121,8 +126,9 @@ strings:
|
|||||||
#
|
#
|
||||||
# These filenames can also use substitutions from os-release (see above).
|
# These filenames can also use substitutions from os-release (see above).
|
||||||
images:
|
images:
|
||||||
productLogo: "squid.png"
|
# productBanner: "banner.png"
|
||||||
productIcon: "squid.png"
|
productIcon: "squid.png"
|
||||||
|
productLogo: "squid.png"
|
||||||
productWelcome: "languages.png"
|
productWelcome: "languages.png"
|
||||||
|
|
||||||
# The slideshow is displayed during execution steps (e.g. when the
|
# The slideshow is displayed during execution steps (e.g. when the
|
||||||
|
@ -226,6 +226,16 @@ calamares_add_test(
|
|||||||
partition/Tests.cpp
|
partition/Tests.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if( KPMcore_FOUND )
|
||||||
|
calamares_add_test(
|
||||||
|
libcalamarespartitionkpmtest
|
||||||
|
SOURCES
|
||||||
|
partition/KPMTests.cpp
|
||||||
|
LIBRARIES
|
||||||
|
${OPTIONAL_PRIVATE_LIBRARIES}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
libcalamareslocaletest
|
libcalamareslocaletest
|
||||||
SOURCES
|
SOURCES
|
||||||
@ -244,8 +254,8 @@ calamares_add_test(
|
|||||||
modulesystem/Tests.cpp
|
modulesystem/Tests.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if( BUILD_TESTING )
|
# This is not an actual test, it's a test / demo application
|
||||||
add_executable( test_geoip geoip/test_geoip.cpp ${geoip_src} )
|
# for experimenting with GeoIP.
|
||||||
target_link_libraries( test_geoip calamares Qt5::Network yamlcpp )
|
add_executable( test_geoip geoip/test_geoip.cpp ${geoip_src} )
|
||||||
calamares_automoc( test_geoip )
|
target_link_libraries( test_geoip calamares Qt5::Network yamlcpp )
|
||||||
endif()
|
calamares_automoc( test_geoip )
|
||||||
|
@ -37,6 +37,7 @@ void
|
|||||||
LocaleTests::initTestCase()
|
LocaleTests::initTestCase()
|
||||||
{
|
{
|
||||||
// Otherwise plain get() is dubious in the TranslatableConfiguration tests
|
// Otherwise plain get() is dubious in the TranslatableConfiguration tests
|
||||||
|
QLocale::setDefault( QLocale( QStringLiteral( "en_US" ) ) );
|
||||||
QVERIFY( ( QLocale().name() == "C" ) || ( QLocale().name() == "en_US" ) );
|
QVERIFY( ( QLocale().name() == "C" ) || ( QLocale().name() == "en_US" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
82
src/libcalamares/partition/KPMTests.cpp
Normal file
82
src/libcalamares/partition/KPMTests.cpp
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||||
|
*
|
||||||
|
* Copyright 2019, Adriaan de Groot <groot@kde.org>
|
||||||
|
*
|
||||||
|
* Calamares is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Calamares is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
|
#include <kpmcore/core/partitiontable.h>
|
||||||
|
|
||||||
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
class KPMTests : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
KPMTests();
|
||||||
|
~KPMTests() override;
|
||||||
|
private Q_SLOTS:
|
||||||
|
void initTestCase();
|
||||||
|
|
||||||
|
void testFlagNames();
|
||||||
|
};
|
||||||
|
|
||||||
|
KPMTests::KPMTests() {}
|
||||||
|
|
||||||
|
KPMTests::~KPMTests() {}
|
||||||
|
|
||||||
|
void
|
||||||
|
KPMTests::initTestCase()
|
||||||
|
{
|
||||||
|
Logger::setupLogLevel( Logger::LOGDEBUG );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KPMTests::testFlagNames()
|
||||||
|
{
|
||||||
|
int f = 1;
|
||||||
|
QStringList names;
|
||||||
|
QString s;
|
||||||
|
while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() )
|
||||||
|
{
|
||||||
|
cDebug() << f << s;
|
||||||
|
names.append( s );
|
||||||
|
|
||||||
|
f <<= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
QCOMPARE( PartitionTable::flagName( static_cast< PartitionTable::Flag >( 1 ) ), QStringLiteral( "boot" ) );
|
||||||
|
|
||||||
|
#ifdef WITH_KPMCORE4API
|
||||||
|
// KPMCore 4 unifies the flags and handles them internally
|
||||||
|
QCOMPARE( PartitionTable::flagName( PartitionTable::Flag::Boot ), QStringLiteral( "boot" ) );
|
||||||
|
QVERIFY( names.contains( QStringLiteral( "boot" ) ) );
|
||||||
|
QVERIFY( !names.contains( QStringLiteral( "esp" ) ) );
|
||||||
|
#else
|
||||||
|
// KPMCore 3 has separate flags
|
||||||
|
QCOMPARE( PartitionTable::flagName( PartitionTable::FlagBoot ), QStringLiteral( "boot" ) );
|
||||||
|
QCOMPARE( PartitionTable::flagName( PartitionTable::FlagEsp ), QStringLiteral( "esp" ) );
|
||||||
|
QVERIFY( names.contains( QStringLiteral( "boot" ) ) );
|
||||||
|
QVERIFY( names.contains( QStringLiteral( "esp" ) ) );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QTEST_GUILESS_MAIN( KPMTests )
|
||||||
|
|
||||||
|
#include "utils/moc-warnings.h"
|
||||||
|
|
||||||
|
#include "KPMTests.moc"
|
@ -195,7 +195,7 @@ System::runCommand( System::RunLocation location,
|
|||||||
? ( static_cast< int >( std::chrono::milliseconds( timeoutSec ).count() ) )
|
? ( static_cast< int >( std::chrono::milliseconds( timeoutSec ).count() ) )
|
||||||
: -1 ) )
|
: -1 ) )
|
||||||
{
|
{
|
||||||
( cWarning() << "Process" << args.first() << "timed out after" << timeoutSec.count() << "s. Output so far:\n" ).noquote().nospace() << process.readAllStandardOutput();
|
cWarning() << "Process" << args.first() << "timed out after" << timeoutSec.count() << "s. Output so far:\n" << Logger::NoQuote{} << process.readAllStandardOutput();
|
||||||
return ProcessResult::Code::TimedOut;
|
return ProcessResult::Code::TimedOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ System::runCommand( System::RunLocation location,
|
|||||||
|
|
||||||
if ( process.exitStatus() == QProcess::CrashExit )
|
if ( process.exitStatus() == QProcess::CrashExit )
|
||||||
{
|
{
|
||||||
( cWarning() << "Process" << args.first() << "crashed. Output so far:\n" ).noquote().nospace() << output;
|
cWarning() << "Process" << args.first() << "crashed. Output so far:\n" << Logger::NoQuote{} << output;
|
||||||
return ProcessResult::Code::Crashed;
|
return ProcessResult::Code::Crashed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ System::runCommand( System::RunLocation location,
|
|||||||
bool showDebug = ( !Calamares::Settings::instance() ) || ( Calamares::Settings::instance()->debugMode() );
|
bool showDebug = ( !Calamares::Settings::instance() ) || ( Calamares::Settings::instance()->debugMode() );
|
||||||
if ( ( r != 0 ) || showDebug )
|
if ( ( r != 0 ) || showDebug )
|
||||||
{
|
{
|
||||||
( cDebug() << "Target cmd:" << RedactedList( args ) << "output:\n" ).noquote().nospace() << output;
|
cDebug() << "Target cmd:" << RedactedList( args ) << "output:\n" << Logger::NoQuote{} << output;
|
||||||
}
|
}
|
||||||
return ProcessResult( r, output );
|
return ProcessResult( r, output );
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,9 @@ struct FuncSuppressor
|
|||||||
const char* m_s;
|
const char* m_s;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct NoQuote {};
|
||||||
|
struct Quote {};
|
||||||
|
|
||||||
DLLEXPORT extern const FuncSuppressor Continuation;
|
DLLEXPORT extern const FuncSuppressor Continuation;
|
||||||
DLLEXPORT extern const FuncSuppressor SubEntry;
|
DLLEXPORT extern const FuncSuppressor SubEntry;
|
||||||
|
|
||||||
@ -74,6 +77,18 @@ operator<<( QDebug& s, const FuncSuppressor& f )
|
|||||||
return s << f.m_s;
|
return s << f.m_s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline QDebug&
|
||||||
|
operator<<( QDebug& s, const NoQuote& )
|
||||||
|
{
|
||||||
|
return s.noquote().nospace();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QDebug&
|
||||||
|
operator<<( QDebug& s, const Quote& )
|
||||||
|
{
|
||||||
|
return s.quote().space();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The full path of the log file.
|
* @brief The full path of the log file.
|
||||||
*/
|
*/
|
||||||
|
@ -73,10 +73,11 @@ const QStringList Branding::s_stringEntryStrings =
|
|||||||
|
|
||||||
const QStringList Branding::s_imageEntryStrings =
|
const QStringList Branding::s_imageEntryStrings =
|
||||||
{
|
{
|
||||||
"productLogo",
|
"productBanner",
|
||||||
"productIcon",
|
"productIcon",
|
||||||
"productWelcome",
|
"productLogo",
|
||||||
"productWallpaper"
|
"productWallpaper",
|
||||||
|
"productWelcome"
|
||||||
};
|
};
|
||||||
|
|
||||||
const QStringList Branding::s_styleEntryStrings =
|
const QStringList Branding::s_styleEntryStrings =
|
||||||
@ -537,7 +538,7 @@ Branding::initSimpleSettings( const YAML::Node& doc )
|
|||||||
[[noreturn]] void
|
[[noreturn]] void
|
||||||
Branding::bail( const QString& message )
|
Branding::bail( const QString& message )
|
||||||
{
|
{
|
||||||
cError() << "FATAL in" << m_descriptorPath << "\n" + message;
|
cError() << "FATAL in" << m_descriptorPath << Logger::Continuation << Logger::NoQuote{} << message;
|
||||||
::exit( EXIT_FAILURE );
|
::exit( EXIT_FAILURE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,10 +67,11 @@ public:
|
|||||||
|
|
||||||
enum ImageEntry : short
|
enum ImageEntry : short
|
||||||
{
|
{
|
||||||
ProductLogo,
|
ProductBanner,
|
||||||
ProductIcon,
|
ProductIcon,
|
||||||
ProductWelcome,
|
ProductLogo,
|
||||||
ProductWallpaper
|
ProductWallpaper,
|
||||||
|
ProductWelcome
|
||||||
};
|
};
|
||||||
Q_ENUM( ImageEntry )
|
Q_ENUM( ImageEntry )
|
||||||
|
|
||||||
|
@ -25,12 +25,14 @@
|
|||||||
|
|
||||||
#include <QtTest/QtTest>
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
|
||||||
QTEST_MAIN( LocaleTests )
|
QTEST_MAIN( LocaleTests )
|
||||||
|
|
||||||
|
|
||||||
LocaleTests::LocaleTests() { }
|
LocaleTests::LocaleTests() {}
|
||||||
|
|
||||||
LocaleTests::~LocaleTests() { }
|
LocaleTests::~LocaleTests() {}
|
||||||
|
|
||||||
void
|
void
|
||||||
LocaleTests::initTestCase()
|
LocaleTests::initTestCase()
|
||||||
@ -147,6 +149,122 @@ LocaleTests::testTZImages()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QEXPECT_FAIL("", "TZ Images not yet all fixed", Continue);
|
QEXPECT_FAIL( "", "TZ Images not yet all fixed", Continue );
|
||||||
QCOMPARE( overlapcount, 0 );
|
QCOMPARE( overlapcount, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
operator<( const QPoint& l, const QPoint& r )
|
||||||
|
{
|
||||||
|
if ( l.x() < r.x() )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ( l.x() > r.x() )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return l.y() < r.y();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
listAll( const QPoint& p, const CalamaresUtils::Locale::CStringPairList& zones )
|
||||||
|
{
|
||||||
|
using namespace CalamaresUtils::Locale;
|
||||||
|
for ( const auto* pz : zones )
|
||||||
|
{
|
||||||
|
const TZZone* zone = dynamic_cast< const TZZone* >( pz );
|
||||||
|
if ( p == TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ) )
|
||||||
|
{
|
||||||
|
cError() << Logger::SubEntry << zone->zone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LocaleTests::testTZLocations()
|
||||||
|
{
|
||||||
|
using namespace CalamaresUtils::Locale;
|
||||||
|
const CStringPairList& regions = TZRegion::fromZoneTab();
|
||||||
|
|
||||||
|
int overlapcount = 0;
|
||||||
|
for ( const auto* pr : regions )
|
||||||
|
{
|
||||||
|
const TZRegion* region = dynamic_cast< const TZRegion* >( pr );
|
||||||
|
QVERIFY( region );
|
||||||
|
|
||||||
|
Logger::setupLogLevel( Logger::LOGDEBUG );
|
||||||
|
cDebug() << "Region" << region->region() << "zones #" << region->zones().count();
|
||||||
|
Logger::setupLogLevel( Logger::LOGERROR );
|
||||||
|
|
||||||
|
std::set< QPoint > occupied;
|
||||||
|
|
||||||
|
const auto zones = region->zones();
|
||||||
|
QVERIFY( zones.count() > 0 );
|
||||||
|
for ( const auto* pz : zones )
|
||||||
|
{
|
||||||
|
const TZZone* zone = dynamic_cast< const TZZone* >( pz );
|
||||||
|
QVERIFY( zone );
|
||||||
|
|
||||||
|
auto pos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() );
|
||||||
|
if ( occupied.find( pos ) != occupied.end() )
|
||||||
|
{
|
||||||
|
cError() << "Zone" << zone->zone() << "occupies same spot as ..";
|
||||||
|
listAll( pos, zones );
|
||||||
|
overlapcount++;
|
||||||
|
}
|
||||||
|
occupied.insert( pos );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QEXPECT_FAIL( "", "TZ Images contain pixel-overlaps", Continue );
|
||||||
|
QCOMPARE( overlapcount, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
const CalamaresUtils::Locale::TZZone*
|
||||||
|
findZone( const QString& name )
|
||||||
|
{
|
||||||
|
using namespace CalamaresUtils::Locale;
|
||||||
|
const CStringPairList& regions = TZRegion::fromZoneTab();
|
||||||
|
|
||||||
|
for ( const auto* pr : regions )
|
||||||
|
{
|
||||||
|
const TZRegion* region = dynamic_cast< const TZRegion* >( pr );
|
||||||
|
if ( !region )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const auto zones = region->zones();
|
||||||
|
for ( const auto* pz : zones )
|
||||||
|
{
|
||||||
|
const TZZone* zone = dynamic_cast< const TZZone* >( pz );
|
||||||
|
if ( !zone )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( zone->zone() == name )
|
||||||
|
{
|
||||||
|
return zone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LocaleTests::testSpecificLocations()
|
||||||
|
{
|
||||||
|
const auto* gibraltar = findZone( "Gibraltar" );
|
||||||
|
const auto* ceuta = findZone( "Ceuta" );
|
||||||
|
QVERIFY( gibraltar );
|
||||||
|
QVERIFY( ceuta );
|
||||||
|
|
||||||
|
auto gpos = TimeZoneImageList::getLocationPosition( gibraltar->longitude(), gibraltar->latitude() );
|
||||||
|
auto cpos = TimeZoneImageList::getLocationPosition( ceuta->longitude(), ceuta->latitude() );
|
||||||
|
QEXPECT_FAIL( "", "Gibraltar and Ceuta are really close", Continue );
|
||||||
|
QVERIFY( gpos != cpos );
|
||||||
|
QVERIFY( gibraltar->latitude() > ceuta->latitude() );
|
||||||
|
QEXPECT_FAIL( "", "Gibraltar and Ceuta are really close", Continue );
|
||||||
|
QVERIFY( gpos.y() < cpos.y() ); // Gibraltar is north of Ceuta
|
||||||
|
}
|
||||||
|
@ -37,7 +37,9 @@ private Q_SLOTS:
|
|||||||
void testSplitLocaleConfiguration();
|
void testSplitLocaleConfiguration();
|
||||||
|
|
||||||
// Check the TZ images for consistency
|
// Check the TZ images for consistency
|
||||||
void testTZImages();
|
void testTZImages(); // No overlaps in images
|
||||||
|
void testTZLocations(); // No overlaps in locations
|
||||||
|
void testSpecificLocations();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -151,6 +151,10 @@ doAutopartition( PartitionCoreModule* core, Device* dev, Choices::AutoPartitionO
|
|||||||
KPM_PARTITION_FLAG( None ) );
|
KPM_PARTITION_FLAG( None ) );
|
||||||
PartitionInfo::setFormat( efiPartition, true );
|
PartitionInfo::setFormat( efiPartition, true );
|
||||||
PartitionInfo::setMountPoint( efiPartition, o.efiPartitionMountPoint );
|
PartitionInfo::setMountPoint( efiPartition, o.efiPartitionMountPoint );
|
||||||
|
if ( gs->contains( "efiSystemPartitionName" ) )
|
||||||
|
{
|
||||||
|
efiPartition->setLabel( gs->value( "efiSystemPartitionName" ).toString() );
|
||||||
|
}
|
||||||
core->createPartition( dev, efiPartition, KPM_PARTITION_FLAG_ESP );
|
core->createPartition( dev, efiPartition, KPM_PARTITION_FLAG_ESP );
|
||||||
firstFreeSector = lastSector + 1;
|
firstFreeSector = lastSector + 1;
|
||||||
}
|
}
|
||||||
|
@ -417,6 +417,12 @@ PartitionViewStep::onLeave()
|
|||||||
{
|
{
|
||||||
QString espMountPoint
|
QString espMountPoint
|
||||||
= Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString();
|
= Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString();
|
||||||
|
#ifdef WITH_KPMCORE4API
|
||||||
|
auto espFlag = PartitionTable::Flag::Boot;
|
||||||
|
#else
|
||||||
|
auto espFlag = PartitionTable::FlagEsp;
|
||||||
|
#endif
|
||||||
|
QString espFlagName = PartitionTable::flagName( espFlag );
|
||||||
Partition* esp = m_core->findPartitionByMountPoint( espMountPoint );
|
Partition* esp = m_core->findPartitionByMountPoint( espMountPoint );
|
||||||
|
|
||||||
QString message;
|
QString message;
|
||||||
@ -428,12 +434,12 @@ PartitionViewStep::onLeave()
|
|||||||
"<br/><br/>"
|
"<br/><br/>"
|
||||||
"To configure an EFI system partition, go back and "
|
"To configure an EFI system partition, go back and "
|
||||||
"select or create a FAT32 filesystem with the "
|
"select or create a FAT32 filesystem with the "
|
||||||
"<strong>esp</strong> flag enabled and mount point "
|
"<strong>%3</strong> flag enabled and mount point "
|
||||||
"<strong>%2</strong>.<br/><br/>"
|
"<strong>%2</strong>.<br/><br/>"
|
||||||
"You can continue without setting up an EFI system "
|
"You can continue without setting up an EFI system "
|
||||||
"partition but your system may fail to start." )
|
"partition but your system may fail to start." )
|
||||||
.arg( *Calamares::Branding::ShortProductName )
|
.arg( *Calamares::Branding::ShortProductName )
|
||||||
.arg( espMountPoint );
|
.arg( espMountPoint, espFlagName );
|
||||||
}
|
}
|
||||||
else if ( esp && !PartUtils::isEfiBootable( esp ) )
|
else if ( esp && !PartUtils::isEfiBootable( esp ) )
|
||||||
{
|
{
|
||||||
@ -441,14 +447,14 @@ PartitionViewStep::onLeave()
|
|||||||
description = tr( "An EFI system partition is necessary to start %1."
|
description = tr( "An EFI system partition is necessary to start %1."
|
||||||
"<br/><br/>"
|
"<br/><br/>"
|
||||||
"A partition was configured with mount point "
|
"A partition was configured with mount point "
|
||||||
"<strong>%2</strong> but its <strong>esp</strong> "
|
"<strong>%2</strong> but its <strong>%3</strong> "
|
||||||
"flag is not set.<br/>"
|
"flag is not set.<br/>"
|
||||||
"To set the flag, go back and edit the partition."
|
"To set the flag, go back and edit the partition."
|
||||||
"<br/><br/>"
|
"<br/><br/>"
|
||||||
"You can continue without setting the flag but your "
|
"You can continue without setting the flag but your "
|
||||||
"system may fail to start." )
|
"system may fail to start." )
|
||||||
.arg( *Calamares::Branding::ShortProductName )
|
.arg( *Calamares::Branding::ShortProductName )
|
||||||
.arg( espMountPoint );
|
.arg( espMountPoint, espFlagName );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !message.isEmpty() )
|
if ( !message.isEmpty() )
|
||||||
@ -538,6 +544,12 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
gs->insert( "efiSystemPartitionSize", CalamaresUtils::getString( configurationMap, "efiSystemPartitionSize" ) );
|
gs->insert( "efiSystemPartitionSize", CalamaresUtils::getString( configurationMap, "efiSystemPartitionSize" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read and parse key efiSystemPartitionName
|
||||||
|
if ( configurationMap.contains( "efiSystemPartitionName" ) )
|
||||||
|
{
|
||||||
|
gs->insert( "efiSystemPartitionName", CalamaresUtils::getString( configurationMap, "efiSystemPartitionName" ) );
|
||||||
|
}
|
||||||
|
|
||||||
// SWAP SETTINGS
|
// SWAP SETTINGS
|
||||||
//
|
//
|
||||||
// This is a bit convoluted because there's legacy settings to handle as well
|
// This is a bit convoluted because there's legacy settings to handle as well
|
||||||
|
@ -107,7 +107,7 @@ mapForPartition( Partition* partition, const QString& uuid )
|
|||||||
Logger::CDebug deb;
|
Logger::CDebug deb;
|
||||||
using TR = Logger::DebugRow< const char* const, const QString& >;
|
using TR = Logger::DebugRow< const char* const, const QString& >;
|
||||||
deb << Logger::SubEntry << "mapping for" << partition->partitionPath() << partition->deviceNode()
|
deb << Logger::SubEntry << "mapping for" << partition->partitionPath() << partition->deviceNode()
|
||||||
<< TR( "mtpoint:", PartitionInfo::mountPoint( partition ) ) << TR( "fs:", map[ "fs" ].toString() )
|
<< TR( "mountPoint:", PartitionInfo::mountPoint( partition ) ) << TR( "fs:", map[ "fs" ].toString() )
|
||||||
<< TR( "fsName", map[ "fsName" ].toString() ) << TR( "uuid", uuid )
|
<< TR( "fsName", map[ "fsName" ].toString() ) << TR( "uuid", uuid )
|
||||||
<< TR( "claimed", map[ "claimed" ].toString() );
|
<< TR( "claimed", map[ "claimed" ].toString() );
|
||||||
|
|
||||||
|
@ -7,6 +7,10 @@ efiSystemPartition: "/boot/efi"
|
|||||||
# If nothing is specified, the default size of 300MiB will be used.
|
# If nothing is specified, the default size of 300MiB will be used.
|
||||||
# efiSystemPartitionSize: 300M
|
# efiSystemPartitionSize: 300M
|
||||||
|
|
||||||
|
# This optional setting specifies the name of the EFI system partition.
|
||||||
|
# If nothing is specified, the partition name is left unset.
|
||||||
|
# efiSystemPartitionName: EFI
|
||||||
|
|
||||||
# In autogenerated partitioning, allow the user to select a swap size?
|
# In autogenerated partitioning, allow the user to select a swap size?
|
||||||
# If there is exactly one choice, no UI is presented, and the user
|
# If there is exactly one choice, no UI is presented, and the user
|
||||||
# cannot make a choice -- this setting is used. If there is more than
|
# cannot make a choice -- this setting is used. If there is more than
|
||||||
|
@ -42,7 +42,11 @@ getPartitionsForDevice_other(const QString& deviceName)
|
|||||||
process.start();
|
process.start();
|
||||||
process.waitForFinished();
|
process.waitForFinished();
|
||||||
|
|
||||||
const QString partitions = process.readAllStandardOutput();
|
const QString partitions = process.readAllStandardOutput().trimmed();
|
||||||
|
if ( partitions.isEmpty() )
|
||||||
|
{
|
||||||
|
return QStringList();
|
||||||
|
}
|
||||||
const QStringList partitionsList = partitions.simplified().split( ' ' );
|
const QStringList partitionsList = partitions.simplified().split( ' ' );
|
||||||
|
|
||||||
return partitionsList;
|
return partitionsList;
|
||||||
|
@ -98,7 +98,9 @@ def run():
|
|||||||
lst.sort(key=lambda x: x[1], reverse=True)
|
lst.sort(key=lambda x: x[1], reverse=True)
|
||||||
|
|
||||||
for device, mount_point in lst:
|
for device, mount_point in lst:
|
||||||
subprocess.check_call(["umount", "-lv", mount_point])
|
# On success, no output; if the command fails, its output is
|
||||||
|
# in the exception object.
|
||||||
|
subprocess.check_output(["umount", "-lv", mount_point], stderr=subprocess.STDOUT)
|
||||||
|
|
||||||
os.rmdir(root_mount_point)
|
os.rmdir(root_mount_point)
|
||||||
|
|
||||||
|
@ -51,7 +51,45 @@ WelcomePage::WelcomePage( Config* conf, QWidget* parent )
|
|||||||
, m_languages( nullptr )
|
, m_languages( nullptr )
|
||||||
, m_conf( conf )
|
, m_conf( conf )
|
||||||
{
|
{
|
||||||
|
using Branding = Calamares::Branding;
|
||||||
|
|
||||||
|
const int defaultFontHeight = CalamaresUtils::defaultFontHeight();
|
||||||
|
ui->setupUi( this );
|
||||||
|
ui->aboutButton->setIcon( CalamaresUtils::defaultPixmap(
|
||||||
|
CalamaresUtils::Information,
|
||||||
|
CalamaresUtils::Original,
|
||||||
|
2 * QSize( defaultFontHeight, defaultFontHeight ) ) );
|
||||||
|
|
||||||
|
// insert system-check widget below welcome text
|
||||||
|
const int welcome_text_idx = ui->verticalLayout->indexOf( ui->mainText );
|
||||||
|
ui->verticalLayout->insertWidget( welcome_text_idx + 1, m_checkingWidget );
|
||||||
|
|
||||||
|
// insert optional logo banner image above welcome text
|
||||||
|
QString bannerPath = Branding::instance()->imagePath( Branding::ProductBanner );
|
||||||
|
if ( !bannerPath.isEmpty() )
|
||||||
|
{
|
||||||
|
// If the name is not empty, the file exists -- Branding checks that at startup
|
||||||
|
QPixmap bannerPixmap = QPixmap( bannerPath );
|
||||||
|
if ( !bannerPixmap.isNull() )
|
||||||
|
{
|
||||||
|
QLabel* bannerLabel = new QLabel;
|
||||||
|
bannerLabel->setPixmap( bannerPixmap );
|
||||||
|
bannerLabel->setMinimumHeight( 64 );
|
||||||
|
bannerLabel->setAlignment( Qt::AlignCenter );
|
||||||
|
ui->aboveTextSpacer->changeSize( 20, defaultFontHeight ); // Shrink it down
|
||||||
|
ui->aboveTextSpacer->invalidate();
|
||||||
|
ui->verticalLayout->insertSpacing( welcome_text_idx, defaultFontHeight );
|
||||||
|
ui->verticalLayout->insertWidget( welcome_text_idx, bannerLabel );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
initLanguages();
|
||||||
|
|
||||||
|
cDebug() << "Welcome string" << Calamares::Branding::instance()->welcomeStyleCalamares()
|
||||||
|
<< *Calamares::Branding::VersionedName;
|
||||||
|
CALAMARES_RETRANSLATE_SLOT( &WelcomePage::retranslate )
|
||||||
|
|
||||||
|
connect( ui->aboutButton, &QPushButton::clicked, this, &WelcomePage::showAboutBox );
|
||||||
connect( Calamares::ModuleManager::instance(),
|
connect( Calamares::ModuleManager::instance(),
|
||||||
&Calamares::ModuleManager::requirementsComplete,
|
&Calamares::ModuleManager::requirementsComplete,
|
||||||
m_checkingWidget,
|
m_checkingWidget,
|
||||||
@ -60,28 +98,6 @@ WelcomePage::WelcomePage( Config* conf, QWidget* parent )
|
|||||||
&Calamares::ModuleManager::requirementsProgress,
|
&Calamares::ModuleManager::requirementsProgress,
|
||||||
m_checkingWidget,
|
m_checkingWidget,
|
||||||
&CheckerContainer::requirementsProgress );
|
&CheckerContainer::requirementsProgress );
|
||||||
ui->setupUi( this );
|
|
||||||
|
|
||||||
ui->verticalLayout->insertSpacing( 1, CalamaresUtils::defaultFontHeight() * 2 );
|
|
||||||
initLanguages();
|
|
||||||
|
|
||||||
ui->mainText->setAlignment( Qt::AlignCenter );
|
|
||||||
ui->mainText->setWordWrap( true );
|
|
||||||
ui->mainText->setOpenExternalLinks( true );
|
|
||||||
|
|
||||||
cDebug() << "Welcome string" << Calamares::Branding::instance()->welcomeStyleCalamares()
|
|
||||||
<< *Calamares::Branding::VersionedName;
|
|
||||||
|
|
||||||
CALAMARES_RETRANSLATE_SLOT( &WelcomePage::retranslate )
|
|
||||||
|
|
||||||
ui->aboutButton->setIcon( CalamaresUtils::defaultPixmap(
|
|
||||||
CalamaresUtils::Information,
|
|
||||||
CalamaresUtils::Original,
|
|
||||||
2 * QSize( CalamaresUtils::defaultFontHeight(), CalamaresUtils::defaultFontHeight() ) ) );
|
|
||||||
connect( ui->aboutButton, &QPushButton::clicked, this, &WelcomePage::showAboutBox );
|
|
||||||
|
|
||||||
int welcome_text_idx = ui->verticalLayout->indexOf( ui->mainText );
|
|
||||||
ui->verticalLayout->insertWidget( welcome_text_idx + 1, m_checkingWidget );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0,0">
|
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0,0">
|
||||||
<item>
|
<item>
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="aboveTextSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
@ -43,6 +43,12 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true"><Calamares welcome text></string>
|
<string notr="true"><Calamares welcome text></string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@ -78,15 +84,15 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="languageWidget">
|
<widget class="QComboBox" name="languageWidget">
|
||||||
<property name="toolTip">
|
|
||||||
<string>Select application and system language</string>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
<horstretch>2</horstretch>
|
<horstretch>2</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Select application and system language</string>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
BIN
src/modules/welcomeq/img/language-icon-48px.png
Normal file
BIN
src/modules/welcomeq/img/language-icon-48px.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
100
src/modules/welcomeq/release_notes.qml
Normal file
100
src/modules/welcomeq/release_notes.qml
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||||
|
*
|
||||||
|
* Copyright 2020, Anke Boersma <demm@kaosx.us>
|
||||||
|
*
|
||||||
|
* Calamares is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Calamares is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
|
import QtQuick 2.7
|
||||||
|
import QtQuick.Controls 2.2
|
||||||
|
import QtQuick.Window 2.2
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
focus: true
|
||||||
|
color: "#f2f2f2"
|
||||||
|
|
||||||
|
Flickable {
|
||||||
|
id: flick
|
||||||
|
anchors.fill: parent
|
||||||
|
contentHeight: 3500
|
||||||
|
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
id: fscrollbar
|
||||||
|
width: 10
|
||||||
|
policy: ScrollBar.AlwaysOn
|
||||||
|
}
|
||||||
|
|
||||||
|
TextArea {
|
||||||
|
id: intro
|
||||||
|
x: 130
|
||||||
|
y: 8
|
||||||
|
width: 640
|
||||||
|
font.pointSize: 14
|
||||||
|
textFormat: Text.RichText
|
||||||
|
antialiasing: true
|
||||||
|
activeFocusOnPress: false
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
|
||||||
|
text: qsTr("<h3>%1</h3>
|
||||||
|
<p>This an example QML file, showing options in RichText with Flickable content.</p>
|
||||||
|
|
||||||
|
<p>QML with RichText can use HTML tags, Flickable content is useful for touchscreens.</p>
|
||||||
|
|
||||||
|
<p><b>This is bold text</b></p>
|
||||||
|
<p><i>This is italic text</i></p>
|
||||||
|
<p><u>This is underlined text</u></p>
|
||||||
|
<p><center>This text will be center-aligned.</center></p>
|
||||||
|
<p><s>This is strikethrough</s></p>
|
||||||
|
|
||||||
|
<p>Code example:
|
||||||
|
<code>ls -l /home</code></p>
|
||||||
|
|
||||||
|
<p><b>Lists:</b></p>
|
||||||
|
<ul>
|
||||||
|
<li>Intel CPU systems</li>
|
||||||
|
<li>AMD CPU systems</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>The vertical scrollbar is adjustable, current width set to 10.</p>").arg(Branding.string(Branding.VersionedName))
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ToolButton {
|
||||||
|
id: toolButton
|
||||||
|
x: 19
|
||||||
|
y: 29
|
||||||
|
width: 105
|
||||||
|
height: 48
|
||||||
|
text: qsTr("Back")
|
||||||
|
hoverEnabled: true
|
||||||
|
onClicked: load.source = ""
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image1
|
||||||
|
x: 0
|
||||||
|
y: 13
|
||||||
|
width: 22
|
||||||
|
height: 22
|
||||||
|
source: "img/chevron-left-solid.svg"
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -16,6 +16,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
import io.calamares.core 1.0
|
||||||
import io.calamares.ui 1.0
|
import io.calamares.ui 1.0
|
||||||
|
|
||||||
import QtQuick 2.10
|
import QtQuick 2.10
|
||||||
@ -29,21 +30,21 @@ Page
|
|||||||
{
|
{
|
||||||
id: welcome
|
id: welcome
|
||||||
|
|
||||||
header: Item
|
header: Item {
|
||||||
{
|
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: parent.height
|
height: parent.height
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
id: welcomeTopText
|
id: welcomeTopText
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
padding: 40
|
||||||
// In QML, QString::arg() only takes one argument
|
// In QML, QString::arg() only takes one argument
|
||||||
text: qsTr("<h3>Welcome to the %1 <quote>%2</quote> installer</h3>").arg(Branding.string(Branding.ProductName)).arg(Branding.string(Branding.Version))
|
text: qsTr("<h3>Welcome to the %1 <quote>%2</quote> installer</h3>
|
||||||
|
<p>This program will ask you some questions and set up %1 on your computer.</p>").arg(Branding.string(Branding.ProductName)).arg(Branding.string(Branding.Version))
|
||||||
}
|
}
|
||||||
Image
|
Image {
|
||||||
{
|
|
||||||
id: welcomeImage
|
id: welcomeImage
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
// imagePath() returns a full pathname, so make it refer to the filesystem
|
// imagePath() returns a full pathname, so make it refer to the filesystem
|
||||||
@ -55,36 +56,31 @@ Page
|
|||||||
fillMode: Image.PreserveAspectFit
|
fillMode: Image.PreserveAspectFit
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout
|
RowLayout {
|
||||||
{
|
|
||||||
id: buttonBar
|
id: buttonBar
|
||||||
width: parent.width
|
width: parent.width / 1.5
|
||||||
height: 64
|
height: 64
|
||||||
|
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
spacing: Kirigami.Units.largeSpacing* 2
|
spacing: Kirigami.Units.largeSpacing* 2
|
||||||
|
|
||||||
/* Traditionally Calamares has had an "About" button that talks about
|
Button {
|
||||||
* Calamares itself, which just isn't a very useful thing in someone
|
|
||||||
* else's installation ISO.
|
|
||||||
*/
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: qsTr("About")
|
text: qsTr("About")
|
||||||
icon.name: "dialog-information"
|
icon.name: "dialog-information"
|
||||||
Kirigami.Theme.backgroundColor: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.4)
|
Kirigami.Theme.backgroundColor: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.4)
|
||||||
Kirigami.Theme.textColor: Kirigami.Theme.textColor
|
Kirigami.Theme.textColor: Kirigami.Theme.textColor
|
||||||
|
|
||||||
visible: false
|
visible: true
|
||||||
onClicked: {
|
onClicked: {
|
||||||
//onClicked: load.source = "file:/usr/share/calamares/branding/kaos_branding/show.qml"
|
//onClicked: load.source = "file:/usr/share/calamares/branding/default/show.qml"
|
||||||
onClicked: load.source = "about.qml"
|
onClicked: load.source = "about.qml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Button
|
|
||||||
{
|
Button {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: qsTr("Support")
|
text: qsTr("Support")
|
||||||
icon.name: "system-help"
|
icon.name: "system-help"
|
||||||
@ -94,8 +90,8 @@ Page
|
|||||||
visible: config.supportUrl !== ""
|
visible: config.supportUrl !== ""
|
||||||
onClicked: Qt.openUrlExternally(config.supportUrl)
|
onClicked: Qt.openUrlExternally(config.supportUrl)
|
||||||
}
|
}
|
||||||
Button
|
|
||||||
{
|
Button {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: qsTr("Known issues")
|
text: qsTr("Known issues")
|
||||||
icon.name: "tools-report-bug"
|
icon.name: "tools-report-bug"
|
||||||
@ -105,8 +101,8 @@ Page
|
|||||||
visible: config.knownIssuesUrl !== ""
|
visible: config.knownIssuesUrl !== ""
|
||||||
onClicked: Qt.openUrlExternally(config.knownIssuesUrl)
|
onClicked: Qt.openUrlExternally(config.knownIssuesUrl)
|
||||||
}
|
}
|
||||||
Button
|
|
||||||
{
|
Button {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: qsTr("Release notes")
|
text: qsTr("Release notes")
|
||||||
icon.name: "folder-text"
|
icon.name: "folder-text"
|
||||||
@ -114,10 +110,11 @@ Page
|
|||||||
Kirigami.Theme.textColor: Kirigami.Theme.textColor
|
Kirigami.Theme.textColor: Kirigami.Theme.textColor
|
||||||
|
|
||||||
visible: config.releaseNotesUrl !== ""
|
visible: config.releaseNotesUrl !== ""
|
||||||
onClicked: Qt.openUrlExternally(config.releaseNotesUrl)
|
onClicked: load.source = "release_notes.qml"
|
||||||
|
//onClicked: load.source = "file:/usr/share/calamares/release_notes.qml"
|
||||||
}
|
}
|
||||||
Button
|
|
||||||
{
|
Button {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: qsTr("Donate")
|
text: qsTr("Donate")
|
||||||
icon.name: "taxes-finances"
|
icon.name: "taxes-finances"
|
||||||
@ -128,8 +125,41 @@ Page
|
|||||||
onClicked: Qt.openUrlExternally(config.donateUrl)
|
onClicked: Qt.openUrlExternally(config.donateUrl)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loader
|
|
||||||
{
|
RowLayout {
|
||||||
|
id: languageBar
|
||||||
|
width: parent.width /1.2
|
||||||
|
height: 48
|
||||||
|
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.bottomMargin: parent.height /7
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
spacing: Kirigami.Units.largeSpacing* 4
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
Layout.fillWidth: true
|
||||||
|
focus: true
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
height: 48
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "img/language-icon-48px.png"
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: languages
|
||||||
|
anchors.left: image.right
|
||||||
|
width: languageBar.width /1.1
|
||||||
|
textRole: "label"
|
||||||
|
currentIndex: 4 //model.currentIndex
|
||||||
|
model: config.languagesModel
|
||||||
|
onCurrentIndexChanged: console.debug(currentText, currentIndex)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Loader {
|
||||||
id:load
|
id:load
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
<qresource>
|
<qresource>
|
||||||
<file alias="welcomeq.qml">welcomeq.qml</file>
|
<file alias="welcomeq.qml">welcomeq.qml</file>
|
||||||
<file alias="about.qml">about.qml</file>
|
<file alias="about.qml">about.qml</file>
|
||||||
|
<file alias="release_notes.qml">release_notes.qml</file>
|
||||||
<file>img/squid.png</file>
|
<file>img/squid.png</file>
|
||||||
<file>img/chevron-left-solid.svg</file>
|
<file>img/chevron-left-solid.svg</file>
|
||||||
|
<file>img/language-icon-48px.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
Loading…
Reference in New Issue
Block a user