Merge pull request #828 from stikonas/lvm2

Add support for performing operations on LVM logical volumes.
This commit is contained in:
Adriaan de Groot 2017-12-15 07:13:24 -05:00 committed by GitHub
commit 12deb67ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
114 changed files with 1408 additions and 1586 deletions

3
.gitignore vendored
View File

@ -46,3 +46,6 @@ CMakeLists.txt.user
# Backup files # Backup files
*~ *~
# Kate
*.kate-swp

View File

@ -1,6 +1,4 @@
language: language: cpp
- cpp
- python
python: python:
- 3.5 - 3.5
@ -18,5 +16,5 @@ install:
- docker build -t calamares . - docker build -t calamares .
script: script:
- docker run -v $PWD:/src --tmpfs /build:rw,size=65536k calamares bash -lc "cd /build && cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON /src && make -j2 && make install DESTDIR=/build/INSTALL_ROOT" - docker run -v $PWD:/src --tmpfs /build:rw,size=65536k -e SRCDIR=/src -e BUILDDIR=/build calamares "/src/ci/travis.sh"

26
AUTHORS
View File

@ -1,2 +1,24 @@
Teo Mrnjavac <teo@kde.org> # MAINTAINER
Adriaan de Groot <groot@kde.org>
Teo Mrnjavac <teo@kde.org> (maintainer -2017)
Adriaan de Groot <groot@kde.org> (maintainer 2017-)
# CONTRIBUTORS
Alf Gaida
Allen Welkie
Andrius Štikonas
Bernhard Landauer
Bezzy1999
bill-auger
crispg72
demmm
Gabriel Craciunescu
Kai Dohmen
Kevin Kofler
Kyle Robertze
Lisa Vitolo
n3rdopolis
Philip Müller
Ramon Buldó
Rohan Garg

View File

@ -50,7 +50,7 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
# Clang warnings: doing *everything* is counter-productive, since it warns # Clang warnings: doing *everything* is counter-productive, since it warns
# about things which we can't fix (e.g. C++98 incompatibilities, but # about things which we can't fix (e.g. C++98 incompatibilities, but
# Calaares is C++14). # Calamares is C++14).
foreach( CLANG_WARNINGS foreach( CLANG_WARNINGS
-Weverything -Weverything
-Wno-c++98-compat -Wno-c++98-compat
@ -88,6 +88,8 @@ else()
set( SUPPRESS_BOOST_WARNINGS "" ) set( SUPPRESS_BOOST_WARNINGS "" )
endif() endif()
# Use mark_thirdparty_code() to reduce warnings from the compiler
# on code that we're not going to fix. Call this with a list of files.
macro(mark_thirdparty_code) macro(mark_thirdparty_code)
set_source_files_properties( ${ARGV} set_source_files_properties( ${ARGV}
PROPERTIES PROPERTIES
@ -164,8 +166,8 @@ set( CALAMARES_TRANSLATION_LANGUAGES ar ast bg ca cs_CZ da de el en en_GB es_MX
### Bump version here ### Bump version here
set( CALAMARES_VERSION_MAJOR 3 ) set( CALAMARES_VERSION_MAJOR 3 )
set( CALAMARES_VERSION_MINOR 1 ) set( CALAMARES_VERSION_MINOR 1 )
set( CALAMARES_VERSION_PATCH 5 ) set( CALAMARES_VERSION_PATCH 8 )
set( CALAMARES_VERSION_RC 0 ) set( CALAMARES_VERSION_RC 1 )
set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} ) set( CALAMARES_VERSION ${CALAMARES_VERSION_MAJOR}.${CALAMARES_VERSION_MINOR}.${CALAMARES_VERSION_PATCH} )
set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" ) set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" )
@ -265,12 +267,9 @@ else()
endif() endif()
# Doesn't list mksquashfs as an optional dep, though, because it # Doesn't list mksquashfs as an optional dep, though, because it
# hasn't been sent through the find_package() scheme. # hasn't been sent through the find_package() scheme.
set_package_properties( mksquashfs PROPERTIES #
DESCRIPTION "Create squashed filesystems" # "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html"
URL "http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html" add_feature_info( ExampleDistro ${mksquashfs_FOUND} "Create example-distro target.")
PURPOSE "Create example distro"
TYPE OPTIONAL
)
# add_subdirectory( thirdparty ) # add_subdirectory( thirdparty )
add_subdirectory( src ) add_subdirectory( src )

View File

@ -6,9 +6,12 @@ set( MODULE_DATA_DESTINATION share/calamares/modules )
function( calamares_add_module_subdirectory ) function( calamares_add_module_subdirectory )
set( SUBDIRECTORY ${ARGV0} ) set( SUBDIRECTORY ${ARGV0} )
set( MODULE_CONFIG_FILES "" )
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it... # If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
add_subdirectory( ${SUBDIRECTORY} ) add_subdirectory( ${SUBDIRECTORY} )
file( GLOB MODULE_CONFIG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*.conf" )
# ...otherwise, we look for a module.desc. # ...otherwise, we look for a module.desc.
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" ) elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" )
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules ) set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
@ -39,7 +42,7 @@ function( calamares_add_module_subdirectory )
# message( " ${Green}FILES:${ColorReset} ${MODULE_FILES}" ) # message( " ${Green}FILES:${ColorReset} ${MODULE_FILES}" )
message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" ) message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" )
if( MODULE_CONFIG_FILES ) if( MODULE_CONFIG_FILES )
if (INSTALL_CONFIG) if ( INSTALL_CONFIG )
message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${MODULE_DATA_DESTINATION}" ) message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => ${MODULE_DATA_DESTINATION}" )
else() else()
message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => [Skipping installation]" ) message( " ${Green}CONFIGURATION_FILES:${ColorReset} ${MODULE_CONFIG_FILES} => [Skipping installation]" )
@ -56,9 +59,23 @@ function( calamares_add_module_subdirectory )
RENAME calamares-${SUBDIRECTORY}.mo RENAME calamares-${SUBDIRECTORY}.mo
) )
endif() endif()
else() else()
message( "-- ${BoldYellow}Warning:${ColorReset} tried to add module subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no CMakeLists.txt or module.desc." ) message( "-- ${BoldYellow}Warning:${ColorReset} tried to add module subdirectory ${BoldRed}${SUBDIRECTORY}${ColorReset} which has no CMakeLists.txt or module.desc." )
message( "" ) message( "" )
endif() endif()
# Check any config files for basic correctness
if ( BUILD_TESTING AND MODULE_CONFIG_FILES )
set( _count 0 )
foreach( _config_file ${MODULE_CONFIG_FILES} )
set( _count_str "-${_count}" )
if ( _count EQUAL 0 )
set( _count_str "" )
endif()
add_test(
NAME config-${SUBDIRECTORY}${_count_str}
COMMAND test_conf ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${_config_file} )
math( EXPR _count "${_count} + 1" )
endforeach()
endif()
endfunction() endfunction()

View File

