From 45ad84b548bbd7e53bdc107f86f4185bfd2ee93b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ChangZhuo=20Chen=20=28=E9=99=B3=E6=98=8C=E5=80=AC=29?= Date: Sun, 16 Aug 2015 05:54:46 +0800 Subject: [PATCH] Imported Upstream version 0.9.0+20150816 --- CMakeLists.txt | 33 +- cmake/LXQtTranslateDesktop.cmake | 107 ++ cmake/LXQtTranslateTs.cmake | 131 ++ cmake/Qt5PatchedLinguistToolsMacros.cmake | 112 ++ libfm-qt/CMakeLists.txt | 21 +- libfm-qt/appchoosercombobox.cpp | 21 +- libfm-qt/appchoosercombobox.h | 5 +- libfm-qt/applaunchcontext.cpp | 2 +- libfm-qt/appmenuview.h | 4 +- libfm-qt/appmenuview_p.h | 6 +- libfm-qt/bookmarkaction.h | 2 +- libfm-qt/browsehistory.h | 2 +- libfm-qt/cachedfoldermodel.h | 2 +- libfm-qt/colorbutton.h | 2 +- libfm-qt/createnewmenu.cpp | 90 ++ libfm-qt/createnewmenu.h | 51 + libfm-qt/dirtreemodel.h | 4 +- libfm-qt/dirtreemodelitem.cpp | 5 +- libfm-qt/dirtreemodelitem.h | 2 +- libfm-qt/dirtreeview.cpp | 92 +- libfm-qt/dirtreeview.h | 16 +- libfm-qt/dndactionmenu.h | 4 +- libfm-qt/editbookmarksdialog.cpp | 5 +- libfm-qt/editbookmarksdialog.h | 2 +- libfm-qt/file-props.ui | 42 +- libfm-qt/filelauncher.cpp | 14 +- libfm-qt/filelauncher.h | 13 +- libfm-qt/filemenu.cpp | 23 +- libfm-qt/filemenu.h | 50 +- libfm-qt/fileoperation.cpp | 5 +- libfm-qt/fileoperation.h | 6 +- libfm-qt/fileoperationdialog.h | 2 +- libfm-qt/filepropsdialog.cpp | 8 +- libfm-qt/filepropsdialog.h | 6 +- libfm-qt/folderitemdelegate.cpp | 10 +- libfm-qt/folderitemdelegate.h | 6 +- libfm-qt/foldermenu.cpp | 72 +- libfm-qt/foldermenu.h | 33 +- libfm-qt/foldermodel.cpp | 21 +- libfm-qt/foldermodelitem.cpp | 8 +- libfm-qt/foldermodelitem.h | 8 +- libfm-qt/folderview.cpp | 50 +- libfm-qt/folderview.h | 10 +- libfm-qt/folderview_p.h | 6 +- libfm-qt/fontbutton.h | 6 +- libfm-qt/icontheme.h | 4 +- libfm-qt/libfmqt.cpp | 3 +- libfm-qt/mountoperation.cpp | 2 +- libfm-qt/mountoperation.h | 10 +- libfm-qt/mountoperationpassworddialog.cpp | 2 +- libfm-qt/mountoperationpassworddialog_p.h | 4 +- libfm-qt/mountoperationquestiondialog_p.h | 2 +- libfm-qt/path.h | 8 +- libfm-qt/placesmodel.cpp | 10 +- libfm-qt/placesmodel.h | 10 +- libfm-qt/placesmodelitem.cpp | 10 +- libfm-qt/placesview.cpp | 89 +- libfm-qt/placesview.h | 11 +- libfm-qt/proxyfoldermodel.cpp | 15 +- libfm-qt/proxyfoldermodel.h | 2 - libfm-qt/renamedialog.cpp | 2 +- libfm-qt/renamedialog.h | 2 +- libfm-qt/sidepane.cpp | 34 +- libfm-qt/sidepane.h | 16 +- libfm-qt/thumbnailloader.cpp | 5 +- libfm-qt/thumbnailloader.h | 4 +- .../{libfm-qt_template.ts => libfm-qt.ts} | 229 ++-- libfm-qt/translations/libfm-qt_ar.ts | 165 +-- libfm-qt/translations/libfm-qt_cs_CZ.ts | 173 +-- libfm-qt/translations/libfm-qt_de.ts | 175 +-- libfm-qt/translations/libfm-qt_es.ts | 173 +-- libfm-qt/translations/libfm-qt_fr.ts | 173 +-- libfm-qt/translations/libfm-qt_gl.ts | 173 +-- libfm-qt/translations/libfm-qt_hu.ts | 1065 ++++++++++++++++ libfm-qt/translations/libfm-qt_it.ts | 173 +-- libfm-qt/translations/libfm-qt_ja.ts | 173 +-- libfm-qt/translations/libfm-qt_lt_LT.ts | 238 +++- libfm-qt/translations/libfm-qt_pl.ts | 1064 ++++++++++++++++ libfm-qt/translations/libfm-qt_pt.ts | 175 +-- libfm-qt/translations/libfm-qt_ru.ts | 173 +-- libfm-qt/translations/libfm-qt_ru_RU.ts | 173 +-- libfm-qt/translations/libfm-qt_zh_TW.ts | 173 +-- libfm-qt/utilities.cpp | 32 +- libfm-qt/utilities.h | 6 +- libfm-qt/utilities_p.h | 2 +- pcmanfm/CMakeLists.txt | 31 +- pcmanfm/application.cpp | 71 +- pcmanfm/application.h | 5 +- pcmanfm/autorundialog.h | 2 +- pcmanfm/desktopitemdelegate.cpp | 8 +- pcmanfm/desktoppreferencesdialog.cpp | 54 +- pcmanfm/desktopwindow.cpp | 10 +- pcmanfm/launcher.cpp | 2 + pcmanfm/launcher.h | 2 +- pcmanfm/main-win.ui | 31 + pcmanfm/mainwindow.cpp | 128 +- pcmanfm/mainwindow.h | 7 + pcmanfm/org.pcmanfm.Application.xml | 1 + pcmanfm/pcmanfm.cpp | 4 + pcmanfm/preferences.ui | 534 +++++--- pcmanfm/preferencesdialog.cpp | 112 +- pcmanfm/preferencesdialog.h | 4 +- pcmanfm/settings.cpp | 101 +- pcmanfm/settings.h | 118 +- pcmanfm/tabpage.cpp | 13 +- pcmanfm/tabpage.h | 10 +- .../pcmanfm-qt-desktop-pref_de.desktop | 4 + .../pcmanfm-qt-desktop-pref_hu.desktop | 4 + .../pcmanfm-qt-desktop-pref_pl.desktop | 4 + .../{pcmanfm-qt_template.ts => pcmanfm-qt.ts} | 443 ++++--- pcmanfm/translations/pcmanfm-qt_ar.ts | 321 ++--- pcmanfm/translations/pcmanfm-qt_cs_CZ.ts | 321 ++--- pcmanfm/translations/pcmanfm-qt_de.desktop | 4 + pcmanfm/translations/pcmanfm-qt_de.ts | 337 ++--- pcmanfm/translations/pcmanfm-qt_es.ts | 329 ++--- pcmanfm/translations/pcmanfm-qt_fr.ts | 321 ++--- pcmanfm/translations/pcmanfm-qt_gl.ts | 321 ++--- pcmanfm/translations/pcmanfm-qt_hu.desktop | 4 + pcmanfm/translations/pcmanfm-qt_hu.ts | 1114 ++++++++++++++++ pcmanfm/translations/pcmanfm-qt_it.ts | 355 +++--- pcmanfm/translations/pcmanfm-qt_ja.ts | 329 ++--- pcmanfm/translations/pcmanfm-qt_lt_LT.ts | 252 +++- pcmanfm/translations/pcmanfm-qt_pl.desktop | 4 + pcmanfm/translations/pcmanfm-qt_pl.ts | 1119 +++++++++++++++++ pcmanfm/translations/pcmanfm-qt_pt.ts | 329 ++--- pcmanfm/translations/pcmanfm-qt_ru.ts | 670 ++++++---- pcmanfm/translations/pcmanfm-qt_ru_RU.ts | 670 ++++++---- pcmanfm/translations/pcmanfm-qt_zh_TW.ts | 321 ++--- pcmanfm/view.cpp | 5 +- pcmanfm/view.h | 8 +- pcmanfm/xdgdir.cpp | 72 ++ pcmanfm/xdgdir.h | 33 + 132 files changed, 11216 insertions(+), 3799 deletions(-) create mode 100644 cmake/LXQtTranslateDesktop.cmake create mode 100644 cmake/LXQtTranslateTs.cmake create mode 100644 cmake/Qt5PatchedLinguistToolsMacros.cmake create mode 100644 libfm-qt/createnewmenu.cpp create mode 100644 libfm-qt/createnewmenu.h rename libfm-qt/translations/{libfm-qt_template.ts => libfm-qt.ts} (87%) create mode 100644 libfm-qt/translations/libfm-qt_hu.ts create mode 100644 libfm-qt/translations/libfm-qt_pl.ts create mode 100644 pcmanfm/translations/pcmanfm-qt-desktop-pref_de.desktop create mode 100644 pcmanfm/translations/pcmanfm-qt-desktop-pref_hu.desktop create mode 100644 pcmanfm/translations/pcmanfm-qt-desktop-pref_pl.desktop rename pcmanfm/translations/{pcmanfm-qt_template.ts => pcmanfm-qt.ts} (94%) create mode 100644 pcmanfm/translations/pcmanfm-qt_de.desktop create mode 100644 pcmanfm/translations/pcmanfm-qt_hu.desktop create mode 100644 pcmanfm/translations/pcmanfm-qt_hu.ts create mode 100644 pcmanfm/translations/pcmanfm-qt_pl.desktop create mode 100644 pcmanfm/translations/pcmanfm-qt_pl.ts create mode 100644 pcmanfm/xdgdir.cpp create mode 100644 pcmanfm/xdgdir.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 170b9ce..9a77ae7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,18 @@ cmake_minimum_required(VERSION 2.8.11) project(pcmanfm-qt) -set(PCMANFM_QT_VERSION "0.9.0") -set(LIBFM_QT_VERSION "0.9.0") +set(PCMANFM_QT_VERSION_MAJOR 0) +set(PCMANFM_QT_VERSION_MINOR 9) +set(PCMANFM_QT_VERSION_PATCH 0) +set(PCMANFM_QT_VERSION ${PCMANFM_QT_VERSION_MAJOR}.${PCMANFM_QT_VERSION_MINOR}.${PCMANFM_QT_VERSION_PATCH}) + +set(LIBFM_QT_VERSION_MAJOR 0) +set(LIBFM_QT_VERSION_MINOR 9) +set(LIBFM_QT_VERSION_PATCH 0) +set(LIBFM_QT_VERSION ${LIBFM_QT_VERSION_MAJOR}.${LIBFM_QT_VERSION_MINOR}.${LIBFM_QT_VERSION_PATCH}) + +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") + # We use the libtool versioning scheme for the internal so name, "current:revision:age" # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info # https://www.sourceware.org/autobook/autobook/autobook_91.html @@ -14,10 +24,6 @@ set(LIBFM_QT_VERSION "0.9.0") set(LIBFM_QT_LIB_VERSION "2.0.0") set(LIBFM_QT_LIB_SOVERSION "2") -# Set default installation paths -set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "Installation path for libraries") -set(INCLUDE_INSTALL_DIR include CACHE PATH "Installation path for includes") - find_package(Qt5Widgets 5.2 REQUIRED) find_package(Qt5DBus 5.2 REQUIRED) find_package(Qt5LinguistTools 5.2 REQUIRED) @@ -34,7 +40,10 @@ pkg_check_modules(SYSTEM_LIBS REQUIRED pkg_check_modules(LIBFM REQUIRED libfm>=1.2.0) pkg_check_modules(LIBMENUCACHE REQUIRED libmenu-cache>=0.4.0) +option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) include(GNUInstallDirs) +include(LXQtTranslateTs) +include(LXQtTranslateDesktop) add_definitions(-DQT_NO_KEYWORDS) @@ -49,12 +58,6 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) add_subdirectory(libfm-qt) add_subdirectory(pcmanfm) -# update translations -add_custom_target(update_translations ALL DEPENDS - libfm_translations - pcmanfm_translations -) - # manpage for pcmanfm-qt configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/pcmanfm-qt.1.in" @@ -89,9 +92,9 @@ include(InstallRequiredSystemLibraries) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README") set(CPACK_PACKAGE_VENDOR "") -set(CPACK_PACKAGE_VERSION_MAJOR "0") -set(CPACK_PACKAGE_VERSION_MINOR "8") -set(CPACK_PACKAGE_VERSION_PATCH "0") +set(CPACK_PACKAGE_VERSION_MAJOR ${PCMANFM_QT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${PCMANFM_QT_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${PCMANFM_QT_VERSION_PATCH}) set(CPACK_GENERATOR TBZ2) set(CPACK_SOURCE_GENERATOR TBZ2) set(CPACK_SOURCE_IGNORE_FILES /build/;.gitignore;.*~;.git;.kdev4;temp) diff --git a/cmake/LXQtTranslateDesktop.cmake b/cmake/LXQtTranslateDesktop.cmake new file mode 100644 index 0000000..522ed68 --- /dev/null +++ b/cmake/LXQtTranslateDesktop.cmake @@ -0,0 +1,107 @@ +#============================================================================= +# The lxqt_translate_desktop() function was copied from the the +# LXQt LxQtTranste.cmake +# +# Original Author: Alexander Sokolov +# +# funtion lxqt_translate_desktop(_RESULT +# SOURCES +# [TRANSLATION_DIR] translation_directory +# ) +# Output: +# _RESULT The generated .desktop (.desktop) files +# +# Input: +# +# SOURCES List of input desktop files (.destktop.in) to be translated +# (merged), relative to the CMakeList.txt. +# +# TRANSLATION_DIR Optional path to the directory with the .ts files, +# relative to the CMakeList.txt. Defaults to +# "translations". +# +#============================================================================= + +function(lxqt_translate_desktop _RESULT) + # Parse arguments *************************************** + set(oneValueArgs TRANSLATION_DIR) + set(multiValueArgs SOURCES) + + cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + # check for unknown arguments + set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS}) + if (NOT ${_UNPARSED_ARGS} STREQUAL "") + MESSAGE(FATAL_ERROR + "Unknown arguments '${_UNPARSED_ARGS}'.\n" + "See lxqt_translate_desktop() documenation for more information.\n" + ) + endif() + + if (NOT DEFINED _ARGS_SOURCES) + set(${_RESULT} "" PARENT_SCOPE) + return() + else() + set(_sources ${_ARGS_SOURCES}) + endif() + + if (NOT DEFINED _ARGS_TRANSLATION_DIR) + set(_translationDir "translations") + else() + set(_translationDir ${_ARGS_TRANSLATION_DIR}) + endif() + + + get_filename_component (_translationDir ${_translationDir} ABSOLUTE) + + foreach (_inFile ${_sources}) + get_filename_component(_inFile ${_inFile} ABSOLUTE) + get_filename_component(_fileName ${_inFile} NAME_WE) + #Extract the real extension ............ + get_filename_component(_fileExt ${_inFile} EXT) + string(REPLACE ".in" "" _fileExt ${_fileExt}) + #....................................... + set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}${_fileExt}") + + file(GLOB _translations + ${_translationDir}/${_fileName}_*${_fileExt} + ${_translationDir}/local/${_fileName}_*${_fileExt} + ) + + set(_pattern "'\\[.*]\\s*='") + if (_translations) + add_custom_command(OUTPUT ${_outFile} + COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} + COMMAND grep -h ${_pattern} ${_translations} >> ${_outFile} + COMMENT "Generating ${_fileName}${_fileExt}" + ) + else() + add_custom_command(OUTPUT ${_outFile} + COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} + COMMENT "Generating ${_fileName}${_fileExt}" + ) + endif() + + set(__result ${__result} ${_outFile}) + + + # TX file *********************************************** + set(_txFile "${CMAKE_BINARY_DIR}/tx/${_fileName}${_fileExt}.tx.sh") + string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_translationDir ${_translationDir}) + string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_inFile ${_inFile}) + string(REPLACE "." "" _fileType ${_fileExt}) + + file(WRITE ${_txFile} + "[ -f ${_inFile} ] || exit 0\n" + "echo '[lxde-qt.${_fileName}_${_fileType}]'\n" + "echo 'type = DESKTOP'\n" + "echo 'source_lang = en'\n" + "echo 'source_file = ${_tx_inFile}'\n" + "echo 'file_filter = ${_tx_translationDir}/${_fileName}_${_fileExt}'\n" + "echo ''\n" + ) + + endforeach() + + set(${_RESULT} ${__result} PARENT_SCOPE) +endfunction(lxqt_translate_desktop) diff --git a/cmake/LXQtTranslateTs.cmake b/cmake/LXQtTranslateTs.cmake new file mode 100644 index 0000000..5998830 --- /dev/null +++ b/cmake/LXQtTranslateTs.cmake @@ -0,0 +1,131 @@ +#============================================================================= +# Copyright 2014 Luís Pereira +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#============================================================================= +# +# funtion lxqt_translate_ts(qmFiles +# [USE_QT5 [Yes | No]] +# [UPDATE_TRANSLATIONS [Yes | No]] +# SOURCES +# [TEMPLATE] translation_template +# [TRANSLATION_DIR] translation_directory +# [INSTALL_DIR] install_directory +# ) +# Output: +# qmFiles The generated compiled translations (.qm) files +# +# Input: +# USE_QT5 Optional flag to choose between Qt4 and Qt5. Defaults to Qt5 +# +# UPDATE_TRANSLATIONS Optional flag. Setting it to Yes, extracts and +# compiles the translations. Setting it No, only +# compiles them. +# +# TEMPLATE Optional translations files base name. Defaults to +# ${PROJECT_NAME}. An .ts extensions is added. +# +# TRANSLATION_DIR Optional path to the directory with the .ts files, +# relative to the CMakeList.txt. Defaults to +# "translations". +# +# INSTALL_DIR Optional destination of the file compiled files (qmFiles). +# If not present no installation is performed + + + +# CMake v2.8.3 needed to use the CMakeParseArguments module +cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR) + +# We use our patched version to round a annoying bug. +include(Qt5PatchedLinguistToolsMacros) + +function(lxqt_translate_ts qmFiles) + set(oneValueArgs USE_QT5 UPDATE_TRANSLATIONS TEMPLATE TRANSLATION_DIR INSTALL_DIR) + set(multiValueArgs SOURCES) + cmake_parse_arguments(TR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if (NOT DEFINED TR_UPDATE_TRANSLATIONS) + set(TR_UPDATE_TRANSLATIONS "No") + endif() + + if (NOT DEFINED TR_USE_QT5) + set(TR_USE_QT5 "Yes") + endif() + + if(NOT DEFINED TR_TEMPLATE) + set(TR_TEMPLATE "${PROJECT_NAME}") + endif() + + if (NOT DEFINED TR_TRANSLATION_DIR) + set(TR_TRANSLATION_DIR "translations") + endif() + + file(GLOB tsFiles "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}_*.ts") + set(templateFile "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}.ts") + + if(TR_USE_QT5) + # Qt5 + if (TR_UPDATE_TRANSLATIONS) + qt5_patched_create_translation(QMS + ${TR_SOURCES} + ${templateFile} + OPTIONS -locations absolute + ) + qt5_patched_create_translation(QM + ${TR_SOURCES} + ${tsFiles} + OPTIONS -locations absolute + ) + else() + qt5_patched_add_translation(QM ${tsFiles}) + endif() + else() + # Qt4 + if(TR_UPDATE_TRANSLATIONS) + qt4_create_translation(QMS + ${TR_SOURCES} + ${templateFile} + OPTIONS -locations absolute + ) + qt4_create_translation(QM + ${TR_SOURCES} + ${tsFiles} + OPTIONS -locations absolute + ) + else() + qt4_add_translation(QM ${tsFiles}) + endif() + endif() + + if(TR_UPDATE_TRANSLATIONS) + add_custom_target("update_${TR_TEMPLATE}_ts" ALL DEPENDS ${QMS}) + endif() + + if(DEFINED TR_INSTALL_DIR) + install(FILES ${QM} DESTINATION ${TR_INSTALL_DIR}) + endif() + + set(${qmFiles} ${QM} PARENT_SCOPE) +endfunction() diff --git a/cmake/Qt5PatchedLinguistToolsMacros.cmake b/cmake/Qt5PatchedLinguistToolsMacros.cmake new file mode 100644 index 0000000..e5c2f5c --- /dev/null +++ b/cmake/Qt5PatchedLinguistToolsMacros.cmake @@ -0,0 +1,112 @@ +#============================================================================= +# Copyright 2005-2011 Kitware, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Kitware, Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#============================================================================= + +include(CMakeParseArguments) + +function(QT5_PATCHED_CREATE_TRANSLATION _qm_files) + set(options) + set(oneValueArgs) + set(multiValueArgs OPTIONS) + + cmake_parse_arguments(_LUPDATE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + set(_lupdate_files ${_LUPDATE_UNPARSED_ARGUMENTS}) + set(_lupdate_options ${_LUPDATE_OPTIONS}) + + set(_my_sources) + set(_my_tsfiles) + foreach(_file ${_lupdate_files}) + get_filename_component(_ext ${_file} EXT) + get_filename_component(_abs_FILE ${_file} ABSOLUTE) + if(_ext MATCHES "ts") + list(APPEND _my_tsfiles ${_abs_FILE}) + else() + list(APPEND _my_sources ${_abs_FILE}) + endif() + endforeach() + foreach(_ts_file ${_my_tsfiles}) + if(_my_sources) + # make a list file to call lupdate on, so we don't make our commands too + # long for some systems +# get_filename_component(_ts_name ${_ts_file} NAME_WE) + + get_filename_component(_name ${_ts_file} NAME) + string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _ts_name ${_name}) + + set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file") + set(_lst_file_srcs) + foreach(_lst_file_src ${_my_sources}) + set(_lst_file_srcs "${_lst_file_src}\n${_lst_file_srcs}") + endforeach() + + get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES) + foreach(_pro_include ${_inc_DIRS}) + get_filename_component(_abs_include "${_pro_include}" ABSOLUTE) + set(_lst_file_srcs "-I${_pro_include}\n${_lst_file_srcs}") + endforeach() + + file(WRITE ${_ts_lst_file} "${_lst_file_srcs}") + endif() + add_custom_command(OUTPUT ${_ts_file} + COMMAND ${Qt5_LUPDATE_EXECUTABLE} + ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file} + DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM) + endforeach() + qt5_patched_add_translation(${_qm_files} ${_my_tsfiles}) + set(${_qm_files} ${${_qm_files}} PARENT_SCOPE) +endfunction() + + +function(QT5_PATCHED_ADD_TRANSLATION _qm_files) + foreach(_current_FILE ${ARGN}) + get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE) +# get_filename_component(qm ${_abs_FILE} NAME_WE) + + get_filename_component(_name ${_abs_FILE} NAME) + string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" qm ${_name}) + + get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION) + if(output_location) + file(MAKE_DIRECTORY "${output_location}") + set(qm "${output_location}/${qm}.qm") + else() + set(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm") + endif() + + add_custom_command(OUTPUT ${qm} + COMMAND ${Qt5_LRELEASE_EXECUTABLE} + ARGS ${_abs_FILE} -qm ${qm} + DEPENDS ${_abs_FILE} VERBATIM + ) + list(APPEND ${_qm_files} ${qm}) + endforeach() + set(${_qm_files} ${${_qm_files}} PARENT_SCOPE) +endfunction() diff --git a/libfm-qt/CMakeLists.txt b/libfm-qt/CMakeLists.txt index 163a2ef..84c8049 100644 --- a/libfm-qt/CMakeLists.txt +++ b/libfm-qt/CMakeLists.txt @@ -3,6 +3,7 @@ project(fm-qt) set(LIBRARY_NAME "fm-qt5") set(QTX_INCLUDE_DIRS "") set(QTX_LIBRARIES Qt5::Widgets Qt5::X11Extras) +set(libfm_TRANSLATION_TEMPLATE "lib${PROJECT_NAME}") include_directories( ${QTX_INCLUDE_DIRS} @@ -31,6 +32,7 @@ set(libfm_SRCS proxyfoldermodel.cpp folderview.cpp folderitemdelegate.cpp + createnewmenu.cpp filemenu.cpp foldermenu.cpp filepropsdialog.cpp @@ -75,9 +77,17 @@ set(libfm_UIS qt5_wrap_ui(libfm_UIS_H ${libfm_UIS}) +# add translation for libfm-qt +lxqt_translate_ts(QM_FILES + UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS} + SOURCES ${libfm_SRCS} ${libfm_UIS} + TEMPLATE ${libfm_TRANSLATION_TEMPLATE} +) + add_library(${LIBRARY_NAME} SHARED ${libfm_SRCS} ${libfm_UIS_H} + ${QM_FILES} ) set_property( @@ -131,17 +141,6 @@ else() install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${LIBRARY_NAME}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") endif() -# add translation for pcmanfm-qt -# See http://www.cmake.org/Wiki/CMake:How_To_Build_Qt4_Software -option (UPDATE_TRANSLATIONS "Update source translation translations/*.ts files") -file(GLOB TS_FILES translations/*.ts) -if(UPDATE_TRANSLATIONS) - qt5_create_translation(QM_FILES ${libfm_SRCS} ${libfm_UIS} ${TS_FILES}) -else() - qt5_add_translation(QM_FILES ${TS_FILES}) -endif() - -add_custom_target(libfm_translations DEPENDS ${QM_FILES}) install(FILES ${QM_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/libfm-qt/translations") # prevent the generated files from being deleted during make cleaner diff --git a/libfm-qt/appchoosercombobox.cpp b/libfm-qt/appchoosercombobox.cpp index aaf476f..9d537e7 100644 --- a/libfm-qt/appchoosercombobox.cpp +++ b/libfm-qt/appchoosercombobox.cpp @@ -29,9 +29,10 @@ AppChooserComboBox::AppChooserComboBox(QWidget* parent): QComboBox(parent), defaultApp_(NULL), appInfos_(NULL), - defaultAppIndex_(0), + defaultAppIndex_(-1), prevIndex_(0), - mimeType_(NULL) { + mimeType_(NULL), + blockOnCurrentIndexChanged_(false) { // the new Qt5 signal/slot syntax cannot handle overloaded methods by default // hence a type-casting is needed here. really ugly! @@ -69,14 +70,15 @@ void AppChooserComboBox::setMimeType(FmMimeType* mimeType) { // QVariant data = qVariantFromValue(app); // addItem(IconTheme::icon(gicon), name, data); addItem(IconTheme::icon(gicon), name); - if(app == defaultApp_) + if(g_app_info_equal(app, defaultApp_)) defaultAppIndex_ = i; } - setCurrentIndex(defaultAppIndex_); } // add "Other applications" item insertSeparator(count()); addItem(tr("Customize")); + if(defaultAppIndex_ != -1) + setCurrentIndex(defaultAppIndex_); } // returns the currently selected app. @@ -89,7 +91,7 @@ bool AppChooserComboBox::isChanged() { } void AppChooserComboBox::onCurrentIndexChanged(int index) { - if(index == -1 || index == prevIndex_) + if(index == -1 || index == prevIndex_ || blockOnCurrentIndexChanged_) return; // the last item is "Customize" @@ -108,6 +110,10 @@ void AppChooserComboBox::onCurrentIndexChanged(int index) { if(g_app_info_equal(app, G_APP_INFO(found->data))) break; } + + // inserting new items or change current index will recursively trigger onCurrentIndexChanged. + // we need to block our handler to prevent recursive calls. + blockOnCurrentIndexChanged_ = true; /* if it's already in the list, select it */ if(found) { setCurrentIndex(g_list_position(appInfos_, found)); @@ -120,11 +126,16 @@ void AppChooserComboBox::onCurrentIndexChanged(int index) { insertItem(0, IconTheme::icon(gicon), name); setCurrentIndex(0); } + blockOnCurrentIndexChanged_ = false; return; } } + + // block our handler to prevent recursive calls. + blockOnCurrentIndexChanged_ = true; // restore to previously selected item setCurrentIndex(prevIndex_); + blockOnCurrentIndexChanged_ = false; } else { prevIndex_ = index; diff --git a/libfm-qt/appchoosercombobox.h b/libfm-qt/appchoosercombobox.h index d231059..d14640e 100644 --- a/libfm-qt/appchoosercombobox.h +++ b/libfm-qt/appchoosercombobox.h @@ -46,13 +46,14 @@ public: private Q_SLOTS: void onCurrentIndexChanged(int index); - + private: FmMimeType* mimeType_; GList* appInfos_; // applications used to open the file type - GAppInfo* defaultApp_; // default application used to open the file type + GAppInfo* defaultApp_; // default application used to open the file type int defaultAppIndex_; int prevIndex_; + bool blockOnCurrentIndexChanged_; }; } diff --git a/libfm-qt/applaunchcontext.cpp b/libfm-qt/applaunchcontext.cpp index 4132753..a70c1fd 100644 --- a/libfm-qt/applaunchcontext.cpp +++ b/libfm-qt/applaunchcontext.cpp @@ -23,7 +23,7 @@ #include typedef struct _FmAppLaunchContext { - GAppLaunchContext parent; + GAppLaunchContext parent; }FmAppLaunchContext; G_DEFINE_TYPE(FmAppLaunchContext, fm_app_launch_context, G_TYPE_APP_LAUNCH_CONTEXT) diff --git a/libfm-qt/appmenuview.h b/libfm-qt/appmenuview.h index 72b837b..e41f646 100644 --- a/libfm-qt/appmenuview.h +++ b/libfm-qt/appmenuview.h @@ -30,7 +30,7 @@ class QStandardItemModel; class QStandardItem; namespace Fm { - + class AppMenuViewItem; class LIBFM_QT_API AppMenuView : public QTreeView { @@ -51,7 +51,7 @@ public: Q_SIGNALS: void selectionChanged(); - + private: void addMenuItems(QStandardItem* parentItem, MenuCacheDir* dir); void onMenuCacheReload(MenuCache* mc); diff --git a/libfm-qt/appmenuview_p.h b/libfm-qt/appmenuview_p.h index a09ecc8..cc549ca 100644 --- a/libfm-qt/appmenuview_p.h +++ b/libfm-qt/appmenuview_p.h @@ -48,15 +48,15 @@ public: ~AppMenuViewItem() { menu_cache_item_unref(item_); } - + MenuCacheItem* item() { return item_; } - + MenuCacheType type() { return menu_cache_item_get_type(item_); } - + bool isApp() { return type() == MENU_CACHE_TYPE_APP; } diff --git a/libfm-qt/bookmarkaction.h b/libfm-qt/bookmarkaction.h index 8bc55a1..f707a4e 100644 --- a/libfm-qt/bookmarkaction.h +++ b/libfm-qt/bookmarkaction.h @@ -40,7 +40,7 @@ public: FmBookmarkItem* bookmark() { return item_; } - + FmPath* path() { return item_->path; } diff --git a/libfm-qt/browsehistory.h b/libfm-qt/browsehistory.h index 28f0224..9dfb646 100644 --- a/libfm-qt/browsehistory.h +++ b/libfm-qt/browsehistory.h @@ -61,7 +61,7 @@ public: scrollPos_ = other.scrollPos_; return *this; } - + FmPath* path() const { return path_; } diff --git a/libfm-qt/cachedfoldermodel.h b/libfm-qt/cachedfoldermodel.h index 8cab66b..051c352 100644 --- a/libfm-qt/cachedfoldermodel.h +++ b/libfm-qt/cachedfoldermodel.h @@ -25,7 +25,7 @@ #include "foldermodel.h" namespace Fm { - + class LIBFM_QT_API CachedFolderModel : public FolderModel { Q_OBJECT public: diff --git a/libfm-qt/colorbutton.h b/libfm-qt/colorbutton.h index bb04af5..08d7135 100644 --- a/libfm-qt/colorbutton.h +++ b/libfm-qt/colorbutton.h @@ -39,7 +39,7 @@ public: QColor color() const { return color_; } - + Q_SIGNALS: void changed(); diff --git a/libfm-qt/createnewmenu.cpp b/libfm-qt/createnewmenu.cpp new file mode 100644 index 0000000..86faf44 --- /dev/null +++ b/libfm-qt/createnewmenu.cpp @@ -0,0 +1,90 @@ +/* + Menu with entries to create new folders and files. + Copyright (C) 2012 Hong Jen Yee (PCMan) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "createnewmenu.h" +#include "folderview.h" +#include "icontheme.h" +#include "utilities.h" + +namespace Fm { + +CreateNewMenu::CreateNewMenu(QWidget* dialogParent, FmPath* dirPath, QWidget* parent): + QMenu(parent), dialogParent_(dialogParent), dirPath_(dirPath) { + QAction* action = new QAction(QIcon::fromTheme("folder-new"), tr("Folder"), this); + connect(action, &QAction::triggered, this, &CreateNewMenu::onCreateNewFolder); + addAction(action); + + action = new QAction(QIcon::fromTheme("document-new"), tr("Blank File"), this); + connect(action, &QAction::triggered, this, &CreateNewMenu::onCreateNewFile); + addAction(action); + + // add more items to "Create New" menu from templates + GList* templates = fm_template_list_all(fm_config->only_user_templates); + if(templates) { + addSeparator(); + for(GList* l = templates; l; l = l->next) { + FmTemplate* templ = (FmTemplate*)l->data; + /* we support directories differently */ + if(fm_template_is_directory(templ)) + continue; + FmMimeType* mime_type = fm_template_get_mime_type(templ); + const char* label = fm_template_get_label(templ); + QString text = QString("%1 (%2)").arg(QString::fromUtf8(label)).arg(QString::fromUtf8(fm_mime_type_get_desc(mime_type))); + FmIcon* icon = fm_template_get_icon(templ); + if(!icon) + icon = fm_mime_type_get_icon(mime_type); + QAction* action = addAction(IconTheme::icon(icon), text); + action->setObjectName(QString::fromUtf8(fm_template_get_name(templ, NULL))); + connect(action, &QAction::triggered, this, &CreateNewMenu::onCreateNew); + } + } +} + +CreateNewMenu::~CreateNewMenu() { +} + +void CreateNewMenu::onCreateNewFile() { + if(dirPath_) + createFileOrFolder(CreateNewTextFile, dirPath_); +} + +void CreateNewMenu::onCreateNewFolder() { + if(dirPath_) + createFileOrFolder(CreateNewFolder, dirPath_); +} + +void CreateNewMenu::onCreateNew() { + QAction* action = static_cast(sender()); + QByteArray name = action->objectName().toUtf8(); + GList* templates = fm_template_list_all(fm_config->only_user_templates); + FmTemplate* templ = NULL; + for(GList* l = templates; l; l = l->next) { + FmTemplate* t = (FmTemplate*)l->data; + if(name == fm_template_get_name(t, NULL)) { + templ = t; + break; + } + } + if(templ) { // template found + if(dirPath_) + createFileOrFolder(CreateWithTemplate, dirPath_, templ, dialogParent_); + } +} + +} // namespace Fm diff --git a/libfm-qt/createnewmenu.h b/libfm-qt/createnewmenu.h new file mode 100644 index 0000000..30664bf --- /dev/null +++ b/libfm-qt/createnewmenu.h @@ -0,0 +1,51 @@ +/* + Menu with entries to create new folders and files. + Copyright (C) 2012 Hong Jen Yee (PCMan) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef FM_CREATENEWMENU_H +#define FM_CREATENEWMENU_H + +#include "libfmqtglobals.h" +#include +#include + +namespace Fm { + +class FolderView; + +class LIBFM_QT_API CreateNewMenu : public QMenu { +Q_OBJECT + +public: + explicit CreateNewMenu(QWidget* dialogParent, FmPath* dirPath, + QWidget* parent = 0); + virtual ~CreateNewMenu(); + +protected Q_SLOTS: + void onCreateNewFolder(); + void onCreateNewFile(); + void onCreateNew(); + +private: + QWidget* dialogParent_; + FmPath* dirPath_; +}; + +} + +#endif // FM_CREATENEWMENU_H diff --git a/libfm-qt/dirtreemodel.h b/libfm-qt/dirtreemodel.h index 94a72e7..d24e9d3 100644 --- a/libfm-qt/dirtreemodel.h +++ b/libfm-qt/dirtreemodel.h @@ -30,7 +30,7 @@ #include namespace Fm { - + class DirTreeModelItem; class DirTreeView; @@ -64,7 +64,7 @@ public: } QModelIndex indexFromPath(FmPath* path) const; - + virtual Qt::ItemFlags flags(const QModelIndex& index) const; virtual QVariant data(const QModelIndex& index, int role) const; virtual int columnCount(const QModelIndex& parent) const; diff --git a/libfm-qt/dirtreemodelitem.cpp b/libfm-qt/dirtreemodelitem.cpp index 8ab9c33..1e69af5 100644 --- a/libfm-qt/dirtreemodelitem.cpp +++ b/libfm-qt/dirtreemodelitem.cpp @@ -212,10 +212,10 @@ qDebug() << "folder loaded"; } else { int pos = _this->children_.indexOf(_this->placeHolderChild_); - model->beginRemoveRows(index, pos, pos); + model->beginRemoveRows(index, pos, pos); _this->children_.removeAt(pos); delete _this->placeHolderChild_; - model->endRemoveRows(); + model->endRemoveRows(); _this->placeHolderChild_ = NULL; } @@ -226,7 +226,6 @@ qDebug() << "folder loaded"; void DirTreeModelItem::onFolderFilesAdded(FmFolder* folder, GSList* files, gpointer user_data) { GSList* l; DirTreeModelItem* _this = (DirTreeModelItem*)user_data; - DirTreeModel* model = _this->model_; for(l = files; l; l = l->next) { FmFileInfo* fi = FM_FILE_INFO(l->data); if(fm_file_info_is_dir(fi)) { /* FIXME: maybe adding files can be allowed later */ diff --git a/libfm-qt/dirtreemodelitem.h b/libfm-qt/dirtreemodelitem.h index dc11132..21b6f98 100644 --- a/libfm-qt/dirtreemodelitem.h +++ b/libfm-qt/dirtreemodelitem.h @@ -43,7 +43,7 @@ public: void loadFolder(); void unloadFolder(); - + bool isPlaceHolder() { return (fileInfo_ == NULL); } diff --git a/libfm-qt/dirtreeview.cpp b/libfm-qt/dirtreeview.cpp index d4f398f..f5cadfe 100644 --- a/libfm-qt/dirtreeview.cpp +++ b/libfm-qt/dirtreeview.cpp @@ -23,8 +23,10 @@ #include #include #include +#include #include "dirtreemodel.h" #include "dirtreemodelitem.h" +#include "filemenu.h" using namespace Fm; @@ -39,6 +41,10 @@ DirTreeView::DirTreeView(QWidget* parent): connect(this, &DirTreeView::collapsed, this, &DirTreeView::onCollapsed); connect(this, &DirTreeView::expanded, this, &DirTreeView::onExpanded); + + setContextMenuPolicy(Qt::CustomContextMenu); + connect(this, &DirTreeView::customContextMenuRequested, + this, &DirTreeView::onCustomContextMenuRequested); } DirTreeView::~DirTreeView() { @@ -98,7 +104,7 @@ void DirTreeView::onRowLoaded(const QModelIndex& index) { /* disconnect the handler since we only need it once */ disconnect(_model, &DirTreeModel::rowLoaded, this, &DirTreeView::onRowLoaded); - DirTreeModelItem* item = _model->itemFromIndex(index); + // DirTreeModelItem* item = _model->itemFromIndex(index); // qDebug() << "row loaded: " << item->displayName_; /* after the folder is loaded, the files should have been added to * the tree model */ @@ -122,7 +128,7 @@ void DirTreeView::setCurrentPath(FmPath* path) { if(!_model) return; int rowCount = _model->rowCount(QModelIndex()); - if(rowCount == 0 || fm_path_equal(currentPath_, path)) + if(rowCount <= 0 || fm_path_equal(currentPath_, path)) return; if(currentPath_) @@ -172,9 +178,85 @@ void DirTreeView::setModel(QAbstractItemModel* model) { connect(selectionModel(), &QItemSelectionModel::selectionChanged, this, &DirTreeView::onSelectionChanged); } +void DirTreeView::mousePressEvent(QMouseEvent* event) { + if(event && event->button() == Qt::RightButton && + event->type() == QEvent::MouseButtonPress) { + // Do not change the selection when the context menu is activated. + return; + } + QTreeView::mousePressEvent(event); +} + +void DirTreeView::onCustomContextMenuRequested(const QPoint& pos) { + QModelIndex index = indexAt(pos); + if(index.isValid()) { + QVariant data = index.data(DirTreeModel::FileInfoRole); + FmFileInfo* fileInfo = reinterpret_cast(data.value()); + if(fileInfo) { + FmPath* path = fm_file_info_get_path(fileInfo); + FmFileInfoList* files = fm_file_info_list_new(); + fm_file_info_list_push_tail(files, fileInfo); + Fm::FileMenu* menu = new Fm::FileMenu(files, fileInfo, path); + // FIXME: apply some settings to the menu and set a proper file launcher to it + Q_EMIT prepareFileMenu(menu); + fm_file_info_list_unref(files); + QVariant pathData = qVariantFromValue(reinterpret_cast(path)); + QAction* action = menu->openAction(); + action->disconnect(); + action->setData(index); + connect(action, &QAction::triggered, this, &DirTreeView::onOpen); + action = new QAction(QIcon::fromTheme("window-new"), tr("Open in New T&ab"), menu); + action->setData(pathData); + connect(action, &QAction::triggered, this, &DirTreeView::onNewTab); + menu->insertAction(menu->separator1(), action); + action = new QAction(QIcon::fromTheme("window-new"), tr("Open in New Win&dow"), menu); + action->setData(pathData); + connect(action, &QAction::triggered, this, &DirTreeView::onNewWindow); + menu->insertAction(menu->separator1(), action); + if(fm_file_info_is_native(fileInfo)) { + action = new QAction(QIcon::fromTheme("utilities-terminal"), tr("Open in Termina&l"), menu); + action->setData(pathData); + connect(action, &QAction::triggered, this, &DirTreeView::onOpenInTerminal); + menu->insertAction(menu->separator1(), action); + } + menu->exec(mapToGlobal(pos)); + delete menu; + } + } +} + +void DirTreeView::onOpen() { + if(QAction* action = qobject_cast(sender())) { + setCurrentIndex(action->data().toModelIndex()); + } +} + +void DirTreeView::onNewWindow() { + if(QAction* action = qobject_cast(sender())) { + FmPath* path = reinterpret_cast(action->data().value()); + Q_EMIT openFolderInNewWindowRequested(path); + } +} -void DirTreeView::contextMenuEvent(QContextMenuEvent* event) { - QAbstractScrollArea::contextMenuEvent(event); +void DirTreeView::onNewTab() { + if(QAction* action = qobject_cast(sender())) { + FmPath* path = reinterpret_cast(action->data().value()); + Q_EMIT openFolderInNewTabRequested(path); + } +} + +void DirTreeView::onOpenInTerminal() { + if(QAction* action = qobject_cast(sender())) { + FmPath* path = reinterpret_cast(action->data().value()); + Q_EMIT openFolderInTerminalRequested(path); + } +} + +void DirTreeView::onNewFolder() { + if(QAction* action = qobject_cast(sender())) { + FmPath* path = reinterpret_cast(action->data().value()); + Q_EMIT createNewFolderRequested(path); + } } void DirTreeView::onCollapsed(const QModelIndex& index) { @@ -204,7 +286,7 @@ void DirTreeView::onSelectionChanged(const QItemSelection & selected, const QIte if(currentPath_) fm_path_unref(currentPath_); currentPath_ = fm_path_ref(path); - + // FIXME: use enums for type rather than hard-coded values 0 or 1 int type = 0; if(QGuiApplication::mouseButtons() & Qt::MiddleButton) diff --git a/libfm-qt/dirtreeview.h b/libfm-qt/dirtreeview.h index 297a895..c6573bc 100644 --- a/libfm-qt/dirtreeview.h +++ b/libfm-qt/dirtreeview.h @@ -30,8 +30,9 @@ class QItemSelection; namespace Fm { +class FileMenu; class DirTreeModelItem; - + class LIBFM_QT_API DirTreeView : public QTreeView { Q_OBJECT @@ -57,7 +58,7 @@ public: virtual void setModel(QAbstractItemModel* model); protected: - virtual void contextMenuEvent(QContextMenuEvent* event); + virtual void mousePressEvent(QMouseEvent* event); private: void cancelPendingChdir(); @@ -65,12 +66,23 @@ private: Q_SIGNALS: void chdirRequested(int type, FmPath* path); + void openFolderInNewWindowRequested(FmPath* path); + void openFolderInNewTabRequested(FmPath* path); + void openFolderInTerminalRequested(FmPath* path); + void createNewFolderRequested(FmPath* path); + void prepareFileMenu(Fm::FileMenu* menu); // emit before showing a Fm::FileMenu protected Q_SLOTS: void onCollapsed(const QModelIndex & index); void onExpanded(const QModelIndex & index); void onRowLoaded(const QModelIndex& index); void onSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected); + void onCustomContextMenuRequested(const QPoint& pos); + void onOpen(); + void onNewWindow(); + void onNewTab(); + void onOpenInTerminal(); + void onNewFolder(); private: FmPath* currentPath_; diff --git a/libfm-qt/dndactionmenu.h b/libfm-qt/dndactionmenu.h index 365acd9..473c574 100644 --- a/libfm-qt/dndactionmenu.h +++ b/libfm-qt/dndactionmenu.h @@ -32,9 +32,9 @@ Q_OBJECT public: explicit DndActionMenu(QWidget* parent = 0); virtual ~DndActionMenu(); - + static Qt::DropAction askUser(QPoint pos); - + private: QAction* copyAction; QAction* moveAction; diff --git a/libfm-qt/editbookmarksdialog.cpp b/libfm-qt/editbookmarksdialog.cpp index 7547762..471db3a 100644 --- a/libfm-qt/editbookmarksdialog.cpp +++ b/libfm-qt/editbookmarksdialog.cpp @@ -37,8 +37,8 @@ EditBookmarksDialog::EditBookmarksDialog(FmBookmarks* bookmarks, QWidget* parent setAttribute(Qt::WA_DeleteOnClose); // auto delete on close // load bookmarks - GList* l = fm_bookmarks_get_all(bookmarks_); - for(; l; l = l->next) { + GList* allBookmarks = fm_bookmarks_get_all(bookmarks_); + for(GList* l = allBookmarks; l; l = l->next) { FmBookmarkItem* bookmark = reinterpret_cast(l->data); QTreeWidgetItem* item = new QTreeWidgetItem(); char* path_str = fm_path_display_name(bookmark->path, false); @@ -48,6 +48,7 @@ EditBookmarksDialog::EditBookmarksDialog(FmBookmarks* bookmarks, QWidget* parent g_free(path_str); ui->treeWidget->addTopLevelItem(item); } + g_list_free_full(allBookmarks, (GDestroyNotify)fm_bookmark_item_unref); connect(ui->addItem, &QPushButton::clicked, this, &EditBookmarksDialog::onAddItem); connect(ui->removeItem, &QPushButton::clicked, this, &EditBookmarksDialog::onRemoveItem); diff --git a/libfm-qt/editbookmarksdialog.h b/libfm-qt/editbookmarksdialog.h index 95bbdf0..7b0d74c 100644 --- a/libfm-qt/editbookmarksdialog.h +++ b/libfm-qt/editbookmarksdialog.h @@ -42,7 +42,7 @@ public: private Q_SLOTS: void onAddItem(); void onRemoveItem(); - + private: Ui::EditBookmarksDialog* ui; FmBookmarks* bookmarks_; diff --git a/libfm-qt/file-props.ui b/libfm-qt/file-props.ui index 3c1ccab..c0b3918 100644 --- a/libfm-qt/file-props.ui +++ b/libfm-qt/file-props.ui @@ -6,8 +6,8 @@ 0 0 - 407 - 396 + 424 + 456 @@ -19,7 +19,16 @@ - + + 10 + + + 10 + + + 10 + + 10 @@ -86,6 +95,9 @@ true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -106,6 +118,9 @@ + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -126,6 +141,9 @@ + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -146,6 +164,9 @@ + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -166,6 +187,9 @@ + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -186,6 +210,9 @@ + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -209,6 +236,9 @@ true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -216,6 +246,9 @@ Open With: + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -240,6 +273,9 @@ + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + diff --git a/libfm-qt/filelauncher.cpp b/libfm-qt/filelauncher.cpp index 95c8a4f..b44e694 100644 --- a/libfm-qt/filelauncher.cpp +++ b/libfm-qt/filelauncher.cpp @@ -37,12 +37,11 @@ FmFileLauncher FileLauncher::funcs = { FileLauncher::_ask }; -FileLauncher::FileLauncher() { - +FileLauncher::FileLauncher(): + quickExec_(false) { } FileLauncher::~FileLauncher() { - } //static @@ -82,6 +81,15 @@ bool FileLauncher::openFolder(GAppLaunchContext* ctx, GList* folder_infos, GErro } FmFileLauncherExecAction FileLauncher::execFile(FmFileInfo* file) { + if (quickExec_) { + /* SF bug#838: open terminal for each script may be just a waste. + User should open a terminal and start the script there + in case if user wants to see the script output anyway. + if (fm_file_info_is_text(file)) + return FM_FILE_LAUNCHER_EXEC_IN_TERMINAL; */ + return FM_FILE_LAUNCHER_EXEC; + } + FmFileLauncherExecAction res = FM_FILE_LAUNCHER_EXEC_CANCEL; ExecFileDialog dlg(file); if(execModelessDialog(&dlg) == QDialog::Accepted) { diff --git a/libfm-qt/filelauncher.h b/libfm-qt/filelauncher.h index bd02ee0..9c3712e 100644 --- a/libfm-qt/filelauncher.h +++ b/libfm-qt/filelauncher.h @@ -34,16 +34,24 @@ public: bool launchFiles(QWidget* parent, FmFileInfoList* file_infos) { GList* fileList = fm_file_info_list_peek_head_link(file_infos); - return Fm::FileLauncher::launchFiles(parent, fileList); + return launchFiles(parent, fileList); } bool launchPaths(QWidget* parent, FmPathList* paths) { GList* pathList = fm_path_list_peek_head_link(paths); - return Fm::FileLauncher::launchPaths(parent, pathList); + return launchPaths(parent, pathList); } bool launchFiles(QWidget* parent, GList* file_infos); bool launchPaths(QWidget* parent, GList* paths); + bool quickExec() const { + return quickExec_; + } + + void setQuickExec(bool value) { + quickExec_ = value; + } + protected: virtual GAppInfo* getApp(GList* file_infos, FmMimeType* mime_type, GError** err); @@ -71,6 +79,7 @@ private: private: static FmFileLauncher funcs; + bool quickExec_; // Don't ask options on launch executable file }; } diff --git a/libfm-qt/filemenu.cpp b/libfm-qt/filemenu.cpp index 9c8f5a5..9dbe7e0 100644 --- a/libfm-qt/filemenu.cpp +++ b/libfm-qt/filemenu.cpp @@ -19,6 +19,7 @@ #include "filemenu.h" +#include "createnewmenu.h" #include "icontheme.h" #include "filepropsdialog.h" #include "utilities.h" @@ -59,6 +60,8 @@ FileMenu::~FileMenu() { void FileMenu::createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd) { useTrash_ = true; confirmDelete_ = true; + confirmTrash_ = false; // Confirm before moving files into "trash can" + files_ = fm_file_info_list_ref(files); info_ = info ? fm_file_info_ref(info) : NULL; cwd_ = cwd ? fm_path_ref(cwd) : NULL; @@ -91,7 +94,7 @@ void FileMenu::createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd) GList* l; for(l=apps;l;l=l->next) { GAppInfo* app = G_APP_INFO(l->data); - + // check if the command really exists gchar * program_path = g_find_program_in_path(g_app_info_get_executable(app)); if (!program_path) @@ -113,6 +116,13 @@ void FileMenu::createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd) separator1_ = addSeparator(); + QAction* createAction = new QAction(tr("Create &New"), this); + FmPath* dirPath = fm_file_info_list_get_length(files) == 1 && fm_file_info_is_dir(first) + ? path : cwd_; + createAction->setMenu(new CreateNewMenu(NULL, dirPath, this)); + addAction(createAction); + addSeparator(); + if(allTrash_) { // all selected files are in trash:/// bool can_restore = true; /* only immediate children of trash:/// can be restored. */ @@ -143,7 +153,7 @@ void FileMenu::createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd) connect(pasteAction_, &QAction::triggered, this, &FileMenu::onPasteTriggered); addAction(pasteAction_); - deleteAction_ = new QAction(QIcon::fromTheme("edit-delete"), tr("&Move to Trash"), this); + deleteAction_ = new QAction(QIcon::fromTheme("user-trash"), tr("&Move to Trash"), this); connect(deleteAction_, &QAction::triggered, this, &FileMenu::onDeleteTriggered); addAction(deleteAction_); @@ -162,7 +172,7 @@ void FileMenu::createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd) FmFileActionItem* item = FM_FILE_ACTION_ITEM(l->data); addCustomActionItem(this, item); } - } + } g_list_foreach(items, (GFunc)fm_file_action_item_unref, NULL); g_list_free(items); #endif @@ -246,7 +256,7 @@ void FileMenu::onOpenWithTriggered() { else { // we can only set the selected app as default if all files are of the same type dlg.setCanSetDefault(false); } - + if(execModelessDialog(&dlg) == QDialog::Accepted) { GAppInfo* app = dlg.selectedApp(); if(app) { @@ -267,7 +277,7 @@ void FileMenu::openFilesWithApp(GAppInfo* app) { fm_path_list_unref(paths); fm_app_info_launch_uris(app, uris, NULL, NULL); g_list_foreach(uris, (GFunc)g_free, NULL); - g_list_free(uris); + g_list_free(uris); } void FileMenu::onApplicationTriggered() { @@ -311,7 +321,7 @@ void FileMenu::onCutTriggered() { void FileMenu::onDeleteTriggered() { FmPathList* paths = fm_path_list_new_from_file_info_list(files_); if(useTrash_) - FileOperation::trashFiles(paths, confirmDelete_); + FileOperation::trashFiles(paths, confirmTrash_); else FileOperation::deleteFiles(paths, confirmDelete_); fm_path_list_unref(paths); @@ -337,6 +347,7 @@ void FileMenu::setUseTrash(bool trash) { if(useTrash_ != trash) { useTrash_ = trash; deleteAction_->setText(useTrash_ ? tr("&Move to Trash") : tr("&Delete")); + deleteAction_->setIcon(useTrash_ ? QIcon::fromTheme("user-trash") : QIcon::fromTheme("edit-delete")); } } diff --git a/libfm-qt/filemenu.h b/libfm-qt/filemenu.h index c8ec6d7..43e11ab 100644 --- a/libfm-qt/filemenu.h +++ b/libfm-qt/filemenu.h @@ -33,7 +33,7 @@ struct _FmFileActionItem; namespace Fm { class FileLauncher; - + class LIBFM_QT_API FileMenu : public QMenu { Q_OBJECT @@ -45,9 +45,9 @@ public: bool useTrash() { return useTrash_; } - + void setUseTrash(bool trash); - + bool confirmDelete() { return confirmDelete_; } @@ -55,53 +55,53 @@ public: void setConfirmDelete(bool confirm) { confirmDelete_ = confirm; } - + QAction* openAction() { - return openAction_; + return openAction_; } QAction* openWithMenuAction() { - return openWithMenuAction_; + return openWithMenuAction_; } QAction* openWithAction() { - return openWithAction_; + return openWithAction_; } - + QAction* separator1() { - return separator1_; + return separator1_; } QAction* cutAction() { - return cutAction_; + return cutAction_; } QAction* copyAction() { - return copyAction_; + return copyAction_; } QAction* pasteAction() { return pasteAction_; } - + QAction* deleteAction() { - return deleteAction_; + return deleteAction_; } QAction* unTrashAction() { - return unTrashAction_; + return unTrashAction_; } QAction* renameAction() { - return renameAction_; + return renameAction_; } QAction* separator2() { - return separator2_; + return separator2_; } QAction* propertiesAction() { - return propertiesAction_; + return propertiesAction_; } FmFileInfoList* files() { @@ -115,7 +115,7 @@ public: FmPath* cwd() { return cwd_; } - + void setFileLauncher(FileLauncher* launcher) { fileLauncher_ = launcher; } @@ -139,7 +139,15 @@ public: bool allTrash() const { return allTrash_; } - + + bool confirmTrash() const { + return confirmTrash_; + } + + void setConfirmTrash(bool value) { + confirmTrash_ = value; + } + protected: void createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd); #ifdef CUSTOM_ACTIONS @@ -158,7 +166,7 @@ protected Q_SLOTS: void onCompress(); void onExtract(); void onExtractHere(); - + void onCutTriggered(); void onCopyTriggered(); void onPasteTriggered(); @@ -172,6 +180,8 @@ private: FmPath* cwd_; bool useTrash_; bool confirmDelete_; + bool confirmTrash_; // Confirm before moving files into "trash can" + bool sameType_; bool sameFilesystem_; bool allVirtual_; diff --git a/libfm-qt/fileoperation.cpp b/libfm-qt/fileoperation.cpp index 101a5dd..394be0a 100644 --- a/libfm-qt/fileoperation.cpp +++ b/libfm-qt/fileoperation.cpp @@ -77,7 +77,7 @@ FileOperation::~FileOperation() { disconnectJob(); g_object_unref(job_); } - + if(srcPaths) fm_path_list_unref(srcPaths); @@ -86,6 +86,7 @@ FileOperation::~FileOperation() { } bool FileOperation::run() { + delete uiTimer; // run the job uiTimer = new QTimer(); uiTimer->start(SHOW_DLG_DELAY); @@ -156,7 +157,7 @@ void FileOperation::onFileOpsJobCancelled(FmFileOpsJob* job, FileOperation* pThi void FileOperation::onFileOpsJobCurFile(FmFileOpsJob* job, const char* cur_file, FileOperation* pThis) { pThis->curFile = QString::fromUtf8(cur_file); - + // We update the current file name in a timeout slot because drawing a string // in the UI is expansive. Updating the label text too often cause // significant impact on performance. diff --git a/libfm-qt/fileoperation.h b/libfm-qt/fileoperation.h index 9d5c912..0acb515 100644 --- a/libfm-qt/fileoperation.h +++ b/libfm-qt/fileoperation.h @@ -96,7 +96,7 @@ public: Type type() { return (Type)job_->type; } - + // convinient static functions static FileOperation* copyFiles(FmPathList* srcFiles, FmPath* dest, QWidget* parent = 0); static FileOperation* moveFiles(FmPathList* srcFiles, FmPath* dest, QWidget* parent = 0); @@ -108,7 +108,7 @@ public: Q_SIGNALS: void finished(); - + private: static gint onFileOpsJobAsk(FmFileOpsJob* job, const char* question, char* const* options, FileOperation* pThis); static gint onFileOpsJobAskRename(FmFileOpsJob* job, FmFileInfo* src, FmFileInfo* dest, char** new_name, FileOperation* pThis); @@ -145,7 +145,7 @@ private: private Q_SLOTS: void onUiTimeout(); - + private: FmFileOpsJob* job_; FileOperationDialog* dlg; diff --git a/libfm-qt/fileoperationdialog.h b/libfm-qt/fileoperationdialog.h index a31af23..b95d6f4 100644 --- a/libfm-qt/fileoperationdialog.h +++ b/libfm-qt/fileoperationdialog.h @@ -38,7 +38,7 @@ Q_OBJECT public: explicit FileOperationDialog(FileOperation* _operation); virtual ~FileOperationDialog(); - + void setSourceFiles(FmPathList* srcFiles); void setDestPath(FmPath* dest); diff --git a/libfm-qt/filepropsdialog.cpp b/libfm-qt/filepropsdialog.cpp index 273e3e5..140c630 100644 --- a/libfm-qt/filepropsdialog.cpp +++ b/libfm-qt/filepropsdialog.cpp @@ -62,7 +62,7 @@ FilePropsDialog::FilePropsDialog(FmFileInfoList* files, QWidget* parent, Qt::Win FmPathList* paths = fm_path_list_new_from_file_info_list(files); deepCountJob = fm_deep_count_job_new(paths, FM_DC_JOB_DEFAULT); - fm_path_list_unref(paths); + fm_path_list_unref(paths); initGeneralPage(); initPermissionsPage(); @@ -349,7 +349,7 @@ void FilePropsDialog::accept() { // check if chown or chmod is needed guint32 newUid = uidFromName(ui->owner->text()); guint32 newGid = gidFromName(ui->ownerGroup->text()); - bool needChown = (newUid != uid || newGid != gid); + bool needChown = (newUid != -1 && newUid != uid) || (newGid != -1 && newGid != gid); int newOwnerPermSel = ui->ownerPerm->currentIndex(); int newGroupPermSel = ui->groupPerm->currentIndex(); @@ -409,7 +409,7 @@ void FilePropsDialog::accept() { newMode |= (S_IXUSR|S_IXGRP|S_IXOTH); } op->setChmod(newMode, newModeMask); - + if(hasDir) { // if there are some dirs in our selected files QMessageBox::StandardButton r = QMessageBox::question(this, tr("Apply changes"), @@ -432,7 +432,7 @@ void FilePropsDialog::initOwner() { ui->owner->setText(uidToName(uid)); if(gid != DIFFERENT_GIDS) ui->ownerGroup->setText(gidToName(gid)); - + if(geteuid() != 0) { // on local filesystems, only root can do chown. ui->owner->setEnabled(false); ui->ownerGroup->setEnabled(false); diff --git a/libfm-qt/filepropsdialog.h b/libfm-qt/filepropsdialog.h index 162fea5..a273da3 100644 --- a/libfm-qt/filepropsdialog.h +++ b/libfm-qt/filepropsdialog.h @@ -40,7 +40,7 @@ public: virtual ~FilePropsDialog(); virtual void accept(); - + static FilePropsDialog* showForFile(FmFileInfo* file, QWidget* parent = 0) { FmFileInfoList* files = fm_file_info_list_new(); fm_file_info_list_push_tail(files, file); @@ -48,7 +48,7 @@ public: fm_file_info_list_unref(files); return dlg; } - + static FilePropsDialog* showForFiles(FmFileInfoList* files, QWidget* parent = 0) { FilePropsDialog* dlg = new FilePropsDialog(files, parent); dlg->show(); @@ -65,7 +65,7 @@ private: private Q_SLOTS: void onFileSizeTimerTimeout(); - + private: Ui::FilePropsDialog* ui; FmFileInfoList* fileInfos_; // list of all file infos diff --git a/libfm-qt/folderitemdelegate.cpp b/libfm-qt/folderitemdelegate.cpp index ad2a60f..23ac67d 100644 --- a/libfm-qt/folderitemdelegate.cpp +++ b/libfm-qt/folderitemdelegate.cpp @@ -53,8 +53,6 @@ QSize FolderItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QMo initStyleOption(&opt, index); opt.decorationAlignment = Qt::AlignHCenter|Qt::AlignTop; opt.displayAlignment = Qt::AlignTop|Qt::AlignHCenter; - const QWidget* widget = opt.widget; - QStyle* style = widget ? widget->style() : QApplication::style(); // FIXME: there're some problems in this size hint calculation. Q_ASSERT(gridSize_ != QSize()); @@ -132,9 +130,6 @@ void FolderItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& op // if painter is NULL, the method calculate the bounding rectangle of the text and save it to textRect void FolderItemDelegate::drawText(QPainter* painter, QStyleOptionViewItemV4& opt, QRectF& textRect) const { - const QWidget* widget = opt.widget; - QStyle* style = widget->style() ? widget->style() : qApp->style(); - const int focusMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, &opt, widget); QTextLayout layout(opt.text, opt.font); QTextOption textOption; textOption.setAlignment(opt.displayAlignment); @@ -210,7 +205,10 @@ void FolderItemDelegate::drawText(QPainter* painter, QStyleOptionViewItemV4& opt ? QPalette::Normal : QPalette::Disabled; o.backgroundColor = opt.palette.color(cg, (opt.state & QStyle::State_Selected) ? QPalette::Highlight : QPalette::Window); - style->drawPrimitive(QStyle::PE_FrameFocusRect, &o, painter, widget); + if (const QWidget* widget = opt.widget) { + QStyle* style = widget->style() ? widget->style() : qApp->style(); + style->drawPrimitive(QStyle::PE_FrameFocusRect, &o, painter, widget); + } } } diff --git a/libfm-qt/folderitemdelegate.h b/libfm-qt/folderitemdelegate.h index f181f6a..825001c 100644 --- a/libfm-qt/folderitemdelegate.h +++ b/libfm-qt/folderitemdelegate.h @@ -32,7 +32,7 @@ class LIBFM_QT_API FolderItemDelegate : public QStyledItemDelegate { public: explicit FolderItemDelegate(QAbstractItemView* view, QObject* parent = 0); virtual ~FolderItemDelegate(); - + void setGridSize(QSize size) { gridSize_ = size; } @@ -40,14 +40,14 @@ public: QSize gridSize() { return gridSize_; } - + virtual QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const; virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; private: void drawText(QPainter* painter, QStyleOptionViewItemV4& opt, QRectF& textRect) const; static QIcon::Mode iconModeFromState(QStyle::State state); - + private: QAbstractItemView* view_; QIcon symlinkIcon_; diff --git a/libfm-qt/foldermenu.cpp b/libfm-qt/foldermenu.cpp index 692f114..f6641e5 100644 --- a/libfm-qt/foldermenu.cpp +++ b/libfm-qt/foldermenu.cpp @@ -20,6 +20,7 @@ #include "foldermenu.h" +#include "createnewmenu.h" #include "filepropsdialog.h" #include "folderview.h" #include "utilities.h" @@ -36,8 +37,7 @@ FolderMenu::FolderMenu(FolderView* view, QWidget* parent): createAction_ = new QAction(tr("Create &New"), this); addAction(createAction_); - createCreateNewMenu(); - createAction_->setMenu(createNewMenu_); + createAction_->setMenu(new CreateNewMenu(view_, view_->path(), this)); separator1_ = addSeparator(); @@ -78,40 +78,6 @@ FolderMenu::FolderMenu(FolderView* view, QWidget* parent): FolderMenu::~FolderMenu() { } -void FolderMenu::createCreateNewMenu() { - QMenu* createMenu = new QMenu(this); - createNewMenu_ = createMenu; - - QAction* action = new QAction(tr("Folder"), this); - connect(action, &QAction::triggered, this, &FolderMenu::onCreateNewFolder); - createMenu->addAction(action); - - action = new QAction(tr("Blank File"), this); - connect(action, &QAction::triggered, this, &FolderMenu::onCreateNewFile); - createMenu->addAction(action); - - // add more items to "Create New" menu from templates - GList* templates = fm_template_list_all(fm_config->only_user_templates); - if(templates) { - createMenu->addSeparator(); - for(GList* l = templates; l; l = l->next) { - FmTemplate* templ = (FmTemplate*)l->data; - /* we support directories differently */ - if(fm_template_is_directory(templ)) - continue; - FmMimeType* mime_type = fm_template_get_mime_type(templ); - const char* label = fm_template_get_label(templ); - QString text = QString("%1 (%2)").arg(QString::fromUtf8(label)).arg(QString::fromUtf8(fm_mime_type_get_desc(mime_type))); - FmIcon* icon = fm_template_get_icon(templ); - if(!icon) - icon = fm_mime_type_get_icon(mime_type); - QAction* action = createMenu->addAction(IconTheme::icon(icon), text); - action->setObjectName(QString::fromUtf8(fm_template_get_name(templ, NULL))); - connect(action, &QAction::triggered, this, &FolderMenu::onCreateNew); - } - } -} - void FolderMenu::addSortMenuItem(QString title, int id) { QAction* action = new QAction(title, this); sortMenu_->addAction(action); @@ -263,38 +229,4 @@ void FolderMenu::onPropertiesActionTriggered() { FilePropsDialog::showForFile(folderInfo); } -void FolderMenu::onCreateNewFile() { - FmPath* dirPath = view_->path(); - - if(dirPath) - createFile(CreateNewTextFile, dirPath); -} - -void FolderMenu::onCreateNewFolder() { - FmPath* dirPath = view_->path(); - - if(dirPath) - createFile(CreateNewFolder, dirPath); -} - -void FolderMenu::onCreateNew() { - QAction* action = static_cast(sender()); - QByteArray name = action->objectName().toUtf8(); - GList* templates = fm_template_list_all(fm_config->only_user_templates); - FmTemplate* templ = NULL; - for(GList* l = templates; l; l = l->next) { - FmTemplate* t = (FmTemplate*)l->data; - if(name == fm_template_get_name(t, NULL)) { - templ = t; - break; - } - } - if(templ) { // template found - FmPath* dirPath = view_->path(); - if(dirPath) - createFile(CreateWithTemplate, dirPath, templ, view_); - } -} - - } // namespace Fm diff --git a/libfm-qt/foldermenu.h b/libfm-qt/foldermenu.h index 56b3dec..46c2687 100644 --- a/libfm-qt/foldermenu.h +++ b/libfm-qt/foldermenu.h @@ -31,7 +31,7 @@ class QAction; namespace Fm { class FolderView; - + class LIBFM_QT_API FolderMenu : public QMenu { Q_OBJECT @@ -40,59 +40,54 @@ public: virtual ~FolderMenu(); QAction* createAction() { - return createAction_; + return createAction_; } QAction* separator1() { - return separator1_; + return separator1_; } QAction* pasteAction() { - return pasteAction_; + return pasteAction_; } QAction* separator2() { - return separator2_; + return separator2_; } QAction* selectAllAction() { - return selectAllAction_; + return selectAllAction_; } QAction* invertSelectionAction() { - return invertSelectionAction_; + return invertSelectionAction_; } QAction* separator3() { - return separator3_; + return separator3_; } QAction* sortAction() { - return sortAction_; + return sortAction_; } QAction* showHiddenAction() { - return showHiddenAction_; + return showHiddenAction_; } QAction* separator4() { - return separator4_; + return separator4_; } QAction* propertiesAction() { - return propertiesAction_; + return propertiesAction_; } FolderView* view() { return view_; } - -protected Q_SLOTS: - - void onCreateNewFolder(); - void onCreateNewFile(); - void onCreateNew(); +protected Q_SLOTS: void onPasteActionTriggered(); void onSelectAllActionTriggered(); void onInvertSelectionActionTriggered(); @@ -104,14 +99,12 @@ protected Q_SLOTS: void onPropertiesActionTriggered(); private: - void createCreateNewMenu(); void createSortMenu(); void addSortMenuItem(QString title, int id); private: FolderView* view_; QAction* createAction_; - QMenu* createNewMenu_; QAction* separator1_; QAction* pasteAction_; QAction* separator2_; diff --git a/libfm-qt/foldermodel.cpp b/libfm-qt/foldermodel.cpp index de473eb..b1506e2 100644 --- a/libfm-qt/foldermodel.cpp +++ b/libfm-qt/foldermodel.cpp @@ -34,7 +34,7 @@ using namespace Fm; -FolderModel::FolderModel() : +FolderModel::FolderModel() : folder_(NULL) { /* ColumnIcon, @@ -44,7 +44,7 @@ FolderModel::FolderModel() : NumOfColumns */ thumbnailRefCounts.reserve(4); - + // reload all icons when the icon theme is changed connect(IconTheme::instance(), &IconTheme::changed, this, &FolderModel::updateIcons); } @@ -54,7 +54,7 @@ FolderModel::~FolderModel() { if(folder_) setFolder(NULL); - + // if the thumbnail requests list is not empty, cancel them if(!thumbnailResults.empty()) { Q_FOREACH(FmThumbnailLoader* res, thumbnailResults) { @@ -95,7 +95,8 @@ void FolderModel::onStartLoading(FmFolder* folder, gpointer user_data) { } void FolderModel::onFinishLoading(FmFolder* folder, gpointer user_data) { - FolderModel* model = static_cast(user_data); + Q_UNUSED(folder) + Q_UNUSED(user_data) } void FolderModel::onFilesAdded(FmFolder* folder, GSList* files, gpointer user_data) { @@ -119,7 +120,6 @@ void FolderModel::onFilesAdded(FmFolder* folder, GSList* files, gpointer user_da //static void FolderModel::onFilesChanged(FmFolder* folder, GSList* files, gpointer user_data) { FolderModel* model = static_cast(user_data); - int n_files = g_slist_length(files); for(GSList* l = files; l; l = l->next) { FmFileInfo* info = FM_FILE_INFO(l->data); int row; @@ -218,12 +218,10 @@ QVariant FolderModel::data(const QModelIndex & index, int role = Qt::DisplayRole case ColumnFileSize: { const char* name = fm_file_info_get_disp_size(info); return QString::fromUtf8(name); - break; } case ColumnFileOwner: { const char* name = fm_file_info_get_disp_owner(info); return QString::fromUtf8(name); - break; } } } @@ -233,6 +231,7 @@ QVariant FolderModel::data(const QModelIndex & index, int role = Qt::DisplayRole return QVariant(item->icon); // return QVariant(pix); } + break; } case FileInfoRole: return qVariantFromValue((void*)info); @@ -292,7 +291,7 @@ Qt::ItemFlags FolderModel::flags(const QModelIndex& index) const { return flags; } -// FIXME: this is very inefficient and should be replaced with a +// FIXME: this is very inefficient and should be replaced with a // more reasonable implementation later. QList::iterator FolderModel::findItemByPath(FmPath* path, int* row) { QList::iterator it = items.begin(); @@ -310,7 +309,7 @@ QList::iterator FolderModel::findItemByPath(FmPath* path, int* return items.end(); } -// FIXME: this is very inefficient and should be replaced with a +// FIXME: this is very inefficient and should be replaced with a // more reasonable implementation later. QList::iterator FolderModel::findItemByName(const char* name, int* row) { QList::iterator it = items.begin(); @@ -358,7 +357,7 @@ QMimeData* FolderModel::mimeData(const QModelIndexList& indexes) const { // build a uri list QByteArray urilist; urilist.reserve(4096); - + QModelIndexList::const_iterator it; for(it = indexes.constBegin(); it != indexes.end(); ++it) { const QModelIndex index = *it; @@ -372,7 +371,7 @@ QMimeData* FolderModel::mimeData(const QModelIndexList& indexes) const { } } data->setData("text/uri-list", urilist); - + return data; } diff --git a/libfm-qt/foldermodelitem.cpp b/libfm-qt/foldermodelitem.cpp index 59c95e9..927220f 100644 --- a/libfm-qt/foldermodelitem.cpp +++ b/libfm-qt/foldermodelitem.cpp @@ -1,17 +1,17 @@ /* - * + * * Copyright (C) 2012 Hong Jen Yee (PCMan) - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. - * + * * This library 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 * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/libfm-qt/foldermodelitem.h b/libfm-qt/foldermodelitem.h index 7363606..3953f15 100644 --- a/libfm-qt/foldermodelitem.h +++ b/libfm-qt/foldermodelitem.h @@ -1,17 +1,17 @@ /* - * + * * Copyright (C) 2012 Hong Jen Yee (PCMan) - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. - * + * * This library 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 * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/libfm-qt/folderview.cpp b/libfm-qt/folderview.cpp index d741128..fb7f26b 100644 --- a/libfm-qt/folderview.cpp +++ b/libfm-qt/folderview.cpp @@ -66,7 +66,7 @@ void FolderViewListView::mousePressEvent(QMouseEvent* event) { QModelIndex FolderViewListView::indexAt(const QPoint& point) const { QModelIndex index = QListView::indexAt(point); - // NOTE: QListView has a severe design flaw here. It does hit-testing based on the + // NOTE: QListView has a severe design flaw here. It does hit-testing based on the // total bound rect of the item. The width of an item is determined by max(icon_width, text_width). // So if the text label is much wider than the icon, when you click outside the icon but // the point is still within the outer bound rect, the item is still selected. @@ -195,6 +195,11 @@ FolderViewTreeView::~FolderViewTreeView() { void FolderViewTreeView::setModel(QAbstractItemModel* model) { QTreeView::setModel(model); layoutColumns(); + if(ProxyFolderModel* proxyModel = qobject_cast(model)) { + connect(proxyModel, &ProxyFolderModel::sortFilterChanged, this, &FolderViewTreeView::onSortFilterChanged, + Qt::UniqueConnection); + onSortFilterChanged(); + } } void FolderViewTreeView::mousePressEvent(QMouseEvent* event) { @@ -262,12 +267,10 @@ void FolderViewTreeView::layoutColumns() { // even when we reduce the width of the filename column to 200, // the available space is not enough. So we give up trying. widths[filenameColumn] = 200; - desiredWidth += 200; } else { // we still have more space, so the width of filename column can be increased // expand the filename column to fill all available space. widths[filenameColumn] = availWidth - desiredWidth; - desiredWidth = availWidth; } } @@ -278,7 +281,7 @@ void FolderViewTreeView::layoutColumns() { delete []widths; doingLayout_ = false; - + if(layoutTimer_) { delete layoutTimer_; layoutTimer_ = NULL; @@ -287,7 +290,13 @@ void FolderViewTreeView::layoutColumns() { void FolderViewTreeView::resizeEvent(QResizeEvent* event) { QAbstractItemView::resizeEvent(event); - if(!doingLayout_) // prevent endless recursion. + // prevent endless recursion. + // When manually resizing columns, at the point where a horizontal scroll + // bar has to be inserted or removed, the vertical size changes, a resize + // event occurs and the column headers are flickering badly if the column + // layout is modified at this point. Therefore only layout the columns if + // the horizontal size changes. + if(!doingLayout_ && event->size().width() != event->oldSize().width()) layoutColumns(); // layoutColumns() also triggers resizeEvent } @@ -307,6 +316,17 @@ void FolderViewTreeView::dataChanged(const QModelIndex& topLeft, const QModelInd // queueLayoutColumns(); } +void FolderViewTreeView::reset() { + // Sometimes when the content of the model is radically changed, Qt does reset() + // on the model rather than doing large amount of insertion and deletion. + // This is for performance reason so in this case rowsInserted() and rowsAboutToBeRemoved() + // might not be called. Hence we also have to re-layout the columns when the model is reset. + // This fixes bug #190 + // https://github.com/lxde/pcmanfm-qt/issues/190 + QTreeView::reset(); + queueLayoutColumns(); +} + void FolderViewTreeView::queueLayoutColumns() { // qDebug("queueLayoutColumns"); if(!layoutTimer_) { @@ -346,6 +366,16 @@ void FolderViewTreeView::activation(const QModelIndex &index) { } } +void FolderViewTreeView::onSortFilterChanged() { + if(QSortFilterProxyModel* proxyModel = qobject_cast(model())) { + header()->setSortIndicatorShown(true); + header()->setSortIndicator(proxyModel->sortColumn(), proxyModel->sortOrder()); + if (!isSortingEnabled()) { + setSortingEnabled(true); + } + } +} + //----------------------------------------------------------------------------- @@ -423,7 +453,7 @@ void FolderView::setViewMode(ViewMode _mode) { return; // FIXME: retain old selection - // since only detailed list mode uses QTreeView, and others + // since only detailed list mode uses QTreeView, and others // all use QListView, it's wise to preserve QListView when possible. bool recreateView = false; if(view && (mode == DetailedListMode || _mode == DetailedListMode)) { @@ -683,7 +713,7 @@ FmFileInfoList* FolderView::selectedFiles() const { if(!selIndexes.isEmpty()) { FmFileInfoList* files = fm_file_info_list_new(); QModelIndexList::const_iterator it; - for(it = selIndexes.constBegin(); it != selIndexes.constEnd(); it++) { + for(it = selIndexes.constBegin(); it != selIndexes.constEnd(); ++it) { FmFileInfo* file = model_->fileInfoFromIndex(*it); fm_file_info_list_push_tail(files, file); } @@ -905,15 +935,13 @@ void FolderView::onFileClicked(int type, FmFileInfo* fileInfo) { } } else { - FmFolder* _folder = folder(); - FmFileInfo* info = fm_folder_get_info(_folder); Fm::FolderMenu* folderMenu = new Fm::FolderMenu(this); prepareFolderMenu(folderMenu); menu = folderMenu; } if (menu) { - menu->popup(QCursor::pos()); - connect(menu, &QMenu::aboutToHide, menu, &QMenu::deleteLater); + menu->exec(QCursor::pos()); + delete menu; } } } diff --git a/libfm-qt/folderview.h b/libfm-qt/folderview.h index 33d7f7b..61ff00a 100644 --- a/libfm-qt/folderview.h +++ b/libfm-qt/folderview.h @@ -63,13 +63,13 @@ public: friend class FolderViewTreeView; friend class FolderViewListView; - + explicit FolderView(ViewMode _mode = IconMode, QWidget* parent = 0); virtual ~FolderView(); void setViewMode(ViewMode _mode); ViewMode viewMode() const; - + void setIconSize(ViewMode mode, QSize size); QSize iconSize(ViewMode mode) const; @@ -77,7 +77,7 @@ public: ProxyFolderModel* model() const; void setModel(ProxyFolderModel* _model); - + FmFolder* folder() { return model_ ? static_cast(model_->sourceModel())->folder() : NULL; } @@ -122,7 +122,7 @@ protected: virtual void childDragMoveEvent(QDragMoveEvent* e); virtual void childDragLeaveEvent(QDragLeaveEvent* e); virtual void childDropEvent(QDropEvent* e); - + void emitClickedAt(ClickType type, const QPoint& pos); QModelIndexList selectedRows ( int column = 0 ) const; @@ -130,7 +130,7 @@ protected: virtual void prepareFileMenu(Fm::FileMenu* menu); virtual void prepareFolderMenu(Fm::FolderMenu* menu); - + virtual bool eventFilter(QObject* watched, QEvent* event); void updateGridSize(); // called when view mode, icon size, or font size is changed diff --git a/libfm-qt/folderview_p.h b/libfm-qt/folderview_p.h index 38944e2..c73ef32 100644 --- a/libfm-qt/folderview_p.h +++ b/libfm-qt/folderview_p.h @@ -45,7 +45,7 @@ public: virtual void dragMoveEvent(QDragMoveEvent* e); virtual void dragLeaveEvent(QDragLeaveEvent* e); virtual void dropEvent(QDropEvent* e); - + virtual QModelIndex indexAt(const QPoint & point) const; inline void setPositionForIndex(const QPoint & position, const QModelIndex & index) { @@ -80,10 +80,11 @@ public: virtual void dragMoveEvent(QDragMoveEvent* e); virtual void dragLeaveEvent(QDragLeaveEvent* e); virtual void dropEvent(QDropEvent* e); - + virtual void rowsInserted(const QModelIndex& parent,int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex& parent,int start, int end); virtual void dataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight); + virtual void reset(); virtual void resizeEvent(QResizeEvent* event); void queueLayoutColumns(); @@ -94,6 +95,7 @@ Q_SIGNALS: private Q_SLOTS: void layoutColumns(); void activation(const QModelIndex &index); + void onSortFilterChanged(); private: bool doingLayout_; diff --git a/libfm-qt/fontbutton.h b/libfm-qt/fontbutton.h index bba7d45..f260f8f 100644 --- a/libfm-qt/fontbutton.h +++ b/libfm-qt/fontbutton.h @@ -36,12 +36,12 @@ public: QFont font() { return font_; } - + void setFont(QFont font); - + Q_SIGNALS: void changed(); - + private Q_SLOTS: void onClicked(); diff --git a/libfm-qt/icontheme.h b/libfm-qt/icontheme.h index 0b6ddec..eee8555 100644 --- a/libfm-qt/icontheme.h +++ b/libfm-qt/icontheme.h @@ -27,7 +27,7 @@ #include "libfm/fm.h" namespace Fm { - + // NOTE: // Qt seems to has its own QIcon pixmap caching mechanism internally. // Besides, it also caches QIcon objects created by QIcon::fromTheme(). @@ -49,7 +49,7 @@ public: static IconTheme* instance(); static QIcon icon(FmIcon* fmicon); static QIcon icon(GIcon* gicon); - + static void checkChanged(); // check if current icon theme name is changed Q_SIGNALS: void changed(); // emitted when the name of current icon theme is changed diff --git a/libfm-qt/libfmqt.cpp b/libfm-qt/libfmqt.cpp index 769cc4f..ba59d2e 100644 --- a/libfm-qt/libfmqt.cpp +++ b/libfm-qt/libfmqt.cpp @@ -24,7 +24,7 @@ #include "thumbnailloader.h" namespace Fm { - + struct LibFmQtData { LibFmQtData(); ~LibFmQtData(); @@ -33,6 +33,7 @@ struct LibFmQtData { ThumbnailLoader* thumbnailLoader; QTranslator translator; int refCount; + Q_DISABLE_COPY(LibFmQtData) }; static LibFmQtData* theLibFmData = NULL; diff --git a/libfm-qt/mountoperation.cpp b/libfm-qt/mountoperation.cpp index 469d351..61956f6 100644 --- a/libfm-qt/mountoperation.cpp +++ b/libfm-qt/mountoperation.cpp @@ -37,7 +37,7 @@ MountOperation::MountOperation(bool interactive, QWidget* parent): cancellable_(g_cancellable_new()), eventLoop(NULL), autoDestroy_(true) { - + g_signal_connect(op, "ask-password", G_CALLBACK(onAskPassword), this); g_signal_connect(op, "ask-question", G_CALLBACK(onAskQuestion), this); // g_signal_connect(op, "reply", G_CALLBACK(onReply), this); diff --git a/libfm-qt/mountoperation.h b/libfm-qt/mountoperation.h index 8d94311..1209935 100644 --- a/libfm-qt/mountoperation.h +++ b/libfm-qt/mountoperation.h @@ -45,7 +45,7 @@ Q_OBJECT public: explicit MountOperation(bool interactive = true, QWidget* parent = 0); ~MountOperation(); - + void mount(FmPath* path) { GFile* gf = fm_path_to_gfile(path); g_file_mount_enclosing_volume(gf, G_MOUNT_MOUNT_NONE, op, cancellable_, (GAsyncReadyCallback)onMountFileFinished, new QPointer(this)); @@ -53,7 +53,7 @@ public: } void mount(GVolume* volume) { - g_volume_mount(volume, G_MOUNT_MOUNT_NONE, op, cancellable_, (GAsyncReadyCallback)onMountVolumeFinished, new QPointer(this)); + g_volume_mount(volume, G_MOUNT_MOUNT_NONE, op, cancellable_, (GAsyncReadyCallback)onMountVolumeFinished, new QPointer(this)); } void unmount(GMount* mount) { @@ -68,7 +68,7 @@ public: unmount(mount); g_object_unref(mount); } - + void eject(GMount* mount) { prepareUnmount(mount); g_mount_eject_with_operation(mount, G_MOUNT_UNMOUNT_NONE, op, cancellable_, (GAsyncReadyCallback)onEjectMountFinished, new QPointer(this)); @@ -92,11 +92,11 @@ public: GCancellable* cancellable() const { return cancellable_; } - + GMountOperation* mountOperation() { return op; } - + void cancel() { g_cancellable_cancel(cancellable_); } diff --git a/libfm-qt/mountoperationpassworddialog.cpp b/libfm-qt/mountoperationpassworddialog.cpp index e360d29..9f0eb0f 100644 --- a/libfm-qt/mountoperationpassworddialog.cpp +++ b/libfm-qt/mountoperationpassworddialog.cpp @@ -104,7 +104,7 @@ void MountOperationPasswordDialog::done(int r) { GMountOperation* gmop = mountOperation->mountOperation(); if(r == QDialog::Accepted) { - + if(needUserName) g_mount_operation_set_username(gmop, ui->username->text().toUtf8()); if(needDomain) diff --git a/libfm-qt/mountoperationpassworddialog_p.h b/libfm-qt/mountoperationpassworddialog_p.h index 410d92d..5ce3d7c 100644 --- a/libfm-qt/mountoperationpassworddialog_p.h +++ b/libfm-qt/mountoperationpassworddialog_p.h @@ -30,7 +30,7 @@ namespace Ui { }; namespace Fm { - + class MountOperation; class MountOperationPasswordDialog : public QDialog { @@ -48,7 +48,7 @@ public: private Q_SLOTS: void onAnonymousToggled(bool checked); - + private: Ui::MountOperationPasswordDialog* ui; MountOperation* mountOperation; diff --git a/libfm-qt/mountoperationquestiondialog_p.h b/libfm-qt/mountoperationquestiondialog_p.h index fb5a705..0915067 100644 --- a/libfm-qt/mountoperationquestiondialog_p.h +++ b/libfm-qt/mountoperationquestiondialog_p.h @@ -39,7 +39,7 @@ public: private Q_SLOTS: void onButtonClicked(QAbstractButton* button); - + private: MountOperation* mountOperation; QAbstractButton** choiceButtons; diff --git a/libfm-qt/path.h b/libfm-qt/path.h index 2efb5be..de6b53c 100644 --- a/libfm-qt/path.h +++ b/libfm-qt/path.h @@ -29,7 +29,7 @@ namespace Fm { class LIBFM_QT_API Path { public: - + Path(): data_(NULL) { } @@ -129,7 +129,7 @@ public: bool isTrash() { return fm_path_is_trash(data_); } - + bool isTrashRoot() { return fm_path_is_trash_root(data_); } @@ -169,13 +169,13 @@ public: g_free(dispname); return str; } - + /* char* displayBasename() { return fm_path_display_basename(data_); } */ - + QString displayBasename() { char* basename = fm_path_display_basename(data_); QString s = QString::fromUtf8(basename); diff --git a/libfm-qt/placesmodel.cpp b/libfm-qt/placesmodel.cpp index d0dab01..2434a94 100644 --- a/libfm-qt/placesmodel.cpp +++ b/libfm-qt/placesmodel.cpp @@ -37,7 +37,6 @@ PlacesModel::PlacesModel(QObject* parent): setColumnCount(2); - PlacesModelItem* item; placesRoot = new QStandardItem(tr("Places")); placesRoot->setSelectable(false); placesRoot->setColumnCount(2); @@ -52,7 +51,8 @@ PlacesModel::PlacesModel(QObject* parent): createTrashItem(); FmPath* path; - if(isUriSchemeSupported("computer")) { + // FIXME: add an option to hide network:/// + if(true) { path = fm_path_new_for_uri("computer:///"); computerItem = new PlacesModelItem("computer", tr("Computer"), path); fm_path_unref(path); @@ -61,6 +61,7 @@ PlacesModel::PlacesModel(QObject* parent): else computerItem = NULL; + // FIXME: add an option to hide applications:/// const char* applicaion_icon_names[] = {"system-software-install", "applications-accessories", "application-x-executable"}; // NOTE: g_themed_icon_new_from_names() accepts char**, but actually const char** is OK. GIcon* gicon = g_themed_icon_new_from_names((char**)applicaion_icon_names, G_N_ELEMENTS(applicaion_icon_names)); @@ -70,7 +71,8 @@ PlacesModel::PlacesModel(QObject* parent): fm_icon_unref(fmicon); placesRoot->appendRow(applicationsItem); - if(isUriSchemeSupported("network")) { + // FIXME: add an option to hide network:/// + if(true) { const char* network_icon_names[] = {"network", "folder-network", "folder"}; // NOTE: g_themed_icon_new_from_names() accepts char**, but actually const char** is OK. gicon = g_themed_icon_new_from_names((char**)network_icon_names, G_N_ELEMENTS(network_icon_names)); @@ -118,7 +120,7 @@ PlacesModel::PlacesModel(QObject* parent): if(volume) g_object_unref(volume); else { /* network mounts or others */ - item = new PlacesModelMountItem(mount); + PlacesModelItem* item = new PlacesModelMountItem(mount); devicesRoot->appendRow(item); } g_object_unref(mount); diff --git a/libfm-qt/placesmodel.h b/libfm-qt/placesmodel.h index f94a37a..6a6cc2a 100644 --- a/libfm-qt/placesmodel.h +++ b/libfm-qt/placesmodel.h @@ -29,7 +29,7 @@ #include namespace Fm { - + class PlacesModelItem; class PlacesModelVolumeItem; class PlacesModelMountItem; @@ -79,7 +79,7 @@ public Q_SLOTS: void updateTrash(); protected: - + PlacesModelItem* itemFromPath(FmPath* path); PlacesModelItem* itemFromPath(QStandardItem* rootItem, FmPath* path); PlacesModelVolumeItem* itemFromVolume(GVolume* volume); @@ -93,17 +93,17 @@ protected: Qt::DropActions supportedDropActions() const; void createTrashItem(); - + private: void loadBookmarks(); - + static void onVolumeAdded(GVolumeMonitor* monitor, GVolume* volume, PlacesModel* pThis); static void onVolumeRemoved(GVolumeMonitor* monitor, GVolume* volume, PlacesModel* pThis); static void onVolumeChanged(GVolumeMonitor* monitor, GVolume* volume, PlacesModel* pThis); static void onMountAdded(GVolumeMonitor* monitor, GMount* mount, PlacesModel* pThis); static void onMountRemoved(GVolumeMonitor* monitor, GMount* mount, PlacesModel* pThis); static void onMountChanged(GVolumeMonitor* monitor, GMount* mount, PlacesModel* pThis); - + static void onBookmarksChanged(FmBookmarks* bookmarks, PlacesModel* pThis); static void onTrashChanged(GFileMonitor *monitor, GFile *gf, GFile *other, GFileMonitorEvent evt, PlacesModel* pThis); diff --git a/libfm-qt/placesmodelitem.cpp b/libfm-qt/placesmodelitem.cpp index af9b885..cb999e3 100644 --- a/libfm-qt/placesmodelitem.cpp +++ b/libfm-qt/placesmodelitem.cpp @@ -130,8 +130,10 @@ PlacesModelVolumeItem::PlacesModelVolumeItem(GVolume* volume): void PlacesModelVolumeItem::update() { // set title - setText(QString::fromUtf8(g_volume_get_name(volume_))); - + char* volumeName = g_volume_get_name(volume_); + setText(QString::fromUtf8(volumeName)); + g_free(volumeName); + // set icon GIcon* gicon = g_volume_get_icon(volume_); setIcon(gicon); @@ -171,14 +173,14 @@ PlacesModelMountItem::PlacesModelMountItem(GMount* mount): void PlacesModelMountItem::update() { // set title setText(QString::fromUtf8(g_mount_get_name(mount_))); - + // set path GFile* mount_root = g_mount_get_root(mount_); FmPath* mount_path = fm_path_new_for_gfile(mount_root); setPath(mount_path); fm_path_unref(mount_path); g_object_unref(mount_root); - + // set icon GIcon* gicon = g_mount_get_icon(mount_); setIcon(gicon); diff --git a/libfm-qt/placesview.cpp b/libfm-qt/placesview.cpp index a13e26a..0d82888 100644 --- a/libfm-qt/placesview.cpp +++ b/libfm-qt/placesview.cpp @@ -193,6 +193,38 @@ void PlacesView::onEmptyTrash() { fm_path_list_unref(files); } +void PlacesView::onMoveBookmarkUp() +{ + PlacesModel::ItemAction* action = static_cast(sender()); + if(!action->index().isValid()) + return; + PlacesModelBookmarkItem* item = static_cast(model_->itemFromIndex(action->index())); + + int row = item->row(); + if(row > 0) { + FmBookmarkItem* bookmarkItem = item->bookmark(); + FmBookmarks* bookmarks = fm_bookmarks_dup(); + fm_bookmarks_reorder(bookmarks, bookmarkItem, row - 1); + g_object_unref(bookmarks); + } +} + +void PlacesView::onMoveBookmarkDown() +{ + PlacesModel::ItemAction* action = static_cast(sender()); + if(!action->index().isValid()) + return; + PlacesModelBookmarkItem* item = static_cast(model_->itemFromIndex(action->index())); + + int row = item->row(); + if(row < model_->rowCount()) { + FmBookmarkItem* bookmarkItem = item->bookmark(); + FmBookmarks* bookmarks = fm_bookmarks_dup(); + fm_bookmarks_reorder(bookmarks, bookmarkItem, row + 1); + g_object_unref(bookmarks); + } +} + void PlacesView::onDeleteBookmark() { PlacesModel::ItemAction* action = static_cast(sender()); if(!action->index().isValid()) @@ -215,6 +247,26 @@ void PlacesView::commitData(QWidget * editor) { g_object_unref(bookmarks); } +void PlacesView::onOpenNewTab() +{ + PlacesModel::ItemAction* action = static_cast(sender()); + if(!action->index().isValid()) + return; + PlacesModelItem* item = static_cast(model_->itemFromIndex(action->index())); + if(item) + Q_EMIT chdirRequested(1, item->path()); +} + +void PlacesView::onOpenNewWindow() +{ + PlacesModel::ItemAction* action = static_cast(sender()); + if(!action->index().isValid()) + return; + PlacesModelItem* item = static_cast(model_->itemFromIndex(action->index())); + if(item) + Q_EMIT chdirRequested(2, item->path()); +} + void PlacesView::onRenameBookmark() { PlacesModel::ItemAction* action = static_cast(sender()); if(!action->index().isValid()) @@ -240,7 +292,6 @@ void PlacesView::onUnmountVolume() { if(!action->index().isValid()) return; PlacesModelVolumeItem* item = static_cast(model_->itemFromIndex(action->index())); - GMount* mount = NULL; MountOperation* op = new MountOperation(true, this); op->unmount(item->volume()); op->wait(); @@ -270,14 +321,25 @@ void PlacesView::onEjectVolume() { void PlacesView::contextMenuEvent(QContextMenuEvent* event) { QModelIndex index = indexAt(event->pos()); if(index.isValid() && index.parent().isValid()) { - QMenu* menu = NULL; + QMenu* menu = new QMenu(this); QAction* action; PlacesModelItem* item = static_cast(model_->itemFromIndex(index)); + + if(item->type() != PlacesModelItem::Mount + && (item->type() != PlacesModelItem::Volume + || static_cast(item)->isMounted())) { + action = new PlacesModel::ItemAction(item->index(), tr("Open in New Tab"), menu); + connect(action, &QAction::triggered, this, &PlacesView::onOpenNewTab); + menu->addAction(action); + action = new PlacesModel::ItemAction(item->index(), tr("Open in New Window"), menu); + connect(action, &QAction::triggered, this, &PlacesView::onOpenNewWindow); + menu->addAction(action); + } + switch(item->type()) { case PlacesModelItem::Places: { FmPath* path = item->path(); if(path && fm_path_equal(fm_path_get_trash(), path)) { - menu = new QMenu(this); action = new PlacesModel::ItemAction(item->index(), tr("Empty Trash"), menu); connect(action, &QAction::triggered, this, &PlacesView::onEmptyTrash); menu->addAction(action); @@ -286,18 +348,26 @@ void PlacesView::contextMenuEvent(QContextMenuEvent* event) { } case PlacesModelItem::Bookmark: { // create context menu for bookmark item - menu = new QMenu(this); - action = new PlacesModel::ItemAction(item->index(), tr("Rename"), menu); + if(item->index().row() > 0) { + action = new PlacesModel::ItemAction(item->index(), tr("Move Bookmark Up"), menu); + connect(action, &QAction::triggered, this, &PlacesView::onMoveBookmarkUp); + menu->addAction(action); + } + if(item->index().row() < model_->rowCount()) { + action = new PlacesModel::ItemAction(item->index(), tr("Move Bookmark Down"), menu); + connect(action, &QAction::triggered, this, &PlacesView::onMoveBookmarkDown); + menu->addAction(action); + } + action = new PlacesModel::ItemAction(item->index(), tr("Rename Bookmark"), menu); connect(action, &QAction::triggered, this, &PlacesView::onRenameBookmark); menu->addAction(action); - action = new PlacesModel::ItemAction(item->index(), tr("Delete"), menu); + action = new PlacesModel::ItemAction(item->index(), tr("Remove Bookmark"), menu); connect(action, &QAction::triggered, this, &PlacesView::onDeleteBookmark); menu->addAction(action); break; } case PlacesModelItem::Volume: { PlacesModelVolumeItem* volumeItem = static_cast(item); - menu = new QMenu(this); if(volumeItem->isMounted()) { action = new PlacesModel::ItemAction(item->index(), tr("Unmount"), menu); @@ -317,16 +387,17 @@ void PlacesView::contextMenuEvent(QContextMenuEvent* event) { break; } case PlacesModelItem::Mount: { - menu = new QMenu(this); action = new PlacesModel::ItemAction(item->index(), tr("Unmount"), menu); connect(action, &QAction::triggered, this, &PlacesView::onUnmountMount); menu->addAction(action); break; } } - if(menu) { + if(menu->actions().size()) { menu->popup(mapToGlobal(event->pos())); connect(menu, &QMenu::aboutToHide, menu, &QMenu::deleteLater); + } else { + menu->deleteLater(); } } } diff --git a/libfm-qt/placesview.h b/libfm-qt/placesview.h index 4959111..f2be686 100644 --- a/libfm-qt/placesview.h +++ b/libfm-qt/placesview.h @@ -29,7 +29,7 @@ namespace Fm { class PlacesModel; class PlacesModelItem; - + class LIBFM_QT_API PlacesView : public QTreeView { Q_OBJECT @@ -50,7 +50,7 @@ public: void chdir(FmPath* path) { setCurrentPath(path); } - + Q_SIGNALS: void chdirRequested(int type, FmPath* path); @@ -59,6 +59,9 @@ protected Q_SLOTS: void onPressed(const QModelIndex & index); // void onMountOperationFinished(GError* error); + void onOpenNewTab(); + void onOpenNewWindow(); + void onEmptyTrash(); void onMountVolume(); @@ -66,6 +69,8 @@ protected Q_SLOTS: void onEjectVolume(); void onUnmountMount(); + void onMoveBookmarkUp(); + void onMoveBookmarkDown(); void onDeleteBookmark(); void onRenameBookmark(); @@ -77,7 +82,7 @@ protected: virtual void dragMoveEvent(QDragMoveEvent* event); virtual void dropEvent(QDropEvent* event); virtual void contextMenuEvent(QContextMenuEvent* event); - + virtual void commitData(QWidget * editor); private: diff --git a/libfm-qt/proxyfoldermodel.cpp b/libfm-qt/proxyfoldermodel.cpp index b74cf3f..963e870 100644 --- a/libfm-qt/proxyfoldermodel.cpp +++ b/libfm-qt/proxyfoldermodel.cpp @@ -117,12 +117,12 @@ bool ProxyFolderModel::lessThan(const QModelIndex& left, const QModelIndex& righ if(srcModel) { FmFileInfo* leftInfo = srcModel->fileInfoFromIndex(left); FmFileInfo* rightInfo = srcModel->fileInfoFromIndex(right); - + if(folderFirst_) { bool leftIsFolder = (bool)fm_file_info_is_dir(leftInfo); bool rightIsFolder = (bool)fm_file_info_is_dir(rightInfo); if(leftIsFolder != rightIsFolder) - return leftIsFolder ? true : false; + return sortOrder() == Qt::AscendingOrder ? leftIsFolder : rightIsFolder; } switch(sortColumn()) { @@ -205,7 +205,7 @@ void ProxyFolderModel::setThumbnailSize(int size) { // reload all items, FIXME: can we only update items previously having thumbnails Q_EMIT dataChanged(index(0, 0), index(rowCount() - 1, 0)); } - + thumbnailSize_ = size; } } @@ -226,11 +226,10 @@ QVariant ProxyFolderModel::data(const QModelIndex& index, int role) const { } void ProxyFolderModel::onThumbnailLoaded(const QModelIndex& srcIndex, int size) { - - FolderModel* srcModel = static_cast(sourceModel()); - FolderModelItem* item = srcModel->itemFromIndex(srcIndex); + // FolderModel* srcModel = static_cast(sourceModel()); + // FolderModelItem* item = srcModel->itemFromIndex(srcIndex); // qDebug("ProxyFolderModel::onThumbnailLoaded: %d, %s", size, item->displayName.toUtf8().data()); - + if(size == thumbnailSize_) { // if a thumbnail of the size we want is loaded QModelIndex index = mapFromSource(srcIndex); Q_EMIT dataChanged(index, index); @@ -246,7 +245,7 @@ void ProxyFolderModel::addFilter(ProxyFolderModelFilter* filter) { void ProxyFolderModel::removeFilter(ProxyFolderModelFilter* filter) { filters_.removeOne(filter); invalidateFilter(); - Q_EMIT sortFilterChanged(); + Q_EMIT sortFilterChanged(); } diff --git a/libfm-qt/proxyfoldermodel.h b/libfm-qt/proxyfoldermodel.h index e24567d..dc2f6d6 100644 --- a/libfm-qt/proxyfoldermodel.h +++ b/libfm-qt/proxyfoldermodel.h @@ -42,8 +42,6 @@ public: class LIBFM_QT_API ProxyFolderModel : public QSortFilterProxyModel { Q_OBJECT -public: - public: explicit ProxyFolderModel(QObject * parent = 0); virtual ~ProxyFolderModel(); diff --git a/libfm-qt/renamedialog.cpp b/libfm-qt/renamedialog.cpp index c9b5b8f..99fa43a 100644 --- a/libfm-qt/renamedialog.cpp +++ b/libfm-qt/renamedialog.cpp @@ -129,7 +129,7 @@ void RenameDialog::onFileNameChanged(QString newName) { renameButton_->setEnabled(hasNewName); renameButton_->setDefault(hasNewName); - // change default button to rename rather than overwrire + // change default button to rename rather than overwrire // if the user typed a new filename QPushButton* overwriteButton = static_cast(ui->buttonBox->button(QDialogButtonBox::Ok)); overwriteButton->setEnabled(!hasNewName); diff --git a/libfm-qt/renamedialog.h b/libfm-qt/renamedialog.h index b98ba27..df5a278 100644 --- a/libfm-qt/renamedialog.h +++ b/libfm-qt/renamedialog.h @@ -55,7 +55,7 @@ public: bool applyToAll() { return applyToAll_; } - + QString newName() { return newName_; } diff --git a/libfm-qt/sidepane.cpp b/libfm-qt/sidepane.cpp index c86497d..4929469 100644 --- a/libfm-qt/sidepane.cpp +++ b/libfm-qt/sidepane.cpp @@ -26,6 +26,7 @@ #include "dirtreeview.h" #include "dirtreemodel.h" #include "path.h" +#include "filemenu.h" namespace Fm { @@ -161,6 +162,7 @@ void SidePane::initDirTree() { // TODO DirTreeModel* model = new DirTreeModel(view_); FmFileInfoJob* job = fm_file_info_job_new(NULL, FM_FILE_INFO_JOB_NONE); + model->setShowHidden(showHidden_); GList* l; /* query FmFileInfo for home dir and root dir, and then, @@ -207,6 +209,16 @@ void SidePane::setMode(Mode mode) { dirTreeView->setIconSize(iconSize_); dirTreeView->setCurrentPath(currentPath_); connect(dirTreeView, &DirTreeView::chdirRequested, this, &SidePane::onDirTreeViewChdirRequested); + connect(dirTreeView, &DirTreeView::openFolderInNewWindowRequested, + this, &SidePane::openFolderInNewWindowRequested); + connect(dirTreeView, &DirTreeView::openFolderInNewTabRequested, + this, &SidePane::openFolderInNewTabRequested); + connect(dirTreeView, &DirTreeView::openFolderInTerminalRequested, + this, &SidePane::openFolderInTerminalRequested); + connect(dirTreeView, &DirTreeView::createNewFolderRequested, + this, &SidePane::createNewFolderRequested); + connect(dirTreeView, &DirTreeView::prepareFileMenu, + this, &SidePane::prepareFileMenu); break; } default:; @@ -216,19 +228,19 @@ void SidePane::setMode(Mode mode) { // g_signal_connect(sp->view, "item-popup", G_CALLBACK(on_item_popup), sp); verticalLayout->addWidget(view_); } - Q_EMIT modeChanged(); + Q_EMIT modeChanged(mode); } -bool SidePane::setShowHidden(bool show_hidden) { - if(view_ == NULL) - return false; - // TODO: SidePane::setShowHidden - - // spec = g_object_class_find_property(klass, "show-hidden"); - //if(spec == NULL || spec->value_type != G_TYPE_BOOLEAN) - // return false; /* isn't supported by view */ - // g_object_set(sp->view, "show-hidden", show_hidden, NULL); - return true; +void SidePane::setShowHidden(bool show_hidden) { + if(view_ == NULL || show_hidden == showHidden_) + return; + showHidden_ = show_hidden; + if(mode_ == ModeDirTree) { + DirTreeView* dirTreeView = static_cast(view_); + DirTreeModel* model = static_cast( dirTreeView->model()); + if(model) + model->setShowHidden(showHidden_); + } } } // namespace Fm diff --git a/libfm-qt/sidepane.h b/libfm-qt/sidepane.h index 67a7e32..d5afca6 100644 --- a/libfm-qt/sidepane.h +++ b/libfm-qt/sidepane.h @@ -31,6 +31,8 @@ class QWidget; namespace Fm { +class FileMenu; + class LIBFM_QT_API SidePane : public QWidget { Q_OBJECT @@ -51,7 +53,7 @@ public: } void setIconSize(QSize size); - + FmPath* currentPath() { return currentPath_; } @@ -82,7 +84,7 @@ public: QString modeTooltip(Mode mode); #endif - bool setShowHidden(bool show_hidden); + void setShowHidden(bool show_hidden); bool showHidden() { return showHidden_; @@ -101,7 +103,13 @@ public: Q_SIGNALS: void chdirRequested(int type, FmPath* path); - void modeChanged(); + void openFolderInNewWindowRequested(FmPath* path); + void openFolderInNewTabRequested(FmPath* path); + void openFolderInTerminalRequested(FmPath* path); + void createNewFolderRequested(FmPath* path); + void modeChanged(Fm::SidePane::Mode mode); + + void prepareFileMenu(Fm::FileMenu* menu); // emit before showing a Fm::FileMenu protected Q_SLOTS: void onPlacesViewChdirRequested(int type, FmPath* path); @@ -110,7 +118,7 @@ protected Q_SLOTS: private: void initDirTree(); - + private: FmPath* currentPath_; QWidget* view_; diff --git a/libfm-qt/thumbnailloader.cpp b/libfm-qt/thumbnailloader.cpp index 8b6a14b..bbab08e 100644 --- a/libfm-qt/thumbnailloader.cpp +++ b/libfm-qt/thumbnailloader.cpp @@ -82,7 +82,6 @@ bool ThumbnailLoader::localFilesOnly_ = true; int ThumbnailLoader::maxThumbnailFileSize_ = 0; ThumbnailLoader::ThumbnailLoader() { - gboolean success; // apply the settings to libfm fm_config->thumbnail_local = localFilesOnly_; fm_config->thumbnail_max = maxThumbnailFileSize_; @@ -98,7 +97,7 @@ ThumbnailLoader::ThumbnailLoader() { getImageText, setImageText }; - success = fm_thumbnail_loader_set_backend(&qt_backend); + gboolean success = fm_thumbnail_loader_set_backend(&qt_backend); } ThumbnailLoader::~ThumbnailLoader() { @@ -156,7 +155,7 @@ GObject* ThumbnailLoader::rotateImage(GObject* image, int degree) { // the real effect of the coordinate transformation becomes clockwise rotation. // So we need to use (360 - degree) here. // Quote from QMatrix API doc: - // Note that if you apply a QMatrix to a point defined in widget + // Note that if you apply a QMatrix to a point defined in widget // coordinates, the direction of the rotation will be clockwise because // the y-axis points downwards. QImage rotated = wrapper->image.transformed(QMatrix().rotate(360 - degree)); diff --git a/libfm-qt/thumbnailloader.h b/libfm-qt/thumbnailloader.h index e7811ed..00aeab9 100644 --- a/libfm-qt/thumbnailloader.h +++ b/libfm-qt/thumbnailloader.h @@ -33,7 +33,7 @@ class LIBFM_QT_API ThumbnailLoader { public: ThumbnailLoader(); virtual ~ThumbnailLoader(); - + static ThumbnailLoader* instance() { return theThumbnailLoader; } @@ -70,7 +70,7 @@ public: static int maxThumbnailFileSize() { return maxThumbnailFileSize_; } - + static void setMaxThumbnailFileSize(int size) { maxThumbnailFileSize_ = size; if(fm_config) diff --git a/libfm-qt/translations/libfm-qt_template.ts b/libfm-qt/translations/libfm-qt.ts similarity index 87% rename from libfm-qt/translations/libfm-qt_template.ts rename to libfm-qt/translations/libfm-qt.ts index 7adcf06..e5d7ed5 100644 --- a/libfm-qt/translations/libfm-qt_template.ts +++ b/libfm-qt/translations/libfm-qt.ts @@ -152,133 +152,133 @@ - + General - + Location: - + File type: - + Mime type: - + File size: - + On-disk size: - + Last modified: - + Link target: - + Open With: - + Last accessed: - + Permissions - + Ownership - - - + + + Group: - - - + + + Owner: - + Access Control - - + + Other: - + Make the file executable - - - + + + Read - - - + + + Write - - - + + + Execute - + Sticky - + SetUID - + SetGID - + Advanced Mode @@ -338,7 +338,7 @@ Fm::EditBookmarksDialog - + New bookmark @@ -364,6 +364,16 @@ What do you want to do with it? Open + + + Open With... + + + + + Other Applications + + &Restore @@ -390,31 +400,11 @@ What do you want to do with it? &Move to Trash - - - Output - - - - - &Delete - - Rename - - - Open With... - - - - - Other Applications - - Extract to... @@ -435,33 +425,43 @@ What do you want to do with it? Properties + + + Output + + + + + &Delete + + Fm::FileOperation - + Error - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? - - + + Confirm - + Do you want to delete the selected files? - + Do you want to move the selected files to trash can? @@ -688,27 +688,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name - + Type - + Size - + Modified - + Owner @@ -737,76 +737,96 @@ Do you want to delete them instead? Fm::PlacesModel - + Places - + Desktop - - - Trash - - Computer - + Applications - + Network - + Devices - + Bookmarks + + + Trash + + Fm::PlacesView - + + Open in New Tab + + + + + Open in New Window + + + + Empty Trash - - Rename + + Move Bookmark Up - - Delete + + Move Bookmark Down - - + + Rename Bookmark + + + + + Remove Bookmark + + + + + Unmount - + Mount - + Eject @@ -919,54 +939,59 @@ Modified: %3 QObject + + + Rename File + + + + + Please enter a new name: + + - + Error - - Rename File + + Create Folder - - Please enter a new name: + + Create File - + Please enter a new file name: - + New text file - + Please enter a new folder name: - + New folder - + Enter a name for the new %1: - - - Create File - - RenameDialog diff --git a/libfm-qt/translations/libfm-qt_ar.ts b/libfm-qt/translations/libfm-qt_ar.ts index 6ae9dcd..b465df3 100644 --- a/libfm-qt/translations/libfm-qt_ar.ts +++ b/libfm-qt/translations/libfm-qt_ar.ts @@ -152,133 +152,133 @@ - + General - + Location: - + File type: - + Mime type: - + File size: - + On-disk size: - + Last modified: - + Link target: - + Open With: - + Last accessed: - + Permissions - + Ownership - - - + + + Group: - - - + + + Owner: - + Access Control - - + + Other: - + Make the file executable - - - + + + Read - - - + + + Write - - - + + + Execute - + Sticky - + SetUID - + SetGID - + Advanced Mode @@ -338,7 +338,7 @@ Fm::EditBookmarksDialog - + New bookmark @@ -439,29 +439,29 @@ What do you want to do with it? Fm::FileOperation - + Error - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? - - + + Confirm - + Do you want to delete the selected files? - + Do you want to move the selected files to trash can? @@ -688,27 +688,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name - + Type - + Size - + Modified - + Owner @@ -737,17 +737,17 @@ Do you want to delete them instead? Fm::PlacesModel - + Places - + Desktop - + Trash @@ -757,22 +757,22 @@ Do you want to delete them instead? - + Applications - + Network - + Devices - + Bookmarks @@ -780,33 +780,53 @@ Do you want to delete them instead? Fm::PlacesView - + Empty Trash - - Rename + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down - - Delete + + Rename Bookmark - - + + Remove Bookmark + + + + + Unmount - + Mount - + Eject @@ -921,7 +941,7 @@ Modified: %3 QObject - + Error @@ -938,32 +958,37 @@ Modified: %3 - + + Create Folder + + + + Please enter a new file name: - + New text file - + Please enter a new folder name: - + New folder - + Enter a name for the new %1: - + Create File diff --git a/libfm-qt/translations/libfm-qt_cs_CZ.ts b/libfm-qt/translations/libfm-qt_cs_CZ.ts index 3e01149..2a8475f 100644 --- a/libfm-qt/translations/libfm-qt_cs_CZ.ts +++ b/libfm-qt/translations/libfm-qt_cs_CZ.ts @@ -152,133 +152,133 @@ - + General - + Location: - + File type: - + Mime type: - + File size: - + On-disk size: - + Last modified: - + Link target: - + Open With: - + Last accessed: - + Permissions - + Ownership - - - + + + Group: - - - + + + Owner: - + Access Control - - + + Other: - + Make the file executable - - - + + + Read - - - + + + Write - - - + + + Execute - + Sticky - + SetUID - + SetGID - + Advanced Mode @@ -338,7 +338,7 @@ Fm::EditBookmarksDialog - + New bookmark Nová záložka @@ -439,29 +439,29 @@ What do you want to do with it? Fm::FileOperation - + Error Chyba - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? - - + + Confirm - + Do you want to delete the selected files? - + Do you want to move the selected files to trash can? @@ -688,27 +688,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name Jméno - + Type Typ - + Size Velikost - + Modified Změněno - + Owner Vlastník @@ -737,17 +737,17 @@ Do you want to delete them instead? Fm::PlacesModel - + Places Místa - + Desktop - + Trash @@ -757,22 +757,22 @@ Do you want to delete them instead? - + Applications - + Network - + Devices - + Bookmarks @@ -780,33 +780,61 @@ Do you want to delete them instead? Fm::PlacesView - + Empty Trash Vysypat koš - Rename - Přejmenovat + Přejmenovat - Delete - Smazat + Smazat + + + + Open in New Tab + - - + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + + + + + Unmount Odpojit - + Mount Připojit - + Eject Vysunout @@ -921,7 +949,7 @@ Modified: %3 QObject - + Error @@ -938,32 +966,37 @@ Modified: %3 Prosím zadej nové jméno: - + + Create Folder + + + + Please enter a new file name: Prosím zadej nové jméno souboru: - + New text file Nový textový soubor - + Please enter a new folder name: Prosím zadej nové jméno složky: - + New folder Nová složka - + Enter a name for the new %1: Zadej jméno pro nový %1: - + Create File Vytvořit soubor diff --git a/libfm-qt/translations/libfm-qt_de.ts b/libfm-qt/translations/libfm-qt_de.ts index 5b7bef2..d9f6daf 100644 --- a/libfm-qt/translations/libfm-qt_de.ts +++ b/libfm-qt/translations/libfm-qt_de.ts @@ -158,133 +158,133 @@ Dateieigenschaften - + General Allgemeines - + Location: Ort: - + File type: Dateityp: - + Mime type: MIME-Typ: - + File size: Dateigröße: - + On-disk size: Größe auf dem Datenträger: - + Last modified: Letztes Änderungsdatum: - + Link target: Verknüpfungsziel: - + Open With: Öffnen mit: - + Last accessed: Letzter Zugriff: - + Permissions Berechtigungen - + Ownership Besitz - - - + + + Group: Gruppe: - - - + + + Owner: Besitzer: - + Access Control Zugriffskontrolle - - + + Other: Andere: - + Make the file executable Datei ausführbar machen - - - + + + Read Lesen - - - + + + Write Schreiben - - - + + + Execute Ausführen - + Sticky "Sticky bit" - + SetUID SetUID - + SetGID SetGID - + Advanced Mode Erweiterte Einstellungen @@ -344,7 +344,7 @@ Fm::EditBookmarksDialog - + New bookmark Neuer Favorit @@ -446,30 +446,30 @@ Was möchten Sie damit tun? Fm::FileOperation - + Error Fehler - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Einige Dateien können nicht in den Papierkorb verschoben werden, da die zugrundeliegenden Dateisysteme den Vorgang nicht unterstützen. Sollen die Dateien stattdessen gelöscht werden? - - + + Confirm Bestätigung - + Do you want to delete the selected files? Möchten Sie die ausgewählten Dateien löschen? - + Do you want to move the selected files to trash can? Möchten Sie die ausgewählten Dateien in den Papierkorb verschieben? @@ -696,27 +696,27 @@ Sollen die Dateien stattdessen gelöscht werden? Fm::FolderModel - + Name Name - + Type Typ - + Size Größe - + Modified Geändert - + Owner Besitzer @@ -745,17 +745,17 @@ Sollen die Dateien stattdessen gelöscht werden? Fm::PlacesModel - + Places Orte - + Desktop - Arbeitsplatz + Schreibtisch - + Trash Papierkorb @@ -765,22 +765,22 @@ Sollen die Dateien stattdessen gelöscht werden? Rechner - + Applications Anwendungen - + Network Netzwerk - + Devices Geräte - + Bookmarks Favoriten @@ -788,33 +788,61 @@ Sollen die Dateien stattdessen gelöscht werden? Fm::PlacesView - + Empty Trash Papierkorb leeren - Rename - Umbenennen + Umbenennen - Delete - Löschen + Löschen + + + + Open in New Tab + + + + + Open in New Window + - - + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + + + + + Unmount Aushängen - + Mount Einhängen - + Eject Auswerfen @@ -933,7 +961,7 @@ Geändert: %3 QObject - + Error @@ -950,32 +978,37 @@ Geändert: %3 Bitte geben Sie einen neuen Namen ein: - + + Create Folder + + + + Please enter a new file name: Bitte geben Sie einen neuen Dateinamen ein: - + New text file Neue Textdatei - + Please enter a new folder name: Bitte geben Sie einen neuen Ordnernamen ein: - + New folder Neuer Ordner - + Enter a name for the new %1: Geben Sie einen Namen für %1 ein: - + Create File Datei erstellen diff --git a/libfm-qt/translations/libfm-qt_es.ts b/libfm-qt/translations/libfm-qt_es.ts index 65f3729..0e8abd6 100644 --- a/libfm-qt/translations/libfm-qt_es.ts +++ b/libfm-qt/translations/libfm-qt_es.ts @@ -158,133 +158,133 @@ Propiedades de Archivo - + General General - + Location: Localización: - + File type: Tipo de archivo: - + Mime type: Tipo Mime: - + File size: Tamaño del archivo: - + On-disk size: Tamaño en disco: - + Last modified: Última modificación: - + Link target: Destino del enlace: - + Open With: Abrir con: - + Last accessed: Último acceso: - + Permissions Permisos - + Ownership Propiedad - - - + + + Group: Grupo: - - - + + + Owner: Dueño: - + Access Control Control de acceso - - + + Other: Otro: - + Make the file executable Marcar como ejecutable - - - + + + Read Lectura - - - + + + Write Escritura - - - + + + Execute Ejecución - + Sticky Sticky - + SetUID SetUID - + SetGID SetGID - + Advanced Mode Modo avanzado @@ -344,7 +344,7 @@ Fm::EditBookmarksDialog - + New bookmark Nuevo marcador @@ -446,30 +446,30 @@ What do you want to do with it? Fm::FileOperation - + Error Error - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Algunos archivos no pueden moverse a la papelera porque el subsistema de archivos no permite esta operación. ¿Quiere eliminarlos en su lugar? - - + + Confirm Confirmación - + Do you want to delete the selected files? ¿Quiere borrar los archivos seleccionados? - + Do you want to move the selected files to trash can? ¿Quiere mover los archivos seleccionados a la papelera? @@ -696,27 +696,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name Nombre - + Type Tipo - + Size Tamaño - + Modified Modificado - + Owner Dueño @@ -745,12 +745,12 @@ Do you want to delete them instead? Fm::PlacesModel - + Places Lugares - + Desktop Escritorio @@ -760,27 +760,27 @@ Do you want to delete them instead? Sistema - + Applications Aplicaciones - + Network Red - + Devices Dispositivos - + Bookmarks Marcadores - + Trash Papelera @@ -788,33 +788,61 @@ Do you want to delete them instead? Fm::PlacesView - + Empty Trash Vaciar Papelera - Rename - Renombrar + Renombrar - Delete - Borrar + Borrar + + + + Open in New Tab + + + + + Open in New Window + - - + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + + + + + Unmount Desmontar - + Mount Montar - + Eject Expulsar @@ -933,7 +961,7 @@ Modificado: %3 QObject - + Error @@ -950,32 +978,37 @@ Modificado: %3 Introduzca un nuevo nombre: - + + Create Folder + + + + Please enter a new file name: Introduzca un nuevo nombre de archivo: - + New text file Nuevo archivo de texto - + Please enter a new folder name: Ingrese un nuevo nombre de directorio: - + New folder Nuevo directorio - + Enter a name for the new %1: Ingresar un nombre para el nuevo %1: - + Create File Crear Archivo diff --git a/libfm-qt/translations/libfm-qt_fr.ts b/libfm-qt/translations/libfm-qt_fr.ts index 93c926b..3890a10 100644 --- a/libfm-qt/translations/libfm-qt_fr.ts +++ b/libfm-qt/translations/libfm-qt_fr.ts @@ -152,133 +152,133 @@ Propriétés du fichier - + General Général - + Location: Emplacement : - + File type: Type de fichier : - + Mime type: Type Mime : - + File size: Taille du fichier : - + On-disk size: Taille sur le disque : - + Last modified: Date de dernière modification : - + Link target: Cible du lien : - + Open With: Ouvrir avec : - + Last accessed: Date de dernier accès : - + Permissions Droits d'accès - + Ownership Propriété - - - + + + Group: Groupe : - - - + + + Owner: Propriétaire : - + Access Control Contrôle d'accès - - + + Other: Autre : - + Make the file executable Rendre le fichier exécutable - - - + + + Read Lecture - - - + + + Write Écriture - - - + + + Execute Exécution - + Sticky Permanent - + SetUID SetUID - + SetGID SetGID - + Advanced Mode Mode avancé @@ -338,7 +338,7 @@ Fm::EditBookmarksDialog - + New bookmark Nouveau signet @@ -443,30 +443,30 @@ What do you want to do with it? Fm::FileOperation - + Error Erreur - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Certains fichiers ne peuvent pas être mis à la corbeille car les systèmes de fichiers sous-jacents ne prennent pas en charge cette opération. Voulez-vous plutôt les supprimer ? - - + + Confirm Confirmer - + Do you want to delete the selected files? Voulez-vous supprimer les fichiers sélectionnés ? - + Do you want to move the selected files to trash can? Voulez-vous mettre les fichiers sélectionnés à la corbeille ? @@ -697,27 +697,27 @@ Voulez-vous plutôt les supprimer ? Fm::FolderModel - + Name Nom - + Type Type - + Size Taille - + Modified Modifié - + Owner Propriétaire @@ -746,17 +746,17 @@ Voulez-vous plutôt les supprimer ? Fm::PlacesModel - + Places Emplacements - + Desktop Bureau - + Trash Corbeille @@ -766,22 +766,22 @@ Voulez-vous plutôt les supprimer ? Ordinateur - + Applications Applications - + Network Réseau - + Devices Appareils - + Bookmarks Signets @@ -789,33 +789,61 @@ Voulez-vous plutôt les supprimer ? Fm::PlacesView - + Empty Trash - Rename - Renommer + Renommer - Delete - Supprimer + Supprimer + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + - - + + Unmount Démonter - + Mount Monter - + Eject Éjecter @@ -934,7 +962,7 @@ Modification : %3 QObject - + Error @@ -951,32 +979,37 @@ Modification : %3 Veuillez entrer un nouveau nom : - + + Create Folder + + + + Please enter a new file name: Veuillez entrer un nouveau nom de fichier : - + New text file Nouveau fichier texte - + Please enter a new folder name: Veuillez entrer un nouveau nom de répertoire : - + New folder Nouveau répertoire - + Enter a name for the new %1: - + Create File Créer un fichier diff --git a/libfm-qt/translations/libfm-qt_gl.ts b/libfm-qt/translations/libfm-qt_gl.ts index 588d8eb..a7007c0 100644 --- a/libfm-qt/translations/libfm-qt_gl.ts +++ b/libfm-qt/translations/libfm-qt_gl.ts @@ -152,133 +152,133 @@ Propiedades do ficheiro - + General Xeral - + Location: Localización - + File type: Tipo de ficheiro: - + Mime type: Tipo MIME: - + File size: Tamaño do ficheiro: - + On-disk size: Tamaño no disco: - + Last modified: Última modificación: - + Link target: Destino da ligazón: - + Open With: Abrir con: - + Last accessed: Último acceso: - + Permissions Permisos - + Ownership Dono - - - + + + Group: Grupo: - - - + + + Owner: Propietario: - + Access Control Control de acceso - - + + Other: Outros: - + Make the file executable Facer que o ficheiro sexa executábel - - - + + + Read Lectura - - - + + + Write Escritura - - - + + + Execute Execución - + Sticky Persistente - + SetUID Estabelecer o UID - + SetGID Estabelecer o GID - + Advanced Mode Modo avanzado @@ -338,7 +338,7 @@ Fm::EditBookmarksDialog - + New bookmark Novo marcador @@ -443,30 +443,30 @@ What do you want to do with it? Fm::FileOperation - + Error Erro - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Algúns ficheiros non poden enviarse ao cesto do lixo porque o subsistema de ficheiros non permite esta operación. Desexa eliminalos no seu canto? - - + + Confirm Confirmar - + Do you want to delete the selected files? Quere eliminar os ficheiros seleccionados? - + Do you want to move the selected files to trash can? Quere mover os ficheiros seleccionados ao cesto do lixo? @@ -697,27 +697,27 @@ Desexa eliminalos no seu canto? Fm::FolderModel - + Name Nome - + Type Tipo - + Size Tamaño - + Modified Modificado - + Owner Propietario @@ -746,17 +746,17 @@ Desexa eliminalos no seu canto? Fm::PlacesModel - + Places Lugares - + Desktop Escritorio - + Trash Lixo @@ -766,22 +766,22 @@ Desexa eliminalos no seu canto? Computador - + Applications Aplicacións - + Network Rede - + Devices Dispositivos - + Bookmarks Marcadores @@ -789,33 +789,61 @@ Desexa eliminalos no seu canto? Fm::PlacesView - + Empty Trash - Rename - Renomear + Renomear - Delete - Eliminar + Eliminar + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + - - + + Unmount Desmontar - + Mount Montar - + Eject Expulsar @@ -934,7 +962,7 @@ Modificado: %3 QObject - + Error @@ -951,32 +979,37 @@ Modificado: %3 Introduza un nome novo: - + + Create Folder + + + + Please enter a new file name: Introduza un novo nome de ficheiro: - + New text file Novo ficheiro de texto - + Please enter a new folder name: Introduza un nome novo para o cartafol: - + New folder Novo cartafol - + Enter a name for the new %1: - + Create File Crear un ficheiro diff --git a/libfm-qt/translations/libfm-qt_hu.ts b/libfm-qt/translations/libfm-qt_hu.ts new file mode 100644 index 0000000..98cabf2 --- /dev/null +++ b/libfm-qt/translations/libfm-qt_hu.ts @@ -0,0 +1,1065 @@ + + + + + AppChooserDialog + + + Choose an Application + Alkalmazás választás + + + + Installed Applications + Telepített alkalmazások + + + + Custom Command + Egyéb parancs + + + + Command line to execute: + Végrehajtandó parancs: + + + + Application name: + Alkalmazás neve: + + + + <b>These special codes can be used in the command line:</b> +<ul> +<li><b>%f</b>: Represents a single file name</li> +<li><b>%F</b>: Represents multiple file names</li> +<li><b>%u</b>: Represents a single URI of the file</li> +<li><b>%U</b>: Represents multiple URIs</li> +</ul> + <b>A parancssorban használható speciális karakterek:</b> +<ul> +<li><b>%f</b>: Egy fájnév</li> +<li><b>%F</b>: Több fájlnév</li> +<li><b>%u</b>: Egy URI</li> +<li><b>%U</b>: Több URI</li> +</ul> + + + + Keep terminal window open after command execution + Végrehajtás után a terminál nyitva marad + + + + Execute in terminal emulator + Végrehajtás külső terminálban + + + + Set selected application as default action of this file type + A választott alkalmazás rendelődjék a fáljtípushoz + + + + EditBookmarksDialog + + + Edit Bookmarks + Könyvjelzők szerkesztése + + + + Name + Név + + + + Location + Hely + + + + &Add Item + Ho&zzáadás + + + + &Remove Item + Tö&rlés + + + + Use drag and drop to reorder the items + Húzással rendezhető minden elem + + + + ExecFileDialog + + + Execute file + Fájl futtatás + + + + &Open + &Nyitás + + + + E&xecute + &Végrehajtás + + + + Execute in &Terminal + &Terminálban futtatás + + + + Cancel + Mégse + + + + FileOperationDialog + + + Destination: + Cél: + + + + Processing: + Feldolgozva: + + + + Preparing... + Előkészület... + + + + Progress + Folyamat + + + + Time remaining: + Hátralévő idő: + + + + FilePropsDialog + + + File Properties + Fájljellemzők + + + + General + Általános + + + + Location: + Hely: + + + + File type: + Fájltípus: + + + + Mime type: + Mime típus: + + + + File size: + Fájlméret: + + + + On-disk size: + Mérete a lemezen: + + + + Last modified: + Módosítási idő: + + + + Link target: + Link cél: + + + + Open With: + Megnyitás: + + + + Last accessed: + Utolsó hozzáférés: + + + + Permissions + Jogosultságok + + + + Ownership + Tulajdonos + + + + + + Group: + Csoport: + + + + + + Owner: + Tulajdonos: + + + + Access Control + Hozzáférések + + + + + Other: + Mások: + + + + Make the file executable + Futtatható + + + + + + Read + Olvas + + + + + + Write + Ír + + + + + + Execute + Végrehajt + + + + Sticky + + + + + SetUID + + + + + SetGID + + + + + Advanced Mode + Haladó + + + + Fm::AppChooserComboBox + + + Customize + Saját beállítás + + + + Fm::AppChooserDialog + + + Select an application to open "%1" files + Alkalmazás választás a "%1" fájl megnyitásához + + + + Fm::DirTreeModel + + + Loading... + Olvasás... + + + + <No sub folders> + <Nincs almappa> + + + + Fm::DndActionMenu + + + Copy here + Másolás ide + + + + Move here + Mozgatás ide + + + + Create symlink here + Szimlink ide + + + + Cancel + Mégse + + + + Fm::EditBookmarksDialog + + + New bookmark + Új könyvjelző + + + + Fm::ExecFileDialog + + + This text file '%1' seems to be an executable script. +What do you want to do with it? + Ez a '%1' fájl futtatható szkriptnek tűnik. +Mi legyen vele? + + + + This file '%1' is executable. Do you want to execute it? + Ez a '%1' fájl futtatható. Végrehajtsuk? + + + + Fm::FileMenu + + + Open + Nyit + + + + &Restore + &Visszavon + + + + Cut + Kivág + + + + Copy + Másol + + + + Paste + Beilleszt + + + + + &Move to Trash + Kukába &mozgat + + + + Output + Kimenet + + + + &Delete + &Töröl + + + + Rename + Átnevez + + + + Open With... + Megnyitás ezzel... + + + + Other Applications + Más alkalmazások + + + + Extract to... + Kibontás... + + + + Extract Here + Kibontás ide + + + + Compress + Csomagolás + + + + Properties + Tulajdonságok + + + + Fm::FileOperation + + + Error + Hiba + + + + Some files cannot be moved to trash can because the underlying file systems don't support this operation. +Do you want to delete them instead? + Egyes fájlok nem mozgatók a kukába, mert a rendszer ezt nem engedélyezi. +Töröljük őket véglegesen? + + + + + Confirm + Jóváhagyás + + + + Do you want to delete the selected files? + Töröljök a választott fájlokat? + + + + Do you want to move the selected files to trash can? + Helyezzük a kukába a választott fájlokat? + + + + Fm::FileOperationDialog + + + Move files + Fájlmozgatás + + + + Moving the following files to destination folder: + A következő fájlok mozgatása ide: + + + + Copy Files + Fájlmásolás + + + + Copying the following files to destination folder: + A következő fájlok másolása ide: + + + + Trash Files + Fájlok a kukába + + + + Moving the following files to trash can: + A következő fájlok kukába mozgatása: + + + + Delete Files + Fájltörlés + + + + Deleting the following files + A következő fájlok törlése + + + + Create Symlinks + Szimlink létrehozás + + + + Creating symlinks for the following files: + Szimlink készítés a következő fájlokra: + + + + Change Attributes + Attribútum változtatás + + + + Changing attributes of the following files: + A következő fájlok attribútum változtatása: + + + + Restore Trashed Files + Kukázott fájlok visszaállítása + + + + Restoring the following files from trash can: + A következő fájlok visszaállítása a kukából: + + + + Error + Hiba + + + + Fm::FilePropsDialog + + + View folder content + Mappatartalom + + + + View and modify folder content + Mappa tartalma és változtatása + + + + Read + Olvasás + + + + Read and write + Olvasás és írás + + + + Forbidden + Tiltott + + + + Files of different types + Különféle fájltípusok + + + + Multiple Files + Többszörös fájlok + + + + Apply changes + Változtatások alkalmazása + + + + Do you want to recursively apply these changes to all files and sub-folders? + Minden mappára és fájlra alkalmazzuk a változtatásokat? + + + + Fm::FolderMenu + + + Create &New + &Új létrehozása + + + + &Paste + &Beilleszt + + + + Select &All + Összes kivál&asztása + + + + + Invert Selection + Kiválasztás fordítása + + + + Sorting + Rendezés + + + + Show Hidden + Rejtettek is + + + + Folder Pr&operties + Mappatulajd&onságok + + + + Folder + Mappa + + + + Blank File + Üres fájl + + + + By File Name + Név + + + + By Modification Time + Módosítási idő + + + + By File Size + Méret + + + + By File Type + Típus + + + + By File Owner + Tulajdonos + + + + Ascending + Emelkedő + + + + Descending + Csökkenő + + + + Folder First + Mappák elől + + + + Case Sensitive + Nagybetűérzékeny + + + + Fm::FolderModel + + + Name + Név + + + + Type + típus + + + + Size + Méret + + + + Modified + Módosítva + + + + Owner + Tulaj + + + + Fm::FontButton + + + Bold + Kövér + + + + Italic + Dőlt + + + + Fm::MountOperationPasswordDialog + + + &Connect + &Kapcsolódás + + + + Fm::PlacesModel + + + Places + Helyek + + + + Desktop + Asztal + + + + Trash + Kuka + + + + Computer + Számítógép + + + + Applications + Alkalmazások + + + + Network + Hálózat + + + + Devices + Eszközök + + + + Bookmarks + Könyvjelzők + + + + Fm::PlacesView + + + Empty Trash + Kukaürítés + + + Rename + Átnevez + + + Delete + Töröl + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + + + + + + Unmount + Lecsatol + + + + Mount + Csatol + + + + Eject + Kidobat + + + + Fm::RenameDialog + + + + Type: %1 +Size: %2 +Modified: %3 + Típus: %1 +Méret: %2 +Módosítva: %3 + + + + Type: %1 +Modified: %2 + Típus: %1 +Módosítva: %2 + + + + Type: %1 +Modified: %3 + Típus: %1 +Módosítva: %3 + + + + &Overwrite + &Felülír + + + + &Rename + &Átnevez + + + + Fm::SidePane + + + + Places + Helyek + + + + + Directory Tree + Könyvtárfa + + + + Shows list of common places, devices, and bookmarks in sidebar + Általános helyek, eszközök és könyvjelzők listája az oldalsávban + + + + Shows tree of directories in sidebar + Könyvtárfa az oldalsávban + + + + MountOperationPasswordDialog + + + Mount + Csatlakozás + + + + Connect &anonymously + Névtelen cs&atlakozás + + + + Connect as u&ser: + Felha&sználóként: + + + + &Username: + &Név: + + + + &Password: + &Jelszó: + + + + &Domain: + &Hálózati cím: + + + + Forget password &immediately + Jelszófelejtés &iziben + + + + Remember password until you &logout + Je&lszófelejtés kilépéskor + + + + Remember &forever + Jelszóme&gjegyzés örökre + + + + QObject + + + + + + Error + Hiba + + + + Rename File + Fájlátnevezés + + + + Please enter a new name: + Új név: + + + + Create Folder + + + + + Please enter a new file name: + Új fájlnév: + + + + New text file + Új szövegfájl + + + + Please enter a new folder name: + Űj mappanév: + + + + New folder + Új mappa + + + + Enter a name for the new %1: + Az új %1 neve: + + + + Create File + Fájlkészítés + + + + RenameDialog + + + Confirm to replace files + Fájlfelülírás megerősítése + + + + <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Itt már van ilyen nevű fájl.</span></p><p>Felülírjuk a meglévőt?</p></body></html> + + + + dest + cél + + + + with the following file? + Ezzel a fájllal? + + + + src file info + forrásfájl infó + + + + dest file info + célfájl infó + + + + src + forrás + + + + &File name: + &Fájlnév: + + + + Apply this option to all existing files + Az összes fájlra vonatkozzon mindez + + + diff --git a/libfm-qt/translations/libfm-qt_it.ts b/libfm-qt/translations/libfm-qt_it.ts index 328315b..cf36a62 100644 --- a/libfm-qt/translations/libfm-qt_it.ts +++ b/libfm-qt/translations/libfm-qt_it.ts @@ -152,133 +152,133 @@ Proprietà file - + General Generali - + Location: Posizione: - + File type: Tipo file: - + Mime type: Tipo MIME: - + File size: Dimensione file: - + On-disk size: Dimensione sul disco: - + Last modified: Ultima modifica: - + Link target: Collegamento a: - + Open With: Apri con: - + Last accessed: Ultimo accesso: - + Permissions Permessi - + Ownership Proprietario - - - + + + Group: Gruppo: - - - + + + Owner: Proprietario: - + Access Control Controllo accessi - - + + Other: Altri: - + Make the file executable Rendi il file eseguibile - - - + + + Read Lettura - - - + + + Write Scrittura - - - + + + Execute Esecuzione - + Sticky Sticky - + SetUID SetUID - + SetGID SetGID - + Advanced Mode Modalità avanzata @@ -338,7 +338,7 @@ Fm::EditBookmarksDialog - + New bookmark Nuovo segnalibro @@ -443,30 +443,30 @@ What do you want to do with it? Fm::FileOperation - + Error Errore - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Alcuni file non possono essere spostati nel cestino perché il file system su cui si trovano non supporta questa operazione. Vuoi invece eliminarli? - - + + Confirm Conferma - + Do you want to delete the selected files? Rimuovere i file selezionati? - + Do you want to move the selected files to trash can? Spostare nel cestino i file selezionati? @@ -697,27 +697,27 @@ Vuoi invece eliminarli? Fm::FolderModel - + Name Nome - + Type Tipo - + Size Dimensione - + Modified Modificato - + Owner Proprietario @@ -746,17 +746,17 @@ Vuoi invece eliminarli? Fm::PlacesModel - + Places Luoghi - + Desktop Scrivania - + Trash Cestino @@ -766,22 +766,22 @@ Vuoi invece eliminarli? Computer - + Applications Applicazioni - + Network Rete - + Devices Periferiche - + Bookmarks Segnalibri @@ -789,33 +789,61 @@ Vuoi invece eliminarli? Fm::PlacesView - + Empty Trash - Rename - Rinomina + Rinomina - Delete - Rimuovi + Rimuovi + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + - - + + Unmount Smonta - + Mount Monta - + Eject Espelli @@ -934,7 +962,7 @@ Ultima modifica: %3 QObject - + Error @@ -951,32 +979,37 @@ Ultima modifica: %3 Inserire il nuovo nome: - + + Create Folder + + + + Please enter a new file name: Inserire il nuovo nome del file: - + New text file Nuovo file di testo - + Please enter a new folder name: Inserire il nuovo nome della cartella: - + New folder Nuova cartella - + Enter a name for the new %1: - + Create File Crea file diff --git a/libfm-qt/translations/libfm-qt_ja.ts b/libfm-qt/translations/libfm-qt_ja.ts index 0d4f349..53d546d 100644 --- a/libfm-qt/translations/libfm-qt_ja.ts +++ b/libfm-qt/translations/libfm-qt_ja.ts @@ -158,133 +158,133 @@ ファイルのプロパティー - + General 一般 - + Location: 場所: - + File type: 種類: - + Mime type: MIMEタイプ: - + File size: サイズ: - + On-disk size: ディスク上のサイズ: - + Last modified: 最終更新日時: - + Link target: リンク先: - + Open With: 関連付け: - + Last accessed: 最終アクセス日時: - + Permissions パーミッション - + Ownership 所有権 - - - + + + Group: グループ: - - - + + + Owner: 所有者: - + Access Control アクセス制限 - - + + Other: その他: - + Make the file executable ファイルを実行可能にする - - - + + + Read 読取り - - - + + + Write 書込み - - - + + + Execute 実行 - + Sticky スティッキー - + SetUID UIDを設定 - + SetGID GIDを設定 - + Advanced Mode 高度なモード @@ -344,7 +344,7 @@ Fm::EditBookmarksDialog - + New bookmark 新規ブックマーク @@ -451,30 +451,30 @@ What do you want to do with it? Fm::FileOperation - + Error エラー - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? ファイルシステムのサポートがないため、ゴミ箱へ移動できないファイルがあります。 かわりにこれらを削除しますか? - - + + Confirm 確認 - + Do you want to delete the selected files? 選択したファイルを削除しますか? - + Do you want to move the selected files to trash can? 選択したファイルをゴミ箱に移しますか? @@ -705,27 +705,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name 名前 - + Type 種類 - + Size サイズ - + Modified 更新日時 - + Owner 所有者 @@ -754,17 +754,17 @@ Do you want to delete them instead? Fm::PlacesModel - + Places 場所 - + Desktop デスクトップ - + Trash ゴミ箱 @@ -774,22 +774,22 @@ Do you want to delete them instead? コンピューター - + Applications アプリケーション - + Network ネットワーク - + Devices デバイス - + Bookmarks ブックマーク @@ -797,33 +797,61 @@ Do you want to delete them instead? Fm::PlacesView - + Empty Trash ゴミ箱を空にする - Rename - 名前を変更 + 名前を変更 - Delete - 削除 + 削除 + + + + Open in New Tab + - - + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + + + + + Unmount アンマウント - + Mount マウント - + Eject 取出し @@ -942,7 +970,7 @@ Modified: %3 QObject - + Error @@ -959,32 +987,37 @@ Modified: %3 新しい名前を入力してください: - + + Create Folder + + + + Please enter a new file name: 新規ファイルの名前を入力してください: - + New text file 新規テキストファイル - + Please enter a new folder name: 新規フォルダの名前を入力してください: - + New folder 新規フォルダー - + Enter a name for the new %1: 新しい %1 の名前を入力してください: - + Create File ファイル作成 diff --git a/libfm-qt/translations/libfm-qt_lt_LT.ts b/libfm-qt/translations/libfm-qt_lt_LT.ts index efbb8c2..414a968 100644 --- a/libfm-qt/translations/libfm-qt_lt_LT.ts +++ b/libfm-qt/translations/libfm-qt_lt_LT.ts @@ -4,26 +4,32 @@ AppChooserDialog + Choose an Application + Installed Applications + Custom Command + Command line to execute: + Application name: + <b>These special codes can be used in the command line:</b> <ul> <li><b>%f</b>: Represents a single file name</li> @@ -34,14 +40,17 @@ + Keep terminal window open after command execution + Execute in terminal emulator + Set selected application as default action of this file type @@ -49,26 +58,32 @@ EditBookmarksDialog + Edit Bookmarks Redaguoti žymeles + Name Pavadinimas + Location Vieta + &Add Item &Pridėti elementą + &Remove Item &Pašalinti elementą + Use drag and drop to reorder the items Failų tvarkai pakeisti naudokite vilkimą @@ -76,22 +91,27 @@ ExecFileDialog + Execute file + &Open + E&xecute + Execute in &Terminal + Cancel Atšaukti @@ -99,22 +119,27 @@ FileOperationDialog + Destination: Paskirties vieta: + Processing: Apdorojama: + Preparing... Ruošiamasi... + Progress Eiga + Time remaining: Liko laiko: @@ -122,102 +147,138 @@ FilePropsDialog + File Properties Failo savybės + General Bendra + Location: Vieta: + File type: Failo tipas: + Mime type: Mime tipas: + File size: Failo dydis: + On-disk size: Dydis diske: + Last modified: Paskutinis pakeitimas: + Link target: Nuorodos tikslas: + Open With: Atverti su: + Last accessed: Paskutinį kartą naudota: + Permissions Leidimai + Ownership Nuosavybė + + + Group: Grupė: + + + Owner: Savininkas: + Access Control Prieigos kontrolė + + Other: Kita: + Make the file executable Padaryti failą vykdomu + + + Read Skaityti + + + Write Rašyti + + + Execute Vykdyti + Sticky Lipnus + SetUID Nustatyti UID + SetGID Nustatyti GID + Advanced Mode Išsamus režimas @@ -225,6 +286,7 @@ Fm::AppChooserComboBox + Customize @@ -232,6 +294,7 @@ Fm::AppChooserDialog + Select an application to open "%1" files @@ -239,10 +302,12 @@ Fm::DirTreeModel + Loading... + <No sub folders> @@ -250,10 +315,12 @@ Fm::DndActionMenu + Copy here Kopijuoti čia + Move here Perkelti čia @@ -263,10 +330,12 @@ Sukurti simbolinę nuorodą + Cancel Atšaukti + Create symlink here Sukurti simbolinę nuorodą @@ -274,6 +343,7 @@ Fm::EditBookmarksDialog + New bookmark Nauja žymelė @@ -281,11 +351,13 @@ Fm::ExecFileDialog + This text file '%1' seems to be an executable script. What do you want to do with it? + This file '%1' is executable. Do you want to execute it? @@ -293,6 +365,7 @@ What do you want to do with it? Fm::FileMenu + Open Atverti @@ -301,58 +374,73 @@ What do you want to do with it? Atverti su + Cut Iškirpti + Copy Kopijuoti + Paste Įklijuoti + + &Move to Trash &Perkelti į šiukšlinę + &Delete &Pašalinti + Rename Pervadinti + Extract to... Išskleisti į... + Extract Here Išskleisti čia + Compress Archyvuoti + Properties Savybės + Open With... + Other Applications + Output + &Restore @@ -360,24 +448,30 @@ What do you want to do with it? Fm::FileOperation + + Confirm Patvirtinti + Do you want to delete the selected files? Ar norite ištrinti pasirinktus failus? + Do you want to move the selected files to trash can? Ar norite perkelti pasirinktus failus į šiukšlinę? + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Kai kurie failai negali būti išmesti į šiukšlinę, nes failų sistema to nepalaiko. Ar norite vietoje to juos pašalinti visam laikui? + Error Klaida @@ -385,34 +479,42 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::FileOperationDialog + Move files Perkelti failus + Moving the following files to destination folder: Šie failai perkeliami į paskirties aplanką: + Copy Files Kopijuoti failus + Copying the following files to destination folder: Šie failai kopijuojami į paskirties aplanką: + Trash Files Išmesti failus į šiukšliadėžę + Moving the following files to trash can: Failai perkeliami į šiukšliadėžę: + Delete Files Pašalinti failus + Deleting the following files Šalinami šie failai @@ -422,30 +524,37 @@ Ar norite vietoje to juos pašalinti visam laikui? Sukurti simbolinę nuorodą + Creating symlinks for the following files: Šiems failams kuriamos simbolinės nuorodos: + Change Attributes Keisti atributus + Changing attributes of the following files: Keičiami šių failų atributai: + Restore Trashed Files Atstatyti ištrintus failus + Restoring the following files from trash can: Šie failai atstatomi iš šiukšliadėžės: + Error Klaida + Create Symlinks Sukurti simbolinę nuorodą @@ -453,38 +562,47 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::FilePropsDialog + View folder content Žiūrėti aplanko turinį + View and modify folder content Žiūrėti ir keisti aplanko turinį + Read Skaityti + Read and write Skaityti ir rašyti + Forbidden Uždrausta + Files of different types Skirtingų tipų failai + Multiple Files Keli failai + Apply changes Pritaikyti pakeitimus + Do you want to recursively apply these changes to all files and sub-folders? Ar norite rekursyviai pritaikyti šiuos pakeitimus visiems failams ir poaplankiams? @@ -492,34 +610,42 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::FolderMenu + Create &New &Kurti naują + &Paste Į&klijuoti + Select &All Pasirinkti &viską + Invert Selection Invertuoti pasirinkimą + Sorting Rikiavimas + Show Hidden Rodyti paslėptus + Folder Pr&operties Failo &savybės + Folder Aplankas @@ -528,42 +654,52 @@ Ar norite vietoje to juos pašalinti visam laikui? Failas + By File Name Pagal failo vardą + By Modification Time Pagal keitimo datą + By File Size Pagal failo dydį + By File Type Pagal failo tipą + By File Owner Pagal failo savininką + Ascending Didėjančiai + Descending Mažėjančiai + Folder First Pirmiausia aplankai + Case Sensitive Skirti raidžių dydį + Blank File @@ -571,22 +707,27 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::FolderModel + Name Pavadinimas + Type Tipas + Size Dydis + Modified Pakeista + Owner Savininkas @@ -594,10 +735,12 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::FontButton + Bold Paryškintas + Italic Kursyvinis @@ -605,6 +748,7 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::MountOperationPasswordDialog + &Connect &Prisijungti @@ -612,34 +756,42 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::PlacesModel + Desktop Darbastalis + Trash Šiukšlinė + Computer Kompiuteris + Applications Programos + Network Tinklas + Places + Devices + Bookmarks @@ -648,25 +800,60 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::PlacesView Rename - Pervadinti + Pervadinti Delete - Šalinami failai + Šalinami failai + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + Remove Bookmark + + + + + Unmount Atjungti + Mount Prijungti + Eject Išstumti + Empty Trash @@ -674,6 +861,8 @@ Ar norite vietoje to juos pašalinti visam laikui? Fm::RenameDialog + + Type: %1 Size: %2 Modified: %3 @@ -682,20 +871,24 @@ Dydis: %2 Keista: %3 + Type: %1 Modified: %3 Tipas: %1 Keista: %3 + &Overwrite &Perrašyti + &Rename Pe&rvadinti + Type: %1 Modified: %2 Tipas: %1 @@ -706,18 +899,24 @@ Keista: %2 {1 Fm::SidePane + + Places + + Directory Tree + Shows list of common places, devices, and bookmarks in sidebar + Shows tree of directories in sidebar @@ -725,38 +924,47 @@ Keista: %2 {1 MountOperationPasswordDialog + Mount Prijungti + Connect &anonymously Prisijungti &anonimiškai + Connect as u&ser: Prisijungti kaip nau&dotojui: + &Username: &Naudotojo vardas: + &Password: &Slaptažodis: + &Domain: &Domenas: + Forget password &immediately &Neįsiminti slaptažodžio + Remember password until you &logout &Atsiminti slaptažodį iki atsijungsite + Remember &forever Prisiminti &visam laikui @@ -764,38 +972,55 @@ Keista: %2 {1 QObject + + + + Error Klaida + Rename File Pervadinti failą + Please enter a new name: Įveskite naują pavadinimą: + + Create Folder + + + + Please enter a new file name: Įveskite naują failo pavadinimą: + New text file Naujas tekstinis failas + Please enter a new folder name: Įveskite naują failo pavadinimą: + New folder Naujas aplankas + Create File Sukurti failą + Enter a name for the new %1: @@ -803,38 +1028,47 @@ Keista: %2 {1 RenameDialog + Confirm to replace files Patvirtinti failų pakeitimą + <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> <html><head/><body><p><span style=" font-weight:600;">Šiame aplanke jau yra failas tokiu pačiu pavadinimu.</span></p><p>Ar norite pakeisti esamą failą?</p></body></html> + dest paskirtis + with the following file? šiuo failu? + src file info šaltinio failo informacija + dest file info paskirties failo informacija + src šaltinis + &File name: &Failo pavadinimas: + Apply this option to all existing files Pritaikyti šią nuostatą visiems failams diff --git a/libfm-qt/translations/libfm-qt_pl.ts b/libfm-qt/translations/libfm-qt_pl.ts new file mode 100644 index 0000000..003dd8a --- /dev/null +++ b/libfm-qt/translations/libfm-qt_pl.ts @@ -0,0 +1,1064 @@ + + + + + AppChooserDialog + + + Choose an Application + Wybór programu + + + + Installed Applications + Zainstalowane programy + + + + Custom Command + Własny wiersz poleceń + + + + Command line to execute: + Wiersz poleceń do wykonania: + + + + Application name: + Nazwa programu: + + + + <b>These special codes can be used in the command line:</b> +<ul> +<li><b>%f</b>: Represents a single file name</li> +<li><b>%F</b>: Represents multiple file names</li> +<li><b>%u</b>: Represents a single URI of the file</li> +<li><b>%U</b>: Represents multiple URIs</li> +</ul> + <b>W wierszu poleceń można użyć następujących oznaczeń:</b> +<ul> +<li><b>%f</b>: nazwa pierwszego z zaznaczonych plików</li> +<li><b>%F</b>: nazwy wszystkich zaznaczonych plików</li> +<li><b>%u</b>: ścieżka pierwszego z zaznaczonych plików</li> +<li><b>%U</b>: ścieżki wszystkich zaznaczonych plików</li> +</ul> + + + + Keep terminal window open after command execution + Zachowanie otwartego terminala po wykonaniu polecenia + + + + Execute in terminal emulator + Uruchomienie w emulatorze terminala + + + + Set selected application as default action of this file type + Ustaw wybrany program jako domyślną akcję dla tego typu plików + + + + EditBookmarksDialog + + + Edit Bookmarks + Edycja zakładek + + + + Name + Nazwa + + + + Location + Położenie + + + + &Add Item + &Dodaj + + + + &Remove Item + &Usuń + + + + Use drag and drop to reorder the items + Przeciągnij i upuść aby zmienić kolejność + + + + ExecFileDialog + + + Execute file + Uruchom + + + + &Open + &Otwórz + + + + E&xecute + &Uruchom + + + + Execute in &Terminal + Uruchom w &terminalu + + + + Cancel + Anuluj + + + + FileOperationDialog + + + Destination: + Cel: + + + + Processing: + Przetwarzanie: + + + + Preparing... + Przygotowanie... + + + + Progress + Postęp + + + + Time remaining: + Pozostały czas: + + + + FilePropsDialog + + + File Properties + Właściwości pliku + + + + General + Ogólne + + + + Location: + Położenie: + + + + File type: + Typ pliku: + + + + Mime type: + Typ mime: + + + + File size: + Rozmiar pliku: + + + + On-disk size: + Rozmiar na dysku: + + + + Last modified: + Ostatnia modyfikacja: + + + + Link target: + Położenie docelowe: + + + + Open With: + Otwieranie za pomocą: + + + + Last accessed: + Ostatni dostęp: + + + + Permissions + Uprawnienia + + + + Ownership + Właściciel + + + + + + Group: + Grupa: + + + + + + Owner: + Właściciel: + + + + Access Control + Prawa dostępu + + + + + Other: + Inni: + + + + Make the file executable + Ustaw prawo wykonywalności + + + + + + Read + Odczyt + + + + + + Write + Zapis + + + + + + Execute + Wykonanie + + + + Sticky + Sticky + + + + SetUID + SetUID + + + + SetGID + SetGID + + + + Advanced Mode + Zaawansowane + + + + Fm::AppChooserComboBox + + + Customize + Dostosuj + + + + Fm::AppChooserDialog + + + Select an application to open "%1" files + WYbierz program do otwarcia "%1" plików + + + + Fm::DirTreeModel + + + Loading... + Wczytywanie... + + + + <No sub folders> + <Brak katalogów> + + + + Fm::DndActionMenu + + + Copy here + Kopiuj tutaj + + + + Move here + Przenieś tutaj + + + + Create symlink here + Utwórz dowiązanie symboliczne + + + + Cancel + Anuluj + + + + Fm::EditBookmarksDialog + + + New bookmark + Nowa zakładka + + + + Fm::ExecFileDialog + + + This text file '%1' seems to be an executable script. +What do you want to do with it? + Plik tekstowy '%1' wygląda na wykonywalny skrypt. +Co chcesz zrobić z tym plikiem? + + + + This file '%1' is executable. Do you want to execute it? + Plik '%1' jest wykonywalny. Czy chcesz go uruchomić? + + + + Fm::FileMenu + + + Open + Otwórz + + + + &Restore + &Przywróć + + + + Cut + Wytnij + + + + Copy + Kopiuj + + + + Paste + Wklej + + + + + &Move to Trash + Przenieś do &kosza + + + + Output + Wyjście + + + + &Delete + &Usuń + + + + Rename + Zmień nazwę + + + + Open With... + Otwórz za pomocą... + + + + Other Applications + Inny program + + + + Extract to... + Rozpakuj do... + + + + Extract Here + Rozpakuj tutaj + + + + Compress + Skompresuj + + + + Properties + Właściwości + + + + Fm::FileOperation + + + Error + Błąd + + + + Some files cannot be moved to trash can because the underlying file systems don't support this operation. +Do you want to delete them instead? + Niektóre pliki nie mogą zostać przeniesione do kosza ponieważ system plików nie obsługuje takiej operacji. +Czy zamiast tego usunąć te pliki? + + + + + Confirm + Potwierdź + + + + Do you want to delete the selected files? + Czy chcesz usunąć wybrane pliki? + + + + Do you want to move the selected files to trash can? + Czy chcesz przenieść wybrane pliki do kosza? + + + + Fm::FileOperationDialog + + + Move files + Przenoszenie plików + + + + Moving the following files to destination folder: + Przenoszenie następujących plików do katalogu docelowego: + + + + Copy Files + Kopiowanie plików + + + + Copying the following files to destination folder: + Kopiowanie następujących plików do katalogu docelowego: + + + + Trash Files + Przenoszenie plików do kosza + + + + Moving the following files to trash can: + Przenoszenie następujących plików do kosza: + + + + Delete Files + Usuwanie plików + + + + Deleting the following files + Usuwanie następujących plików + + + + Create Symlinks + Tworzenie dowiązań symbolicznych + + + + Creating symlinks for the following files: + Tworzenie dowiązań dla następujących plików: + + + + Change Attributes + Zmiana uprawnień + + + + Changing attributes of the following files: + Zmiana uprawnień dla następujących plików: + + + + Restore Trashed Files + Przywracanie plików z kosza + + + + Restoring the following files from trash can: + Przywracanie następujących plików z kosza: + + + + Error + Błąd + + + + Fm::FilePropsDialog + + + View folder content + Wyświetlanie zawartości + + + + View and modify folder content + Wyświetlanie i modyfikowanie zawartości + + + + Read + Odczyt + + + + Read and write + Odczyt i zapis + + + + Forbidden + Zabronione + + + + Files of different types + Pliki różnego typu + + + + Multiple Files + Wiele plików + + + + Apply changes + Zastosuj zmiany + + + + Do you want to recursively apply these changes to all files and sub-folders? + Czy chcesz rekursywnie zastosować zmiany do wszystkich plików i podkatalogów? + + + + Fm::FolderMenu + + + Create &New + Utwórz &nowy + + + + &Paste + &Wklej + + + + Select &All + Z&aznacz wszystko + + + + Invert Selection + Odwróć zaznaczenie + + + + Sorting + Sortowanie + + + + Show Hidden + Wyświetlanie ukrytych plików + + + + Folder Pr&operties + Właściwości &katalogu + + + + Folder + Katalog + + + + Blank File + Pusty plik + + + + By File Name + Według nazwy + + + + By Modification Time + Według czasu modyfikacji + + + + By File Size + Według rozmiaru + + + + By File Type + Według typu + + + + By File Owner + Wedłuh właściciela pliku + + + + Ascending + Rosnąco + + + + Descending + Malejąco + + + + Folder First + Najpierw katalogi + + + + Case Sensitive + Uwzględnij wielkość liter + + + + Fm::FolderModel + + + Name + Nazwa + + + + Type + Typ + + + + Size + Rozmiar + + + + Modified + Zmodyfikowany + + + + Owner + Właściciel + + + + Fm::FontButton + + + Bold + Pogrubienie + + + + Italic + Kursywa + + + + Fm::MountOperationPasswordDialog + + + &Connect + &Podłącz + + + + Fm::PlacesModel + + + Places + Położenia + + + + Desktop + Pulpit + + + + Trash + Kosz + + + + Computer + Komputer + + + + Applications + Programy + + + + Network + Sieć + + + + Devices + Urządzenia + + + + Bookmarks + Zakładki + + + + Fm::PlacesView + + + Empty Trash + Opróżnij kosz + + + Rename + Zmień nazwę + + + Delete + Usuń + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + + + + + + Unmount + Odmontuj + + + + Mount + Montuj + + + + Eject + Wysuń + + + + Fm::RenameDialog + + + + Type: %1 +Size: %2 +Modified: %3 + Typ: %1 +Rozmiar: %2 +Zmodyfikowany: %3 + + + + Type: %1 +Modified: %2 + Typ: %1 +Zmodyfikowany: %2 + + + + Type: %1 +Modified: %3 + Typ: %1 +Zmodyfikowany: %3 + + + + &Overwrite + &Nadpisz + + + + &Rename + &Zmień nazwę + + + + Fm::SidePane + + + + Places + Położenia + + + + + Directory Tree + Drzewo katalogów + + + + Shows list of common places, devices, and bookmarks in sidebar + Pokazuje listę miejsc, urządzeń oraz zakładek w panelu bocznym + + + + Shows tree of directories in sidebar + Pokazuje drzewo katalogów w panelu bocznym + + + + MountOperationPasswordDialog + + + Mount + Montowanie + + + + Connect &anonymously + Połącz &anonimowo + + + + Connect as u&ser: + Połącz jako &użytkownik: + + + + &Username: + &Użytkownik: + + + + &Password: + &Hasło: + + + + &Domain: + &Domena: + + + + Forget password &immediately + Zapomnij hasło &od razu + + + + Remember password until you &logout + &Pamiętaj hasło do wylogowania + + + + Remember &forever + Pamiętaj na &zawsze + + + + QObject + + + + + + Error + Błąd + + + + Rename File + Zmiana nazwy + + + + Please enter a new name: + Podaj nową nazwę: + + + + Create Folder + + + + + Please enter a new file name: + Podaj nazwę pliku: + + + + New text file + Nowy plik tekstowy + + + + Please enter a new folder name: + POdaj nazwę nowego katalogu: + + + + New folder + Nowy katalog + + + + Enter a name for the new %1: + Podaj nazwę dla pliku %1: + + + + Create File + Utwórz plik + + + + RenameDialog + + + Confirm to replace files + Potwierdź aby nadpisać pliki + + + + <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Plik o podanej nazwie już istnieje w katalogu docelowym.</span></p><p>Czy chcesz nadpisać istniejący plik?</p></body></html> + + + + dest + + + + + with the following file? + następującym plikiem? + + + + src file info + + + + + dest file info + + + + + src + + + + + &File name: + &Nazwa pliku: + + + + Apply this option to all existing files + Zastosuj do wszystkich plików + + + diff --git a/libfm-qt/translations/libfm-qt_pt.ts b/libfm-qt/translations/libfm-qt_pt.ts index 329a549..7f23c95 100644 --- a/libfm-qt/translations/libfm-qt_pt.ts +++ b/libfm-qt/translations/libfm-qt_pt.ts @@ -1,6 +1,6 @@ - + AppChooserDialog @@ -158,133 +158,133 @@ Propriedades do ficheiro - + General Geral - + Location: Localização: - + File type: Tipo de ficheiro: - + Mime type: Tipo MIME: - + File size: Tamanho do ficheiro: - + On-disk size: Tamanho no disco: - + Last modified: Última modificação: - + Link target: Destino da ligação: - + Open With: Abrir com: - + Last accessed: Último acesso: - + Permissions Pemissões - + Ownership Propriedade - - - + + + Group: Grupo: - - - + + + Owner: Dono: - + Access Control Controlo de acesso - - + + Other: Outro: - + Make the file executable Marcar como executável - - - + + + Read Leitura - - - + + + Write Escrita - - - + + + Execute Execução - + Sticky Fixo - + SetUID Definir UID - + SetGID Definir GID - + Advanced Mode Modo avançado @@ -344,7 +344,7 @@ Fm::EditBookmarksDialog - + New bookmark Novo marcador @@ -450,30 +450,30 @@ O que pretende fazer com o ficheiro? Fm::FileOperation - + Error Erro - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Alguns ficheiros não podem ser movidos para o lixo porque o sistema de ficheiros não suporta esta operação. Eliminar permanentemente? - - + + Confirm Confirmação - + Do you want to delete the selected files? Quer mesmo eliminar o(s) ficheiro(s) selecionado(s)? - + Do you want to move the selected files to trash can? Quer mesmo mover o(s) ficheiro(s) selecionado(s) para o lixo? @@ -704,27 +704,27 @@ Eliminar permanentemente? Fm::FolderModel - + Name Nome - + Type Tipo - + Size Tamanho - + Modified Modificado - + Owner Dono @@ -753,17 +753,17 @@ Eliminar permanentemente? Fm::PlacesModel - + Places Locais - + Desktop Área de trabalho - + Trash Lixo @@ -773,22 +773,22 @@ Eliminar permanentemente? Computador - + Applications Aplicações - + Network Rede - + Devices Dispositivos - + Bookmarks Marcadores @@ -796,33 +796,61 @@ Eliminar permanentemente? Fm::PlacesView - + Empty Trash Esvaziar lixo - Rename - Mudar nome + Mudar nome - Delete - Eliminar + Eliminar + + + + Open in New Tab + + + + + Open in New Window + - - + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + + + + + Unmount Desmontar - + Mount Montar - + Eject Ejetar @@ -941,7 +969,7 @@ Modificado: %3 QObject - + Error @@ -958,32 +986,37 @@ Modificado: %3 Introduza o novo nome: - + + Create Folder + + + + Please enter a new file name: Introduza o nome do ficheiro: - + New text file Novo ficheiro de texto - + Please enter a new folder name: Introduza o nome da pasta: - + New folder Nova pasta - + Enter a name for the new %1: Introduza o nome para %1: - + Create File Criar ficheiro diff --git a/libfm-qt/translations/libfm-qt_ru.ts b/libfm-qt/translations/libfm-qt_ru.ts index fae2232..daa6d57 100644 --- a/libfm-qt/translations/libfm-qt_ru.ts +++ b/libfm-qt/translations/libfm-qt_ru.ts @@ -158,133 +158,133 @@ Свойства файла - + General Общие - + Location: Расположение: - + File type: Тип файла: - + Mime type: Тип Mime: - + File size: Размер файла: - + On-disk size: Размер на диске: - + Last modified: Последнее изменение: - + Link target: Цель ссылки: - + Open With: Открыть с помощью: - + Last accessed: Последний доступ: - + Permissions Разрешения - + Ownership Владение - - - + + + Group: Группа: - - - + + + Owner: Владелец: - + Access Control Контроль доступа - - + + Other: Остальные: - + Make the file executable Сделать файл исполняемым - - - + + + Read Чтение - - - + + + Write Запись - - - + + + Execute Выполнение - + Sticky - + SetUID - + SetGID - + Advanced Mode Расширенный режим @@ -344,7 +344,7 @@ Fm::EditBookmarksDialog - + New bookmark Новая закладка @@ -446,30 +446,30 @@ What do you want to do with it? Fm::FileOperation - + Error Ошибка - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Некоторые файлы не могут быть помещены в корзину, поскольку файловая система не поддерживает эту операцию. Вы всё равно хотите их удалить? - - + + Confirm Подтвердить - + Do you want to delete the selected files? Вы действительно хотите удалить выбранные файлы? - + Do you want to move the selected files to trash can? Переместить выбранные файлы в корзину? @@ -696,27 +696,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name Имя - + Type Тип - + Size Размер - + Modified Изменён - + Owner Владелец @@ -745,12 +745,12 @@ Do you want to delete them instead? Fm::PlacesModel - + Places Места - + Desktop Рабочий стол @@ -760,27 +760,27 @@ Do you want to delete them instead? Компьютер - + Applications Программы - + Network Сеть - + Devices Устройства - + Bookmarks Закладки - + Trash Корзина @@ -788,33 +788,61 @@ Do you want to delete them instead? Fm::PlacesView - + Empty Trash Очистить корзину - Rename - Переименовать + Переименовать - Delete - Удалить + Удалить + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + - - + + Unmount Отключить - + Mount Подключить - + Eject Извлечь @@ -933,7 +961,7 @@ Modified: %3 QObject - + Error @@ -950,32 +978,37 @@ Modified: %3 Введите новое имя: - + + Create Folder + + + + Please enter a new file name: Введите имя нового файла: - + New text file Новый текстовый файл - + Please enter a new folder name: Введите имя новой папки: - + New folder Новая папка - + Enter a name for the new %1: Введите имя для нового %1: - + Create File Создать файл diff --git a/libfm-qt/translations/libfm-qt_ru_RU.ts b/libfm-qt/translations/libfm-qt_ru_RU.ts index 89fab1d..f6f2585 100644 --- a/libfm-qt/translations/libfm-qt_ru_RU.ts +++ b/libfm-qt/translations/libfm-qt_ru_RU.ts @@ -158,133 +158,133 @@ Свойства файла - + General Общие - + Location: Расположение: - + File type: Тип файла: - + Mime type: Тип Mime: - + File size: Размер файла: - + On-disk size: Размер на диске: - + Last modified: Последнее изменение: - + Link target: Цель ссылки: - + Open With: Открыть с помощью: - + Last accessed: Последний доступ: - + Permissions Разрешения - + Ownership Владение - - - + + + Group: Группа: - - - + + + Owner: Владелец: - + Access Control Контроль доступа - - + + Other: Остальные: - + Make the file executable Сделать файл исполняемым - - - + + + Read Чтение - - - + + + Write Запись - - - + + + Execute Выполнение - + Sticky - + SetUID - + SetGID - + Advanced Mode Расширенный режим @@ -344,7 +344,7 @@ Fm::EditBookmarksDialog - + New bookmark Новая закладка @@ -446,30 +446,30 @@ What do you want to do with it? Fm::FileOperation - + Error Ошибка - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? Некоторые файлы не могут быть помещены в корзину, поскольку файловая система не поддерживает эту операцию. Вы всё равно хотите их удалить? - - + + Confirm Подтвердить - + Do you want to delete the selected files? Вы действительно хотите удалить выбранные файлы? - + Do you want to move the selected files to trash can? Переместить выбранные файлы в корзину? @@ -696,27 +696,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name Имя - + Type Тип - + Size Размер - + Modified Изменён - + Owner Владелец @@ -745,12 +745,12 @@ Do you want to delete them instead? Fm::PlacesModel - + Places Места - + Desktop Рабочий стол @@ -760,27 +760,27 @@ Do you want to delete them instead? Компьютер - + Applications Программы - + Network Сеть - + Devices Устройства - + Bookmarks Закладки - + Trash Корзина @@ -788,33 +788,61 @@ Do you want to delete them instead? Fm::PlacesView - + Empty Trash Очистить корзину - Rename - Переименовать + Переименовать - Delete - Удалить + Удалить + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + - - + + Unmount Отключить - + Mount Подключить - + Eject Извлечь @@ -933,7 +961,7 @@ Modified: %3 QObject - + Error @@ -950,32 +978,37 @@ Modified: %3 Введите новое имя: - + + Create Folder + + + + Please enter a new file name: Введите имя нового файла: - + New text file Новый текстовый файл - + Please enter a new folder name: Введите имя новой папки: - + New folder Новая папка - + Enter a name for the new %1: Введите имя для нового %1: - + Create File Создать файл diff --git a/libfm-qt/translations/libfm-qt_zh_TW.ts b/libfm-qt/translations/libfm-qt_zh_TW.ts index 82f6e0c..7573a16 100644 --- a/libfm-qt/translations/libfm-qt_zh_TW.ts +++ b/libfm-qt/translations/libfm-qt_zh_TW.ts @@ -158,133 +158,133 @@ 檔案屬性 - + General 一般 - + Location: 位置: - + File type: 檔案類型: - + Mime type: Mime 類型: - + File size: 檔案大小: - + On-disk size: 磁碟上大小: - + Last modified: 最後修改: - + Link target: 連結目標: - + Open With: 開啟: - + Last accessed: 最後存取: - + Permissions 權限 - + Ownership 所有權 - - - + + + Group: 群組: - - - + + + Owner: 擁有者: - + Access Control 存取控制 - - + + Other: 其他: - + Make the file executable 使檔案可執行 - - - + + + Read 讀取 - - - + + + Write 寫入 - - - + + + Execute 執行 - + Sticky - + SetUID - + SetGID - + Advanced Mode 進階模式 @@ -344,7 +344,7 @@ Fm::EditBookmarksDialog - + New bookmark 新書籤 @@ -454,30 +454,30 @@ What do you want to do with it? Fm::FileOperation - + Error 錯誤 - + Some files cannot be moved to trash can because the underlying file systems don't support this operation. Do you want to delete them instead? 因為檔案系統不支援,有些檔案無法丟到垃圾桶 是否直接刪除這些檔案? - - + + Confirm 確認 - + Do you want to delete the selected files? 你確定要刪除選取的檔案嗎? - + Do you want to move the selected files to trash can? 你確定要把選取的檔案移到垃圾桶嗎? @@ -708,27 +708,27 @@ Do you want to delete them instead? Fm::FolderModel - + Name 名稱 - + Type 類型 - + Size 大小 - + Modified 修改 - + Owner 所有者 @@ -757,17 +757,17 @@ Do you want to delete them instead? Fm::PlacesModel - + Places 位置 - + Desktop 桌面 - + Trash 垃圾桶 @@ -777,22 +777,22 @@ Do you want to delete them instead? 電腦 - + Applications 應用程式 - + Network 網路 - + Devices 裝置 - + Bookmarks 書籤 @@ -800,33 +800,61 @@ Do you want to delete them instead? Fm::PlacesView - + Empty Trash 清空垃圾桶 - Rename - 重新命名 + 重新命名 - Delete - 刪除 + 刪除 + + + + Open in New Tab + + + + + Open in New Window + + + + + Move Bookmark Up + + + + + Move Bookmark Down + + + + + Rename Bookmark + + + + + Remove Bookmark + - - + + Unmount 卸載 - + Mount 掛載 - + Eject 退出 @@ -945,7 +973,7 @@ Modified: %3 QObject - + Error @@ -962,32 +990,37 @@ Modified: %3 請輸入一個新名稱: - + + Create Folder + + + + Please enter a new file name: 請輸入一個新檔名: - + Please enter a new folder name: 請輸入一個新資料夾名稱: - + New folder 新資料夾 - + New text file 新文字檔 - + Enter a name for the new %1: 幫新的 %1 輸入一個名稱: - + Create File 建立檔案 diff --git a/libfm-qt/utilities.cpp b/libfm-qt/utilities.cpp index 59e634f..ff7662e 100644 --- a/libfm-qt/utilities.cpp +++ b/libfm-qt/utilities.cpp @@ -158,9 +158,11 @@ void renameFile(FmFileInfo *file, QWidget *parent) { } // templateFile is a file path used as a template of the new file. -void createFile(CreateFileType type, FmPath* parentDir, FmTemplate* templ, QWidget* parent) { +void createFileOrFolder(CreateFileType type, FmPath* parentDir, FmTemplate* templ, QWidget* parent) { QString defaultNewName; QString prompt; + QString dialogTitle = type == CreateNewFolder ? QObject::tr("Create Folder") + : QObject::tr("Create File"); switch(type) { case CreateNewTextFile: @@ -184,7 +186,7 @@ void createFile(CreateFileType type, FmPath* parentDir, FmTemplate* templ, QWidg _retry: // ask the user to input a file name bool ok; - QString new_name = QInputDialog::getText(parent, QObject::tr("Create File"), + QString new_name = QInputDialog::getText(parent, dialogTitle, prompt, QLineEdit::Normal, defaultNewName, @@ -230,7 +232,8 @@ _retry: uid_t uidFromName(QString name) { uid_t ret; - + if(name.isEmpty()) + return -1; if(name.at(0).digitValue() != -1) { ret = uid_t(name.toUInt()); } @@ -249,13 +252,16 @@ QString uidToName(uid_t uid) { if(pw) ret = pw->pw_name; + else + ret = QString::number(uid); return ret; } gid_t gidFromName(QString name) { gid_t ret; - + if(name.isEmpty()) + return -1; if(name.at(0).digitValue() != -1) { ret = gid_t(name.toUInt()); } @@ -274,6 +280,8 @@ QString gidToName(gid_t gid) { if(grp) ret = grp->gr_name; + else + ret = QString::number(gid); return ret; } @@ -290,6 +298,9 @@ int execModelessDialog(QDialog* dlg) { } // check if GVFS can support this uri scheme (lower case) +// NOTE: this does not work reliably due to some problems in gio/gvfs and causes bug lxde/lxqt#512 +// https://github.com/lxde/lxqt/issues/512 +// Use uriExists() whenever possible. bool isUriSchemeSupported(const char* uriScheme) { const gchar * const * schemes = g_vfs_get_supported_uri_schemes(g_vfs_get_default()); if(Q_UNLIKELY(schemes == NULL)) @@ -300,5 +311,16 @@ bool isUriSchemeSupported(const char* uriScheme) { return false; } +// check if the URI exists. +// NOTE: this is a blocking call possibly involving I/O. +// So it's better to use it in limited cases, like checking trash:// or computer://. +// Avoid calling this on a slow filesystem. +// Checking "network:///" is very slow, for example. +bool uriExists(const char* uri) { + GFile* gf = g_file_new_for_uri(uri); + bool ret = (bool)g_file_query_exists(gf, NULL); + g_object_unref(gf); + return ret; +} -}; +} diff --git a/libfm-qt/utilities.h b/libfm-qt/utilities.h index 0322252..4db45dc 100644 --- a/libfm-qt/utilities.h +++ b/libfm-qt/utilities.h @@ -48,7 +48,7 @@ enum CreateFileType { CreateWithTemplate }; -LIBFM_QT_API void createFile(CreateFileType type, FmPath* parentDir, FmTemplate* templ = NULL, QWidget* parent = 0); +LIBFM_QT_API void createFileOrFolder(CreateFileType type, FmPath* parentDir, FmTemplate* templ = NULL, QWidget* parent = 0); LIBFM_QT_API uid_t uidFromName(QString name); @@ -60,8 +60,12 @@ LIBFM_QT_API QString gidToName(gid_t gid); LIBFM_QT_API int execModelessDialog(QDialog* dlg); +// NOTE: this does not work reliably due to some problems in gio/gvfs +// Use uriExists() whenever possible. LIBFM_QT_API bool isUriSchemeSupported(const char* uriScheme); +LIBFM_QT_API bool uriExists(const char* uri); + } #endif // FM_UTILITIES_H diff --git a/libfm-qt/utilities_p.h b/libfm-qt/utilities_p.h index 630e2e6..b1c43c2 100644 --- a/libfm-qt/utilities_p.h +++ b/libfm-qt/utilities_p.h @@ -44,7 +44,7 @@ public: bool selectExtension() const { return selectExtension_; } - + void setSelectExtension(bool value) { selectExtension_ = value; } diff --git a/pcmanfm/CMakeLists.txt b/pcmanfm/CMakeLists.txt index 3f657a1..c41f01b 100644 --- a/pcmanfm/CMakeLists.txt +++ b/pcmanfm/CMakeLists.txt @@ -26,6 +26,7 @@ set(pcmanfm_SRCS view.cpp launcher.cpp preferencesdialog.cpp + xdgdir.cpp desktoppreferencesdialog.cpp desktopwindow.cpp desktopitemdelegate.cpp @@ -51,9 +52,24 @@ set(pcmanfm_UIS qt5_wrap_ui(pcmanfm_UIS_H ${pcmanfm_UIS}) +# add translation for pcmanfm-qt +lxqt_translate_ts(QM_FILES + UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS} + SOURCES ${pcmanfm_SRCS} ${pcmanfm_UIS_H} +) + +# translate desktop entry files for pcmanfm-qt and desktop preferences +lxqt_translate_desktop(DESKTOP_FILES + SOURCES + pcmanfm-qt.desktop.in + pcmanfm-qt-desktop-pref.desktop.in +) + add_executable(pcmanfm-qt ${pcmanfm_SRCS} ${pcmanfm_UIS_H} + ${QM_FILES} + ${DESKTOP_FILES} ) set_property( TARGET pcmanfm-qt APPEND @@ -75,22 +91,9 @@ target_link_libraries(pcmanfm-qt install(TARGETS pcmanfm-qt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) # install a desktop entry file for pcmanfm-qt and desktop preferences -configure_file(pcmanfm-qt.desktop.in pcmanfm-qt.desktop @ONLY) -configure_file(pcmanfm-qt-desktop-pref.desktop.in pcmanfm-qt-desktop-pref.desktop @ONLY) -install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/pcmanfm-qt.desktop" - "${CMAKE_CURRENT_BINARY_DIR}/pcmanfm-qt-desktop-pref.desktop" - DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" +install(FILES ${DESKTOP_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" ) -# add translation for pcmanfm-qt -# See http://www.cmake.org/Wiki/CMake:How_To_Build_Qt4_Software -file(GLOB TS_FILES translations/*.ts) - -qt5_create_translation(QM_FILES ${pcmanfm_SRCS} ${pcmanfm_UIS_H} ${TS_FILES}) -qt5_add_translation(QM_FILES ${TS_FILES}) - -add_custom_target(pcmanfm_translations DEPENDS ${QM_FILES}) install(FILES ${QM_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/pcmanfm-qt/translations") # prevent the generated files from being deleted during make clean diff --git a/pcmanfm/application.cpp b/pcmanfm/application.cpp index 66a495a..ffedfcd 100644 --- a/pcmanfm/application.cpp +++ b/pcmanfm/application.cpp @@ -32,7 +32,9 @@ #include #include #include +#include #include +#include #include "applicationadaptor.h" #include "preferencesdialog.h" @@ -84,6 +86,8 @@ Application::Application(int& argc, char** argv): dbus.registerObject("/Application", this); connect(this, &Application::aboutToQuit, this, &Application::onAboutToQuit); + // aboutToQuit() is not signalled on SIGTERM, install signal handler + installSigtermHandler(); settings_.load(profileName_); // decrease the cache size to reduce memory usage @@ -200,7 +204,7 @@ bool Application::parseCommandLineArgs() { paths.push_back(QDir::currentPath()); } if(!paths.isEmpty()) - launchFiles(paths, parser.isSet(newWindowOption)); + launchFiles(QDir::currentPath(), paths, parser.isSet(newWindowOption)); keepRunning = true; } } @@ -235,8 +239,8 @@ bool Application::parseCommandLineArgs() { QStringList paths = parser.positionalArguments(); if(paths.isEmpty()) { paths.push_back(QDir::currentPath()); - } - iface.call("launchFiles", paths, parser.isSet(newWindowOption)); + } + iface.call("launchFiles", QDir::currentPath(), paths, parser.isSet(newWindowOption)); } } } @@ -370,15 +374,31 @@ void Application::findFiles(QStringList paths) { qDebug("findFiles"); } -void Application::launchFiles(QStringList paths, bool inNewWindow) { +void Application::launchFiles(QString cwd, QStringList paths, bool inNewWindow) { FmPathList* pathList = fm_path_list_new(); + FmPath* cwd_path = NULL; QStringList::iterator it; - for(it = paths.begin(); it != paths.end(); ++it) { - QString& pathName = *it; - FmPath* path = fm_path_new_for_commandline_arg(pathName.toLocal8Bit().constData()); + Q_FOREACH(const QString& it, paths) { + QByteArray pathName = it.toLocal8Bit(); + FmPath* path = NULL; + if(pathName[0] == '/') // absolute path + path = fm_path_new_for_path(pathName.constData()); + else if(pathName.contains(":/")) // URI + path = fm_path_new_for_uri(pathName.constData()); + else if(pathName == "~") // special case for home dir + path = fm_path_ref(fm_path_get_home()); + else // basename + { + if(Q_UNLIKELY(!cwd_path)) + cwd_path = fm_path_new_for_str(cwd.toLocal8Bit().constData()); + path = fm_path_new_relative(cwd_path, pathName.constData()); + } fm_path_list_push_tail(pathList, path); fm_path_unref(path); } + if(cwd_path) + fm_path_unref(cwd_path); + Launcher(NULL).launchPaths(NULL, pathList); fm_path_list_unref(pathList); } @@ -659,7 +679,6 @@ void Application::onScreenDestroyed(QObject* screenObj) { // // The workaround is very simple. Just completely destroy the window before Qt has a chance to do // QWindow::setScreen() for it. Later, we recreate the window ourselves. So this can bypassing the Qt bugs. - QScreen* screen = static_cast(screenObj); if(enableDesktopManager_) { bool reloadNeeded = false; // FIXME: add workarounds for Qt5 bug #40681 and #40791 here. @@ -699,10 +718,44 @@ void Application::onVirtualGeometryChanged(const QRect& rect) { // virtualGeometryChanged() is emitted correctly when the workAreas changed. // So we use it in Qt5. if(enableDesktopManager_) { - QScreen* screeb = static_cast(sender()); // qDebug() << "onVirtualGeometryChanged"; Q_FOREACH(DesktopWindow* desktop, desktopWindows_) { desktop->queueRelayout(); } } } + + +static int sigterm_fd[2]; + +static void sigtermHandler(int) { + char c = 1; + ::write(sigterm_fd[0], &c, sizeof(c)); +} + +void Application::installSigtermHandler() { + if(::socketpair(AF_UNIX, SOCK_STREAM, 0, sigterm_fd) == 0) { + QSocketNotifier* notifier = new QSocketNotifier(sigterm_fd[1], QSocketNotifier::Read, this); + connect(notifier, &QSocketNotifier::activated, this, &Application::onSigtermNotified); + + struct sigaction action; + action.sa_handler = sigtermHandler; + ::sigemptyset(&action.sa_mask); + action.sa_flags |= SA_RESTART; + if(::sigaction(SIGTERM, &action, 0) != 0) { + qWarning("Couldn't install SIGTERM handler"); + } + } else { + qWarning("Couldn't create SIGTERM socketpair"); + } +} + +void Application::onSigtermNotified() { + if (QSocketNotifier* notifier = qobject_cast(sender())) { + notifier->setEnabled(false); + char c; + ::read(sigterm_fd[1], &c, sizeof(c)); + quit(); + notifier->setEnabled(true); + } +} diff --git a/pcmanfm/application.h b/pcmanfm/application.h index 766ba18..c0dc727 100644 --- a/pcmanfm/application.h +++ b/pcmanfm/application.h @@ -69,7 +69,7 @@ public: } // public interface exported via dbus - void launchFiles(QStringList paths, bool inNewWindow); + void launchFiles(QString cwd, QStringList paths, bool inNewWindow); void setWallpaper(QString path, QString modeString); void preferences(QString page); void desktopPrefrences(QString page); @@ -95,6 +95,7 @@ public: protected Q_SLOTS: void onAboutToQuit(); + void onSigtermNotified(); void onLastWindowClosed(); void onSaveStateRequest(QSessionManager & manager); @@ -116,6 +117,8 @@ protected: static void onVolumeAdded(GVolumeMonitor* monitor, GVolume* volume, Application* pThis); private: + void installSigtermHandler(); + bool isPrimaryInstance; Fm::LibFmQt libFm_; Settings settings_; diff --git a/pcmanfm/autorundialog.h b/pcmanfm/autorundialog.h index f34a92e..44f4f81 100644 --- a/pcmanfm/autorundialog.h +++ b/pcmanfm/autorundialog.h @@ -35,7 +35,7 @@ public: virtual ~AutoRunDialog(); virtual void accept(); - + private Q_SLOTS: private: diff --git a/pcmanfm/desktopitemdelegate.cpp b/pcmanfm/desktopitemdelegate.cpp index 861dbfb..1f5c6bb 100644 --- a/pcmanfm/desktopitemdelegate.cpp +++ b/pcmanfm/desktopitemdelegate.cpp @@ -42,8 +42,6 @@ void DesktopItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& o Q_ASSERT(index.isValid()); QStyleOptionViewItemV4 opt = option; initStyleOption(&opt, index); - const QWidget* widget = opt.widget; - QStyle* style = widget ? widget->style() : QApplication::style(); painter->save(); painter->setClipRect(option.rect); @@ -112,8 +110,8 @@ void DesktopItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& o QRectF boundRect = layout.boundingRect(); boundRect.setWidth(width); boundRect.moveTo(textRect.x() + (textRect.width() - width)/2, textRect.y()); - if(opt.state & QStyle::State_Selected) { - QPalette palette = widget->palette(); + if((opt.state & QStyle::State_Selected) && opt.widget) { + QPalette palette = opt.widget->palette(); // qDebug("w: %f, h:%f, m:%f", boundRect.width(), boundRect.height(), layout.minimumWidth()); painter->fillRect(boundRect, palette.highlight()); } @@ -158,8 +156,6 @@ QSize DesktopItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QM return qvariant_cast(value); QStyleOptionViewItemV4 opt = option; initStyleOption(&opt, index); - const QWidget* widget = opt.widget; - QStyle* style = widget ? widget->style() : QApplication::style(); // use grid size as size hint QSize gridSize = view_->gridSize(); diff --git a/pcmanfm/desktoppreferencesdialog.cpp b/pcmanfm/desktoppreferencesdialog.cpp index d582e69..df9008a 100644 --- a/pcmanfm/desktoppreferencesdialog.cpp +++ b/pcmanfm/desktoppreferencesdialog.cpp @@ -21,6 +21,7 @@ #include "desktopwindow.h" #include "settings.h" #include "application.h" +#include "xdgdir.h" #include #include #include @@ -32,54 +33,6 @@ using namespace PCManFM; -static QString readUserDirsFile() { - QFile file(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/user-dirs.dirs")); - if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QByteArray data = file.readAll(); - file.close(); - return QString::fromLocal8Bit(data); - } - return QString(); -} - -static QString readDesktopDir() { - QString str = readUserDirsFile(); - if(str.isEmpty()) - return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + QStringLiteral("/Desktop"); - QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\"")); - if(reg.lastIndexIn(str) != -1) { - str = reg.cap(1); - if(str.startsWith(QStringLiteral("$HOME"))) - str = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + str.mid(5); - return str; - } - return QString(); -} - -static void setDesktopDir(QString path) { - QString home = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); - if(path.startsWith(home)) - path = QStringLiteral("$HOME") + path.mid(home.length()); - QString str = readUserDirsFile(); - QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\"")); - QString line = QStringLiteral("XDG_DESKTOP_DIR=\"") + path + '\"'; - if(reg.indexIn(str) != -1) - str.replace(reg, line); - else { - if(!str.endsWith('\n')) - str += '\n'; - str += line + '\n'; - } - QString dir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); - if(QDir().mkpath(dir)) { // write the file - QSaveFile file(dir + QStringLiteral("/user-dirs.dirs")); - if(file.open(QIODevice::WriteOnly | QIODevice::Text)) { - file.write(str.toLocal8Bit()); - file.commit(); - } - } -} - DesktopPreferencesDialog::DesktopPreferencesDialog(QWidget* parent, Qt::WindowFlags f): QDialog(parent, f) { @@ -122,7 +75,7 @@ DesktopPreferencesDialog::DesktopPreferencesDialog(QWidget* parent, Qt::WindowFl ui.imageFile->setText(settings.wallpaper()); connect(ui.browseDesktopFolder, &QPushButton::clicked, this, &DesktopPreferencesDialog::onBrowseDesktopFolderClicked); - QString desktopFolder = readDesktopDir(); + QString desktopFolder = XdgDir::readDesktopDir(); qDebug("desktop folder: %s", desktopFolder.toStdString().c_str()); ui.desktopFolder->setText(desktopFolder); @@ -140,7 +93,7 @@ DesktopPreferencesDialog::~DesktopPreferencesDialog() { void DesktopPreferencesDialog::accept() { Settings& settings = static_cast(qApp)->settings(); - setDesktopDir(ui.desktopFolder->text()); + XdgDir::setDesktopDir(ui.desktopFolder->text()); settings.setWallpaper(ui.imageFile->text()); int mode = ui.wallpaperMode->itemData(ui.wallpaperMode->currentIndex()).toInt(); @@ -158,7 +111,6 @@ void DesktopPreferencesDialog::accept() { } void DesktopPreferencesDialog::onWallpaperModeChanged(int index) { - int n = ui.wallpaperMode->count(); int mode = ui.wallpaperMode->itemData(index).toInt(); bool enable = (mode != DesktopWindow::WallpaperNone); diff --git a/pcmanfm/desktopwindow.cpp b/pcmanfm/desktopwindow.cpp index 8e90c66..8c3260e 100644 --- a/pcmanfm/desktopwindow.cpp +++ b/pcmanfm/desktopwindow.cpp @@ -48,6 +48,7 @@ #include "filepropsdialog.h" #include "utilities.h" #include "path.h" +#include "xdgdir.h" #include #include @@ -198,7 +199,8 @@ void DesktopWindow::resizeEvent(QResizeEvent* event) { } void DesktopWindow::setDesktopFolder() { - model_ = Fm::CachedFolderModel::modelFromPath(fm_path_get_desktop()); + FmPath *path = fm_path_new_for_path(XdgDir::readDesktopDir().toStdString().c_str()); + model_ = Fm::CachedFolderModel::modelFromPath(path); proxyModel_->setSourceModel(model_); } @@ -649,7 +651,7 @@ void DesktopWindow::onDeleteActivated() { Settings& settings = static_cast(qApp)->settings(); bool shiftPressed = (qApp->keyboardModifiers() & Qt::ShiftModifier ? true : false); if(settings.useTrash() && !shiftPressed) - Fm::FileOperation::trashFiles(paths, settings.confirmDelete()); + Fm::FileOperation::trashFiles(paths, settings.confirmTrash()); else Fm::FileOperation::deleteFiles(paths, settings.confirmDelete()); fm_path_list_unref(paths); @@ -697,7 +699,11 @@ bool DesktopWindow::event(QEvent* event) case QEvent::FontChange: queueRelayout(); break; + + default: + break; } + return QWidget::event(event); } diff --git a/pcmanfm/launcher.cpp b/pcmanfm/launcher.cpp index c71d25d..d376fc9 100644 --- a/pcmanfm/launcher.cpp +++ b/pcmanfm/launcher.cpp @@ -28,6 +28,8 @@ Launcher::Launcher(PCManFM::MainWindow* mainWindow): Fm::FileLauncher(), mainWindow_(mainWindow) { + Application* app = static_cast(qApp); + setQuickExec(app->settings().quickExec()); } Launcher::~Launcher() { diff --git a/pcmanfm/launcher.h b/pcmanfm/launcher.h index 35e30ab..482d986 100644 --- a/pcmanfm/launcher.h +++ b/pcmanfm/launcher.h @@ -24,7 +24,7 @@ #include "filelauncher.h" namespace PCManFM { - + class MainWindow; class Launcher : public Fm::FileLauncher { diff --git a/pcmanfm/main-win.ui b/pcmanfm/main-win.ui index 1c550cb..13740b1 100644 --- a/pcmanfm/main-win.ui +++ b/pcmanfm/main-win.ui @@ -74,9 +74,18 @@ &File + + + C&reate New + + + + + + @@ -628,6 +637,28 @@ &Edit Bookmarks + + + + + + Folder + + + Ctrl+Shift+N + + + + + + + + Blank File + + + Ctrl+Alt+N + + diff --git a/pcmanfm/mainwindow.cpp b/pcmanfm/mainwindow.cpp index e9d382e..19c22f9 100644 --- a/pcmanfm/mainwindow.cpp +++ b/pcmanfm/mainwindow.cpp @@ -59,12 +59,16 @@ MainWindow::MainWindow(FmPath* path): ui.setupUi(this); // hide menu items that are not usable - if(!isUriSchemeSupported("computer")) - ui.actionComputer->setVisible(false); - if(!isUriSchemeSupported("trash")) + //if(!uriExists("computer:///")) + // ui.actionComputer->setVisible(false); + if(!settings.supportTrash()) ui.actionTrash->setVisible(false); - if(!isUriSchemeSupported("network")) - ui.actionNetwork->setVisible(false); + + // FIXME: add an option to hide network:/// + // We cannot use uriExists() here since calling this on "network:///" + // is very slow and blocking. + //if(!uriExists("network:///")) + // ui.actionNetwork->setVisible(false); // add a context menu for showing browse history to back and forward buttons QToolButton* forwardButton = static_cast(ui.toolBar->widgetForAction(ui.actionGoForward)); @@ -94,8 +98,14 @@ MainWindow::MainWindow(FmPath* path): // side pane ui.sidePane->setIconSize(QSize(settings.sidePaneIconSize(), settings.sidePaneIconSize())); - ui.sidePane->setMode(Fm::SidePane::ModePlaces); + ui.sidePane->setMode(settings.sidePaneMode()); connect(ui.sidePane, &Fm::SidePane::chdirRequested, this, &MainWindow::onSidePaneChdirRequested); + connect(ui.sidePane, &Fm::SidePane::openFolderInNewWindowRequested, this, &MainWindow::onSidePaneOpenFolderInNewWindowRequested); + connect(ui.sidePane, &Fm::SidePane::openFolderInNewTabRequested, this, &MainWindow::onSidePaneOpenFolderInNewTabRequested); + connect(ui.sidePane, &Fm::SidePane::openFolderInTerminalRequested, this, &MainWindow::onSidePaneOpenFolderInTerminalRequested); + connect(ui.sidePane, &Fm::SidePane::createNewFolderRequested, this, &MainWindow::onSidePaneCreateNewFolderRequested); + connect(ui.sidePane, &Fm::SidePane::modeChanged, this, &MainWindow::onSidePaneModeChanged); + // detect change of splitter position connect(ui.splitter, &QSplitter::splitterMoved, this, &MainWindow::onSplitterMoved); @@ -173,6 +183,13 @@ MainWindow::MainWindow(FmPath* path): if(path) addTab(path); + + // size from settings + if(settings.rememberWindowSize()) { + resize(settings.windowWidth(), settings.windowHeight()); + if(settings.windowMaximized()) + setWindowState(windowState() | Qt::WindowMaximized); + } } MainWindow::~MainWindow() { @@ -262,14 +279,25 @@ void MainWindow::on_actionNewTab_triggered() { void MainWindow::on_actionNewWin_triggered() { FmPath* path = currentPage()->path(); - Application* app = static_cast(qApp); - MainWindow* newWin = new MainWindow(path); - newWin->resize(app->settings().windowWidth(), app->settings().windowHeight()); + (new MainWindow(path))->show(); +} + +void MainWindow::on_actionNewFolder_triggered() { + if(TabPage* tabPage = currentPage()) { + FmPath* dirPath = tabPage->folderView()->path(); - if(app->settings().windowMaximized()) - newWin->setWindowState(newWin->windowState() | Qt::WindowMaximized); - - newWin->show(); + if(dirPath) + createFileOrFolder(CreateNewFolder, dirPath); + } +} + +void MainWindow::on_actionNewBlankFile_triggered() { + if(TabPage* tabPage = currentPage()) { + FmPath* dirPath = tabPage->folderView()->path(); + + if(dirPath) + createFileOrFolder(CreateNewTextFile, dirPath); + } } void MainWindow::on_actionCloseTab_triggered() { @@ -313,6 +341,7 @@ void MainWindow::on_actionFolderProperties_triggered() { void MainWindow::on_actionShowHidden_triggered(bool checked) { TabPage* tabPage = currentPage(); tabPage->setShowHidden(checked); + ui.sidePane->setShowHidden(checked); static_cast(qApp)->settings().setShowHidden(checked); } @@ -562,6 +591,7 @@ void MainWindow::updateUIForCurrentPage() { // update side pane ui.sidePane->setCurrentPath(tabPage->path()); + ui.sidePane->setShowHidden(tabPage->showHidden()); // update back/forward/up toolbar buttons ui.actionGoUp->setEnabled(tabPage->canUp()); @@ -625,24 +655,16 @@ void MainWindow::onTabPageStatusChanged(int type, QString statusText) { void MainWindow::onTabPageOpenDirRequested(FmPath* path, int target) { switch(target) { - case View::OpenInCurrentView: + case OpenInCurrentTab: chdir(path); break; - case View::OpenInNewTab: + case OpenInNewTab: addTab(path); break; - case View::OpenInNewWindow: { - Application* app = static_cast(qApp); - MainWindow* newWin = new MainWindow(path); - // TODO: apply window size from app->settings - newWin->resize(app->settings().windowWidth(), app->settings().windowHeight()); - - if(app->settings().windowMaximized()) - newWin->setWindowState(newWin->windowState() | Qt::WindowMaximized); - - newWin->show(); + case OpenInNewWindow: { + (new MainWindow(path))->show(); break; } } @@ -653,6 +675,10 @@ void MainWindow::onTabPageSortFilterChanged() { if(tabPage == currentPage()) { updateViewMenuForCurrentPage(); + Settings& settings = static_cast(qApp)->settings(); + settings.setSortColumn(static_cast(tabPage->sortColumn())); + settings.setSortOrder(tabPage->sortOrder()); + settings.setSortFolderFirst(tabPage->sortFolderFirst()); } } @@ -663,6 +689,29 @@ void MainWindow::onSidePaneChdirRequested(int type, FmPath* path) { chdir(path); else if(type == 1) // middle button addTab(path); + else if(type == 2) // new window + (new MainWindow(path))->show(); +} + +void MainWindow::onSidePaneOpenFolderInNewWindowRequested(FmPath* path) { + (new MainWindow(path))->show(); +} + +void MainWindow::onSidePaneOpenFolderInNewTabRequested(FmPath* path) { + addTab(path); +} + +void MainWindow::onSidePaneOpenFolderInTerminalRequested(FmPath* path) { + Application* app = static_cast(qApp); + app->openFolderInTerminal(path); +} + +void MainWindow::onSidePaneCreateNewFolderRequested(FmPath* path) { + createFileOrFolder(CreateNewFolder, path); +} + +void MainWindow::onSidePaneModeChanged(Fm::SidePane::Mode mode) { + static_cast(qApp)->settings().setSidePaneMode(mode); } void MainWindow::onSplitterMoved(int pos, int index) { @@ -671,17 +720,18 @@ void MainWindow::onSplitterMoved(int pos, int index) { } void MainWindow::loadBookmarksMenu() { - GList* l = fm_bookmarks_get_all(bookmarks); + GList* allBookmarks = fm_bookmarks_get_all(bookmarks); QAction* before = ui.actionAddToBookmarks; - for(; l; l = l->next) { + for(GList* l = allBookmarks; l; l = l->next) { FmBookmarkItem* item = reinterpret_cast(l->data); - BookmarkAction* action = new BookmarkAction(item); + BookmarkAction* action = new BookmarkAction(item, ui.menu_Bookmarks); connect(action, &QAction::triggered, this, &MainWindow::onBookmarkActionTriggered); ui.menu_Bookmarks->insertAction(before, action); } ui.menu_Bookmarks->insertSeparator(before); + g_list_free_full(allBookmarks, (GDestroyNotify)fm_bookmark_item_unref); } void MainWindow::onBookmarksChanged(FmBookmarks* bookmarks, MainWindow* pThis) { @@ -702,9 +752,22 @@ void MainWindow::onBookmarksChanged(FmBookmarks* bookmarks, MainWindow* pThis) { void MainWindow::onBookmarkActionTriggered() { BookmarkAction* action = static_cast(sender()); FmPath* path = action->path(); - - if(path) - chdir(path); + if(path) { + Application* app = static_cast(qApp); + Settings& settings = app->settings(); + switch(settings.bookmarkOpenMethod()) { + case OpenInCurrentTab: /* current tab */ + default: + chdir(path); + break; + case OpenInNewTab: /* new tab */ + addTab(path); + break; + case OpenInNewWindow: /* new window */ + (new MainWindow(path))->show(); + break; + } + } } void MainWindow::on_actionCopy_triggered() { @@ -733,7 +796,7 @@ void MainWindow::on_actionDelete_triggered() { bool shiftPressed = (qApp->keyboardModifiers() & Qt::ShiftModifier ? true : false); if(settings.useTrash() && !shiftPressed) - FileOperation::trashFiles(paths, settings.confirmDelete(), this); + FileOperation::trashFiles(paths, settings.confirmTrash(), this); else FileOperation::deleteFiles(paths, settings.confirmDelete(), this); @@ -808,6 +871,7 @@ void MainWindow::updateFromSettings(Settings& settings) { // menu ui.actionDelete->setText(settings.useTrash() ? tr("&Move to Trash") : tr("&Delete")); + ui.actionDelete->setIcon(settings.useTrash() ? QIcon::fromTheme("user-trash") : QIcon::fromTheme("edit-delete")); // side pane ui.sidePane->setIconSize(QSize(settings.sidePaneIconSize(), settings.sidePaneIconSize())); diff --git a/pcmanfm/mainwindow.h b/pcmanfm/mainwindow.h index 9dd938e..58b6aa6 100644 --- a/pcmanfm/mainwindow.h +++ b/pcmanfm/mainwindow.h @@ -59,6 +59,8 @@ protected Q_SLOTS: void on_actionNewTab_triggered(); void on_actionNewWin_triggered(); + void on_actionNewFolder_triggered(); + void on_actionNewBlankFile_triggered(); void on_actionCloseTab_triggered(); void on_actionCloseWindow_triggered(); void on_actionFileProperties_triggered(); @@ -128,6 +130,11 @@ protected Q_SLOTS: void onTabPageSortFilterChanged(); void onSidePaneChdirRequested(int type, FmPath* path); + void onSidePaneOpenFolderInNewWindowRequested(FmPath* path); + void onSidePaneOpenFolderInNewTabRequested(FmPath* path); + void onSidePaneOpenFolderInTerminalRequested(FmPath* path); + void onSidePaneCreateNewFolderRequested(FmPath* path); + void onSidePaneModeChanged(Fm::SidePane::Mode mode); void onSplitterMoved(int pos, int index); void onBackForwardContextMenu(QPoint pos); diff --git a/pcmanfm/org.pcmanfm.Application.xml b/pcmanfm/org.pcmanfm.Application.xml index 5a0f8dc..448c34e 100644 --- a/pcmanfm/org.pcmanfm.Application.xml +++ b/pcmanfm/org.pcmanfm.Application.xml @@ -11,6 +11,7 @@ + diff --git a/pcmanfm/pcmanfm.cpp b/pcmanfm/pcmanfm.cpp index 4e42976..2508307 100644 --- a/pcmanfm/pcmanfm.cpp +++ b/pcmanfm/pcmanfm.cpp @@ -3,6 +3,10 @@ #include "libfmqt.h" int main(int argc, char** argv) { + // ensure that glib integration of Qt is not turned off + // This fixes #168: https://github.com/lxde/pcmanfm-qt/issues/168 + qunsetenv("QT_NO_GLIB"); + PCManFM::Application app(argc, argv); app.init(); return app.exec(); diff --git a/pcmanfm/preferences.ui b/pcmanfm/preferences.ui index fc9e2e4..e7f54ae 100644 --- a/pcmanfm/preferences.ui +++ b/pcmanfm/preferences.ui @@ -6,8 +6,8 @@ 0 0 - 736 - 497 + 685 + 440 @@ -28,16 +28,21 @@ Qt::ScrollBarAlwaysOff - 0 + -1 - User Interface + Behavior - Behavior + Display + + + + + User Interface @@ -68,14 +73,176 @@ 0 - - + + + + + + Browsing + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + Open files with single click + + + + + + + false + + + Delay of auto-selection in single click mode (0 to disable) + + + + + + + Default view mode: + + + + + + + + + + false + + + sec + + + 0.100000000000000 + + + + + + + Bookmarks: + + + + + + + + Open in current tab + + + + + Open in new tab + + + + + Open in new window + + + + + + + + + + + File Operations + + + + + + Confirm before deleting files + + + + + + + Move deleted files to "trash bin" instead of erasing from disk. + + + + + + + Erase files on removable media instead of "trash can" creation + + + + + + + Confirm before moving files into "trash can" + + + + + + + Don't ask options on launch executable file + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + Icons + + + + + 0 + 0 + + + + Icon theme: + + + + + + + + 0 + 0 + + + + @@ -116,32 +283,69 @@ - - - - - 0 - 0 - + + + + + + + User interface + + + + + + Use SI decimal prefixes instead of IEC binary prefixes + + + + - Icon theme: + Treat backup files as hidden - - - - - 0 - 0 - + + + + false + + + Always show full file names + + + + + + + false + + + Show icons of hidden files shadowed + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + @@ -203,6 +407,100 @@ + + + + Show in places + + + + + + + Home + + + Unchecked + + + + + + + + + + Desktop + + + Unchecked + + + + + + + + + + Trash can + + + Unchecked + + + + + + + + + + Computer + + + Unchecked + + + + + + + + + + Applications + + + Unchecked + + + + + Devices + + + Unchecked + + + + + Network + + + Unchecked + + + + + + + + + + + + @@ -210,85 +508,50 @@ - 20 - 40 + 0 + 0 - - + + - + - Browsing + Thumbnail - - - QFormLayout::AllNonFixedFieldsGrow - - - - - Open files with single click - - - - - - - false - - - Delay of auto-selection in single click mode (0 to disable) - - - + - + - Default view mode: + Do not generate thumbnails for image files exceeding this size: - - - - - - false - + - sec + KB - - 0.100000000000000 + + 1048576 - - - - - - - File Operations - - - - + + - Confirm before deleting files + Only show thumbnails for local files - - + + - Move deleted files to "trash bin" instead of erasing from disk. + Show thumbnails of files @@ -296,60 +559,22 @@ - + Qt::Vertical - 20 - 40 + 0 + 225 - - - - QFormLayout::ExpandingFieldsGrow - - - - - Show thumbnails of files - - - - - - - Only show thumbnails for local files - - - - - - - Do not generate thumbnails for image files exceeding this size: - - - - - - - KB - - - 1048576 - - - - - - + @@ -389,14 +614,14 @@ - Close tab containing removable medium + Close &tab containing removable medium - Change folder in the tab to home folder + Chan&ge folder in the tab to home folder @@ -410,8 +635,8 @@ - 20 - 40 + 0 + 0 @@ -419,7 +644,7 @@ - + @@ -439,7 +664,7 @@ - Switch user command: + Switch &user command: suCommand @@ -463,7 +688,7 @@ - Archiver integration: + Archiver in&tegration: archiver @@ -484,13 +709,33 @@ - - - false - - - Use SI decimal prefixes instead of IEC binary prefixes + + + Templates + + + + + Show only user defined templates in menu + + + + + + + Show only one template for each MIME type + + + + + + + Run default application after creation from template + + + + @@ -500,8 +745,8 @@ - 20 - 40 + 0 + 0 @@ -525,28 +770,25 @@ - smallIconSize - bigIconSize - thumbnailIconSize - sidePaneIconSize - iconTheme + listWidget alwaysShowTabs showTabClose + rememberWindowSize + fixedWindowWidth + fixedWindowHeight singleClick + autoSelectionDelay viewMode configmDelete useTrash - showThumbnails mountOnStartup + mountRemovable + autoRun + closeOnUnmount + goHomeOnUnmount + terminal suCommand archiver - siUnit - autoRun - mountRemovable - buttonBox - listWidget - thumbnailLocal - maxThumbnailFileSize diff --git a/pcmanfm/preferencesdialog.cpp b/pcmanfm/preferencesdialog.cpp index a327c95..8b49b47 100644 --- a/pcmanfm/preferencesdialog.cpp +++ b/pcmanfm/preferencesdialog.cpp @@ -81,8 +81,6 @@ static void findIconThemesInDir(QHash& iconThemes, QString dir } void PreferencesDialog::initIconThemes(Settings& settings) { - Application* app = static_cast(qApp); - // check if auto-detection is done (for example, from xsettings) if(settings.useFallbackIconTheme()) { // auto-detection failed // load xdg icon themes and select the current one @@ -133,45 +131,62 @@ void PreferencesDialog::initArchivers(Settings& settings) { } } -void PreferencesDialog::initUiPage(Settings& settings) { - initIconThemes(settings); - // icon sizes - int i; - for(i = 0; i < G_N_ELEMENTS(bigIconSizes); ++i) { - int size = bigIconSizes[i]; - ui.bigIconSize->addItem(QString("%1 x %1").arg(size), size); - if(settings.bigIconSize() == size) - ui.bigIconSize->setCurrentIndex(i); - } - for(i = 0; i < G_N_ELEMENTS(smallIconSizes); ++i) { - int size = smallIconSizes[i]; - QString text = QString("%1 x %1").arg(size); - ui.smallIconSize->addItem(text, size); - if(settings.smallIconSize() == size) - ui.smallIconSize->setCurrentIndex(i); - - ui.sidePaneIconSize->addItem(text, size); - if(settings.sidePaneIconSize() == size) - ui.sidePaneIconSize->setCurrentIndex(i); - } - for(i = 0; i < G_N_ELEMENTS(thumbnailIconSizes); ++i) { - int size = thumbnailIconSizes[i]; - ui.thumbnailIconSize->addItem(QString("%1 x %1").arg(size), size); - if(settings.thumbnailIconSize() == size) - ui.thumbnailIconSize->setCurrentIndex(i); - } +void PreferencesDialog::initDisplayPage(Settings& settings) { + initIconThemes(settings); + // icon sizes + int i; + for(i = 0; i < G_N_ELEMENTS(bigIconSizes); ++i) { + int size = bigIconSizes[i]; + ui.bigIconSize->addItem(QString("%1 x %1").arg(size), size); + if(settings.bigIconSize() == size) + ui.bigIconSize->setCurrentIndex(i); + } + for(i = 0; i < G_N_ELEMENTS(smallIconSizes); ++i) { + int size = smallIconSizes[i]; + QString text = QString("%1 x %1").arg(size); + ui.smallIconSize->addItem(text, size); + if(settings.smallIconSize() == size) + ui.smallIconSize->setCurrentIndex(i); + + ui.sidePaneIconSize->addItem(text, size); + if(settings.sidePaneIconSize() == size) + ui.sidePaneIconSize->setCurrentIndex(i); + } + for(i = 0; i < G_N_ELEMENTS(thumbnailIconSizes); ++i) { + int size = thumbnailIconSizes[i]; + ui.thumbnailIconSize->addItem(QString("%1 x %1").arg(size), size); + if(settings.thumbnailIconSize() == size) + ui.thumbnailIconSize->setCurrentIndex(i); + } + + ui.siUnit->setChecked(settings.siUnit()); + ui.backupAsHidden->setChecked(settings.backupAsHidden()); + + ui.showFullNames->setChecked(settings.showFullNames()); + ui.shadowHidden->setChecked(settings.shadowHidden()); + + // FIXME: Hide options that we don't support yet. + ui.showFullNames->hide(); + ui.shadowHidden->hide(); +} +void PreferencesDialog::initUiPage(Settings& settings) { ui.alwaysShowTabs->setChecked(settings.alwaysShowTabs()); ui.showTabClose->setChecked(settings.showTabClose()); ui.rememberWindowSize->setChecked(settings.rememberWindowSize()); ui.fixedWindowWidth->setValue(settings.fixedWindowWidth()); ui.fixedWindowHeight->setValue(settings.fixedWindowHeight()); + + // FIXME: Hide options that we don't support yet. + ui.showInPlaces->parentWidget()->hide(); } void PreferencesDialog::initBehaviorPage(Settings& settings) { ui.singleClick->setChecked(settings.singleClick()); ui.autoSelectionDelay->setValue(double(settings.autoSelectionDelay()) / 1000); + ui.bookmarkOpenMethod->setCurrentIndex(settings.bookmarkOpenMethod()); + ui.viewMode->addItem(tr("Icon View"), (int)Fm::FolderView::IconMode); ui.viewMode->addItem(tr("Compact Icon View"), (int)Fm::FolderView::CompactMode); ui.viewMode->addItem(tr("Thumbnail View"), (int)Fm::FolderView::ThumbnailMode); @@ -196,6 +211,10 @@ void PreferencesDialog::initBehaviorPage(Settings& settings) { else { ui.useTrash->hide(); } + + ui.noUsbTrash->setChecked(settings.noUsbTrash()); + ui.confirmTrash->setChecked(settings.confirmTrash()); + ui.quickExec->setChecked(settings.quickExec()); } void PreferencesDialog::initThumbnailPage(Settings& settings) { @@ -225,11 +244,19 @@ void PreferencesDialog::initAdvancedPage(Settings& settings) { initArchivers(settings); initTerminals(settings); ui.suCommand->setText(settings.suCommand()); - // ui.siUnit->setChecked(settings.siUnit()); + + ui.onlyUserTemplates->setChecked(settings.onlyUserTemplates()); + ui.templateTypeOnce->setChecked(settings.templateTypeOnce()); + + ui.templateRunApp->setChecked(settings.templateRunApp()); + + // FIXME: Hide options that we don't support yet. + ui.templateRunApp->hide(); } void PreferencesDialog::initFromSettings() { Settings& settings = static_cast(qApp)->settings(); + initDisplayPage(settings); initUiPage(settings); initBehaviorPage(settings); initThumbnailPage(settings); @@ -237,7 +264,7 @@ void PreferencesDialog::initFromSettings() { initAdvancedPage(settings); } -void PreferencesDialog::applyUiPage(Settings& settings) { +void PreferencesDialog::applyDisplayPage(Settings& settings) { if(settings.useFallbackIconTheme()) { // only apply the value if icon theme combo box is in use // the combo box is hidden when auto-detection of icon theme from xsettings works. @@ -257,6 +284,14 @@ void PreferencesDialog::applyUiPage(Settings& settings) { settings.setSmallIconSize(ui.smallIconSize->itemData(ui.smallIconSize->currentIndex()).toInt()); settings.setThumbnailIconSize(ui.thumbnailIconSize->itemData(ui.thumbnailIconSize->currentIndex()).toInt()); settings.setSidePaneIconSize(ui.sidePaneIconSize->itemData(ui.sidePaneIconSize->currentIndex()).toInt()); + + settings.setSiUnit(ui.siUnit->isChecked()); + settings.setBackupAsHidden(ui.backupAsHidden->isChecked()); + settings.setShowFullNames(ui.showFullNames->isChecked()); + settings.setShadowHidden(ui.shadowHidden->isChecked()); +} + +void PreferencesDialog::applyUiPage(Settings& settings) { settings.setAlwaysShowTabs(ui.alwaysShowTabs->isChecked()); settings.setShowTabClose(ui.showTabClose->isChecked()); settings.setRememberWindowSize(ui.rememberWindowSize->isChecked()); @@ -267,13 +302,20 @@ void PreferencesDialog::applyUiPage(Settings& settings) { void PreferencesDialog::applyBehaviorPage(Settings& settings) { settings.setSingleClick(ui.singleClick->isChecked()); settings.setAutoSelectionDelay(int(ui.autoSelectionDelay->value() * 1000)); + + settings.setBookmarkOpenMethod(OpenDirTargetType(ui.bookmarkOpenMethod->currentIndex())); + // FIXME: bug here? Fm::FolderView::ViewMode mode = Fm::FolderView::ViewMode(ui.viewMode->itemData(ui.viewMode->currentIndex()).toInt()); settings.setViewMode(mode); settings.setConfirmDelete(ui.configmDelete->isChecked()); - + if(settings.supportTrash()) settings.setUseTrash(ui.useTrash->isChecked()); + + settings.setNoUsbTrash(ui.noUsbTrash->isChecked()); + settings.setConfirmTrash(ui.confirmTrash->isChecked()); + settings.setQuickExec(ui.quickExec->isChecked()); } void PreferencesDialog::applyThumbnailPage(Settings& settings) { @@ -293,12 +335,16 @@ void PreferencesDialog::applyAdvancedPage(Settings& settings) { settings.setTerminal(ui.terminal->currentText()); settings.setSuCommand(ui.suCommand->text()); settings.setArchiver(ui.archiver->itemData(ui.archiver->currentIndex()).toString()); - settings.setSiUnit(ui.siUnit->isChecked()); + + settings.setOnlyUserTemplates(ui.onlyUserTemplates->isChecked()); + settings.setTemplateTypeOnce(ui.templateTypeOnce->isChecked()); + settings.setTemplateRunApp(ui.templateRunApp->isChecked()); } void PreferencesDialog::applySettings() { Settings& settings = static_cast(qApp)->settings(); + applyDisplayPage(settings); applyUiPage(settings); applyBehaviorPage(settings); applyThumbnailPage(settings); diff --git a/pcmanfm/preferencesdialog.h b/pcmanfm/preferencesdialog.h index 5fad79d..28cf210 100644 --- a/pcmanfm/preferencesdialog.h +++ b/pcmanfm/preferencesdialog.h @@ -39,10 +39,11 @@ public: virtual ~PreferencesDialog(); virtual void accept(); - + private: void initIconThemes(Settings& settings); void initArchivers(Settings& settings); + void initDisplayPage(Settings& settings); void initUiPage(Settings& settings); void initBehaviorPage(Settings& settings); void initThumbnailPage(Settings& settings); @@ -51,6 +52,7 @@ private: void initTerminals(Settings& settings); void applyUiPage(Settings& settings); + void applyDisplayPage(Settings& settings); void applyBehaviorPage(Settings& settings); void applyThumbnailPage(Settings& settings); void applyVolumePage(Settings& settings); diff --git a/pcmanfm/settings.cpp b/pcmanfm/settings.cpp index 8598d3a..b19ee97 100644 --- a/pcmanfm/settings.cpp +++ b/pcmanfm/settings.cpp @@ -30,8 +30,8 @@ using namespace PCManFM; -inline static const char* bookmarkOpenMethodToString(int value); -inline static int bookmarkOpenMethodFromString(const QString str); +inline static const char* bookmarkOpenMethodToString(OpenDirTargetType value); +inline static OpenDirTargetType bookmarkOpenMethodFromString(const QString str); inline static const char* wallpaperModeToString(int value); inline static int wallpaperModeFromString(const QString str); @@ -39,8 +39,8 @@ inline static int wallpaperModeFromString(const QString str); inline static const char* viewModeToString(Fm::FolderView::ViewMode value); inline static Fm::FolderView::ViewMode viewModeFromString(const QString str); -inline static const char* sidePaneModeToString(int value); -inline static int sidePaneModeFromString(const QString str); +inline static const char* sidePaneModeToString(Fm::SidePane::Mode value); +inline static Fm::SidePane::Mode sidePaneModeFromString(const QString& str); inline static const char* sortOrderToString(Qt::SortOrder order); inline static Qt::SortOrder sortOrderFromString(const QString str); @@ -50,10 +50,10 @@ inline static Fm::FolderModel::ColumnId sortColumnFromString(const QString str); Settings::Settings(): QObject(), - supportTrash_(Fm::isUriSchemeSupported("trash")), + supportTrash_(Fm::uriExists("trash:///")), // check if trash:/// is supported fallbackIconThemeName_(), useFallbackIconTheme_(QIcon::themeName().isEmpty() || QIcon::themeName() == "hicolor"), - bookmarkOpenMethod_(0), + bookmarkOpenMethod_(OpenInCurrentTab), suCommand_(), terminal_(), mountOnStartup_(true), @@ -71,23 +71,27 @@ Settings::Settings(): desktopSortColumn_(Fm::FolderModel::ColumnFileName), alwaysShowTabs_(true), showTabClose_(true), + rememberWindowSize_(true), fixedWindowWidth_(640), fixedWindowHeight_(480), lastWindowWidth_(640), lastWindowHeight_(480), lastWindowMaximized_(false), splitterPos_(120), - sidePaneMode_(0), + sidePaneMode_(Fm::SidePane::ModePlaces), viewMode_(Fm::FolderView::IconMode), showHidden_(false), sortOrder_(Qt::AscendingOrder), sortColumn_(Fm::FolderModel::ColumnFileName), + sortFolderFirst_(true), // settings for use with libfm singleClick_(false), autoSelectionDelay_(600), useTrash_(true), confirmDelete_(true), noUsbTrash_(false), + confirmTrash_(false), + quickExec_(false), showThumbnails_(true), archiver_(), siUnit_(false), @@ -149,6 +153,11 @@ bool Settings::loadFile(QString filePath) { setTerminal(settings.value("Terminal", "xterm").toString()); setArchiver(settings.value("Archiver", "file-roller").toString()); setSiUnit(settings.value("SIUnit", false).toBool()); + + setOnlyUserTemplates(settings.value("OnlyUserTemplates", false).toBool()); + setTemplateTypeOnce(settings.value("OemplateTypeOnce", false).toBool()); + setTemplateRunApp(settings.value("TemplateRunApp", false).toBool()); + settings.endGroup(); settings.beginGroup("Behavior"); @@ -158,8 +167,9 @@ bool Settings::loadFile(QString filePath) { singleClick_ = settings.value("SingleClick", false).toBool(); autoSelectionDelay_ = settings.value("AutoSelectionDelay", 600).toInt(); confirmDelete_ = settings.value("ConfirmDelete", true).toBool(); - noUsbTrash_ = settings.value("NoUsbTrash", false).toBool(); - fm_config->no_usb_trash = noUsbTrash_; // also set this to libfm since FmFileOpsJob reads this config value before trashing files. + setNoUsbTrash(settings.value("NoUsbTrash", false).toBool()); + confirmTrash_ = settings.value("ConfirmTrash", false).toBool(); + setQuickExec(settings.value("QuickExec", false).toBool()); // bool thumbnailLocal_; // bool thumbnailMax; settings.endGroup(); @@ -199,6 +209,11 @@ bool Settings::loadFile(QString filePath) { showHidden_ = settings.value("ShowHidden", false).toBool(); sortOrder_ = sortOrderFromString(settings.value("SortOrder").toString()); sortColumn_ = sortColumnFromString(settings.value("SortColumn").toString()); + sortFolderFirst_ = settings.value("SortFolderFirst", true).toBool(); + + setBackupAsHidden(settings.value("BackupAsHidden", false).toBool()); + showFullNames_ = settings.value("ShowFullNames", false).toBool(); + shadowHidden_ = settings.value("ShadowHidden", false).toBool(); // override config in libfm's FmConfig bigIconSize_ = settings.value("BigIconSize", 48).toInt(); @@ -232,16 +247,23 @@ bool Settings::saveFile(QString filePath) { settings.setValue("Terminal", terminal_); settings.setValue("Archiver", archiver_); settings.setValue("SIUnit", siUnit_); + + settings.setValue("OnlyUserTemplates", onlyUserTemplates_); + settings.setValue("OemplateTypeOnce", templateTypeOnce_); + settings.setValue("TemplateRunApp", templateRunApp_); + settings.endGroup(); settings.beginGroup("Behavior"); - // settings.setValue("BookmarkOpenMethod", bookmarkOpenMethodToString(bookmarkOpenMethod_)); + settings.setValue("BookmarkOpenMethod", bookmarkOpenMethodToString(bookmarkOpenMethod_)); // settings for use with libfm settings.setValue("UseTrash", useTrash_); settings.setValue("SingleClick", singleClick_); settings.setValue("AutoSelectionDelay", autoSelectionDelay_); settings.setValue("ConfirmDelete", confirmDelete_); settings.setValue("NoUsbTrash", noUsbTrash_); + settings.setValue("ConfirmTrash", confirmTrash_); + settings.setValue("QuickExec", quickExec_); // bool thumbnailLocal_; // bool thumbnailMax; settings.endGroup(); @@ -277,6 +299,11 @@ bool Settings::saveFile(QString filePath) { settings.setValue("ShowHidden", showHidden_); settings.setValue("SortOrder", sortOrderToString(sortOrder_)); settings.setValue("SortColumn", sortColumnToString(sortColumn_)); + settings.setValue("SortFolderFirst", sortFolderFirst_); + + settings.setValue("BackupAsHidden", backupAsHidden_); + settings.setValue("ShowFullNames", showFullNames_); + settings.setValue("ShadowHidden", shadowHidden_); // override config in libfm's FmConfig settings.setValue("BigIconSize", bigIconSize_); @@ -295,17 +322,35 @@ bool Settings::saveFile(QString filePath) { settings.setValue("AlwaysShowTabs", alwaysShowTabs_); settings.setValue("ShowTabClose", showTabClose_); settings.setValue("SplitterPos", splitterPos_); - // settings.setValue("SidePaneMode", sidePaneModeToString(sidePaneMode_)); + settings.setValue("SidePaneMode", sidePaneModeToString(sidePaneMode_)); settings.endGroup(); return true; } -static const char* bookmarkOpenMethodToString(int value) { +static const char* bookmarkOpenMethodToString(OpenDirTargetType value) { + switch(value) { + case OpenInCurrentTab: + default: + return "current_tab"; + case OpenInNewTab: + return "new_tab"; + case OpenInNewWindow: + return "new_window"; + case OpenInLastActiveWindow: + return "last_window"; + } return ""; } -static int bookmarkOpenMethodFromString(const QString str) { - return 0; +static OpenDirTargetType bookmarkOpenMethodFromString(const QString str) { + + if(str == QStringLiteral("new_tab")) + return OpenInNewTab; + else if(str == QStringLiteral("new_window")) + return OpenInNewWindow; + else if(str == QStringLiteral("last_window")) + return OpenInLastActiveWindow; + return OpenInCurrentTab; } static const char* viewModeToString(Fm::FolderView::ViewMode value) { @@ -429,12 +474,32 @@ static int wallpaperModeFromString(const QString str) { return ret; } -static const char* sidePaneModeToString(int value) { - return NULL; +static const char* sidePaneModeToString(Fm::SidePane::Mode value) { + const char* ret; + switch(value) { + case Fm::SidePane::ModePlaces: + default: + ret = "places"; + break; + case Fm::SidePane::ModeDirTree: + ret = "dirtree"; + break; + case Fm::SidePane::ModeNone: + ret = "none"; + break; + } + return ret; } -static int sidePaneModeFromString(const QString str) { - return 0; +static Fm::SidePane::Mode sidePaneModeFromString(const QString& str) { + Fm::SidePane::Mode ret; + if(str == "none") + ret = Fm::SidePane::ModeNone; + else if(str == "dirtree") + ret = Fm::SidePane::ModeDirTree; + else + ret = Fm::SidePane::ModePlaces; + return ret; } void Settings::setTerminal(QString terminalCommand) { diff --git a/pcmanfm/settings.h b/pcmanfm/settings.h index 7dea350..2ff48ed 100644 --- a/pcmanfm/settings.h +++ b/pcmanfm/settings.h @@ -26,10 +26,18 @@ #include "folderview.h" #include "foldermodel.h" #include "desktopwindow.h" +#include "sidepane.h" #include "thumbnailloader.h" namespace PCManFM { +enum OpenDirTargetType { + OpenInCurrentTab, + OpenInNewTab, + OpenInNewWindow, + OpenInLastActiveWindow +}; + class Settings : public QObject { Q_OBJECT public: @@ -65,11 +73,11 @@ public: fallbackIconThemeName_ = iconThemeName; } - int bookmarkOpenMethod() { + OpenDirTargetType bookmarkOpenMethod() { return bookmarkOpenMethod_; } - void setBookmarkOpenMethod(int bookmarkOpenMethod) { + void setBookmarkOpenMethod(OpenDirTargetType bookmarkOpenMethod) { bookmarkOpenMethod_ = bookmarkOpenMethod; } @@ -128,7 +136,7 @@ public: void setCloseOnUnmount(bool value) { closeOnUnmount_ = value; } - + DesktopWindow::WallpaperMode wallpaperMode() const { return DesktopWindow::WallpaperMode(wallpaperMode_); } @@ -176,11 +184,11 @@ public: void setDesktopFont(QFont font) { desktopFont_ = font; } - + bool showWmMenu() const { return showWmMenu_; } - + void setShowWmMenu(bool value) { showWmMenu_ = value; } @@ -290,11 +298,11 @@ public: splitterPos_ = splitterPos; } - int sidePaneMode() const { + Fm::SidePane::Mode sidePaneMode() const { return sidePaneMode_; } - void setSidePaneMode(int sidePaneMode) { + void setSidePaneMode(Fm::SidePane::Mode sidePaneMode) { sidePaneMode_ = sidePaneMode; } @@ -330,6 +338,14 @@ public: sortColumn_ = sortColumn; } + bool sortFolderFirst() const { + return sortFolderFirst_; + } + + void setSortFolderFirst(bool folderFirst) { + sortFolderFirst_ = folderFirst; + } + // settings for use with libfm bool singleClick() const { return singleClick_; @@ -342,11 +358,11 @@ public: int autoSelectionDelay() const { return autoSelectionDelay_; } - + void setAutoSelectionDelay(int value) { autoSelectionDelay_ = value; } - + bool useTrash() const { if(!supportTrash_) return false; @@ -371,6 +387,24 @@ public: void setNoUsbTrash(bool noUsbTrash) { noUsbTrash_ = noUsbTrash; + fm_config->no_usb_trash = noUsbTrash_; // also set this to libfm since FmFileOpsJob reads this config value before trashing files. + } + + bool confirmTrash() const { + return confirmTrash_; + } + + void setConfirmTrash(bool value) { + confirmTrash_ = value; + } + + bool quickExec() const { + return quickExec_; + } + + void setQuickExec(bool value) { + quickExec_ = value; + fm_config->quick_exec = quickExec_; } // bool thumbnailLocal_; @@ -442,6 +476,58 @@ public: fm_config->si_unit = (gboolean)siUnit_; } + bool backupAsHidden() const { + return backupAsHidden_; + } + + void setBackupAsHidden(bool value) { + backupAsHidden_ = value; + fm_config->backup_as_hidden = backupAsHidden_; // also set this to libfm since fm_file_info_is_hidden() reads this value internally. + } + + bool showFullNames() const { + return showFullNames_; + } + + void setShowFullNames(bool value) { + showFullNames_ = value; + } + + bool shadowHidden() const { + return shadowHidden_; + } + + void setShadowHidden(bool value) { + shadowHidden_ = value; + } + + bool onlyUserTemplates() const { + return onlyUserTemplates_; + } + + void setOnlyUserTemplates(bool value) { + onlyUserTemplates_ = value; + fm_config->only_user_templates = onlyUserTemplates_; + } + + bool templateTypeOnce() const { + return templateTypeOnce_; + } + + void setTemplateTypeOnce(bool value) { + templateTypeOnce_ = value; + fm_config->template_type_once = templateTypeOnce_; + } + + bool templateRunApp() const { + return templateRunApp_; + } + + void setTemplateRunApp(bool value) { + templateRunApp_ = value; + fm_config->template_run_app = templateRunApp_; + } + private: QString profileName_; bool supportTrash_; @@ -450,7 +536,7 @@ private: QString fallbackIconThemeName_; bool useFallbackIconTheme_; - int bookmarkOpenMethod_; + OpenDirTargetType bookmarkOpenMethod_; QString suCommand_; QString terminal_; bool mountOnStartup_; @@ -479,12 +565,13 @@ private: int lastWindowHeight_; bool lastWindowMaximized_; int splitterPos_; - int sidePaneMode_; + Fm::SidePane::Mode sidePaneMode_; Fm::FolderView::ViewMode viewMode_; bool showHidden_; Qt::SortOrder sortOrder_; Fm::FolderModel::ColumnId sortColumn_; + bool sortFolderFirst_; // settings for use with libfm bool singleClick_; @@ -492,16 +579,25 @@ private: bool useTrash_; bool confirmDelete_; bool noUsbTrash_; // do not trash files on usb removable devices + bool confirmTrash_; // Confirm before moving files into "trash can" + bool quickExec_; // Don't ask options on launch executable file bool showThumbnails_; QString archiver_; bool siUnit_; + bool backupAsHidden_; + bool showFullNames_; + bool shadowHidden_; int bigIconSize_; int smallIconSize_; int sidePaneIconSize_; int thumbnailIconSize_; + + bool onlyUserTemplates_; + bool templateTypeOnce_; + bool templateRunApp_; }; } diff --git a/pcmanfm/tabpage.cpp b/pcmanfm/tabpage.cpp index 001e458..a07bae7 100644 --- a/pcmanfm/tabpage.cpp +++ b/pcmanfm/tabpage.cpp @@ -174,7 +174,7 @@ void TabPage::restoreScrollPos() { } qDebug("finish-loading"); - // After finishing loading the folder, the model is updated, but Qt delays the UI update + // After finishing loading the folder, the model is updated, but Qt delays the UI update // for performance reasons. Therefore at this point the UI is not up to date. // Of course, the scrollbar ranges are not updated yet. We solve this by installing an Qt timeout handler. QTimer::singleShot(10, pThis, SLOT(restoreScrollPos())); @@ -328,7 +328,10 @@ void TabPage::chdir(FmPath* newPath, bool addHistory) { folderModel_ = CachedFolderModel::modelFromFolder(folder_); proxyModel_->setSourceModel(folderModel_); - proxyModel_->sort(Fm::FolderModel::ColumnFileName); + proxyModel_->sort(proxyModel_->sortColumn(), proxyModel_->sortOrder()); + Settings& settings = static_cast(qApp)->settings(); + proxyModel_->setFolderFirst(settings.sortFolderFirst()); + proxyModel_->sort(settings.sortColumn(), settings.sortOrder()); if(fm_folder_is_loaded(folder_)) { onFolderStartLoading(folder_, this); @@ -340,7 +343,6 @@ void TabPage::chdir(FmPath* newPath, bool addHistory) { if(addHistory) { // add current path to browse history - QAbstractItemView* childView = folderView_->childView(); history_.add(path()); } } @@ -381,15 +383,13 @@ void TabPage::onSelChanged(int numSel) { fm_file_info_list_unref(files); } else { - FmFileInfoList* files; goffset sum; GList* l; - char size_str[128]; msg = tr("%1 item(s) selected", NULL, numSel).arg(numSel); /* don't count if too many files are selected, that isn't lightweight */ if(numSel < 1000) { sum = 0; - files = folderView_->selectedFiles(); + FmFileInfoList* files = folderView_->selectedFiles(); for(l = fm_file_info_list_peek_head_link(files); l; l = l->next) { if(fm_file_info_is_dir(FM_FILE_INFO(l->data))) { /* if we got a directory then we cannot tell it's size @@ -400,6 +400,7 @@ void TabPage::onSelChanged(int numSel) { sum += fm_file_info_get_size(FM_FILE_INFO(l->data)); } if(sum >= 0) { + char size_str[128]; fm_file_size_to_str(size_str, sizeof(size_str), sum, fm_config->si_unit); msg += QString(" (%1)").arg(QString::fromUtf8(size_str)); diff --git a/pcmanfm/tabpage.h b/pcmanfm/tabpage.h index ae79cf2..4885e5b 100644 --- a/pcmanfm/tabpage.h +++ b/pcmanfm/tabpage.h @@ -107,7 +107,7 @@ public: } QString pathName(); - + FmFolder* folder() { return folder_; } @@ -144,17 +144,17 @@ public: QString title() const { return title_; } - + QString statusText(StatusTextType type = StatusTextNormal) const { return statusText_[type]; } - + bool canBackward() { return history_.canBackward(); } void backward(); - + bool canForward() { return history_.canForward(); } @@ -164,7 +164,7 @@ public: void jumpToHistory(int index); bool canUp(); - + void up(); void updateFromSettings(Settings& settings); diff --git a/pcmanfm/translations/pcmanfm-qt-desktop-pref_de.desktop b/pcmanfm/translations/pcmanfm-qt-desktop-pref_de.desktop new file mode 100644 index 0000000..e339db9 --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt-desktop-pref_de.desktop @@ -0,0 +1,4 @@ +#Translations +Name[de]=Schreibtisch +GenericName[de]=Schreibtischeinstellungen +Comment[de]=Einstellungen wie Hintergrundbild oder verwendete Menüs diff --git a/pcmanfm/translations/pcmanfm-qt-desktop-pref_hu.desktop b/pcmanfm/translations/pcmanfm-qt-desktop-pref_hu.desktop new file mode 100644 index 0000000..e92bd03 --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt-desktop-pref_hu.desktop @@ -0,0 +1,4 @@ +#Translations +Name[hu]=Asztal +GenericName[hu]=Asztalbeállítás +Comment[hu]=Asztal kinézet és viselkedés beállítása diff --git a/pcmanfm/translations/pcmanfm-qt-desktop-pref_pl.desktop b/pcmanfm/translations/pcmanfm-qt-desktop-pref_pl.desktop new file mode 100644 index 0000000..6652766 --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt-desktop-pref_pl.desktop @@ -0,0 +1,4 @@ +#Translations +Name[pl]=Pulpit +GenericName[pl]=Ustawienia pulpitu +Comment[pl]=Zmiana tapety oraz zachowania pulpitu diff --git a/pcmanfm/translations/pcmanfm-qt_template.ts b/pcmanfm/translations/pcmanfm-qt.ts similarity index 94% rename from pcmanfm/translations/pcmanfm-qt_template.ts rename to pcmanfm/translations/pcmanfm-qt.ts index 36e0c8a..f5db1b0 100644 --- a/pcmanfm/translations/pcmanfm-qt_template.ts +++ b/pcmanfm/translations/pcmanfm-qt.ts @@ -18,6 +18,23 @@ Lightweight file manager + + + <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> + + + + + Programming: +* Hong Jen Yee (PCMan) <pcman.tw@gmail.com> + + + + + + Authors + + PCMan File Manager @@ -39,23 +56,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - - Programming: -* Hong Jen Yee (PCMan) <pcman.tw@gmail.com> - - - - - - <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> - - - - - Authors - - License @@ -193,400 +193,425 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< MainWindow - + File Manager - + + Go &Up + + + + Go Up - + Alt+Up - + Home - + Alt+Home - - Reload + + &Reload - + F5 - - &Reload - - - - + Go - + Quit - + &About - + + &New Window + + + + New Window - + Ctrl+N - + Show &Hidden - + Ctrl+H - + &Computer - + &Trash - + &Network - + &Desktop - + &Add to Bookmarks - + &Applications - - Ctrl+X - - - - - &Copy - - - - - Ctrl+C - - - - - &Paste - - - - - Ctrl+V + + Reload - - Select &All + + &Icon View - - Pr&eferences + + &Compact View - - &Invert Selection + + &Detailed List - - &Delete + + &Thumbnail View - - &Rename + + Cu&t - - Ctrl+A + + Ctrl+X - - Go &Up + + &Copy - - &New Window + + Ctrl+C - - &Icon View + + &Paste - - &Compact View + + Ctrl+V - - &Detailed List + + Select &All - - &Thumbnail View + + Ctrl+A - - Cu&t + + Pr&eferences - + Ascending - + Descending - + By File Name - + By Modification Time - + By File Type - + By Owner - + Folder First - + New &Tab - + New Tab - + Ctrl+T - + Go &Back - + Go Back - + Alt+Left - + Go &Forward - + Go Forward - + Alt+Right - - Del + + &Invert Selection - - F2 + + &Delete - - C&lose Tab + + Del - - File &Properties + + &Rename - - &Folder Properties + + F2 - - &Sorting + + C&lose Tab - - Main Toolbar + + Ctrl+W - - Ctrl+W + + File &Properties - + Alt+Return - + + &Folder Properties + + + + Case Sensitive - + By File Size - + Close Window - + Edit Bookmarks - + Open &Terminal - + F4 - + Open as &Root - + &Edit Bookmarks - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + &File - + + C&reate New + + + + &Help - + &View - + + &Sorting + + + + &Edit - + &Bookmarks - + &Go - + &Tool + + + Main Toolbar + + PCManFM::Application @@ -704,32 +729,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog - + Fill with background color only - + Stretch to fill the entire screen - + Stretch to fit the screen - + Center on the screen - + Tile the image to fill the entire screen - + Image Files @@ -737,12 +762,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow - + Stic&k to Current Position - + Desktop Preferences @@ -750,28 +775,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow - + Version: %1 - + &Move to Trash - + &Delete - - + + Error - + Switch user command is not set. @@ -779,22 +804,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog - + Icon View - + Compact Icon View - + Thumbnail View - + Detailed List View @@ -852,218 +877,218 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog - + Preferences - + User Interface - + Behavior - + Thumbnail - + Volume - + Advanced - + Icons - + Size of big icons: - + Size of small icons: - + Size of thumbnails: - + Size of side pane icons: - + Icon theme: - + Window - - Default width of new windows: + + Always show the tab bar - - Default height of new windows: + + Show 'Close' buttons on tabs - - Always show the tab bar + + Remember the size of the last closed window - - Show 'Close' buttons on tabs + + Default width of new windows: - - Remember the size of the last closed window + + Default height of new windows: - + Browsing - + Open files with single click - + Delay of auto-selection in single click mode (0 to disable) - + Default view mode: - + sec - + File Operations - + Confirm before deleting files - + Move deleted files to "trash bin" instead of erasing from disk. - + Show thumbnails of files - + Only show thumbnails for local files - + Do not generate thumbnails for image files exceeding this size: - + KB - + Auto Mount - + Mount mountable volumes automatically on program startup - + Mount removable media automatically when they are inserted - + Show available options for removable media when they are inserted - + When removable medium unmounted: - - Close tab containing removable medium + + Close &tab containing removable medium - - Change folder in the tab to home folder + + Chan&ge folder in the tab to home folder - + Programs - + Terminal emulator: - - Switch user command: + + Switch &user command: - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. - - Archiver integration: + + Archiver in&tegration: - + Use SI decimal prefixes instead of IEC binary prefixes diff --git a/pcmanfm/translations/pcmanfm-qt_ar.ts b/pcmanfm/translations/pcmanfm-qt_ar.ts index 32294a6..2fa566c 100644 --- a/pcmanfm/translations/pcmanfm-qt_ar.ts +++ b/pcmanfm/translations/pcmanfm-qt_ar.ts @@ -193,397 +193,422 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< MainWindow - + File Manager - + Go Up - + Alt+Up - + Home - + Alt+Home - + Reload - + F5 - + &Reload - + Go - + Quit - + &About - + New Window - + Ctrl+N - + Show &Hidden - + Ctrl+H - + &Computer - + &Trash - + &Network - + &Desktop - + &Add to Bookmarks - + &Applications - + Ctrl+X - + &Copy - + Ctrl+C - + &Paste - + Ctrl+V - + Select &All - + Pr&eferences - + &Invert Selection - + &Delete - + &Rename - + Ctrl+A - + Go &Up - + &New Window - + &Icon View - + &Compact View - + &Detailed List - + &Thumbnail View - + Cu&t - + Ascending - + Descending - + By File Name - + By Modification Time - + By File Type - + By Owner - + Folder First - + New &Tab - + New Tab - + Ctrl+T - + Go &Back - + Go Back - + Alt+Left - + Go &Forward - + Go Forward - + Alt+Right - + Del - + F2 - + C&lose Tab - + File &Properties - + &Folder Properties - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting - + Main Toolbar - + Ctrl+W - + Alt+Return - + Case Sensitive - + By File Size - + Close Window - + Edit Bookmarks - + Open &Terminal - + F4 - + Open as &Root - + &Edit Bookmarks - + &File - + &Help - + &View - + &Edit - + &Bookmarks - + &Go - + &Tool @@ -704,32 +729,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog - + Fill with background color only - + Stretch to fill the entire screen - + Stretch to fit the screen - + Center on the screen - + Tile the image to fill the entire screen - + Image Files @@ -737,12 +762,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow - + Stic&k to Current Position - + Desktop Preferences @@ -750,28 +775,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow - + Version: %1 - + &Move to Trash - + &Delete - - + + Error - + Switch user command is not set. @@ -779,22 +804,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog - + Icon View - + Compact Icon View - + Thumbnail View - + Detailed List View @@ -862,218 +887,218 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog - + Preferences - + User Interface - + Behavior - + Thumbnail - + Volume - + Advanced - + Icons - + Size of big icons: - + Size of small icons: - + Size of thumbnails: - + Size of side pane icons: - + Icon theme: - + Window - + Default width of new windows: - + Default height of new windows: - + Always show the tab bar - + Show 'Close' buttons on tabs - + Remember the size of the last closed window - + Browsing - + Open files with single click - + Delay of auto-selection in single click mode (0 to disable) - + Default view mode: - + sec - + File Operations - + Confirm before deleting files - + Move deleted files to "trash bin" instead of erasing from disk. - + Show thumbnails of files - + Only show thumbnails for local files - + Do not generate thumbnails for image files exceeding this size: - + KB - + Auto Mount - + Mount mountable volumes automatically on program startup - + Mount removable media automatically when they are inserted - + Show available options for removable media when they are inserted - + When removable medium unmounted: - - Close tab containing removable medium + + Close &tab containing removable medium - - Change folder in the tab to home folder + + Chan&ge folder in the tab to home folder - - Programs + + Switch &user command: - - Terminal emulator: + + Archiver in&tegration: - - Switch user command: + + Programs - - Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. -%s = the command line you want to execute with terminal or su. + + Terminal emulator: - - Archiver integration: + + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. +%s = the command line you want to execute with terminal or su. - + Use SI decimal prefixes instead of IEC binary prefixes diff --git a/pcmanfm/translations/pcmanfm-qt_cs_CZ.ts b/pcmanfm/translations/pcmanfm-qt_cs_CZ.ts index 2008576..f28f3db 100644 --- a/pcmanfm/translations/pcmanfm-qt_cs_CZ.ts +++ b/pcmanfm/translations/pcmanfm-qt_cs_CZ.ts @@ -193,397 +193,422 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< MainWindow - + File Manager Správce souborů - + Go Up Nahoru - + Alt+Up Alt+Nahoru - + Home Domů - + Alt+Home Alt+Home - + Reload Obnovit - + F5 F5 - + &Reload &Obnovit - + Go Jdi - + Quit ukončit - + &About &O programu - + New Window Nové okno - + Ctrl+N Ctrl+N - + Show &Hidden Zobrazit &skryté - + Ctrl+H Ctrl+H - + &Computer Počítač - + &Trash &Koš - + &Network Síť - + &Desktop Plocha - + &Add to Bookmarks Přidat k záložkám - + &Applications Programy - + Ctrl+X Ctrl+X - + &Copy Kopírovat - + Ctrl+C Ctrl+C - + &Paste Vložit - + Ctrl+V Ctrl+V - + Select &All Vybrat všechno - + Pr&eferences &Nastavení - + &Invert Selection Invertovat výběr - + &Delete Smazat - + &Rename Přejmenovat - + Ctrl+A Ctrl+A - + Go &Up Nahoru - + &New Window Nové &okno - + &Icon View Pohled s ikonami - + &Compact View Kompaktní pohled - + &Detailed List Seznam s podrobnostmi - + &Thumbnail View Pohled s náhledy - + Cu&t Vyjmout - + Ascending Vzestupně - + Descending Sestupně - + By File Name Podle jména - + By Modification Time Podle času - + By File Type Podle typu - + By Owner Podle vlastníka - + Folder First Složky jako první - + New &Tab Nový &panel - + New Tab Nový panel - + Ctrl+T Ctrl+T - + Go &Back Zpět - + Go Back Zpět - + Alt+Left Alt+Vlevo - + Go &Forward &Vpřed - + Go Forward Vpřed - + Alt+Right Alt+Vpravo - + Del - + F2 F2 - + C&lose Tab Zavřít panel - + File &Properties Vlastnosti souboru - + &Folder Properties Vlastnosti složky - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting Řadit - + Main Toolbar Hlavní panel - + Ctrl+W Ctrl+W - + Alt+Return Alt+Return - + Case Sensitive Rozlišovat velikost písmen - + By File Size Podle velikosti - + Close Window Zavřít okno - + Edit Bookmarks Upravit záložky - + Open &Terminal Otevřít &terminál - + F4 F4 - + Open as &Root Otevřít jako &Root - + &Edit Bookmarks Upravit záložky - + &File &Soubor - + &Help &Nápověda - + &View &Zobrazení - + &Edit Úpr&avy - + &Bookmarks Zál&ožky - + &Go &Jdi - + &Tool Nás&troje @@ -704,32 +729,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog - + Fill with background color only - + Stretch to fill the entire screen - + Stretch to fit the screen - + Center on the screen - + Tile the image to fill the entire screen - + Image Files @@ -737,12 +762,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow - + Stic&k to Current Position - + Desktop Preferences @@ -750,28 +775,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow - + Version: %1 - + &Move to Trash - + &Delete Smazat - - + + Error - + Switch user command is not set. @@ -779,22 +804,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog - + Icon View - + Compact Icon View - + Thumbnail View - + Detailed List View @@ -856,218 +881,218 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog - + Preferences - + User Interface Uživatelské rozhraní - + Behavior Chování - + Thumbnail Náhled - + Volume - + Advanced Pokročilé - + Icons - + Size of big icons: Velikost velkých ikon: - + Size of small icons: Velikost malých ikon: - + Size of thumbnails: Velikost náhledů: - + Size of side pane icons: Velikost ikon v postranním panelu: - + Icon theme: - + Window - + Default width of new windows: - + Default height of new windows: - + Always show the tab bar - + Show 'Close' buttons on tabs - + Remember the size of the last closed window - + Browsing - + Open files with single click - + Delay of auto-selection in single click mode (0 to disable) - + Default view mode: - + sec - + File Operations - + Confirm before deleting files - + Move deleted files to "trash bin" instead of erasing from disk. - + Show thumbnails of files Zobrazovat náhledy souborů - + Only show thumbnails for local files Zobrazovat náhlet jen u lokálních souborů - + Do not generate thumbnails for image files exceeding this size: Negenerovat náhledy obrázků přesahujících tuto velikost: - + KB - + Auto Mount - + Mount mountable volumes automatically on program startup - + Mount removable media automatically when they are inserted - + Show available options for removable media when they are inserted - + When removable medium unmounted: - - Close tab containing removable medium + + Close &tab containing removable medium - - Change folder in the tab to home folder + + Chan&ge folder in the tab to home folder - - Programs + + Switch &user command: - - Terminal emulator: + + Archiver in&tegration: - - Switch user command: + + Programs - - Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. -%s = the command line you want to execute with terminal or su. + + Terminal emulator: - - Archiver integration: + + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. +%s = the command line you want to execute with terminal or su. - + Use SI decimal prefixes instead of IEC binary prefixes diff --git a/pcmanfm/translations/pcmanfm-qt_de.desktop b/pcmanfm/translations/pcmanfm-qt_de.desktop new file mode 100644 index 0000000..7eeaa2f --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt_de.desktop @@ -0,0 +1,4 @@ +#Translations +Name[de]=PCManFM-Qt +GenericName[de]=Dateimanager +Comment[de]=Dateimanager der Desktop-Umgebung LXQt diff --git a/pcmanfm/translations/pcmanfm-qt_de.ts b/pcmanfm/translations/pcmanfm-qt_de.ts index 4a272a5..56c99be 100644 --- a/pcmanfm/translations/pcmanfm-qt_de.ts +++ b/pcmanfm/translations/pcmanfm-qt_de.ts @@ -104,7 +104,7 @@ Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Prog Desktop Preferences - Arbeitsplatzeinstellungen + Schreibtischeinstellungen @@ -176,7 +176,7 @@ Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Prog Show menus provided by window managers when desktop is clicked - Beim Klicken auf den Arbeitsplatz die Menüs des Fenstermanagers anzeigen + Beim Klicken auf den Schreibtisch die Menüs des Fenstermanagers anzeigen @@ -202,397 +202,422 @@ Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Prog MainWindow - + File Manager Dateimanager - + Go Up Go Up - + Alt+Up Alt+Up - + Home Home - + Alt+Home Alt+Home - + Reload Ordner neu laden - + F5 F5 - + &Reload Ordner neu &laden - + Go Gehe zu - + Quit Fenster schließen - + &About &Über - + New Window Neues Fenster - + Ctrl+N Ctrl+N - + Show &Hidden &Versteckte anzeigen - + Ctrl+H Ctrl+H - + &Computer &Geräte - + &Trash &Papierkorb - + &Network &Netzwerk - + &Desktop - Arbeits&fläche + Schreib&tisch - + &Add to Bookmarks Zu Favoriten &hinzufügen - + &Applications &Anwendungen - + Ctrl+X Ctrl+X - + &Copy &Kopieren - + Ctrl+C Ctrl+C - + &Paste E&infügen - + Ctrl+V Ctrl+V - + Select &All &Alles markieren - + Pr&eferences &Einstellungen - + &Invert Selection Auswahl &umkehren - + &Delete &Löschen - + &Rename Um&benennen - + Ctrl+A Ctrl+A - + Go &Up &Übergeordneter Ordner - + &New Window Neues &Fenster - + &Icon View &Symbolansicht - + &Compact View &Listenansicht - + &Detailed List &Detailansicht - + &Thumbnail View &Miniaturansicht - + Cu&t &Ausschneiden - + Ascending Aufsteigend - + Descending Absteigend - + By File Name Nach Name - + By Modification Time Nach Änderungsdatum - + By File Type Nach Dateityp - + By Owner Nach Besitzer - + Folder First Ordner zuerst - + New &Tab Neuer &Reiter - + New Tab Neuer Reiter - + Ctrl+T Ctrl+T - + Go &Back &Zurück - + Go Back Zurück - + Alt+Left Alt+Left - + Go &Forward &Vorwärts - + Go Forward Vorwärts - + Alt+Right Alt+Right - + Del Del - + F2 F2 - + C&lose Tab Reiter &schließen - + File &Properties &Dateieigenschaften - + &Folder Properties &Eigenschaften des aktuellen Ordners - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting S&ortierung - + Main Toolbar Hauptwerkzeugleiste - + Ctrl+W Ctrl+W - + Alt+Return Alt+Return - + Case Sensitive Groß-/Kleinschreibung beachten - + By File Size Nach Dateigröße - + Close Window Fenster schließen - + Edit Bookmarks Favoriten bearbeiten - + Open &Terminal &Terminal öffnen - + F4 F4 - + Open as &Root Als &Root öffnen - + &Edit Bookmarks &Favoriten bearbeiten - + &File &Datei - + &Help &Hilfe - + &View &Ansicht - + &Edit &Bearbeiten - + &Bookmarks &Favoriten - + &Go &Gehe zu - + &Tool &Werkzeuge @@ -713,32 +738,32 @@ Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Prog PCManFM::DesktopPreferencesDialog - + Fill with background color only Nur mit Hintergrundfarbe füllen - + Stretch to fill the entire screen Gefüllt - + Stretch to fit the screen Gestreckt - + Center on the screen Zentriert - + Tile the image to fill the entire screen Nebeneinander - + Image Files Bilddateien @@ -746,41 +771,41 @@ Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Prog PCManFM::DesktopWindow - + Stic&k to Current Position Symbole &fixieren - + Desktop Preferences - Arbeitsplatzeinstellungen + Schreibtischeinstellungen PCManFM::MainWindow - + Version: %1 Version: %1 - + &Move to Trash In den &Papierkorb verschieben - + &Delete &Löschen - - + + Error Fehler - + Switch user command is not set. Befehl, um den Benutzer zu wechseln, ist nicht eingestellt. @@ -788,22 +813,22 @@ Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Prog PCManFM::PreferencesDialog - + Icon View Symbolansicht - + Compact Icon View Kleine Symbolansicht - + Thumbnail View Miniaturansicht - + Detailed List View Detaillierte Listenansicht @@ -863,219 +888,235 @@ Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Prog PreferencesDialog - + Preferences Einstellungen - + User Interface Benutzeroberfläche - + Behavior Verhalten - + Thumbnail Vorschaubild - + Volume Datenträger - + Advanced Erweitert - + Icons Symbole - + Size of big icons: Größe für große Symbole: - + Size of small icons: Größe für kleine Symbole: - + Size of thumbnails: Größe von Vorschaubildern: - + Size of side pane icons: Größe der Symbole in der Seitenleiste: - + Icon theme: Symbolthema: - + Window Fenster - + Default width of new windows: Breite für neue Fenster: - + Default height of new windows: Höhe für neue Fenster: - + Always show the tab bar Reiterleiste immer anzeigen - + Show 'Close' buttons on tabs 'Schließen'-Knopf an Reitern zeigen - + Remember the size of the last closed window Größe des zuletzt geschlossenen Fensters merken - + Browsing Durchstöbern - + Open files with single click Einfacher Klick zum Öffnen von Dateien - + Delay of auto-selection in single click mode (0 to disable) Wartezeit für die automatische Auswahl im Einzelklickmodus (0 zum Abschalten) - + Default view mode: Standardansicht: - + sec sec - + File Operations Dateioperationen - + Confirm before deleting files Löschen von Dateien bestätigen - + Move deleted files to "trash bin" instead of erasing from disk. Gelöschte Dateien in den "Papierkorb" verschieben anstatt sie von der Festplatte zu löschen. - + Show thumbnails of files Vorschaubilder von Dateien anzeigen - + Only show thumbnails for local files Vorschaubilder nur für lokale Dateien anzeigen - + Do not generate thumbnails for image files exceeding this size: Keine Vorschaubilder erzeugen für Dateien größer als: - + KB KB - + Auto Mount Automatisches Einbinden - + Mount mountable volumes automatically on program startup Datenträger bei Programmstart automatisch einhängen - + Mount removable media automatically when they are inserted Wechseldatenträger automatisch beim Einlegen einbinden - + Show available options for removable media when they are inserted Verfügbare Optionen für Wechseldatenträger beim Einlegen anzeigen - + When removable medium unmounted: Wenn Wechseldatenträger ausgeworfen: - + + Close &tab containing removable medium + + + + + Chan&ge folder in the tab to home folder + + + + + Switch &user command: + + + + + Archiver in&tegration: + + + Close tab containing removable medium - Schließe Tab mit Wechseldatenträger + Schließe Tab mit Wechseldatenträger - Change folder in the tab to home folder - Ändere Ordner im Tab zum Persönlichen Ordner + Ändere Ordner im Tab zum Persönlichen Ordner - + Programs Programme - + Terminal emulator: Terminalemulator: - Switch user command: - Befehl für Benutzerwechsel: + Befehl für Benutzerwechsel: - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Beispiele:"xterm -e %s" für Terminal oder "gksu %s" für Benutzerwechsel. %s = das Kommando, welches in einem Terminal oder als Root ausgeführt werden soll. - Archiver integration: - Archivmanagerintegration: + Archivmanagerintegration: - + Use SI decimal prefixes instead of IEC binary prefixes SI-Dezimalpräfixe anstatt IEC-Binärpräfixe verwenden diff --git a/pcmanfm/translations/pcmanfm-qt_es.ts b/pcmanfm/translations/pcmanfm-qt_es.ts index 06e3eca..aeb950c 100644 --- a/pcmanfm/translations/pcmanfm-qt_es.ts +++ b/pcmanfm/translations/pcmanfm-qt_es.ts @@ -322,397 +322,422 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. MainWindow - + File Manager Administrador de archivos - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + &File &Archivo - + + C&reate New + + + + &Help Ay&uda - + &View &Ver - + &Sorting &Ordenar - + &Edit &Editar - + &Bookmarks &Marcadores - + &Go &Ir - + &Tool &Herramientas - + Main Toolbar Barra de Herramientas Principal - + Go &Up S&ubir - + Go Up Subir - + Alt+Up Alt+Arriba - + Home Carpeta personal - + Alt+Home Alt+Inicio - + &Reload &Recargar - + F5 F5 - + Go Ir - + Quit Salir - + &About &Acerca de - + &New Window &Nueva ventana - + New Window Nueva ventana - + Ctrl+N Ctrl+N - + Show &Hidden Mo&strar ocultos - + Ctrl+H Ctrl+H - + &Computer &Sistema - + &Trash &Papelera - + &Network &Red - + &Desktop &Escritorio - + &Add to Bookmarks &Agregar a marcadores - + &Applications &Aplicaciones - + Reload Recargar - + &Icon View V&ista de Íconos - + &Compact View Vista &Compacta - + &Detailed List Lista &Detallada - + &Thumbnail View Vista de &Miniaturas - + Cu&t Cor&tar - + Ctrl+X Ctrl+X - + &Copy &Copiar - + Ctrl+C Ctrl+C - + &Paste &Pegar - + Ctrl+V Ctrl+V - + Select &All Seleccion&ar Todo - + Ctrl+A Ctrl+A - + Pr&eferences Pr&eferencias - + Ascending Ascendente - + Descending Descendente - + By File Name Por Nombre de Archivo - + By Modification Time Por Fecha de Modificación - + By File Type Por Tipo de Archivo - + By Owner Por Dueño - + Folder First Carpetas Primero - + New &Tab Nueva &Pestaña - + New Tab Nueva Pestaña - + Ctrl+T Ctrl+T - + Go &Back Re&troceder - + Go Back Retroceder - + Alt+Left Alt+Izquierda - + Go &Forward A&vanzar - + Go Forward Avanzar - + Alt+Right Alt+Derecha - + &Invert Selection &Invertir Selección - + &Delete &Eliminar - + Del Supr - + &Rename Cambia&r Nombre - + F2 F2 - + C&lose Tab &Cerrar Pestaña - + Ctrl+W Ctrl+W - + File &Properties Propiedades de &Archivo - + Alt+Return Alt+Enter - + &Folder Properties &Propiedades de &Carpeta - + Case Sensitive Coincidir Mayúsculas - + By File Size Por Tamaño de Archivo - + Close Window Cerrar Ventana - + Edit Bookmarks Editar Marcadores - + Open &Terminal Abrir &terminal - + F4 F4 - + Open as &Root Abrir como &root - + &Edit Bookmarks &Editar Marcadores @@ -833,32 +858,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::DesktopPreferencesDialog - + Fill with background color only Llenar solamente con el color de fondo - + Stretch to fill the entire screen Estirar para llenar la pantalla - + Stretch to fit the screen Estirar para ajustar a la pantalla - + Center on the screen Centrar en la pantalla - + Tile the image to fill the entire screen Repetir la imagen hasta llenar la pantalla - + Image Files Archivos de Imagen @@ -866,12 +891,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::DesktopWindow - + Stic&k to Current Position &Pegar en la posición actual - + Desktop Preferences Preferencias de Escritorio @@ -879,28 +904,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::MainWindow - + Version: %1 Versión: %1 - + &Move to Trash &Mover a la Papelera - + &Delete &Eliminar - - + + Error Error - + Switch user command is not set. El comando para cambiar de usuario no está definido. @@ -908,22 +933,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::PreferencesDialog - + Icon View Vista de Íconos - + Compact Icon View Vista Compacta de Íconos - + Thumbnail View Vista de Miniaturas - + Detailed List View Lista Detallada @@ -983,219 +1008,235 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PreferencesDialog - + Preferences Preferencias - + User Interface Interfaz de Usuario - + Behavior Comportamiento - + Thumbnail Miniaturas - + Volume Volumen - + Advanced Avanzado - + Icons Íconos - + Size of big icons: Tamaño de íconos grandes: - + Size of small icons: Tamaño de íconos pequeños: - + Size of thumbnails: Tamaño de miniaturas: - + Size of side pane icons: Tamaño de íconos del panel lateral: - + Icon theme: Tema de íconos: - + Window Ventana - + Always show the tab bar Mostrar siempre la barra de pestañas - + Show 'Close' buttons on tabs Mostrar botones de cerrar en las pestañas - + Remember the size of the last closed window Recordar el tamaño de la última ventana cerrada - + Default width of new windows: Ancho para nuevas ventanas: - + Default height of new windows: Altura para nuevas ventanas: - + Browsing Navegación - + Open files with single click Abrir archivos con un solo click - + Delay of auto-selection in single click mode (0 to disable) Demora de selección automática en modo de un click (0 para deshabilitar) - + Default view mode: Modo de visualización por defecto: - + sec seg - + File Operations Operaciones de Archivos - + Confirm before deleting files Confirmar antes de borrar - + Move deleted files to "trash bin" instead of erasing from disk. Mover archivos a la papelera en lugar de eliminarlos del disco. - + Show thumbnails of files Mostrar miniaturas de archivos - + Only show thumbnails for local files Solo mostrar miniaturas para archivos locales - + Do not generate thumbnails for image files exceeding this size: No generar miniaturas para archivos de imágenes mayores a: - + KB KB - + Auto Mount Montar Automáticamente - + Mount mountable volumes automatically on program startup Montar discos removibles automáticamente al inicio - + Mount removable media automatically when they are inserted Montar discos removibles automáticamente cuando se insertan - + Show available options for removable media when they are inserted Mostrar opciones disponibles para los discos removibles al insertarlos - + When removable medium unmounted: Cuando se desconecta un disco removible: - + + Close &tab containing removable medium + + + + + Chan&ge folder in the tab to home folder + + + + + Switch &user command: + + + + + Archiver in&tegration: + + + Close tab containing removable medium - Cerrar la pestaña que contiene al disco removible + Cerrar la pestaña que contiene al disco removible - Change folder in the tab to home folder - Cambiar el directorio en la pestaña a la carpeta personal + Cambiar el directorio en la pestaña a la carpeta personal - + Programs Programas - + Terminal emulator: Emulador de terminal: - Switch user command: - Comando para cambiar de usuario: + Comando para cambiar de usuario: - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Ejemplos: "xterm -e %s" para terminal o "gksu %s" para cambiar de usuario. %s = la línea de comandos a ejecutar en la terminal o como otro usuario. - Archiver integration: - Integración con programas de archivo: + Integración con programas de archivo: - + Use SI decimal prefixes instead of IEC binary prefixes Usar prefijos decimales SI en lugar de prefijos binarios IEC diff --git a/pcmanfm/translations/pcmanfm-qt_fr.ts b/pcmanfm/translations/pcmanfm-qt_fr.ts index 2bbcab0..4f68537 100644 --- a/pcmanfm/translations/pcmanfm-qt_fr.ts +++ b/pcmanfm/translations/pcmanfm-qt_fr.ts @@ -260,397 +260,422 @@ Fifth Floor, Boston, MA 02110-1301, USA. MainWindow - + File Manager Gestionnaire de fichiers - + Go Up Monter - + Alt+Up Alt+Haut - + Home Page d'accueil - + Alt+Home Alt+Début / Origine - + Reload Recharger - + F5 F5 - + &Reload &Recharger - + Go Aller à… - + Quit Quitter - + &About &À propos - + New Window Nouvelle fenêtre - + Ctrl+N Ctrl+N - + Show &Hidden Afficher les éléments cac&hés - + Ctrl+H Ctrl+H - + &Computer &Ordinateur - + &Trash &Corbeille - + &Network &Réseau - + &Desktop &Bureau - + &Add to Bookmarks &Ajouter aux signets - + &Applications &Applications - + Ctrl+X Ctrl+X - + &Copy &Copier - + Ctrl+C Ctrl+C - + &Paste &Coller - + Ctrl+V Ctrl+V - + Select &All Tout sélect&ionner - + Pr&eferences Préfér&ences - + &Invert Selection &Inverser la sélection - + &Delete &Supprimer - + &Rename &Renommer - + Ctrl+A Ctrl+A - + Go &Up Mon&ter - + &New Window &Nouvelle fenêtre - + &Icon View Vue en &icônes - + &Compact View Vue &compacte - + &Detailed List Liste &détaillée - + &Thumbnail View Vue en vigne&ttes - + Cu&t Cou&per - + Ascending Ascendant - + Descending Descendant - + By File Name Par nom de fichier - + By Modification Time Par date de modification - + By File Type Par type de fichier - + By Owner Par propriétaire - + Folder First Dossier en premier - + New &Tab Nouvel ongle&t - + New Tab Nouvel onglet - + Ctrl+T Ctrl+T - + Go &Back Re&culer - + Go Back Reculer - + Alt+Left Alt+Gauche - + Go &Forward Ava&ncer - + Go Forward Avancer - + Alt+Right Alt+Droite - + Del Suppr - + F2 F2 - + C&lose Tab Fermer &l'onglet - + File &Properties &Propriétés du fichier - + &Folder Properties Propriétés du &dossier - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting Tri en cour&s - + Main Toolbar Barre d'outils principale - + Ctrl+W Ctrl+W - + Alt+Return Alt+Entrée - + Case Sensitive Sensible à la casse - + By File Size Par taille de fichier - + Close Window Fermer la fenêtre - + Edit Bookmarks Modifier les signets - + Open &Terminal Ouvrir le &terminal - + F4 F4 - + Open as &Root Ouvrir en tant que &root - + &Edit Bookmarks Modifi&er les signets - + &File &Fichier - + &Help &Aide - + &View - + &Edit &Édition - + &Bookmarks &Signets - + &Go A&ller à… - + &Tool Ou&tils @@ -771,32 +796,32 @@ Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::DesktopPreferencesDialog - + Fill with background color only Remplir seulement avec la couleur d'arrière-plan - + Stretch to fill the entire screen Étirer pour remplir l'écran entier - + Stretch to fit the screen Étirer pour remplir l'écran - + Center on the screen Centrer sur l’écran - + Tile the image to fill the entire screen Faire une mosaïque avec l'image pour remplir l'écran entier - + Image Files Fichiers image @@ -804,12 +829,12 @@ Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::DesktopWindow - + Stic&k to Current Position Res&ter à la position actuelle - + Desktop Preferences Préférences du bureau @@ -817,28 +842,28 @@ Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::MainWindow - + Version: %1 - + &Move to Trash &Mettre à la corbeille - + &Delete &Supprimer - - + + Error Erreur - + Switch user command is not set. La commande de changement d’utilisateur n'est pas configurée. @@ -846,22 +871,22 @@ Fifth Floor, Boston, MA 02110-1301, USA. PCManFM::PreferencesDialog - + Icon View Vue en icônes - + Compact Icon View Vue en icônes compacte - + Thumbnail View Vue en vignettes - + Detailed List View Vue en liste détaillée @@ -921,219 +946,227 @@ Fifth Floor, Boston, MA 02110-1301, USA. PreferencesDialog - + Preferences Préférences - + User Interface Interface utilisateur - + Behavior Comportement - + Thumbnail Vignette - + Volume Volume - + Advanced Avancé - + Icons Icônes - + Size of big icons: Taille des grandes icônes : - + Size of small icons: Taille des petites icônes : - + Size of thumbnails: Taille des vignettes : - + Size of side pane icons: Taille des icônes de panneau latéral : - + Icon theme: Thème d'icônes : - + Window Fenêtre - + Default width of new windows: Largeur par défaut des nouvelles fenêtres : - + Default height of new windows: Hauteur par défaut des nouvelles fenêtres : - + Always show the tab bar Toujours afficher la barre des onglets - + Show 'Close' buttons on tabs Afficher le bouton « Fermer » sur les onglets - + Remember the size of the last closed window - + Browsing Navigation - + Open files with single click Ouvrir les fichiers avec un simple clic - + Delay of auto-selection in single click mode (0 to disable) - + Default view mode: Mode de vue par défaut : - + sec - + File Operations Opérations sur les fichiers - + Confirm before deleting files Confirmer avant de supprimer les fichiers - + Move deleted files to "trash bin" instead of erasing from disk. Mettre les fichiers supprimés à la corbeille eu lieu de les effacer du disque. - + Show thumbnails of files Montrer les vignettes des fichiers - + Only show thumbnails for local files Montrer les vignettes seulement pour les fichiers locaux - + Do not generate thumbnails for image files exceeding this size: Ne pas générer de vignettes pour les fichiers image excédant cette taille : - + KB Ko - + Auto Mount Monter automatiquement - + Mount mountable volumes automatically on program startup Monter automatiquement les volumes au démarrage du programme - + Mount removable media automatically when they are inserted Monter automatiquement les médias amovibles lorsqu'ils sont insérés - + Show available options for removable media when they are inserted Montrer les options disponibles pour les médias amovibles lorsqu'ils sont insérés - + When removable medium unmounted: - - Close tab containing removable medium + + Close &tab containing removable medium - - Change folder in the tab to home folder + + Chan&ge folder in the tab to home folder - + + Switch &user command: + + + + + Archiver in&tegration: + + + + Programs Programmes - + Terminal emulator: Émulateur de terminal : - Switch user command: - Commande de changement d'utilisateur : + Commande de changement d'utilisateur : - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Exemples : « xterm -e %s » pour le terminal ; « gksu %s » pour changer d’utilisateur. %s = la ligne de commande que vous voulez exécuter avec le terminal ou su. - Archiver integration: - Intégration du logiciel de compression de données : + Intégration du logiciel de compression de données : - + Use SI decimal prefixes instead of IEC binary prefixes Utiliser les préfixes de décimales du système international d'unités au lieu des préfixes binaires de l'IEC diff --git a/pcmanfm/translations/pcmanfm-qt_gl.ts b/pcmanfm/translations/pcmanfm-qt_gl.ts index 82bffab..0f08ba0 100644 --- a/pcmanfm/translations/pcmanfm-qt_gl.ts +++ b/pcmanfm/translations/pcmanfm-qt_gl.ts @@ -252,397 +252,422 @@ con este programa; se non é así, escriba á Free Software Foundation, Inc., MainWindow - + File Manager Xestor de ficheiros - + Go Up Subir - + Alt+Up Alt+Frecha arriba - + Home Inicio - + Alt+Home Alt+Inicio - + Reload Cargar de novo - + F5 F5 - + &Reload &Cargar de novo - + Go Ir para - + Quit Saír - + &About &Sobre - + New Window Nova xanela - + Ctrl+N Ctrl+N - + Show &Hidden Amosar a&gochados - + Ctrl+H Ctrl+H - + &Computer &Computador - + &Trash &Lixo - + &Network &Rede - + &Desktop &Escritorio - + &Add to Bookmarks En&gadir aos marcadores - + &Applications &Aplicacións - + Ctrl+X Ctrl-X - + &Copy &Copiar - + Ctrl+C Ctrl+C - + &Paste &Pegar - + Ctrl+V Ctrl+V - + Select &All Seleccionar &todo - + Pr&eferences Pre&ferencias - + &Invert Selection &Inverter a selección - + &Delete &Eliminar - + &Rename &Renomear - + Ctrl+A Ctrl+A - + Go &Up S&ubir - + &New Window &Nova xanela - + &Icon View Vista de &iconas - + &Compact View Vista &compacta - + &Detailed List Vista &detallada - + &Thumbnail View Vista de &miniaturas - + Cu&t Cor&tar - + Ascending Ascendente - + Descending Descendente - + By File Name Polo nome do ficheiro - + By Modification Time Pola data de modificación - + By File Type Polo tipo do ficheiro - + By Owner Polo propietario - + Folder First Primeiro os cartafoles - + New &Tab Nova &lapela - + New Tab Nova lapela - + Ctrl+T Ctrl+T - + Go &Back A&trás - + Go Back Ir cara atrás - + Alt+Left Alt+Frecha esquerda - + Go &Forward Adian&te - + Go Forward Adiante - + Alt+Right Alt+Frecha dereita - + Del Supr - + F2 F2 - + C&lose Tab &Pechar a lapela - + File &Properties &Propiedades do ficheiro - + &Folder Properties Propiedades do &cartafol - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting &Ordenación - + Main Toolbar Barra de ferramentas principal - + Ctrl+W Ctrl+W - + Alt+Return Alt+Intro - + Case Sensitive Distinguindo maiúsculas de minúsculas - + By File Size Polo tamaño do ficheiro - + Close Window Pechar a xanela - + Edit Bookmarks Editar os marcadores - + Open &Terminal Abrir un &terminal - + F4 F4 - + Open as &Root Abrir como &root - + &Edit Bookmarks &Editar marcadores - + &File &Ficheiro - + &Help &Axuda - + &View &Ver - + &Edit &Editar - + &Bookmarks &Marcadores - + &Go &Ir para - + &Tool &Ferramenta @@ -763,32 +788,32 @@ con este programa; se non é así, escriba á Free Software Foundation, Inc., PCManFM::DesktopPreferencesDialog - + Fill with background color only Encher só coa cor de fondo - + Stretch to fill the entire screen Estirar para encher a pantalla completa - + Stretch to fit the screen Estirar para adaptar á pantalla - + Center on the screen Centrar na pantalla - + Tile the image to fill the entire screen Facer mosaico coa imaxe para encher a pantalla completa - + Image Files Ficheiros de imaxe @@ -796,12 +821,12 @@ con este programa; se non é así, escriba á Free Software Foundation, Inc., PCManFM::DesktopWindow - + Stic&k to Current Position &Permanente na posición actual - + Desktop Preferences Preferencias do escritorio @@ -809,28 +834,28 @@ con este programa; se non é así, escriba á Free Software Foundation, Inc., PCManFM::MainWindow - + Version: %1 - + &Move to Trash &Mover ao lixo - + &Delete &Eliminar - - + + Error Erro - + Switch user command is not set. A orde para cambiar de usuario non está configurada. @@ -838,22 +863,22 @@ con este programa; se non é así, escriba á Free Software Foundation, Inc., PCManFM::PreferencesDialog - + Icon View Vista en Iconas - + Compact Icon View Vista compacta en iconas - + Thumbnail View Vista de miniaturas - + Detailed List View Ver como lista detallada @@ -913,219 +938,227 @@ con este programa; se non é así, escriba á Free Software Foundation, Inc., PreferencesDialog - + Preferences Preferencias - + User Interface Interface de usuario - + Behavior Comportamento - + Thumbnail Miniatura - + Volume Volume - + Advanced Avanzado - + Icons Iconas - + Size of big icons: Tamaño das iconas grandes: - + Size of small icons: Tamaño das iconas pequenas: - + Size of thumbnails: Tamaño das miniaturas: - + Size of side pane icons: Tamaño das iconas do panel lateral: - + Icon theme: Tema de iconas: - + Window Xanela - + Default width of new windows: Largo predeterminado para as novas xanelas: - + Default height of new windows: Alto predeterminado para as novas xanelas: - + Always show the tab bar Amosar sempre a barra de lapelas - + Show 'Close' buttons on tabs Amosar os botóns de «Pechar» nas lapelas - + Remember the size of the last closed window - + Browsing Navegando - + Open files with single click Abrir os ficheiros cun só clic - + Delay of auto-selection in single click mode (0 to disable) - + Default view mode: Modo de vista predeterminado: - + sec - + File Operations Operacións de ficheiro - + Confirm before deleting files Confirmar antes de eliminar os ficheiros - + Move deleted files to "trash bin" instead of erasing from disk. Mover os ficheiros eliminados ao «cesto do lixo» no canto de borralos do disco. - + Show thumbnails of files Amosar miniaturas dos ficheiros - + Only show thumbnails for local files Amosar só as miniaturas dos ficheiros locais - + Do not generate thumbnails for image files exceeding this size: Non xerar miniaturas dos ficheiros de imaxe se o tamaño excede de: - + KB  KB - + Auto Mount Montaxe automático - + Mount mountable volumes automatically on program startup Montar os volumes montábeis automaticamente no arrinque do programa - + Mount removable media automatically when they are inserted Montar os dispositivos removíbeis automaticamente ao seren inseridos - + Show available options for removable media when they are inserted Amosar as opción para os dispositivos removíbeis ao seren inseridos - + When removable medium unmounted: - - Close tab containing removable medium + + Close &tab containing removable medium - - Change folder in the tab to home folder + + Chan&ge folder in the tab to home folder - + + Switch &user command: + + + + + Archiver in&tegration: + + + + Programs Programas - + Terminal emulator: Emulador de terminal: - Switch user command: - Orde de cambio de usuario: + Orde de cambio de usuario: - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Exemplos: «xterm -e %s» para o terminal ou «gksu %s» para cambiar de usuario. %s = á liña de ordes que quere executar co terminal ou como superusario. - Archiver integration: - Integración do «Archiver»: + Integración do «Archiver»: - + Use SI decimal prefixes instead of IEC binary prefixes Utilizar prefixos decimais SI no canto de prefixos binarios IEC diff --git a/pcmanfm/translations/pcmanfm-qt_hu.desktop b/pcmanfm/translations/pcmanfm-qt_hu.desktop new file mode 100644 index 0000000..7a90797 --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt_hu.desktop @@ -0,0 +1,4 @@ +#Translations +Name[hu]=PCManFM-Qt fájlkezelő +GenericName[hu]=Fájlkezelő +Comment[hu]=Fájlok böngészése és karbantartása diff --git a/pcmanfm/translations/pcmanfm-qt_hu.ts b/pcmanfm/translations/pcmanfm-qt_hu.ts new file mode 100644 index 0000000..e4f6e26 --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt_hu.ts @@ -0,0 +1,1114 @@ + + + + + AboutDialog + + + About + Rólunk + + + + <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> + + + + + Lightweight file manager + Könnyed fájlkezelő + + + + PCMan File Manager + +Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) + +This program 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 2 +of the License, or (at your option) any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + + + + Programming: +* Hong Jen Yee (PCMan) <pcman.tw@gmail.com> + + Programfejlesztő: +* Hong Jen Yee (PCMan) <pcman.tw@gmail.com> + + + + <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> + + + + + Authors + Szerzők + + + + License + Licensz + + + + AutoRunDialog + + + Removable medium is inserted + Új hordozható adathordozó észlelve + + + + <b>Removable medium is inserted</b> + <b>Új hordozható adathordozó észlelve</b> + + + + Type of medium: + Adathordozó fajtája: + + + + Detecting... + Észlelés... + + + + Please select the action you want to perform: + Válassz egy lehetőséget: + + + + DesktopPreferencesDialog + + + Desktop Preferences + Asztal tulajdonságok + + + + Background + Háttérkép + + + + Wallpaper mode: + Tapéta mód: + + + + Wallpaper image file: + Tapéta képfájl: + + + + Select background color: + Háttérszín: + + + + + Image file + Képfájl + + + + Image file path + Képfájl útvonala + + + + + &Browse + &Böngészés + + + + Label Text + Felirat + + + + Select text color: + Szövegszín: + + + + Select shadow color: + Árnyékszín: + + + + Select font: + Betűtípus: + + + + General + + + + + Window Manager + Ablakkezelő + + + + Show menus provided by window managers when desktop is clicked + Asztalra kattintva az ablakkezelő menüje látszik + + + + Desktop + Asztal + + + + Desktop folder: + Asztal mappa: + + + + Folder path + Könyvtár útvonal + + + + Advanced + Haladó + + + + MainWindow + + + File Manager + Fájlkezelő + + + + Go Up + Föl + + + + Alt+Up + Alt+Föl + + + + Home + Saját könyvtár + + + + Alt+Home + + + + + Reload + Újratölt + + + + F5 + + + + + &Reload + Új&ratölt + + + + Go + Ugrás + + + + Quit + Kilép + + + + &About + Ról&am + + + + New Window + ÚJ ablak + + + + Ctrl+N + + + + + Show &Hidden + &Rejtettek + + + + Ctrl+H + + + + + &Computer + &Számítógép + + + + &Trash + &Kuka + + + + &Network + &Hálózat + + + + &Desktop + A&sztal + + + + &Add to Bookmarks + &Könyvjelzőkhöz + + + + &Applications + &Alkalmazások + + + + Ctrl+X + + + + + &Copy + &Másol + + + + Ctrl+C + + + + + &Paste + &Beilleszt + + + + Ctrl+V + + + + + Select &All + &Mindet + + + + Pr&eferences + B&eállítások + + + + &Invert Selection + K&ijelölés megfordítás + + + + &Delete + &Töröl + + + + &Rename + &Átnevez + + + + Ctrl+A + + + + + Go &Up + &Föl + + + + &New Window + &ÚJ ablak + + + + &Icon View + &Ikonnézet + + + + &Compact View + &Tömör nézet + + + + &Detailed List + &Teljes lista + + + + &Thumbnail View + &Bélyegképek + + + + Cu&t + &Kivág + + + + Ascending + Növekvő + + + + Descending + Csökkenő + + + + By File Name + Név + + + + By Modification Time + Módosítási idő + + + + By File Type + Típus + + + + By Owner + Tulajdonos + + + + Folder First + Mappák elől + + + + New &Tab + Új &fül + + + + New Tab + Új fül + + + + Ctrl+T + + + + + Go &Back + &Vissza + + + + Go Back + Vissza + + + + Alt+Left + Alt+Bal + + + + Go &Forward + &Előre + + + + Go Forward + Előre + + + + Alt+Right + Alt+Jobb + + + + Del + + + + + F2 + + + + + C&lose Tab + Fü&l bezárás + + + + File &Properties + &Fájljellemzők + + + + &Folder Properties + &Mappajellemzők + + + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + + &Sorting + &Rendezés + + + + Main Toolbar + Eszközsáv + + + + Ctrl+W + + + + + Alt+Return + + + + + Case Sensitive + Nagybetűérzékeny + + + + By File Size + Fájlméret + + + + Close Window + Ablak bezárás + + + + Edit Bookmarks + Könyvjelzőkezelés + + + + Open &Terminal + &Terminál + + + + F4 + + + + + Open as &Root + &Rendszergazdai megnyitás + + + + &Edit Bookmarks + Könyvj&elzőkezelés + + + + &File + &Fájl + + + + &Help + &Súgó + + + + &View + &Nézet + + + + &Edit + Sz&erkeszt + + + + &Bookmarks + &Könyvjelzők + + + + &Go + U&grás + + + + &Tool + &Eszközök + + + + PCManFM::Application + + + Name of configuration profile + Beállítófájl neve + + + + PROFILE + + + + + Run PCManFM as a daemon + A PCManFM mint daemon fut + + + + Quit PCManFM + PCManFM elhagyása + + + + Launch desktop manager + Asztalkezelő indítás + + + + Turn off desktop manager if it's running + Futó asztalkezelő lekapcsolása + + + + Open desktop preference dialog on the page with the specified name + Asztalbeállító nyitása a megadott nevű lapon + + + + + NAME + + + + + Open new window + Új ablak nyitás + + + + Open Find Files utility + Fájlkereső indítása + + + + Set desktop wallpaper from image FILE + A megadott FILE használata tapétaként + + + + FILE + FILE + + + + Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) + Tapéta mód. MODE=(color|stretch|fit|center|tile) + + + + MODE + + + + + Open Preferences dialog on the page with the specified name + Beállító nyitása a megadott nevű lapon + + + + Files or directories to open + Megnyitandó fájlok vagy mappák + + + + [FILE1, FILE2,...] + + + + + + Error + Hiba + + + + Terminal emulator is not set. + A terminál emulátor beállítatlan. + + + + PCManFM::AutoRunDialog + + + Open in file manager + Megnyitás fájlkezelővel + + + + Removable Disk + Cserélhető lemez + + + + PCManFM::DesktopPreferencesDialog + + + Fill with background color only + Kitöltés csak háttérszínnel + + + + Stretch to fill the entire screen + Kitöltve + + + + Stretch to fit the screen + Nyújtva + + + + Center on the screen + Középre + + + + Tile the image to fill the entire screen + Csempézve + + + + Image Files + Képfájlok + + + + PCManFM::DesktopWindow + + + Stic&k to Current Position + &Pozíció megjegyzése + + + + Desktop Preferences + Asztalbeállítások + + + + PCManFM::MainWindow + + + Version: %1 + Verzió: %1 + + + + &Move to Trash + &Kukába + + + + &Delete + &Töröl + + + + + Error + Hiba + + + + Switch user command is not set. + A felhasználót váltó alkalmazás beállítatlan. + + + + PCManFM::PreferencesDialog + + + Icon View + Ikon + + + + Compact Icon View + Kicsi ikon + + + + Thumbnail View + Bélyegkép + + + + Detailed List View + Részletes + + + + PCManFM::TabPage + + + Error + Hiba + + + + Free space: %1 (Total: %2) + Szabad: %1 (Összes: %2) + + + + %n item(s) + + %n elem + + + + + (%n hidden) + + (%n rejtett) + + + + + %1 item(s) selected + %1 elem választva + + + + PCManFM::View + + + Open in New T&ab + Nyi&tás új fülön + + + + Open in New Win&dow + Nyitás új a&blakban + + + + Open in Termina&l + Nyitás terminá&lban + + + + PreferencesDialog + + + Preferences + Beállítások + + + + User Interface + Felhasználói felület + + + + Behavior + Viselkedés + + + + Thumbnail + Bélyegkép + + + + Volume + Adathordozó + + + + Advanced + Haladó + + + + Icons + Ikonok + + + + Size of big icons: + Nagy méret: + + + + Size of small icons: + Kicsi méret: + + + + Size of thumbnails: + Bélyegképméret: + + + + Size of side pane icons: + Oldalsáv ikonméret: + + + + Icon theme: + Ikon téma: + + + + Window + Ablak + + + + Default width of new windows: + Új ablak alapszélessége: + + + + Default height of new windows: + Új ablak alapmagassága: + + + + Always show the tab bar + Fülsáv mindig látható + + + + Show 'Close' buttons on tabs + 'Bezár'gomb a fülön látszik + + + + Remember the size of the last closed window + Utoljára bezárt ablak méretének megjegyzése + + + + Browsing + Böngészés + + + + Open files with single click + Megnyitás egy kattintásra + + + + Delay of auto-selection in single click mode (0 to disable) + Egykattintásos megnyitási módban az automata kiválasztás késleltetése (0 tilt) + + + + Default view mode: + Alapértelmezett nézet: + + + + sec + + + + + File Operations + Fájlkezelések + + + + Confirm before deleting files + Törlés előtti megerősítés + + + + Move deleted files to "trash bin" instead of erasing from disk. + Törölt fájlok lemezről törlés helyett a kukába a kukába mennek. + + + + Show thumbnails of files + Fájloknál + + + + Only show thumbnails for local files + Csak helyi fájloknál + + + + Do not generate thumbnails for image files exceeding this size: + Nincs, ha a fájl ennél nagyobb: + + + + KB + + + + + Auto Mount + Automata csatolás + + + + Mount mountable volumes automatically on program startup + Csatolható eszközök automata csatolása induláskor + + + + Mount removable media automatically when they are inserted + Cserélhető adathordozók automata csatolása behelyezéskor + + + + Show available options for removable media when they are inserted + Cserélhető adathordozók behelyezéskor választás felkínálása + + + + When removable medium unmounted: + Cserélhető adathordozó lecsatolásakor: + + + + Close &tab containing removable medium + + + + + Chan&ge folder in the tab to home folder + + + + + Switch &user command: + + + + + Archiver in&tegration: + + + + Close tab containing removable medium + Cserélhető adathordozó fülének bezárása + + + Change folder in the tab to home folder + A fül a saját mappát fogja mutatni + + + + Programs + Programok + + + + Terminal emulator: + Terminálemulátor: + + + Switch user command: + Felhasználó váltási parancs: + + + + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. +%s = the command line you want to execute with terminal or su. + Példa: "xterm -e %s" terminálhoz "gksu %s" felhasználóváltáshoz. +%s = A parancs, mely terminálhoz, vagy rendszergazdakénti végrehajtáshoz kell. + + + Archiver integration: + Csomagoló beépítés: + + + + Use SI decimal prefixes instead of IEC binary prefixes + + + + diff --git a/pcmanfm/translations/pcmanfm-qt_it.ts b/pcmanfm/translations/pcmanfm-qt_it.ts index 833e512..5e8981e 100644 --- a/pcmanfm/translations/pcmanfm-qt_it.ts +++ b/pcmanfm/translations/pcmanfm-qt_it.ts @@ -168,27 +168,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< Window Manager - + Gestore finestre Show menus provided by window managers when desktop is clicked - Mostra menu forniti dai gestori finestre quando si fa clic sulla Scrivania + Mostra il menu forniti dal gestore finestre quando si fa clic sulla scrivania Desktop - + Scrivania Desktop folder: - + Cartella scrivania: Folder path - + Percorso @@ -199,397 +199,422 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< MainWindow - + File Manager Gestore file - + Go Up Vai su - + Alt+Up Alt+Su - + Home Cartella home - + Alt+Home Alt+Inizio - + Reload Ricarica - + F5 F5 - + &Reload &Ricarica - + Go Vai - + Quit Esci - + &About &Informazioni - + New Window Nuova finestra - + Ctrl+N Ctrl+N - + Show &Hidden - Mostra &nascosti + Mostra file &nascosti - + Ctrl+H Ctrl+H - + &Computer &Computer - + &Trash Ces&tino - + &Network &Rete - + &Desktop &Scrivania - + &Add to Bookmarks &Aggiungi ai segnalibri - + &Applications &Applicazioni - + Ctrl+X Ctrl+X - + &Copy &Copia - + Ctrl+C Ctrl+C - + &Paste &Incolla - + Ctrl+V Ctrl+V - + Select &All Seleziona t&utto - + Pr&eferences Pr&eferenze - + &Invert Selection &Inverti selezione - + &Delete &Rimuovi - + &Rename &Rinomina - + Ctrl+A Ctrl+A - + Go &Up Vai &su - + &New Window &Nuova finestra - + &Icon View Vista &icone - + &Compact View Vista &compatta - + &Detailed List Elenco &dettagliato - + &Thumbnail View Vista minia&ture - + Cu&t &Taglia - + Ascending Crescente - + Descending Decrescente - + By File Name Per nome file - + By Modification Time Per data modifica - + By File Type Per tipo file - + By Owner Per proprietario - + Folder First Prima le cartelle - + New &Tab Nuova sc&heda - + New Tab Nuova scheda - + Ctrl+T Ctrl+T - + Go &Back Vai in&dietro - + Go Back Va indietro - + Alt+Left Alt+Sinistra - + Go &Forward Vai &avanti - + Go Forward Va avanti - + Alt+Right Alt+Destra - + Del Canc - + F2 F2 - + C&lose Tab C&hiudi scheda - + File &Properties &Proprietà file - + &Folder Properties Proprietà &cartella - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting &Ordinamento - + Main Toolbar Barra strumenti principale - + Ctrl+W Ctrl+W - + Alt+Return Alt+Invio - + Case Sensitive Distingui MAIUSCOLE/minuscole - + By File Size Per dimensione file - + Close Window Chiudi finestra - + Edit Bookmarks Modifica segnalibri - + Open &Terminal Apri &terminale - + F4 F4 - + Open as &Root Apri come &root - + &Edit Bookmarks &Modifica segnalibri - + &File &File - + &Help A&iuto - + &View &Visualizza - + &Edit &Modifica - + &Bookmarks &Segnalibri - + &Go &Vai - + &Tool S&trumenti @@ -680,7 +705,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< Files or directories to open - + Cartelle o file da aprire @@ -710,32 +735,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog - + Fill with background color only Riempi solo con il colore di sfondo - + Stretch to fill the entire screen Allarga per riempire tutto lo schermo - + Stretch to fit the screen - Restringe per adattare allo schermo + Restringi per adattare allo schermo - + Center on the screen Centra nello schermo - + Tile the image to fill the entire screen Ripete l'immagine per riempire tutto lo schermo - + Image Files File immagine @@ -743,12 +768,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow - + Stic&k to Current Position Blo&cca alla posizione attuale - + Desktop Preferences Preferenze scrivania @@ -756,28 +781,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow - + Version: %1 - + Versione:%1 - + &Move to Trash Cestin&a - + &Delete &Rimuovi - - + + Error Errore - + Switch user command is not set. Il comando per cambiare utente non è impostato. @@ -785,22 +810,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog - + Icon View Vista icone - + Compact Icon View Vista icone compatta - + Thumbnail View Vista miniature - + Detailed List View Vista elenco dettagliato @@ -821,7 +846,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< %n item(s) - %n oggetto + %n oggetto/i @@ -836,7 +861,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< %1 item(s) selected - %1 elemento selezionato + %1 elementi selezionati @@ -860,219 +885,227 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog - + Preferences Preferenze - + User Interface Interfaccia utente - + Behavior Comportamento - + Thumbnail Miniatura - + Volume Volume - + Advanced Avanzate - + Icons Icone - + Size of big icons: Dimensione delle icone grandi: - + Size of small icons: Dimensione delle icone piccole: - + Size of thumbnails: Dimensione delle miniature: - + Size of side pane icons: Dimensione delle icone del riquadro laterale: - + Icon theme: Tema delle icone: - + Window Finestra - + Default width of new windows: Larghezza predefinita delle nuove finestre: - + Default height of new windows: Altezza predefinita delle nuove finestre: - + Always show the tab bar Mostra sempre la barra delle schede - + Show 'Close' buttons on tabs Mostra pulsanti di chiusura sulle schede - + Remember the size of the last closed window - + Ricorda dimensione della ultima finestra chiusa - + Browsing Navigazione - + Open files with single click Apri file con un clic singolo - + Delay of auto-selection in single click mode (0 to disable) - + Ritardo per l'auto-selezione in modalità click singolo - + Default view mode: Modalità vista predefinita: - + sec - + secondi - + File Operations Operazioni sui file - + Confirm before deleting files Conferma prima di rimuovere i file - + Move deleted files to "trash bin" instead of erasing from disk. Sposta nel «Cestino» i file rimossi invece di eliminarli dal disco. - + Show thumbnails of files Mostra miniature dei file - + Only show thumbnails for local files Mostra miniature solo per i file locali - + Do not generate thumbnails for image files exceeding this size: Non generare miniature per file immagine più grandi di: - + KB  KB - + Auto Mount Montaggio automatico - + Mount mountable volumes automatically on program startup Monta automaticamente i volumi montabili all'avvio del programma - + Mount removable media automatically when they are inserted Monta automaticamente i volumi rimovibli quando vengono inseriti - + Show available options for removable media when they are inserted Mostra opzioni disponibili per i volumi rimovibli quando vengono inseriti - + When removable medium unmounted: - + Quando viene smontato un volume rimovibile: - - Close tab containing removable medium - + + Close &tab containing removable medium + Chiudi &scheda con il contenuto - - Change folder in the tab to home folder - + + Chan&ge folder in the tab to home folder + Cambia in cartella &home - + + Switch &user command: + Comando per cambiare utente: + + + + Archiver in&tegration: + Gestore archivi da usare: + + + Programs Programmi - + Terminal emulator: Emulatore di terminale: - Switch user command: - Comando per cambiare utente: + Comando per cambiare utente: - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Esempi: "xterm -e %s" per il terminale o "gksu %s" per cambiare utente. %s = la riga di comando da eseguire con il terminal o con su. - Archiver integration: - Integrazione con gli archivi: + Integrazione con gli archivi: - + Use SI decimal prefixes instead of IEC binary prefixes Usa i prefissi decimali del SI invece di quelli binari dello IEC diff --git a/pcmanfm/translations/pcmanfm-qt_ja.ts b/pcmanfm/translations/pcmanfm-qt_ja.ts index b9a5ae2..b4659bf 100644 --- a/pcmanfm/translations/pcmanfm-qt_ja.ts +++ b/pcmanfm/translations/pcmanfm-qt_ja.ts @@ -261,397 +261,422 @@ GNU 一般公衆利用許諾契約書の複製物を1部 MainWindow - + File Manager ファイルマネージャー - + Go Up 上へ - + Alt+Up Alt+Up - + Home ホーム - + Alt+Home Alt+Home - + Reload 再読込み - + F5 F5 - + &Reload 再読込み(&R) - + Go 開く - + Quit 終了 - + &About 情報(&A) - + New Window 新しいウインドウ - + Ctrl+N Ctrl+N - + Show &Hidden 隠しファイルを表示(&H) - + Ctrl+H Ctrl+H - + &Computer コンピューター(&C) - + &Trash ゴミ箱(&T) - + &Network ネットワーク(&N) - + &Desktop デスクトップ(&D) - + &Add to Bookmarks ブックマークに追加(&A) - + &Applications アプリケーション(&A) - + Ctrl+X Ctrl+X - + &Copy コピー(&C) - + Ctrl+C Ctrl+C - + &Paste 貼り付け(&P) - + Ctrl+V Ctrl+V - + Select &All すべてを選択(&A) - + Pr&eferences 設定(&R) - + &Invert Selection 選択を反転(&I) - + &Delete 削除(&D) - + &Rename 名前を変更(&R) - + Ctrl+A Ctrl+A - + Go &Up 上へ(&U) - + &New Window 新しいウインドウ(&N) - + &Icon View アイコン表示(&I) - + &Compact View コンパクト表示(&C) - + &Detailed List 詳細リスト(&D) - + &Thumbnail View サムネイル表示(&T) - + Cu&t 切り取り(&T) - + Ascending 昇順 - + Descending 降順 - + By File Name 名前 - + By Modification Time 更新日時 - + By File Type 種類 - + By Owner 所有者 - + Folder First フォルダを先に - + New &Tab 新しいタブ(&T) - + New Tab 新しいタブ - + Ctrl+T Ctrl+T - + Go &Back 戻る(&B) - + Go Back 戻る - + Alt+Left Alt+Left - + Go &Forward 進む(&F) - + Go Forward 進む - + Alt+Right Alt+Right - + Del Del - + F2 F2 - + C&lose Tab タブを閉じる(&C) - + File &Properties ファイルのプロパティー(&P) - + &Folder Properties フォルダーのプロパティー(&F) - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting ソート(&S) - + Main Toolbar メインツールバー - + Ctrl+W Ctrl+W - + Alt+Return Alt+Return - + Case Sensitive 大文字小文字を区別 - + By File Size サイズ - + Close Window ウインドウを閉じる - + Edit Bookmarks ブックマークを編集 - + Open &Terminal 端末で開く(&T) - + F4 F4 - + Open as &Root rootで開く(&R) - + &Edit Bookmarks ブックマークを編集 - + &File ファイル(&F) - + &Help ヘルプ(&H) - + &View 表示(&V) - + &Edit 編集(&E) - + &Bookmarks ブックマーク(&B) - + &Go 開く(&G) - + &Tool ツール(&T) @@ -772,32 +797,32 @@ GNU 一般公衆利用許諾契約書の複製物を1部 PCManFM::DesktopPreferencesDialog - + Fill with background color only 背景色のみで埋める - + Stretch to fill the entire screen 画面全部に引き伸ばす - + Stretch to fit the screen 画面に合わせて調節 - + Center on the screen 画面の中央に表示 - + Tile the image to fill the entire screen 画面全体に並べる - + Image Files 画像ファイル @@ -805,12 +830,12 @@ GNU 一般公衆利用許諾契約書の複製物を1部 PCManFM::DesktopWindow - + Stic&k to Current Position 現在の場所に固定 - + Desktop Preferences デスクトップ設定 @@ -818,28 +843,28 @@ GNU 一般公衆利用許諾契約書の複製物を1部 PCManFM::MainWindow - + Version: %1 バージョン: %1 - + &Move to Trash ゴミ箱へ移動(&M) - + &Delete 削除(&D) - - + + Error エラー - + Switch user command is not set. ユーザー切替コマンドを未設定です @@ -851,22 +876,22 @@ GNU 一般公衆利用許諾契約書の複製物を1部 PCManFM::PreferencesDialog - + Icon View アイコン表示 - + Compact Icon View 小さなアイコン表示 - + Thumbnail View サムネイル表示 - + Detailed List View 詳細なリスト表示 @@ -924,172 +949,180 @@ GNU 一般公衆利用許諾契約書の複製物を1部 PreferencesDialog - + Preferences 設定 - + User Interface ユーザーインターフェース - + Behavior 挙動 - + Thumbnail サムネイル - + Volume ボリューム - + Advanced 高度 - + Icons アイコン - + Size of big icons: 大きいアイコンの大きさ: - + Size of small icons: 小さいアイコンの大きさ: - + Size of thumbnails: サムネイルの大きさ: - + Size of side pane icons: サイドペインのアイコンの大きさ - + Icon theme: アイコンテーマ: - + Window ウインドウ - + Default width of new windows: 新しいウインドウのデフォルト幅 - + Default height of new windows: 新しいウインドウのデフォルトの高さ - + Always show the tab bar タブバーを常に表示 - + Show 'Close' buttons on tabs 閉じるボタンをタブに表示 - + Remember the size of the last closed window 直前に閉じたウインドウのサイズを記憶 - + Browsing ブラウジング - + Open files with single click シングルクリックでファイルを開く - + Delay of auto-selection in single click mode (0 to disable) シングルクリックモードでの自動選択の遅延時間(0で無効) - + Default view mode: デフォルトの表示モード - + sec - + File Operations ファイル操作 - + Confirm before deleting files ファイルを削除する前に確認 - + Move deleted files to "trash bin" instead of erasing from disk. ディスクから削除せずに"ゴミ箱"へ入れる - + Show thumbnails of files ファイルのサムネイルを表示 - + Only show thumbnails for local files ローカルファイルのみサムネイル表示 - + Do not generate thumbnails for image files exceeding this size: 次のサイズを超える画像ファイルのサムネイルを生成しない: - + KB KB - + When removable medium unmounted: リムーバブルメディアもアンマウントする際に: - + + Switch &user command: + + + + + Archiver in&tegration: + + + Close tab containing removable medium - リムーバブルメディアを表示しているタブを閉じる + リムーバブルメディアを表示しているタブを閉じる - Change folder in the tab to home folder - そのタブのフォルダーをホームフォルダーに移動 + そのタブのフォルダーをホームフォルダーに移動 - + Terminal emulator: 端末エミュレーター: @@ -1098,27 +1131,37 @@ GNU 一般公衆利用許諾契約書の複製物を1部 次のサイズ(KB)を超えるファイルのサムネイルを生成しない: - + Auto Mount 自動マウント - + Mount mountable volumes automatically on program startup プログラム開始時にマウント可能なボリュームをマウントする - + Mount removable media automatically when they are inserted リムーバブルメディアが接続された際に自動的にマウントする - + Show available options for removable media when they are inserted リムーバブルメディアが接続された際に、可能な処理を表示する - + + Close &tab containing removable medium + + + + + Chan&ge folder in the tab to home folder + + + + Programs プログラム @@ -1127,28 +1170,26 @@ GNU 一般公衆利用許諾契約書の複製物を1部 ディレクトリーで実行する端末エミュレーターのコマンド - Switch user command: - ユーザーを切り替えるためのコマンド + ユーザーを切り替えるためのコマンド - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. 例: 端末に "xterm -e %s" 、ユーザー切替に "gksu %s" %s には、端末やsuで実行するコマンドが代入されます - Archiver integration: - アーカイバー連係: + アーカイバー連係: Terminal emulator command for programs: プログラムを実行する端末エミュレーターのコマンド: - + Use SI decimal prefixes instead of IEC binary prefixes IEC二進接頭辞の代わりに、SI十進接頭辞を用いる diff --git a/pcmanfm/translations/pcmanfm-qt_lt_LT.ts b/pcmanfm/translations/pcmanfm-qt_lt_LT.ts index ee866bb..cf3b053 100644 --- a/pcmanfm/translations/pcmanfm-qt_lt_LT.ts +++ b/pcmanfm/translations/pcmanfm-qt_lt_LT.ts @@ -4,14 +4,17 @@ AboutDialog + About Apie + <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> + Lightweight file manager Lengva failų tvarkyklė @@ -20,6 +23,7 @@ <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> + Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> @@ -28,6 +32,7 @@ + Authors Autoriai @@ -60,10 +65,12 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + License Licencija + PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) @@ -84,6 +91,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< + <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> @@ -91,22 +99,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< AutoRunDialog + Removable medium is inserted Įdėta išimama laikmena + <b>Removable medium is inserted</b> <b>Įdėta išimama laikmena</b> + Type of medium: Laikmenos tipas: + Detecting... Aptinkama... + Please select the action you want to perform: Pasirinkite veiksmą kurį norite atlikti: @@ -114,78 +127,99 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< DesktopPreferencesDialog + Desktop Preferences Darbastalio nustatymai + Background Fonas + Wallpaper mode: Fono režimas: + Wallpaper image file: Fono paveikslėlis: + Select background color: Pasirinkite fono spalvą: + + Image file Paveikslėlio failas + Image file path Paveikslėlio kelias + + &Browse &Naršyti + Label Text Antraštė + Select text color: Parinkite teksto spalvą: + Select shadow color: Pasirinkite šešėlio spalvą: + Select font: Pasirinkite šriftą: + General Bendra + Advanced Sudėtingesni + Show menus provided by window managers when desktop is clicked + Window Manager + Desktop + Desktop folder: + Folder path @@ -193,318 +227,422 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< MainWindow + File Manager Failų tvarkyklė + Go Up Aukštyn + Alt+Up Alt+Up + Home Home (Namai) + Alt+Home Alt+Home + Reload Įkelti iš naujo + F5 F5 + &Reload Į&kelti iš naujo + Go Eiti + Quit Išeiti + &About &Apie + New Window Naujas langas + Ctrl+N Ctrl+N + Show &Hidden Rodyti &paslėptus + Ctrl+H Ctrl+H + &Computer &Kompiuteris + &Trash Š&iukšlinė + &Network &Tinklas + &Desktop &Darbastalis + &Add to Bookmarks Į&dėti į žymeles + &Applications &Programos + Ctrl+X Ctrl+X + &Copy &Kopijuoti + Ctrl+C Ctrl+C + &Paste Į&klijuoti + Ctrl+V Ctrl+V + Select &All Pažymėti &viską + Pr&eferences &Nustatymai + &Invert Selection Pasirinkti &atvirkščiai + &Delete &Pašalinti + &Rename &Pervadinti + Ctrl+A Ctrl+A + Go &Up &Aukštyn + &New Window &Naujas langas + &Icon View &Piktogramų rodinys + &Compact View &Glaustas rodinys + &Detailed List &Detalaus sąrašo vaizdas + &Thumbnail View &Miniatiūrų rodinys + Cu&t Iš&kirpti + Ascending Didėjančiai + Descending Mažėjančiai + By File Name Pagal failo vardą + By Modification Time Pagal keitimo datą + By File Type Pagal failo tipą + By Owner Pagal savininką + Folder First Pirmiausia aplankai + New &Tab Nauja &kortelė + New Tab Nauja kortelė + Ctrl+T Ctrl+T + Go &Back &Atgal + Go Back Atgal + Alt+Left Alt+Left + Go &Forward &Pirmyn + Go Forward Pirmyn + Alt+Right Alt+Right + Del Del + F2 F2 + C&lose Tab &Užverti kortelę + File &Properties Failo &savybės + &Folder Properties Aplanko sa&vybės + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting &Rikiavimas + Ctrl+W Ctrl+W + Alt+Return Alt+Return + Case Sensitive Skirti raidžių dydį + By File Size Pagal failo dydį + Close Window Užverti langą + Edit Bookmarks Redaguoti žymeles + Open &Terminal Atverti &terminalą + F4 F4 + Open as &Root Atverti &administratoriaus teisėmis + &Edit Bookmarks &Redaguoti žymeles + &File &Failas + &Help Ž&inynas + &View &Rodymas + &Edit &Taisa + &Bookmarks Ž&ymelės + &Go &Eiti + &Tool Į&rankiai + Main Toolbar @@ -512,78 +650,99 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::Application + Name of configuration profile Konfigūracijos profilio pavadinimas + PROFILE PROFILIS + Run PCManFM as a daemon Paleisti PCManFM kaip demoną + Quit PCManFM Užverti PCManFM + Launch desktop manager Paleisti darbastalio tvarkyklę + Turn off desktop manager if it's running Išjungti darbastalio tvarkyklę (jei ji veikia) + Open desktop preference dialog on the page with the specified name Atverti nustatymų dialogą nurodytame puslapyje + + NAME PAVADINIMAS + Set desktop wallpaper from image FILE Nustatyti darbastalio foną iš paveikslėlio FAILO + FILE FAILAS + Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Darbastalio fono režimas. REŽIMAS=(color|stretch|fit|center|tile) + MODE REŽIMAS + Open Preferences dialog on the page with the specified name Atverti nustatymų dialogą nurodytame puslapyje + Open new window Atverti naują langą + Open Find Files utility Atverti failų paieškos įrankį + [FILE1, FILE2,...] [FAILAS1, FAILAS2,...] + + Error Klaida + Terminal emulator is not set. Nenustatytas terminalo emuliatorius. + Files or directories to open @@ -591,10 +750,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::AutoRunDialog + Open in file manager Atverti failų tvarkyklėje + Removable Disk Išimamas diskas @@ -602,26 +763,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog + Fill with background color only Užpildyti tik fono spalva + Stretch to fill the entire screen Ištempti per visą ekraną + Stretch to fit the screen Sutalpinti ekrane + Center on the screen Rodyti ekrano centre + Tile the image to fill the entire screen Užpildyti ekraną paveikslėliais + Image Files Paveikslėlių failai @@ -629,10 +796,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow + Desktop Preferences Darbastalio nustatymai + Stic&k to Current Position @@ -640,18 +809,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow + &Move to Trash &Perkelti į šiukšliadėžę + &Delete &Pašalinti + + Error Klaida + Switch user command is not set. Nenustatyta naudotojo perjungimo komanda. @@ -660,6 +834,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< Nenustatytas terminalo emuliatorius. + Version: %1 @@ -667,18 +842,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog + Icon View Piktogramų peržiūra + Compact Icon View Kompaktiškas piktogramų rodinys + Thumbnail View Miniatiūrų rodinys + Detailed List View Išsamus sąrašas @@ -686,26 +865,31 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::TabPage + Free space: %1 (Total: %2) Laisvos vietos: %1 (Iš viso: %2 ) + %n item(s) %n elementas(-ai) + (%n hidden) (%n paslėptas) + Error Klaida + %1 item(s) selected @@ -713,14 +897,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::View + Open in New T&ab + Open in New Win&dow + Open in Termina&l @@ -728,102 +915,127 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog + Preferences Nustatymai + User Interface Naudotojo sąsaja + Behavior Elgsena + Thumbnail Miniatiūra + Volume Tomas + Advanced Papildomi + Icons Piktogramos + Size of big icons: Didelių piktogramų dydis: + Size of small icons: Mažų piktogramų dydis: + Size of thumbnails: Miniatiūrų dydis: + Size of side pane icons: Šoninio skydelio piktogramų dydis: + Icon theme: Piktogramų tema: + Window Langas + Default width of new windows: Numatytasis naujų langų plotis: + Default height of new windows: Numatytasis naujų langų aukštis: + Always show the tab bar Visada rodyti kortelių juostą + Show 'Close' buttons on tabs Ant kortelių rodyti uždarymo mygtukus + Browsing Naršymas + Open files with single click Atverti failus vienu mygtuko paspaudimu + Default view mode: Numatytas rodinys: + File Operations Failų operacijos + Confirm before deleting files Patvirtinti prieš ištrinant failus + Move deleted files to "trash bin" instead of erasing from disk. Ištrintus failus perkelti į šiukšlinę, o ne ištrinti iš disko. + Show thumbnails of files Rodyti failų miniatiūras + Only show thumbnails for local files Miniatiūras rodyti tik vietiniams failams @@ -832,22 +1044,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< Negeneruoti miniatiūrų, jei failas didesnis nei (KB): + Auto Mount Automatinis prijungimas + Mount mountable volumes automatically on program startup Paleidžiant programą automatiškai prijungti prijungiamus tomus + Mount removable media automatically when they are inserted Prijungti išimamas laikmenas automatiškai jas įdėjus + Show available options for removable media when they are inserted Prijungus išimamą laikmeną rodyti galimus veiksmus + Programs Programos @@ -857,9 +1074,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< Switch user command: - Naudotojo perjungimo komanda: + Naudotojo perjungimo komanda: + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Pavyzdys: „xterm -e %s“ terminalui ar „gksu %s“ naudotojo perjungimui. @@ -867,50 +1085,70 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< Archiver integration: - Archyvatoriaus integracija: + Archyvatoriaus integracija: Terminal emulator command for programs: Terminalo emuliatoriaus komanda programoms: + Use SI decimal prefixes instead of IEC binary prefixes Naudoti SI dešimtainius matmenis vietoj IEC dvejetainių matmenų + Do not generate thumbnails for image files exceeding this size: + KB + Terminal emulator: + When removable medium unmounted: - Close tab containing removable medium + + Delay of auto-selection in single click mode (0 to disable) - Change folder in the tab to home folder + + sec - Delay of auto-selection in single click mode (0 to disable) + + Remember the size of the last closed window - sec + + Close &tab containing removable medium - Remember the size of the last closed window + + Chan&ge folder in the tab to home folder + + + + + Switch &user command: + + + + + Archiver in&tegration: diff --git a/pcmanfm/translations/pcmanfm-qt_pl.desktop b/pcmanfm/translations/pcmanfm-qt_pl.desktop new file mode 100644 index 0000000..1a6fbd7 --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt_pl.desktop @@ -0,0 +1,4 @@ +#Translations +Name[pl]=Menedżer plików PCManFM +GenericName[pl]=Menedżer plików +Comment[pl]=Przegląd systemu plików i zarządzanie plikami diff --git a/pcmanfm/translations/pcmanfm-qt_pl.ts b/pcmanfm/translations/pcmanfm-qt_pl.ts new file mode 100644 index 0000000..146567c --- /dev/null +++ b/pcmanfm/translations/pcmanfm-qt_pl.ts @@ -0,0 +1,1119 @@ + + + + + AboutDialog + + + About + O programie + + + + <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> + <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> + + + + Lightweight file manager + Lekki menedżer plików + + + + PCMan File Manager + +Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) + +This program 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 2 +of the License, or (at your option) any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + + + + Programming: +* Hong Jen Yee (PCMan) <pcman.tw@gmail.com> + + Programowanie: +* Hong Jen Yee (PCMan) <pcman.tw@gmail.com> + + + + + <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> + <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> + + + + Authors + Autorzy + + + + License + Licencja + + + + AutoRunDialog + + + Removable medium is inserted + Wykryto nośnik wymienny + + + + <b>Removable medium is inserted</b> + <b>Wykryto nośnik wymienny</b> + + + + Type of medium: + Typ nośnika: + + + + Detecting... + Wykrywanie... + + + + Please select the action you want to perform: + Wybierz działanie, które chcesz wykonać: + + + + DesktopPreferencesDialog + + + Desktop Preferences + Ustawienia pulpitu + + + + Background + Tło + + + + Wallpaper mode: + Tryb: + + + + Wallpaper image file: + Obraz tła: + + + + Select background color: + Kolor tła: + + + + + Image file + Plik obrazka + + + + Image file path + Ścieżka obrazka + + + + + &Browse + &Wybierz + + + + Label Text + Tekst + + + + Select text color: + Kolor tekstu: + + + + Select shadow color: + Kolor cienia: + + + + Select font: + Czcionka: + + + + General + Wygląd + + + + Window Manager + Menedżer Okien + + + + Show menus provided by window managers when desktop is clicked + Wyświetlanie menu menedżera okien po kliknięciu na pulpicie + + + + Desktop + Pulpit + + + + Desktop folder: + Katalog Pulpitu: + + + + Folder path + Ścieżka katalogu + + + + Advanced + Zaawansowane + + + + MainWindow + + + File Manager + Menedżer plików + + + + Go Up + Katalog nadrzędny + + + + Alt+Up + Alt+Góra + + + + Home + Katalog użytkownika + + + + Alt+Home + Alt+Home + + + + Reload + Odśwież + + + + F5 + F5 + + + + &Reload + &Odśwież + + + + Go + Przejdź + + + + Quit + Zamknij + + + + &About + &O programie + + + + New Window + Nowe okno + + + + Ctrl+N + Ctrl+N + + + + Show &Hidden + Wyświetlanie &ukrytych plików + + + + Ctrl+H + Ctrl+H + + + + &Computer + &Komputer + + + + &Trash + Ko&sz + + + + &Network + &Sieć + + + + &Desktop + &Pulpit + + + + &Add to Bookmarks + &Dodaj zakładkę + + + + &Applications + P&rogramy + + + + Ctrl+X + Ctrl+X + + + + &Copy + &Kopiuj + + + + Ctrl+C + Ctrl+C + + + + &Paste + &Wklej + + + + Ctrl+V + Ctrl+V + + + + Select &All + Zazn&acz wszystko + + + + Pr&eferences + Pr&eferencje + + + + &Invert Selection + &Odwróć zaznaczenie + + + + &Delete + &Usuń + + + + &Rename + &Zmień nazwę + + + + Ctrl+A + Ctrl+A + + + + Go &Up + Do &góry + + + + &New Window + &Nowe okno + + + + &Icon View + Widok &ikon + + + + &Compact View + Lista &zwarta + + + + &Detailed List + Lista &szczegółowa + + + + &Thumbnail View + &Miniatury + + + + Cu&t + W&ytnij + + + + Ascending + Rosnąco + + + + Descending + Malejąco + + + + By File Name + Według nazwy + + + + By Modification Time + Według czasu modyfikacji + + + + By File Type + Według typu + + + + By Owner + Według właściciela + + + + Folder First + Najpierw katalogi + + + + New &Tab + Nowa &karta + + + + New Tab + Nowa karta + + + + Ctrl+T + Ctrl+T + + + + Go &Back + &Poprzedni katalog + + + + Go Back + Poprzedni katalog + + + + Alt+Left + Alt+Lewo + + + + Go &Forward + &Następny katalog + + + + Go Forward + Następny katalog + + + + Alt+Right + Alt+Prawo + + + + Del + Del + + + + F2 + F2 + + + + C&lose Tab + &Zamknij kartę + + + + File &Properties + Właściwości &pliku + + + + &Folder Properties + Właściwości &katalogu + + + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + + &Sorting + &Sortowanie + + + + Main Toolbar + Pasek narzędziowy + + + + Ctrl+W + Ctrl+W + + + + Alt+Return + Alt+Return + + + + Case Sensitive + Uwzględniaj wielkość liter + + + + By File Size + Według rozmiaru + + + + Close Window + Zamknij okno + + + + Edit Bookmarks + Edytuj zakładki + + + + Open &Terminal + Otwórz położenie w &terminalu + + + + F4 + F4 + + + + Open as &Root + Otwórz jako &Root + + + + &Edit Bookmarks + Edytuj &Zakładki + + + + &File + &Plik + + + + &Help + Po&moc + + + + &View + &Widok + + + + &Edit + &Edycja + + + + &Bookmarks + &Zakładki + + + + &Go + P&rzejdź + + + + &Tool + &Narzędzia + + + + PCManFM::Application + + + Name of configuration profile + Nazwa profilu konfiguracji + + + + PROFILE + PROFIL + + + + Run PCManFM as a daemon + Uruchom PCManFM jako daemon + + + + Quit PCManFM + Zakończ PCManFM + + + + Launch desktop manager + + + + + Turn off desktop manager if it's running + + + + + Open desktop preference dialog on the page with the specified name + + + + + + NAME + + + + + Open new window + Otwórz nowe okno + + + + Open Find Files utility + + + + + Set desktop wallpaper from image FILE + Ustaw tło pulpitu z obrazka PLIK + + + + FILE + PLIK + + + + Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) + Ustaw tryb tapety pulpitu. TRYB=(color|stretch|fit|center|tile) + + + + MODE + TRYB + + + + Open Preferences dialog on the page with the specified name + + + + + Files or directories to open + Pliki lub katalogi do otwarcia + + + + [FILE1, FILE2,...] + [PLIK1, PLIK2,...] + + + + + Error + Błąd + + + + Terminal emulator is not set. + Nie ustawiono emulatora terminala. + + + + PCManFM::AutoRunDialog + + + Open in file manager + Otwórz w menedżerze plików + + + + Removable Disk + Nośnik wymienny + + + + PCManFM::DesktopPreferencesDialog + + + Fill with background color only + Wypełnienie kolorem + + + + Stretch to fill the entire screen + Rozciągnięcie do rozmiaru ekranu + + + + Stretch to fit the screen + Dopasowanie do rozmiaru ekranu + + + + Center on the screen + Wyśrodkowanie + + + + Tile the image to fill the entire screen + Sąsiadująco + + + + Image Files + Pliki obrazków + + + + PCManFM::DesktopWindow + + + Stic&k to Current Position + Przyp&nij do aktualnej pozycji + + + + Desktop Preferences + Ustawienia pulpitu + + + + PCManFM::MainWindow + + + Version: %1 + Wersja: %1 + + + + &Move to Trash + &Przenieś do kosza + + + + &Delete + &Usuń + + + + + Error + Błąd + + + + Switch user command is not set. + Nie ustawiono polecenia do przełączania użytkowników. + + + + PCManFM::PreferencesDialog + + + Icon View + Widok ikon + + + + Compact Icon View + Lista zwarta + + + + Thumbnail View + Miniatury + + + + Detailed List View + Lista szczegółowa + + + + PCManFM::TabPage + + + Error + Błąd + + + + Free space: %1 (Total: %2) + Wolna przestrzeń: %1 (całkowita: %2) + + + + %n item(s) + + %n elementów + + + + + + + (%n hidden) + + (%n ukrytych) + + + + + + + %1 item(s) selected + Zaznaczono %1 elementy + + + + PCManFM::View + + + Open in New T&ab + Otwórz w nowej &karcie + + + + Open in New Win&dow + Otwórz w nowym &oknie + + + + Open in Termina&l + Otwórz w &terminalu + + + + PreferencesDialog + + + Preferences + Preferencje + + + + User Interface + Wyświetlanie + + + + Behavior + Zachowanie + + + + Thumbnail + Miniatury + + + + Volume + Wolumeny + + + + Advanced + Zaawansowane + + + + Icons + Ikony + + + + Size of big icons: + Rozmiar dużych ikon: + + + + Size of small icons: + Rozmiar małych ikon: + + + + Size of thumbnails: + Rozmiar miniatur: + + + + Size of side pane icons: + Rozmiar ikon panelu bocznego: + + + + Icon theme: + Motyw ikon: + + + + Window + Okno + + + + Default width of new windows: + Domyślna szerokość nowych okien: + + + + Default height of new windows: + Domyślna wysokość nowych okien: + + + + Always show the tab bar + Zawsze pokazuj pasek kart + + + + Show 'Close' buttons on tabs + Pokaż przycisk 'Zamknij' na kartach + + + + Remember the size of the last closed window + Pamiętaj rozmiar ostatnio zamkniętego okna + + + + Browsing + Przeglądanie + + + + Open files with single click + Otwieranie plików jednokrotnym kliknięciem + + + + Delay of auto-selection in single click mode (0 to disable) + Opóźnienie zaznaczania (0 aby wyłączyć) + + + + Default view mode: + Domyślny tryb widoku: + + + + sec + sek + + + + File Operations + Operacje na plikach + + + + Confirm before deleting files + Potwierdzenie usuwania plików + + + + Move deleted files to "trash bin" instead of erasing from disk. + Przenoszenie plików do "Kosza" zamiast usuwania z dysku + + + + Show thumbnails of files + Wyświetlanie miniatur zawartości plików + + + + Only show thumbnails for local files + Wyświetlanie miniatur tylko lokalnych plików + + + + Do not generate thumbnails for image files exceeding this size: + Pomijanie generowania miniatur plików większych niż: + + + + KB + KB + + + + Auto Mount + Automatyczne montowanie + + + + Mount mountable volumes automatically on program startup + Montowanie wolumenów podczas uruchamiania programu + + + + Mount removable media automatically when they are inserted + Montowanie nośników wymiennych po wsunięciu + + + + Show available options for removable media when they are inserted + Wyświetlanie możliwych czynności po wsunięciu nośnika wymiennego + + + + When removable medium unmounted: + Działania po odmontowaniu nośnika wymiennego + + + + Close &tab containing removable medium + + + + + Chan&ge folder in the tab to home folder + + + + + Switch &user command: + + + + + Archiver in&tegration: + + + + Close tab containing removable medium + Zamknięcie karty + + + Change folder in the tab to home folder + Przejście do katalogu użytkownika + + + + Programs + Programy + + + + Terminal emulator: + Emulator terminala: + + + Switch user command: + Przełączanie użytkowników: + + + + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. +%s = the command line you want to execute with terminal or su. + Przykład: "xterm -e %s" dla terminala lub "gksu %s" dla przełączania użytkownika. +%s = polecenie, które chcesz wykonać za pomocą terminala lub su. + + + Archiver integration: + Menedżer archiwów: + + + + Use SI decimal prefixes instead of IEC binary prefixes + Używanie dziesiętnych prefiksów SI zamiast binarnych IEC + + + diff --git a/pcmanfm/translations/pcmanfm-qt_pt.ts b/pcmanfm/translations/pcmanfm-qt_pt.ts index f363ed2..9df8507 100644 --- a/pcmanfm/translations/pcmanfm-qt_pt.ts +++ b/pcmanfm/translations/pcmanfm-qt_pt.ts @@ -251,398 +251,423 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., MainWindow - + File Manager Gestor de ficheiros - + Go Up Subir - + Alt+Up Alt+Up - + Home Pasta pessoal - + Alt+Home Alt+Home - + Reload Recarregar - + F5 F5 - + &Reload &Recarregar - + Go Ir - + Quit Sair - + &About &Sobre - + New Window Nova janela - + Ctrl+N Ctrl+N - + Show &Hidden Mostrar &ocultos - + Ctrl+H Ctrl+H - + &Computer &Computador - + &Trash &Lixo - + &Network &Rede - + &Desktop Área &de trabalho - + &Add to Bookmarks &Adicionar aos marcadores - + &Applications &Aplicações - + Ctrl+X Ctrl+X - + &Copy &Copiar - + Ctrl+C Ctrl+C - + &Paste Co&lar - + Ctrl+V Ctrl+V - + Select &All Selecion&ar tudo - + Pr&eferences Pr&eferências - + &Invert Selection &Inverter seleção - + &Delete E&liminar - + &Rename Muda&r nome - + Ctrl+A Ctrl+A - + Go &Up S&ubir - + &New Window &Nova janela - + &Icon View V&ista de ícones - + &Compact View Vista &compacta - + &Detailed List Lista &detalhada - + &Thumbnail View Vista de minia&turas - + Cu&t Cor&tar - + Ascending Ascendente - + Descending Descendente - + By File Name Por nome de ficheiro - + By Modification Time Por data de modificação - + By File Type Por tipo de ficheiro - + By Owner Por dono - + Folder First Pastas no início - + New &Tab Novo &separador - + New Tab Novo separador - + Ctrl+T Ctrl+T - + Go &Back &Recuar - + Go Back Recuar - + Alt+Left Alt+Left - + Go &Forward &Avançar - + Go Forward Avançar - + Alt+Right Alt+Right - + Del Del - + F2 F2 - + C&lose Tab &Fechar separador - + File &Properties &Propriedades do ficheiro - + &Folder Properties Propried&ades da pasta - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting &Ordenação - + Main Toolbar Barra principal - + Ctrl+W Ctrl+W - + Alt+Return Alt+Return - + Case Sensitive Diferenciar maiúsculas/minúsculas - + By File Size Por tamanho de ficheiro - + Close Window Fechar janela - + Edit Bookmarks Editar marcadores - + Open &Terminal Abrir &terminal - + F4 F4 - + Open as &Root Abrir como &root - + &Edit Bookmarks &Editar marcadores - + &File &Ficheiro - + &Help Aj&uda - + &View &Ver - + &Edit &Editar - + &Bookmarks &Marcadores - + &Go &Ir - + &Tool Ferramen&tas @@ -763,32 +788,32 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., PCManFM::DesktopPreferencesDialog - + Fill with background color only Preencher apenas com a cor de fundo - + Stretch to fill the entire screen Esticar para preencher o ecrã - + Stretch to fit the screen Esticar para ajustar ao ecrã - + Center on the screen Centrar no ecrã - + Tile the image to fill the entire screen Imagens em mosaico para preencher o ecrã - + Image Files Ficheiros de imagem @@ -796,12 +821,12 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., PCManFM::DesktopWindow - + Stic&k to Current Position Fi&xar na posiçao atual - + Desktop Preferences Preferências da área de trabalho @@ -809,28 +834,28 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., PCManFM::MainWindow - + Version: %1 Versão: %1 - + &Move to Trash &Mover para o lixo - + &Delete &Eliminar - - + + Error Erro - + Switch user command is not set. O comando para trocar de utilizador não está definido. @@ -842,22 +867,22 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., PCManFM::PreferencesDialog - + Icon View Vista de ícones - + Compact Icon View Vista compacta de ícones - + Thumbnail View Vista de miniaturas - + Detailed List View Lista detalhada @@ -917,172 +942,180 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., PreferencesDialog - + Preferences Preferências - + User Interface Interface - + Behavior Comportamento - + Thumbnail Miniaturas - + Volume Volume - + Advanced Avançado - + Icons Ícones - + Size of big icons: Tamanho dos ícones grandes: - + Size of small icons: Tamanho dos ícones pequenos: - + Size of thumbnails: Tamanho das miniaturas: - + Size of side pane icons: Tamanho dos ícones no painel lateral: - + Icon theme: Tema de ícones: - + Window Janela - + Default width of new windows: Largura para as novas janelas: - + Default height of new windows: Altura para as novas janeas: - + Always show the tab bar Mostrar sempre barra de separadores - + Show 'Close' buttons on tabs Mostrar botão "Fechar" nos separadores - + Remember the size of the last closed window Memorizar tamanho da última janela fechada - + Browsing Navegação - + Open files with single click Abrir ficheiros com um clique - + Delay of auto-selection in single click mode (0 to disable) Atraso para seleçao automática no modo de um clique (0 para desativar) - + Default view mode: Modo de visualização: - + sec seg - + File Operations Operações de ficheiros - + Confirm before deleting files Confirmar antes de eliminar - + Move deleted files to "trash bin" instead of erasing from disk. Mover ficheiros para o lixo em vez de os eliminar do disco. - + Show thumbnails of files Mostrar miniaturas dos ficheiros - + Only show thumbnails for local files Mostrar apenas para ficheiros locais - + Do not generate thumbnails for image files exceeding this size: Não gerar miniaturas para as imagens que excedam este tamanho: - + KB KB - + When removable medium unmounted: Ao desmontar um disco amovível: - + + Switch &user command: + + + + + Archiver in&tegration: + + + Close tab containing removable medium - Fechar o separador que contém o disco + Fechar o separador que contém o disco - Change folder in the tab to home folder - Mudar o separador para a pasta pessoal + Mudar o separador para a pasta pessoal - + Terminal emulator: Emulador de terminal: @@ -1091,27 +1124,37 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., Não gerar miniaturas para os ficheiros que excedam (KB): - + Auto Mount Montar automaticamente - + Mount mountable volumes automatically on program startup Montar discos amovíveis ao iniciar a aplicação - + Mount removable media automatically when they are inserted Montar discos amovíveis ao inserir - + Show available options for removable media when they are inserted Mostrar opções possíveis para os discos assim que forem inseridos - + + Close &tab containing removable medium + + + + + Chan&ge folder in the tab to home folder + + + + Programs Programas @@ -1120,28 +1163,26 @@ Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., Comando do terminal para os diretórios: - Switch user command: - Comando para trocar de utilizador: + Comando para trocar de utilizador: - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Exemplo: "xterm -e %s" para terminal ou "gksu %s" para trocar de utilizador. %s = a linha de comandos a executar no terminal ou com o comando su. - Archiver integration: - Integração de arquivadores: + Integração de arquivadores: Terminal emulator command for programs: Comando do terminal para os programas: - + Use SI decimal prefixes instead of IEC binary prefixes Utilizar prefixos decimais SI em vez dos prefixos binários IEC diff --git a/pcmanfm/translations/pcmanfm-qt_ru.ts b/pcmanfm/translations/pcmanfm-qt_ru.ts index 4479358..041d780 100644 --- a/pcmanfm/translations/pcmanfm-qt_ru.ts +++ b/pcmanfm/translations/pcmanfm-qt_ru.ts @@ -4,32 +4,32 @@ AboutDialog - + About О программе - + <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> - + Lightweight file manager Легковесный диспетчер файлов - + <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> - + Authors Авторы - + Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> @@ -38,12 +38,12 @@ - + License Лицензия - + PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) @@ -67,27 +67,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< AutoRunDialog - + Removable medium is inserted Вставлен съёмный носитель - + <b>Removable medium is inserted</b> <b>Вставлен съёмный носитель</b> - + Type of medium: Тип носителя: - + Detecting... Обнаружение... - + Please select the action you want to perform: Выберите действие, которое хотите совершить: @@ -95,99 +95,99 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< DesktopPreferencesDialog - + Desktop Preferences Настройки рабочего стола - + General Общие - + Background Фон - + Wallpaper mode: Режим обоев: - + Wallpaper image file: Файл изображения обоев: - + Select background color: Выбрать цвет фона: - - + + Image file Файл изображения - + Image file path Путь к файлу изображения - - + + &Browse &Обзор - + Label Text Текст ярлыков - + Select text color: Выбрать цвет текста: - + Select shadow color: Выбрать цвет тени: - + Select font: Выбрать шрифт: - + Window Manager - + Оконный менеджер - + Desktop - + Рабочий стол - + Desktop folder: - + Папка рабочего стола: - + Folder path - + Путь к папке - + Advanced Расширенные - + Show menus provided by window managers when desktop is clicked Показывать меню, предоставляемые оконными менеджерами по клику на рабочий стол @@ -195,508 +195,563 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< FindFilesDialog + Find Files - Найnb файлы + Найnb файлы + Name/Location - Имя/расположение + Имя/расположение + File name patterns - Шаблоны имён файлов + Шаблоны имён файлов + Pattern: - Шаблон: + Шаблон: + + Case insensitive - Регистрочувствительный + Регистрочувствительный + + Use regular expression - Использовать регулярные выражения + Использовать регулярные выражения + Places to search - Места поиска + Места поиска + Add - Добавить + Добавить + Remove - Удалить + Удалить + Search in sub directories - Искать в подпапках + Искать в подпапках + Search hidden files - Искать скрытые файлы + Искать скрытые файлы + + File Type - Тип файла + Тип файла + Only search for files of following types: - Искать только следующие типы файлов: + Искать только следующие типы файлов: + Text files - Текстовые файлы + Текстовые файлы + Image files - Файлы изображений + Файлы изображений + Audio files - Аудиофайлы + Аудиофайлы + Video files - Видеофайлы + Видеофайлы + Documents - Документы + Документы + Content - Содержание + Содержание + File contains - Содержание файла + Содержание файла + Properties - Свойства + Свойства + File Size - Размер файла + Размер файла + Bigger than: - Больше чем: + Больше чем: + Smaller than: - Меньше чем: + Меньше чем: + Last Modified Time - Время последнего изменения + Время последнего изменения + Earlier than: - Раньше чем: + Раньше чем: + Later than: - Позже чем: + Позже чем: MainWindow - + File Manager Диспетчер файлов - + + Folder + Папка + + + + Ctrl+Shift+N + + + + + Blank File + Пустой файл + + + + Ctrl+Alt+N + + + + &File &Файл - + + C&reate New + С&оздать новое + + + &Help &Справка - + &View &Вид - + &Sorting &Сортировка - + &Edit &Правка - + &Bookmarks &Закладки - + &Go &Перейти - + &Tool &Инструмент - + Main Toolbar Главная панель инструментов - + Go &Up Перейти &вверх - + Go Up Перейти вверх - + Alt+Up - + Home Домой - + Alt+Home - + &Reload &Обновить - + F5 - + Go Перейти - + Quit Выйти - + &About &О программе - + &New Window &Новое окно - + New Window Новое окно - + Ctrl+N - + Show &Hidden Показать &скрытые - + Ctrl+H - + &Computer &Компьютер - + &Trash &Корзина - + &Network &Сеть - + &Desktop &Рабочий стол - + &Add to Bookmarks &Добавить в закладки - + &Applications &Приложения - + Reload Обновить - + &Icon View Просмотр &значками - + &Compact View &Компактный просмотр - + &Detailed List Просмотр &подробным списком - + &Thumbnail View Просмотр &эскизами - + Cu&t &Вырезать - + Ctrl+X - + &Copy &Копировать - + Ctrl+C - + &Paste &Вставить - + Ctrl+V - + Select &All Выделить &всё - + Ctrl+A - + Pr&eferences &Настройки - + Ascending По возрастанию - + Descending По убыванию - + By File Name По имени файла - + By Modification Time По времени изменения - + By File Type По типу файла - + By Owner По владельцу - + Folder First Сначала папки - + New &Tab Новая &вкладка - + New Tab Новая вкладка - + Ctrl+T - + Go &Back Перейти &назад - + Go Back Перейти назад - + Alt+Left - + Go &Forward Перейти &вперёд - + Go Forward Перейти вперёд - + Alt+Right - + &Invert Selection &Инвертировать выделение - + &Delete &Удалить - + Del - + &Rename &Переименовать - + F2 - + C&lose Tab &Закрыть вкладку - + Ctrl+W - + File &Properties &Свойства файла - + Alt+Return - + &Folder Properties &Свойства папки - + Case Sensitive Регистрочувствительная - + By File Size По размеру файла - + Close Window Закрыть окно - + Edit Bookmarks Изменить закладки - + Open &Terminal Открыть &терминал - + F4 - + Open as &Root Открыть от имени &суперпользователя - + &Edit Bookmarks &Изменить закладки @@ -704,99 +759,99 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::Application - + Name of configuration profile Имя профиля конфигурации - + PROFILE ПРОФИЛЬ - + Run PCManFM as a daemon Запустить PCManFM как демон - + Quit PCManFM Выйти из PCManFM - + Launch desktop manager Запустить менеджер рабочего стола - + Turn off desktop manager if it's running Отключить менеджер рабочего стола, если он запущен - + Open desktop preference dialog on the page with the specified name Открыть диалог настроек рабочего стола на странице с указанным именем - - + + NAME ИМЯ - + Set desktop wallpaper from image FILE Выбрать обои рабочего стола из ФАЙЛА изображения - + FILE ФАЙЛ - + Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Выбрать режим обоев рабочего стола. РЕЖИМ=(цвет|растянуть|вместить|по центру|черепицей) - + MODE РЕЖИМ - + Open Preferences dialog on the page with the specified name Открыть диалог настроек на странице с указанным именем - + Open new window Открыть новое окно - + Open Find Files utility Открыть утилиту поиска файлов - + [FILE1, FILE2,...] [ФАЙЛ1, ФАЙЛ2,...] - + Files or directories to open - + Файлы или папки для открытия - - + + Error Ошибка - + Terminal emulator is not set. Эмулятор терминала не указан. @@ -817,32 +872,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog - + Fill with background color only Заполнить только цветом фона - + Stretch to fill the entire screen Растянуть по всему экрану - + Stretch to fit the screen Растянуть по размеру экрана - + Center on the screen По центру экрана - + Tile the image to fill the entire screen Плиточное заполнение всего экрана изображением - + Image Files Файлы изображений @@ -850,12 +905,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow - + Stic&k to Current Position &Прикрепить к текущему положению - + Desktop Preferences Настройки рабочего стола @@ -863,28 +918,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow - + Version: %1 Версия: %1 - + &Move to Trash &Переместить в корзину - + &Delete &Удалить - - + + Error Ошибка - + Switch user command is not set. Команда переключения пользователя не задана. @@ -892,22 +947,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog - + Icon View Просмотр значками - + Compact Icon View Просмотр компактными значками - + Thumbnail View Просмотр эскизами - + Detailed List View Просмотр подробным списком @@ -928,18 +983,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< %n item(s) - %n объекта(ов) - - + %n объект + %n объекта + %n объектов (%n hidden) + (%n скрыт) + (%n скрыто) (%n скрыто) - - @@ -951,17 +1006,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::View - + Open in New T&ab Открыть в новой &вкладке - + Open in New Win&dow Открыть в новом &окне - + Open in Termina&l Открыть в &терминале @@ -969,219 +1024,340 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog - + Preferences Настройки - + User Interface Интерфейс пользователя - + Behavior Поведение - + + Thumbnail Эскизы - + Volume Том - + Advanced Расширенные - + Icons Значки - + Size of big icons: Размер больших значков: - + Size of small icons: Размер маленьких значков: - + Size of thumbnails: Размер значков: - + Size of side pane icons: Размер значков боковой панели: - + Icon theme: Тема значков: - + Window Окно - + Always show the tab bar Всегда показывать панель вкладок - + Show 'Close' buttons on tabs Показывать кнопку «Закрыть» на вкладках - + Remember the size of the last closed window Запоминать размер последнего закрытого окна - + Default width of new windows: Ширина новых окон по умолчанию: - + Default height of new windows: Высота новых окон по умолчанию: - + Browsing Просмотр - + Open files with single click Открывать файлы по одиночному щелчку мыши - + Delay of auto-selection in single click mode (0 to disable) Задержка автовыделения в режиме одиночного щелчка (0 для отключения) - + Default view mode: Режим просмотра по умолчанию: - + sec сек - + File Operations Операции с файлами - + Confirm before deleting files Подтверждение перед удалением файлов - + Move deleted files to "trash bin" instead of erasing from disk. Перемещать удалённые файлы в корзину вместо удаления их с диска. - + Show thumbnails of files Показывать эскизы файлов - + Only show thumbnails for local files Показывать эскизы только для локальных файлов - + + Display + Вид + + + + Bookmarks: + Закладки: + + + + Open in current tab + Открывать в текущей вкладке + + + + Open in new tab + Открывать в новой вкладке + + + + Open in new window + Открывать в новом окне + + + + Erase files on removable media instead of "trash can" creation + Удалять файлы на съёмных носителях вместо создания «Корзины» + + + + Confirm before moving files into "trash can" + Просить подтверждения перед удалением файлов в «Корзину» + + + + Don't ask options on launch executable file + Не предлагать варианты запуска исполняемых файлов + + + + User interface + Интерфейс пользователя + + + + Treat backup files as hidden + Рассматривать резервные файлы как скрытые + + + + Always show full file names + Всегда показывать полные имена файлов + + + + Show icons of hidden files shadowed + Показывать значки скрытых файлов затенёнными + + + + Show in places + Показвать в «Местах» + + + + Home + Домой + + + + Desktop + Рабочий стол + + + + Trash can + Корзина + + + + Computer + Компьютер + + + + Applications + Приложения + + + + Devices + Устройства + + + + Network + Сеть + + + Do not generate thumbnails for image files exceeding this size: Не создавать эскизы для файлов изображений больше чем: - + KB КБ - + Auto Mount Автоподключение - + Mount mountable volumes automatically on program startup Подключать съёмные тома автоматически при запуске программы - + Mount removable media automatically when they are inserted Подключать съёмные тома автоматически при их подключении - + Show available options for removable media when they are inserted Показывать доступные варианты для съёмных устройств при их вставлении - + When removable medium unmounted: При отключении съёмного устройства: - - Close tab containing removable medium - Закрыть вкладку, отображающую съёмное устройство + + Close &tab containing removable medium + Закрыть &вкладку, отображающую содержимого съёмного носителя + + + + Chan&ge folder in the tab to home folder + Изме&нить папку во вкладке на домашнюю + + + + Switch &user command: + Команда смены &пользователя: + + + + Archiver in&tegration: + Ин&теграция с архиваторами: - - Change folder in the tab to home folder - Сменить папку во вкладке на домашний каталог + + Templates + Шаблоны - + + Show only user defined templates in menu + Показывать только шаблоны, определённые пользователем, в меню + + + + Show only one template for each MIME type + Показывать только один шаблон для каждого типа MIME + + + + Run default application after creation from template + Запускать приложение по умолчанию после создания шаблона + + + Programs Программы - + Terminal emulator: Эмулятор терминала: - - Switch user command: - Команда переключения пользователя: - - - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Примеры: "xterm -e %s" для терминала или "gksu %s" для переключения пользователя. %s = командная строка,которую вы хотите выполнить с терминалом или su. - - Archiver integration: - Интеграция архиватора: - - - + Use SI decimal prefixes instead of IEC binary prefixes Использовать десятичные префиксы СИ вместо двоичных префиксов IEC diff --git a/pcmanfm/translations/pcmanfm-qt_ru_RU.ts b/pcmanfm/translations/pcmanfm-qt_ru_RU.ts index 230fe65..6291200 100644 --- a/pcmanfm/translations/pcmanfm-qt_ru_RU.ts +++ b/pcmanfm/translations/pcmanfm-qt_ru_RU.ts @@ -4,32 +4,32 @@ AboutDialog - + About О программе - + <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> - + Lightweight file manager Легковесный диспетчер файлов - + <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> - + Authors Авторы - + Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> @@ -38,12 +38,12 @@ - + License Лицензия - + PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) @@ -67,27 +67,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< AutoRunDialog - + Removable medium is inserted Вставлен съёмный носитель - + <b>Removable medium is inserted</b> <b>Вставлен съёмный носитель</b> - + Type of medium: Тип носителя: - + Detecting... Обнаружение... - + Please select the action you want to perform: Выберите действие, которое хотите совершить: @@ -95,99 +95,99 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< DesktopPreferencesDialog - + Desktop Preferences Настройки рабочего стола - + General Общие - + Background Фон - + Wallpaper mode: Режим обоев: - + Wallpaper image file: Файл изображения обоев: - + Select background color: Выбрать цвет фона: - - + + Image file Файл изображения - + Image file path Путь к файлу изображения - - + + &Browse &Обзор - + Label Text Текст ярлыков - + Select text color: Выбрать цвет текста: - + Select shadow color: Выбрать цвет тени: - + Select font: Выбрать шрифт: - + Window Manager - + Оконный менеджер - + Desktop - + Рабочий стол - + Desktop folder: - + Папка рабочего стола: - + Folder path - + Путь к папке - + Advanced Расширенные - + Show menus provided by window managers when desktop is clicked Показывать меню, предоставляемые оконными менеджерами по клику на рабочий стол @@ -195,508 +195,563 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< FindFilesDialog + Find Files - Найnb файлы + Найnb файлы + Name/Location - Имя/расположение + Имя/расположение + File name patterns - Шаблоны имён файлов + Шаблоны имён файлов + Pattern: - Шаблон: + Шаблон: + + Case insensitive - Регистрочувствительный + Регистрочувствительный + + Use regular expression - Использовать регулярные выражения + Использовать регулярные выражения + Places to search - Места поиска + Места поиска + Add - Добавить + Добавить + Remove - Удалить + Удалить + Search in sub directories - Искать в подпапках + Искать в подпапках + Search hidden files - Искать скрытые файлы + Искать скрытые файлы + + File Type - Тип файла + Тип файла + Only search for files of following types: - Искать только следующие типы файлов: + Искать только следующие типы файлов: + Text files - Текстовые файлы + Текстовые файлы + Image files - Файлы изображений + Файлы изображений + Audio files - Аудиофайлы + Аудиофайлы + Video files - Видеофайлы + Видеофайлы + Documents - Документы + Документы + Content - Содержание + Содержание + File contains - Содержание файла + Содержание файла + Properties - Свойства + Свойства + File Size - Размер файла + Размер файла + Bigger than: - Больше чем: + Больше чем: + Smaller than: - Меньше чем: + Меньше чем: + Last Modified Time - Время последнего изменения + Время последнего изменения + Earlier than: - Раньше чем: + Раньше чем: + Later than: - Позже чем: + Позже чем: MainWindow - + File Manager Диспетчер файлов - + + Folder + Папка + + + + Ctrl+Shift+N + + + + + Blank File + Пустой файл + + + + Ctrl+Alt+N + + + + &File &Файл - + + C&reate New + С&оздать новое + + + &Help &Справка - + &View &Вид - + &Sorting &Сортировка - + &Edit &Правка - + &Bookmarks &Закладки - + &Go &Перейти - + &Tool &Инструмент - + Main Toolbar Главная панель инструментов - + Go &Up Перейти &вверх - + Go Up Перейти вверх - + Alt+Up - + Home Домой - + Alt+Home - + &Reload &Обновить - + F5 - + Go Перейти - + Quit Выйти - + &About &О программе - + &New Window &Новое окно - + New Window Новое окно - + Ctrl+N - + Show &Hidden Показать &скрытые - + Ctrl+H - + &Computer &Компьютер - + &Trash &Корзина - + &Network &Сеть - + &Desktop &Рабочий стол - + &Add to Bookmarks &Добавить в закладки - + &Applications &Приложения - + Reload Обновить - + &Icon View Просмотр &значками - + &Compact View &Компактный просмотр - + &Detailed List Просмотр &подробным списком - + &Thumbnail View Просмотр &эскизами - + Cu&t &Вырезать - + Ctrl+X - + &Copy &Копировать - + Ctrl+C - + &Paste &Вставить - + Ctrl+V - + Select &All Выделить &всё - + Ctrl+A - + Pr&eferences &Настройки - + Ascending По возрастанию - + Descending По убыванию - + By File Name По имени файла - + By Modification Time По времени изменения - + By File Type По типу файла - + By Owner По владельцу - + Folder First Сначала папки - + New &Tab Новая &вкладка - + New Tab Новая вкладка - + Ctrl+T - + Go &Back Перейти &назад - + Go Back Перейти назад - + Alt+Left - + Go &Forward Перейти &вперёд - + Go Forward Перейти вперёд - + Alt+Right - + &Invert Selection &Инвертировать выделение - + &Delete &Удалить - + Del - + &Rename &Переименовать - + F2 - + C&lose Tab &Закрыть вкладку - + Ctrl+W - + File &Properties &Свойства файла - + Alt+Return - + &Folder Properties &Свойства папки - + Case Sensitive Регистрочувствительная - + By File Size По размеру файла - + Close Window Закрыть окно - + Edit Bookmarks Изменить закладки - + Open &Terminal Открыть &терминал - + F4 - + Open as &Root Открыть от имени &суперпользователя - + &Edit Bookmarks &Изменить закладки @@ -704,99 +759,99 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::Application - + Name of configuration profile Имя профиля конфигурации - + PROFILE ПРОФИЛЬ - + Run PCManFM as a daemon Запустить PCManFM как демон - + Quit PCManFM Выйти из PCManFM - + Launch desktop manager Запустить менеджер рабочего стола - + Turn off desktop manager if it's running Отключить менеджер рабочего стола, если он запущен - + Open desktop preference dialog on the page with the specified name Открыть диалог настроек рабочего стола на странице с указанным именем - - + + NAME ИМЯ - + Set desktop wallpaper from image FILE Выбрать обои рабочего стола из ФАЙЛА изображения - + FILE ФАЙЛ - + Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Выбрать режим обоев рабочего стола. РЕЖИМ=(цвет|растянуть|вместить|по центру|черепицей) - + MODE РЕЖИМ - + Open Preferences dialog on the page with the specified name Открыть диалог настроек на странице с указанным именем - + Open new window Открыть новое окно - + Open Find Files utility Открыть утилиту поиска файлов - + [FILE1, FILE2,...] [ФАЙЛ1, ФАЙЛ2,...] - + Files or directories to open - + Файлы или папки для открытия - - + + Error Ошибка - + Terminal emulator is not set. Эмулятор терминала не указан. @@ -817,32 +872,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog - + Fill with background color only Заполнить только цветом фона - + Stretch to fill the entire screen Растянуть по всему экрану - + Stretch to fit the screen Растянуть по размеру экрана - + Center on the screen По центру экрана - + Tile the image to fill the entire screen Плиточное заполнение всего экрана изображением - + Image Files Файлы изображений @@ -850,12 +905,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow - + Stic&k to Current Position &Прикрепить к текущему положению - + Desktop Preferences Настройки рабочего стола @@ -863,28 +918,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow - + Version: %1 Версия: %1 - + &Move to Trash &Переместить в корзину - + &Delete &Удалить - - + + Error Ошибка - + Switch user command is not set. Команда переключения пользователя не задана. @@ -892,22 +947,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog - + Icon View Просмотр значками - + Compact Icon View Просмотр компактными значками - + Thumbnail View Просмотр эскизами - + Detailed List View Просмотр подробным списком @@ -928,18 +983,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< %n item(s) - %n объекта(ов) - - + %n объект + %n объекта + %n объектов (%n hidden) + (%n скрыт) + (%n скрыто) (%n скрыто) - - @@ -951,17 +1006,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::View - + Open in New T&ab Открыть в новой &вкладке - + Open in New Win&dow Открыть в новом &окне - + Open in Termina&l Открыть в &терминале @@ -969,219 +1024,340 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog - + Preferences Настройки - + User Interface Интерфейс пользователя - + Behavior Поведение - + + Thumbnail Эскизы - + Volume Том - + Advanced Расширенные - + Icons Значки - + Size of big icons: Размер больших значков: - + Size of small icons: Размер маленьких значков: - + Size of thumbnails: Размер значков: - + Size of side pane icons: Размер значков боковой панели: - + Icon theme: Тема значков: - + Window Окно - + Always show the tab bar Всегда показывать панель вкладок - + Show 'Close' buttons on tabs Показывать кнопку «Закрыть» на вкладках - + Remember the size of the last closed window Запоминать размер последнего закрытого окна - + Default width of new windows: Ширина новых окон по умолчанию: - + Default height of new windows: Высота новых окон по умолчанию: - + Browsing Просмотр - + Open files with single click Открывать файлы по одиночному щелчку мыши - + Delay of auto-selection in single click mode (0 to disable) Задержка автовыделения в режиме одиночного щелчка (0 для отключения) - + Default view mode: Режим просмотра по умолчанию: - + sec сек - + File Operations Операции с файлами - + Confirm before deleting files Подтверждение перед удалением файлов - + Move deleted files to "trash bin" instead of erasing from disk. Перемещать удалённые файлы в корзину вместо удаления их с диска. - + Show thumbnails of files Показывать эскизы файлов - + Only show thumbnails for local files Показывать эскизы только для локальных файлов - + + Display + Вид + + + + Bookmarks: + Закладки: + + + + Open in current tab + Открывать в текущей вкладке + + + + Open in new tab + Открывать в новой вкладке + + + + Open in new window + Открывать в новом окне + + + + Erase files on removable media instead of "trash can" creation + Удалять файлы на съёмных носителях вместо создания «Корзины» + + + + Confirm before moving files into "trash can" + Просить подтверждения перед удалением файлов в «Корзину» + + + + Don't ask options on launch executable file + Не предлагать варианты запуска исполняемых файлов + + + + User interface + Интерфейс пользователя + + + + Treat backup files as hidden + Рассматривать резервные файлы как скрытые + + + + Always show full file names + Всегда показывать полные имена файлов + + + + Show icons of hidden files shadowed + Показывать значки скрытых файлов затенёнными + + + + Show in places + Показвать в «Местах» + + + + Home + Домой + + + + Desktop + Рабочий стол + + + + Trash can + Корзина + + + + Computer + Компьютер + + + + Applications + Приложения + + + + Devices + Устройства + + + + Network + Сеть + + + Do not generate thumbnails for image files exceeding this size: Не создавать эскизы для файлов изображений больше чем: - + KB КБ - + Auto Mount Автоподключение - + Mount mountable volumes automatically on program startup Подключать съёмные тома автоматически при запуске программы - + Mount removable media automatically when they are inserted Подключать съёмные тома автоматически при их подключении - + Show available options for removable media when they are inserted Показывать доступные варианты для съёмных устройств при их вставлении - + When removable medium unmounted: При отключении съёмного устройства: - - Close tab containing removable medium - Закрыть вкладку, отображающую съёмное устройство + + Close &tab containing removable medium + Закрыть &вкладку, отображающую содержимого съёмного носителя + + + + Chan&ge folder in the tab to home folder + Изме&нить папку во вкладке на домашнюю + + + + Switch &user command: + Команда смены &пользователя: + + + + Archiver in&tegration: + Ин&теграция с архиваторами: - - Change folder in the tab to home folder - Сменить папку во вкладке на домашний каталог + + Templates + Шаблоны - + + Show only user defined templates in menu + Показывать только шаблоны, определённые пользователем, в меню + + + + Show only one template for each MIME type + Показывать только один шаблон для каждого типа MIME + + + + Run default application after creation from template + Запускать приложение по умолчанию после создания шаблона + + + Programs Программы - + Terminal emulator: Эмулятор терминала: - - Switch user command: - Команда переключения пользователя: - - - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Примеры: "xterm -e %s" для терминала или "gksu %s" для переключения пользователя. %s = командная строка,которую вы хотите выполнить с терминалом или su. - - Archiver integration: - Интеграция архиватора: - - - + Use SI decimal prefixes instead of IEC binary prefixes Использовать десятичные префиксы СИ вместо двоичных префиксов IEC diff --git a/pcmanfm/translations/pcmanfm-qt_zh_TW.ts b/pcmanfm/translations/pcmanfm-qt_zh_TW.ts index d6954f3..796da31 100644 --- a/pcmanfm/translations/pcmanfm-qt_zh_TW.ts +++ b/pcmanfm/translations/pcmanfm-qt_zh_TW.ts @@ -193,167 +193,192 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< MainWindow - + File Manager 檔案管理程式 - + Go Up 往上一層 - + Alt+Up - + Home 家目錄 - + Alt+Home - + Reload 重新讀取 - + F5 - + Go &Up 上一層(&U) - + &Reload 重新讀取(&) - + Go - + Quit 離開 - + &About 關於(&A) - + &New Window 新視窗(&N) - + New Window 新視窗 - + Ctrl+N - + Show &Hidden 顯示隱藏檔(&H) - + Ctrl+H - + &Computer 電腦(&C) - + &Trash 垃圾桶(&T) - + &Network 網路(&N) - + &Desktop 桌面(&D) - + &Add to Bookmarks 加入到書籤(&A) - + &Applications 應用程式(&A) - + &Icon View 圖示檢視(&I) - + &Compact View 簡易檢視(&C) - + &Detailed List 詳細清單(&D) - + &Thumbnail View 縮圖檢視(&T) - + Cu&t 剪下(&T) - + C&lose Tab 關閉(&L) - + File &Properties 檔案屬性(&P) - + &Folder Properties 資料夾屬性(&F) - + + Folder + + + + + Ctrl+Shift+N + + + + + Blank File + + + + + Ctrl+Alt+N + + + + + C&reate New + + + + &Sorting 排序(&S) - + Main Toolbar @@ -378,52 +403,52 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 剪下(&C) - + Ctrl+X - + &Copy 複製(&C) - + Ctrl+C - + &Paste 貼上(&P) - + Ctrl+V - + Select &All 全選(&A) - + Pr&eferences 偏好設定(&R) - + &Invert Selection 反向選取(&I) - + &Delete 刪除(&D) - + &Rename 重新命名(&R) @@ -432,7 +457,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 全選 - + Ctrl+A @@ -441,82 +466,82 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 偏好設定 - + Ascending 升冪排列 - + Descending 降冪排列 - + By File Name 依照檔名 - + By Modification Time 依照修改時間 - + By File Type 依照檔案類型 - + By Owner 依照檔案擁有者 - + Folder First 資料夾優先 - + New &Tab 新分頁(&T) - + New Tab 新分頁 - + Ctrl+T - + Go &Back 後退(&B) - + Go Back 後退 - + Alt+Left - + Go &Forward 前進(&F) - + Go Forward 前進 - + Alt+Right @@ -529,7 +554,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 刪除 - + Del @@ -538,7 +563,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 重新命名 - + F2 @@ -547,7 +572,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 關閉分頁 - + Ctrl+W @@ -556,7 +581,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 檔案屬性 - + Alt+Return @@ -565,57 +590,57 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 資料夾屬性 - + Case Sensitive 區分大小寫 - + By File Size 依照檔案大小 - + Close Window 關閉視窗 - + Edit Bookmarks 編輯書籤 - + Open &Terminal 開啟終端機(&T) - + F4 - + Open as &Root 以系統管理員權限開啟(&R) - + &Edit Bookmarks 編輯書籤(&E) - + &File 檔案(&F) - + &Help 說明(&H) - + &View 檢視(&V) @@ -624,22 +649,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 排序 - + &Edit 編輯(&E) - + &Bookmarks 書籤(&B) - + &Go 前往(&G) - + &Tool 工具(&T) @@ -760,32 +785,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopPreferencesDialog - + Fill with background color only 只以背景色填滿 - + Stretch to fill the entire screen 延展以填滿整個螢幕 - + Stretch to fit the screen 延展到最適合螢幕大小 - + Center on the screen 置於螢幕中央 - + Tile the image to fill the entire screen 連續拼貼鋪滿整個螢幕 - + Image Files 影像檔案 @@ -793,12 +818,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::DesktopWindow - + Stic&k to Current Position - + Desktop Preferences 桌面偏好設定 @@ -806,28 +831,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::MainWindow - + Version: %1 - + &Move to Trash 移動到垃圾桶(&M) - + &Delete 刪除(&D) - - + + Error 錯誤 - + Switch user command is not set. 切換使用者指令尚未設定 @@ -839,22 +864,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PCManFM::PreferencesDialog - + Icon View 圖示檢視 - + Compact Icon View 簡易檢視 - + Thumbnail View 縮圖檢視 - + Detailed List View 詳細清單檢視 @@ -912,172 +937,172 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< PreferencesDialog - + Preferences 偏好設定 - + User Interface 使用者界面 - + Behavior 行為 - + Thumbnail 縮圖 - + Volume 磁碟 - + Advanced 進階 - + Icons 圖示 - + Size of big icons: 大圖示尺寸: - + Size of small icons: 小圖示尺寸: - + Size of thumbnails: 縮圖尺寸: - + Size of side pane icons: 側邊欄圖示尺寸: - + Icon theme: 圖示佈景主題: - + Window 視窗 - + Default width of new windows: 新視窗的預設寬度 - + Default height of new windows: 新視窗的預設高度 - + Always show the tab bar 總是顯示標籤列 - + Show 'Close' buttons on tabs 在分頁標籤上顯示「關閉」按鈕 - + Remember the size of the last closed window - + Browsing 瀏覽 - + Open files with single click 單擊開啟檔案 - + Delay of auto-selection in single click mode (0 to disable) - + Default view mode: 預設檢視模式: - + sec - + File Operations 檔案操作 - + Confirm before deleting files 刪除檔案前確認 - + Move deleted files to "trash bin" instead of erasing from disk. 將檔案移動到垃圾桶,而不直接刪除 - + Show thumbnails of files 顯示檔案縮圖 - + Only show thumbnails for local files 只顯示本地檔案的縮圖 - + Do not generate thumbnails for image files exceeding this size: - + KB - + When removable medium unmounted: - - Close tab containing removable medium + + Switch &user command: - - Change folder in the tab to home folder + + Archiver in&tegration: - + Terminal emulator: @@ -1086,27 +1111,37 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 不為超過指定大小的檔案產生縮圖 (KB) - + Auto Mount 自動掛載 - + Mount mountable volumes automatically on program startup 掛載可掛載的磁碟 - + Mount removable media automatically when they are inserted 可移除式媒體插入時自動掛載 - + Show available options for removable media when they are inserted 可移除式媒體插入時顯示可用的選項 - + + Close &tab containing removable medium + + + + + Chan&ge folder in the tab to home folder + + + + Programs 程式 @@ -1115,28 +1150,26 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.< 用來開啟目錄的終端機模擬器指令: - Switch user command: - 切換使用者的指令: + 切換使用者的指令: - + Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. 範例: 終端機指令可用 "xterm -e %s"而切換使用者指令可用 "gksu %s"。 %s = 想要用終端機或是切換使用者執行的指令。 - Archiver integration: - 壓縮程式整合: + 壓縮程式整合: Terminal emulator command for programs: 用來執行程式的終端機模擬器指令: - + Use SI decimal prefixes instead of IEC binary prefixes diff --git a/pcmanfm/view.cpp b/pcmanfm/view.cpp index 0766a9b..741d7a0 100644 --- a/pcmanfm/view.cpp +++ b/pcmanfm/view.cpp @@ -77,12 +77,13 @@ void View::onOpenInTerminal() { } void View::onSearch() { - + } void View::prepareFileMenu(Fm::FileMenu* menu) { Application* app = static_cast(qApp); menu->setConfirmDelete(app->settings().confirmDelete()); + menu->setConfirmTrash(app->settings().confirmTrash()); menu->setUseTrash(app->settings().useTrash()); // add some more menu items for dirs @@ -98,7 +99,7 @@ void View::prepareFileMenu(Fm::FileMenu* menu) { // hide "Open with" for selected dirs menu->openWithMenuAction()->setVisible(false); - + QAction* action = new QAction(QIcon::fromTheme("window-new"), tr("Open in New T&ab"), menu); connect(action, &QAction::triggered, this, &View::onNewTab); menu->insertAction(menu->separator1(), action); diff --git a/pcmanfm/view.h b/pcmanfm/view.h index 9727ccd..79286dc 100644 --- a/pcmanfm/view.h +++ b/pcmanfm/view.h @@ -36,12 +36,6 @@ class View : public Fm::FolderView { Q_OBJECT public: - enum OpenDirTargetType { - OpenInCurrentView, - OpenInNewWindow, - OpenInNewTab - }; - explicit View(Fm::FolderView::ViewMode _mode = IconMode, QWidget* parent = 0); virtual ~View(); @@ -62,7 +56,7 @@ protected: virtual void prepareFolderMenu(Fm::FolderMenu* menu); private: - + }; }; diff --git a/pcmanfm/xdgdir.cpp b/pcmanfm/xdgdir.cpp new file mode 100644 index 0000000..b626efd --- /dev/null +++ b/pcmanfm/xdgdir.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2013 Hong Jen Yee (PCMan) + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "xdgdir.h" +#include +#include +#include +#include + +QString XdgDir::readUserDirsFile() { + QFile file(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/user-dirs.dirs")); + if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QByteArray data = file.readAll(); + file.close(); + return QString::fromLocal8Bit(data); + } + return QString(); +} + +QString XdgDir::readDesktopDir() { + QString str = readUserDirsFile(); + if(str.isEmpty()) + return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + QStringLiteral("/Desktop"); + QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\"")); + if(reg.lastIndexIn(str) != -1) { + str = reg.cap(1); + if(str.startsWith(QStringLiteral("$HOME"))) + str = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + str.mid(5); + return str; + } + return QString(); +} + +void XdgDir::setDesktopDir(QString path) { + QString home = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); + if(path.startsWith(home)) + path = QStringLiteral("$HOME") + path.mid(home.length()); + QString str = readUserDirsFile(); + QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\"")); + QString line = QStringLiteral("XDG_DESKTOP_DIR=\"") + path + '\"'; + if(reg.indexIn(str) != -1) + str.replace(reg, line); + else { + if(!str.endsWith('\n')) + str += '\n'; + str += line + '\n'; + } + QString dir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); + if(QDir().mkpath(dir)) { // write the file + QSaveFile file(dir + QStringLiteral("/user-dirs.dirs")); + if(file.open(QIODevice::WriteOnly | QIODevice::Text)) { + file.write(str.toLocal8Bit()); + file.commit(); + } + } +} + diff --git a/pcmanfm/xdgdir.h b/pcmanfm/xdgdir.h new file mode 100644 index 0000000..8a56539 --- /dev/null +++ b/pcmanfm/xdgdir.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2013 Hong Jen Yee (PCMan) + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include + +class XdgDir : public QObject +{ + Q_OBJECT + +public: + static QString readDesktopDir(); + + static void setDesktopDir(QString path); + +private: + static QString readUserDirsFile(); +};