Merge branch 'upstream' into debian

* upstream:
  Imported Upstream version 0.9.0+20150816
ubuntu/disco
ChangZhuo Chen (陳昌倬) 9 years ago
commit cd3b23dcbb

@ -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)

@ -0,0 +1,107 @@
#=============================================================================
# The lxqt_translate_desktop() function was copied from the the
# LXQt LxQtTranste.cmake
#
# Original Author: Alexander Sokolov <sokoloff.a@gmail.com>
#
# funtion lxqt_translate_desktop(_RESULT
# SOURCES <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}_<lang>${_fileExt}'\n"
"echo ''\n"
)
endforeach()
set(${_RESULT} ${__result} PARENT_SCOPE)
endfunction(lxqt_translate_desktop)

@ -0,0 +1,131 @@
#=============================================================================
# Copyright 2014 Luís Pereira <luis.artur.pereira@gmail.com>
#
# 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 <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()

@ -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()

@ -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

@ -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<void*>(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;

@ -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_;
};
}

@ -23,7 +23,7 @@
#include <X11/Xlib.h>
typedef struct _FmAppLaunchContext {
GAppLaunchContext parent;
GAppLaunchContext parent;
}FmAppLaunchContext;
G_DEFINE_TYPE(FmAppLaunchContext, fm_app_launch_context, G_TYPE_APP_LAUNCH_CONTEXT)

@ -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);

@ -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;
}

@ -40,7 +40,7 @@ public:
FmBookmarkItem* bookmark() {
return item_;
}
FmPath* path() {
return item_->path;
}

@ -61,7 +61,7 @@ public:
scrollPos_ = other.scrollPos_;
return *this;
}
FmPath* path() const {
return path_;
}

@ -25,7 +25,7 @@
#include "foldermodel.h"
namespace Fm {
class LIBFM_QT_API CachedFolderModel : public FolderModel {
Q_OBJECT
public:

@ -39,7 +39,7 @@ public:
QColor color() const {
return color_;
}
Q_SIGNALS:
void changed();

@ -0,0 +1,90 @@
/*
Menu with entries to create new folders and files.
Copyright (C) 2012 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
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<QAction*>(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

@ -0,0 +1,51 @@
/*
Menu with entries to create new folders and files.
Copyright (C) 2012 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
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 <QMenu>
#include <libfm/fm.h>
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

@ -30,7 +30,7 @@
#include <libfm/fm.h>
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;

@ -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 */

@ -43,7 +43,7 @@ public:
void loadFolder();
void unloadFolder();
bool isPlaceHolder() {
return (fileInfo_ == NULL);
}

@ -23,8 +23,10 @@
#include <QDebug>
#include <QItemSelection>
#include <QGuiApplication>
#include <QMouseEvent>
#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<FmFileInfo*>(data.value<void*>());
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<void*>(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<QAction*>(sender())) {
setCurrentIndex(action->data().toModelIndex());
}
}
void DirTreeView::onNewWindow() {
if(QAction* action = qobject_cast<QAction*>(sender())) {
FmPath* path = reinterpret_cast<FmPath*>(action->data().value<void*>());
Q_EMIT openFolderInNewWindowRequested(path);
}
}
void DirTreeView::contextMenuEvent(QContextMenuEvent* event) {
QAbstractScrollArea::contextMenuEvent(event);
void DirTreeView::onNewTab() {
if(QAction* action = qobject_cast<QAction*>(sender())) {
FmPath* path = reinterpret_cast<FmPath*>(action->data().value<void*>());
Q_EMIT openFolderInNewTabRequested(path);
}
}
void DirTreeView::onOpenInTerminal() {
if(QAction* action = qobject_cast<QAction*>(sender())) {
FmPath* path = reinterpret_cast<FmPath*>(action->data().value<void*>());
Q_EMIT openFolderInTerminalRequested(path);
}
}
void DirTreeView::onNewFolder() {
if(QAction* action = qobject_cast<QAction*>(sender())) {
FmPath* path = reinterpret_cast<FmPath*>(action->data().value<void*>());
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)

@ -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_;

@ -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;

@ -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<FmBookmarkItem*>(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);

@ -42,7 +42,7 @@ public:
private Q_SLOTS:
void onAddItem();
void onRemoveItem();
private:
Ui::EditBookmarksDialog* ui;
FmBookmarks* bookmarks_;

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>407</width>
<height>396</height>
<width>424</width>
<height>456</height>
</rect>
</property>
<property name="windowTitle">
@ -19,7 +19,16 @@
</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="margin">
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>10</number>
</property>
<item>
@ -86,6 +95,9 @@
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="3" column="0">
@ -106,6 +118,9 @@
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="4" column="0">
@ -126,6 +141,9 @@
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="6" column="0">
@ -146,6 +164,9 @@
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="7" column="0">
@ -166,6 +187,9 @@
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="8" column="0">
@ -186,6 +210,9 @@
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="2" column="0">
@ -209,6 +236,9 @@
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="5" column="0">
@ -216,6 +246,9 @@
<property name="text">
<string>Open With:</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="5" column="1">
@ -240,6 +273,9 @@
<property name="text">
<string/>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>

@ -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) {

@ -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
};
}

@ -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"));
}
}

@ -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_;

@ -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.

@ -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;

@ -38,7 +38,7 @@ Q_OBJECT
public:
explicit FileOperationDialog(FileOperation* _operation);
virtual ~FileOperationDialog();
void setSourceFiles(FmPathList* srcFiles);
void setDestPath(FmPath* dest);

@ -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);

@ -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

@ -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);
}
}
}

@ -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_;