@ -9,6 +9,20 @@ if(NOT PYTHONLIBS_FOUND)
message(FATAL_ERROR "error: Python is required to build PythonQt") message(FATAL_ERROR "error: Python is required to build PythonQt")
endif() endif()
# Cut X.Y[.Z] down to just X.Y
string(REGEX REPLACE
"^([0-9][0-9]*)\.([0-9][0-9]*)"
"\\1.\\2@"
_PYTHONLIBS_MAJMIN
${PYTHONLIBS_VERSION_STRING}
)
string(REGEX REPLACE
"@.*"
""
PYTHONLIBS_MAJMIN
${_PYTHONLIBS_MAJMIN}
)
if(NOT EXISTS "${PYTHONQT_INSTALL_DIR}") if(NOT EXISTS "${PYTHONQT_INSTALL_DIR}")
find_path(PYTHONQT_INSTALL_DIR include/PythonQt/PythonQt.h DOC "Directory where PythonQt was installed.") find_path(PYTHONQT_INSTALL_DIR include/PythonQt/PythonQt.h DOC "Directory where PythonQt was installed.")
endif() endif()
@ -22,17 +36,58 @@ find_path(PYTHONQT_INCLUDE_DIR PythonQt.h
"${PYTHONQT_INSTALL_DIR}/src" "${PYTHONQT_INSTALL_DIR}/src"
DOC "Path to the PythonQt include directory") DOC "Path to the PythonQt include directory")
# Minimum v3.1 is needed if ( NOT PythonQt_FIND_QUIETLY )
find_library(PYTHONQT_LIBRARY_RELEASE PythonQt PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") message( STATUS "Searching for PythonQt (PythonLibs ${PYTHONLIBS_MAJMIN}) .." )
find_library(PYTHONQT_LIBRARY_DEBUG NAMES PythonQt${CTK_CMAKE_DEBUG_POSTFIX} PythonQt${CMAKE_DEBUG_POSTFIX} PythonQt PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") if ( PYTHONQT_INCLUDE_DIR )
find_library(PYTHONQT_QTALL_LIBRARY_RELEASE PythonQt_QtAll PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") message( STATUS " .. found include ${PYTHONQT_INCLUDE_DIR}" )
find_library(PYTHONQT_QTALL_LIBRARY_DEBUG NAMES PythonQt_QtAll${CTK_CMAKE_DEBUG_POSTFIX} PythonQt_QtAll${CMAKE_DEBUG_POSTFIX} PythonQt_QtAll PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") endif()
endif()
# Also check for v3.2+ # Minimum v3.1 is needed
find_library(PYTHONQT_LIBRARY_RELEASE PythonQt-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") find_library(PYTHONQT_LIBRARY_RELEASE
find_library(PYTHONQT_LIBRARY_DEBUG NAMES PythonQt-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX} PythonQt-Qt5-Python3${CMAKE_DEBUG_POSTFIX} PythonQt-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "The PythonQt library.") NAMES
find_library(PYTHONQT_QTALL_LIBRARY_RELEASE PythonQt_QtAll-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}
find_library(PYTHONQT_QTALL_LIBRARY_DEBUG NAMES PythonQt_QtAll-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX} PythonQt_QtAll-Qt5-Python3${CMAKE_DEBUG_POSTFIX} PythonQt_QtAll-Qt5-Python3 PATHS "${PYTHONQT_INSTALL_DIR}/lib" DOC "Full Qt bindings for the PythonQt library.") PythonQt-Qt5-Python3
PythonQt
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "The PythonQt library."
)
find_library(PYTHONQT_LIBRARY_DEBUG
NAMES
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}JMIN${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}${CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python${PYTHONLIBS_MAJMIN}
PythonQt-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python3${CMAKE_DEBUG_POSTFIX}
PythonQt-Qt5-Python3
PythonQt${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt${CMAKE_DEBUG_POSTFIX}
PythonQt
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "The PythonQt library (debug build)."
)
find_library(PYTHONQT_QTALL_LIBRARY_RELEASE
NAMES
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}
PythonQt_QtAll-Qt5-Python3
PythonQt_QtAll
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "Full Qt bindings for the PythonQt library."
)
find_library(PYTHONQT_QTALL_LIBRARY_DEBUG
NAMES
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}${CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python${PYTHONLIBS_MAJMIN}
PythonQt_QtAll-Qt5-Python3${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python3${CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll-Qt5-Python3
PythonQt_QtAll${CTK_CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll${CMAKE_DEBUG_POSTFIX}
PythonQt_QtAll
PATHS "${PYTHONQT_INSTALL_DIR}/lib"
DOC "Full Qt bindings for the PythonQt library (debug build)."
)
set(PYTHONQT_LIBRARY) set(PYTHONQT_LIBRARY)
if(PYTHONQT_LIBRARY_RELEASE) if(PYTHONQT_LIBRARY_RELEASE)
@ -50,6 +105,16 @@ if(PYTHONQT_QTALL_LIBRARY_DEBUG)
list(APPEND PYTHONQT_QTALL_LIBRARY debug ${PYTHONQT_QTALL_LIBRARY_DEBUG}) list(APPEND PYTHONQT_QTALL_LIBRARY debug ${PYTHONQT_QTALL_LIBRARY_DEBUG})
endif() endif()
if ( NOT PythonQt_FIND_QUIETLY )
if ( PYTHONQT_LIBRARY )
message( STATUS " .. found library ${PYTHONQT_LIBRARY}" )
endif()
if ( PYTHONQT_QTALL_LIBRARY )
message( STATUS " .. found qtall ${PYTHONQT_QTALL_LIBRARY}" )
endif()
endif()
mark_as_advanced(PYTHONQT_INSTALL_DIR) mark_as_advanced(PYTHONQT_INSTALL_DIR)
mark_as_advanced(PYTHONQT_INCLUDE_DIR) mark_as_advanced(PYTHONQT_INCLUDE_DIR)
mark_as_advanced(PYTHONQT_LIBRARY_RELEASE) mark_as_advanced(PYTHONQT_LIBRARY_RELEASE)

View File

@ -66,7 +66,11 @@ Comment[ja]=Calamares — システムインストーラー
Name[lt]=Calamares Name[lt]=Calamares
Icon[lt]=calamares Icon[lt]=calamares
GenericName[lt]=Sistemos diegimas į kompiuterį GenericName[lt]=Sistemos diegimas į kompiuterį
Comment[lt]=Calamares sistemos diegyklė Comment[lt]=Calamares Sistemos diegimo programa
Name[nb]=Calamares
Icon[nb]=calamares
GenericName[nb]=Systeminstallatør
Comment[nb]=Calamares-systeminstallatør
Name[nl]=Calamares Name[nl]=Calamares
Icon[nl]=calamares Icon[nl]=calamares
GenericName[nl]=Installatieprogramma GenericName[nl]=Installatieprogramma
@ -81,8 +85,8 @@ GenericName[pt_BR]=Instalador de Sistema
Comment[pt_BR]=Calamares Instalador de Sistema Comment[pt_BR]=Calamares Instalador de Sistema
Name[cs_CZ]=Calamares Name[cs_CZ]=Calamares
Icon[cs_CZ]=calamares Icon[cs_CZ]=calamares
GenericName[cs_CZ]=Instalační program systému GenericName[cs_CZ]=Instalátor systému
Comment[cs_CZ]=Calamares - instalační program systému Comment[cs_CZ]=Calamares instalátor operačních systémů
Name[ru]=Calamares Name[ru]=Calamares
Icon[ru]=calamares Icon[ru]=calamares
GenericName[ru]=Установщик системы GenericName[ru]=Установщик системы

View File

@ -1,9 +1,15 @@
Hacking on Calamares Hacking on Calamares
==================== ====================
These are the guidelines for hacking on Calamares. Except for the licensing,
which **must** be GPLv3+, these are guidelines and -- like PEP8 -- the most
important thing is to know when you can ignore them.
Licensing Licensing
--------- ---------
Calamares is released under the terms of the GNU GPL, version 3 or later. Every source file must have a license header, with a list of copyright holders and years. Calamares is released under the terms of the GNU GPL, version 3 or later.
Every source file must have a license header, with a list of copyright holders and years.
Example: Example:
``` ```
@ -34,9 +40,9 @@ organization, etc.
Please add your name to files you touch when making any contribution (even if Please add your name to files you touch when making any contribution (even if
it's just a typo-fix which might not be copyrightable in all jurisdictions). it's just a typo-fix which might not be copyrightable in all jurisdictions).
Formatting
----------
Formatting C++
--------------
This formatting guide applies to C++ code only; for Python modules, we use This formatting guide applies to C++ code only; for Python modules, we use
[pycodestyle][https://github.com/PyCQA/pycodestyle] to apply a check of [pycodestyle][https://github.com/PyCQA/pycodestyle] to apply a check of
some PEP8 guidelines. some PEP8 guidelines.
@ -48,10 +54,10 @@ some PEP8 guidelines.
* No space before brackets, except for keywords, for example `function( argument )` but * No space before brackets, except for keywords, for example `function( argument )` but
`if ( condition )`. `if ( condition )`.
* For pointer and reference variable declarations, put a space before the variable name * For pointer and reference variable declarations, put a space before the variable name
and no space between the type and the `*` or `&`. and no space between the type and the `*` or `&`, e.g. `int* p`.
* `for`, `if`, `else`, `while` and similar statements put the brackets on the next line, * `for`, `if`, `else`, `while` and similar statements put the braces on the next line,
although brackets are not needed for single statements. if the following block is more than one statement. Use no braces for single statements.
* Function and class definitions have their brackets on separate lines. * Function and class definitions have their braces on separate lines.
* A function implementation's return type is on its own line. * A function implementation's return type is on its own line.
* `CamelCase.{cpp,h}` style file names. * `CamelCase.{cpp,h}` style file names.
@ -63,8 +69,9 @@ MyClass::myMethod( QStringList list, const QString& name )
if ( list.isEmpty() ) if ( list.isEmpty() )
return false; return false;
cDebug() << "Items in list ..";
foreach ( const QString& string, list ) foreach ( const QString& string, list )
cDebug() << "Current string is " << string; cDebug() << " .." << string;
switch ( m_enumValue ) switch ( m_enumValue )
{ {
@ -77,7 +84,7 @@ MyClass::myMethod( QStringList list, const QString& name )
} }
``` ```
You can use the `hacking/calamaresstyle` script to run You can use the `ci/calamaresstyle` script to run
[astyle](http://astyle.sf.net) on your code and have it formatted the right [astyle](http://astyle.sf.net) on your code and have it formatted the right
way. way.
@ -85,6 +92,7 @@ way.
order to take advantage of this functionality you will need to acquire the order to take advantage of this functionality you will need to acquire the
[EditorConfig](http://editorconfig.org/#download) plug-in for your editor. [EditorConfig](http://editorconfig.org/#download) plug-in for your editor.
Naming Naming
------ ------
* Use CamelCase for everything. * Use CamelCase for everything.
@ -97,6 +105,7 @@ Naming
* If it's a getter for a boolean, prefix with 'is', so `isCondition()`. * If it's a getter for a boolean, prefix with 'is', so `isCondition()`.
* A setter is `setVariable( arg )`. * A setter is `setVariable( arg )`.
Includes Includes
-------- --------
Header includes should be listed in the following order: Header includes should be listed in the following order:
@ -109,8 +118,9 @@ Header includes should be listed in the following order:
They should also be sorted alphabetically for ease of locating them. They should also be sorted alphabetically for ease of locating them.
Includes in a header file should be kept to the absolute minimum, as to keep compile times short. This can be achieved by using forward declarations instead of includes, Includes in a header file should be kept to the absolute minimum, as to keep
like `class QListView;`. compile times short. This can be achieved by using forward declarations
instead of includes, like `class QListView;`.
Example: Example:
``` ```
@ -129,6 +139,7 @@ Example:
Use include guards, not `#pragma once`. Use include guards, not `#pragma once`.
C++ tips C++ tips
-------- --------
All C++11 features are acceptable, and the use of new C++11 features is encouraged when All C++11 features are acceptable, and the use of new C++11 features is encouraged when
@ -141,8 +152,8 @@ range-based `for` syntax introduced with C++11 is preferred ([see this blog post
When re-implementing a virtual method, always add the `override` keyword. When re-implementing a virtual method, always add the `override` keyword.
Try to keep your code const correct. Declare methods const if they don't mutate the Try to keep your code const correct. Declare methods const if they don't mutate the
object, and use const variables. It improves safety, and also makes it easier to object, and use const variables. It improves safety, and also makes it easier to
understand the code. understand the code.
For the Qt signal-slot system, the new (Qt5) syntax is to be preferred because it allows For the Qt signal-slot system, the new (Qt5) syntax is to be preferred because it allows
@ -160,10 +171,31 @@ connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, [this]
}); });
``` ```
Debugging
---------
Use `cDebug()` and `cLog()` from `utils/Logger.h`.
[1]: http://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/ [1]: http://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/
[2]: http://qt-project.org/wiki/New_Signal_Slot_Syntax [2]: http://qt-project.org/wiki/New_Signal_Slot_Syntax
Debugging
---------
Use `cDebug()` and `cLog()` from `utils/Logger.h`. You can pass a debug-level to
either macro (1 is debugging, higher is less important). Use `cLog()` for warning
messages. It is recommended to add *WARNING* as the first part of a warning
message.
For log messages that are continued across multiple calls to `cDebug()`,
in particular listing things, conventional formatting is as follows:
* End the first debug message with ` ..`
* Indent following lines with ` ..`
Commit Messages
---------------
Keep commit messages short(-ish) and try to describe what is being changed
*as well as why*. Use the commit keywords for GitHub, especially *FIXES:*
to auto-close issues when they are resolved.
For functional changes to Calamares modules or libraries, try to put
*[modulename]* in front of the first line of the commit message.
For non-functional changes to infrastructure, try to label the change
with the kind of change, e.g. *CMake* or *i18n* or *Documentation*.

View File

@ -2,7 +2,9 @@ The Calamares release process
============================= =============================
#### (0) A week in advance #### (0) A week in advance
* Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs
* (Only releases from master)
Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs
automatically once a week on master. automatically once a week on master.
* Build with clang -Weverything, fix what's relevant. * Build with clang -Weverything, fix what's relevant.
``` ```
@ -16,8 +18,10 @@ The Calamares release process
``` ```
Note that *all* means all-that-make-sense. The partition-manager tests need Note that *all* means all-that-make-sense. The partition-manager tests need
an additional environment variable to be set for some tests, which will an additional environment variable to be set for some tests, which will
destroy an attached disk. This is not always desirable. destroy an attached disk. This is not always desirable. There are some
* Notify [translators][transifex]. In the dashboard there is an *Announcements* sample config-files that are empty and which fail the config-tests.
* (Only releases from master)
Notify [translators][transifex]. In the dashboard there is an *Announcements*
link that you can use to send a translation announcement. link that you can use to send a translation announcement.
[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview [coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview
@ -27,17 +31,24 @@ The Calamares release process
* Bump version in `CMakeLists.txt`, *CALAMARES_VERSION* variables, and set * Bump version in `CMakeLists.txt`, *CALAMARES_VERSION* variables, and set
RC to a non-zero value (e.g. doing -rc1, -rc2, ...). Push that. RC to a non-zero value (e.g. doing -rc1, -rc2, ...). Push that.
* Check `README.md` and everything in `hacking`, make sure it's all still * Check `README.md` and everything `ci/HACKING.md`, make sure it's all still
relevant. Run `hacking/calamaresstyle` to check the C++ code style. relevant. Run `ci/calamaresstyle` to check the C++ code style.
Python code is checked as part of the Travis CI builds. Run pycodestyle on recently-modified Python modules, fix what makes sense.
* Check defaults in `settings.conf` and other configuration files. * Check defaults in `settings.conf` and other configuration files.
* Pull latest translations from Transifex. This is done nightly on Jenkins, * (Only releases from master)
so a manual pull is rarely necessary. Pull latest translations from Transifex. We only push / pull translations
* Update the list of enabled translation languages in `CMakeLists.txt`. from master, so longer-lived branches (e.g. 3.1.x) don't get translation
updates. This is to keep the translation workflow simple.
```
sh ci/txpull.sh
```
* (Only releases from master)
Update the list of enabled translation languages in `CMakeLists.txt`.
Check the [translation site][transifex] for the list of languages with Check the [translation site][transifex] for the list of languages with
fairly complete translations. fairly complete translations.
#### (2) Tarball #### (2) Tarball
* Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without * Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without
the helper script, the helper script,
``` ```
@ -45,9 +56,10 @@ The Calamares release process
git archive -o $V.tar.gz --prefix $V/ master git archive -o $V.tar.gz --prefix $V/ master
``` ```
Double check that the tarball matches the version number. Double check that the tarball matches the version number.
* Test tarball. * Test tarball (e.g. unpack somewhere else and run the tests from step 0).
#### (3) Tag #### (3) Tag
* Set RC to zero in `CMakeLists.txt` if this is the actual release. * Set RC to zero in `CMakeLists.txt` if this is the actual release.
* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the * `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the
tag is shown as a verified tag. Do not sign -rc tags. tag is shown as a verified tag. Do not sign -rc tags.
@ -57,6 +69,7 @@ The Calamares release process
* Write release article. * Write release article.
#### (4) Release day #### (4) Release day
* Publish tarball. * Publish tarball.
* Update download page. * Update download page.
* Publish release article on `calamares.io`. * Publish release article on `calamares.io`.

View File

@ -1,44 +0,0 @@
#!/bin/bash
# Make sure we can make git operations from the Calamares Docker+Jenkins environment.
cp ~/jenkins-master/.gitconfig ~
cp -R ~/jenkins-master/.ssh ~
cd "$WORKSPACE"
git config --global http.sslVerify false
rm -Rf "$WORKSPACE/prefix"
mkdir "$WORKSPACE/prefix"
git clone git://anongit.kde.org/kpmcore "$WORKSPACE/kpmcore"
cd "$WORKSPACE/kpmcore"
mkdir "$WORKSPACE/kpmcore/build"
cd "$WORKSPACE/kpmcore/build"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
nice -n 18 make -j2
make DESTDIR="$WORKSPACE/prefix" install
cd "$WORKSPACE"
wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \
--post-data "token=ll90T04noQ4cORJx_zczKA&project=calamares%2Fcalamares" \
-O coverity_tool.tar.gz
mkdir "$WORKSPACE/coveritytool"
tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2
export PATH="$WORKSPACE/coveritytool/bin:$PATH"
rm -Rf "$WORKSPACE/build"
mkdir "$WORKSPACE/build"
cd "$WORKSPACE/build"
CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr -DWEBVIEW_FORCE_WEBKIT=1 ..
nice -n 18 cov-build --dir cov-int make -j2
tar caf calamares-ci.tar.xz cov-int
curl -k --form token=ll90T04noQ4cORJx_zczKA \
--form email=teo@kde.org \
--form file=@calamares-ci.tar.xz \
--form version="master-`date -u +%Y%m%d`" \
--form description="master on `date -u`" \
https://scan.coverity.com/builds?project=calamares%2Fcalamares

View File

@ -1,30 +0,0 @@
#!/bin/bash
#Hack for Coverity build, so the compiler doesn't complain about InheritanceChecker
sudo cp ~/jenkins-master/kpluginfactory.h /usr/include/KF5/KCoreAddons
cd "$WORKSPACE"
wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \
--post-data "token=cyOjQZx5EOFLdhfo7ZDa4Q&project=KDE+Partition+Manager+Core+Library+-+KPMcore" \
-O coverity_tool.tar.gz
mkdir "$WORKSPACE/coveritytool"
tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2
export PATH="$WORKSPACE/coveritytool/bin:$PATH"
rm -Rf "$WORKSPACE/build"
mkdir "$WORKSPACE/build"
cd "$WORKSPACE/build"
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr ..
nice -n 18 cov-build --dir cov-int make -j2
tar cavf kpmcore-ci.tar.xz cov-int
cat cov-int/build-log.txt
curl -k --form token=cyOjQZx5EOFLdhfo7ZDa4Q \
--form email=teo@kde.org \
--form file=@kpmcore-ci.tar.xz \
--form version="master-`date -u +%Y%m%d`" \
--form description="master on `date -u`" \
https://scan.coverity.com/builds?project=KDE+Partition+Manager+Core+Library+-+KPMcore

15
ci/travis-continuous.sh Executable file
View File

@ -0,0 +1,15 @@
#! /bin/sh
#
# Travis CI script for use on every-commit:
# - build and install Calamares
#
test -n "$BUILDDIR" || exit 1
test -n "$SRCDIR" || exit 1
test -d $BUILDDIR || exit 1
test -d $SRCDIR || exit 1
test -f $SRCDIR/CMakeLists.txt || exit 1
cd $BUILDDIR || exit 1
cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR && make -j2 && make install DESTDIR=/build/INSTALL_ROOT

34
ci/travis-coverity.sh Executable file
View File

@ -0,0 +1,34 @@
#! /bin/sh
#
# Travis CI script for weekly (cron) use:
# - use the coverity tool to build and and upload results
#
test -n "$COVERITY_SCAN_TOKEN" || exit 1
test -n "$BUILDDIR" || exit 1
test -n "$SRCDIR" || exit 1
test -d $BUILDDIR || exit 1
test -d $SRCDIR || exit 1
test -f $SRCDIR/CMakeLists.txt || exit 1
cd $BUILDDIR || exit 1
curl -k -o coverity_tool.tar.gz \
-d "token=$COVERITY_SCAN_TOKEN&project=calamares%2Fcalamares" \
https://scan.coverity.com/download/cxx/linux64 || exit 1
mkdir "$BUILDDIR/coveritytool"
tar xvf coverity_tool.tar.gz -C "$BUILDDIR/coveritytool" --strip-components 2
export PATH="$BUILDDIR/coveritytool/bin:$PATH"
cmake -DCMAKE_BUILD_TYPE=Debug -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR || exit 1
cov-build --dir cov-int make -j2
tar caf calamares-ci.tar.xz cov-int
curl -k --form token=$COVERITY_SCAN_TOKEN \
--form email=groot@kde.org \
--form file=@calamares-ci.tar.xz \
--form version="master-`date -u +%Y%m%d`" \
--form description="master on `date -u`" \
https://scan.coverity.com/builds?project=calamares%2Fcalamares

19
ci/travis.sh Executable file
View File

@ -0,0 +1,19 @@
#! /bin/sh
#
# Travis build driver script:
# - the regular CI runs, triggered by commits, run a script that builds
# and installs calamares, and then runs the tests.
# - the cronjob CI runs, triggered weekly, run a script that uses the
# coverity tools to submit a build. This is slightly more resource-
# intensive than the coverity add-on, but works on master.
#
D=`dirname "$0"`
test -d "$D" || exit 1
test -x "$D/travis-continuous.sh" || exit 1
test -x "$D/travis-coverity.sh" || exit 1
if test "$TRAVIS_EVENT_TYPE" = "cron" ; then
exec "$D/travis-coverity.sh"
else
exec "$D/travis-continuous.sh"
fi

View File

@ -2225,12 +2225,12 @@ L&apos;instal·lador es tancarà i tots els canvis es perdran.</translation>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>La contrasenya és massa curta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>La contrasenya és massa llarga.</translation>
</message> </message>
</context> </context>
<context> <context>

File diff suppressed because it is too large Load Diff

View File

@ -631,7 +631,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="73"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="73"/>
<source>Creating new %1 partition on %2.</source> <source>Creating new %1 partition on %2.</source>
<translation>Opretter ny %1 partition %2.</translation> <translation>Opretter ny %1-partition %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="85"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="85"/>
@ -692,12 +692,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="50"/> <location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="50"/>
<source>Create new %1 partition table on %2.</source> <source>Create new %1 partition table on %2.</source>
<translation>Opret en ny %1 partitionstabel %2.</translation> <translation>Opret en ny %1-partitionstabel %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="57"/> <location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="57"/>
<source>Create new &lt;strong&gt;%1&lt;/strong&gt; partition table on &lt;strong&gt;%2&lt;/strong&gt; (%3).</source> <source>Create new &lt;strong&gt;%1&lt;/strong&gt; partition table on &lt;strong&gt;%2&lt;/strong&gt; (%3).</source>
<translation>Opret en ny &lt;strong&gt;%1&lt;/strong&gt; partitionstabel på &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation> <translation>Opret en ny &lt;strong&gt;%1&lt;/strong&gt;-partitionstabel på &lt;strong&gt;%2&lt;/strong&gt; (%3).</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="67"/> <location filename="../src/modules/partition/jobs/CreatePartitionTableJob.cpp" line="67"/>
@ -984,7 +984,7 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message> <message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="191"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="191"/>
<source>Install %1 on &lt;strong&gt;new&lt;/strong&gt; %2 system partition.</source> <source>Install %1 on &lt;strong&gt;new&lt;/strong&gt; %2 system partition.</source>
<translation>Installér %1 &lt;strong&gt;nye&lt;/strong&gt; %2-systempartition.</translation> <translation>Installér %1 &lt;strong&gt;ny&lt;/strong&gt; %2-systempartition.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="195"/> <location filename="../src/modules/partition/jobs/FillGlobalStorageJob.cpp" line="195"/>
@ -2225,12 +2225,12 @@ Installationsprogrammet vil stoppe og alle ændringer vil gå tabt.</translation
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>Adgangskoden er for kort</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>Adgangskoden er for lang</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -2225,12 +2225,12 @@ L&apos;installateur se fermera et les changements seront perdus.</translation>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>Le mot de passe est trop court</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>Le mot de passe est trop long</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -1254,39 +1254,39 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="387"/> <location filename="../src/modules/locale/LocalePage.cpp" line="387"/>
<source>The system language will be set to %1.</source> <source>The system language will be set to %1.</source>
<translation type="unfinished"/> <translation>A linguaxe do sistema será establecida a %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="389"/> <location filename="../src/modules/locale/LocalePage.cpp" line="389"/>
<source>The numbers and dates locale will be set to %1.</source> <source>The numbers and dates locale will be set to %1.</source>
<translation type="unfinished"/> <translation>A localización de números e datas será establecida a %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="215"/> <location filename="../src/modules/locale/LocalePage.cpp" line="215"/>
<source>Region:</source> <source>Region:</source>
<translation type="unfinished"/> <translation>Rexión:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="216"/> <location filename="../src/modules/locale/LocalePage.cpp" line="216"/>
<source>Zone:</source> <source>Zone:</source>
<translation type="unfinished"/> <translation>Zona:</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="220"/> <location filename="../src/modules/locale/LocalePage.cpp" line="220"/>
<location filename="../src/modules/locale/LocalePage.cpp" line="221"/> <location filename="../src/modules/locale/LocalePage.cpp" line="221"/>
<source>&amp;Change...</source> <source>&amp;Change...</source>
<translation type="unfinished"/> <translation>&amp;Cambio...</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="398"/> <location filename="../src/modules/locale/LocalePage.cpp" line="398"/>
<source>Set timezone to %1/%2.&lt;br/&gt;</source> <source>Set timezone to %1/%2.&lt;br/&gt;</source>
<translation type="unfinished"/> <translation>Establecer a zona de tempo a %1/%2.&lt;br/&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="480"/> <location filename="../src/modules/locale/LocalePage.cpp" line="480"/>
<source>%1 (%2)</source> <source>%1 (%2)</source>
<extracomment>Language (Country)</extracomment> <extracomment>Language (Country)</extracomment>
<translation type="unfinished"/> <translation>%1 (%2)</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1294,12 +1294,12 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message> <message>
<location filename="../src/modules/locale/LocaleViewStep.cpp" line="52"/> <location filename="../src/modules/locale/LocaleViewStep.cpp" line="52"/>
<source>Loading location data...</source> <source>Loading location data...</source>
<translation type="unfinished"/> <translation>Cargando datos de localización...</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocaleViewStep.cpp" line="169"/> <location filename="../src/modules/locale/LocaleViewStep.cpp" line="169"/>
<source>Location</source> <source>Location</source>
<translation type="unfinished"/> <translation>Localización...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1307,48 +1307,48 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="66"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="66"/>
<source>Move file system of partition %1.</source> <source>Move file system of partition %1.</source>
<translation type="unfinished"/> <translation>Move-lo sistema de ficheiro da partición %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="80"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="80"/>
<source>Could not open file system on partition %1 for moving.</source> <source>Could not open file system on partition %1 for moving.</source>
<translation type="unfinished"/> <translation>Non foi posible abri-lo sistema de ficheiros na partición %1 para move-lo.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="86"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="86"/>
<source>Could not create target for moving file system on partition %1.</source> <source>Could not create target for moving file system on partition %1.</source>
<translation type="unfinished"/> <translation>Non foi posible crea-lo destino para move-lo sistema de ficheiros na partición %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="95"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="95"/>
<source>Moving of partition %1 failed, changes have been rolled back.</source> <source>Moving of partition %1 failed, changes have been rolled back.</source>
<translation type="unfinished"/> <translation>Fallou move-la partición %1, desfixeronse os cambios.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="101"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="101"/>
<source>Moving of partition %1 failed. Roll back of the changes have failed.</source> <source>Moving of partition %1 failed. Roll back of the changes have failed.</source>
<translation type="unfinished"/> <translation>Fallou move-la partición %1. Non se pudo desface-los cambios.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="113"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="113"/>
<source>Updating boot sector after the moving of partition %1 failed.</source> <source>Updating boot sector after the moving of partition %1 failed.</source>
<translation type="unfinished"/> <translation>Actualizando o sector de arranque tra-lo fallo do movimento da partición %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="127"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="127"/>
<source>The logical sector sizes in the source and target for copying are not the same. This is currently unsupported.</source> <source>The logical sector sizes in the source and target for copying are not the same. This is currently unsupported.</source>
<translation type="unfinished"/> <translation>O tamaño do sector lóxico na orixe e no destino para a copia non é o mesmo. Actualmente non é posible face-lo.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="201"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="201"/>
<source>Source and target for copying do not overlap: Rollback is not required.</source> <source>Source and target for copying do not overlap: Rollback is not required.</source>
<translation type="unfinished"/> <translation>Orixe e destino para copia non se superpoñen: Non cómpre desfacer.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="225"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="225"/>
<location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="233"/> <location filename="../src/modules/partition/jobs/MoveFileSystemJob.cpp" line="233"/>
<source>Could not open device %1 to rollback copying.</source> <source>Could not open device %1 to rollback copying.</source>
<translation type="unfinished"/> <translation>Non se pudo abrir o dispositivo %1 para copia de respaldo.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1356,18 +1356,18 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="79"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="79"/>
<source>Name</source> <source>Name</source>
<translation type="unfinished"/> <translation>Nome</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="80"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="80"/>
<source>Description</source> <source>Description</source>
<translation type="unfinished"/> <translation>Descripción</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="97"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="97"/>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="104"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="104"/>
<source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source> <source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source>
<translation type="unfinished"/> <translation>Installación por rede. (Desactivadas. Non se pudo recupera-la lista de pacotes, comprobe a sua conexión a rede)</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1375,7 +1375,7 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/> <location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/>
<source>Package selection</source> <source>Package selection</source>
<translation type="unfinished"/> <translation>Selección de pacotes.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1388,12 +1388,12 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message> <message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="70"/> <location filename="../src/modules/keyboard/KeyboardPage.ui" line="70"/>
<source>Keyboard Model:</source> <source>Keyboard Model:</source>
<translation type="unfinished"/> <translation>Modelo de teclado.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/keyboard/KeyboardPage.ui" line="131"/> <location filename="../src/modules/keyboard/KeyboardPage.ui" line="131"/>
<source>Type here to test your keyboard</source> <source>Type here to test your keyboard</source>
<translation type="unfinished"/> <translation>Teclee aquí para comproba-lo seu teclado.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1406,49 +1406,49 @@ O instalador pecharase e perderanse todos os cambios.</translation>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="36"/> <location filename="../src/modules/users/page_usersetup.ui" line="36"/>
<source>What is your name?</source> <source>What is your name?</source>
<translation type="unfinished"/> <translation>Cal é o seu nome?</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="117"/> <location filename="../src/modules/users/page_usersetup.ui" line="117"/>
<source>What name do you want to use to log in?</source> <source>What name do you want to use to log in?</source>
<translation type="unfinished"/> <translation>Cal é o nome que quere usar para entrar?</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="306"/> <location filename="../src/modules/users/page_usersetup.ui" line="306"/>
<location filename="../src/modules/users/page_usersetup.ui" line="437"/> <location filename="../src/modules/users/page_usersetup.ui" line="437"/>
<location filename="../src/modules/users/page_usersetup.ui" line="582"/> <location filename="../src/modules/users/page_usersetup.ui" line="582"/>
<source>font-weight: normal</source> <source>font-weight: normal</source>
<translation type="unfinished"/> <translation>Tamaño de letra: normal</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="200"/> <location filename="../src/modules/users/page_usersetup.ui" line="200"/>
<source>&lt;small&gt;If more than one person will use this computer, you can set up multiple accounts after installation.&lt;/small&gt;</source> <source>&lt;small&gt;If more than one person will use this computer, you can set up multiple accounts after installation.&lt;/small&gt;</source>
<translation type="unfinished"/> <translation>&lt;small&gt;Se máis dunha persoa vai usa-lo computador, pode configurar contas múltiples trala instalción.&lt;/small&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="335"/> <location filename="../src/modules/users/page_usersetup.ui" line="335"/>
<source>Choose a password to keep your account safe.</source> <source>Choose a password to keep your account safe.</source>
<translation type="unfinished"/> <translation>Escolla un contrasinal para mante-la sua conta segura.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="440"/> <location filename="../src/modules/users/page_usersetup.ui" line="440"/>
<source>&lt;small&gt;Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.&lt;/small&gt;</source> <source>&lt;small&gt;Enter the same password twice, so that it can be checked for typing errors. A good password will contain a mixture of letters, numbers and punctuation, should be at least eight characters long, and should be changed at regular intervals.&lt;/small&gt;</source>
<translation type="unfinished"/> <translation>&lt;small&gt;Entre o mesmo contrasinal dúas veces, deste xeito podese comprobar errores ó teclear. Un bo contrasinal debe conter un conxunto de letras, números e signos de puntuación, deberá ter como mínimo oito carácteres, e debe cambiarse a intervalos de tempo regulares.&lt;/small&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="226"/> <location filename="../src/modules/users/page_usersetup.ui" line="226"/>
<source>What is the name of this computer?</source> <source>What is the name of this computer?</source>
<translation type="unfinished"/> <translation>Cal é o nome deste computador?</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="309"/> <location filename="../src/modules/users/page_usersetup.ui" line="309"/>
<source>&lt;small&gt;This name will be used if you make the computer visible to others on a network.&lt;/small&gt;</source> <source>&lt;small&gt;This name will be used if you make the computer visible to others on a network.&lt;/small&gt;</source>
<translation type="unfinished"/> <translation>&lt;small&gt;Este nome usarase se fai o computador visible para outros nunha rede.&lt;/small&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="450"/> <location filename="../src/modules/users/page_usersetup.ui" line="450"/>
<source>Log in automatically without asking for the password.</source> <source>Log in automatically without asking for the password.</source>
<translation type="unfinished"/> <translation>Entrar automáticamente sen preguntar polo contrasinal.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/page_usersetup.ui" line="457"/> <location filename="../src/modules/users/page_usersetup.ui" line="457"/>

View File

@ -2225,12 +2225,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>הסיסמה קצרה מדי</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>הסיסמה ארוכה מדי</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -2225,12 +2225,12 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.</translatio
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>Lozinka je prekratka</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>Lozinka je preduga</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2291,7 +2291,7 @@ Instalacijski program će izaći i sve promjene će biti izgubljene.</translatio
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/>
<source>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares translators team&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;http://calamares.io/&quot;&gt;Calamares&lt;/a&gt; development is sponsored by &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</source> <source>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;for %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Copyright 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Copyright 2017 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Thanks to: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg and the &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares translators team&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;http://calamares.io/&quot;&gt;Calamares&lt;/a&gt; development is sponsored by &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</source>
<translation>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;za %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Autorska prava 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Autorska prava 2017 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Zahvale: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares timu za prevođenje&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;http://calamares.io/&quot;&gt;Calamares&lt;/a&gt;sponzorira &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</translation> <translation>&lt;h1&gt;%1&lt;/h1&gt;&lt;br/&gt;&lt;strong&gt;%2&lt;br/&gt;za %3&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Autorska prava 2014-2017 Teo Mrnjavac &amp;lt;teo@kde.org&amp;gt;&lt;br/&gt;Autorska prava 2017 Adriaan de Groot &amp;lt;groot@kde.org&amp;gt;&lt;br/&gt;Zahvale: Anke Boersma, Aurélien Gâteau, Kevin Kofler, Lisa Vitolo, Philip Müller, Pier Luigi Fiorini, Rohan Garg i &lt;a href=&quot;https://www.transifex.com/calamares/calamares/&quot;&gt;Calamares timu za prevođenje&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;http://calamares.io/&quot;&gt;Calamares&lt;/a&gt; sponzorira &lt;br/&gt;&lt;a href=&quot;http://www.blue-systems.com/&quot;&gt;Blue Systems&lt;/a&gt; - Liberating Software.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/>

View File

@ -240,7 +240,7 @@ Išvestis:
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/>
<source>Cancel installation without changing the system.</source> <source>Cancel installation without changing the system.</source>
<translation>Atsisakyti diegimo, nieko nekeisti sistemoje.</translation> <translation>Atsisakyti diegimo, nieko sistemoje nekeičiant.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/>
@ -277,7 +277,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="234"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="234"/>
<source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source> <source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source>
<translation>%1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.&lt;br/&gt;&lt;strong&gt;Negalėsite atšaukti š pakeitimų.&lt;/strong&gt;</translation> <translation>%1 diegimo programa, siekdama įdiegti %2, ketina atlikti pakeitimus diske.&lt;br/&gt;&lt;strong&gt;Š pakeitimų atšaukti nebegalėsite.&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/>
@ -369,12 +369,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message> <message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="113"/> <location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="113"/>
<source>This computer does not satisfy some of the recommended requirements for installing %1.&lt;br/&gt;Installation can continue, but some features might be disabled.</source> <source>This computer does not satisfy some of the recommended requirements for installing %1.&lt;br/&gt;Installation can continue, but some features might be disabled.</source>
<translation>Šis kompiuteris netenkina kai kurių %1 diegimui rekomenduojamų reikalavimų.&lt;br/&gt;Diegti galite, bet kai kurios funkcijos gali būti išjungtos.</translation> <translation>Šis kompiuteris netenkina kai kurių %1 diegimui rekomenduojamų reikalavimų.&lt;br/&gt;Diegimą galima tęsti, tačiau kai kurios funkcijos gali būti išjungtos.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="151"/> <location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="151"/>
<source>This program will ask you some questions and set up %2 on your computer.</source> <source>This program will ask you some questions and set up %2 on your computer.</source>
<translation>Programa užduos klausimus ir padės įsidiegti %2.</translation> <translation>Programa užduos kelis klausimus ir padės įsidiegti %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="174"/> <location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="174"/>
@ -908,12 +908,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="70"/> <location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="70"/>
<source>Format</source> <source>Format</source>
<translation>Suženklinti</translation> <translation>Formatuoti</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="89"/> <location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="89"/>
<source>Warning: Formatting the partition will erase all existing data.</source> <source>Warning: Formatting the partition will erase all existing data.</source>
<translation>Įspėjimas: suženklinant skaidinį, sunaikinami visi jame esantys duomenys.</translation> <translation>Įspėjimas: Formatuojant skaidinį, sunaikinami visi jame esantys duomenys.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="99"/> <location filename="../src/modules/partition/gui/EditExistingPartitionDialog.ui" line="99"/>
@ -1058,22 +1058,22 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="49"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="49"/>
<source>Format partition %1 (file system: %2, size: %3 MB) on %4.</source> <source>Format partition %1 (file system: %2, size: %3 MB) on %4.</source>
<translation>Suženklinti skaidinį %1 (failų sistema: %2, dydis: %3 MB) diske %4.</translation> <translation>Formatuoti skaidinį %1 (failų sistema: %2, dydis: %3 MB) diske %4.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="60"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="60"/>
<source>Format &lt;strong&gt;%3MB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; with file system &lt;strong&gt;%2&lt;/strong&gt;.</source> <source>Format &lt;strong&gt;%3MB&lt;/strong&gt; partition &lt;strong&gt;%1&lt;/strong&gt; with file system &lt;strong&gt;%2&lt;/strong&gt;.</source>
<translation>Suženklinti &lt;strong&gt;%3MB&lt;/strong&gt; skaidinį &lt;strong&gt;%1&lt;/strong&gt; su failų sistema &lt;strong&gt;%2&lt;/strong&gt;.</translation> <translation>Formatuoti &lt;strong&gt;%3MB&lt;/strong&gt; skaidinį &lt;strong&gt;%1&lt;/strong&gt; su failų sistema &lt;strong&gt;%2&lt;/strong&gt;.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="71"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="71"/>
<source>Formatting partition %1 with file system %2.</source> <source>Formatting partition %1 with file system %2.</source>
<translation>Suženklinamas skaidinys %1 su %2 failų sistema.</translation> <translation>Formatuojamas skaidinys %1 su %2 failų sistema.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="83"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="83"/>
<source>The installer failed to format partition %1 on disk &apos;%2&apos;.</source> <source>The installer failed to format partition %1 on disk &apos;%2&apos;.</source>
<translation>Diegimo programai nepavyko suženklinti %2 disko skaidinio %1.</translation> <translation>Diegimo programai nepavyko formatuoti %2 disko skaidinio %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="91"/> <location filename="../src/modules/partition/jobs/FormatPartitionJob.cpp" line="91"/>
@ -1237,7 +1237,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="202"/> <location filename="../src/modules/license/LicensePage.cpp" line="202"/>
<source>&lt;a href=&quot;%1&quot;&gt;view license agreement&lt;/a&gt;</source> <source>&lt;a href=&quot;%1&quot;&gt;view license agreement&lt;/a&gt;</source>
<translation>&lt;a href=&quot;%1&quot;&gt;žiūrėti licenciją&lt;/a&gt;</translation> <translation>&lt;a href=&quot;%1&quot;&gt;žiūrėti licencijos sutartį&lt;/a&gt;</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1578,7 +1578,7 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="121"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="121"/>
<source>&amp;Delete</source> <source>&amp;Delete</source>
<translation>Ša&amp;linti</translation> <translation>&amp;trinti</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionPage.ui" line="148"/> <location filename="../src/modules/partition/gui/PartitionPage.ui" line="148"/>
@ -2225,12 +2225,12 @@ Diegimo programa užbaigs darbą ir visi pakeitimai bus prarasti.</translation>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>Slaptažodis yra per trumpas</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>Slaptažodis yra per ilgas</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -37,12 +37,12 @@
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/>
<source>Do not install a boot loader</source> <source>Do not install a boot loader</source>
<translation type="unfinished"/> <translation> िि </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/>
<source>%1 (%2)</source> <source>%1 (%2)</source>
<translation type="unfinished"/> <translation>%1 (%2)</translation>
</message> </message>
</context> </context>
<context> <context>
@ -115,12 +115,12 @@
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="51"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="51"/>
<source>Run command %1 %2</source> <source>Run command %1 %2</source>
<translation type="unfinished"/> <translation>%1 %2 </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="60"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="60"/>
<source>Running command %1 %2</source> <source>Running command %1 %2</source>
<translation type="unfinished"/> <translation>%1 %2 </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="89"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="89"/>
@ -137,17 +137,17 @@ Output:
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="95"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="95"/>
<source>External command failed to start</source> <source>External command failed to start</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="96"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="96"/>
<source>Command %1 failed to start.</source> <source>Command %1 failed to start.</source>
<translation type="unfinished"/> <translation>%1 </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="100"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="100"/>
<source>Internal error when starting command</source> <source>Internal error when starting command</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="101"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="101"/>
@ -157,26 +157,30 @@ Output:
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="104"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="104"/>
<source>External command failed to finish</source> <source>External command failed to finish</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="105"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="105"/>
<source>Command %1 failed to finish in %2s. <source>Command %1 failed to finish in %2s.
Output: Output:
%3</source> %3</source>
<translation type="unfinished"/> <translation>%1 %2s .
:
%3</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="111"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="111"/>
<source>External command finished with errors</source> <source>External command finished with errors</source>
<translation type="unfinished"/> <translation> ि </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="112"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="112"/>
<source>Command %1 finished with exit code %2. <source>Command %1 finished with exit code %2.
Output: Output:
%3</source> %3</source>
<translation type="unfinished"/> <translation>%1 %2 ि ि .
:
%3</translation>
</message> </message>
</context> </context>
<context> <context>
@ -184,7 +188,7 @@ Output:
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="265"/> <location filename="../src/libcalamares/PythonJob.cpp" line="265"/>
<source>Running %1 operation.</source> <source>Running %1 operation.</source>
<translation type="unfinished"/> <translation>%1 ि </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="280"/> <location filename="../src/libcalamares/PythonJob.cpp" line="280"/>
@ -217,29 +221,29 @@ Output:
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="73"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="73"/>
<source>&amp;Back</source> <source>&amp;Back</source>
<translation type="unfinished"/> <translation>&amp;</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/>
<source>&amp;Next</source> <source>&amp;Next</source>
<translation type="unfinished"/> <translation>&amp;</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="300"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="300"/>
<source>&amp;Cancel</source> <source>&amp;Cancel</source>
<translation type="unfinished"/> <translation>&amp; </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/>
<source>Cancel installation without changing the system.</source> <source>Cancel installation without changing the system.</source>
<translation type="unfinished"/> <translation> ि .</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/>
<source>Cancel installation?</source> <source>Cancel installation?</source>
<translation type="unfinished"/> <translation>ि ?</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="100"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="100"/>
@ -250,17 +254,17 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="105"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="105"/>
<source>&amp;Yes</source> <source>&amp;Yes</source>
<translation type="unfinished"/> <translation>&amp;</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="106"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="106"/>
<source>&amp;No</source> <source>&amp;No</source>
<translation type="unfinished"/> <translation>&amp;</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="183"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="183"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation type="unfinished"/> <translation>&amp; </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="233"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="233"/>
@ -275,32 +279,32 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/>
<source>&amp;Install now</source> <source>&amp;Install now</source>
<translation type="unfinished"/> <translation>&amp; िि </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="240"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="240"/>
<source>Go &amp;back</source> <source>Go &amp;back</source>
<translation type="unfinished"/> <translation>&amp; </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="269"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="269"/>
<source>&amp;Done</source> <source>&amp;Done</source>
<translation type="unfinished"/> <translation>&amp; </translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="270"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="270"/>
<source>The installation is complete. Close the installer.</source> <source>The installation is complete. Close the installer.</source>
<translation type="unfinished"/> <translation>ि . ि .</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="181"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="181"/>
<source>Installation Failed</source> <source>Installation Failed</source>
<translation type="unfinished"/> <translation>ि </translation>
</message> </message>
</context> </context>
<context> <context>
@ -331,7 +335,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="45"/> <location filename="../src/calamares/CalamaresWindow.cpp" line="45"/>
<source>%1 Installer</source> <source>%1 Installer</source>
<translation type="unfinished"/> <translation>%1 ि</translation>
</message> </message>
<message> <message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="112"/> <location filename="../src/calamares/CalamaresWindow.cpp" line="112"/>
@ -344,12 +348,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="39"/> <location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="39"/>
<source>Checking file system on partition %1.</source> <source>Checking file system on partition %1.</source>
<translation type="unfinished"/> <translation>%1 ि .</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="77"/> <location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="77"/>
<source>The file system check on partition %1 failed.</source> <source>The file system check on partition %1 failed.</source>
<translation type="unfinished"/> <translation>%1 ि ि .</translation>
</message> </message>
</context> </context>
<context> <context>
@ -377,7 +381,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="202"/> <location filename="../src/modules/welcome/checker/CheckerWidget.cpp" line="202"/>
<source>System requirements</source> <source>System requirements</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
</context> </context>
<context> <context>
@ -418,7 +422,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="950"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="950"/>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1029"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="1029"/>
<source>Current:</source> <source>Current:</source>
<translation type="unfinished"/> <translation> :</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/ChoicePage.cpp" line="775"/> <location filename="../src/modules/partition/gui/ChoicePage.cpp" line="775"/>
@ -541,7 +545,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="14"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="14"/>
<source>Create a Partition</source> <source>Create a Partition</source>
<translation type="unfinished"/> <translation>ि ि </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="48"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="48"/>
@ -551,12 +555,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="55"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="55"/>
<source>Partition &amp;Type:</source> <source>Partition &amp;Type:</source>
<translation type="unfinished"/> <translation>ि &amp; :</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="67"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="67"/>
<source>&amp;Primary</source> <source>&amp;Primary</source>
<translation type="unfinished"/> <translation>&amp;ि</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="77"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.ui" line="77"/>
@ -591,12 +595,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="162"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="162"/>
<source>Logical</source> <source>Logical</source>
<translation type="unfinished"/> <translation>ि</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="167"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="167"/>
<source>Primary</source> <source>Primary</source>
<translation type="unfinished"/> <translation>ि</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="184"/> <location filename="../src/modules/partition/gui/CreatePartitionDialog.cpp" line="184"/>
@ -624,7 +628,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="73"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="73"/>
<source>Creating new %1 partition on %2.</source> <source>Creating new %1 partition on %2.</source>
<translation type="unfinished"/> <translation>%2 %1 ि ि </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="85"/> <location filename="../src/modules/partition/jobs/CreatePartitionJob.cpp" line="85"/>
@ -657,7 +661,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="20"/> <location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="20"/>
<source>Create Partition Table</source> <source>Create Partition Table</source>
<translation type="unfinished"/> <translation>ि ि </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="39"/> <location filename="../src/modules/partition/gui/CreatePartitionTableDialog.ui" line="39"/>
@ -1935,7 +1939,7 @@ The installer will quit and all changes will be lost.</source>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="61"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="61"/>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="68"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="68"/>
<source>Internal Error</source> <source>Internal Error</source>
<translation type="unfinished"/> <translation>  </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/SetHostNameJob.cpp" line="75"/> <location filename="../src/modules/users/SetHostNameJob.cpp" line="75"/>
@ -2133,7 +2137,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="43"/> <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="43"/>
<source>Set timezone to %1/%2</source> <source>Set timezone to %1/%2</source>
<translation type="unfinished"/> <translation>%1/%2 िि </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="71"/> <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="71"/>
@ -2148,7 +2152,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="86"/> <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="86"/>
<source>Cannot set timezone.</source> <source>Cannot set timezone.</source>
<translation type="unfinished"/> <translation> िि </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="87"/> <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="87"/>
@ -2158,12 +2162,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="96"/> <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="96"/>
<source>Cannot set timezone,</source> <source>Cannot set timezone,</source>
<translation type="unfinished"/> <translation> िि ,</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/SetTimezoneJob.cpp" line="97"/> <location filename="../src/modules/locale/SetTimezoneJob.cpp" line="97"/>
<source>Cannot open /etc/timezone for writing</source> <source>Cannot open /etc/timezone for writing</source>
<translation type="unfinished"/> <translation> /etc/timezone ििि </translation>
</message> </message>
</context> </context>
<context> <context>
@ -2179,7 +2183,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/summary/SummaryViewStep.cpp" line="43"/> <location filename="../src/modules/summary/SummaryViewStep.cpp" line="43"/>
<source>Summary</source> <source>Summary</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -2187,43 +2191,43 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="287"/> <location filename="../src/modules/users/UsersPage.cpp" line="287"/>
<source>Your username is too long.</source> <source>Your username is too long.</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="293"/> <location filename="../src/modules/users/UsersPage.cpp" line="293"/>
<source>Your username contains invalid characters. Only lowercase letters and numbers are allowed.</source> <source>Your username contains invalid characters. Only lowercase letters and numbers are allowed.</source>
<translation type="unfinished"/> <translation> . , ि .</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="331"/> <location filename="../src/modules/users/UsersPage.cpp" line="331"/>
<source>Your hostname is too short.</source> <source>Your hostname is too short.</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="337"/> <location filename="../src/modules/users/UsersPage.cpp" line="337"/>
<source>Your hostname is too long.</source> <source>Your hostname is too long.</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="343"/> <location filename="../src/modules/users/UsersPage.cpp" line="343"/>
<source>Your hostname contains invalid characters. Only letters, numbers and dashes are allowed.</source> <source>Your hostname contains invalid characters. Only letters, numbers and dashes are allowed.</source>
<translation type="unfinished"/> <translation> . , ि .</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="371"/> <location filename="../src/modules/users/UsersPage.cpp" line="371"/>
<location filename="../src/modules/users/UsersPage.cpp" line="415"/> <location filename="../src/modules/users/UsersPage.cpp" line="415"/>
<source>Your passwords do not match!</source> <source>Your passwords do not match!</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation> </translation>
</message> </message>
</context> </context>
<context> <context>
@ -2231,7 +2235,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/users/UsersViewStep.cpp" line="50"/> <location filename="../src/modules/users/UsersViewStep.cpp" line="50"/>
<source>Users</source> <source>Users</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -2239,47 +2243,47 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="14"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="75"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="75"/>
<source>&amp;Language:</source> <source>&amp;Language:</source>
<translation type="unfinished"/> <translation>&amp; :</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="176"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="176"/>
<source>&amp;Release notes</source> <source>&amp;Release notes</source>
<translation type="unfinished"/> <translation>&amp; ि</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="166"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="166"/>
<source>&amp;Known issues</source> <source>&amp;Known issues</source>
<translation type="unfinished"/> <translation>&amp; </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="156"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="156"/>
<source>&amp;Support</source> <source>&amp;Support</source>
<translation type="unfinished"/> <translation>%1 </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.ui" line="146"/> <location filename="../src/modules/welcome/WelcomePage.ui" line="146"/>
<source>&amp;About</source> <source>&amp;About</source>
<translation type="unfinished"/> <translation>&amp;ि</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/>
<source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source> <source>&lt;h1&gt;Welcome to the %1 installer.&lt;/h1&gt;</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;%1 ि .&lt;/h1&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="60"/>
<source>&lt;h1&gt;Welcome to the Calamares installer for %1.&lt;/h1&gt;</source> <source>&lt;h1&gt;Welcome to the Calamares installer for %1.&lt;/h1&gt;</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;%1 ि .&lt;/h1&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="73"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="73"/>
<source>About %1 installer</source> <source>About %1 installer</source>
<translation type="unfinished"/> <translation>%1 ि </translation>
</message> </message>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="75"/>
@ -2289,7 +2293,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/> <location filename="../src/modules/welcome/WelcomePage.cpp" line="201"/>
<source>%1 support</source> <source>%1 support</source>
<translation type="unfinished"/> <translation>%1 </translation>
</message> </message>
</context> </context>
<context> <context>
@ -2297,7 +2301,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="51"/> <location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="51"/>
<source>Welcome</source> <source>Welcome</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
</context> </context>
</TS> </TS>

View File

@ -37,7 +37,7 @@
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/>
<source>Do not install a boot loader</source> <source>Do not install a boot loader</source>
<translation type="unfinished"/> <translation>Ikke installer en oppstartslaster</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/>
@ -81,12 +81,12 @@
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/>
<source>Interface:</source> <source>Interface:</source>
<translation type="unfinished"/> <translation>Grensesnitt:</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/>
<source>Tools</source> <source>Tools</source>
<translation type="unfinished"/> <translation>Verktøy</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.cpp" line="182"/> <location filename="../src/libcalamaresui/utils/DebugWindow.cpp" line="182"/>
@ -99,7 +99,7 @@
<message> <message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="77"/> <location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="77"/>
<source>Install</source> <source>Install</source>
<translation type="unfinished"/> <translation>Installer</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -2225,12 +2225,12 @@ Instalator zostanie zamknięty i wszystkie zmiany zostaną utracone.</translatio
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>Hasło jest zbyt krótkie</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>Hasło jest zbyt długie</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -2227,12 +2227,12 @@ A instalação pode continuar, mas alguns recursos podem ser desativados.</trans
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>A senha é muito curta</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>A senha é muito longa</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -1162,12 +1162,12 @@ O instalador será encerrado e todas as alterações serão perdidas.</translati
<message> <message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/> <location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/>
<source>&amp;Cancel</source> <source>&amp;Cancel</source>
<translation type="unfinished"/> <translation>&amp;Cancelar</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="67"/> <location filename="../src/modules/locale/LCLocaleDialog.cpp" line="67"/>
<source>&amp;OK</source> <source>&amp;OK</source>
<translation type="unfinished"/> <translation>&amp;OK</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2225,12 +2225,12 @@ O instalador será encerrado e todas as alterações serão perdidas.</translati
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>A palavra-passe é demasiado curta</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>A palavra-passe é demasiado longa</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -2225,12 +2225,12 @@ Inštalátor sa ukončí a všetky zmeny budú stratené.</translation>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>Heslo je príliš krátke</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>Heslo je príliš dlhé</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2304,7 +2304,7 @@ Inštalátor sa ukončí a všetky zmeny budú stratené.</translation>
<message> <message>
<location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="51"/> <location filename="../src/modules/welcome/WelcomeViewStep.cpp" line="51"/>
<source>Welcome</source> <source>Welcome</source>
<translation>Vitajte</translation> <translation>Uvítanie</translation>
</message> </message>
</context> </context>
</TS> </TS>

View File

@ -1162,12 +1162,12 @@ Alla ändringar kommer att gå förlorade.</translation>
<message> <message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/> <location filename="../src/modules/locale/LCLocaleDialog.cpp" line="66"/>
<source>&amp;Cancel</source> <source>&amp;Cancel</source>
<translation type="unfinished"/> <translation>&amp;Avsluta</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LCLocaleDialog.cpp" line="67"/> <location filename="../src/modules/locale/LCLocaleDialog.cpp" line="67"/>
<source>&amp;OK</source> <source>&amp;OK</source>
<translation type="unfinished"/> <translation>&amp;Okej</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1185,17 +1185,17 @@ Alla ändringar kommer att gå förlorade.</translation>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="115"/> <location filename="../src/modules/license/LicensePage.cpp" line="115"/>
<source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure will install proprietary software that is subject to licensing terms.</source> <source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure will install proprietary software that is subject to licensing terms.</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;Licensavtal&lt;/h1&gt;Denna installationsprocedur kommer att installera proprietär mjukvara som omfattas av licensvillkor.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="118"/> <location filename="../src/modules/license/LicensePage.cpp" line="118"/>
<source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, the setup procedure cannot continue.</source> <source>Please review the End User License Agreements (EULAs) above.&lt;br/&gt;If you do not agree with the terms, the setup procedure cannot continue.</source>
<translation type="unfinished"/> <translation>Läs igenom End User Agreements (EULA:s) ovan.&lt;br/&gt;Om du inte accepterar villkoren kan inte installationsproceduren fortsätta.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="124"/> <location filename="../src/modules/license/LicensePage.cpp" line="124"/>
<source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience.</source> <source>&lt;h1&gt;License Agreement&lt;/h1&gt;This setup procedure can install proprietary software that is subject to licensing terms in order to provide additional features and enhance the user experience.</source>
<translation type="unfinished"/> <translation>&lt;h1&gt;Licensavtal&lt;/h1&gt;Denna installationsprocedur kan installera proprietär mjukvara som omfattas av licensvillkor för att tillhandahålla ytterligare funktioner och förbättra användarupplevelsen.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/license/LicensePage.cpp" line="129"/> <location filename="../src/modules/license/LicensePage.cpp" line="129"/>
@ -1253,7 +1253,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="387"/> <location filename="../src/modules/locale/LocalePage.cpp" line="387"/>
<source>The system language will be set to %1.</source> <source>The system language will be set to %1.</source>
<translation type="unfinished"/> <translation>Systemspråket kommer ändras till %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/locale/LocalePage.cpp" line="389"/> <location filename="../src/modules/locale/LocalePage.cpp" line="389"/>
@ -1285,7 +1285,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<location filename="../src/modules/locale/LocalePage.cpp" line="480"/> <location filename="../src/modules/locale/LocalePage.cpp" line="480"/>
<source>%1 (%2)</source> <source>%1 (%2)</source>
<extracomment>Language (Country)</extracomment> <extracomment>Language (Country)</extracomment>
<translation type="unfinished"/> <translation>%1 (%2)</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1355,18 +1355,18 @@ Alla ändringar kommer att gå förlorade.</translation>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="79"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="79"/>
<source>Name</source> <source>Name</source>
<translation type="unfinished"/> <translation>Namn</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="80"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="80"/>
<source>Description</source> <source>Description</source>
<translation type="unfinished"/> <translation>Beskrivning</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="97"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="97"/>
<location filename="../src/modules/netinstall/NetInstallPage.cpp" line="104"/> <location filename="../src/modules/netinstall/NetInstallPage.cpp" line="104"/>
<source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source> <source>Network Installation. (Disabled: Unable to fetch package lists, check your network connection)</source>
<translation type="unfinished"/> <translation>Nätverksinstallation. (Inaktiverad: Kan inte hämta paketlistor, kontrollera nätverksanslutningen)</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1374,7 +1374,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message> <message>
<location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/> <location filename="../src/modules/netinstall/NetInstallViewStep.cpp" line="51"/>
<source>Package selection</source> <source>Package selection</source>
<translation type="unfinished"/> <translation>Paketval</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1500,7 +1500,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="207"/> <location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="207"/>
<source>New partition</source> <source>New partition</source>
<translation type="unfinished"/> <translation>Ny partition</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="224"/> <location filename="../src/modules/partition/gui/PartitionLabelsView.cpp" line="224"/>
@ -1858,7 +1858,7 @@ Alla ändringar kommer att gå förlorade.</translation>
<message> <message>
<location filename="../src/modules/welcome/checker/RequirementsChecker.cpp" line="156"/> <location filename="../src/modules/welcome/checker/RequirementsChecker.cpp" line="156"/>
<source>The screen is too small to display the installer.</source> <source>The screen is too small to display the installer.</source>
<translation type="unfinished"/> <translation>Skärmen är för liten för att visa installationshanteraren.</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -2230,12 +2230,12 @@ Sistem güç kaynağına bağlı değil.</translation>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation>Şifre çok kısa</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation>Şifre çok uzun</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -4,17 +4,17 @@
<message> <message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="69"/> <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="69"/>
<source>The &lt;strong&gt;boot environment&lt;/strong&gt; of this system.&lt;br&gt;&lt;br&gt;Older x86 systems only support &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Modern systems usually use &lt;strong&gt;EFI&lt;/strong&gt;, but may also show up as BIOS if started in compatibility mode.</source> <source>The &lt;strong&gt;boot environment&lt;/strong&gt; of this system.&lt;br&gt;&lt;br&gt;Older x86 systems only support &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Modern systems usually use &lt;strong&gt;EFI&lt;/strong&gt;, but may also show up as BIOS if started in compatibility mode.</source>
<translation type="unfinished"/> <translation>&lt;strong&gt;Завантажувальне середовище&lt;/strong&gt; цієї системи.&lt;br&gt;&lt;br&gt;Старі x86-системи підтримують тільки &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;Нові системи зазвичай використовують&lt;strong&gt;EFI&lt;/strong&gt;, проте можуть також відображатися як BIOS, якщо запущені у режимі сумісності.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="79"/> <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="79"/>
<source>This system was started with an &lt;strong&gt;EFI&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from an EFI environment, this installer must deploy a boot loader application, like &lt;strong&gt;GRUB&lt;/strong&gt; or &lt;strong&gt;systemd-boot&lt;/strong&gt; on an &lt;strong&gt;EFI System Partition&lt;/strong&gt;. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source> <source>This system was started with an &lt;strong&gt;EFI&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from an EFI environment, this installer must deploy a boot loader application, like &lt;strong&gt;GRUB&lt;/strong&gt; or &lt;strong&gt;systemd-boot&lt;/strong&gt; on an &lt;strong&gt;EFI System Partition&lt;/strong&gt;. This is automatic, unless you choose manual partitioning, in which case you must choose it or create it on your own.</source>
<translation type="unfinished"/> <translation>Цю систему було запущено із завантажувальним середовищем &lt;strong&gt;EFI&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Щоб налаштувати завантаження з середовища EFI, установник повинен встановити на &lt;strong&gt;Системний Розділ EFI&lt;/strong&gt; програму-завантажувач таку, як &lt;strong&gt;GRUB&lt;/strong&gt; або &lt;strong&gt;systemd-boot&lt;/strong&gt;. Це буде зроблено автоматично, якщо ви не обрали розподілення диску вручну. В останньому випадку вам потрібно обрати завантажувач або встановити його власноруч.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="91"/> <location filename="../src/modules/partition/gui/BootInfoWidget.cpp" line="91"/>
<source>This system was started with a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from a BIOS environment, this installer must install a boot loader, like &lt;strong&gt;GRUB&lt;/strong&gt;, either at the beginning of a partition or on the &lt;strong&gt;Master Boot Record&lt;/strong&gt; near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own.</source> <source>This system was started with a &lt;strong&gt;BIOS&lt;/strong&gt; boot environment.&lt;br&gt;&lt;br&gt;To configure startup from a BIOS environment, this installer must install a boot loader, like &lt;strong&gt;GRUB&lt;/strong&gt;, either at the beginning of a partition or on the &lt;strong&gt;Master Boot Record&lt;/strong&gt; near the beginning of the partition table (preferred). This is automatic, unless you choose manual partitioning, in which case you must set it up on your own.</source>
<translation type="unfinished"/> <translation>Цю систему було запущено із завантажувальним середовищем &lt;strong&gt;BIOS&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;Щоб налаштувати завантаження з середовища BIOS, установник повинен встановити завантажувач, такий, як &lt;strong&gt;GRUB&lt;/strong&gt; або на початку розділу або у &lt;strong&gt;Головний Завантажувальний Запис (Master Boot Record)&lt;/strong&gt; біля початку таблиці розділів (рекомендовано). Це буде зроблено автотматично, якщо ви не обрали розподілення диску вручну. В останньому випадку вам потрібно встановити завантажувач власноруч.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -22,7 +22,7 @@
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="59"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="59"/>
<source>Master Boot Record of %1</source> <source>Master Boot Record of %1</source>
<translation type="unfinished"/> <translation>Головний Завантажувальний Запис (Master Boot Record) %1</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="76"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="76"/>
@ -37,12 +37,12 @@
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="111"/>
<source>Do not install a boot loader</source> <source>Do not install a boot loader</source>
<translation type="unfinished"/> <translation>Не встановлювати завантажувач</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/> <location filename="../src/modules/partition/core/BootLoaderModel.cpp" line="125"/>
<source>%1 (%2)</source> <source>%1 (%2)</source>
<translation type="unfinished"/> <translation>%1 (%2)</translation>
</message> </message>
</context> </context>
<context> <context>
@ -50,48 +50,48 @@
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="14"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="14"/>
<source>Form</source> <source>Form</source>
<translation type="unfinished"/> <translation>Форма</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="24"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="24"/>
<source>GlobalStorage</source> <source>GlobalStorage</source>
<translation type="unfinished"/> <translation>Глобальне сховище</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="34"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="34"/>
<source>JobQueue</source> <source>JobQueue</source>
<translation type="unfinished"/> <translation>Черга завдань</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="44"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="44"/>
<source>Modules</source> <source>Modules</source>
<translation type="unfinished"/> <translation>Модулі</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="57"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="57"/>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished"/> <translation>Тип:</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="64"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="64"/>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="78"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="78"/>
<source>none</source> <source>none</source>
<translation type="unfinished"/> <translation>немає</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="71"/>
<source>Interface:</source> <source>Interface:</source>
<translation type="unfinished"/> <translation>Інтерфейс:</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/> <location filename="../src/libcalamaresui/utils/DebugWindow.ui" line="93"/>
<source>Tools</source> <source>Tools</source>
<translation type="unfinished"/> <translation>Інструменти</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/utils/DebugWindow.cpp" line="182"/> <location filename="../src/libcalamaresui/utils/DebugWindow.cpp" line="182"/>
<source>Debug information</source> <source>Debug information</source>
<translation type="unfinished"/> <translation>Відлагоджувальна інформація</translation>
</message> </message>
</context> </context>
<context> <context>
@ -99,7 +99,7 @@
<message> <message>
<location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="77"/> <location filename="../src/libcalamaresui/ExecutionViewStep.cpp" line="77"/>
<source>Install</source> <source>Install</source>
<translation type="unfinished"/> <translation>Встановити</translation>
</message> </message>
</context> </context>
<context> <context>
@ -115,68 +115,74 @@
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="51"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="51"/>
<source>Run command %1 %2</source> <source>Run command %1 %2</source>
<translation type="unfinished"/> <translation>Запустити команду %1 %2</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="60"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="60"/>
<source>Running command %1 %2</source> <source>Running command %1 %2</source>
<translation type="unfinished"/> <translation>Запуск команди %1 %2</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="89"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="89"/>
<source>External command crashed</source> <source>External command crashed</source>
<translation type="unfinished"/> <translation>Зовнішня команда завершилася аварією</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="90"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="90"/>
<source>Command %1 crashed. <source>Command %1 crashed.
Output: Output:
%2</source> %2</source>
<translation type="unfinished"/> <translation>Команда %1 завершилася аварією.
Вивід:
%2</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="95"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="95"/>
<source>External command failed to start</source> <source>External command failed to start</source>
<translation type="unfinished"/> <translation>Не вдалося запустити зовнішню команду</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="96"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="96"/>
<source>Command %1 failed to start.</source> <source>Command %1 failed to start.</source>
<translation type="unfinished"/> <translation>Не вдалося запустити команду %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="100"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="100"/>
<source>Internal error when starting command</source> <source>Internal error when starting command</source>
<translation type="unfinished"/> <translation>Внутрішня помилка під час запуску команди</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="101"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="101"/>
<source>Bad parameters for process job call.</source> <source>Bad parameters for process job call.</source>
<translation type="unfinished"/> <translation>Неправильні параметри визову завдання обробки.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="104"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="104"/>
<source>External command failed to finish</source> <source>External command failed to finish</source>
<translation type="unfinished"/> <translation>Не вдалося завершити зовнішню команду</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="105"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="105"/>
<source>Command %1 failed to finish in %2s. <source>Command %1 failed to finish in %2s.
Output: Output:
%3</source> %3</source>
<translation type="unfinished"/> <translation>Не вдалося завершити зовнішню команду %1 протягом %2с.
Вивід:
%3</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="111"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="111"/>
<source>External command finished with errors</source> <source>External command finished with errors</source>
<translation type="unfinished"/> <translation>Зовнішня програма завершилася з помилками</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/ProcessJob.cpp" line="112"/> <location filename="../src/libcalamares/ProcessJob.cpp" line="112"/>
<source>Command %1 finished with exit code %2. <source>Command %1 finished with exit code %2.
Output: Output:
%3</source> %3</source>
<translation type="unfinished"/> <translation>Команда %1 завершилася з кодом %2.
Вивід:
%3</translation>
</message> </message>
</context> </context>
<context> <context>
@ -184,32 +190,32 @@ Output:
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="265"/> <location filename="../src/libcalamares/PythonJob.cpp" line="265"/>
<source>Running %1 operation.</source> <source>Running %1 operation.</source>
<translation type="unfinished"/> <translation>Запуск операції %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="280"/> <location filename="../src/libcalamares/PythonJob.cpp" line="280"/>
<source>Bad working directory path</source> <source>Bad working directory path</source>
<translation type="unfinished"/> <translation>Неправильний шлях робочого каталогу</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="281"/> <location filename="../src/libcalamares/PythonJob.cpp" line="281"/>
<source>Working directory %1 for python job %2 is not readable.</source> <source>Working directory %1 for python job %2 is not readable.</source>
<translation type="unfinished"/> <translation>Неможливо прочитати робочу директорію %1 для завдання python %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="291"/> <location filename="../src/libcalamares/PythonJob.cpp" line="291"/>
<source>Bad main script file</source> <source>Bad main script file</source>
<translation type="unfinished"/> <translation>Неправильний файл головного сценарію</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="292"/> <location filename="../src/libcalamares/PythonJob.cpp" line="292"/>
<source>Main script file %1 for python job %2 is not readable.</source> <source>Main script file %1 for python job %2 is not readable.</source>
<translation type="unfinished"/> <translation>Неможливо прочитати файл головного сценарію %1 для завдання python %2.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonJob.cpp" line="368"/> <location filename="../src/libcalamares/PythonJob.cpp" line="368"/>
<source>Boost.Python error in job &quot;%1&quot;.</source> <source>Boost.Python error in job &quot;%1&quot;.</source>
<translation type="unfinished"/> <translation>Помилка Boost.Python у завданні &quot;%1&quot;.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -217,90 +223,91 @@ Output:
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="73"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="73"/>
<source>&amp;Back</source> <source>&amp;Back</source>
<translation type="unfinished"/> <translation>&amp;Назад</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="74"/>
<source>&amp;Next</source> <source>&amp;Next</source>
<translation type="unfinished"/> <translation>&amp;Вперед</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="75"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="300"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="300"/>
<source>&amp;Cancel</source> <source>&amp;Cancel</source>
<translation type="unfinished"/> <translation>&amp;Скасувати</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="76"/>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="301"/>
<source>Cancel installation without changing the system.</source> <source>Cancel installation without changing the system.</source>
<translation type="unfinished"/> <translation>Скасувати встановлення без змінення системи.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="99"/>
<source>Cancel installation?</source> <source>Cancel installation?</source>
<translation type="unfinished"/> <translation>Скасувати встановлення?</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="100"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="100"/>
<source>Do you really want to cancel the current install process? <source>Do you really want to cancel the current install process?
The installer will quit and all changes will be lost.</source> The installer will quit and all changes will be lost.</source>
<translation type="unfinished"/> <translation>Чи ви насправді бажаєте скасувати процес встановлення?
Установник закриється і всі зміни буде втрачено.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="105"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="105"/>
<source>&amp;Yes</source> <source>&amp;Yes</source>
<translation type="unfinished"/> <translation>&amp;Так</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="106"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="106"/>
<source>&amp;No</source> <source>&amp;No</source>
<translation type="unfinished"/> <translation>&amp;Ні</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="183"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="183"/>
<source>&amp;Close</source> <source>&amp;Close</source>
<translation type="unfinished"/> <translation>&amp;Закрити</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="233"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="233"/>
<source>Continue with setup?</source> <source>Continue with setup?</source>
<translation type="unfinished"/> <translation>Продовжити встановлення?</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="234"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="234"/>
<source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source> <source>The %1 installer is about to make changes to your disk in order to install %2.&lt;br/&gt;&lt;strong&gt;You will not be able to undo these changes.&lt;/strong&gt;</source>
<translation type="unfinished"/> <translation>Установник %1 збирається зробити зміни на вашому диску, щоб встановити %2.&lt;br/&gt;&lt;strong&gt;Ці зміни неможливо буде повернути.&lt;/strong&gt;</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="239"/>
<source>&amp;Install now</source> <source>&amp;Install now</source>
<translation type="unfinished"/> <translation>&amp;Встановити зараз</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="240"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="240"/>
<source>Go &amp;back</source> <source>Go &amp;back</source>
<translation type="unfinished"/> <translation>Перейти &amp;назад</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="269"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="269"/>
<source>&amp;Done</source> <source>&amp;Done</source>
<translation type="unfinished"/> <translation>&amp;Закінчити</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="270"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="270"/>
<source>The installation is complete. Close the installer.</source> <source>The installation is complete. Close the installer.</source>
<translation type="unfinished"/> <translation>Встановлення виконано. Закрити установник.</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="180"/>
<source>Error</source> <source>Error</source>
<translation type="unfinished"/> <translation>Помилка</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamaresui/ViewManager.cpp" line="181"/> <location filename="../src/libcalamaresui/ViewManager.cpp" line="181"/>
<source>Installation Failed</source> <source>Installation Failed</source>
<translation type="unfinished"/> <translation>Втановлення завершилося невдачею</translation>
</message> </message>
</context> </context>
<context> <context>
@ -308,22 +315,22 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="263"/> <location filename="../src/libcalamares/PythonHelper.cpp" line="263"/>
<source>Unknown exception type</source> <source>Unknown exception type</source>
<translation type="unfinished"/> <translation>Невідомий тип виключної ситуації</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="276"/> <location filename="../src/libcalamares/PythonHelper.cpp" line="276"/>
<source>unparseable Python error</source> <source>unparseable Python error</source>
<translation type="unfinished"/> <translation>нерозбірлива помилка Python</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="292"/> <location filename="../src/libcalamares/PythonHelper.cpp" line="292"/>
<source>unparseable Python traceback</source> <source>unparseable Python traceback</source>
<translation type="unfinished"/> <translation>нерозбірливе відстеження помилки Python</translation>
</message> </message>
<message> <message>
<location filename="../src/libcalamares/PythonHelper.cpp" line="296"/> <location filename="../src/libcalamares/PythonHelper.cpp" line="296"/>
<source>Unfetchable Python error.</source> <source>Unfetchable Python error.</source>
<translation type="unfinished"/> <translation>Помилка Python, інформацію про яку неможливо отримати.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -336,7 +343,7 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/calamares/CalamaresWindow.cpp" line="112"/> <location filename="../src/calamares/CalamaresWindow.cpp" line="112"/>
<source>Show debug information</source> <source>Show debug information</source>
<translation type="unfinished"/> <translation>Показати відлагоджувальну інформацію</translation>
</message> </message>
</context> </context>
<context> <context>
@ -344,12 +351,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="39"/> <location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="39"/>
<source>Checking file system on partition %1.</source> <source>Checking file system on partition %1.</source>
<translation type="unfinished"/> <translation>Перевірка файлової системи на розділі %1.</translation>
</message> </message>
<message> <message>
<location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="77"/> <location filename="../src/modules/partition/jobs/CheckFileSystemJob.cpp" line="77"/>
<source>The file system check on partition %1 failed.</source> <source>The file system check on partition %1 failed.</source>
<translation type="unfinished"/> <translation>Перевірка файлової системи на розділі %1 завершилася невдачею.</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -2225,12 +2225,12 @@ The installer will quit and all changes will be lost.</source>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="494"/> <location filename="../src/modules/users/UsersPage.cpp" line="494"/>
<source>Password is too short</source> <source>Password is too short</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
<message> <message>
<location filename="../src/modules/users/UsersPage.cpp" line="513"/> <location filename="../src/modules/users/UsersPage.cpp" line="513"/>
<source>Password is too long</source> <source>Password is too long</source>
<translation type="unfinished"/> <translation></translation>
</message> </message>
</context> </context>
<context> <context>

View File

@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-28 10:35-0400\n" "POT-Creation-Date: 2017-09-28 10:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: pavelrz <pavel@rzehak.cz>, 2017\n" "Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2017\n"
"Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -21,23 +21,23 @@ msgstr ""
#: src/modules/packages/main.py:59 #: src/modules/packages/main.py:59
#, python-format #, python-format
msgid "Processing packages (%(count)d / %(total)d)" msgid "Processing packages (%(count)d / %(total)d)"
msgstr "" msgstr "Zpracovávání balíčků (%(count)d / %(total)d)"
#: src/modules/packages/main.py:61 #: src/modules/packages/main.py:61
#, python-format #, python-format
msgid "Installing one package." msgid "Installing one package."
msgid_plural "Installing %(num)d packages." msgid_plural "Installing %(num)d packages."
msgstr[0] "" msgstr[0] "Je instalován jeden balíček."
msgstr[1] "" msgstr[1] "Jsou instalovány %(num)d balíčky."
msgstr[2] "" msgstr[2] "Je instalováno %(num)d balíčků."
#: src/modules/packages/main.py:64 #: src/modules/packages/main.py:64
#, python-format #, python-format
msgid "Removing one package." msgid "Removing one package."
msgid_plural "Removing %(num)d packages." msgid_plural "Removing %(num)d packages."
msgstr[0] "" msgstr[0] "Odebírá se jeden balíček."
msgstr[1] "" msgstr[1] "Odebírají se %(num)d balíčky."
msgstr[2] "" msgstr[2] "Odebírá se %(num)d balíčků."
#: src/modules/packages/main.py:68 #: src/modules/packages/main.py:68
msgid "Install packages." msgid "Install packages."
@ -53,4 +53,4 @@ msgstr "Testovací krok {} python."
#: src/modules/machineid/main.py:35 #: src/modules/machineid/main.py:35
msgid "Generate machine-id." msgid "Generate machine-id."
msgstr "Vytvořit machine-id." msgstr "Vytvořit identifikátor stroje."

Binary file not shown.

View File

@ -28,7 +28,7 @@ msgstr "Forarbejder pakker (%(count)d / %(total)d)"
msgid "Installing one package." msgid "Installing one package."
msgid_plural "Installing %(num)d packages." msgid_plural "Installing %(num)d packages."
msgstr[0] "Installerer én pakke." msgstr[0] "Installerer én pakke."
msgstr[1] "Installer %(num)d pakker." msgstr[1] "Installerer %(num)d pakker."
#: src/modules/packages/main.py:64 #: src/modules/packages/main.py:64
#, python-format #, python-format

Binary file not shown.

View File

@ -10,6 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-28 10:35-0400\n" "POT-Creation-Date: 2017-09-28 10:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Paul Combal <abonnementspaul@gmail.com>, 2017\n"
"Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -20,7 +21,7 @@ msgstr ""
#: src/modules/packages/main.py:59 #: src/modules/packages/main.py:59
#, python-format #, python-format
msgid "Processing packages (%(count)d / %(total)d)" msgid "Processing packages (%(count)d / %(total)d)"
msgstr "" msgstr "Traitement des paquets (%(count)d / %(total)d)"
#: src/modules/packages/main.py:61 #: src/modules/packages/main.py:61
#, python-format #, python-format
@ -38,7 +39,7 @@ msgstr[1] ""
#: src/modules/packages/main.py:68 #: src/modules/packages/main.py:68
msgid "Install packages." msgid "Install packages."
msgstr "" msgstr "Installer des paquets."
#: src/modules/dummypython/main.py:44 #: src/modules/dummypython/main.py:44
msgid "Dummy python job." msgid "Dummy python job."
@ -50,4 +51,4 @@ msgstr ""
#: src/modules/machineid/main.py:35 #: src/modules/machineid/main.py:35
msgid "Generate machine-id." msgid "Generate machine-id."
msgstr "" msgstr "Générer un machine-id."

Binary file not shown.

View File

@ -10,6 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-28 10:35-0400\n" "POT-Creation-Date: 2017-09-28 10:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Tyler Moss <inactive+lazerbeta@transifex.com>, 2017\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n" "Language-Team: Norwegian Bokmål (https://www.transifex.com/calamares/teams/20061/nb/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -38,7 +39,7 @@ msgstr[1] ""
#: src/modules/packages/main.py:68 #: src/modules/packages/main.py:68
msgid "Install packages." msgid "Install packages."
msgstr "" msgstr "Installer pakker."
#: src/modules/dummypython/main.py:44 #: src/modules/dummypython/main.py:44
msgid "Dummy python job." msgid "Dummy python job."
@ -50,4 +51,4 @@ msgstr ""
#: src/modules/machineid/main.py:35 #: src/modules/machineid/main.py:35
msgid "Generate machine-id." msgid "Generate machine-id."
msgstr "" msgstr "Generer maskin-ID."

View File

@ -8,10 +8,17 @@ componentName: default
# same distribution. # same distribution.
welcomeStyleCalamares: false welcomeStyleCalamares: false
# Should the welcome image (productWelcome, below) be scaled # These are strings shown to the user in the user interface.
# up beyond its natural size? # There is no provision for translating them -- since they
welcomeExpandingLogo: true # 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: strings:
productName: Generic GNU/Linux productName: Generic GNU/Linux
shortProductName: Generic shortProductName: Generic
@ -25,11 +32,33 @@ strings:
knownIssuesUrl: http://calamares.io/about/ knownIssuesUrl: http://calamares.io/about/
releaseNotesUrl: http://calamares.io/about/ releaseNotesUrl: http://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: images:
productLogo: "squid.png" productLogo: "squid.png"
productIcon: "squid.png" productIcon: "squid.png"
productWelcome: "languages.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: "show.qml" slideshow: "show.qml"
# Colors for text and background components. # Colors for text and background components.

View File

@ -96,7 +96,7 @@ CalamaresWindow::CalamaresWindow( QWidget* parent )
logoLabel->setAlignment( Qt::AlignCenter ); logoLabel->setAlignment( Qt::AlignCenter );
logoLabel->setFixedSize( 80, 80 ); logoLabel->setFixedSize( 80, 80 );
logoLabel->setPixmap( Calamares::Branding::instance()-> logoLabel->setPixmap( Calamares::Branding::instance()->
image( Calamares::Branding::ProductIcon, image( Calamares::Branding::ProductLogo,
logoLabel->size() ) ); logoLabel->size() ) );
logoLayout->addWidget( logoLabel ); logoLayout->addWidget( logoLabel );
logoLayout->addStretch(); logoLayout->addStretch();

View File

@ -46,7 +46,7 @@ public:
#endif #endif
} }
void setJobs( const QList< job_ptr >& jobs ) void setJobs( const JobList& jobs )
{ {
m_jobs = jobs; m_jobs = jobs;
} }
@ -73,7 +73,7 @@ public:
} }
private: private:
QList< job_ptr > m_jobs; JobList m_jobs;
JobQueue* m_queue; JobQueue* m_queue;
int m_jobIndex; int m_jobIndex;
@ -164,7 +164,7 @@ JobQueue::enqueue( const job_ptr& job )
void void
JobQueue::enqueue( const QList< job_ptr >& jobs ) JobQueue::enqueue( const JobList& jobs )
{ {
Q_ASSERT( !m_thread->isRunning() ); Q_ASSERT( !m_thread->isRunning() );
m_jobs.append( jobs ); m_jobs.append( jobs );

View File

@ -42,11 +42,11 @@ public:
GlobalStorage* globalStorage() const; GlobalStorage* globalStorage() const;
void enqueue( const job_ptr& job ); void enqueue( const job_ptr& job );
void enqueue( const QList< job_ptr >& jobs ); void enqueue( const JobList& jobs );
void start(); void start();
signals: signals:
void queueChanged( const QList< job_ptr >& jobs ); void queueChanged( const JobList& jobs );
void progress( qreal percent, const QString& prettyName ); void progress( qreal percent, const QString& prettyName );
void finished(); void finished();
void failed( const QString& message, const QString& details ); void failed( const QString& message, const QString& details );
@ -54,7 +54,7 @@ signals:
private: private:
static JobQueue* s_instance; static JobQueue* s_instance;
QList< job_ptr > m_jobs; JobList m_jobs;
JobThread* m_thread; JobThread* m_thread;
GlobalStorage* m_storage; GlobalStorage* m_storage;
}; };

View File

@ -19,6 +19,7 @@
#ifndef TYPEDEFS_H #ifndef TYPEDEFS_H
#define TYPEDEFS_H #define TYPEDEFS_H
#include <QList>
#include <QSharedPointer> #include <QSharedPointer>
namespace Calamares namespace Calamares
@ -26,6 +27,7 @@ namespace Calamares
class Job; class Job;
typedef QSharedPointer< Job > job_ptr; typedef QSharedPointer< Job > job_ptr;
using JobList = QList< job_ptr >;
enum ModuleAction : char enum ModuleAction : char
{ {

View File

@ -326,5 +326,35 @@ crash()
*a = 1; *a = 1;
} }
bool
getBool( const QVariantMap& map, const QString& key, bool d )
{
bool result = d;
if ( map.contains( key ) )
{
auto v = map.value( key );
if ( v.type() == QVariant::Bool )
result = v.toBool();
}
return result;
}
QVariantMap
getSubMap( const QVariantMap& map, const QString& key, bool& success )
{
success = false;
if ( map.contains( key ) )
{
auto v = map.value( key );
if ( v.type() == QVariant::Map )
{
success = true;
return v.toMap();
}
}
return QVariantMap();
}
} }

View File

@ -97,6 +97,22 @@ namespace CalamaresUtils
* @brief crash makes Calamares crash immediately. * @brief crash makes Calamares crash immediately.
*/ */
DLLEXPORT void crash(); DLLEXPORT void crash();
/**
* Get a bool value from a mapping with a given key; returns the default
* if no value is stored in the map.
*/
DLLEXPORT bool getBool( const QVariantMap& map, const QString& key, bool d );
/**
* Returns a sub-map (i.e. a nested map) from the given mapping with the
* given key. @p success is set to true if the @p key exists
* in @p map and converts to a map, false otherwise.
*
* Returns an empty map if there is no such key or it is not a map-value.
* (e.g. if @p success is false).
*/
DLLEXPORT QVariantMap getSubMap( const QVariantMap& map, const QString& key, bool& success );
} }
#endif // CALAMARESUTILS_H #endif // CALAMARESUTILS_H

View File

@ -72,9 +72,10 @@ calamares_add_library( calamaresui
EXPORT_MACRO UIDLLEXPORT_PRO EXPORT_MACRO UIDLLEXPORT_PRO
LINK_PRIVATE_LIBRARIES LINK_PRIVATE_LIBRARIES
${YAMLCPP_LIBRARY} ${YAMLCPP_LIBRARY}
${OPTIONAL_PRIVATE_LIBRARIES}
LINK_LIBRARIES
Qt5::Svg Qt5::Svg
Qt5::QuickWidgets Qt5::QuickWidgets
${OPTIONAL_PRIVATE_LIBRARIES}
RESOURCES libcalamaresui.qrc RESOURCES libcalamaresui.qrc
EXPORT CalamaresLibraryDepends EXPORT CalamaresLibraryDepends
VERSION ${CALAMARES_VERSION_SHORT} VERSION ${CALAMARES_VERSION_SHORT}

View File

@ -148,10 +148,10 @@ ExecutionViewStep::onActivate()
} }
QList< Calamares::job_ptr > JobList
ExecutionViewStep::jobs() const ExecutionViewStep::jobs() const
{ {
return QList< Calamares::job_ptr >(); return JobList();
} }

View File

@ -52,7 +52,7 @@ public:
void onActivate() override; void onActivate() override;
QList< job_ptr > jobs() const override; JobList jobs() const override;
void appendJobModuleInstanceKey( const QString& instanceKey ); void appendJobModuleInstanceKey( const QString& instanceKey );

View File

@ -75,10 +75,10 @@ CppJobModule::loadSelf()
} }
QList< job_ptr > JobList
CppJobModule::jobs() const CppJobModule::jobs() const
{ {
return QList< job_ptr >() << m_job; return JobList() << m_job;
} }

View File

@ -36,7 +36,7 @@ public:
Interface interface() const override; Interface interface() const override;
void loadSelf() override; void loadSelf() override;
QList< job_ptr > jobs() const override; JobList jobs() const override;
protected: protected:
void initFrom( const QVariantMap& moduleDescriptor ) override; void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -70,7 +70,6 @@ public:
ProcessInterface, ProcessInterface,
PythonQtInterface PythonQtInterface
}; };
virtual ~Module();
/** /**
* @brief fromDescriptor creates a new Module object of the correct type. * @brief fromDescriptor creates a new Module object of the correct type.
@ -84,6 +83,7 @@ public:
const QString& instanceId, const QString& instanceId,
const QString& configFileName, const QString& configFileName,
const QString& moduleDirectory ); const QString& moduleDirectory );
virtual ~Module();
/** /**
* @brief name returns the name of this module. * @brief name returns the name of this module.
@ -159,7 +159,7 @@ public:
* @brief jobs returns any jobs exposed by this module. * @brief jobs returns any jobs exposed by this module.
* @return a list of jobs (can be empty). * @return a list of jobs (can be empty).
*/ */
virtual QList< job_ptr > jobs() const = 0; virtual JobList jobs() const = 0;
/** /**
* @brief configurationMap returns the contents of the configuration file for * @brief configurationMap returns the contents of the configuration file for

View File

@ -53,10 +53,10 @@ ProcessJobModule::loadSelf()
} }
QList< job_ptr > JobList
ProcessJobModule::jobs() const ProcessJobModule::jobs() const
{ {
return QList< job_ptr >() << m_job; return JobList() << m_job;
} }

View File

@ -34,7 +34,7 @@ public:
Interface interface() const override; Interface interface() const override;
void loadSelf() override; void loadSelf() override;
QList< job_ptr > jobs() const override; JobList jobs() const override;
protected: protected:
void initFrom( const QVariantMap& moduleDescriptor ) override; void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -53,10 +53,10 @@ PythonJobModule::loadSelf()
} }
QList< job_ptr > JobList
PythonJobModule::jobs() const PythonJobModule::jobs() const
{ {
return QList< job_ptr >() << m_job; return JobList() << m_job;
} }

View File

@ -32,7 +32,7 @@ public:
Interface interface() const override; Interface interface() const override;
void loadSelf() override; void loadSelf() override;
QList< job_ptr > jobs() const override; JobList jobs() const override;
protected: protected:
void initFrom( const QVariantMap& moduleDescriptor ) override; void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -171,7 +171,7 @@ PythonQtViewModule::loadSelf()
} }
QList< job_ptr > JobList
PythonQtViewModule::jobs() const PythonQtViewModule::jobs() const
{ {
return m_viewStep->jobs(); return m_viewStep->jobs();

View File

@ -33,7 +33,7 @@ public:
Interface interface() const override; Interface interface() const override;
void loadSelf() override; void loadSelf() override;
QList< job_ptr > jobs() const override; JobList jobs() const override;
protected: protected:
void initFrom( const QVariantMap& moduleDescriptor ) override; void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -76,7 +76,7 @@ ViewModule::loadSelf()
} }
QList< job_ptr > JobList
ViewModule::jobs() const ViewModule::jobs() const
{ {
return m_viewStep->jobs(); return m_viewStep->jobs();

View File

@ -37,7 +37,7 @@ public:
Interface interface() const override; Interface interface() const override;
void loadSelf() override; void loadSelf() override;
QList< job_ptr > jobs() const override; JobList jobs() const override;
protected: protected:
void initFrom( const QVariantMap& moduleDescriptor ) override; void initFrom( const QVariantMap& moduleDescriptor ) override;

View File

@ -62,7 +62,7 @@ DebugWindow::DebugWindow()
// JobQueue page // JobQueue page
jobQueueText->setReadOnly( true ); jobQueueText->setReadOnly( true );
connect( JobQueue::instance(), &JobQueue::queueChanged, connect( JobQueue::instance(), &JobQueue::queueChanged,
this, [ this ]( const QList< Calamares::job_ptr >& jobs ) this, [ this ]( const JobList& jobs )
{ {
QStringList text; QStringList text;
for ( const auto &job : jobs ) for ( const auto &job : jobs )

View File

@ -26,11 +26,9 @@
#include "qjsonitem.h" #include "qjsonitem.h"
QJsonTreeItem::QJsonTreeItem(QJsonTreeItem *parent) QJsonTreeItem::QJsonTreeItem(QJsonTreeItem *parent)
: mParent( parent )
, mType( QJsonValue::Type::Null )
{ {
mParent = parent;
} }
QJsonTreeItem::~QJsonTreeItem() QJsonTreeItem::~QJsonTreeItem()

View File

@ -33,14 +33,19 @@
QJsonModel::QJsonModel(QObject *parent) : QJsonModel::QJsonModel(QObject *parent) :
QAbstractItemModel(parent) QAbstractItemModel(parent)
, mRootItem( new QJsonTreeItem )
{ {
mRootItem = new QJsonTreeItem;
mHeaders.append("key"); mHeaders.append("key");
mHeaders.append("value"); mHeaders.append("value");
} }
QJsonModel::~QJsonModel()
{
delete mRootItem;
}
bool QJsonModel::load(const QString &fileName) bool QJsonModel::load(const QString &fileName)
{ {
QFile file(fileName); QFile file(fileName);
@ -66,6 +71,7 @@ bool QJsonModel::loadJson(const QByteArray &json)
if (!mDocument.isNull()) if (!mDocument.isNull())
{ {
beginResetModel(); beginResetModel();
delete mRootItem;
if (mDocument.isArray()) { if (mDocument.isArray()) {
mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.array())); mRootItem = QJsonTreeItem::load(QJsonValue(mDocument.array()));
} else { } else {

View File

@ -17,6 +17,7 @@ class QJsonModel : public QAbstractItemModel
Q_OBJECT Q_OBJECT
public: public:
explicit QJsonModel(QObject *parent = 0); explicit QJsonModel(QObject *parent = 0);
~QJsonModel();
bool load(const QString& fileName); bool load(const QString& fileName);
bool load(QIODevice * device); bool load(QIODevice * device);
bool loadJson(const QByteArray& json); bool loadJson(const QByteArray& json);

View File

@ -159,10 +159,10 @@ PythonQtViewStep::isAtEnd() const
} }
QList< Calamares::job_ptr > JobList
PythonQtViewStep::jobs() const PythonQtViewStep::jobs() const
{ {
QList< Calamares::job_ptr > jobs; JobList jobs;
PythonQtObjectPtr jobsCallable = PythonQt::self()->lookupCallable( m_obj, "jobs" ); PythonQtObjectPtr jobsCallable = PythonQt::self()->lookupCallable( m_obj, "jobs" );
if ( jobsCallable.isNull() ) if ( jobsCallable.isNull() )

View File

@ -46,7 +46,7 @@ public:
bool isAtBeginning() const override; bool isAtBeginning() const override;
bool isAtEnd() const override; bool isAtEnd() const override;
QList< Calamares::job_ptr > jobs() const override; JobList jobs() const override;
void setConfigurationMap( const QVariantMap& configurationMap ) override; void setConfigurationMap( const QVariantMap& configurationMap ) override;

View File

@ -91,7 +91,7 @@ public:
*/ */
virtual void onLeave(); virtual void onLeave();
virtual QList< job_ptr > jobs() const = 0; virtual JobList jobs() const = 0;
void setModuleInstanceKey( const QString& instanceKey ); void setModuleInstanceKey( const QString& instanceKey );
QString moduleInstanceKey() const QString moduleInstanceKey() const

View File

@ -1,5 +1,11 @@
include( CMakeColors ) include( CMakeColors )
if( BUILD_TESTING )
add_executable( test_conf test_conf.cpp )
target_link_libraries( test_conf ${YAMLCPP_LIBRARY} )
target_include_directories( test_conf PUBLIC ${YAMLCPP_INCLUDE_DIR} )
endif()
file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" ) file( GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" )
string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" ) string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" )
foreach( SUBDIRECTORY ${SUBDIRECTORIES} ) foreach( SUBDIRECTORY ${SUBDIRECTORIES} )

View File

@ -8,11 +8,12 @@
# Copyright 2014, Daniel Hillenbrand <codeworkx@bbqlinux.org> # Copyright 2014, Daniel Hillenbrand <codeworkx@bbqlinux.org>
# Copyright 2014, Benjamin Vaudour <benjamin.vaudour@yahoo.fr> # Copyright 2014, Benjamin Vaudour <benjamin.vaudour@yahoo.fr>
# Copyright 2014, Kevin Kofler <kevin.kofler@chello.at> # Copyright 2014, Kevin Kofler <kevin.kofler@chello.at>
# Copyright 2015, Philip Mueller <philm@manjaro.org> # Copyright 2015-2017, Philip Mueller <philm@manjaro.org>
# Copyright 2016-2017, Teo Mrnjavac <teo@kde.org> # Copyright 2016-2017, Teo Mrnjavac <teo@kde.org>
# Copyright 2017, Alf Gaida <agaida@siduction.org> # Copyright 2017, Alf Gaida <agaida@siduction.org>
# Copyright 2017, Adriaan de Groot <groot@kde.org> # Copyright 2017, Adriaan de Groot <groot@kde.org>
# Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org> # Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org>
# Copyright 2017, Ben Green <Bezzy1999@hotmail.com>
# #
# Calamares is free software: you can redistribute it and/or modify # Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -235,10 +236,18 @@ def install_grub(efi_directory, fw_type):
# if the kernel is older than 4.0, the UEFI bitness likely isn't # if the kernel is older than 4.0, the UEFI bitness likely isn't
# exposed to the userspace so we assume a 64 bit UEFI here # exposed to the userspace so we assume a 64 bit UEFI here
efi_bitness = "64" efi_bitness = "64"
bitness_translate = {"32": "--target=i386-efi",
"64": "--target=x86_64-efi"} if efi_bitness == "32":
efi_target = "i386-efi"
efi_grub_file = "grubia32.efi"
efi_boot_file = "bootia32.efi"
elif efi_bitness == "64":
efi_target = "x86_64-efi"
efi_grub_file = "grubx64.efi"
efi_boot_file = "bootx64.efi"
check_target_env_call([libcalamares.job.configuration["grubInstall"], check_target_env_call([libcalamares.job.configuration["grubInstall"],
bitness_translate[efi_bitness], "--target=" + efi_target,
"--efi-directory=" + efi_directory, "--efi-directory=" + efi_directory,
"--bootloader-id=" + efi_bootloader_id, "--bootloader-id=" + efi_bootloader_id,
"--force"]) "--force"])
@ -260,13 +269,13 @@ def install_grub(efi_directory, fw_type):
os.makedirs(install_efi_boot_directory) os.makedirs(install_efi_boot_directory)
# Workaround for some UEFI firmwares # Workaround for some UEFI firmwares
efi_file_source = {"32": os.path.join(install_efi_directory_firmware, efi_file_source = os.path.join(install_efi_directory_firmware,
efi_bootloader_id, efi_bootloader_id,
"grubia32.efi"), efi_grub_file)
"64": os.path.join(install_efi_directory_firmware, efi_file_target = os.path.join(install_efi_boot_directory,
efi_bootloader_id, efi_boot_file)
"grubx64.efi")}
shutil.copy2(efi_file_source[efi_bitness], install_efi_boot_directory) shutil.copy2(efi_file_source, efi_file_target)
else: else:
print("Bootloader: grub (bios)") print("Bootloader: grub (bios)")
if libcalamares.globalstorage.value("bootLoader") is None: if libcalamares.globalstorage.value("bootLoader") is None:

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-04 08:16-0400\n" "POT-Creation-Date: 2017-09-28 10:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: pavelrz <pavel@rzehak.cz>, 2016\n" "Last-Translator: pavelrz <pavel@rzehak.cz>, 2016\n"
"Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n" "Language-Team: Czech (Czech Republic) (https://www.transifex.com/calamares/teams/20061/cs_CZ/)\n"
@ -20,7 +20,7 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84 #: src/modules/dummypythonqt/main.py:84
msgid "Click me!" msgid "Click me!"
msgstr "Klikni na mě!" msgstr "Klikněte na mě!"
#: src/modules/dummypythonqt/main.py:94 #: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel." msgid "A new QLabel."
@ -36,7 +36,7 @@ msgstr "Testovací úloha PythonQt"
#: src/modules/dummypythonqt/main.py:186 #: src/modules/dummypythonqt/main.py:186
msgid "This is the Dummy PythonQt Job. The dummy job says: {}" msgid "This is the Dummy PythonQt Job. The dummy job says: {}"
msgstr "Toto je testovací úloha PythonQt. Testovací úloha říká: {}" msgstr "Toto je testovací úloha PythonQt. Testovací úloha sděluje: {}"
#: src/modules/dummypythonqt/main.py:190 #: src/modules/dummypythonqt/main.py:190
msgid "A status message for Dummy PythonQt Job." msgid "A status message for Dummy PythonQt Job."

View File

@ -8,8 +8,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-04 08:16-0400\n" "POT-Creation-Date: 2017-09-28 10:34-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Paul Combal <abonnementspaul@gmail.com>, 2017\n"
"Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n" "Language-Team: French (https://www.transifex.com/calamares/teams/20061/fr/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -19,11 +20,11 @@ msgstr ""
#: src/modules/dummypythonqt/main.py:84 #: src/modules/dummypythonqt/main.py:84
msgid "Click me!" msgid "Click me!"
msgstr "" msgstr "Cliquez-moi!"
#: src/modules/dummypythonqt/main.py:94 #: src/modules/dummypythonqt/main.py:94
msgid "A new QLabel." msgid "A new QLabel."
msgstr "" msgstr "Un nouveau QLabel."
#: src/modules/dummypythonqt/main.py:97 #: src/modules/dummypythonqt/main.py:97
msgid "Dummy PythonQt ViewStep" msgid "Dummy PythonQt ViewStep"

View File

@ -178,7 +178,7 @@ FinishedViewStep::setConfigurationMap( const QVariantMap& configurationMap )
configurationMap.value( "restartNowCommand" ).type() == QVariant::String ) configurationMap.value( "restartNowCommand" ).type() == QVariant::String )
m_widget->setRestartNowCommand( configurationMap.value( "restartNowCommand" ).toString() ); m_widget->setRestartNowCommand( configurationMap.value( "restartNowCommand" ).toString() );
else else
m_widget->setRestartNowCommand( "systemctl -i reboot" ); m_widget->setRestartNowCommand( "shutdown -r now" );
} }
} }
if ( configurationMap.contains( "notifyOnFinished" ) && if ( configurationMap.contains( "notifyOnFinished" ) &&

View File

@ -1,14 +1,18 @@
Configuration for the "finished" page, which is usually shown only at # Configuration for the "finished" page, which is usually shown only at
the end of the installation (successful or not). # the end of the installation (successful or not).
--- ---
# The finished page can hold a "restart system now" checkbox. # The finished page can hold a "restart system now" checkbox.
# If this is false, no checkbox is show and the system is not restarted # If this is false, no checkbox is shown and the system is not restarted
# when Calamares exits. # when Calamares exits.
restartNowEnabled: true restartNowEnabled: true
# Initial state of the checkbox "restart now".
# Initial state of the checkbox "restart now". Only relevant when the
# checkbox is shown by restartNowEnabled.
restartNowChecked: false restartNowChecked: false
# If the checkbox is shown, and the checkbox is checked, then when # If the checkbox is shown, and the checkbox is checked, then when
# Calamares exits from the finished-page it will run this command. # Calamares exits from the finished-page it will run this command.
# If not set, falls back to "shutdown -r now".
restartNowCommand: "systemctl -i reboot" restartNowCommand: "systemctl -i reboot"
# When the last page is (successfully) reached, send a DBus notification # When the last page is (successfully) reached, send a DBus notification

View File

@ -24,6 +24,8 @@
# along with Calamares. If not, see <http://www.gnu.org/licenses/>. # along with Calamares. If not, see <http://www.gnu.org/licenses/>.
import libcalamares import libcalamares
import inspect
import os import os
import shutil import shutil

View File

@ -21,6 +21,7 @@ calamares_add_plugin( interactiveterminal
InteractiveTerminalPage.cpp InteractiveTerminalPage.cpp
LINK_PRIVATE_LIBRARIES LINK_PRIVATE_LIBRARIES
calamaresui calamaresui
LINK_LIBRARIES
KF5::Service KF5::Service
KF5::Parts KF5::Parts
SHARED_LIB SHARED_LIB

View File

@ -1,3 +1,5 @@
# NOTE: you must have ckbcomp installed and runnable
# on the live system, for keyboard layout previews.
--- ---
# The name of the file to write X11 keyboard settings to # The name of the file to write X11 keyboard settings to
# The default value is the name used by upstream systemd-localed. # The default value is the name used by upstream systemd-localed.

View File

@ -20,6 +20,7 @@
* along with Calamares. If not, see <http://www.gnu.org/licenses/>. * along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "utils/Logger.h"
#include "keyboardpreview.h" #include "keyboardpreview.h"
KeyBoardPreview::KeyBoardPreview( QWidget* parent ) KeyBoardPreview::KeyBoardPreview( QWidget* parent )
@ -113,10 +114,16 @@ bool KeyBoardPreview::loadCodes() {
process.setEnvironment(QStringList() << "LANG=C" << "LC_MESSAGES=C"); process.setEnvironment(QStringList() << "LANG=C" << "LC_MESSAGES=C");
process.start("ckbcomp", param); process.start("ckbcomp", param);
if (!process.waitForStarted()) if (!process.waitForStarted())
{
cDebug() << "WARNING: ckbcomp not found , keyboard preview disabled";
return false; return false;
}
if (!process.waitForFinished()) if (!process.waitForFinished())
{
cDebug() << "WARNING: ckbcomp failed, keyboard preview disabled";
return false; return false;
}
// Clear codes // Clear codes
codes.clear(); codes.clear();

View File

@ -120,7 +120,7 @@ LocaleViewStep::fetchGeoIpTimezone()
try try
{ {
YAML::Node doc = YAML::Load( reply->readAll() ); YAML::Node doc = YAML::Load( data );
QVariant var = CalamaresUtils::yamlToVariant( doc ); QVariant var = CalamaresUtils::yamlToVariant( doc );
if ( !var.isNull() && if ( !var.isNull() &&

View File

@ -1,7 +1,27 @@
--- ---
# This settings are used to set your default system time zone.
# Time zones are usually located under /usr/share/zoneinfo and
# provided by the 'tzdata' package of your Distribution.
#
# Distributions using systemd can list available
# time zones by using the timedatectl command.
# timedatectl list-timezones
region: "America" region: "America"
zone: "New_York" zone: "New_York"
# GeoIP settings. Leave commented out to disable GeoIP.
#localeGenPath: "/etc/locale.gen" # System locales are detected in the following order:
#
# /usr/share/i18n/SUPPORTED
# localeGenPath (defaults to /etc/locale.gen if not set)
# 'locale -a' output
# Enable only when your Distribution is using an
# custom path for locale.gen
#localeGenPath: "PATH_TO/locale.gen"
# GeoIP based Language settings:
# GeoIP need an working Internet connecion.
# This can be managed from welcome.conf by adding
# internet to the list of required conditions.
# Leave commented out to disable GeoIP.
#geoipUrl: "freegeoip.net" #geoipUrl: "freegeoip.net"

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> === /* === This file is part of Calamares - <http://github.com/calamares> ===
* *
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org> * Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
* *
* Originally from the Manjaro Installation Framework * Originally from the Manjaro Installation Framework
* by Roland Singer <roland@manjaro.org> * by Roland Singer <roland@manjaro.org>
@ -20,61 +21,70 @@
* along with Calamares. If not, see <http://www.gnu.org/licenses/>. * along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <cmath>
#include "timezonewidget.h" #include "timezonewidget.h"
TimeZoneWidget::TimeZoneWidget(QWidget* parent) : constexpr double MATH_PI = 3.14159265;
QWidget(parent)
TimeZoneWidget::TimeZoneWidget( QWidget* parent ) :
QWidget( parent )
{ {
setMouseTracking(false); setMouseTracking( false );
setCursor(Qt::PointingHandCursor); setCursor( Qt::PointingHandCursor );
// Font // Font
font.setPointSize(12); font.setPointSize( 12 );
font.setBold(false); font.setBold( false );
// Images // Images
background = QImage(":/images/bg.png").scaled(X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); background = QImage( ":/images/bg.png" ).scaled( X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
pin = QImage(":/images/pin.png"); pin = QImage( ":/images/pin.png" );
// Set size // Set size
setMinimumSize(background.size()); setMinimumSize( background.size() );
setMaximumSize(background.size()); setMaximumSize( background.size() );
// Zone images // Zone images
QStringList zones = QString(ZONES).split(" ", QString::SkipEmptyParts); QStringList zones = QString( ZONES ).split( " ", QString::SkipEmptyParts );
for (int i = 0; i < zones.size(); ++i) for ( int i = 0; i < zones.size(); ++i )
timeZoneImages.append(QImage(":/images/timezone_" + zones.at(i) + ".png").scaled(X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); timeZoneImages.append( QImage( ":/images/timezone_" + zones.at( i ) + ".png" ).scaled( X_SIZE, Y_SIZE, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) );
} }
void TimeZoneWidget::setCurrentLocation(QString region, QString zone) { void TimeZoneWidget::setCurrentLocation( QString region, QString zone )
{
QHash<QString, QList<LocaleGlobal::Location> > hash = LocaleGlobal::getLocations(); QHash<QString, QList<LocaleGlobal::Location> > hash = LocaleGlobal::getLocations();
if (!hash.contains(region)) if ( !hash.contains( region ) )
return; return;
QList<LocaleGlobal::Location> locations = hash.value(region); QList<LocaleGlobal::Location> locations = hash.value( region );
for (int i = 0; i < locations.size(); ++i) { for ( int i = 0; i < locations.size(); ++i )
if (locations.at(i).zone == zone) { {
setCurrentLocation(locations.at(i)); if ( locations.at( i ).zone == zone )
{
setCurrentLocation( locations.at( i ) );
break; break;
} }
} }
} }
void TimeZoneWidget::setCurrentLocation( LocaleGlobal::Location location )
void TimeZoneWidget::setCurrentLocation(LocaleGlobal::Location location) { {
currentLocation = location; currentLocation = location;
// Set zone // Set zone
QPoint pos = getLocationPosition(currentLocation.longitude, currentLocation.latitude); QPoint pos = getLocationPosition( currentLocation.longitude, currentLocation.latitude );
for (int i = 0; i < timeZoneImages.size(); ++i) { for ( int i = 0; i < timeZoneImages.size(); ++i )
{
QImage zone = timeZoneImages[i]; QImage zone = timeZoneImages[i];
// If not transparent set as current // If not transparent set as current
if (zone.pixel(pos) != RGB_TRANSPARENT) { if ( zone.pixel( pos ) != RGB_TRANSPARENT )
{
currentZoneImage = zone; currentZoneImage = zone;
break; break;
} }
@ -91,74 +101,87 @@ void TimeZoneWidget::setCurrentLocation(LocaleGlobal::Location location) {
//### //###
QPoint TimeZoneWidget::getLocationPosition(double longitude, double latitude) { QPoint TimeZoneWidget::getLocationPosition( double longitude, double latitude )
{
const int width = this->width(); const int width = this->width();
const int height = this->height(); const int height = this->height();
double x = (width / 2.0 + (width / 2.0) * longitude / 180.0) + MAP_X_OFFSET * width; double x = ( width / 2.0 + ( width / 2.0 ) * longitude / 180.0 ) + MAP_X_OFFSET * width;
double y = (height / 2.0 - (height / 2.0) * latitude / 90.0) + MAP_Y_OFFSET * height; double y = ( height / 2.0 - ( height / 2.0 ) * latitude / 90.0 ) + MAP_Y_OFFSET * height;
if (x < 0) //Far north, the MAP_Y_OFFSET no longer holds, cancel the Y offset; it's noticeable
// from 62 degrees north, so scale those 28 degrees as if the world is flat south
// of there, and we have a funny "rounded" top of the world. In practice the locations
// of the different cities / regions looks ok -- at least Thule ends up in the right
// country, and Inuvik isn't in the ocean.
if ( latitude > 62.0 )
y -= sin( MATH_PI * ( latitude - 62.0 ) / 56.0 ) * MAP_Y_OFFSET * height;
// Antarctica isn't shown on the map, but you could try clicking there
if ( latitude < -60 )
y = height - 1;
if ( x < 0 )
x = width+x; x = width+x;
if (x >= width) if ( x >= width )
x -= width; x -= width;
if (y < 0) if ( y < 0 )
y = height+y; y = height+y;
if (y >= height) if ( y >= height )
y -= height; y -= height;
return QPoint( int(x), int(y) ); return QPoint( int(x), int(y) );
} }
void TimeZoneWidget::paintEvent( QPaintEvent* )
void TimeZoneWidget::paintEvent(QPaintEvent*) { {
const int width = this->width(); const int width = this->width();
const int height = this->height(); const int height = this->height();
QFontMetrics fontMetrics(font); QFontMetrics fontMetrics( font );
QPainter painter(this); QPainter painter( this );
painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHint( QPainter::Antialiasing );
painter.setFont(font); painter.setFont( font );
// Draw background // Draw background
painter.drawImage(0, 0, background); painter.drawImage( 0, 0, background );
// Draw zone image // Draw zone image
painter.drawImage(0, 0, currentZoneImage); painter.drawImage( 0, 0, currentZoneImage );
// Draw pin // Draw pin
QPoint point = getLocationPosition(currentLocation.longitude, currentLocation.latitude); QPoint point = getLocationPosition( currentLocation.longitude, currentLocation.latitude );
painter.drawImage(point.x() - pin.width()/2, point.y() - pin.height()/2, pin); painter.drawImage( point.x() - pin.width()/2, point.y() - pin.height()/2, pin );
// Draw text and box // Draw text and box
const int textWidth = fontMetrics.width(LocaleGlobal::Location::pretty(currentLocation.zone)); const int textWidth = fontMetrics.width( LocaleGlobal::Location::pretty( currentLocation.zone ) );
const int textHeight = fontMetrics.height(); const int textHeight = fontMetrics.height();
QRect rect = QRect(point.x() - textWidth/2 - 5, point.y() - textHeight - 8, textWidth + 10, textHeight - 2); QRect rect = QRect( point.x() - textWidth/2 - 5, point.y() - textHeight - 8, textWidth + 10, textHeight - 2 );
if (rect.x() <= 5) if ( rect.x() <= 5 )
rect.moveLeft(5); rect.moveLeft( 5 );
if (rect.right() >= width-5) if ( rect.right() >= width-5 )
rect.moveRight(width - 5); rect.moveRight( width - 5 );
if (rect.y() <= 5) if ( rect.y() <= 5 )
rect.moveTop(5); rect.moveTop( 5 );
if (rect.y() >= height-5) if ( rect.y() >= height-5 )
rect.moveBottom(height-5); rect.moveBottom( height-5 );
painter.setPen(QPen()); // no pen painter.setPen( QPen() ); // no pen
painter.setBrush(QColor(40, 40, 40)); painter.setBrush( QColor( 40, 40, 40 ) );
painter.drawRoundedRect(rect, 3, 3); painter.drawRoundedRect( rect, 3, 3 );
painter.setPen(Qt::white); painter.setPen( Qt::white );
painter.drawText(rect.x() + 5, rect.bottom() - 4, LocaleGlobal::Location::pretty(currentLocation.zone)); painter.drawText( rect.x() + 5, rect.bottom() - 4, LocaleGlobal::Location::pretty( currentLocation.zone ) );
painter.end(); painter.end();
} }
void TimeZoneWidget::mousePressEvent(QMouseEvent* event) { void TimeZoneWidget::mousePressEvent( QMouseEvent* event )
if (event->button() != Qt::LeftButton) {
if ( event->button() != Qt::LeftButton )
return; return;
// Set nearest location // Set nearest location
@ -167,14 +190,17 @@ void TimeZoneWidget::mousePressEvent(QMouseEvent* event) {
QHash<QString, QList<LocaleGlobal::Location> > hash = LocaleGlobal::getLocations(); QHash<QString, QList<LocaleGlobal::Location> > hash = LocaleGlobal::getLocations();
QHash<QString, QList<LocaleGlobal::Location> >::iterator iter = hash.begin(); QHash<QString, QList<LocaleGlobal::Location> >::iterator iter = hash.begin();
while (iter != hash.end()) { while ( iter != hash.end() )
{
QList<LocaleGlobal::Location> locations = iter.value(); QList<LocaleGlobal::Location> locations = iter.value();
for (int i = 0; i < locations.size(); ++i) { for ( int i = 0; i < locations.size(); ++i )
{
LocaleGlobal::Location loc = locations[i]; LocaleGlobal::Location loc = locations[i];
QPoint locPos = getLocationPosition(loc.longitude, loc.latitude); QPoint locPos = getLocationPosition( loc.longitude, loc.latitude );
if ((abs(mX - locPos.x()) + abs(mY - locPos.y()) < abs(mX - nX) + abs(mY - nY))) { if ( ( abs( mX - locPos.x() ) + abs( mY - locPos.y() ) < abs( mX - nX ) + abs( mY - nY ) ) )
{
currentLocation = loc; currentLocation = loc;
nX = locPos.x(); nX = locPos.x();
nY = locPos.y(); nY = locPos.y();
@ -185,8 +211,8 @@ void TimeZoneWidget::mousePressEvent(QMouseEvent* event) {
} }
// Set zone image and repaint widget // Set zone image and repaint widget
setCurrentLocation(currentLocation); setCurrentLocation( currentLocation );
// Emit signal // Emit signal
emit locationChanged(currentLocation); emit locationChanged( currentLocation );
} }

View File

@ -48,14 +48,17 @@ class TimeZoneWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit TimeZoneWidget(QWidget* parent = nullptr); explicit TimeZoneWidget( QWidget* parent = nullptr );
LocaleGlobal::Location getCurrentLocation() { return currentLocation; } LocaleGlobal::Location getCurrentLocation()
void setCurrentLocation(QString region, QString zone); {
void setCurrentLocation(LocaleGlobal::Location location); return currentLocation;
}
void setCurrentLocation( QString region, QString zone );
void setCurrentLocation( LocaleGlobal::Location location );
signals: signals:
void locationChanged(LocaleGlobal::Location location); void locationChanged( LocaleGlobal::Location location );
private: private:
QFont font; QFont font;
@ -63,10 +66,14 @@ private:
QList<QImage> timeZoneImages; QList<QImage> timeZoneImages;
LocaleGlobal::Location currentLocation; LocaleGlobal::Location currentLocation;
QPoint getLocationPosition(double longitude, double latitude); QPoint getLocationPosition( const LocaleGlobal::Location& l )
{
return getLocationPosition( l.longitude, l.latitude );
}
QPoint getLocationPosition( double longitude, double latitude );
void paintEvent(QPaintEvent* event); void paintEvent( QPaintEvent* event );
void mousePressEvent(QMouseEvent* event); void mousePressEvent( QMouseEvent* event );
}; };
#endif // TIMEZONEWIDGET_H #endif // TIMEZONEWIDGET_H

View File

@ -3,6 +3,7 @@
* Copyright 2016, Lisa Vitolo <shainer@chakraos.org> * Copyright 2016, Lisa Vitolo <shainer@chakraos.org>
* Copyright 2017, Kyle Robbertze <krobbertze@gmail.com> * Copyright 2017, Kyle Robbertze <krobbertze@gmail.com>
* Copyright 2017, Adriaan de Groot <groot@kde.org> * Copyright 2017, Adriaan de Groot <groot@kde.org>
* Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org>
* *
* Calamares is free software: you can redistribute it and/or modify * Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -56,14 +57,6 @@ NetInstallPage::NetInstallPage( QWidget* parent )
ui->setupUi( this ); ui->setupUi( this );
} }
bool
NetInstallPage::isReady()
{
// nothing to wait for, the data are immediately ready
// if the user does not select any group nothing is installed
return true;
}
bool bool
NetInstallPage::readGroups( const QByteArray& yamlData ) NetInstallPage::readGroups( const QByteArray& yamlData )
{ {
@ -77,7 +70,7 @@ NetInstallPage::readGroups( const QByteArray& yamlData )
m_groups = new PackageModel( groups ); m_groups = new PackageModel( groups );
CALAMARES_RETRANSLATE( CALAMARES_RETRANSLATE(
m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Name" ) ); m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Name" ) );
m_groups->setHeaderData( 0, Qt::Horizontal, tr( "Description" ) ); ) m_groups->setHeaderData( 1, Qt::Horizontal, tr( "Description" ) ); )
return true; return true;
} }
@ -91,18 +84,22 @@ NetInstallPage::readGroups( const QByteArray& yamlData )
void void
NetInstallPage::dataIsHere( QNetworkReply* reply ) NetInstallPage::dataIsHere( QNetworkReply* reply )
{ {
// If m_required is *false* then we still say we're ready
// even if the reply is corrupt or missing.
if ( reply->error() != QNetworkReply::NoError ) if ( reply->error() != QNetworkReply::NoError )
{ {
cDebug() << reply->errorString(); cDebug() << reply->errorString();
ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) ); ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) );
emit checkReady( !m_required );
return; return;
} }
if ( !readGroups( reply->readAll() ) ) if ( !readGroups( reply->readAll() ) )
{ {
cDebug() << "Netinstall groups data was received, but invalid."; cDebug() << "Netinstall groups data was received, but invalid.";
ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) ); ui->netinst_status->setText( tr( "Network Installation. (Disabled: Received invalid groups data)" ) );
reply->deleteLater(); reply->deleteLater();
emit checkReady( !m_required );
return; return;
} }
@ -111,15 +108,23 @@ NetInstallPage::dataIsHere( QNetworkReply* reply )
ui->groupswidget->header()->setSectionResizeMode( 1, QHeaderView::Stretch ); ui->groupswidget->header()->setSectionResizeMode( 1, QHeaderView::Stretch );
reply->deleteLater(); reply->deleteLater();
emit checkReady( isReady() ); emit checkReady( true );
} }
QList<PackageTreeItem::ItemData> NetInstallPage::selectedPackages() const PackageModel::PackageItemDataList
NetInstallPage::selectedPackages() const
{ {
return m_groups->getPackages(); if ( m_groups )
return m_groups->getPackages();
else
{
cDebug() << "WARNING: no netinstall groups are available.";
return PackageModel::PackageItemDataList();
}
} }
void NetInstallPage::loadGroupList() void
NetInstallPage::loadGroupList()
{ {
QString confUrl( QString confUrl(
Calamares::JobQueue::instance()->globalStorage()->value( Calamares::JobQueue::instance()->globalStorage()->value(
@ -138,7 +143,15 @@ void NetInstallPage::loadGroupList()
m_networkManager.get( request ); m_networkManager.get( request );
} }
void NetInstallPage::onActivate() void
NetInstallPage::setRequired( bool b )
{
m_required = b;
}
void
NetInstallPage::onActivate()
{ {
ui->groupswidget->setFocus(); ui->groupswidget->setFocus();
} }

View File

@ -46,17 +46,24 @@ public:
void onActivate(); void onActivate();
bool isReady();
// Retrieves the groups, with name, description and packages, from // Retrieves the groups, with name, description and packages, from
// the remote URL configured in the settings. Assumes the URL is already // the remote URL configured in the settings. Assumes the URL is already
// in the global storage. This should be called before displaying the page. // in the global storage. This should be called before displaying the page.
void loadGroupList(); void loadGroupList();
// Sets the "required" state of netinstall data. Influences whether
// corrupt or unavailable data causes checkReady() to be emitted
// true (not-required) or false.
void setRequired( bool );
bool getRequired() const
{
return m_required;
}
// Returns the list of packages belonging to groups that are // Returns the list of packages belonging to groups that are
// selected in the view in this given moment. No data is cached here, so // selected in the view in this given moment. No data is cached here, so
// this function does not have constant time. // this function does not have constant time.
QList<PackageTreeItem::ItemData> selectedPackages() const; PackageModel::PackageItemDataList selectedPackages() const;
public slots: public slots:
void dataIsHere( QNetworkReply* ); void dataIsHere( QNetworkReply* );
@ -76,6 +83,7 @@ private:
QNetworkAccessManager m_networkManager; QNetworkAccessManager m_networkManager;
PackageModel* m_groups; PackageModel* m_groups;
bool m_required;
}; };
#endif // NETINSTALLPAGE_H #endif // NETINSTALLPAGE_H

View File

@ -2,6 +2,7 @@
* Copyright 2016, Luca Giambonini <almack@chakraos.org> * Copyright 2016, Luca Giambonini <almack@chakraos.org>
* Copyright 2016, Lisa Vitolo <shainer@chakraos.org> * Copyright 2016, Lisa Vitolo <shainer@chakraos.org>
* Copyright 2017, Kyle Robbertze <krobbertze@gmail.com> * Copyright 2017, Kyle Robbertze <krobbertze@gmail.com>
* Copyright 2017, Adriaan de Groot <groot@kde.org>
* *
* Calamares is free software: you can redistribute it and/or modify * Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -30,11 +31,11 @@ CALAMARES_PLUGIN_FACTORY_DEFINITION( NetInstallViewStepFactory, registerPlugin<N
NetInstallViewStep::NetInstallViewStep( QObject* parent ) NetInstallViewStep::NetInstallViewStep( QObject* parent )
: Calamares::ViewStep( parent ) : Calamares::ViewStep( parent )
, m_widget( new NetInstallPage() ) , m_widget( new NetInstallPage() )
, m_nextEnabled( true ) , m_nextEnabled( false )
{ {
emit nextStatusChanged( true ); emit nextStatusChanged( true );
connect( m_widget, &NetInstallPage::checkReady, connect( m_widget, &NetInstallPage::checkReady,
this, &NetInstallViewStep::nextStatusChanged ); this, &NetInstallViewStep::nextIsReady );
} }
@ -126,18 +127,26 @@ NetInstallViewStep::onLeave()
cDebug() << "Leaving netinstall, adding packages to be installed" cDebug() << "Leaving netinstall, adding packages to be installed"
<< "to global storage"; << "to global storage";
QMap<QString, QVariant> packagesWithOperation; PackageModel::PackageItemDataList packages = m_widget->selectedPackages();
QList<PackageTreeItem::ItemData> packages = m_widget->selectedPackages();
QVariantList installPackages; QVariantList installPackages;
QVariantList tryInstallPackages; QVariantList tryInstallPackages;
cDebug() << "Processing"; QVariantList packageOperations;
cDebug() << "Processing" << packages.length() << "packages from netinstall.";
for ( auto package : packages ) for ( auto package : packages )
{ {
QMap<QString, QVariant> details; QVariant details( package.packageName );
details.insert( "pre-script", package.preScript ); // If it's a package with a pre- or post-script, replace
details.insert( "package", package.packageName ); // with the more complicated datastructure.
details.insert( "post-script", package.postScript ); if ( !package.preScript.isEmpty() || !package.postScript.isEmpty() )
{
QMap<QString, QVariant> sdetails;
sdetails.insert( "pre-script", package.preScript );
sdetails.insert( "package", package.packageName );
sdetails.insert( "post-script", package.postScript );
details = sdetails;
}
if ( package.isCritical ) if ( package.isCritical )
installPackages.append( details ); installPackages.append( details );
else else
@ -145,14 +154,24 @@ NetInstallViewStep::onLeave()
} }
if ( !installPackages.empty() ) if ( !installPackages.empty() )
packagesWithOperation.insert( "install", QVariant( installPackages ) ); {
QMap<QString, QVariant> op;
op.insert( "install", QVariant( installPackages ) );
packageOperations.append( op );
cDebug() << " .." << installPackages.length() << "critical packages.";
}
if ( !tryInstallPackages.empty() ) if ( !tryInstallPackages.empty() )
packagesWithOperation.insert( "try_install", QVariant( tryInstallPackages ) ); {
QMap<QString, QVariant> op;
op.insert( "try_install", QVariant( tryInstallPackages ) );
packageOperations.append( op );
cDebug() << " .." << tryInstallPackages.length() << "non-critical packages.";
}
if ( !packagesWithOperation.isEmpty() ) if ( !packageOperations.isEmpty() )
{ {
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage(); Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
gs->insert( "packageOperations", QVariant( packagesWithOperation ) ); gs->insert( "packageOperations", QVariant( packageOperations ) );
} }
} }
@ -160,6 +179,11 @@ NetInstallViewStep::onLeave()
void void
NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap ) NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap )
{ {
m_widget->setRequired(
configurationMap.contains( "required" ) &&
configurationMap.value( "required" ).type() == QVariant::Bool &&
configurationMap.value( "required" ).toBool() );
if ( configurationMap.contains( "groupsUrl" ) && if ( configurationMap.contains( "groupsUrl" ) &&
configurationMap.value( "groupsUrl" ).type() == QVariant::String ) configurationMap.value( "groupsUrl" ).type() == QVariant::String )
{ {
@ -168,3 +192,10 @@ NetInstallViewStep::setConfigurationMap( const QVariantMap& configurationMap )
m_widget->loadGroupList(); m_widget->loadGroupList();
} }
} }
void
NetInstallViewStep::nextIsReady( bool b )
{
m_nextEnabled = b;
emit nextStatusChanged( b );
}

View File

@ -60,6 +60,9 @@ public:
void setConfigurationMap( const QVariantMap& configurationMap ) override; void setConfigurationMap( const QVariantMap& configurationMap ) override;
public slots:
void nextIsReady( bool );
private: private:
NetInstallPage* m_widget; NetInstallPage* m_widget;
bool m_nextEnabled; bool m_nextEnabled;

View File

@ -1,3 +1,4 @@
/* === This file is part of Calamares - <http://github.com/calamares> === /* === This file is part of Calamares - <http://github.com/calamares> ===
* *
* Copyright (c) 2017, Kyle Robbertze <kyle@aims.ac.za> * Copyright (c) 2017, Kyle Robbertze <kyle@aims.ac.za>
@ -28,14 +29,13 @@
#include <yaml-cpp/yaml.h> #include <yaml-cpp/yaml.h>
// Required forward declarations
class PackageTreeItem;
class PackageModel : public QAbstractItemModel class PackageModel : public QAbstractItemModel
{ {
Q_OBJECT Q_OBJECT
public: public:
using PackageItemDataList = QList< PackageTreeItem::ItemData >;
explicit PackageModel( const YAML::Node& data, QObject* parent = nullptr ); explicit PackageModel( const YAML::Node& data, QObject* parent = nullptr );
~PackageModel() override; ~PackageModel() override;
@ -52,7 +52,7 @@ public:
QModelIndex parent( const QModelIndex& index ) const override; QModelIndex parent( const QModelIndex& index ) const override;
int rowCount( const QModelIndex& parent = QModelIndex() ) const override; int rowCount( const QModelIndex& parent = QModelIndex() ) const override;
int columnCount( const QModelIndex& parent = QModelIndex() ) const override; int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
QList<PackageTreeItem::ItemData> getPackages() const; PackageItemDataList getPackages() const;
QList<PackageTreeItem*> getItemPackages( PackageTreeItem* item ) const; QList<PackageTreeItem*> getItemPackages( PackageTreeItem* item ) const;
private: private:

View File

@ -6,6 +6,7 @@ At installation time, the user is presented with the choice to install groups of
Calamares will then invoke the correct backend to install the packages. Calamares will then invoke the correct backend to install the packages.
## Configuration of the packages ## Configuration of the packages
Every distribution can choose which groups to display and which packages should be in the groups. Every distribution can choose which groups to display and which packages should be in the groups.
The *netinstall.conf* file should have this format: The *netinstall.conf* file should have this format:
@ -48,7 +49,8 @@ If you set both *hidden* and *selected* for a group, you are basically creating
which will always be installed in the user's system. which will always be installed in the user's system.
## Configuration of the module ## Configuration of the module
Here is the set of instructions to have the module work in your Calamares. As of July 2016, this has been successfully
Here is the set of instructions to have the module work in your Calamares. As of July 2016, this has been successfully
tested using the live installation of Chakra Fermi. tested using the live installation of Chakra Fermi.
First, if the module is used, we need to require a working Internet connection, otherwise the module will be First, if the module is used, we need to require a working Internet connection, otherwise the module will be
@ -63,7 +65,8 @@ If not present, add the **packages** job in the **exec** list. This is the job t
to install packages. Make sure it is configured to use the correct package manager for your distribution; this to install packages. Make sure it is configured to use the correct package manager for your distribution; this
is configured in src/modules/packages/packages.conf. is configured in src/modules/packages/packages.conf.
The exec list should be: The **exec** list in *settings.conf* should contain the following items in
order (it's ok for other jobs to be listed inbetween them, though):
- unpackfs - unpackfs
- networkcfg - networkcfg
@ -74,10 +77,10 @@ structure; **networkcfg** set ups a working network in the chroot; and finally *
in the chroot. in the chroot.
## Common issues ## Common issues
If launching the package manager command returns you negative exit statuses and nothing is actually invoked, this If launching the package manager command returns you negative exit statuses and nothing is actually invoked, this
is likely an error in the setup of the chroot; check that the parameter **rootMountPoint** is set to the correct is likely an error in the setup of the chroot; check that the parameter **rootMountPoint** is set to the correct
value in the Calamares configuration. value in the Calamares configuration.
If the command is run, but exits with error, check that the network is working in the chroot. Make sure /etc/resolv.conf If the command is run, but exits with error, check that the network is working in the chroot. Make sure /etc/resolv.conf
exists and that it's not empty. exists and that it's not empty.

View File

@ -1,2 +1,13 @@
--- ---
# This is the URL that is retrieved to get the netinstall groups-and-packages
# data (which should be in the format described in netinstall.yaml).
groupsUrl: http://chakraos.org/netinstall.php groupsUrl: http://chakraos.org/netinstall.php
# If the installation can proceed without netinstall (e.g. the Live CD
# can create a working installed system, but netinstall is preferred
# to bring it up-to-date or extend functionality) leave this set to
# false (the default). If set to true, the netinstall data is required.
#
# This only has an effect if the netinstall data cannot be retrieved,
# or is corrupt: having "required" set, means the install cannot proceed.
required: false

View File

@ -344,10 +344,18 @@ def subst_locale(plist):
def run_operations(pkgman, entry): def run_operations(pkgman, entry):
""" """
Call package manager with given parameters. Call package manager with suitable parameters for the given
package actions.
:param pkgman: :param pkgman: PackageManager
:param entry: This is the manager that does the actual work.
:param entry: dict
Keys are the actions -- e.g. "install" -- to take, and the values
are the (list of) packages to apply the action to. The actions are
not iterated in a specific order, so it is recommended to use only
one action per dictionary. The list of packages may be package
names (strings) or package information dictionaries with pre-
and post-scripts.
""" """
global group_packages, completed_packages, mode_packages global group_packages, completed_packages, mode_packages

View File

@ -6,7 +6,7 @@ include(GenerateExportHeader)
find_package( Qt5 REQUIRED DBus ) find_package( Qt5 REQUIRED DBus )
find_package( KF5 REQUIRED Config CoreAddons I18n WidgetsAddons ) find_package( KF5 REQUIRED Config CoreAddons I18n WidgetsAddons )
find_package( KPMcore 3.2 REQUIRED ) find_package( KPMcore 3.3 REQUIRED )
include_directories( ${KPMCORE_INCLUDE_DIR} ) include_directories( ${KPMCORE_INCLUDE_DIR} )
include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
@ -43,7 +43,6 @@ calamares_add_plugin( partition
gui/PrettyRadioButton.cpp gui/PrettyRadioButton.cpp
gui/ScanningDialog.cpp gui/ScanningDialog.cpp
gui/ReplaceWidget.cpp gui/ReplaceWidget.cpp
jobs/CheckFileSystemJob.cpp
jobs/ClearMountsJob.cpp jobs/ClearMountsJob.cpp
jobs/ClearTempMountsJob.cpp jobs/ClearTempMountsJob.cpp
jobs/CreatePartitionJob.cpp jobs/CreatePartitionJob.cpp
@ -51,7 +50,6 @@ calamares_add_plugin( partition
jobs/DeletePartitionJob.cpp jobs/DeletePartitionJob.cpp
jobs/FillGlobalStorageJob.cpp jobs/FillGlobalStorageJob.cpp
jobs/FormatPartitionJob.cpp jobs/FormatPartitionJob.cpp
jobs/MoveFileSystemJob.cpp
jobs/PartitionJob.cpp jobs/PartitionJob.cpp
jobs/ResizePartitionJob.cpp jobs/ResizePartitionJob.cpp
jobs/SetPartitionFlagsJob.cpp jobs/SetPartitionFlagsJob.cpp

View File

@ -43,6 +43,8 @@
#include <QDir> #include <QDir>
#include <QListWidgetItem> #include <QListWidgetItem>
#include <QPushButton> #include <QPushButton>
#include <QRegularExpression>
#include <QRegularExpressionValidator>
#include <QSet> #include <QSet>
static QSet< FileSystem::Type > s_unmountableFS( static QSet< FileSystem::Type > s_unmountableFS(
@ -66,6 +68,19 @@ CreatePartitionDialog::CreatePartitionDialog( Device* device, PartitionNode* par
m_ui->encryptWidget->setText( tr( "En&crypt" ) ); m_ui->encryptWidget->setText( tr( "En&crypt" ) );
m_ui->encryptWidget->hide(); m_ui->encryptWidget->hide();
if (m_device->type() == Device::Disk_Device) {
m_ui->lvNameLabel->hide();
m_ui->lvNameLineEdit->hide();
}
if (m_device->type() == Device::LVM_Device) {
/* LVM logical volume name can consist of: letters numbers _ . - +
* It cannot start with underscore _ and must not be equal to . or .. or any entry in /dev/
* QLineEdit accepts QValidator::Intermediate, so we just disable . at the beginning */
QRegularExpression re(QStringLiteral(R"(^(?!_|\.)[\w\-.+]+)"));
QRegularExpressionValidator *validator = new QRegularExpressionValidator(re, this);
m_ui->lvNameLineEdit->setValidator(validator);
}
QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" }; QStringList mountPoints = { "/", "/boot", "/home", "/opt", "/usr", "/var" };
if ( PartUtils::isEfiSystem() ) if ( PartUtils::isEfiSystem() )
mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); mountPoints << Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString();
@ -227,6 +242,10 @@ CreatePartitionDialog::createPartition()
); );
} }
if (m_device->type() == Device::LVM_Device) {
partition->setPartitionPath(m_device->deviceNode() + QStringLiteral("/") + m_ui->lvNameLineEdit->text().trimmed());
}
PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() ); PartitionInfo::setMountPoint( partition, m_ui->mountPointComboBox->currentText() );
PartitionInfo::setFormat( partition, true ); PartitionInfo::setFormat( partition, true );

View File

@ -146,6 +146,16 @@
</spacer> </spacer>
</item> </item>
<item row="6" column="0"> <item row="6" column="0">
<widget class="QLabel" name="lvNameLabel">
<property name="text">
<string>LVM LV name</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lvNameLineEdit"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mountPointLabel"> <widget class="QLabel" name="mountPointLabel">
<property name="text"> <property name="text">
<string>&amp;Mount Point:</string> <string>&amp;Mount Point:</string>
@ -155,7 +165,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="7" column="1">
<widget class="QComboBox" name="mountPointComboBox"> <widget class="QComboBox" name="mountPointComboBox">
<property name="editable"> <property name="editable">
<bool>true</bool> <bool>true</bool>
@ -165,21 +175,21 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="1"> <item row="8" column="1">
<widget class="QLabel" name="labelMountPoint"> <widget class="QLabel" name="labelMountPoint">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0"> <item row="9" column="0">
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="label_3">
<property name="text"> <property name="text">
<string>Flags:</string> <string>Flags:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="1"> <item row="9" column="1">
<widget class="QListWidget" name="m_listFlags"> <widget class="QListWidget" name="m_listFlags">
<property name="alternatingRowColors"> <property name="alternatingRowColors">
<bool>true</bool> <bool>true</bool>
@ -192,7 +202,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="9" column="0"> <item row="10" column="0">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>

View File

@ -119,7 +119,7 @@ PartitionPage::~PartitionPage()
void void
PartitionPage::updateButtons() PartitionPage::updateButtons()
{ {
bool create = false, edit = false, del = false; bool create = false, createTable = false, edit = false, del = false;
QModelIndex index = m_ui->partitionTreeView->currentIndex(); QModelIndex index = m_ui->partitionTreeView->currentIndex();
if ( index.isValid() ) if ( index.isValid() )
@ -141,11 +141,18 @@ PartitionPage::updateButtons()
edit = !isFree && !isExtended; edit = !isFree && !isExtended;
del = !isFree; del = !isFree;
} }
if ( m_ui->deviceComboBox->currentIndex() >= 0 )
{
QModelIndex deviceIndex = m_core->deviceModel()->index( m_ui->deviceComboBox->currentIndex(), 0 );
if ( m_core->deviceModel()->deviceForIndex( deviceIndex )->type() != Device::LVM_Device )
createTable = true;
}
m_ui->createButton->setEnabled( create ); m_ui->createButton->setEnabled( create );
m_ui->editButton->setEnabled( edit ); m_ui->editButton->setEnabled( edit );
m_ui->deleteButton->setEnabled( del ); m_ui->deleteButton->setEnabled( del );
m_ui->newPartitionTableButton->setEnabled( createTable );
m_ui->newPartitionTableButton->setEnabled( m_ui->deviceComboBox->currentIndex() >= 0 );
} }
void void

View File

@ -1,83 +0,0 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2016, Teo Mrnjavac <teo@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include "jobs/CheckFileSystemJob.h"
#include <utils/Logger.h>
// KPMcore
#include <kpmcore/core/partition.h>
#include <kpmcore/fs/filesystem.h>
#include <kpmcore/util/report.h>
#include <QThread>
CheckFileSystemJob::CheckFileSystemJob( Partition* partition )
: PartitionJob( partition )
{}
QString
CheckFileSystemJob::prettyName() const
{
QString path = partition()->partitionPath();
return tr( "Checking file system on partition %1." ).arg( path );
}
QString
CheckFileSystemJob::prettyStatusMessage() const
{
return prettyName();
}
Calamares::JobResult
CheckFileSystemJob::exec()
{
FileSystem& fs = partition()->fileSystem();
// if we cannot check, assume everything is fine
if ( fs.supportCheck() != FileSystem::cmdSupportFileSystem )
return Calamares::JobResult::ok();
Report report( nullptr );
bool ok = fs.check( report, partition()->partitionPath() );
int retries = 0;
const int MAX_RETRIES = 10;
while ( !ok )
{
cDebug() << "Partition" << partition()->partitionPath()
<< "might not be ready yet, retrying (" << ++retries
<< "/" << MAX_RETRIES << ") ...";
QThread::sleep( 2 /*seconds*/ );
ok = fs.check( report, partition()->partitionPath() );
if ( retries == MAX_RETRIES )
break;
}
if ( !ok )
return Calamares::JobResult::error(
tr( "The file system check on partition %1 failed." )
.arg( partition()->partitionPath() ),
report.toText()
);
return Calamares::JobResult::ok();
}

View File

@ -1,38 +0,0 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CHECKFILESYSTEMJOB_H
#define CHECKFILESYSTEMJOB_H
#include <jobs/PartitionJob.h>
/**
* Runs a file system check on an existing partition.
*/
class CheckFileSystemJob : public PartitionJob
{
Q_OBJECT
public:
CheckFileSystemJob( Partition* partition );
QString prettyName() const override;
QString prettyStatusMessage() const override;
Calamares::JobResult exec() override;
};
#endif /* CHECKFILESYSTEMJOB_H */

View File

@ -24,15 +24,12 @@
#include "utils/Units.h" #include "utils/Units.h"
// KPMcore // KPMcore
#include <kpmcore/backend/corebackend.h>
#include <kpmcore/backend/corebackendmanager.h>
#include <kpmcore/backend/corebackenddevice.h>
#include <kpmcore/backend/corebackendpartition.h>
#include <kpmcore/backend/corebackendpartitiontable.h>
#include <kpmcore/core/device.h> #include <kpmcore/core/device.h>
#include <kpmcore/core/lvmdevice.h>
#include <kpmcore/core/partition.h> #include <kpmcore/core/partition.h>
#include <kpmcore/core/partitiontable.h> #include <kpmcore/core/partitiontable.h>
#include <kpmcore/fs/filesystem.h> #include <kpmcore/fs/filesystem.h>
#include <kpmcore/ops/newoperation.h>
#include <kpmcore/util/report.h> #include <kpmcore/util/report.h>
// Qt // Qt
@ -78,68 +75,15 @@ CreatePartitionJob::prettyStatusMessage() const
Calamares::JobResult Calamares::JobResult
CreatePartitionJob::exec() CreatePartitionJob::exec()
{ {
int step = 0;
const qreal stepCount = 4;
Report report( nullptr ); Report report( nullptr );
NewOperation op(*m_device, m_partition);
op.setStatus(Operation::StatusRunning);
QString message = tr( "The installer failed to create partition on disk '%1'." ).arg( m_device->name() ); QString message = tr( "The installer failed to create partition on disk '%1'." ).arg( m_device->name() );
if (op.execute(report))
progress( step++ / stepCount );
CoreBackend* backend = CoreBackendManager::self()->backend();
QScopedPointer<CoreBackendDevice> backendDevice( backend->openDevice( m_device->deviceNode() ) );
if ( !backendDevice.data() )
{
return Calamares::JobResult::error(
message,
tr( "Could not open device '%1'." ).arg( m_device->deviceNode() )
);
}
progress( step++ / stepCount );
QScopedPointer<CoreBackendPartitionTable> backendPartitionTable( backendDevice->openPartitionTable() );
if ( !backendPartitionTable.data() )
{
return Calamares::JobResult::error(
message,
tr( "Could not open partition table." )
);
}
progress( step++ / stepCount );
QString partitionPath = backendPartitionTable->createPartition( report, *m_partition );
if ( partitionPath.isEmpty() )
{
return Calamares::JobResult::error(
message,
report.toText()
);
}
m_partition->setPartitionPath( partitionPath );
backendPartitionTable->commit();
progress( step++ / stepCount );
FileSystem& fs = m_partition->fileSystem();
if ( fs.type() == FileSystem::Unformatted || fs.type() == FileSystem::Extended )
return Calamares::JobResult::ok(); return Calamares::JobResult::ok();
if ( !fs.create( report, partitionPath ) ) return Calamares::JobResult::error(message, report.toText());
{
return Calamares::JobResult::error(
tr( "The installer failed to create file system on partition %1." ).arg( partitionPath ),
report.toText()
);
}
if ( !backendPartitionTable->setPartitionSystemType( report, *m_partition ) )
{
return Calamares::JobResult::error(
tr( "The installer failed to update partition table on disk '%1'." ).arg( m_device->name() ),
report.toText()
);
}
backendPartitionTable->commit();
return Calamares::JobResult::ok();
} }
void void

View File

@ -26,7 +26,6 @@
#include <kpmcore/backend/corebackend.h> #include <kpmcore/backend/corebackend.h>
#include <kpmcore/backend/corebackendmanager.h> #include <kpmcore/backend/corebackendmanager.h>
#include <kpmcore/backend/corebackenddevice.h> #include <kpmcore/backend/corebackenddevice.h>
#include <kpmcore/backend/corebackendpartition.h>
#include <kpmcore/backend/corebackendpartitiontable.h> #include <kpmcore/backend/corebackendpartitiontable.h>
#include <kpmcore/core/device.h> #include <kpmcore/core/device.h>
#include <kpmcore/core/partition.h> #include <kpmcore/core/partition.h>

Some files were not shown because too many files have changed in this diff Show More