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/CMakeLists.txt b/CMakeLists.txt index f051e49c6..f3c5baca8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,16 +126,12 @@ set( QT_VERSION 5.6.0 ) find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools Svg Quick QuickWidgets ) find_package( YAMLCPP 0.5.1 REQUIRED ) find_package( PolkitQt5-1 REQUIRED ) -find_package(ECM 5.18 NO_MODULE) -if( ECM_FOUND ) - set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) -endif() # Find ECM once, and add it to the module search path; Calamares # modules that need ECM can do # find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE), # no need to mess with the module path after. -set( ECM_VERSION 5.10.0 ) +set( ECM_VERSION 5.18 ) find_package(ECM ${ECM_VERSION} NO_MODULE) if( ECM_FOUND ) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) @@ -202,7 +198,7 @@ set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MINOR 2 ) set( CALAMARES_VERSION_PATCH 0 ) -set( CALAMARES_VERSION_RC 3 ) +set( CALAMARES_VERSION_RC 4 ) set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) @@ -340,16 +336,20 @@ file( RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_CMAKEDIR}" "${CMA configure_file( CalamaresConfig.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" @ONLY ) configure_file( CalamaresConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" @ONLY ) +configure_file( CalamaresUse.cmake.in "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" @ONLY ) # Install the cmake files install( FILES "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" + "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" "CMakeModules/CalamaresAddPlugin.cmake" "CMakeModules/CalamaresAddModuleSubdirectory.cmake" "CMakeModules/CalamaresAddLibrary.cmake" "CMakeModules/CalamaresAddBrandingSubdirectory.cmake" + "CMakeModules/CalamaresAddTranslations.cmake" + "CMakeModules/CMakeColors.cmake" DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" ) 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..f5dd8c50c 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 @@ -39,7 +61,7 @@ macro(add_calamares_translations language) add_custom_command( OUTPUT ${trans_outfile} COMMAND "${Qt5Core_RCC_EXECUTABLE}" - ARGS ${rcc_options} -name ${trans_file} -o ${trans_outfile} ${trans_infile} + ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile} MAIN_DEPENDENCY ${trans_infile} DEPENDS ${QM_FILES} ) 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 new file mode 100644 index 000000000..00f3c968d --- /dev/null +++ b/CalamaresUse.cmake.in @@ -0,0 +1,29 @@ +# A setup-cmake-things-for-Calamares module. +# +# This module handles looking for dependencies and including +# all of the Calamares macro modules, so that you can focus +# on just using the macros to build Calamares modules. +# Typical use looks like this: +# +# ``` +# find_package( Calamares REQUIRED ) +# include( "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake" ) +# ``` +# +# The first CMake command finds Calamares (which will contain +# this file), then adds the found location to the search path, +# and then includes this file. After that, you can use +# Calamares module and plugin macros. + +if( NOT CALAMARES_CMAKE_DIR ) + message( FATAL_ERROR "Use find_package(Calamares) first." ) +endif() +set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CALAMARES_CMAKE_DIR} ) + +find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets LinguistTools ) + +include( CalamaresAddLibrary ) +include( CalamaresAddModuleSubdirectory ) +include( CalamaresAddPlugin ) +include( CalamaresAddBrandingSubdirectory ) + diff --git a/calamares.desktop b/calamares.desktop index fb7647a47..1bb0c0168 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -23,6 +23,10 @@ Categories=Qt;System; +Name[bg]=Calamares +Icon[bg]=calamares +GenericName[bg]=Системен Инсталатор +Comment[bg]=Calamares — Системен Инсталатор Name[ca]=Calamares Icon[ca]=calamares GenericName[ca]=Instal·lador de sistema 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_bg.ts b/lang/calamares_bg.ts index 18fe9de6c..f9aceecf9 100644 --- a/lang/calamares_bg.ts +++ b/lang/calamares_bg.ts @@ -178,7 +178,7 @@ Cancel installation without changing the system. - Отказ от инсталацията без промяна на системата + Отказ от инсталацията без промяна на системата. @@ -525,7 +525,7 @@ The installer will quit and all changes will be lost. LVM LV name - + LVM LV име @@ -565,7 +565,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - Точкака на монтиране вече се използва. Моля изберете друга. + Точката за монтиране вече се използва. Моля изберете друга. @@ -692,7 +692,7 @@ The installer will quit and all changes will be lost. Cannot add user %1 to groups: %2. - Не може да бъе добавен потребител %1 към групи: %2. + Не може да се добави потребител %1 към групи: %2. @@ -789,7 +789,7 @@ The installer will quit and all changes will be lost. Failed to open %1 - + Неуспешно отваряне на %1 @@ -797,7 +797,7 @@ The installer will quit and all changes will be lost. Dummy C++ Job - + Фиктивна С++ задача @@ -855,7 +855,7 @@ The installer will quit and all changes will be lost. Mountpoint already in use. Please select another one. - Точкака на монтиране вече се използва. Моля изберете друга. + Точката за монтиране вече се използва. Моля изберете друга. @@ -883,7 +883,7 @@ The installer will quit and all changes will be lost. Please enter the same passphrase in both boxes. - + Моля, въведете еднаква парола в двете полета. @@ -1003,7 +1003,7 @@ The installer will quit and all changes will be lost. Please install KDE Konsole and try again! - + Моля, инсталирайте KDE Konsole и опитайте отново! @@ -1060,7 +1060,7 @@ The installer will quit and all changes will be lost. &OK - + &ОК @@ -1146,7 +1146,7 @@ The installer will quit and all changes will be lost. The system language will be set to %1. - + Системният език ще бъде %1. @@ -1204,7 +1204,7 @@ The installer will quit and all changes will be lost. Description - + Описание @@ -1222,7 +1222,7 @@ The installer will quit and all changes will be lost. Package selection - + Избор на пакети @@ -1230,17 +1230,17 @@ The installer will quit and all changes will be lost. Password is too short - + Паролата е твърде кратка Password is too long - + Паролата е твърде дълга Password is too weak - + Паролата е твърде слаба @@ -1255,12 +1255,12 @@ The installer will quit and all changes will be lost. The password is the same as the old one - + Паролата съвпада с предишната The password is a palindrome - + Паролата е палиндром @@ -1270,7 +1270,7 @@ The installer will quit and all changes will be lost. The password is too similar to the old one - + Паролата е твърде сходна с предишната @@ -1335,7 +1335,7 @@ The installer will quit and all changes will be lost. The password is too short - + Паролата е твърде кратка @@ -1385,7 +1385,7 @@ The installer will quit and all changes will be lost. No password supplied - + Липсва парола @@ -1465,7 +1465,7 @@ The installer will quit and all changes will be lost. Unknown error - + Неизвестна грешка @@ -2151,7 +2151,7 @@ Output: Failed to write keyboard configuration to existing /etc/default directory. - + Неуспешно записване на клавиатурна конфигурация в съществуващата директория /etc/default. @@ -2164,12 +2164,12 @@ Output: Set flags on %1MB %2 partition. - + Задай флагове на дял %1MB %2. Set flags on new partition. - + Задай флагове на нов дял. @@ -2179,12 +2179,12 @@ Output: Clear flags on %1MB <strong>%2</strong> partition. - + Изчисти флагове на дял %1MB <strong>%2</strong>. Clear flags on new partition. - + Изчисти флагове на нов дял. @@ -2194,12 +2194,12 @@ Output: Flag %1MB <strong>%2</strong> partition as <strong>%3</strong>. - + Сложи флаг на дял %1MB <strong>%2</strong> като <strong>%3</strong>. Flag new partition as <strong>%1</strong>. - + Сложи флаг на новия дял като <strong>%1</strong>. @@ -2209,12 +2209,12 @@ Output: Clearing flags on %1MB <strong>%2</strong> partition. - + Изчистване флаговете на дял %1MB <strong>%2</strong>. Clearing flags on new partition. - + Изчистване на флаговете на новия дял. @@ -2224,12 +2224,12 @@ Output: Setting flags <strong>%3</strong> on %1MB <strong>%2</strong> partition. - + Задаване на флагове <strong>%3</strong> на дял %1MB <strong>%2</strong>. Setting flags <strong>%1</strong> on new partition. - + Задаване на флагове <strong>%1</strong> на новия дял. @@ -2423,7 +2423,7 @@ Output: ... - + ... diff --git a/lang/calamares_ca.ts b/lang/calamares_ca.ts index 7b50fbc0d..84243b5ec 100644 --- a/lang/calamares_ca.ts +++ b/lang/calamares_ca.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>EFI</strong>. <br><br> Per configurar una arrencada des d'un entorn EFI, aquest instal·lador ha de desplegar una aplicació de càrrega d'arrencada, com ara el <strong>GRUB</strong> o el <strong>systemd-boot</strong> en una <strong>partició EFI del sistema</strong>. Això és automàtic, llevat que trieu un partiment manual, en què caldrà que ho configureu vosaltres mateixos. + Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>EFI</strong>. <br><br> Per configurar una arrencada des d'un entorn EFI, aquest instal·lador ha de desplegar una aplicació de càrrega d'arrencada, com ara el <strong>GRUB</strong> o el <strong>systemd-boot</strong> en una <strong>partició EFI del sistema</strong>. Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu vosaltres mateixos. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>BIOS </strong>. Per configurar una arrencada des d'un entorn BIOS, aquest instal·lador ha d'instal·lar un carregador d'arrencada, com ara el <strong>GRUB</strong>, ja sigui al començament d'una partició o al <strong>Registre d'Arrencada Mestre</strong>, a prop del començament de la taula de particions (millor). Això és automàtic, llevat que trieu un partiment manual, en què caldrà que ho configureu pel vostre compte. + Aquest sistema s'ha iniciat amb un entorn d'arrencada <strong>BIOS </strong>. Per configurar una arrencada des d'un entorn BIOS, aquest instal·lador ha d'instal·lar un carregador d'arrencada, com ara el <strong>GRUB</strong>, ja sigui al començament d'una partició o al <strong>Registre d'Arrencada Mestre</strong>, a prop del començament de la taula de particions (millor). Això és automàtic, llevat que trieu fer les particions manualment, en què caldrà que ho configureu pel vostre compte. @@ -327,7 +327,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - <strong>Partiment manual</strong><br/>Podeu crear o redimensionar les particions vosaltres mateixos. + <strong>Particions manuals</strong><br/>Podeu crear o redimensionar les particions vosaltres mateixos. @@ -370,7 +370,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - No s'ha pogut trobar enlloc una partició EFI en aquest sistema. Si us plau, torneu enrere i useu el partiment manual per configurar %1. + No s'ha pogut trobar enlloc una partició EFI en aquest sistema. Si us plau, torneu enrere i use les particions manuals per configurar %1. @@ -1711,7 +1711,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <strong>Manual</strong> partitioning. - Partiment <strong>manual</strong>. + Particions <strong>manuals</strong>. @@ -1731,7 +1731,7 @@ L'instal·lador es tancarà i tots els canvis es perdran. <strong>Manual</strong> partitioning on disk <strong>%1</strong> (%2). - Partiment <strong>manual</strong> del disc <strong>%1</strong> (%2). + Particions <strong>manuals</strong> del disc <strong>%1</strong> (%2). @@ -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. @@ -1982,7 +1982,7 @@ Sortida: <strong>%2</strong><br/><br/>An EFI system partition cannot be found anywhere on this system. Please go back and use manual partitioning to set up %1. - <strong>%2</strong><br/><br/>No es pot trobar cap partició EFI enlloc del sistema. Si us plau, torneu enrere i useu el partiment manual per establir %1. + <strong>%2</strong><br/><br/>No es pot trobar cap partició EFI enlloc del sistema. Si us plau, torneu enrere i useu les particions manuals per establir %1. diff --git a/lang/calamares_da.ts b/lang/calamares_da.ts index 644014970..38eed0dd4 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 @@ -1274,12 +1274,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password contains the user name in some form - Adgangskoden indeholde i nogen form brugernavnet + Adgangskoden indeholder i nogen form brugernavnet The password contains words from the real name of the user in some form - + Adgangskoden indeholder i nogen form ord fra brugerens rigtige navn @@ -1289,12 +1289,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt. The password contains less than %1 digits - Adgangskoden indeholder færre end %1 tal + Adgangskoden indeholder færre end %1 cifre The password contains too few digits - Adgangskoden indeholder for få tal + Adgangskoden indeholder for få cifre @@ -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 - + Ugyldig heltalsværdi til indstilling - %1 @@ -1845,7 +1845,7 @@ Output: Command <i>%1</i> crashed. - Kommandoen <i>%1</i> holdet op med at virke. + Kommandoen <i>%1</i> holdte op med at virke. @@ -1860,7 +1860,7 @@ Output: Internal error when starting command. - Intern kommando ved start af kommando. + Intern fejl ved start af kommando. 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_nb.ts b/lang/calamares_nb.ts index 1f4c25f0d..ec19dfe68 100644 --- a/lang/calamares_nb.ts +++ b/lang/calamares_nb.ts @@ -42,7 +42,7 @@ %1 (%2) - + %1 (%2) @@ -120,7 +120,7 @@ Running command %1 %2 - + Kjører kommando %1 %2 @@ -195,17 +195,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Yes - + &Ja &No - + &Nei &Close - + &Lukk @@ -230,12 +230,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Done - + &Ferdig The installation is complete. Close the installer. - + Installasjonen er fullført. Lukk installeringsprogrammet. @@ -289,7 +289,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. This computer does not satisfy the minimum requirements for installing %1.<br/>Installation cannot continue. <a href="#details">Details...</a> - + Denne datamaskinen oppfyller ikke minimumskravene for installering %1.<br/> Installeringen kan ikke fortsette. <a href="#details">Detaljer..</a> @@ -309,7 +309,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. System requirements - + Systemkrav @@ -327,7 +327,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <strong>Manual partitioning</strong><br/>You can create or resize partitions yourself. - + <strong>Manuell partisjonering</strong><br/>Du kan opprette eller endre størrelse på partisjoner selv. @@ -460,7 +460,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Cannot get list of temporary mounts. - Klarer ikke å få tak i listen over midlertidige monterte disker. + Klarte ikke å få tak i listen over midlertidige monterte disker. @@ -656,7 +656,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Creating user %1. - + Oppretter bruker %1. @@ -681,7 +681,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Cannot create user %1. - Klarte ikke å opprette bruker %1 + Klarte ikke opprette bruker %1 @@ -938,7 +938,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Restart now - + &Start på nytt nå @@ -948,7 +948,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <h1>Installation Failed</h1><br/>%1 has not been installed on your computer.<br/>The error message was: %2. - + <h1>Innnstallasjonen mislyktes</h1><br/>%1 har ikke blitt installert på datamaskinen din.<br/>Feilmeldingen var: %2. @@ -961,12 +961,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Installation Complete - + Installasjon fullført The installation of %1 is complete. - + Installasjonen av %1 er fullført. @@ -984,7 +984,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Formatting partition %1 with file system %2. - + Formaterer partisjon %1 med filsystem %2. @@ -1023,12 +1023,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Set keyboard model to %1.<br/> - + Sett tastaturmodell til %1.<br/> Set keyboard layout to %1/%2. - + Sett tastaturoppsett til %1/%2. @@ -1059,7 +1059,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &OK - + &OK @@ -1098,18 +1098,18 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <strong>%1 driver</strong><br/>by %2 %1 is an untranslatable product name, example: Creative Audigy driver - + <strong>%1 driver</strong><br/>fra %2 <strong>%1 graphics driver</strong><br/><font color="Grey">by %2</font> %1 is usually a vendor name, example: Nvidia graphics driver - + <strong>%1 grafikkdriver</strong><br/><font color="Grey">fra %2</font> <strong>%1 browser plugin</strong><br/><font color="Grey">by %2</font> - + <strong>%1 nettlesertillegg</strong><br/><font color="Grey">fra %2</font> @@ -1124,7 +1124,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. <strong>%1</strong><br/><font color="Grey">by %2</font> - + <strong>%1</strong><br/><font color="Grey">fra %2</font> @@ -1137,7 +1137,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. License - + Lisens @@ -1166,7 +1166,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. &Change... - + &Endre... @@ -1177,7 +1177,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. %1 (%2) Language (Country) - + %1 (%2) @@ -1229,17 +1229,17 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Password is too short - + Passordet er for kort Password is too long - + Passordet er for langt Password is too weak - + Passordet er for svakt @@ -1254,7 +1254,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password is the same as the old one - + Passordet er det samme som det gamle @@ -1269,7 +1269,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password is too similar to the old one - + Passordet likner for mye på det gamle @@ -1299,22 +1299,22 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password contains less than %1 uppercase letters - + Passordet inneholder mindre enn %1 store bokstaver The password contains too few uppercase letters - + Passordet inneholder for få store bokstaver The password contains less than %1 lowercase letters - + Passordet inneholder mindre enn %1 små bokstaver The password contains too few lowercase letters - + Passordet inneholder for få små bokstaver @@ -1334,7 +1334,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password is too short - + Passordet er for kort @@ -1359,7 +1359,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. The password contains too many same characters consecutively - + Passordet inneholder for mange like tegn etter hverandre @@ -1444,7 +1444,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Setting is not of string type - + Innstillingen er ikke av type streng @@ -1464,7 +1464,7 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Unknown error - + Ukjent feil @@ -1477,12 +1477,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. Keyboard Model: - + Tastaturmodell: Type here to test your keyboard - + Skriv her for å teste tastaturet ditt @@ -1495,12 +1495,12 @@ Installasjonsprogrammet vil avsluttes og alle endringer vil gå tapt. What is your name? - + Hva heter du? What name do you want to use to log in? - + Hvilket navn vil du bruke for å logge inn? @@ -1890,13 +1890,13 @@ Output: Default Keyboard Model - + Standard tastaturmodell Default - + Standard @@ -1954,7 +1954,7 @@ Output: %1 cannot be installed on this partition. - + %1 kan ikke bli installert på denne partisjonen. @@ -2029,22 +2029,22 @@ Output: is plugged in to a power source - + er koblet til en strømkilde The system is not plugged in to a power source. - + Systemet er ikke koblet til en strømkilde. is connected to the Internet - + er tilkoblet Internett The system is not connected to the Internet. - + Systemet er ikke tilkoblet Internett. @@ -2114,7 +2114,7 @@ Output: Internal Error - + Intern feil @@ -2314,7 +2314,7 @@ Output: Cannot open /etc/timezone for writing - + Klarte ikke åpne /etc/timezone for skriving @@ -2463,7 +2463,7 @@ Output: Your username is too long. - + Brukernavnet ditt er for langt. @@ -2497,7 +2497,7 @@ Output: Users - + Brukere @@ -2510,7 +2510,7 @@ Output: &Language: - + &Språk: @@ -2530,7 +2530,7 @@ Output: &About - + &Om @@ -2563,7 +2563,7 @@ Output: Welcome - + Velkommen \ No newline at end of file diff --git a/lang/calamares_pt_BR.ts b/lang/calamares_pt_BR.ts index 8ed9e679d..ea326e6a6 100644 --- a/lang/calamares_pt_BR.ts +++ b/lang/calamares_pt_BR.ts @@ -9,12 +9,12 @@ This system was started with an <strong>EFI</strong> boot environment.<br><br>To configure startup from an EFI environment, this installer must deploy a boot loader application, like <strong>GRUB</strong> or <strong>systemd-boot</strong> on an <strong>EFI System Partition</strong>. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own. - Este sistema foi iniciado com um ambiente de inicialização <strong>EFI</strong>.<br><br>Para configurar o início a partir de um ambiente EFI, este instalador deverá instalar um gerenciador de inicialização, como o <strong>GRUB</strong> ou <strong>systemd-boot</strong> em uma <strong>Partição de Sistema EFI</strong>. Este processo é automático, a não ser que escolha o particionamento manual, que no caso permite-lhe escolher ou criá-lo manualmente. + Este sistema foi iniciado com um ambiente de inicialização <strong>EFI</strong>.<br><br>Para configurar o início a partir de um ambiente EFI, este instalador deverá instalar um gerenciador de inicialização, como o <strong>GRUB</strong> ou <strong>systemd-boot</strong> em uma <strong>Partição de Sistema EFI</strong>. Esse processo é automático, a não ser que escolha o particionamento manual, que no caso fará você escolher ou criar o gerenciador de inicialização por conta própria. This system was started with a <strong>BIOS</strong> boot environment.<br><br>To configure startup from a BIOS environment, this installer must install a boot loader, like <strong>GRUB</strong>, either at the beginning of a partition or on the <strong>Master Boot Record</strong> near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own. - Este sistema foi iniciado utilizando o <strong>BIOS</strong> como ambiente de inicialização.<br><br>Para configurar a inicialização em um ambiente BIOS, este instalador deve instalar um gerenciador de boot, como o <strong>GRUB</strong>, no começo de uma partição ou no <strong>Master Boot Record</strong>, perto do começo da tabela de partições (recomendado). Este processo é automático, a não ser que você escolha o particionamento manual, onde você deverá configurá-lo manualmente. + Este sistema foi iniciado utilizando o <strong>BIOS</strong> como ambiente de inicialização.<br><br>Para configurar a inicialização em um ambiente BIOS, este instalador deve instalar um gerenciador de boot, como o <strong>GRUB</strong>, no começo de uma partição ou no <strong>Master Boot Record</strong>, perto do começo da tabela de partições (recomendado). Esse processo é automático, a não ser que você escolha o particionamento manual, onde você deverá configurá-lo manualmente. @@ -387,7 +387,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. This storage device does not seem to have an operating system on it. What would you like to do?<br/>You will be able to review and confirm your choices before any change is made to the storage device. - Parece que não há um sistema operacional neste dispositivo. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. + Parece que não há um sistema operacional neste dispositivo de armazenamento. O que você gostaria de fazer?<br/>Você poderá revisar e confirmar suas opções antes que as alterações sejam feitas no dispositivo de armazenamento. @@ -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 @@ -1514,7 +1514,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. <small>If more than one person will use this computer, you can set up multiple accounts after installation.</small> - <small>Se mais de uma pessoa usará este computador, você pode definir múltiplas contas após a instalação.</small> + <small>Se mais de uma pessoa utilizará este computador, você pode definir múltiplas contas após a instalação.</small> @@ -1534,7 +1534,7 @@ A instalação pode continuar, mas alguns recursos podem ser desativados. <small>This name will be used if you make the computer visible to others on a network.</small> - <small>Este nome será usado caso você deixe o computador visível a outros na rede.</small> + <small>Esse nome será usado caso você deixe o computador visível a outros na rede.</small> @@ -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_tr_TR.ts b/lang/calamares_tr_TR.ts index 5c4afeb74..1e028db31 100644 --- a/lang/calamares_tr_TR.ts +++ b/lang/calamares_tr_TR.ts @@ -1242,232 +1242,232 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. Password is too weak - + Şifre çok zayıf Memory allocation error when setting '%1' - + '%1' ayarlanırken bellek ayırma hatası Memory allocation error - + Bellek ayırma hatası The password is the same as the old one - + Şifre eski şifreyle aynı The password is a palindrome - + Parola eskilerden birinin ters okunuşu olabilir The password differs with case changes only - + Parola sadece vaka değişiklikleri ile farklılık gösterir The password is too similar to the old one - + Parola eski parolaya çok benzer The password contains the user name in some form - + Parola kullanıcı adını bir biçimde içeriyor The password contains words from the real name of the user in some form - + Şifre, kullanıcının gerçek adına ait kelimeleri bazı biçimde içerir The password contains forbidden words in some form - + Şifre, bazı biçimde yasak kelimeler içeriyor The password contains less than %1 digits - + Şifre %1 den az hane içeriyor The password contains too few digits - + Parola çok az basamak içeriyor The password contains less than %1 uppercase letters - + Parola %1 den az büyük harf içeriyor The password contains too few uppercase letters - + Parola çok az harf içermektedir The password contains less than %1 lowercase letters - + Parola %1 den daha küçük harf içermektedir The password contains too few lowercase letters - + Parola çok az küçük harf içeriyor The password contains less than %1 non-alphanumeric characters - + Şifre %1 den az alfasayısal olmayan karakter içeriyor The password contains too few non-alphanumeric characters - + Parola çok az sayıda alfasayısal olmayan karakter içeriyor The password is shorter than %1 characters - + Parola %1 karakterden kısa The password is too short - + Parola çok kısa The password is just rotated old one - + Şifre önceden kullanıldı The password contains less than %1 character classes - + Parola %1 den az karakter sınıfı içeriyor The password does not contain enough character classes - + Parola yeterli sayıda karakter sınıfı içermiyor The password contains more than %1 same characters consecutively - + Şifre, %1 den fazla aynı karakteri ardışık olarak içeriyor The password contains too many same characters consecutively - + Parola ardışık olarak aynı sayıda çok karakter içeriyor The password contains more than %1 characters of the same class consecutively - + Parola, aynı sınıftan %1 den fazla karakter ardışık olarak içeriyor The password contains too many characters of the same class consecutively - + Parola aynı sınıfta çok fazla karakter içeriyor The password contains monotonic sequence longer than %1 characters - + Şifre, %1 karakterden daha uzun monoton dizilim içeriyor The password contains too long of a monotonic character sequence - + Parola çok uzun monoton karakter dizisi içeriyor No password supplied - + Parola sağlanmadı Cannot obtain random numbers from the RNG device - + RNG cihazından rastgele sayılar elde edemiyor Password generation failed - required entropy too low for settings - + Şifre üretimi başarısız oldu - ayarlar için entropi çok düşük gerekli The password fails the dictionary check - %1 - + Parola, sözlüğü kontrolü başarısız - %1 The password fails the dictionary check - + Parola, sözlük onayı başarısız Unknown setting - %1 - + Bilinmeyen ayar - %1 Unknown setting - + Bilinmeyen ayar Bad integer value of setting - %1 - + Ayarın bozuk tam sayı değeri - %1 Bad integer value - + Yanlış tamsayı değeri Setting %1 is not of integer type - + %1 ayarı tamsayı tipi değil Setting is not of integer type - + Ayar tamsayı tipi değil Setting %1 is not of string type - + Ayar %1, dize tipi değil Setting is not of string type - + Ayar, dize tipi değil Opening the configuration file failed - + Yapılandırma dosyasını açma başarısız oldu The configuration file is malformed - + Yapılandırma dosyası hatalı biçimlendirildi Fatal failure - + Ölümcül arıza Unknown error - + Bilinmeyen hata @@ -1829,7 +1829,8 @@ Kuruluma devam edebilirsiniz fakat bazı özellikler devre dışı kalabilir. There was no output from the command. - + +Komut çıktısı yok. 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..20ac27ce5 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/bg/LC_MESSAGES/python.po b/lang/python/bg/LC_MESSAGES/python.po index c64d4dc1c..a86edb07c 100644 --- a/lang/python/bg/LC_MESSAGES/python.po +++ b/lang/python/bg/LC_MESSAGES/python.po @@ -10,6 +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: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -36,18 +37,18 @@ msgstr "" #: src/modules/packages/main.py:62 src/modules/packages/main.py:72 msgid "Install packages." -msgstr "" +msgstr "Инсталирай пакетите." #: src/modules/packages/main.py:65 #, python-format msgid "Installing one package." msgid_plural "Installing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Инсталиране на един пакет." +msgstr[1] "Инсталиране на %(num)d пакети." #: src/modules/packages/main.py:68 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Премахване на един пакет." +msgstr[1] "Премахване на %(num)d пакети." 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..493a6c00b 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/ru/LC_MESSAGES/python.po b/lang/python/ru/LC_MESSAGES/python.po index 4a0bbf4d8..374ec2773 100644 --- a/lang/python/ru/LC_MESSAGES/python.po +++ b/lang/python/ru/LC_MESSAGES/python.po @@ -10,6 +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: Aleksey Kabanov , 2018\n" "Language-Team: Russian (https://www.transifex.com/calamares/teams/20061/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,7 +33,7 @@ msgstr "" #: src/modules/packages/main.py:60 #, python-format msgid "Processing packages (%(count)d / %(total)d)" -msgstr "" +msgstr "Обработка пакетов (%(count)d / %(total)d)" #: src/modules/packages/main.py:62 src/modules/packages/main.py:72 msgid "Install packages." 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..fa297fff9 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/tr_TR/LC_MESSAGES/python.po b/lang/python/tr_TR/LC_MESSAGES/python.po index 9c7d98b8f..2acfdf7f9 100644 --- a/lang/python/tr_TR/LC_MESSAGES/python.po +++ b/lang/python/tr_TR/LC_MESSAGES/python.po @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr_TR\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/dummypython/main.py:44 msgid "Dummy python job." @@ -44,9 +44,11 @@ msgstr "Paketleri yükle" msgid "Installing one package." msgid_plural "Installing %(num)d packages." msgstr[0] "%(num)d paket yükleniyor" +msgstr[1] "%(num)d paket yükleniyor" #: src/modules/packages/main.py:68 #, python-format msgid "Removing one package." msgid_plural "Removing %(num)d packages." msgstr[0] "%(num)d paket kaldırılıyor." +msgstr[1] "%(num)d paket kaldırılıyor." 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/calamares/CMakeLists.txt b/src/calamares/CMakeLists.txt index f47a0a9f5..270abbb88 100644 --- a/src/calamares/CMakeLists.txt +++ b/src/calamares/CMakeLists.txt @@ -18,10 +18,6 @@ set( calamaresSources progresstree/ViewStepItem.cpp ) -set( calamaresUi - #nothing to do here -) - include_directories( . ${CMAKE_CURRENT_BINARY_DIR} @@ -33,16 +29,14 @@ include_directories( include( GNUInstallDirs ) -qt5_wrap_ui( calamaresUi_H ${calamaresUi} ) - # Translations include( CalamaresAddTranslations ) add_calamares_translations( ${CALAMARES_TRANSLATION_LANGUAGES} ) -set( final_src ${calamaresUi_H} ${calamaresSources} ${calamaresRc} ${trans_outfile} ) +set( final_src ${calamaresSources} ${calamaresRc} ${trans_outfile} ) add_executable( calamares_bin ${final_src} ) -SET_TARGET_PROPERTIES(calamares_bin +set_target_properties(calamares_bin PROPERTIES AUTOMOC TRUE ENABLE_EXPORTS TRUE diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp index 04e0dab3b..1c1ba2181 100644 --- a/src/calamares/main.cpp +++ b/src/calamares/main.cpp @@ -35,6 +35,45 @@ #include #include +static void +handle_args( CalamaresApplication& a ) +{ + QCommandLineOption debugOption( QStringList{ "d", "debug"}, + "Also look in current directory for configuration. Implies -D8." ); + QCommandLineOption debugLevelOption( QStringLiteral("D"), + "Verbose output for debugging purposes (0-8).", "level" ); + QCommandLineOption configOption( QStringList{ "c", "config"}, + "Configuration directory to use, for testing purposes.", "config" ); + + QCommandLineParser parser; + parser.setApplicationDescription( "Distribution-independent installer framework" ); + parser.addHelpOption(); + parser.addVersionOption(); + + parser.addOption( debugOption ); + parser.addOption( debugLevelOption ); + parser.addOption( configOption ); + + parser.process( a ); + + a.setDebug( parser.isSet( debugOption ) ); + if ( parser.isSet( debugOption ) ) + Logger::setupLogLevel( Logger::LOGVERBOSE ); + else if ( parser.isSet( debugLevelOption ) ) + { + bool ok = true; + int l = parser.value( debugLevelOption ).toInt( &ok ); + unsigned int dlevel = 0; + if ( !ok || ( l < 0 ) ) + dlevel = Logger::LOGVERBOSE; + else + dlevel = l; + Logger::setupLogLevel( dlevel ); + } + if ( parser.isSet( configOption ) ) + CalamaresUtils::setAppDataDir( QDir( parser.value( configOption ) ) ); +} + int main( int argc, char* argv[] ) { @@ -59,28 +98,7 @@ main( int argc, char* argv[] ) a.setApplicationDisplayName( QString() ); #endif - QCommandLineParser parser; - parser.setApplicationDescription( "Distribution-independent installer framework" ); - parser.addHelpOption(); - parser.addVersionOption(); - QCommandLineOption debugOption( QStringList{ "d", "debug"}, - "Also look in current directory for configuration. Implies -D." ); - parser.addOption( debugOption ); - - parser.addOption( QCommandLineOption( QStringLiteral("D"), - "Verbose output for debugging purposes." ) ); - - QCommandLineOption configOption( QStringList{ "c", "config"}, - "Configuration directory to use, for testing purposes.", "config" ); - parser.addOption( configOption ); - - parser.process( a ); - - a.setDebug( parser.isSet( debugOption ) ); - - if ( parser.isSet( configOption ) ) - CalamaresUtils::setAppDataDir( QDir( parser.value( configOption ) ) ); - + handle_args( a ); KDSingleApplicationGuard guard( KDSingleApplicationGuard::AutoKillOtherInstances ); int returnCode = 0; diff --git a/src/libcalamares/ProcessJob.cpp b/src/libcalamares/ProcessJob.cpp index 68287097e..55e25254c 100644 --- a/src/libcalamares/ProcessJob.cpp +++ b/src/libcalamares/ProcessJob.cpp @@ -106,16 +106,16 @@ ProcessJob::callOutput( const QString& command, process.setWorkingDirectory( QDir( workingPath ).absolutePath() ); else { - cLog() << "Invalid working directory:" << workingPath; + cWarning() << "Invalid working directory:" << workingPath; return -3; } } - cLog() << "Running" << command; + cDebug() << "Running" << command; process.start(); if ( !process.waitForStarted() ) { - cLog() << "Process failed to start" << process.error(); + cWarning() << "Process failed to start" << process.error(); return -2; } @@ -127,9 +127,9 @@ ProcessJob::callOutput( const QString& command, if ( !process.waitForFinished( timeoutSec ? ( timeoutSec * 1000 ) : -1 ) ) { - cLog() << "Timed out. output so far:"; + cWarning() << "Timed out. output so far:"; output.append( QString::fromLocal8Bit( process.readAllStandardOutput() ).trimmed() ); - cLog() << output; + cWarning() << output; return -4; } @@ -137,11 +137,11 @@ ProcessJob::callOutput( const QString& command, if ( process.exitStatus() == QProcess::CrashExit ) { - cLog() << "Process crashed"; + cWarning() << "Process crashed"; return -1; } - cLog() << "Finished. Exit code:" << process.exitCode(); + cDebug() << "Finished. Exit code:" << process.exitCode(); return process.exitCode(); } diff --git a/src/libcalamares/PythonJob.cpp b/src/libcalamares/PythonJob.cpp index 48682dbad..92dbedef9 100644 --- a/src/libcalamares/PythonJob.cpp +++ b/src/libcalamares/PythonJob.cpp @@ -99,6 +99,13 @@ BOOST_PYTHON_MODULE( libcalamares ) bp::args( "s" ), "Writes the given string to the Calamares debug stream." ); + bp::def( + "warning", + &CalamaresPython::warning, + bp::args( "s" ), + "Writes the given string to the Calamares warning stream." + ); + bp::def( "mount", &CalamaresPython::mount, diff --git a/src/libcalamares/PythonJobApi.cpp b/src/libcalamares/PythonJobApi.cpp index 9219ff1fc..a5bae6149 100644 --- a/src/libcalamares/PythonJobApi.cpp +++ b/src/libcalamares/PythonJobApi.cpp @@ -171,6 +171,11 @@ debug( const std::string& s ) cDebug() << "[PYTHON JOB]: " << QString::fromStdString( s ); } +void +warning( const std::string& s ) +{ + cWarning() << "[PYTHON JOB]: " << QString::fromStdString( s ); +} PythonJobInterface::PythonJobInterface( Calamares::PythonJob* parent ) : m_parent( parent ) diff --git a/src/libcalamares/PythonJobApi.h b/src/libcalamares/PythonJobApi.h index aed9b3d77..0e68d7936 100644 --- a/src/libcalamares/PythonJobApi.h +++ b/src/libcalamares/PythonJobApi.h @@ -66,6 +66,7 @@ boost::python::object gettext_path(); boost::python::list gettext_languages(); void debug( const std::string& s ); +void warning( const std::string& s ); class PythonJobInterface { diff --git a/src/libcalamares/utils/CalamaresUtils.cpp b/src/libcalamares/utils/CalamaresUtils.cpp index c0175f771..fe07c62a0 100644 --- a/src/libcalamares/utils/CalamaresUtils.cpp +++ b/src/libcalamares/utils/CalamaresUtils.cpp @@ -24,6 +24,7 @@ #include "CalamaresUtils.h" #include "CalamaresConfig.h" +#include "Logger.h" #include #include @@ -166,11 +167,11 @@ installTranslator( const QLocale& locale, "_", brandingTranslationsDir.absolutePath() ) ) { - qDebug() << "Translation: Branding component: Using system locale:" << localeName; + cDebug() << "Translation: Branding using locale:" << localeName; } else { - qDebug() << "Translation: Branding component: Using default locale, system locale one not found:" << localeName; + cDebug() << "Translation: Branding using default, system locale not found:" << localeName; translator->load( brandingTranslationsPrefix + "en" ); } @@ -189,11 +190,11 @@ installTranslator( const QLocale& locale, translator = new QTranslator( parent ); if ( translator->load( QString( ":/lang/calamares_" ) + localeName ) ) { - qDebug() << "Translation: Calamares: Using system locale:" << localeName; + cDebug() << "Translation: Calamares using locale:" << localeName; } else { - qDebug() << "Translation: Calamares: Using default locale, system locale one not found:" << localeName; + cDebug() << "Translation: Calamares using default, system locale not found:" << localeName; translator->load( QString( ":/lang/calamares_en" ) ); } diff --git a/src/libcalamares/utils/CalamaresUtilsSystem.cpp b/src/libcalamares/utils/CalamaresUtilsSystem.cpp index 9729386d4..54243553a 100644 --- a/src/libcalamares/utils/CalamaresUtilsSystem.cpp +++ b/src/libcalamares/utils/CalamaresUtilsSystem.cpp @@ -117,7 +117,7 @@ System::runCommand( if ( ( location == System::RunLocation::RunInTarget ) && ( !gs || !gs->contains( "rootMountPoint" ) ) ) { - cLog() << "No rootMountPoint in global storage"; + cWarning() << "No rootMountPoint in global storage"; return -3; } @@ -130,7 +130,7 @@ System::runCommand( QString destDir = gs->value( "rootMountPoint" ).toString(); if ( !QDir( destDir ).exists() ) { - cLog() << "rootMountPoint points to a dir which does not exist"; + cWarning() << "rootMountPoint points to a dir which does not exist"; return -3; } @@ -153,15 +153,15 @@ System::runCommand( if ( QDir( workingPath ).exists() ) process.setWorkingDirectory( QDir( workingPath ).absolutePath() ); else - cLog() << "Invalid working directory:" << workingPath; + cWarning() << "Invalid working directory:" << workingPath; return -3; } - cLog() << "Running" << program << arguments; + cDebug() << "Running" << program << arguments; process.start(); if ( !process.waitForStarted() ) { - cLog() << "Process failed to start" << process.error(); + cWarning() << "Process failed to start" << process.error(); return -2; } @@ -173,8 +173,8 @@ System::runCommand( if ( !process.waitForFinished( timeoutSec ? ( timeoutSec * 1000 ) : -1 ) ) { - cLog() << "Timed out. output so far:"; - cLog() << process.readAllStandardOutput(); + cWarning() << "Timed out. output so far:\n" << + process.readAllStandardOutput(); return -4; } @@ -182,16 +182,16 @@ System::runCommand( if ( process.exitStatus() == QProcess::CrashExit ) { - cLog() << "Process crashed"; + cWarning() << "Process crashed"; return -1; } auto r = process.exitCode(); - cLog() << "Finished. Exit code:" << r; + cDebug() << "Finished. Exit code:" << r; if ( r != 0 ) { - cLog() << "Target cmd:" << args; - cLog().noquote() << "Target output:\n" << output; + cDebug() << "Target cmd:" << args; + cDebug().noquote() << "Target output:\n" << output; } return ProcessResult(r, output); } diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 69a370451..fe95ad36b 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -35,31 +35,28 @@ #define LOGFILE_SIZE 1024 * 256 static std::ofstream logfile; -static unsigned int s_threshold = 0; // Set to non-zero on first logging call +static unsigned int s_threshold = +#ifdef QT_NO_DEBUG + Logger::LOG_DISABLE; +#else + Logger::LOGEXTRA + 1; // Comparison is < in log() function +#endif static QMutex s_mutex; namespace Logger { +void +setupLogLevel(unsigned int level) +{ + if ( level > LOGVERBOSE ) + level = LOGVERBOSE; + s_threshold = level + 1; // Comparison is < in log() function +} + static void log( const char* msg, unsigned int debugLevel, bool toDisk = true ) { - if ( !s_threshold ) - { - if ( qApp->arguments().contains( "--debug" ) || - qApp->arguments().contains( "-d" ) || - qApp->arguments().contains( "-D" ) ) - s_threshold = LOGVERBOSE; - else -#ifdef QT_NO_DEBUG - s_threshold = LOG_DISABLE; -#else - s_threshold = LOGEXTRA; -#endif - // Comparison is < threshold, below - ++s_threshold; - } - if ( toDisk || debugLevel < s_threshold ) { QMutexLocker lock( &s_mutex ); @@ -154,10 +151,6 @@ setupLogfile() qInstallMessageHandler( CalamaresLogHandler ); } -} - -using namespace Logger; - CLog::CLog( unsigned int debugLevel ) : QDebug( &m_msg ) , m_debugLevel( debugLevel ) @@ -170,6 +163,8 @@ CLog::~CLog() log( m_msg.toUtf8().data(), m_debugLevel ); } -Logger::CDebug::~CDebug() +CDebug::~CDebug() { } + +} // namespace diff --git a/src/libcalamares/utils/Logger.h b/src/libcalamares/utils/Logger.h index b6c0b4fa7..b6211c4fe 100644 --- a/src/libcalamares/utils/Logger.h +++ b/src/libcalamares/utils/Logger.h @@ -61,6 +61,17 @@ namespace Logger DLLEXPORT void CalamaresLogHandler( QtMsgType type, const QMessageLogContext& context, const QString& msg ); DLLEXPORT void setupLogfile(); DLLEXPORT QString logFile(); + + /** + * @brief Set a log level for future logging. + * + * Pass in a value from the LOG* enum, above. Use 0 to + * disable logging. Values greater than LOGVERBOSE are + * limited to LOGVERBOSE, which will log everything. + * + * Practical values are 0, 1, 2, and 6. + */ + DLLEXPORT void setupLogLevel( unsigned int level ); } #define cLog Logger::CLog 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/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..348cc2629 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/bg/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.po index 9d8734987..011a2294f 100644 --- a/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/bg/LC_MESSAGES/dummypythonqt.po @@ -8,8 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-04 08:16-0400\n" +"POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Georgi Georgiev , 2018\n" "Language-Team: Bulgarian (https://www.transifex.com/calamares/teams/20061/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,11 +20,11 @@ msgstr "" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" -msgstr "" +msgstr "Натисни ме!" #: src/modules/dummypythonqt/main.py:94 msgid "A new QLabel." -msgstr "" +msgstr "Нов QLabel." #: src/modules/dummypythonqt/main.py:97 msgid "Dummy PythonQt ViewStep" 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..57e8ac336 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/tr_TR/LC_MESSAGES/dummypythonqt.po b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.po index 316907674..cf65fd0e5 100644 --- a/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.po +++ b/src/modules/dummypythonqt/lang/tr_TR/LC_MESSAGES/dummypythonqt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-21 16:44+0100\n" +"POT-Creation-Date: 2018-02-07 18:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Demiray “tulliana” Muhterem , 2016\n" "Language-Team: Turkish (Turkey) (https://www.transifex.com/calamares/teams/20061/tr_TR/)\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr_TR\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/modules/dummypythonqt/main.py:84 msgid "Click me!" 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/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp index 377a1155c..ca03ccb89 100644 --- a/src/modules/finished/FinishedPage.cpp +++ b/src/modules/finished/FinishedPage.cpp @@ -40,7 +40,6 @@ FinishedPage::FinishedPage( QWidget* parent ) , ui( new Ui::FinishedPage ) , m_restartSetUp( false ) { - cDebug() << "FinishedPage()"; ui->setupUi( this ); ui->mainText->setAlignment( Qt::AlignCenter ); 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/packages/main.py b/src/modules/packages/main.py index f066b8292..b246244f5 100644 --- a/src/modules/packages/main.py +++ b/src/modules/packages/main.py @@ -7,6 +7,7 @@ # Copyright 2015-2017, Teo Mrnjavac # Copyright 2016-2017, Kyle Robbertze # Copyright 2017, Alf Gaida +# 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 @@ -394,9 +395,9 @@ def run_operations(pkgman, entry): try: pkgman.install_package(package) except subprocess.CalledProcessError: - warn_text = "WARNING: could not install package " + warn_text = "Could not install package " warn_text += str(package) - libcalamares.utils.debug(warn_text) + libcalamares.utils.warning(warn_text) elif key == "remove": _change_mode(REMOVE) pkgman.remove(entry[key]) @@ -406,9 +407,9 @@ def run_operations(pkgman, entry): try: pkgman.remove([package]) except subprocess.CalledProcessError: - warn_text = "WARNING: could not remove package " + warn_text = "Could not remove package " warn_text += package - libcalamares.utils.debug(warn_text) + libcalamares.utils.warning(warn_text) elif key == "localInstall": _change_mode(INSTALL) pkgman.install(entry[key], from_local=True) @@ -441,7 +442,7 @@ def run(): skip_this = libcalamares.job.configuration.get("skip_if_no_internet", False) if skip_this and not libcalamares.globalstorage.value("hasInternet"): - libcalamares.utils.debug( "WARNING: packages installation has been skipped: no internet" ) + libcalamares.utils.warning( "Package installation has been skipped: no internet" ) return None update_db = libcalamares.job.configuration.get("update_db", False) 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/umount/main.py b/src/modules/umount/main.py index 5a04796f6..a337c481a 100644 --- a/src/modules/umount/main.py +++ b/src/modules/umount/main.py @@ -5,6 +5,7 @@ # # Copyright 2014, Aurélien Gâteau # Copyright 2016, Anke Boersma +# 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 @@ -24,6 +25,19 @@ import subprocess import shutil import libcalamares +from libcalamares.utils import gettext_path, gettext_languages + +import gettext +_translation = gettext.translation("calamares-python", + localedir=gettext_path(), + languages=gettext_languages(), + fallback=True) +_ = _translation.gettext +_n = _translation.ngettext + + +def pretty_name(): + return _( "Unmount file systems." ) def list_mounts(root_mount_point): @@ -65,7 +79,7 @@ def run(): try: shutil.copy2(log_source, log_destination) except Exception as e: - libcalamares.utils.debug("WARNING Could not preserve file {!s}, " + libcalamares.utils.warning("Could not preserve file {!s}, " "error {!s}".format(log_source, e)) if not root_mount_point: 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