@ -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<QAction*>(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

@ -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_;

@ -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<FolderModel*>(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<FolderModel*>(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<FolderModelItem>::iterator FolderModel::findItemByPath(FmPath* path, int* row) {
QList<FolderModelItem>::iterator it = items.begin();
@ -310,7 +309,7 @@ QList<FolderModelItem>::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<FolderModelItem>::iterator FolderModel::findItemByName(const char* name, int* row) {
QList<FolderModelItem>::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;
}

@ -1,17 +1,17 @@
/*
*
*
* Copyright (C) 2012 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
*
*
* 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

@ -1,17 +1,17 @@
/*
*
*
* Copyright (C) 2012 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
*
*
* 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

@ -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<ProxyFolderModel*>(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<QSortFilterProxyModel*>(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;
}
}
}

@ -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<FolderModel*>(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

@ -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_;

@ -36,12 +36,12 @@ public:
QFont font() {
return font_;
}
void setFont(QFont font);
Q_SIGNALS:
void changed();
private Q_SLOTS:
void onClicked();

@ -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

@ -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;

@ -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);

@ -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<MountOperation>(this));
@ -53,7 +53,7 @@ public:
}
void mount(GVolume* volume) {
g_volume_mount(volume, G_MOUNT_MOUNT_NONE, op, cancellable_, (GAsyncReadyCallback)onMountVolumeFinished, new QPointer<MountOperation>(this));
g_volume_mount(volume, G_MOUNT_MOUNT_NONE, op, cancellable_, (GAsyncReadyCallback)onMountVolumeFinished, new QPointer<MountOperation>(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<MountOperation>(this));
@ -92,11 +92,11 @@ public:
GCancellable* cancellable() const {
return cancellable_;
}
GMountOperation* mountOperation() {
return op;
}
void cancel() {
g_cancellable_cancel(cancellable_);
}

@ -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)

@ -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;

@ -39,7 +39,7 @@ public:
private Q_SLOTS:
void onButtonClicked(QAbstractButton* button);
private:
MountOperation* mountOperation;
QAbstractButton** choiceButtons;

@ -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);

@ -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);

@ -29,7 +29,7 @@
#include <libfm/fm.h>
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);

@ -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);

@ -193,6 +193,38 @@ void PlacesView::onEmptyTrash() {
fm_path_list_unref(files);
}
void PlacesView::onMoveBookmarkUp()
{
PlacesModel::ItemAction* action = static_cast<PlacesModel::ItemAction*>(sender());
if(!action->index().isValid())
return;
PlacesModelBookmarkItem* item = static_cast<PlacesModelBookmarkItem*>(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<PlacesModel::ItemAction*>(sender());
if(!action->index().isValid())
return;
PlacesModelBookmarkItem* item = static_cast<PlacesModelBookmarkItem*>(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<PlacesModel::ItemAction*>(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<PlacesModel::ItemAction*>(sender());
if(!action->index().isValid())
return;
PlacesModelItem* item = static_cast<PlacesModelItem*>(model_->itemFromIndex(action->index()));
if(item)
Q_EMIT chdirRequested(1, item->path());
}
void PlacesView::onOpenNewWindow()
{
PlacesModel::ItemAction* action = static_cast<PlacesModel::ItemAction*>(sender());
if(!action->index().isValid())
return;
PlacesModelItem* item = static_cast<PlacesModelItem*>(model_->itemFromIndex(action->index()));
if(item)
Q_EMIT chdirRequested(2, item->path());
}
void PlacesView::onRenameBookmark() {
PlacesModel::ItemAction* action = static_cast<PlacesModel::ItemAction*>(sender());
if(!action->index().isValid())
@ -240,7 +292,6 @@ void PlacesView::onUnmountVolume() {
if(!action->index().isValid())
return;
PlacesModelVolumeItem* item = static_cast<PlacesModelVolumeItem*>(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<PlacesModelItem*>(model_->itemFromIndex(index));
if(item->type() != PlacesModelItem::Mount
&& (item->type() != PlacesModelItem::Volume
|| static_cast<PlacesModelVolumeItem*>(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<PlacesModelVolumeItem*>(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();
}
}
}

@ -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:

@ -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<FolderModel*>(sourceModel());
FolderModelItem* item = srcModel->itemFromIndex(srcIndex);
// FolderModel* srcModel = static_cast<FolderModel*>(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();
}

@ -42,8 +42,6 @@ public:
class LIBFM_QT_API ProxyFolderModel : public QSortFilterProxyModel {
Q_OBJECT
public:
public:
explicit ProxyFolderModel(QObject * parent = 0);
virtual ~ProxyFolderModel();

@ -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<QPushButton*>(ui->buttonBox->button(QDialogButtonBox::Ok));
overwriteButton->setEnabled(!hasNewName);

@ -55,7 +55,7 @@ public:
bool applyToAll() {
return applyToAll_;
}
QString newName() {
return newName_;
}

@ -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<DirTreeView*>(view_);
DirTreeModel* model = static_cast<DirTreeModel*>( dirTreeView->model());
if(model)
model->setShowHidden(showHidden_);
}
}
} // namespace Fm

@ -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_;

@ -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));

@ -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)

@ -152,133 +152,133 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation type="unfinished"></translation>
</message>
@ -338,7 +338,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation type="unfinished"></translation>
</message>
@ -364,6 +364,16 @@ What do you want to do with it?</source>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="82"/>
<source>Open With...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="110"/>
<source>Other Applications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="128"/>
<source>&amp;Restore</source>
@ -390,31 +400,11 @@ What do you want to do with it?</source>
<source>&amp;Move to Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="289"/>
<source>Output</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="339"/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="150"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="82"/>
<source>Open With...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="110"/>
<source>Other Applications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="177"/>
<source>Extract to...</source>
@ -435,33 +425,43 @@ What do you want to do with it?</source>
<source>Properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="289"/>
<source>Output</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../filemenu.cpp" line="339"/>
<source>&amp;Delete</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation type="unfinished"></translation>
</message>
@ -688,27 +688,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation type="unfinished"></translation>
</message>
@ -737,76 +737,96 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<source>Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="57"/>
<source>Computer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation type="unfinished"></translation>
</message>
@ -919,54 +939,59 @@ Modified: %3</source>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="123"/>
<source>Rename File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="124"/>
<source>Please enter a new name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="123"/>
<source>Rename File</source>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="124"/>
<source>Please enter a new name:</source>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<source>Create File</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RenameDialog</name>

@ -152,133 +152,133 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation type="unfinished"></translation>
</message>
@ -338,7 +338,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation type="unfinished"></translation>
</message>
@ -439,29 +439,29 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation type="unfinished"></translation>
</message>
@ -688,27 +688,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation type="unfinished"></translation>
</message>
@ -737,17 +737,17 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation type="unfinished"></translation>
</message>
@ -757,22 +757,22 @@ Do you want to delete them instead?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
@ -780,33 +780,53 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation type="unfinished"></translation>
</message>
@ -921,7 +941,7 @@ Modified: %3</source>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -938,32 +958,37 @@ Modified: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation type="unfinished"></translation>
</message>

@ -152,133 +152,133 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation type="unfinished"></translation>
</message>
@ -338,7 +338,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Nová záložka</translation>
</message>
@ -439,29 +439,29 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Chyba</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation type="unfinished"></translation>
</message>
@ -688,27 +688,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Jméno</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Velikost</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Změněno</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Vlastník</translation>
</message>
@ -737,17 +737,17 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation type="unfinished">Místa</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation type="unfinished"></translation>
</message>
@ -757,22 +757,22 @@ Do you want to delete them instead?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
@ -780,33 +780,61 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation type="unfinished">Vysypat koš</translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation type="unfinished">Přejmenovat</translation>
<translation type="obsolete">Přejmenovat</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation type="unfinished">Smazat</translation>
<translation type="obsolete">Smazat</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation type="unfinished">Odpojit</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation type="unfinished">Připojit</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation type="unfinished">Vysunout</translation>
</message>
@ -921,7 +949,7 @@ Modified: %3</source>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -938,32 +966,37 @@ Modified: %3</source>
<translation type="unfinished">Prosím zadej nové jméno:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation type="unfinished">Prosím zadej nové jméno souboru:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation type="unfinished">Nový textový soubor</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation type="unfinished">Prosím zadej nové jméno složky:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation type="unfinished">Nová složka</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation type="unfinished">Zadej jméno pro nový %1:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation type="unfinished">Vytvořit soubor</translation>
</message>

@ -158,133 +158,133 @@
<translation>Dateieigenschaften</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>Allgemeines</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Ort:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Dateityp:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>MIME-Typ:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Dateigröße:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Größe auf dem Datenträger:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Letztes Änderungsdatum:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Verknüpfungsziel:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Öffnen mit:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Letzter Zugriff:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Berechtigungen</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Besitz</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Gruppe:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Besitzer:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Zugriffskontrolle</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Andere:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Datei ausführbar machen</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Lesen</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Schreiben</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Ausführen</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation>&quot;Sticky bit&quot;</translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation>SetUID</translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation>SetGID</translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Erweiterte Einstellungen</translation>
</message>
@ -344,7 +344,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Neuer Favorit</translation>
</message>
@ -446,30 +446,30 @@ Was möchten Sie damit tun?</translation>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>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?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Bestätigung</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>Möchten Sie die ausgewählten Dateien löschen?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>Möchten Sie die ausgewählten Dateien in den Papierkorb verschieben?</translation>
</message>
@ -696,27 +696,27 @@ Sollen die Dateien stattdessen gelöscht werden?</translation>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Name</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Größe</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Geändert</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Besitzer</translation>
</message>
@ -745,17 +745,17 @@ Sollen die Dateien stattdessen gelöscht werden?</translation>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Orte</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Arbeitsplatz</translation>
<translation>Schreibtisch</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Papierkorb</translation>
</message>
@ -765,22 +765,22 @@ Sollen die Dateien stattdessen gelöscht werden?</translation>
<translation>Rechner</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Anwendungen</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Netzwerk</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Geräte</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Favoriten</translation>
</message>
@ -788,33 +788,61 @@ Sollen die Dateien stattdessen gelöscht werden?</translation>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation>Papierkorb leeren</translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Umbenennen</translation>
<translation type="vanished">Umbenennen</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Löschen</translation>
<translation type="vanished">Löschen</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Aushängen</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Einhängen</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Auswerfen</translation>
</message>
@ -933,7 +961,7 @@ Geändert: %3</translation>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -950,32 +978,37 @@ Geändert: %3</translation>
<translation>Bitte geben Sie einen neuen Namen ein:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Bitte geben Sie einen neuen Dateinamen ein:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Neue Textdatei</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Bitte geben Sie einen neuen Ordnernamen ein:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Neuer Ordner</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation>Geben Sie einen Namen für %1 ein:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Datei erstellen</translation>
</message>

@ -158,133 +158,133 @@
<translation>Propiedades de Archivo</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>General</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Localización:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Tipo de archivo:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Tipo Mime:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Tamaño del archivo:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Tamaño en disco:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Última modificación:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Destino del enlace:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Abrir con:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Último acceso:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Permisos</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Propiedad</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Grupo:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Dueño:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Control de acceso</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Otro:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Marcar como ejecutable</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Lectura</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Escritura</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Ejecución</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation>Sticky</translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation>SetUID</translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation>SetGID</translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Modo avanzado</translation>
</message>
@ -344,7 +344,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Nuevo marcador</translation>
</message>
@ -446,30 +446,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>Algunos archivos no pueden moverse a la papelera porque el subsistema de archivos no permite esta operación.
¿Quiere eliminarlos en su lugar?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Confirmación</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>¿Quiere borrar los archivos seleccionados?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>¿Quiere mover los archivos seleccionados a la papelera?</translation>
</message>
@ -696,27 +696,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Nombre</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Modificado</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Dueño</translation>
</message>
@ -745,12 +745,12 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Lugares</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Escritorio</translation>
</message>
@ -760,27 +760,27 @@ Do you want to delete them instead?</source>
<translation>Sistema</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Aplicaciones</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Red</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Dispositivos</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Marcadores</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Papelera</translation>
</message>
@ -788,33 +788,61 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation>Vaciar Papelera</translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Renombrar</translation>
<translation type="vanished">Renombrar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Borrar</translation>
<translation type="vanished">Borrar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Desmontar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Montar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Expulsar</translation>
</message>
@ -933,7 +961,7 @@ Modificado: %3</translation>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -950,32 +978,37 @@ Modificado: %3</translation>
<translation>Introduzca un nuevo nombre:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Introduzca un nuevo nombre de archivo:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Nuevo archivo de texto</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Ingrese un nuevo nombre de directorio:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Nuevo directorio</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation>Ingresar un nombre para el nuevo %1:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Crear Archivo</translation>
</message>

@ -152,133 +152,133 @@
<translation>Propriétés du fichier</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>Général</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Emplacement :</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Type de fichier :</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Type Mime :</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Taille du fichier :</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Taille sur le disque :</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Date de dernière modification :</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Cible du lien :</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Ouvrir avec :</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Date de dernier accès :</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Droits d&apos;accès</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Propriété</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Groupe :</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Propriétaire :</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Contrôle d&apos;accès</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Autre :</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Rendre le fichier exécutable</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Lecture</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Écriture</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Exécution</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation>Permanent</translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation>SetUID</translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation>SetGID</translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Mode avancé</translation>
</message>
@ -338,7 +338,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Nouveau signet</translation>
</message>
@ -443,30 +443,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>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 ?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Confirmer</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>Voulez-vous supprimer les fichiers sélectionnés ?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>Voulez-vous mettre les fichiers sélectionnés à la corbeille ?</translation>
</message>
@ -697,27 +697,27 @@ Voulez-vous plutôt les supprimer ?</translation>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Nom</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Type</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Taille</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Modifié</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Propriétaire</translation>
</message>
@ -746,17 +746,17 @@ Voulez-vous plutôt les supprimer ?</translation>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Emplacements</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Bureau</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Corbeille</translation>
</message>
@ -766,22 +766,22 @@ Voulez-vous plutôt les supprimer ?</translation>
<translation>Ordinateur</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Applications</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Réseau</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Appareils</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Signets</translation>
</message>
@ -789,33 +789,61 @@ Voulez-vous plutôt les supprimer ?</translation>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Renommer</translation>
<translation type="vanished">Renommer</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Supprimer</translation>
<translation type="vanished">Supprimer</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Démonter</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Monter</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Éjecter</translation>
</message>
@ -934,7 +962,7 @@ Modification : %3</translation>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -951,32 +979,37 @@ Modification : %3</translation>
<translation>Veuillez entrer un nouveau nom :</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Veuillez entrer un nouveau nom de fichier :</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Nouveau fichier texte</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Veuillez entrer un nouveau nom de répertoire :</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Nouveau répertoire</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Créer un fichier</translation>
</message>

@ -152,133 +152,133 @@
<translation>Propiedades do ficheiro</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>Xeral</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Localización</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Tipo de ficheiro:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Tipo MIME:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Tamaño do ficheiro:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Tamaño no disco:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Última modificación:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Destino da ligazón:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Abrir con:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Último acceso:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Permisos</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Dono</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Grupo:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Propietario:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Control de acceso</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Outros:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Facer que o ficheiro sexa executábel</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Lectura</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Escritura</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Execución</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation>Persistente</translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation>Estabelecer o UID</translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation>Estabelecer o GID</translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Modo avanzado</translation>
</message>
@ -338,7 +338,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Novo marcador</translation>
</message>
@ -443,30 +443,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>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?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Confirmar</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>Quere eliminar os ficheiros seleccionados?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>Quere mover os ficheiros seleccionados ao cesto do lixo?</translation>
</message>
@ -697,27 +697,27 @@ Desexa eliminalos no seu canto?</translation>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Nome</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Modificado</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Propietario</translation>
</message>
@ -746,17 +746,17 @@ Desexa eliminalos no seu canto?</translation>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Lugares</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Escritorio</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Lixo</translation>
</message>
@ -766,22 +766,22 @@ Desexa eliminalos no seu canto?</translation>
<translation>Computador</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Aplicacións</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Dispositivos</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Marcadores</translation>
</message>
@ -789,33 +789,61 @@ Desexa eliminalos no seu canto?</translation>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Renomear</translation>
<translation type="vanished">Renomear</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Eliminar</translation>
<translation type="vanished">Eliminar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Desmontar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Montar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Expulsar</translation>
</message>
@ -934,7 +962,7 @@ Modificado: %3</translation>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -951,32 +979,37 @@ Modificado: %3</translation>
<translation>Introduza un nome novo:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Introduza un novo nome de ficheiro:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Novo ficheiro de texto</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Introduza un nome novo para o cartafol:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Novo cartafol</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Crear un ficheiro</translation>
</message>

File diff suppressed because it is too large Load Diff

@ -152,133 +152,133 @@
<translation>Proprietà file</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>Generali</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Posizione:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Tipo file:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Tipo MIME:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Dimensione file:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Dimensione sul disco:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Ultima modifica:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Collegamento a:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Apri con:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Ultimo accesso:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Permessi</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Proprietario</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Gruppo:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Proprietario:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Controllo accessi</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Altri:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Rendi il file eseguibile</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Lettura</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Scrittura</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Esecuzione</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation>Sticky</translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation>SetUID</translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation>SetGID</translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Modalità avanzata</translation>
</message>
@ -338,7 +338,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Nuovo segnalibro</translation>
</message>
@ -443,30 +443,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Errore</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>Alcuni file non possono essere spostati nel cestino perché il file system su cui si trovano non supporta questa operazione.
Vuoi invece eliminarli?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Conferma</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>Rimuovere i file selezionati?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>Spostare nel cestino i file selezionati?</translation>
</message>
@ -697,27 +697,27 @@ Vuoi invece eliminarli?</translation>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Nome</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Dimensione</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Modificato</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Proprietario</translation>
</message>
@ -746,17 +746,17 @@ Vuoi invece eliminarli?</translation>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Luoghi</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Scrivania</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Cestino</translation>
</message>
@ -766,22 +766,22 @@ Vuoi invece eliminarli?</translation>
<translation>Computer</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Applicazioni</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Rete</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Periferiche</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Segnalibri</translation>
</message>
@ -789,33 +789,61 @@ Vuoi invece eliminarli?</translation>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Rinomina</translation>
<translation type="vanished">Rinomina</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Rimuovi</translation>
<translation type="vanished">Rimuovi</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Smonta</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Monta</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Espelli</translation>
</message>
@ -934,7 +962,7 @@ Ultima modifica: %3</translation>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -951,32 +979,37 @@ Ultima modifica: %3</translation>
<translation>Inserire il nuovo nome:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Inserire il nuovo nome del file:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Nuovo file di testo</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Inserire il nuovo nome della cartella:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Nuova cartella</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Crea file</translation>
</message>

@ -158,133 +158,133 @@
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>MIME:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation>UID</translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation>GID</translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation></translation>
</message>
@ -344,7 +344,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation></translation>
</message>
@ -451,30 +451,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>
?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation></translation>
</message>
@ -705,27 +705,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation></translation>
</message>
@ -754,17 +754,17 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation></translation>
</message>
@ -774,22 +774,22 @@ Do you want to delete them instead?</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation></translation>
</message>
@ -797,33 +797,61 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation></translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation></translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation></translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation></translation>
</message>
@ -942,7 +970,7 @@ Modified: %3</source>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -959,32 +987,37 @@ Modified: %3</source>
<translation>:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation></translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation></translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation> %1 :</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation></translation>
</message>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="pt">
<TS version="2.1" language="pt">
<context>
<name>AppChooserDialog</name>
<message>
@ -158,133 +158,133 @@
<translation>Propriedades do ficheiro</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>Geral</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Localização:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Tipo de ficheiro:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Tipo MIME:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Tamanho do ficheiro:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Tamanho no disco:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Última modificação:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Destino da ligação:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Abrir com:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Último acesso:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Pemissões</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Propriedade</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Grupo:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Dono:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Controlo de acesso</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Outro:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Marcar como executável</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Leitura</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Escrita</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Execução</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation>Fixo</translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation>Definir UID</translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation>Definir GID</translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Modo avançado</translation>
</message>
@ -344,7 +344,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Novo marcador</translation>
</message>
@ -450,30 +450,30 @@ O que pretende fazer com o ficheiro?</translation>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>Alguns ficheiros não podem ser movidos para o lixo porque o sistema de ficheiros não suporta esta operação.
Eliminar permanentemente?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Confirmação</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>Quer mesmo eliminar o(s) ficheiro(s) selecionado(s)?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>Quer mesmo mover o(s) ficheiro(s) selecionado(s) para o lixo?</translation>
</message>
@ -704,27 +704,27 @@ Eliminar permanentemente?</translation>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Nome</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Tamanho</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Modificado</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Dono</translation>
</message>
@ -753,17 +753,17 @@ Eliminar permanentemente?</translation>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Locais</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Área de trabalho</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Lixo</translation>
</message>
@ -773,22 +773,22 @@ Eliminar permanentemente?</translation>
<translation>Computador</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Aplicações</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Rede</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Dispositivos</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Marcadores</translation>
</message>
@ -796,33 +796,61 @@ Eliminar permanentemente?</translation>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation>Esvaziar lixo</translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Mudar nome</translation>
<translation type="vanished">Mudar nome</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Eliminar</translation>
<translation type="vanished">Eliminar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Desmontar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Montar</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Ejetar</translation>
</message>
@ -941,7 +969,7 @@ Modificado: %3</translation>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -958,32 +986,37 @@ Modificado: %3</translation>
<translation>Introduza o novo nome:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Introduza o nome do ficheiro:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Novo ficheiro de texto</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Introduza o nome da pasta:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Nova pasta</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation>Introduza o nome para %1:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Criar ficheiro</translation>
</message>

@ -158,133 +158,133 @@
<translation>Свойства файла</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>Общие</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Расположение:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Тип файла:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Тип Mime:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Размер файла:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Размер на диске:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Последнее изменение:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Цель ссылки:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Открыть с помощью:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Последний доступ:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Разрешения</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Владение</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Группа:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Владелец:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Контроль доступа</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Остальные:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Сделать файл исполняемым</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Чтение</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Запись</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Выполнение</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Расширенный режим</translation>
</message>
@ -344,7 +344,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Новая закладка</translation>
</message>
@ -446,30 +446,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Ошибка</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>Некоторые файлы не могут быть помещены в корзину, поскольку файловая система не поддерживает эту операцию.
Вы всё равно хотите их удалить?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Подтвердить</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>Вы действительно хотите удалить выбранные файлы?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>Переместить выбранные файлы в корзину?</translation>
</message>
@ -696,27 +696,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Размер</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Изменён</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Владелец</translation>
</message>
@ -745,12 +745,12 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Места</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Рабочий стол</translation>
</message>
@ -760,27 +760,27 @@ Do you want to delete them instead?</source>
<translation>Компьютер</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Программы</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Устройства</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Закладки</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Корзина</translation>
</message>
@ -788,33 +788,61 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation>Очистить корзину</translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Переименовать</translation>
<translation type="vanished">Переименовать</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Удалить</translation>
<translation type="vanished">Удалить</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Отключить</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Подключить</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Извлечь</translation>
</message>
@ -933,7 +961,7 @@ Modified: %3</source>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -950,32 +978,37 @@ Modified: %3</source>
<translation>Введите новое имя:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Введите имя нового файла:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Новый текстовый файл</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Введите имя новой папки:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Новая папка</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation>Введите имя для нового %1:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Создать файл</translation>
</message>

@ -158,133 +158,133 @@
<translation>Свойства файла</translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation>Общие</translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>Расположение:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>Тип файла:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Тип Mime:</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>Размер файла:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>Размер на диске:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>Последнее изменение:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>Цель ссылки:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>Открыть с помощью:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>Последний доступ:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation>Разрешения</translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation>Владение</translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>Группа:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>Владелец:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation>Контроль доступа</translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>Остальные:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>Сделать файл исполняемым</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation>Чтение</translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation>Запись</translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation>Выполнение</translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation>Расширенный режим</translation>
</message>
@ -344,7 +344,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation>Новая закладка</translation>
</message>
@ -446,30 +446,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Ошибка</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>Некоторые файлы не могут быть помещены в корзину, поскольку файловая система не поддерживает эту операцию.
Вы всё равно хотите их удалить?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation>Подтвердить</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>Вы действительно хотите удалить выбранные файлы?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>Переместить выбранные файлы в корзину?</translation>
</message>
@ -696,27 +696,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation>Размер</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation>Изменён</translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation>Владелец</translation>
</message>
@ -745,12 +745,12 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation>Места</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation>Рабочий стол</translation>
</message>
@ -760,27 +760,27 @@ Do you want to delete them instead?</source>
<translation>Компьютер</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation>Программы</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation>Устройства</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation>Закладки</translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation>Корзина</translation>
</message>
@ -788,33 +788,61 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation>Очистить корзину</translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation>Переименовать</translation>
<translation type="vanished">Переименовать</translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation>Удалить</translation>
<translation type="vanished">Удалить</translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation>Отключить</translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation>Подключить</translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>Извлечь</translation>
</message>
@ -933,7 +961,7 @@ Modified: %3</source>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -950,32 +978,37 @@ Modified: %3</source>
<translation>Введите новое имя:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>Введите имя нового файла:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation>Новый текстовый файл</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>Введите имя новой папки:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation>Новая папка</translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation>Введите имя для нового %1:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation>Создать файл</translation>
</message>

@ -158,133 +158,133 @@
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="32"/>
<location filename="../file-props.ui" line="41"/>
<source>General</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="71"/>
<location filename="../file-props.ui" line="80"/>
<source>Location:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="94"/>
<location filename="../file-props.ui" line="106"/>
<source>File type:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="114"/>
<location filename="../file-props.ui" line="129"/>
<source>Mime type:</source>
<translation>Mime :</translation>
</message>
<message>
<location filename="../file-props.ui" line="134"/>
<location filename="../file-props.ui" line="152"/>
<source>File size:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="154"/>
<location filename="../file-props.ui" line="175"/>
<source>On-disk size:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="174"/>
<location filename="../file-props.ui" line="198"/>
<source>Last modified:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="194"/>
<location filename="../file-props.ui" line="221"/>
<source>Link target:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="217"/>
<location filename="../file-props.ui" line="247"/>
<source>Open With:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="234"/>
<location filename="../file-props.ui" line="267"/>
<source>Last accessed:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="249"/>
<location filename="../file-props.ui" line="285"/>
<source>Permissions</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="264"/>
<location filename="../file-props.ui" line="300"/>
<source>Ownership</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="288"/>
<location filename="../file-props.ui" line="353"/>
<location filename="../file-props.ui" line="467"/>
<location filename="../file-props.ui" line="324"/>
<location filename="../file-props.ui" line="389"/>
<location filename="../file-props.ui" line="503"/>
<source>Group:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="301"/>
<location filename="../file-props.ui" line="336"/>
<location filename="../file-props.ui" line="415"/>
<location filename="../file-props.ui" line="337"/>
<location filename="../file-props.ui" line="372"/>
<location filename="../file-props.ui" line="451"/>
<source>Owner:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="317"/>
<location filename="../file-props.ui" line="353"/>
<source>Access Control</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="370"/>
<location filename="../file-props.ui" line="519"/>
<location filename="../file-props.ui" line="406"/>
<location filename="../file-props.ui" line="555"/>
<source>Other:</source>
<translation>:</translation>
</message>
<message>
<location filename="../file-props.ui" line="387"/>
<location filename="../file-props.ui" line="423"/>
<source>Make the file executable</source>
<translation>使</translation>
</message>
<message>
<location filename="../file-props.ui" line="428"/>
<location filename="../file-props.ui" line="480"/>
<location filename="../file-props.ui" line="532"/>
<location filename="../file-props.ui" line="464"/>
<location filename="../file-props.ui" line="516"/>
<location filename="../file-props.ui" line="568"/>
<source>Read</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="441"/>
<location filename="../file-props.ui" line="493"/>
<location filename="../file-props.ui" line="545"/>
<location filename="../file-props.ui" line="477"/>
<location filename="../file-props.ui" line="529"/>
<location filename="../file-props.ui" line="581"/>
<source>Write</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="454"/>
<location filename="../file-props.ui" line="506"/>
<location filename="../file-props.ui" line="558"/>
<location filename="../file-props.ui" line="490"/>
<location filename="../file-props.ui" line="542"/>
<location filename="../file-props.ui" line="594"/>
<source>Execute</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="567"/>
<location filename="../file-props.ui" line="603"/>
<source>Sticky</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="574"/>
<location filename="../file-props.ui" line="610"/>
<source>SetUID</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="581"/>
<location filename="../file-props.ui" line="617"/>
<source>SetGID</source>
<translation></translation>
</message>
<message>
<location filename="../file-props.ui" line="617"/>
<location filename="../file-props.ui" line="653"/>
<source>Advanced Mode</source>
<translation></translation>
</message>
@ -344,7 +344,7 @@
<context>
<name>Fm::EditBookmarksDialog</name>
<message>
<location filename="../editbookmarksdialog.cpp" line="95"/>
<location filename="../editbookmarksdialog.cpp" line="96"/>
<source>New bookmark</source>
<translation></translation>
</message>
@ -454,30 +454,30 @@ What do you want to do with it?</source>
<context>
<name>Fm::FileOperation</name>
<message>
<location filename="../fileoperation.cpp" line="188"/>
<location filename="../fileoperation.cpp" line="220"/>
<source>Error</source>
<translation></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="189"/>
<location filename="../fileoperation.cpp" line="221"/>
<source>Some files cannot be moved to trash can because the underlying file systems don&apos;t support this operation.
Do you want to delete them instead?</source>
<translation>
</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="230"/>
<location filename="../fileoperation.cpp" line="246"/>
<location filename="../fileoperation.cpp" line="262"/>
<location filename="../fileoperation.cpp" line="278"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="231"/>
<location filename="../fileoperation.cpp" line="263"/>
<source>Do you want to delete the selected files?</source>
<translation>?</translation>
</message>
<message>
<location filename="../fileoperation.cpp" line="247"/>
<location filename="../fileoperation.cpp" line="279"/>
<source>Do you want to move the selected files to trash can?</source>
<translation>?</translation>
</message>
@ -708,27 +708,27 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::FolderModel</name>
<message>
<location filename="../foldermodel.cpp" line="249"/>
<location filename="../foldermodel.cpp" line="248"/>
<source>Name</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="252"/>
<location filename="../foldermodel.cpp" line="251"/>
<source>Type</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="255"/>
<location filename="../foldermodel.cpp" line="254"/>
<source>Size</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="258"/>
<location filename="../foldermodel.cpp" line="257"/>
<source>Modified</source>
<translation></translation>
</message>
<message>
<location filename="../foldermodel.cpp" line="261"/>
<location filename="../foldermodel.cpp" line="260"/>
<source>Owner</source>
<translation></translation>
</message>
@ -757,17 +757,17 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesModel</name>
<message>
<location filename="../placesmodel.cpp" line="41"/>
<location filename="../placesmodel.cpp" line="40"/>
<source>Places</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="49"/>
<location filename="../placesmodel.cpp" line="48"/>
<source>Desktop</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="205"/>
<location filename="../placesmodel.cpp" line="207"/>
<source>Trash</source>
<translation></translation>
</message>
@ -777,22 +777,22 @@ Do you want to delete them instead?</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="69"/>
<location filename="../placesmodel.cpp" line="70"/>
<source>Applications</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="80"/>
<location filename="../placesmodel.cpp" line="82"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="88"/>
<location filename="../placesmodel.cpp" line="90"/>
<source>Devices</source>
<translation></translation>
</message>
<message>
<location filename="../placesmodel.cpp" line="130"/>
<location filename="../placesmodel.cpp" line="132"/>
<source>Bookmarks</source>
<translation></translation>
</message>
@ -800,33 +800,61 @@ Do you want to delete them instead?</source>
<context>
<name>Fm::PlacesView</name>
<message>
<location filename="../placesview.cpp" line="281"/>
<location filename="../placesview.cpp" line="343"/>
<source>Empty Trash</source>
<translation></translation>
</message>
<message>
<location filename="../placesview.cpp" line="290"/>
<source>Rename</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="293"/>
<source>Delete</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="331"/>
<source>Open in New Tab</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="334"/>
<source>Open in New Window</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="352"/>
<source>Move Bookmark Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="357"/>
<source>Move Bookmark Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="361"/>
<source>Rename Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="364"/>
<source>Remove Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../placesview.cpp" line="303"/>
<location filename="../placesview.cpp" line="321"/>
<location filename="../placesview.cpp" line="373"/>
<location filename="../placesview.cpp" line="390"/>
<source>Unmount</source>
<translation></translation>
</message>
<message>
<location filename="../placesview.cpp" line="307"/>
<location filename="../placesview.cpp" line="377"/>
<source>Mount</source>
<translation></translation>
</message>
<message>
<location filename="../placesview.cpp" line="313"/>
<location filename="../placesview.cpp" line="383"/>
<source>Eject</source>
<translation>退</translation>
</message>
@ -945,7 +973,7 @@ Modified: %3</source>
<name>QObject</name>
<message>
<location filename="../utilities.cpp" line="152"/>
<location filename="../utilities.cpp" line="226"/>
<location filename="../utilities.cpp" line="228"/>
<location filename="../mountoperation.cpp" line="185"/>
<location filename="../filelauncher.cpp" line="109"/>
<source>Error</source>
@ -962,32 +990,37 @@ Modified: %3</source>
<translation>:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="167"/>
<location filename="../utilities.cpp" line="164"/>
<source>Create Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../utilities.cpp" line="169"/>
<source>Please enter a new file name:</source>
<translation>:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="172"/>
<location filename="../utilities.cpp" line="174"/>
<source>Please enter a new folder name:</source>
<translation>:</translation>
</message>
<message>
<location filename="../utilities.cpp" line="173"/>
<location filename="../utilities.cpp" line="175"/>
<source>New folder</source>
<translation></translation>
</message>
<message>
<location filename="../utilities.cpp" line="168"/>
<location filename="../utilities.cpp" line="170"/>
<source>New text file</source>
<translation></translation>
</message>
<message>
<location filename="../utilities.cpp" line="178"/>
<location filename="../utilities.cpp" line="180"/>
<source>Enter a name for the new %1:</source>
<translation> %1 :</translation>
</message>
<message>
<location filename="../utilities.cpp" line="187"/>
<location filename="../utilities.cpp" line="165"/>
<source>Create File</source>
<translation></translation>
</message>

@ -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;
}
};
}

@ -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

@ -44,7 +44,7 @@ public:
bool selectExtension() const {
return selectExtension_;
}
void setSelectExtension(bool value) {
selectExtension_ = value;
}

@ -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

@ -32,7 +32,9 @@
#include <QFile>
#include <QMessageBox>
#include <QCommandLineParser>
#include <QSocketNotifier>
#include <gio/gio.h>
#include <sys/socket.h>
#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<QScreen*>(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<QScreen*>(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<QSocketNotifier*>(sender())) {
notifier->setEnabled(false);
char c;
::read(sigterm_fd[1], &c, sizeof(c));
quit();
notifier->setEnabled(true);
}
}

@ -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_;

@ -35,7 +35,7 @@ public:
virtual ~AutoRunDialog();
virtual void accept();
private Q_SLOTS:
private:

@ -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<QSize>(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();

@ -21,6 +21,7 @@
#include "desktopwindow.h"
#include "settings.h"
#include "application.h"
#include "xdgdir.h"
#include <QFileDialog>
#include <QImageReader>
#include <QFile>
@ -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<Application*>(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);

@ -48,6 +48,7 @@
#include "filepropsdialog.h"
#include "utilities.h"
#include "path.h"
#include "xdgdir.h"
#include <QX11Info>
#include <QScreen>
@ -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<Application*>(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);
}

@ -28,6 +28,8 @@ Launcher::Launcher(PCManFM::MainWindow* mainWindow):
Fm::FileLauncher(),
mainWindow_(mainWindow) {
Application* app = static_cast<Application*>(qApp);
setQuickExec(app->settings().quickExec());
}
Launcher::~Launcher() {

@ -24,7 +24,7 @@
#include "filelauncher.h"
namespace PCManFM {
class MainWindow;
class Launcher : public Fm::FileLauncher {

@ -74,9 +74,18 @@
<property name="title">
<string>&amp;File</string>
</property>
<widget class="QMenu" name="menuCreateNew">
<property name="title">
<string>C&amp;reate New</string>
</property>
<addaction name="actionNewFolder"/>
<addaction name="actionNewBlankFile"/>
</widget>
<addaction name="actionNewTab"/>
<addaction name="actionNewWin"/>
<addaction name="separator"/>
<addaction name="menuCreateNew"/>
<addaction name="separator"/>
<addaction name="actionFileProperties"/>
<addaction name="actionFolderProperties"/>
<addaction name="separator"/>
@ -628,6 +637,28 @@
<string>&amp;Edit Bookmarks</string>
</property>
</action>
<action name="actionNewFolder">
<property name="icon">
<iconset theme="folder-new"/>
</property>
<property name="text">
<string>Folder</string>
</property>
<property name="shortcut">
<string>Ctrl+Shift+N</string>
</property>
</action>
<action name="actionNewBlankFile">
<property name="icon">
<iconset theme="document-new"/>
</property>
<property name="text">
<string>Blank File</string>
</property>
<property name="shortcut">
<string>Ctrl+Alt+N</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

@ -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<QToolButton*>(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<Application*>(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<Application*>(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<Application*>(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<Application*>(qApp)->settings();
settings.setSortColumn(static_cast<Fm::FolderModel::ColumnId>(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<Application*>(qApp);
app->openFolderInTerminal(path);
}
void MainWindow::onSidePaneCreateNewFolderRequested(FmPath* path) {
createFileOrFolder(CreateNewFolder, path);
}
void MainWindow::onSidePaneModeChanged(Fm::SidePane::Mode mode) {
static_cast<Application*>(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<FmBookmarkItem*>(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<BookmarkAction*>(sender());
FmPath* path = action->path();
if(path)
chdir(path);
if(path) {
Application* app = static_cast<Application*>(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()));

@ -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);

@ -11,6 +11,7 @@
<arg type="b" direction="in"/>
</method>
<method name="launchFiles">
<arg type="s" direction="in"/>
<arg type="as" direction="in"/>
<arg type="b" direction="in"/>
</method>

@ -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();

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>736</width>
<height>497</height>
<width>685</width>
<height>440</height>
</rect>
</property>
<property name="windowTitle">
@ -28,16 +28,21 @@
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="currentRow">
<number>0</number>
<number>-1</number>
</property>
<item>
<property name="text">
<string>User Interface</string>
<string>Behavior</string>
</property>
</item>
<item>
<property name="text">
<string>Behavior</string>
<string>Display</string>
</property>
</item>
<item>
<property name="text">
<string>User Interface</string>
</property>
</item>
<item>
@ -68,14 +73,176 @@
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="uiPage">
<layout class="QVBoxLayout" name="verticalLayout_5">
<widget class="QWidget" name="behaviorPage">
<layout class="QVBoxLayout" name="verticalLayout_3" stretch="0,0,1">
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Browsing</string>
</property>
<layout class="QFormLayout" name="formLayout_5">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="singleClick">
<property name="text">
<string>Open files with single click</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Delay of auto-selection in single click mode (0 to disable)</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Default view mode:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="viewMode"/>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="autoSelectionDelay">
<property name="enabled">
<bool>false</bool>
</property>
<property name="suffix">
<string> sec</string>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Bookmarks:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="bookmarkOpenMethod">
<item>
<property name="text">
<string>Open in current tab</string>
</property>
</item>
<item>
<property name="text">
<string>Open in new tab</string>
</property>
</item>
<item>
<property name="text">
<string>Open in new window</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>File Operations</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QCheckBox" name="configmDelete">
<property name="text">
<string>Confirm before deleting files</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="useTrash">
<property name="text">
<string>Move deleted files to &quot;trash bin&quot; instead of erasing from disk.</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="noUsbTrash">
<property name="text">
<string>Erase files on removable media instead of &quot;trash can&quot; creation</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="confirmTrash">
<property name="text">
<string>Confirm before moving files into &quot;trash can&quot;</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="quickExec">
<property name="text">
<string>Don't ask options on launch executable file</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="displayPage">
<layout class="QVBoxLayout" name="verticalLayout_7" stretch="0,0,1">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Icons</string>
</property>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="iconThemeLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Icon theme:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="iconTheme">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
@ -116,32 +283,69 @@
<item row="4" column="1">
<widget class="QComboBox" name="sidePaneIconSize"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="iconThemeLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_9">
<property name="title">
<string>User interface</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QCheckBox" name="siUnit">
<property name="text">
<string>Use SI decimal prefixes instead of IEC binary prefixes</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="backupAsHidden">
<property name="text">
<string>Icon theme:</string>
<string>Treat backup files as hidden</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="iconTheme">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item>
<widget class="QCheckBox" name="showFullNames">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Always show full file names</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="shadowHidden">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Show icons of hidden files shadowed</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="uiPage">
<layout class="QVBoxLayout" name="verticalLayout_5" stretch="0,0,1">
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
@ -203,6 +407,100 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_10">
<property name="title">
<string>Show in places</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">
<item>
<widget class="QListWidget" name="showInPlaces">
<item>
<property name="text">
<string>Home</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
<property name="icon">
<iconset theme="user-home">
<normaloff/>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Desktop</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
<property name="icon">
<iconset theme="user-desktop">
<normaloff/>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Trash can</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
<property name="icon">
<iconset theme="user-trash">
<normaloff/>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Computer</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
<property name="icon">
<iconset theme="computer">
<normaloff/>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Applications</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
</item>
<item>
<property name="text">
<string>Devices</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
</item>
<item>
<property name="text">
<string>Network</string>
</property>
<property name="checkState">
<enum>Unchecked</enum>
</property>
<property name="icon">
<iconset theme="folder-network">
<normaloff/>
</iconset>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
@ -210,85 +508,50 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="behaviorPage">
<layout class="QVBoxLayout" name="verticalLayout_3">
<widget class="QWidget" name="thumbnailPage">
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QGroupBox" name="groupBox_4">
<widget class="QGroupBox" name="groupBox_8">
<property name="title">
<string>Browsing</string>
<string>Thumbnail</string>
</property>
<layout class="QFormLayout" name="formLayout_5">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="singleClick">
<property name="text">
<string>Open files with single click</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Delay of auto-selection in single click mode (0 to disable)</string>
</property>
</widget>
</item>
<layout class="QFormLayout" name="formLayout_3">
<item row="2" column="0">
<widget class="QLabel" name="label_11">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Default view mode:</string>
<string>Do not generate thumbnails for image files exceeding this size:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="viewMode"/>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="autoSelectionDelay">
<property name="enabled">
<bool>false</bool>
</property>
<widget class="QSpinBox" name="maxThumbnailFileSize">
<property name="suffix">
<string> sec</string>
<string> KB</string>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
<property name="maximum">
<number>1048576</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>File Operations</string>
</property>
<layout class="QFormLayout" name="formLayout_6">
<item row="0" column="0">
<widget class="QCheckBox" name="configmDelete">
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="thumbnailLocal">
<property name="text">
<string>Confirm before deleting files</string>
<string>Only show thumbnails for local files</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="useTrash">
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="showThumbnails">
<property name="text">
<string>Move deleted files to &quot;trash bin&quot; instead of erasing from disk.</string>
<string>Show thumbnails of files</string>
</property>
</widget>
</item>
@ -296,60 +559,22 @@
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>0</width>
<height>225</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="thumbnailPage">
<layout class="QFormLayout" name="formLayout_3">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QCheckBox" name="showThumbnails">
<property name="text">
<string>Show thumbnails of files</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="thumbnailLocal">
<property name="text">
<string>Only show thumbnails for local files</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Do not generate thumbnails for image files exceeding this size:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="maxThumbnailFileSize">
<property name="suffix">
<string> KB</string>
</property>
<property name="maximum">
<number>1048576</number>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="volumePage">
<layout class="QVBoxLayout" name="verticalLayout_4">
<layout class="QVBoxLayout" name="verticalLayout_4" stretch="0,0,1">
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
@ -389,14 +614,14 @@
<item>
<widget class="QRadioButton" name="closeOnUnmount">
<property name="text">
<string>Close tab containing removable medium</string>
<string>Close &amp;tab containing removable medium</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="goHomeOnUnmount">
<property name="text">
<string>Change folder in the tab to home folder</string>
<string>Chan&amp;ge folder in the tab to home folder</string>
</property>
</widget>
</item>
@ -410,8 +635,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
@ -419,7 +644,7 @@
</layout>
</widget>
<widget class="QWidget" name="advancedPage">
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,1">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
@ -439,7 +664,7 @@
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Switch user command:</string>
<string>Switch &amp;user command:</string>
</property>
<property name="buddy">
<cstring>suCommand</cstring>
@ -463,7 +688,7 @@
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Archiver integration:</string>
<string>Archiver in&amp;tegration:</string>
</property>
<property name="buddy">
<cstring>archiver</cstring>
@ -484,13 +709,33 @@
</widget>
</item>
<item>
<widget class="QCheckBox" name="siUnit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Use SI decimal prefixes instead of IEC binary prefixes</string>
<widget class="QGroupBox" name="groupBox_11">
<property name="title">
<string>Templates</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
<widget class="QCheckBox" name="onlyUserTemplates">
<property name="text">
<string>Show only user defined templates in menu</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="templateTypeOnce">
<property name="text">
<string>Show only one template for each MIME type</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="templateRunApp">
<property name="text">
<string>Run default application after creation from template</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
@ -500,8 +745,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
@ -525,28 +770,25 @@
</layout>
</widget>
<tabstops>
<tabstop>smallIconSize</tabstop>
<tabstop>bigIconSize</tabstop>
<tabstop>thumbnailIconSize</tabstop>
<tabstop>sidePaneIconSize</tabstop>
<tabstop>iconTheme</tabstop>
<tabstop>listWidget</tabstop>
<tabstop>alwaysShowTabs</tabstop>
<tabstop>showTabClose</tabstop>
<tabstop>rememberWindowSize</tabstop>
<tabstop>fixedWindowWidth</tabstop>
<tabstop>fixedWindowHeight</tabstop>
<tabstop>singleClick</tabstop>
<tabstop>autoSelectionDelay</tabstop>
<tabstop>viewMode</tabstop>
<tabstop>configmDelete</tabstop>
<tabstop>useTrash</tabstop>
<tabstop>showThumbnails</tabstop>
<tabstop>mountOnStartup</tabstop>
<tabstop>mountRemovable</tabstop>
<tabstop>autoRun</tabstop>
<tabstop>closeOnUnmount</tabstop>
<tabstop>goHomeOnUnmount</tabstop>
<tabstop>terminal</tabstop>
<tabstop>suCommand</tabstop>
<tabstop>archiver</tabstop>
<tabstop>siUnit</tabstop>
<tabstop>autoRun</tabstop>
<tabstop>mountRemovable</tabstop>
<tabstop>buttonBox</tabstop>
<tabstop>listWidget</tabstop>
<tabstop>thumbnailLocal</tabstop>
<tabstop>maxThumbnailFileSize</tabstop>
</tabstops>
<resources/>
<connections>

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

Loading…
Cancel
Save