diff --git a/.gitignore b/.gitignore index d67fee190..2f36a5de6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ __pycache__ *.pro.user *.pro.user.* *.moc +*.qmlc moc_*.cpp qrc_*.cpp ui_*.h diff --git a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake index bc2f6f9c9..40c153ef7 100644 --- a/CMakeModules/CalamaresAddBrandingSubdirectory.cmake +++ b/CMakeModules/CalamaresAddBrandingSubdirectory.cmake @@ -1,43 +1,136 @@ +# === This file is part of Calamares - === +# +# 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 . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# Support macros for creating Calamares branding components. +# +# Calamares branding components have two parts: +# - a branding.desc file that tells Calamares how to describe the product +# (e.g. strings like "Generic GNU/Linux") and the name of a QML file +# (the "slideshow") that is displayed during installation. +# - the QML files themselves, plus supporting images etc. +# +# Branding components can be created inside the Calamares source tree +# (there is one example the `default/` branding, which is also connected +# to the default configuration shipped with Calamares), but they can be +# built outside of, and largely independently of, Calamares by using +# these CMake macros. +# +# See the calamares-examples repository for more examples. +# +include( CMakeParseArguments) + include( CMakeColors ) -function( calamares_add_branding_subdirectory ) - set( SUBDIRECTORY ${ARGV0} ) +# Usage calamares_add_branding( [DIRECTORY ] [SUBDIRECTORIES ...]) +# +# Adds a branding component to the build: +# - the component's top-level files are copied into the build-dir; +# CMakeLists.txt is excluded from the glob. +# - the component's top-level files are installed into the component branding dir +# +# The branding component lives in if given, otherwise the +# current source directory. The branding component is installed +# with the given , which is usually the name of the +# directory containing the component, and which must match the +# *componentName* in `branding.desc`. +# +# If SUBDIRECTORIES are given, then those are copied (each one level deep) +# to the installation location as well, preserving the subdirectory name. +function( calamares_add_branding NAME ) + set( _CABT_DIRECTORY "." ) + cmake_parse_arguments( _CABT "" "DIRECTORY" "SUBDIRECTORIES" ${ARGN} ) + set( SUBDIRECTORY ${_CABT_DIRECTORY} ) + set( _brand_dir ${_CABT_DIRECTORY} ) - if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) - add_subdirectory( $SUBDIRECTORY ) - message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${SUBDIRECTORY}${ColorReset}" ) + set( BRANDING_DIR share/calamares/branding ) + set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} ) - elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" ) - set( BRANDING_DIR share/calamares/branding ) - set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${SUBDIRECTORY} ) - - if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" ) - message( "-- ${BoldYellow}Warning:${ColorReset} branding component ${BoldRed}${SUBDIRECTORY}${ColorReset} has a translations subdirectory but no CMakeLists.txt." ) - message( "" ) - return() - endif() - - # We glob all the files inside the subdirectory, and we make sure they are - # synced with the bindir structure and installed. - file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*" ) + foreach( _subdir "" ${_CABT_SUBDIRECTORIES} ) + file( GLOB BRANDING_COMPONENT_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${_brand_dir} "${_brand_dir}/${_subdir}/*" ) + message(STATUS "${BRANDING_COMPONENT_FILES}") foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} ) - if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ) - configure_file( ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} ${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} COPYONLY ) + set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} ) + if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} ) + configure_file( ${_subpath} ${_subpath} COPYONLY ) - install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${BRANDING_COMPONENT_FILE} - DESTINATION ${BRANDING_COMPONENT_DESTINATION} ) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_subpath} + DESTINATION ${BRANDING_COMPONENT_DESTINATION}/${_subdir}/ ) endif() endforeach() + endforeach() - message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${SUBDIRECTORY}${ColorReset}" ) - if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" ) - message( " ${Green}TYPE:${ColorReset} branding component" ) -# message( " ${Green}FILES:${ColorReset} ${BRANDING_COMPONENT_FILES}" ) - message( " ${Green}BRANDING_COMPONENT_DESTINATION:${ColorReset} ${BRANDING_COMPONENT_DESTINATION}" ) - message( "" ) + message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} branding component: ${BoldRed}${NAME}${ColorReset}" ) + if( NOT CMAKE_BUILD_TYPE STREQUAL "Release" ) + message( " ${Green}TYPE:${ColorReset} branding component" ) + message( " ${Green}BRANDING_COMPONENT_DESTINATION:${ColorReset} ${BRANDING_COMPONENT_DESTINATION}" ) + endif() +endfunction() + +# Usage calamares_add_branding_translations( [DIRECTORY ]) +# +# Adds the translations for a branding component to the build: +# - the component's lang/ directory is scanned for .ts files +# - the component's translations are installed into the component branding dir +# +# Translation files must be called calamares-_.ts . Optionally +# the lang/ dir is found in the given instead of the current source +# directory. +function( calamares_add_branding_translations NAME ) + set( _CABT_DIRECTORY "." ) + cmake_parse_arguments( _CABT "" "DIRECTORY" "" ${ARGN} ) + set( SUBDIRECTORY ${_CABT_DIRECTORY} ) + set( _brand_dir ${_CABT_DIRECTORY} ) + + set( BRANDING_DIR share/calamares/branding ) + set( BRANDING_COMPONENT_DESTINATION ${BRANDING_DIR}/${NAME} ) + + file( GLOB BRANDING_TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${SUBDIRECTORY}/lang/calamares-${NAME}_*.ts" ) + if ( BRANDING_TRANSLATION_FILES ) + qt5_add_translation( QM_FILES ${BRANDING_TRANSLATION_FILES} ) + add_custom_target( branding-translation-${NAME} ALL DEPENDS ${QM_FILES} ) + install( FILES ${QM_FILES} DESTINATION ${BRANDING_COMPONENT_DESTINATION}/lang/ ) + list( LENGTH BRANDING_TRANSLATION_FILES _branding_count ) + message( " ${Green}BRANDING_TRANSLATIONS:${ColorReset} ${_branding_count} language(s)" ) + endif() +endfunction() + +# Usage calamares_add_branding_subdirectory( [SUBDIRECTORIES ...]) +# +# Adds a branding component from a subdirectory: +# - if there is a CMakeLists.txt, use that +# - otherwise assume a "standard" setup with top-level files and a lang/ dir for translations +# +# If SUBDIRECTORIES are given, they are relative to , and are +# copied (one level deep) to the install location as well. +function( calamares_add_branding_subdirectory SUBDIRECTORY ) + cmake_parse_arguments( _CABS "" "" "SUBDIRECTORIES" ${ARGN} ) + + if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) + add_subdirectory( ${SUBDIRECTORY} ) + elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/branding.desc" ) + calamares_add_branding( ${SUBDIRECTORY} DIRECTORY ${SUBDIRECTORY} SUBDIRECTORIES ${_CABS_SUBDIRECTORIES} ) + if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" ) + calamares_add_branding_translations( ${SUBDIRECTORY} DIRECTORY ${SUBDIRECTORY} ) endif() else() message( "-- ${BoldYellow}Warning:${ColorReset} tried to add branding component subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no branding.desc." ) - message( "" ) endif() + message( "" ) endfunction() diff --git a/CMakeModules/CalamaresAddLibrary.cmake b/CMakeModules/CalamaresAddLibrary.cmake index f183277c8..f6e96d12a 100644 --- a/CMakeModules/CalamaresAddLibrary.cmake +++ b/CMakeModules/CalamaresAddLibrary.cmake @@ -1,3 +1,25 @@ +# === This file is part of Calamares - === +# +# 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 . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# Support functions for building plugins. + include( CMakeParseArguments ) function(calamares_add_library) @@ -64,7 +86,7 @@ function(calamares_add_library) endif() # add link targets - target_link_libraries(${target} + target_link_libraries(${target} LINK_PUBLIC ${CALAMARES_LIBRARIES} Qt5::Core Qt5::Gui diff --git a/CMakeModules/CalamaresAddModuleSubdirectory.cmake b/CMakeModules/CalamaresAddModuleSubdirectory.cmake index 32d9ea952..af26f5a74 100644 --- a/CMakeModules/CalamaresAddModuleSubdirectory.cmake +++ b/CMakeModules/CalamaresAddModuleSubdirectory.cmake @@ -1,3 +1,26 @@ +# === This file is part of Calamares - === +# +# 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 . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# Function and support code for adding a Calamares module (either a Qt / C++ plugin, +# or a Python module, or whatever) to the build. +# include( CalamaresAddTranslations ) set( MODULE_DATA_DESTINATION share/calamares/modules ) diff --git a/CMakeModules/CalamaresAddPlugin.cmake b/CMakeModules/CalamaresAddPlugin.cmake index 658fd364a..e02102829 100644 --- a/CMakeModules/CalamaresAddPlugin.cmake +++ b/CMakeModules/CalamaresAddPlugin.cmake @@ -1,3 +1,23 @@ +# === This file is part of Calamares - === +# +# 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 . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# # Convenience function for creating a C++ (qtplugin) module for Calamares. # This function provides cmake-time feedback about the plugin, adds # targets for compilation and boilerplate information, and creates diff --git a/CMakeModules/CalamaresAddTranslations.cmake b/CMakeModules/CalamaresAddTranslations.cmake index b0a623908..63bf63189 100644 --- a/CMakeModules/CalamaresAddTranslations.cmake +++ b/CMakeModules/CalamaresAddTranslations.cmake @@ -1,3 +1,25 @@ +# === This file is part of Calamares - === +# +# 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 . +# +# SPDX-License-Identifier: GPL-3.0+ +# License-Filename: LICENSE +# +### +# +# This file has not yet been documented for use outside of Calamares itself. + include( CMakeParseArguments ) # Internal macro for adding the C++ / Qt translations to the diff --git a/CalamaresConfig.cmake.in b/CalamaresConfig.cmake.in index 5d1b0635f..6d32410c6 100644 --- a/CalamaresConfig.cmake.in +++ b/CalamaresConfig.cmake.in @@ -1,8 +1,16 @@ -# - Config file for the Calamares package +# Config file for the Calamares package +# # It defines the following variables # CALAMARES_INCLUDE_DIRS - include directories for Calamares # CALAMARES_LIBRARIES - libraries to link against -# CALAMARES_EXECUTABLE - the bar executable +# CALAMARES_USE_FILE - name of a convenience include +# CALAMARES_APPLICATION_NAME - human-readable application name +# +# Typical use is: +# +# find_package(Calamares REQUIRED) +# include("${CALAMARES_USE_FILE}") +# # Compute paths get_filename_component(CALAMARES_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) @@ -18,4 +26,7 @@ include("${CALAMARES_CMAKE_DIR}/CalamaresLibraryDepends.cmake") # These are IMPORTED targets created by CalamaresLibraryDepends.cmake set(CALAMARES_LIBRARIES calamares) + +# Convenience variables set(CALAMARES_USE_FILE "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake") +set(CALAMARES_APPLICATION_NAME "Calamares") diff --git a/CalamaresUse.cmake.in b/CalamaresUse.cmake.in index 474704ec1..00f3c968d 100644 --- a/CalamaresUse.cmake.in +++ b/CalamaresUse.cmake.in @@ -20,7 +20,7 @@ if( NOT CALAMARES_CMAKE_DIR ) endif() set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CALAMARES_CMAKE_DIR} ) -find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets ) +find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets LinguistTools ) include( CalamaresAddLibrary ) include( CalamaresAddModuleSubdirectory ) diff --git a/ci/txpush.sh b/ci/txpush.sh index fe6d7170f..cf1c3b883 100755 --- a/ci/txpush.sh +++ b/ci/txpush.sh @@ -33,7 +33,10 @@ fi # sources, then push to Transifex export QT_SELECT=5 -lupdate src/ -ts -no-obsolete lang/calamares_en.ts +# Don't pull branding translations in, +# those are done separately. +_srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml" +lupdate $_srcdirs -ts -no-obsolete lang/calamares_en.ts tx push --source --no-interactive -r calamares.calamares-master tx push --source --no-interactive -r calamares.fdo diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 7b50fbc0d..c9f76e58e 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -1865,7 +1865,7 @@ Sortida: Bad parameters for process job call. - Paràmetres incorrectes per a la crida del procés. + Paràmetres incorrectes per a la crida de la tasca del procés. diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 644014970..c1122d135 100644 --- a/lang/calamares_da.ts +++ b/lang/calamares_da.ts @@ -1244,7 +1244,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Memory allocation error when setting '%1' - + Fejl ved allokering af hukommelse ved sættelse af '%1' @@ -1264,7 +1264,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password differs with case changes only - + Adgangskoden har kun ændringer i store/små bogstaver @@ -1279,7 +1279,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password contains words from the real name of the user in some form - + Adgangskoden indeholder i nogen form ord fra brugerens rigtige navn @@ -1319,12 +1319,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password contains less than %1 non-alphanumeric characters - + Adgangskoden indeholder færre end %1 ikke-alfanumeriske tegn The password contains too few non-alphanumeric characters - + Adgangskoden indeholder for få ikke-alfanumeriske tegn @@ -1354,32 +1354,32 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password contains more than %1 same characters consecutively - + Adgangskoden indeholder flere end %1 af de samme tegn i træk The password contains too many same characters consecutively - + Adgangskoden indeholder for mange af de samme tegn i træk The password contains more than %1 characters of the same class consecutively - + Adgangskoden indeholder flere end %1 tegn af den samme klasse i træk The password contains too many characters of the same class consecutively - + Adgangskoden indeholder for mange tegn af den samme klasse i træk The password contains monotonic sequence longer than %1 characters - + Adgangskoden indeholder monoton sekvens som er længere end %1 tegn The password contains too long of a monotonic character sequence - + Adgangskoden indeholder en monoton tegnsekvens som er for lang @@ -1394,17 +1394,17 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Password generation failed - required entropy too low for settings - + Generering af adgangskode mislykkedes - krævede entropi er for lav til indstillinger The password fails the dictionary check - %1 - + Adgangskoden bestod ikke ordbogstjekket - %1 The password fails the dictionary check - + Adgangskoden bestod ikke ordbogstjekket @@ -1419,7 +1419,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. Bad integer value of setting - %1 - + Dårlig heltalsværdi til indstilling - %1 diff --git a/lang/calamares_hr.ts b/lang/calamares_hr.ts index e8aed46df..0561f8b38 100644 --- a/lang/calamares_hr.ts +++ b/lang/calamares_hr.ts @@ -1239,232 +1239,232 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. Password is too weak - + Lozinka je preslaba Memory allocation error when setting '%1' - + Pogreška u dodjeli memorije prilikom postavljanja '%1' Memory allocation error - + Pogreška u dodjeli memorije The password is the same as the old one - + Lozinka je ista prethodnoj The password is a palindrome - + Lozinka je palindrom The password differs with case changes only - + Lozinka se razlikuje samo u promjenama velikog i malog slova The password is too similar to the old one - + Lozinka je slična prethodnoj The password contains the user name in some form - + Lozinka u nekoj formi sadrži korisničko ime The password contains words from the real name of the user in some form - + Lozinka u nekoj formi sadrži stvarno ime korisnika The password contains forbidden words in some form - + Lozinka u nekoj formi sadrži zabranjene rijeći The password contains less than %1 digits - + Lozinka sadrži manje od %1 brojeva The password contains too few digits - + Lozinka sadrži premalo brojeva The password contains less than %1 uppercase letters - + Lozinka sadrži manje od %1 velikih slova The password contains too few uppercase letters - + Lozinka sadrži premalo velikih slova The password contains less than %1 lowercase letters - + Lozinka sadrži manje od %1 malih slova The password contains too few lowercase letters - + Lozinka sadrži premalo malih slova The password contains less than %1 non-alphanumeric characters - + Lozinka sadrži manje od %1 ne-alfanumeričkih znakova. The password contains too few non-alphanumeric characters - + Lozinka sadrži premalo ne-alfanumeričkih znakova The password is shorter than %1 characters - + Lozinka je kraća od %1 znakova The password is too short - + Lozinka je prekratka The password is just rotated old one - + Lozinka je jednaka rotiranoj prethodnoj The password contains less than %1 character classes - + Lozinka sadrži manje od %1 razreda znakova The password does not contain enough character classes - + Lozinka ne sadrži dovoljno razreda znakova The password contains more than %1 same characters consecutively - + Lozinka sadrži više od %1 uzastopnih znakova The password contains too many same characters consecutively - + Lozinka sadrži previše uzastopnih znakova The password contains more than %1 characters of the same class consecutively - + Lozinka sadrži više od %1 uzastopnih znakova iz istog razreda The password contains too many characters of the same class consecutively - + Lozinka sadrži previše uzastopnih znakova iz istog razreda The password contains monotonic sequence longer than %1 characters - + Lozinka sadrži monotonu sekvencu dužu od %1 znakova The password contains too long of a monotonic character sequence - + Lozinka sadrži previše monotonu sekvencu znakova No password supplied - + Nema isporučene lozinke Cannot obtain random numbers from the RNG device - + Ne mogu dobiti slučajne brojeve od RNG uređaja Password generation failed - required entropy too low for settings - + Generiranje lozinke nije uspjelo - potrebna entropija je premala za postavke The password fails the dictionary check - %1 - + Nije uspjela provjera rječnika za lozinku - %1 The password fails the dictionary check - + Nije uspjela provjera rječnika za lozinku Unknown setting - %1 - + Nepoznate postavke - %1 Unknown setting - + Nepoznate postavke Bad integer value of setting - %1 - + Loša cjelobrojna vrijednost postavke - %1 Bad integer value - + Loša cjelobrojna vrijednost Setting %1 is not of integer type - + Postavka %1 nije cjelobrojnog tipa Setting is not of integer type - + Postavka nije cjelobrojnog tipa Setting %1 is not of string type - + Postavka %1 nije tipa znakovnog niza Setting is not of string type - + Postavka nije tipa znakovnog niza Opening the configuration file failed - + Nije uspjelo otvaranje konfiguracijske datoteke The configuration file is malformed - + Konfiguracijska datoteka je oštećena Fatal failure - + Fatalna pogreška Unknown error - + Nepoznata greška @@ -1825,7 +1825,8 @@ Instalacijski program će izaći i sve promjene će biti izgubljene. There was no output from the command. - + +Nema izlazne informacije od naredbe. diff --git a/lang/calamares_ja.ts b/lang/calamares_ja.ts index 733a83366..34eb0c07b 100644 --- a/lang/calamares_ja.ts +++ b/lang/calamares_ja.ts @@ -486,7 +486,7 @@ The installer will quit and all changes will be lost. Contextual Processes Job - + コンテキストプロセスジョブ @@ -1370,7 +1370,7 @@ The installer will quit and all changes will be lost. The password contains too many characters of the same class consecutively - + パスワードで同じ文字クラスの文字を続けすぎています @@ -2326,7 +2326,7 @@ Output: Shell Processes Job - + シェルプロセスジョブ @@ -2441,17 +2441,17 @@ Output: By selecting this you will send information about your installation and hardware. This information will <b>only be sent once</b> after the installation finishes. - + インストールやハードウェアの情報を送信します。この情報はインストール終了後 <b> 1回だけ送信されます</b> 。 By selecting this you will <b>periodically</b> send information about your installation, hardware and applications, to %1. - + %1 へのハードウェアやアプリケーションのインストール情報を定期的に送信します。 By selecting this you will <b>regularly</b> send information about your installation, hardware, applications and usage patterns, to %1. - + %1 へのハードウェアやアプリケーションのインストール、使用法などの情報を定期的に送信します。 diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 8ed9e679d..1caabe62b 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -749,7 +749,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. This is a <strong>loop</strong> device.<br><br>It is a pseudo-device with no partition table that makes a file accessible as a block device. This kind of setup usually only contains a single filesystem. - Este é um dispositivo de <strong>loop</strong>.<br><br>Este é um pseudo-dispositivo sem tabela de partições que faz um arquivo acessível como um dispositivo de bloco. Este tipo de configuração normalmente contém apenas um único sistema de arquivos. + Este é um dispositivo de <strong>loop</strong>.<br><br>Esse é um pseudo-dispositivo sem tabela de partições que faz um arquivo acessível como um dispositivo de bloco. Esse tipo de configuração normalmente contém apenas um único sistema de arquivos. @@ -1261,12 +1261,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password is a palindrome - + A senha é um palíndromo The password differs with case changes only - + A senha difere apenas com mudanças entre maiúsculas ou minúsculas @@ -1276,12 +1276,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password contains the user name in some form - + A senha contém o nome de usuário em alguma forma The password contains words from the real name of the user in some form - + A senha contém palavras do nome real do usuário em alguma forma @@ -1291,27 +1291,27 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password contains less than %1 digits - + A senha contém menos de %1 dígitos The password contains too few digits - + A senha contém poucos dígitos The password contains less than %1 uppercase letters - + A senha contém menos que %1 letras maiúsculas The password contains too few uppercase letters - + A senha contém poucas letras maiúsculas The password contains less than %1 lowercase letters - + A senha contém menos que %1 letras minúsculas @@ -1321,7 +1321,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password contains less than %1 non-alphanumeric characters - + A senha contém menos que %1 caracteres não alfanuméricos @@ -1331,7 +1331,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password is shorter than %1 characters - + A senha é menor que %1 caracteres @@ -1341,22 +1341,22 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password is just rotated old one - + A senha é apenas uma antiga modificada The password contains less than %1 character classes - + A senha contém menos de %1 tipos de caracteres The password does not contain enough character classes - + A senha não contém tipos suficientes de caracteres The password contains more than %1 same characters consecutively - + A senha contém mais que %1 caracteres iguais consecutivamente @@ -1366,7 +1366,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password contains more than %1 characters of the same class consecutively - + A senha contém mais que %1 caracteres do mesmo tipo consecutivamente @@ -1376,12 +1376,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The password contains monotonic sequence longer than %1 characters - + A senha contém uma sequência monotônica com mais de %1 caracteres The password contains too long of a monotonic character sequence - + A senha contém uma sequência de caracteres monotônicos muito longa @@ -1396,22 +1396,22 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Password generation failed - required entropy too low for settings - + A geração de senha falhou - a entropia requerida é muito baixa para as configurações The password fails the dictionary check - %1 - + A senha falhou na verificação do dicionário - %1 The password fails the dictionary check - + A senha falhou na verificação do dicionário Unknown setting - %1 - + Configuração desconhecida - %1 @@ -1421,17 +1421,17 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Bad integer value of setting - %1 - + Valor de número inteiro errado na configuração - %1 Bad integer value - + Valor de número inteiro errado Setting %1 is not of integer type - + A configuração %1 não é do tipo inteiro @@ -1441,7 +1441,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. Setting %1 is not of string type - + A configuração %1 não é do tipo string @@ -1456,7 +1456,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. The configuration file is malformed - + O arquivo de configuração está defeituoso @@ -1778,7 +1778,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. 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. - Uma partição de inicialização separada foi configurada juntamente com uma partição raiz criptografada, mas a partição de inicialização não é criptografada.<br/><br/>Há preocupações de segurança quanto a este tipo de configuração, porque arquivos de sistema importantes são mantidos em uma partição não criptografada.<br/>Você pode continuar se quiser, mas o desbloqueio do sistema de arquivos acontecerá mais tarde durante a inicialização do sistema.<br/>Para criptografar a partição de inicialização, volte e recrie-a, selecionando <strong>Criptografar</strong> na janela de criação da partição. + Uma partição de inicialização separada foi configurada juntamente com uma partição raiz criptografada, mas a partição de inicialização não é criptografada.<br/><br/>Há preocupações de segurança quanto a esse tipo de configuração, porque arquivos de sistema importantes são mantidos em uma partição não criptografada.<br/>Você pode continuar se quiser, mas o desbloqueio do sistema de arquivos acontecerá mais tarde durante a inicialização do sistema.<br/>Para criptografar a partição de inicialização, volte e recrie-a, selecionando <strong>Criptografar</strong> na janela de criação da partição. diff --git a/lang/calamares_ru.ts b/lang/calamares_ru.ts index 8484f5ca4..3fc140067 100644 --- a/lang/calamares_ru.ts +++ b/lang/calamares_ru.ts @@ -472,7 +472,7 @@ The installer will quit and all changes will be lost. Could not run command. - + Не удалось выполнить команду. @@ -1388,7 +1388,7 @@ The installer will quit and all changes will be lost. Cannot obtain random numbers from the RNG device - + Не удаётся получить случайные числа с устройства RNG @@ -1398,12 +1398,12 @@ The installer will quit and all changes will be lost. The password fails the dictionary check - %1 - + Пароль не прошёл проверку на использование словарных слов - %1 The password fails the dictionary check - + Пароль не прошёл проверку на использование словарных слов @@ -1448,7 +1448,7 @@ The installer will quit and all changes will be lost. Opening the configuration file failed - + Не удалось открыть конфигурационный файл @@ -1836,12 +1836,12 @@ Output: External command crashed. - + Сбой внешней команды. Command <i>%1</i> crashed. - + Сбой команды <i>%1</i>. @@ -1881,7 +1881,7 @@ Output: Command <i>%1</i> finished with exit code %2. - + Команда <i>%1</i> завершилась с кодом %2. diff --git a/lang/calamares_sk.ts b/lang/calamares_sk.ts index 66b4ef235..b196209c4 100644 --- a/lang/calamares_sk.ts +++ b/lang/calamares_sk.ts @@ -1249,7 +1249,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Memory allocation error - + Chyba počas vyhradzovania pamäte @@ -1274,12 +1274,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. The password contains the user name in some form - + Heslo obsahuje v nejakom tvare používateľské meno The password contains words from the real name of the user in some form - + Heslo obsahuje v nejakom tvare slová zo skutočného mena používateľa @@ -1384,12 +1384,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. No password supplied - + Nebolo poskytnuté žiadne heslo Cannot obtain random numbers from the RNG device - + Nedajú sa získať náhodné čísla zo zariadenia RNG @@ -1409,42 +1409,42 @@ Inštalátor sa ukončí a všetky zmeny budú stratené. Unknown setting - %1 - + Neznáme nastavenie - %1 Unknown setting - + Neznáme nastavenie Bad integer value of setting - %1 - + Nesprávna celočíselná hodnota nastavenia - %1 Bad integer value - + Nesprávna celočíselná hodnota Setting %1 is not of integer type - + Nastavenie %1 nie je celé číslo Setting is not of integer type - + Nastavenie nie je celé číslo Setting %1 is not of string type - + Nastavenie %1 nie je reťazec Setting is not of string type - + Nastavenie nie je reťazec diff --git a/lang/calamares_zh_CN.ts b/lang/calamares_zh_CN.ts index e1a46eeb7..4876bd82e 100644 --- a/lang/calamares_zh_CN.ts +++ b/lang/calamares_zh_CN.ts @@ -1241,232 +1241,232 @@ The installer will quit and all changes will be lost. Password is too weak - + 密码强度太弱 Memory allocation error when setting '%1' - + 设置“%1”时发生内存分配错误 Memory allocation error - + 内存分配错误 The password is the same as the old one - + 新密码和老密码一致 The password is a palindrome - + 新密码为回文 The password differs with case changes only - + 新密码和老密码只有大小写区别 The password is too similar to the old one - + 新密码和老密码过于相似 The password contains the user name in some form - + 新密码包含用户名 The password contains words from the real name of the user in some form - + 新密码包含用户真实姓名 The password contains forbidden words in some form - + 新密码包含不允许使用的词组 The password contains less than %1 digits - + 新密码包含少于 %1 个数字 The password contains too few digits - + 新密码包含太少数字 The password contains less than %1 uppercase letters - + 新密码包含少于 %1 个大写字母 The password contains too few uppercase letters - + 新密码包含太少大写字母 The password contains less than %1 lowercase letters - + 新密码包含少于 %1 个小写字母 The password contains too few lowercase letters - + 新密码包含太少小写字母 The password contains less than %1 non-alphanumeric characters - + 新密码包含少于 %1 个非字母/数字字符 The password contains too few non-alphanumeric characters - + 新密码包含太少非字母/数字字符 The password is shorter than %1 characters - + 新密码短于 %1 位 The password is too short - + 新密码过短 The password is just rotated old one - + 新密码仅对老密码作了字序调整 The password contains less than %1 character classes - + 新密码包含少于 %1 个字符类型 The password does not contain enough character classes - + 新密码包含太少字符类型 The password contains more than %1 same characters consecutively - + 新密码包含超过 %1 个连续的相同字符 The password contains too many same characters consecutively - + 新密码包含过多连续的相同字符 The password contains more than %1 characters of the same class consecutively - + 新密码包含超过 %1 个连续的同类型字符 The password contains too many characters of the same class consecutively - + 新密码包含过多连续的同类型字符 The password contains monotonic sequence longer than %1 characters - + 新密码包含超过 %1 个字符长度的单调序列 The password contains too long of a monotonic character sequence - + 新密码包含过长的单调序列 No password supplied - + 未输入密码 Cannot obtain random numbers from the RNG device - + 无法从随机数生成器 (RNG) 设备获取随机数 Password generation failed - required entropy too low for settings - + 无法生成密码 - 熵值过低 The password fails the dictionary check - %1 - + 新密码无法通过字典检查 - %1 The password fails the dictionary check - + 新密码无法通过字典检查 Unknown setting - %1 - + 未知设置 - %1 Unknown setting - + 未知设置 Bad integer value of setting - %1 - + 设置的整数值非法 - %1 Bad integer value - + 设置的整数值非法 Setting %1 is not of integer type - + 设定值 %1 不是整数类型 Setting is not of integer type - + 设定值不是整数类型 Setting %1 is not of string type - + 设定值 %1 不是字符串类型 Setting is not of string type - + 设定值不是字符串类型 Opening the configuration file failed - + 无法打开配置文件 The configuration file is malformed - + 配置文件格式不正确 Fatal failure - + 致命错误 Unknown error - + 未知错误 @@ -1827,7 +1827,8 @@ The installer will quit and all changes will be lost. There was no output from the command. - + +命令没有输出。 diff --git a/lang/python/ar/LC_MESSAGES/python.mo b/lang/python/ar/LC_MESSAGES/python.mo index 17c753cce..0b54ffe92 100644 Binary files a/lang/python/ar/LC_MESSAGES/python.mo and b/lang/python/ar/LC_MESSAGES/python.mo differ diff --git a/lang/python/ast/LC_MESSAGES/python.mo b/lang/python/ast/LC_MESSAGES/python.mo index 46fd38d91..dbf7ea574 100644 Binary files a/lang/python/ast/LC_MESSAGES/python.mo and b/lang/python/ast/LC_MESSAGES/python.mo differ diff --git a/lang/python/bg/LC_MESSAGES/python.mo b/lang/python/bg/LC_MESSAGES/python.mo index 50331054f..98846ddf8 100644 Binary files a/lang/python/bg/LC_MESSAGES/python.mo and b/lang/python/bg/LC_MESSAGES/python.mo differ diff --git a/lang/python/ca/LC_MESSAGES/python.mo b/lang/python/ca/LC_MESSAGES/python.mo index 377c333bb..aab9d6093 100644 Binary files a/lang/python/ca/LC_MESSAGES/python.mo and b/lang/python/ca/LC_MESSAGES/python.mo differ diff --git a/lang/python/cs_CZ/LC_MESSAGES/python.mo b/lang/python/cs_CZ/LC_MESSAGES/python.mo index c652843e8..4fa179e89 100644 Binary files a/lang/python/cs_CZ/LC_MESSAGES/python.mo and b/lang/python/cs_CZ/LC_MESSAGES/python.mo differ diff --git a/lang/python/da/LC_MESSAGES/python.mo b/lang/python/da/LC_MESSAGES/python.mo index b1f153cb7..71e2969ce 100644 Binary files a/lang/python/da/LC_MESSAGES/python.mo and b/lang/python/da/LC_MESSAGES/python.mo differ diff --git a/lang/python/de/LC_MESSAGES/python.mo b/lang/python/de/LC_MESSAGES/python.mo index 5357f3d47..54e535e4e 100644 Binary files a/lang/python/de/LC_MESSAGES/python.mo and b/lang/python/de/LC_MESSAGES/python.mo differ diff --git a/lang/python/el/LC_MESSAGES/python.mo b/lang/python/el/LC_MESSAGES/python.mo index 4e569778d..cbd13a3a9 100644 Binary files a/lang/python/el/LC_MESSAGES/python.mo and b/lang/python/el/LC_MESSAGES/python.mo differ diff --git a/lang/python/en_GB/LC_MESSAGES/python.mo b/lang/python/en_GB/LC_MESSAGES/python.mo index 4c508593d..855a80e5c 100644 Binary files a/lang/python/en_GB/LC_MESSAGES/python.mo and b/lang/python/en_GB/LC_MESSAGES/python.mo differ diff --git a/lang/python/es/LC_MESSAGES/python.mo b/lang/python/es/LC_MESSAGES/python.mo index e15b65293..a6d7055d5 100644 Binary files a/lang/python/es/LC_MESSAGES/python.mo and b/lang/python/es/LC_MESSAGES/python.mo differ diff --git a/lang/python/es_ES/LC_MESSAGES/python.mo b/lang/python/es_ES/LC_MESSAGES/python.mo index 8eafae88b..f7107d58d 100644 Binary files a/lang/python/es_ES/LC_MESSAGES/python.mo and b/lang/python/es_ES/LC_MESSAGES/python.mo differ diff --git a/lang/python/es_MX/LC_MESSAGES/python.mo b/lang/python/es_MX/LC_MESSAGES/python.mo index 6e9225896..297ed90f6 100644 Binary files a/lang/python/es_MX/LC_MESSAGES/python.mo and b/lang/python/es_MX/LC_MESSAGES/python.mo differ diff --git a/lang/python/es_PR/LC_MESSAGES/python.mo b/lang/python/es_PR/LC_MESSAGES/python.mo index 9683fbfc5..77e4dd2a9 100644 Binary files a/lang/python/es_PR/LC_MESSAGES/python.mo and b/lang/python/es_PR/LC_MESSAGES/python.mo differ diff --git a/lang/python/et/LC_MESSAGES/python.mo b/lang/python/et/LC_MESSAGES/python.mo index 1c57bd3fa..fda535ec6 100644 Binary files a/lang/python/et/LC_MESSAGES/python.mo and b/lang/python/et/LC_MESSAGES/python.mo differ diff --git a/lang/python/eu/LC_MESSAGES/python.mo b/lang/python/eu/LC_MESSAGES/python.mo index 531ea6f96..107e8ebcf 100644 Binary files a/lang/python/eu/LC_MESSAGES/python.mo and b/lang/python/eu/LC_MESSAGES/python.mo differ diff --git a/lang/python/fa/LC_MESSAGES/python.mo b/lang/python/fa/LC_MESSAGES/python.mo index f59ad5d40..567cd71b4 100644 Binary files a/lang/python/fa/LC_MESSAGES/python.mo and b/lang/python/fa/LC_MESSAGES/python.mo differ diff --git a/lang/python/fi_FI/LC_MESSAGES/python.mo b/lang/python/fi_FI/LC_MESSAGES/python.mo index 797051dc8..1618d02a9 100644 Binary files a/lang/python/fi_FI/LC_MESSAGES/python.mo and b/lang/python/fi_FI/LC_MESSAGES/python.mo differ diff --git a/lang/python/fr/LC_MESSAGES/python.mo b/lang/python/fr/LC_MESSAGES/python.mo index 97d0179a2..2aa26a22b 100644 Binary files a/lang/python/fr/LC_MESSAGES/python.mo and b/lang/python/fr/LC_MESSAGES/python.mo differ diff --git a/lang/python/fr_CH/LC_MESSAGES/python.mo b/lang/python/fr_CH/LC_MESSAGES/python.mo index 4430eadf1..dd579fb0f 100644 Binary files a/lang/python/fr_CH/LC_MESSAGES/python.mo and b/lang/python/fr_CH/LC_MESSAGES/python.mo differ diff --git a/lang/python/gl/LC_MESSAGES/python.mo b/lang/python/gl/LC_MESSAGES/python.mo index 09ac0ccd9..8774b3541 100644 Binary files a/lang/python/gl/LC_MESSAGES/python.mo and b/lang/python/gl/LC_MESSAGES/python.mo differ diff --git a/lang/python/gu/LC_MESSAGES/python.mo b/lang/python/gu/LC_MESSAGES/python.mo index 77a7b77dc..5a9c52611 100644 Binary files a/lang/python/gu/LC_MESSAGES/python.mo and b/lang/python/gu/LC_MESSAGES/python.mo differ diff --git a/lang/python/he/LC_MESSAGES/python.mo b/lang/python/he/LC_MESSAGES/python.mo index 6c7e0fa8d..f352c66eb 100644 Binary files a/lang/python/he/LC_MESSAGES/python.mo and b/lang/python/he/LC_MESSAGES/python.mo differ diff --git a/lang/python/hi/LC_MESSAGES/python.mo b/lang/python/hi/LC_MESSAGES/python.mo index d7276c7e9..57a9d3d2c 100644 Binary files a/lang/python/hi/LC_MESSAGES/python.mo and b/lang/python/hi/LC_MESSAGES/python.mo differ diff --git a/lang/python/hr/LC_MESSAGES/python.mo b/lang/python/hr/LC_MESSAGES/python.mo index f583db109..17adb13d7 100644 Binary files a/lang/python/hr/LC_MESSAGES/python.mo and b/lang/python/hr/LC_MESSAGES/python.mo differ diff --git a/lang/python/hu/LC_MESSAGES/python.mo b/lang/python/hu/LC_MESSAGES/python.mo index 09cc63cf7..3cad3f4c5 100644 Binary files a/lang/python/hu/LC_MESSAGES/python.mo and b/lang/python/hu/LC_MESSAGES/python.mo differ diff --git a/lang/python/id/LC_MESSAGES/python.mo b/lang/python/id/LC_MESSAGES/python.mo index 7085cf05b..66d329c77 100644 Binary files a/lang/python/id/LC_MESSAGES/python.mo and b/lang/python/id/LC_MESSAGES/python.mo differ diff --git a/lang/python/is/LC_MESSAGES/python.mo b/lang/python/is/LC_MESSAGES/python.mo index 7bdf67ecf..76412409d 100644 Binary files a/lang/python/is/LC_MESSAGES/python.mo and b/lang/python/is/LC_MESSAGES/python.mo differ diff --git a/lang/python/is/LC_MESSAGES/python.po b/lang/python/is/LC_MESSAGES/python.po index 064735626..91e8eb121 100644 --- a/lang/python/is/LC_MESSAGES/python.po +++ b/lang/python/is/LC_MESSAGES/python.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Kristján Magnússon, 2017\n" +"Last-Translator: Krissi, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/lang/python/it_IT/LC_MESSAGES/python.mo b/lang/python/it_IT/LC_MESSAGES/python.mo index 398c3a816..631d1b587 100644 Binary files a/lang/python/it_IT/LC_MESSAGES/python.mo and b/lang/python/it_IT/LC_MESSAGES/python.mo differ diff --git a/lang/python/ja/LC_MESSAGES/python.mo b/lang/python/ja/LC_MESSAGES/python.mo index 8b28aa188..6a0d11cf7 100644 Binary files a/lang/python/ja/LC_MESSAGES/python.mo and b/lang/python/ja/LC_MESSAGES/python.mo differ diff --git a/lang/python/kk/LC_MESSAGES/python.mo b/lang/python/kk/LC_MESSAGES/python.mo index 41e2395c9..e5901da95 100644 Binary files a/lang/python/kk/LC_MESSAGES/python.mo and b/lang/python/kk/LC_MESSAGES/python.mo differ diff --git a/lang/python/kn/LC_MESSAGES/python.mo b/lang/python/kn/LC_MESSAGES/python.mo index 1929c5ac7..a2a97dbc4 100644 Binary files a/lang/python/kn/LC_MESSAGES/python.mo and b/lang/python/kn/LC_MESSAGES/python.mo differ diff --git a/lang/python/lo/LC_MESSAGES/python.mo b/lang/python/lo/LC_MESSAGES/python.mo index 8595066c7..5d51dd1ac 100644 Binary files a/lang/python/lo/LC_MESSAGES/python.mo and b/lang/python/lo/LC_MESSAGES/python.mo differ diff --git a/lang/python/lt/LC_MESSAGES/python.mo b/lang/python/lt/LC_MESSAGES/python.mo index 4a40e6c5c..83bf0a0fa 100644 Binary files a/lang/python/lt/LC_MESSAGES/python.mo and b/lang/python/lt/LC_MESSAGES/python.mo differ diff --git a/lang/python/mr/LC_MESSAGES/python.mo b/lang/python/mr/LC_MESSAGES/python.mo index f966de1c5..bfbcd4413 100644 Binary files a/lang/python/mr/LC_MESSAGES/python.mo and b/lang/python/mr/LC_MESSAGES/python.mo differ diff --git a/lang/python/nb/LC_MESSAGES/python.mo b/lang/python/nb/LC_MESSAGES/python.mo index b30471915..5a896436b 100644 Binary files a/lang/python/nb/LC_MESSAGES/python.mo and b/lang/python/nb/LC_MESSAGES/python.mo differ diff --git a/lang/python/nl/LC_MESSAGES/python.mo b/lang/python/nl/LC_MESSAGES/python.mo index 18e658ffb..0477a658c 100644 Binary files a/lang/python/nl/LC_MESSAGES/python.mo and b/lang/python/nl/LC_MESSAGES/python.mo differ diff --git a/lang/python/pl/LC_MESSAGES/python.mo b/lang/python/pl/LC_MESSAGES/python.mo index 438466977..d8a064d35 100644 Binary files a/lang/python/pl/LC_MESSAGES/python.mo and b/lang/python/pl/LC_MESSAGES/python.mo differ diff --git a/lang/python/pl_PL/LC_MESSAGES/python.mo b/lang/python/pl_PL/LC_MESSAGES/python.mo index c4db96fc8..7a9c33e45 100644 Binary files a/lang/python/pl_PL/LC_MESSAGES/python.mo and b/lang/python/pl_PL/LC_MESSAGES/python.mo differ diff --git a/lang/python/pt_BR/LC_MESSAGES/python.mo b/lang/python/pt_BR/LC_MESSAGES/python.mo index b0232e2ba..7f9008a5b 100644 Binary files a/lang/python/pt_BR/LC_MESSAGES/python.mo and b/lang/python/pt_BR/LC_MESSAGES/python.mo differ diff --git a/lang/python/pt_PT/LC_MESSAGES/python.mo b/lang/python/pt_PT/LC_MESSAGES/python.mo index 38a3903a4..1e1afdf34 100644 Binary files a/lang/python/pt_PT/LC_MESSAGES/python.mo and b/lang/python/pt_PT/LC_MESSAGES/python.mo differ diff --git a/lang/python/ro/LC_MESSAGES/python.mo b/lang/python/ro/LC_MESSAGES/python.mo index edd195423..a72b5ca6f 100644 Binary files a/lang/python/ro/LC_MESSAGES/python.mo and b/lang/python/ro/LC_MESSAGES/python.mo differ diff --git a/lang/python/ru/LC_MESSAGES/python.mo b/lang/python/ru/LC_MESSAGES/python.mo index 3ebeff4bc..ffbafcfcc 100644 Binary files a/lang/python/ru/LC_MESSAGES/python.mo and b/lang/python/ru/LC_MESSAGES/python.mo differ diff --git a/lang/python/sk/LC_MESSAGES/python.mo b/lang/python/sk/LC_MESSAGES/python.mo index 922ff22d2..d862931cb 100644 Binary files a/lang/python/sk/LC_MESSAGES/python.mo and b/lang/python/sk/LC_MESSAGES/python.mo differ diff --git a/lang/python/sl/LC_MESSAGES/python.mo b/lang/python/sl/LC_MESSAGES/python.mo index 3784d59be..d1ec2dce9 100644 Binary files a/lang/python/sl/LC_MESSAGES/python.mo and b/lang/python/sl/LC_MESSAGES/python.mo differ diff --git a/lang/python/sq/LC_MESSAGES/python.mo b/lang/python/sq/LC_MESSAGES/python.mo index 5a00a0d3b..9c06dc871 100644 Binary files a/lang/python/sq/LC_MESSAGES/python.mo and b/lang/python/sq/LC_MESSAGES/python.mo differ diff --git a/lang/python/sr/LC_MESSAGES/python.mo b/lang/python/sr/LC_MESSAGES/python.mo index af1b22bb9..df6bd22be 100644 Binary files a/lang/python/sr/LC_MESSAGES/python.mo and b/lang/python/sr/LC_MESSAGES/python.mo differ diff --git a/lang/python/sr@latin/LC_MESSAGES/python.mo b/lang/python/sr@latin/LC_MESSAGES/python.mo index 11cbdba12..18114e0c7 100644 Binary files a/lang/python/sr@latin/LC_MESSAGES/python.mo and b/lang/python/sr@latin/LC_MESSAGES/python.mo differ diff --git a/lang/python/sv/LC_MESSAGES/python.mo b/lang/python/sv/LC_MESSAGES/python.mo index e43e4b857..2e0d9f4ab 100644 Binary files a/lang/python/sv/LC_MESSAGES/python.mo and b/lang/python/sv/LC_MESSAGES/python.mo differ diff --git a/lang/python/th/LC_MESSAGES/python.mo b/lang/python/th/LC_MESSAGES/python.mo index 54dae4e8c..f02dc2710 100644 Binary files a/lang/python/th/LC_MESSAGES/python.mo and b/lang/python/th/LC_MESSAGES/python.mo differ diff --git a/lang/python/tr_TR/LC_MESSAGES/python.mo b/lang/python/tr_TR/LC_MESSAGES/python.mo index 8e2e8d5bc..a95ca03ad 100644 Binary files a/lang/python/tr_TR/LC_MESSAGES/python.mo and b/lang/python/tr_TR/LC_MESSAGES/python.mo differ diff --git a/lang/python/uk/LC_MESSAGES/python.mo b/lang/python/uk/LC_MESSAGES/python.mo index 4e1a108a7..d1d7a9747 100644 Binary files a/lang/python/uk/LC_MESSAGES/python.mo and b/lang/python/uk/LC_MESSAGES/python.mo differ diff --git a/lang/python/ur/LC_MESSAGES/python.mo b/lang/python/ur/LC_MESSAGES/python.mo index 859a8505c..032bf7e6b 100644 Binary files a/lang/python/ur/LC_MESSAGES/python.mo and b/lang/python/ur/LC_MESSAGES/python.mo differ diff --git a/lang/python/uz/LC_MESSAGES/python.mo b/lang/python/uz/LC_MESSAGES/python.mo index 242ba1fe0..d25e583b9 100644 Binary files a/lang/python/uz/LC_MESSAGES/python.mo and b/lang/python/uz/LC_MESSAGES/python.mo differ diff --git a/lang/python/zh_CN/LC_MESSAGES/python.mo b/lang/python/zh_CN/LC_MESSAGES/python.mo index c4653e061..21c7cb97d 100644 Binary files a/lang/python/zh_CN/LC_MESSAGES/python.mo and b/lang/python/zh_CN/LC_MESSAGES/python.mo differ diff --git a/lang/python/zh_TW/LC_MESSAGES/python.mo b/lang/python/zh_TW/LC_MESSAGES/python.mo index 5ef6f063a..327aed015 100644 Binary files a/lang/python/zh_TW/LC_MESSAGES/python.mo and b/lang/python/zh_TW/LC_MESSAGES/python.mo differ diff --git a/src/branding/README.md b/src/branding/README.md index bfdcdebba..6503bef49 100644 --- a/src/branding/README.md +++ b/src/branding/README.md @@ -7,11 +7,33 @@ file, containing brand-specific strings in a key-value structure, plus brand-specific images or QML. Such a subdirectory, when placed here, is automatically picked up by CMake and made available to Calamares. +It is recommended to package branding separately, so as to avoid +forking Calamares just for adding some files. Calamares installs +CMake support macros to help create branding packages. See the +calamares-branding repository for examples of stand-alone branding. + +## Examples + +There is one example of a branding component included with Calamares, +so that it can be run directly from the build directory for testing purposes: + + - `default/` is a sample brand for the Generic Linux distribution. It uses + the default Calamares icons and a as start-page splash it provides a + tag-cloud view of languages. The slideshow is a basic one with a few + slides of text and a single image. No translations are provided. + +Since the slideshow can be **any** QML, it is limited only by your designers +imagination and your QML experience. For straightforward presentations, +see the documentation below. There are more examples in the *calamares-branding* +repository. + +## Translations + QML files in a branding component can be translated. Translations should be placed in a subdirectory `lang/` of the branding component directory. Qt translation files are supported (`.ts` sources which get compiled into `.qm`). Inside the `lang` subdirectory all translation files must be named -according to the scheme `calamares-_.qm`. +according to the scheme `calamares-_.ts`. Text in your `show.qml` (or whatever *slideshow* is set to in the descriptor file) should be enclosed in this form for translations @@ -20,15 +42,92 @@ file) should be enclosed in this form for translations text: qsTr("This is an example text.") ``` -## Examples +## Presentation -There are two examples of branding content: +The default QML classes provided by Calamares can be used for a simple +and straightforward "slideshow" presentation with static text and +pictures. To use the default slideshow classes, start with a `show.qml` +file with the following content: - - `default/` is a sample brand for the Generic Linux distribution. It uses - the default Calamares icons and a as start-page splash it provides a - tag-cloud view of languages. The slideshow is a basic one with a few - slides of text and a single image. No translations are provided. - - `samegame/` is a similarly simple branding setup for Generic Linux, - but instead of a slideshow, it lets the user play Same Game (clicking - colored balls) during the installation. The game is taken from the - QML examples provided by the Qt Company. +``` +import QtQuick 2.5; +import calamares.slideshow 1.0; + +Presentation +{ + id: presentation +} +``` + +After the *id*, set properties of the presentation as a whole. These include: + - *loopSlides* (default true) When set, clicking past the last slide + returns to the very first slide. + - *mouseNavigation*, *arrowNavigation*, *keyShortcutsEnabled* (all default + true) enable different ways to navigate the slideshow. + - *titleColor*, *textColor* change the look of the presentation. + - *fontFamily*, *codeFontFamily* change the look of text in the presentation. + +After setting properties, you can add elements to the presentation. +Generally, you will add a few presentation-level elements first, +then slides. + - For visible navigation arrows, add elements of class *ForwardButton* and + *BackwardButton*. Set the *source* property of each to a suitable + image. See the `fancy/` example. It is recommended to turn off other + kinds of navigation when visible navigation is used. + - To indicate where the user is, add an element of class *SlideCounter*. + This indicates in "n / total" form where the user is in the slideshow. + - To automatically advance the presentation (for a fully passive slideshow), + add a timer that calls the `goToNextSlide()` function of the presentation. + See the `default/` example -- remember to start the timer when the + presentation is completely loaded. + +After setting the presentation elements, add one or more Slide elements. +The presentation framework will make a slideshow out of the Slide +elements, displaying only one at a time. Each slide is an element in itself, +so you can put whatever visual elements you like in the slide. They have +standard properties for a boring "static text" slideshow, though: + - *title* is text to show as slide title + - *centeredText* is displayed in a large-ish font + - *writeInText* is displayed by "writing it in" to the slide, + one letter at a time. + - *content* is a list of things which are displayed as a bulleted list. + +The presentation classes can be used to produce a fairly dry slideshow +for the installation process; it is recommended to experiment with the +visual effects and classes available in QtQuick. + +## Project Layout + +A branding component that is created and installed outside of Calamares +will have a top-level `CMakeLists.txt` that includes some boilerplate +to find Calamares, and then adds a subdirectory which contains the +actual branding component. + +Adding the subdirectory can be done as follows: + + - If the directory contains files only, and optionally has a single + subdirectory lang/ which contains the translation files for the + component, then `calamares_add_branding_subdirectory()` can be + used, which takes only the name of the subdirectory. + +The file layout in a typical branding component repository is: + +``` + / + - CMakeLists.txt + - componentname/ + - show.qml + - image1.png + ... + - lang/ + - calamares-componentname_en.ts + - calamares-componentname_de.ts + ... +``` + + - If the branding component has many files which are organized into + subdirectories, use the SUBDIRECTORIES argument to the CMake function + to additionally install files from those subdirectories. For example, + if the component places all of its images in an `img/` subdirectory, + then call `calamares_add_branding_subdirectory( ... SUBDIRECTORIES img)`. + It is a bad idea to include `lang/` in the SUBDIRECTORIES list. diff --git a/src/branding/default/show.qml b/src/branding/default/show.qml index 84f252d54..ad7c92783 100644 --- a/src/branding/default/show.qml +++ b/src/branding/default/show.qml @@ -24,6 +24,7 @@ Presentation id: presentation Timer { + id: advanceTimer interval: 5000 running: false repeat: true @@ -48,7 +49,7 @@ Presentation "To create a Calamares presentation in QML, import calamares.slideshow,
"+ "define a Presentation element with as many Slide elements as needed." wrapMode: Text.WordWrap - width: root.width + width: presentation.width horizontalAlignment: Text.Center } } @@ -60,4 +61,6 @@ Presentation Slide { centeredText: "This is a third Slide element." } + + Component.onCompleted: advanceTimer.running = true } diff --git a/src/branding/samegame/Block.qml b/src/branding/samegame/Block.qml deleted file mode 100644 index 81bdd67ea..000000000 --- a/src/branding/samegame/Block.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![0] -import QtQuick 2.0 - -Item { - id: block - - property int type: 0 - - Image { - id: img - - anchors.fill: parent - source: { - if (type == 0) - return "redStone.png"; - else if (type == 1) - return "blueStone.png"; - else - return "greenStone.png"; - } - } -} -//![0] diff --git a/src/branding/samegame/Button.qml b/src/branding/samegame/Button.qml deleted file mode 100644 index 77921772d..000000000 --- a/src/branding/samegame/Button.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 - -Rectangle { - id: container - - property string text: "Button" - - signal clicked - - width: buttonLabel.width + 20; height: buttonLabel.height + 5 - border { width: 1; color: Qt.darker(activePalette.button) } - antialiasing: true - radius: 8 - - // color the button with a gradient - gradient: Gradient { - GradientStop { - position: 0.0 - color: { - if (mouseArea.pressed) - return activePalette.dark - else - return activePalette.light - } - } - GradientStop { position: 1.0; color: activePalette.button } - } - - MouseArea { - id: mouseArea - anchors.fill: parent - onClicked: container.clicked(); - } - - Text { - id: buttonLabel - anchors.centerIn: container - color: activePalette.buttonText - text: container.text - } -} diff --git a/src/branding/samegame/Dialog.qml b/src/branding/samegame/Dialog.qml deleted file mode 100644 index 94e708f9c..000000000 --- a/src/branding/samegame/Dialog.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![0] -import QtQuick 2.0 - -Rectangle { - id: container - - function show(text) { - dialogText.text = text; - container.opacity = 1; - } - - function hide() { - container.opacity = 0; - } - - width: dialogText.width + 20 - height: dialogText.height + 20 - opacity: 0 - - Text { - id: dialogText - anchors.centerIn: parent - text: "" - } - - MouseArea { - anchors.fill: parent - onClicked: hide(); - } -} -//![0] diff --git a/src/branding/samegame/background.jpg b/src/branding/samegame/background.jpg deleted file mode 100644 index 903d395c8..000000000 Binary files a/src/branding/samegame/background.jpg and /dev/null differ diff --git a/src/branding/samegame/blueStar.png b/src/branding/samegame/blueStar.png deleted file mode 100644 index 213bb4bf6..000000000 Binary files a/src/branding/samegame/blueStar.png and /dev/null differ diff --git a/src/branding/samegame/blueStone.png b/src/branding/samegame/blueStone.png deleted file mode 100644 index 20e43c75b..000000000 Binary files a/src/branding/samegame/blueStone.png and /dev/null differ diff --git a/src/branding/samegame/branding.desc b/src/branding/samegame/branding.desc deleted file mode 100644 index b280e3df3..000000000 --- a/src/branding/samegame/branding.desc +++ /dev/null @@ -1,76 +0,0 @@ ---- -componentName: samegame - -# This selects between different welcome texts. When false, uses -# the traditional "Welcome to the %1 installer.", and when true, -# uses "Welcome to the Calamares installer for %1." This allows -# to distinguish this installer from other installers for the -# same distribution. -welcomeStyleCalamares: false - -# These are strings shown to the user in the user interface. -# There is no provision for translating them -- since they -# are names, the string is included as-is. -# -# The four Url strings are the Urls used by the buttons in -# the welcome screen, and are not shown to the user. Clicking -# on the "Support" button, for instance, opens the link supportUrl. -# If a Url is empty, the corresponding button is not shown. -# -# bootloaderEntryName is how this installation / distro is named -# in the boot loader (e.g. in the GRUB menu). -strings: - productName: Generic GNU/Linux - shortProductName: Generic - version: 2018.1 LTS - shortVersion: 2018.1 - versionedName: Generic GNU/Linux 2018.1 LTS "Tasseled Tambourine" - shortVersionedName: Generic 2018.1 - bootloaderEntryName: Generic - productUrl: https://calamares.io/ - supportUrl: https://github.com/calamares/calamares/issues - knownIssuesUrl: https://calamares.io/about/ - releaseNotesUrl: https://calamares.io/about/ - -# Should the welcome image (productWelcome, below) be scaled -# up beyond its natural size? If false, the image does not grow -# with the window but remains the same size throughout (this -# may have surprising effects on HiDPI monitors). -welcomeExpandingLogo: true - -# These images are loaded from the branding module directory. -# -# productIcon is used as the window icon, and will (usually) be used -# by the window manager to represent the application. This image -# should be square, and may be displayed by the window manager -# as small as 16x16 (but possibly larger). -# productLogo is used as the logo at the top of the left-hand column -# which shows the steps to be taken. The image should be square, -# and is displayed at 80x80 pixels (also on HiDPI). -# productWelcome is shown on the welcome page of the application in -# the middle of the window, below the welcome text. It can be -# any size and proportion, and will be scaled to fit inside -# the window. Use `welcomeExpandingLogo` to make it non-scaled. -# Recommended size is 320x150. -images: - productLogo: "squidball.png" - productIcon: "squidball.png" - productWelcome: "languages.png" - -# The slideshow is displayed during execution steps (e.g. when the -# installer is actually writing to disk and doing other slow things). -slideshow: "samegame.qml" - -# Colors for text and background components. -# -# - sidebarBackground is the background of the sidebar -# - sidebarText is the (foreground) text color -# - sidebarTextHighlight sets the background of the selected (current) step. -# Optional, and defaults to the application palette. -# - sidebarSelect is the text color of the selected step. -# -style: - sidebarBackground: "#292F34" - sidebarText: "#FFFFFF" - sidebarTextSelect: "#292F34" - sidebarTextHighlight: "#D35400" diff --git a/src/branding/samegame/greenStar.png b/src/branding/samegame/greenStar.png deleted file mode 100644 index 38429749b..000000000 Binary files a/src/branding/samegame/greenStar.png and /dev/null differ diff --git a/src/branding/samegame/greenStone.png b/src/branding/samegame/greenStone.png deleted file mode 100644 index b568a1900..000000000 Binary files a/src/branding/samegame/greenStone.png and /dev/null differ diff --git a/src/branding/samegame/languages.png b/src/branding/samegame/languages.png deleted file mode 100644 index 53316526b..000000000 Binary files a/src/branding/samegame/languages.png and /dev/null differ diff --git a/src/branding/samegame/redStar.png b/src/branding/samegame/redStar.png deleted file mode 100644 index 5cdf45c4c..000000000 Binary files a/src/branding/samegame/redStar.png and /dev/null differ diff --git a/src/branding/samegame/redStone.png b/src/branding/samegame/redStone.png deleted file mode 100644 index 36b09a268..000000000 Binary files a/src/branding/samegame/redStone.png and /dev/null differ diff --git a/src/branding/samegame/samegame.js b/src/branding/samegame/samegame.js deleted file mode 100644 index 01edc5bd4..000000000 --- a/src/branding/samegame/samegame.js +++ /dev/null @@ -1,174 +0,0 @@ -/* This script file handles the game logic */ -var maxColumn = 10; -var maxRow = 15; -var maxIndex = maxColumn * maxRow; -var board = new Array(maxIndex); -var component; - -//Index function used instead of a 2D array -function index(column, row) { - return column + (row * maxColumn); -} - -function startNewGame() { - //Calculate board size - maxColumn = Math.floor(gameCanvas.width / gameCanvas.blockSize); - maxRow = Math.floor(gameCanvas.height / gameCanvas.blockSize); - maxIndex = maxRow * maxColumn; - - //Close dialogs - dialog.hide(); - - //Initialize Board - board = new Array(maxIndex); - gameCanvas.score = 0; - for (var column = 0; column < maxColumn; column++) { - for (var row = 0; row < maxRow; row++) { - board[index(column, row)] = null; - createBlock(column, row); - } - } -} - -function createBlock(column, row) { - if (component == null) - component = Qt.createComponent("Block.qml"); - - // Note that if Block.qml was not a local file, component.status would be - // Loading and we should wait for the component's statusChanged() signal to - // know when the file is downloaded and ready before calling createObject(). - if (component.status == Component.Ready) { - var dynamicObject = component.createObject(gameCanvas); - if (dynamicObject == null) { - console.log("error creating block"); - console.log(component.errorString()); - return false; - } - dynamicObject.type = Math.floor(Math.random() * 3); - dynamicObject.x = column * gameCanvas.blockSize; - dynamicObject.y = row * gameCanvas.blockSize; - dynamicObject.width = gameCanvas.blockSize; - dynamicObject.height = gameCanvas.blockSize; - board[index(column, row)] = dynamicObject; - } else { - console.log("error loading block component"); - console.log(component.errorString()); - return false; - } - return true; -} - -var fillFound; //Set after a floodFill call to the number of blocks found -var floodBoard; //Set to 1 if the floodFill reaches off that node - -//![1] -function handleClick(xPos, yPos) { - var column = Math.floor(xPos / gameCanvas.blockSize); - var row = Math.floor(yPos / gameCanvas.blockSize); - if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) - return; - if (board[index(column, row)] == null) - return; - //If it's a valid block, remove it and all connected (does nothing if it's not connected) - floodFill(column, row, -1); - if (fillFound <= 0) - return; - gameCanvas.score += (fillFound - 1) * (fillFound - 1); - shuffleDown(); - victoryCheck(); -} -//![1] - -function floodFill(column, row, type) { - if (board[index(column, row)] == null) - return; - var first = false; - if (type == -1) { - first = true; - type = board[index(column, row)].type; - - //Flood fill initialization - fillFound = 0; - floodBoard = new Array(maxIndex); - } - if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) - return; - if (floodBoard[index(column, row)] == 1 || (!first && type != board[index(column, row)].type)) - return; - floodBoard[index(column, row)] = 1; - floodFill(column + 1, row, type); - floodFill(column - 1, row, type); - floodFill(column, row + 1, type); - floodFill(column, row - 1, type); - if (first == true && fillFound == 0) - return; //Can't remove single blocks - board[index(column, row)].opacity = 0; - board[index(column, row)] = null; - fillFound += 1; -} - -function shuffleDown() { - //Fall down - for (var column = 0; column < maxColumn; column++) { - var fallDist = 0; - for (var row = maxRow - 1; row >= 0; row--) { - if (board[index(column, row)] == null) { - fallDist += 1; - } else { - if (fallDist > 0) { - var obj = board[index(column, row)]; - obj.y += fallDist * gameCanvas.blockSize; - board[index(column, row + fallDist)] = obj; - board[index(column, row)] = null; - } - } - } - } - //Fall to the left - var fallDist = 0; - for (var column = 0; column < maxColumn; column++) { - if (board[index(column, maxRow - 1)] == null) { - fallDist += 1; - } else { - if (fallDist > 0) { - for (var row = 0; row < maxRow; row++) { - var obj = board[index(column, row)]; - if (obj == null) - continue; - obj.x -= fallDist * gameCanvas.blockSize; - board[index(column - fallDist, row)] = obj; - board[index(column, row)] = null; - } - } - } - } -} - -//![2] -function victoryCheck() { - //Award bonus points if no blocks left - var deservesBonus = true; - for (var column = maxColumn - 1; column >= 0; column--) - if (board[index(column, maxRow - 1)] != null) - deservesBonus = false; - if (deservesBonus) - gameCanvas.score += 500; - - //Check whether game has finished - if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1))) - dialog.show("Game Over. Your score is " + gameCanvas.score); -} -//![2] - -//only floods up and right, to see if it can find adjacent same-typed blocks -function floodMoveCheck(column, row, type) { - if (column >= maxColumn || column < 0 || row >= maxRow || row < 0) - return false; - if (board[index(column, row)] == null) - return false; - var myType = board[index(column, row)].type; - if (type == myType) - return true; - return floodMoveCheck(column + 1, row, myType) || floodMoveCheck(column, row - 1, board[index(column, row)].type); -} - diff --git a/src/branding/samegame/samegame.qml b/src/branding/samegame/samegame.qml deleted file mode 100644 index 73ef74d1e..000000000 --- a/src/branding/samegame/samegame.qml +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![0] -import QtQuick 2.0 -import "samegame.js" as SameGame - -Rectangle { - id: screen - - width: 490; height: 720 - - SystemPalette { id: activePalette } - - Item { - width: parent.width - anchors { top: parent.top; bottom: toolBar.top } - - Image { - id: background - anchors.fill: parent - source: "background.jpg" - fillMode: Image.PreserveAspectCrop - } - -//![1] - Item { - id: gameCanvas - - property int score: 0 - property int blockSize: 40 - - width: parent.width - (parent.width % blockSize) - height: parent.height - (parent.height % blockSize) - anchors.centerIn: parent - - MouseArea { - anchors.fill: parent - onClicked: SameGame.handleClick(mouse.x, mouse.y) - } - } -//![1] - } - -//![2] - Dialog { - id: dialog - anchors.centerIn: parent - z: 100 - } -//![2] - - Rectangle { - id: toolBar - width: parent.width; height: 30 - color: activePalette.window - anchors.bottom: screen.bottom - - Button { - anchors { left: parent.left; verticalCenter: parent.verticalCenter } - text: "New Game" - onClicked: SameGame.startNewGame() - } - } -} -//![0] diff --git a/src/branding/samegame/squidball.png b/src/branding/samegame/squidball.png deleted file mode 100644 index b7934e8ee..000000000 Binary files a/src/branding/samegame/squidball.png and /dev/null differ diff --git a/src/branding/samegame/star.png b/src/branding/samegame/star.png deleted file mode 100644 index defbde53c..000000000 Binary files a/src/branding/samegame/star.png and /dev/null differ diff --git a/src/branding/samegame/yellowStone.png b/src/branding/samegame/yellowStone.png deleted file mode 100644 index b1ce76212..000000000 Binary files a/src/branding/samegame/yellowStone.png and /dev/null differ diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 94e9145d6..2a1cfeb20 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -83,6 +83,8 @@ add_library( calamares SHARED ${libSources} ${kdsagSources} ${utilsSources} ) set_target_properties( calamares PROPERTIES AUTOMOC TRUE + VERSION ${CALAMARES_VERSION_SHORT} + SOVERSION ${CALAMARES_VERSION_SHORT} ) target_link_libraries( calamares @@ -92,10 +94,18 @@ target_link_libraries( calamares install( TARGETS calamares EXPORT CalamaresLibraryDepends + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +# Make symlink lib/calamares/libcalamares.so to lib/libcalamares.so.VERSION so +# lib/calamares can be used as module path for the Python interpreter. +install( CODE " + file( MAKE_DIRECTORY \"\$ENV{DESTDIR}/${CMAKE_INSTALL_FULL_LIBDIR}/calamares\" ) + execute_process( COMMAND \"${CMAKE_COMMAND}\" -E create_symlink ../libcalamares.so.${CALAMARES_VERSION_SHORT} libcalamares.so WORKING_DIRECTORY \"\$ENV{DESTDIR}/${CMAKE_INSTALL_FULL_LIBDIR}/calamares\" ) +") + # Install header files file( GLOB rootHeaders "*.h" ) file( GLOB kdsingleapplicationguardHeaders "kdsingleapplicationguard/*.h" ) diff --git a/src/libcalamaresui/Branding.cpp b/src/libcalamaresui/Branding.cpp index 5677f212e..584d85c0b 100644 --- a/src/libcalamaresui/Branding.cpp +++ b/src/libcalamaresui/Branding.cpp @@ -184,7 +184,7 @@ Branding::Branding( const QString& brandingFilePath, QDir translationsDir( componentDir.filePath( "lang" ) ); if ( !translationsDir.exists() ) - cWarning() << "the selected branding component does not ship translations."; + cWarning() << "the branding component" << componentDir.absolutePath() << "does not ship translations."; m_translationsPathPrefix = translationsDir.absolutePath(); m_translationsPathPrefix.append( QString( "%1calamares-%2" ) .arg( QDir::separator() ) diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index 4d0ec8281..7c3e8fca2 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -78,5 +78,5 @@ calamares_add_library( calamaresui Qt5::QuickWidgets RESOURCES libcalamaresui.qrc EXPORT CalamaresLibraryDepends - NO_VERSION + VERSION ${CALAMARES_VERSION_SHORT} ) diff --git a/src/modules/contextualprocess/ContextualProcessJob.cpp b/src/modules/contextualprocess/ContextualProcessJob.cpp index a61a8bb3f..380a92d0a 100644 --- a/src/modules/contextualprocess/ContextualProcessJob.cpp +++ b/src/modules/contextualprocess/ContextualProcessJob.cpp @@ -37,12 +37,13 @@ struct ValueCheck : public QPair { } - ~ValueCheck() - { - // We don't own the commandlist, the binding holding this valuecheck - // does, so don't delete. This is closely tied to (temporaries created - // by) pass-by-value in QList::append(). - } + // ~ValueCheck() + // + // There is no destructor. + // + // We don't own the commandlist, the binding holding this valuecheck + // does, so don't delete. This is closely tied to (temporaries created + // by) pass-by-value in QList::append(). QString value() const { return first; } CalamaresUtils::CommandList* commands() const { return second; } diff --git a/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo index 17c753cce..8a59291af 100644 Binary files a/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/ar/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo index 1248f1296..a195bf917 100644 Binary files a/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/ast/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo index 50331054f..470525ae3 100644 Binary files a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo index 2d39d8e2e..c8a3196f8 100644 Binary files a/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/ca/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo index 13a52e7e1..183b7d536 100644 Binary files a/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/cs_CZ/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo index 72e1815b5..d18b7cd85 100644 Binary files a/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/da/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo index 67e1ae4a8..10aa5c08d 100644 Binary files a/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/de/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo index 606e12f7e..c7d45e879 100644 Binary files a/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/el/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo index 4c508593d..b88e6d8f9 100644 Binary files a/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/en_GB/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo index 32f9aec54..7ed27e629 100644 Binary files a/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/es/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo index 8eafae88b..35a601558 100644 Binary files a/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/es_ES/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo index 6e9225896..73c58bb4a 100644 Binary files a/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/es_MX/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo index 9683fbfc5..f3dd878be 100644 Binary files a/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/es_PR/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo index 1c57bd3fa..86e51fbf4 100644 Binary files a/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/et/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo index 531ea6f96..2b85ce42c 100644 Binary files a/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/eu/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo index f59ad5d40..be5db74c2 100644 Binary files a/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/fa/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo index 0c41f5bd8..f703a8ccc 100644 Binary files a/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/fi_FI/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo index cf0271658..a8ddde519 100644 Binary files a/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/fr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo index 4430eadf1..44c786167 100644 Binary files a/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/fr_CH/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo index 09ac0ccd9..b221e3812 100644 Binary files a/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/gl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo index 77a7b77dc..e8861abe2 100644 Binary files a/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/gu/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo index 85247aa34..98b589db3 100644 Binary files a/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/he/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo index d7276c7e9..198aba348 100644 Binary files a/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/hi/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo index 4acf918a7..5368309b9 100644 Binary files a/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/hr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo index 89df86a76..0c8dc7309 100644 Binary files a/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/hu/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo index 1a957c345..4c66c3fee 100644 Binary files a/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/id/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo index ec9266196..19d3d71d3 100644 Binary files a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po index 8a0a94e8e..17b004ff7 100644 --- a/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/is/LC_MESSAGES/dummypythonqt.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-17 19:16+0100\n" +"POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Kristján Magnússon, 2017\n" +"Last-Translator: Krissi, 2017\n" "Language-Team: Icelandic (https://www.transifex.com/calamares/teams/20061/is/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo index b89909ad0..14d83f489 100644 Binary files a/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/it_IT/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo index 13ab5ce6e..8098b2c5c 100644 Binary files a/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/ja/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo index 41e2395c9..2b0afba0e 100644 Binary files a/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/kk/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo index 1929c5ac7..bb4455c58 100644 Binary files a/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/kn/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo index 8595066c7..1a06a5e25 100644 Binary files a/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/lo/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo index 2ef3c2028..30fb27cad 100644 Binary files a/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/lt/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo index f966de1c5..ada8d963f 100644 Binary files a/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/mr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo index 3fc2dc4ba..4a10eac44 100644 Binary files a/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/nb/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo index 1ac4943e9..990bbe8a4 100644 Binary files a/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/nl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo index a5a330a88..86fbdf716 100644 Binary files a/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/pl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo index c4db96fc8..fc4620205 100644 Binary files a/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/pl_PL/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo index f0542d6b0..2c1d077a0 100644 Binary files a/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/pt_BR/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo index d0974f546..4df6a2005 100644 Binary files a/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/pt_PT/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo index 11a59efed..18713b51c 100644 Binary files a/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/ro/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo index c04ddba11..8e2ebe16d 100644 Binary files a/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/ru/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo index 390bfa96e..4cb8879b3 100644 Binary files a/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/sk/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo index 3784d59be..615d4b0b7 100644 Binary files a/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/sl/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo index 998439aa9..a74176a2e 100644 Binary files a/src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/sq/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo index 117bf4c6d..311cb4d45 100644 Binary files a/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/sr/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo index 11cbdba12..bd44894e5 100644 Binary files a/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/sr@latin/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo index e43e4b857..e27097ca7 100644 Binary files a/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/sv/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo index 54dae4e8c..99aa63beb 100644 Binary files a/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/th/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo index 28715a4fa..12c4645f6 100644 Binary files a/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo index 4e1a108a7..d17a14087 100644 Binary files a/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/uk/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo index 859a8505c..176215bcb 100644 Binary files a/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/ur/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo index 242ba1fe0..037e2fa2a 100644 Binary files a/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/uz/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo index a6a9ff338..0dac94ca0 100644 Binary files a/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/zh_CN/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo index a50001d4e..7cda100f9 100644 Binary files a/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo and b/src/modules/dummypythonqt/lang/zh_TW/LC_MESSAGES/dummypythonqt.mo differ diff --git a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp index 535edaf24..9cdf831e6 100644 --- a/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp +++ b/src/modules/keyboard/keyboardwidget/keyboardpreview.cpp @@ -160,9 +160,9 @@ bool KeyBoardPreview::loadCodes() { QString KeyBoardPreview::fromUnicodeString(QString raw) { if (raw.startsWith("U+")) - return QChar(raw.mid(2).toInt(0, 16)); + return QChar(raw.mid(2).toInt(nullptr, 16)); else if (raw.startsWith("+U")) - return QChar(raw.mid(3).toInt(0, 16)); + return QChar(raw.mid(3).toInt(nullptr, 16)); return ""; } diff --git a/src/modules/license/LicensePage.cpp b/src/modules/license/LicensePage.cpp index f10401831..12d259e98 100644 --- a/src/modules/license/LicensePage.cpp +++ b/src/modules/license/LicensePage.cpp @@ -186,7 +186,7 @@ LicensePage::setEntries( const QList< LicenseEntry >& entriesList ) .arg( entry.prettyName ) .arg( entry.prettyVendor ); break; - default: + case LicenseEntry::Software: productDescription = tr( "%1
" "by %2" ) .arg( entry.prettyName ) diff --git a/src/modules/localecfg/main.py b/src/modules/localecfg/main.py index 7df2fe31e..e6c37133b 100644 --- a/src/modules/localecfg/main.py +++ b/src/modules/localecfg/main.py @@ -65,12 +65,12 @@ def run(): with open("{!s}/etc/locale.gen".format(install_path), "w") as gen: for line in text: # always enable en_US - if en_us_locale in line and line[0] == "#": + if line.startswith("#" + en_us_locale): # uncomment line line = line[1:].lstrip() for locale_value in locale_values: - if locale_value in line and line[0] == "#": + if line.startswith("#" + locale_value): # uncomment line line = line[1:].lstrip() diff --git a/src/modules/plasmalnf/ThemeWidget.cpp b/src/modules/plasmalnf/ThemeWidget.cpp index f2a038030..0dd73dbd3 100644 --- a/src/modules/plasmalnf/ThemeWidget.cpp +++ b/src/modules/plasmalnf/ThemeWidget.cpp @@ -58,7 +58,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent) image.fill( QColor( QRgb( hash_color ) ) ); } - image = image.scaled( image_size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); + image = image.scaled( image_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QLabel* image_label = new QLabel( this ); image_label->setPixmap( image ); diff --git a/src/modules/tracking/TrackingPage.cpp b/src/modules/tracking/TrackingPage.cpp index 1b76aa5e5..26858442f 100644 --- a/src/modules/tracking/TrackingPage.cpp +++ b/src/modules/tracking/TrackingPage.cpp @@ -90,17 +90,20 @@ bool TrackingPage::getTrackingOption(TrackingType t) // A tracking type is enabled if it is checked, or // any higher level is checked. +#define ch(x) ui->x->isChecked() switch ( t ) { case TrackingType::InstallTracking: - enabled |= ui->installRadio->isChecked(); - // FALLTHRU + enabled = ch(installRadio) || ch(machineRadio) || ch(userRadio); + break; case TrackingType::MachineTracking: - enabled |= ui->machineRadio->isChecked(); - // FALLTHRU + enabled = ch(machineRadio) || ch(userRadio); + break; case TrackingType::UserTracking: - enabled |= ui->userRadio->isChecked(); + enabled = ch(userRadio); + break; } +#undef ch return enabled; } diff --git a/src/modules/users/CheckPWQuality.cpp b/src/modules/users/CheckPWQuality.cpp index 3e1ab0563..a78edd754 100644 --- a/src/modules/users/CheckPWQuality.cpp +++ b/src/modules/users/CheckPWQuality.cpp @@ -30,13 +30,9 @@ #include -static void _default_cleanup() -{ -} - PasswordCheck::PasswordCheck() : m_message() - , m_accept( []( const QString& s ){ return true; } ) + , m_accept( []( const QString& ){ return true; } ) { } diff --git a/src/modules/welcome/checker/RequirementsChecker.cpp b/src/modules/welcome/checker/RequirementsChecker.cpp index 1aa4e95f8..9ccdfae33 100644 --- a/src/modules/welcome/checker/RequirementsChecker.cpp +++ b/src/modules/welcome/checker/RequirementsChecker.cpp @@ -320,6 +320,7 @@ bool RequirementsChecker::checkEnoughStorage( qint64 requiredSpace ) { #ifdef WITHOUT_LIBPARTED + Q_UNUSED( requiredSpace ); cWarning() << "RequirementsChecker is configured without libparted."; return false; #else diff --git a/src/qml/calamares/slideshow/BackButton.qml b/src/qml/calamares/slideshow/BackButton.qml new file mode 100644 index 000000000..2d5f4dd5e --- /dev/null +++ b/src/qml/calamares/slideshow/BackButton.qml @@ -0,0 +1,24 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * 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 . + */ + +NavButton { + id: backButton + anchors.left: parent.left + visible: parent.currentSlide > 0 + isForward: false +} diff --git a/src/qml/calamares/slideshow/ForwardButton.qml b/src/qml/calamares/slideshow/ForwardButton.qml new file mode 100644 index 000000000..9f6fecf8e --- /dev/null +++ b/src/qml/calamares/slideshow/ForwardButton.qml @@ -0,0 +1,23 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * 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 . + */ + +NavButton { + id: forwardButton + anchors.right: parent.right + visible: parent.currentSlide + 1 < parent.slides.length; +} diff --git a/src/qml/calamares/slideshow/NavButton.qml b/src/qml/calamares/slideshow/NavButton.qml new file mode 100644 index 000000000..33d8cad77 --- /dev/null +++ b/src/qml/calamares/slideshow/NavButton.qml @@ -0,0 +1,68 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * 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 . + */ + +/* This is a navigation (arrow) button that fades in on hover, and + * which calls forward / backward navigation on the presentation it + * is in. It should be a child item of the presentation (not of a + * single slide). Use the ForwardButton or BackButton for a pre- + * configured instance that interacts with the presentation. + */ + +import QtQuick 2.5; + +Image { + id: fade + + property bool isForward : true + + width: 100 + height: 100 + anchors.verticalCenter: parent.verticalCenter + opacity: 0.3 + + OpacityAnimator { + id: fadeIn + target: fade + from: fade.opacity + to: 1.0 + duration: 500 + running: false + } + + OpacityAnimator { + id: fadeOut + target: fade + from: fade.opacity + to: 0.3 + duration: 250 + running: false + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + onEntered: { fadeOut.running = false; fadeIn.running = true } + onExited: { fadeIn.running = false ; fadeOut.running = true } + onClicked: { + if (isForward) + fade.parent.goToNextSlide() + else + fade.parent.goToPreviousSlide() + } + } +} diff --git a/src/qml/calamares/slideshow/Presentation.qml b/src/qml/calamares/slideshow/Presentation.qml index b53b9fc55..4843e15a6 100644 --- a/src/qml/calamares/slideshow/Presentation.qml +++ b/src/qml/calamares/slideshow/Presentation.qml @@ -2,6 +2,12 @@ * * Copyright 2017, Adriaan de Groot * - added looping, keys-instead-of-shortcut + * Copyright 2018, Adriaan de Groot + * - make looping a property, drop the 'c' fade-key + * - drop navigation through entering a slide number + * (this and the 'c' key make sense in a *presentation* + * slideshow, not in a passive slideshow like Calamares) + * - remove quit key * * SPDX-License-Identifier: LGPL-2.1 * License-Filename: LICENSES/LGPLv2.1-Presentation @@ -58,6 +64,8 @@ Item { property variant slides: [] property int currentSlide: 0 + property bool loopSlides: true + property bool showNotes: false; property bool allowDelay: true; property alias mouseNavigation: mouseArea.enabled @@ -70,8 +78,6 @@ Item { property string codeFontFamily: "Courier New" // Private API - property bool _faded: false - property int _userNum; property int _lastShownSlide: 0 Component.onCompleted: { @@ -85,7 +91,6 @@ Item { } root.slides = slides; - root._userNum = 0; // Make first slide visible... if (root.slides.length > 0) @@ -106,48 +111,21 @@ Item { } function goToNextSlide() { - root._userNum = 0 - if (_faded) - return if (root.slides[currentSlide].delayPoints) { if (root.slides[currentSlide]._advance()) return; } if (currentSlide + 1 < root.slides.length) ++currentSlide; - else + else if (loopSlides) currentSlide = 0; // Loop at the end } function goToPreviousSlide() { - root._userNum = 0 - if (root._faded) - return if (currentSlide - 1 >= 0) --currentSlide; - } - - function goToUserSlide() { - --_userNum; - if (root._faded || _userNum >= root.slides.length) - return - if (_userNum < 0) - goToNextSlide() - else { - currentSlide = _userNum; - root.focus = true; - } - } - - // directly type in the slide number: depends on root having focus - Keys.onPressed: { - if (event.key >= Qt.Key_0 && event.key <= Qt.Key_9) - _userNum = 10 * _userNum + (event.key - Qt.Key_0) - else { - if (event.key == Qt.Key_Return || event.key == Qt.Key_Enter) - goToUserSlide(); - _userNum = 0; - } + else if (loopSlides) + currentSlide = root.slides.length - 1 } focus: true // Keep focus @@ -165,20 +143,10 @@ Item { // presentation-specific single-key shortcuts (which interfere with normal typing) Shortcut { sequence: " "; enabled: root.keyShortcutsEnabled; onActivated: goToNextSlide() } - Shortcut { sequence: "c"; enabled: root.keyShortcutsEnabled; onActivated: root._faded = !root._faded } // standard shortcuts Shortcut { sequence: StandardKey.MoveToNextPage; onActivated: goToNextSlide() } Shortcut { sequence: StandardKey.MoveToPreviousPage; onActivated: goToPreviousSlide() } - Shortcut { sequence: StandardKey.Quit; onActivated: Qt.quit() } - - Rectangle { - z: 1000 - color: "black" - anchors.fill: parent - opacity: root._faded ? 1 : 0 - Behavior on opacity { NumberAnimation { duration: 250 } } - } MouseArea { id: mouseArea diff --git a/src/qml/calamares/slideshow/Slide.qml b/src/qml/calamares/slideshow/Slide.qml index e033e3c17..6b32ddfbf 100644 --- a/src/qml/calamares/slideshow/Slide.qml +++ b/src/qml/calamares/slideshow/Slide.qml @@ -46,7 +46,7 @@ ****************************************************************************/ -import QtQuick 2.0 +import QtQuick 2.5 Item { /* diff --git a/src/qml/calamares/slideshow/SlideCounter.qml b/src/qml/calamares/slideshow/SlideCounter.qml new file mode 100644 index 000000000..e59476f5c --- /dev/null +++ b/src/qml/calamares/slideshow/SlideCounter.qml @@ -0,0 +1,38 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * 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 . + */ + +/* This control just shows a (non-translated) count of the slides + * in the slideshow in the format "n / total". + */ + +import QtQuick 2.5; + +Rectangle { + id: slideCounter + anchors.right: parent.right + anchors.bottom: parent.bottom + width: 100 + height: 50 + + Text { + id: slideCounterText + anchors.centerIn: parent + //: slide counter, %1 of %2 (numeric) + text: qsTr("%L1 / %L2").arg(parent.parent.currentSlide + 1).arg(parent.parent.slides.length) + } +} diff --git a/src/qml/calamares/slideshow/qmldir b/src/qml/calamares/slideshow/qmldir index 5a0c277b4..7b964b831 100644 --- a/src/qml/calamares/slideshow/qmldir +++ b/src/qml/calamares/slideshow/qmldir @@ -1,4 +1,10 @@ module calamares.slideshow + Presentation 1.0 Presentation.qml Slide 1.0 Slide.qml +NavButton 1.0 NavButton.qml +ForwardButton 1.0 ForwardButton.qml +BackButton 1.0 BackButton.qml + +SlideCounter 1.0 SlideCounter.qml