diff --git a/.gitignore b/.gitignore index bf867f3..6f16c9c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ build*/ +src/translations/libfm-qt # Vim.gitignore [._]*.s[a-w][a-z] diff --git a/AUTHORS b/AUTHORS index b5b60c5..83cd2cd 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,4 +3,4 @@ Upstream Authors: Hong Jen Yee (PCMan) Copyright: - Copyright (c) 2013-2015 LXQt team + Copyright (c) 2013-2016 LXQt team diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..e9861f0 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,344 @@ + +libfm-qt-0.11.1 / 2016-09-24 +============================ + + * Bump version to 0.11.1 (#39) + * Fix Custom Actions Submenu (#38) + * Extend README.md + * Add C++ wrappers for libfm C APIs. + * Correct positioning of small icons in icon/thumbnail mode (#32) + * Silence new compiler warnings (#36) + * Adapt to QT_USE_QSTRINGBUILDER macro + * Fixes xcb linking error + * Use LXQtCompilerSettings cmake module + * Replaces deprecated QStyleOptionViewItemV4 + * Fix item text direction with RTL layout (#33) + * Set tabstops for mount operation password dialog (#31) + * Fix memory leak in file open menu (#29) + * Fixes https://github.com/lxde/pcmanfm-qt/issues/351. (#27) + * build: Use external translations + * ts-file removal (#26) + * Fix memory leaks in file menu (#25) + * Merge pull request #24 from philippwiesemann/fix-folder-menu-leak + * translations: fix four typos in messages (#23) + * Fix memory leak if restoring files from trash + * Fix rename dialog displaying source info twice + * Enable renaming in Properties dialog Fixes https://github.com/lxde/pcmanfm-qt/issues/324. + * Cancel indexing job when closing filepropsdialog + * Bump year + +0.11.0 / 2016-02-27 +=================== + + * Bump version number and ABI version and preparing for the initial release. + * Redirect focus operation on the folderview to the actual widget + * Use grid layout to have proper properties alignment + * Focus automatically on the first field of the filesearch dialog + * Add (folder) custom actions to foldermenu. + * Update czech translation (by Petr Balíček ) + * Fix compiling with Qt < 5.4 + * Add supports for freedesktop Xdnd direct save (XDS) protocol (closes #pcmanfm-qt/298). * Move Xdnd workarounds from pcmanfm-qt to libfm-qt. + * Protected FolderView methods for getting and setting item delegate margins + * Perform auto-completion for the path bar when the user press Tab key. This closes pcmanfm-qt/#201. + * Disable unused options in file search dialog + * Let the style engine draw the text selection rectangle. + * Fix file search with smaller than option + * Fix target language in Lithuanian translation file + * Fix memory leak if reading stream for image failed + * Update German translation + * Polish translation updated + * Polish translation updated + * Add a missing type casting to fix a compiler warning. + * Relicense libfm-qt to LGPL v.2.1. + * Avoid using blocking calls when initializing the trash can to speed up startup. + * Updated Russian translation Removed ru_RU file + * Create DnD menu with supported actions only + * make createAction public so can be hidden from view + * Adds Runtime and Devel install COMPONENT + * Quote everything that could break due to whitespaces + * Use CMake GenerateExportHeader to generate ABI header file + * Use no exceptions also with Clang + * Uses CMAKE_VISIBILITY and CMAKE_CXX_VISIBILITY flags + * Use QString() instead of "" + * Fix duplicated mtp mounts in the side pane by adding workarounds for potential bugs of gvfs. + * Replace g_io_scheduler which is deprecated with QThread in Fm::PathEdit. * Fix compiler warnings. + * Adds .gitignore + * Makes Release the default BUILD_TYPE + * Adds INSTALL package configuration file + * Removes XCB from the dependencies + * Adds target_include_directories() for the INSTALL_INTERFACE. + * Removes CMAKE_CURRENT_BINARY_DIR usage + * Removes QTX_INCLUDE_DIRS + * Removes Qt Creator .user file + * Updates libraries dependencies + * Adds REQUIRED_PACKAGE_VERSION variables + * Adds generation of TARGETS CMake file + * Creates and installs an package version file + * Renames and moves LIBRARY_NAME variable to the top CMakeLists + * Removes sub-project + * Rename the library to libfm-qt and fix installed header files. + * Split pcmanfm-qt into two parts and move libfm-qt to its own repository. + * Update French translation + * Italian translation updates + * Fix a crash triggered when unmounting a volume from the side pane. + * Avoid duplicated volumes and mounts in the side panel. (This fixes the mtp:// problem.) + * Fix missing null pointer check in Fm::Path::parent() and use nullptr instead of NULL in path.h. + * Code cleanup, «using» directive only if necessary + * Upgrade of pcmanfm-qt to C++11 + * hu translations updated + * Fixed several problems with item selection and alignment + * Remove unnecessary qDebug traces + * Update translations. + * The signal QAbstractItemView::iconSizeChanged is only available after Qt 5.5. Add workarounds for older Qt versions. + * Add more null pointer checks in the thumbnail loader to avoid crashes caused by older versions of libfm. + * Update translations + * Avoid the column resizing tricks for the detailed list view when the view contains no columns. + * Improve the column width computation for the detailed view + * PlacesView: activate on click on the second column + * SidePane: reduce size of button's column width + * Added a filterbar + Handle virtually hidden files + * Russian translation update + * Update cs_CZ translation with the strings provided by petrbal in pull request #218. + * Allow adding or removing paths in the file search dialog. Fix bugs in searching for documents. + * Try to implement file searching by using the new Fm::FileSearchDialog class. + * Fix a incorrecy free() in fm_search_free() API. + * Add Fm::Path::take() API to take the ownership of a raw FmPath pointer. + * Add class Fm::FileSearchDialog used to show a dialog for searching files. + * Add FmSearch API which is used to build a search:// URI. (implemented in C and might become part of libfm later). + * Fix #195 - Crash when rightclick on item in trash. + * Add a null check for FmFileInfo in Fm::ProxyFolderModel::lessThan(). This closes #205. + * Fix (workaround) for right-click crash in placesview. + * Russian translation: update + * Italian translation: add desktop entry files, adjust TS files + * placesview: middle-click correct item to activate (fix of segfault) + * Check for null pointers. + * Select the folder from where we have gone up. + * Paste into folder from its context menu. + * libfm-qt: updated german translation + * libfm-qt: lupdated translation files + * Add Greek (el) translation + * added support for mouse back/forward buttons + * Update German translation + * Add new signal prepareFileMenu() to Fm::SidePane and Fm::DirTree so there's a chance to customize the file menu before its shown. + * Port some missing config options from the gtk+ version of pcmanfm. + * Also show hidden dirs in the directory tree when the "Show Hidden" option in the menu is turned on. + * Fix #190 - Column layout is not always updated. + * Create New menu actions, context menu in tree side pane, #163. + * Store side pane mode setting, #157. + * Fixes an translation regression + * Updates translations + * Uses LXQt lxqt_translate_ts() to handle translations + * Fix lxde/lxqt#447 - missing actions in Places' context menus + * Remove trailing whitespaces + * polishing German translation + * Add menu items and shortcuts for new folder and blank file, fixes #163. + * Display folders first when active and sort order descending, fixes #179. + * Avoid space wasted by incorrect decoration in detailed view columns, fixes #177. + * Avoid flickering column header while resizing manually, fixes #176. + * Hungarian translation + * Fix #627 - long startup time. (This blocking is caused by checking the availability of "network:///".) + * Enable text selection in file properties dialog + * Fix some memory leaks reported by valgrind. + * Fix warnings reported by cppcheck. + * Fix warnings reported by scan-build. + * Sort indicators in detailed view, store column and order in settings, fixes #109. + * Fix lxde/lxqt#512 - pcmanfm-qt: cannot delete to trash. + * Polish translations added + * Use 'user-trash' icon for 'Move to Trash' + * The "Custom" option in the application chooser combo box inside file properties dialog is broken. Fix by preventing recursive signal handler invocation. + * The file property dialog does not show correct default applications. Fix a bug in AppChooserComboBox::setMimeType() that does incorrect app comparison. + * When converting an UID or GID to its name, show the number as string when the user or group does not exists. + * Add more null checks. + * Portuguese update + * Add very basic "remaining time" display to the progress dialog. Fix lxde/lxqt#463 - Progress dialog of pcmanfm-qt does not show remaining time. + * Fix lxde/pcmanfm-qt#120 - Foucs "Rename" button when file name changed. + * Remove unnecessary '\n' charactor from the translated strings. + * Fix translations (the newly added string comes from the translation of libfm). + * Improve trash can handling: provide an option to delete the files if moving to trashcan fails. + * Fix broken filenames of translation files. + * More migration to Qt5 new signal/slot syntax for better type safety & speed. + * Migrade to new Qt5 signal/slot syntax for better type safety and speed. + * Fix the broken sorting option. + * Fix lxde/lxqt#448 - PCmanFM-QT renaming place bookmarks does nothing. + * Support linguistic sorting of file names. This fixes #105. + * Update the folder model & view after files are changed. + * Open folders in new tabs by middle clicking on items in the side pane. + * Portuguese update + * Fix a crash of the context menu of places view caused by change of items. + * Save the result of "Edit bookmarks" to gtk+3 bookmarks file instead of the deprecated ~/.gtkbookmarks file. This fixes bug #112 partially. + * Add spanish translations + * Update Japanese translation + * Add German translation + * add Japanese translation + * Implement "UnTrash" for files in trash:/// and close lxde/lxqt#136. + * Add Russian translation + * Drop Qt4 support in code + * Clean up CMakeLists.txt and drop Qt4 support + * New files added from LXDE Pootle server based on templates + * Commit from LXDE Pootle server by user Julius22.: 1007 of 1008 strings translated (2 need review). + * Commit from LXDE Pootle server by user Julius22.: 709 of 1008 strings translated (2 need review). + * Commit from LXDE Pootle server by user mbouzada.: 364 of 364 strings translated (0 need review). + * New files added from LXDE Pootle server based on templates + * Add cs_CZ translation for libfm-qt. + * Commit from LXDE Pootle server by user dforsi.: 364 of 364 strings translated (0 need review). + * Commit from LXDE Pootle server by user dforsi.: 358 of 364 strings translated (0 need review). + * Bump package version number and library soversion to prepare for 0.2 release. + * Fix #85 - Scrolling doesn't work in compact view. + * Hide UI elements that are not usable and disable trash can when gvfs is not available. * Add new API Fm::isUriSchemeSupported(). + * Avoid showing the popup menu when moving desktop items. + * Improve handling of file selection and fixing FolderView::selectAll(), which is reported in #45. Delay the handling of selectionChanged() signal to avoid too frequent UI updates. + * Little adjustment for the grid of the folder view to decrease unnecessary margins. + * Use a new way to optimize the size of filename display based on current view mode and font size. This also fixes lxde/lxde-qt #198 - PCmanFM-qt incorrectly displays 256x256 Thumbnails. + * Fully support single click activation and auto-selection with associated options added to the preference dialog. + * Add single click and auto-selection on hover support to Fm::FolderView. + * New files added from LXDE Pootle server based on templates + * New files added from LXDE Pootle server based on templates + * Improve update of translations to avoid unnecessary regeneration of ts files. + * Improve handling of fallback icons. This closes bug #57. + * Translations are lost accidentally in a previous commit. Restore them all. + * Fix a crash in Fm::PlacesModel when gvfs is not available. This closes bug #35 - Ctrl+W closes all windows. + * Do not detect filename extension and select the whole filename by default while renaming directories. This closes bug #71 - Don't try to detect extensions on directories. * API changed: Fm::renameFile() now accepect FmFileInfo as its first parameter. + * Fix bug #80 - make execute in context menu doesn't do change permissions. + * Revert "fixed selection issue #45" This patch breaks copying files by DND in icon view mode and moving desktop icons. + * Use qss instead of QPalette to set the background color of ColorButton. This fixed bug #192 of lxde-qt. + * Rename the library from libfm-qt to libfm-qt5 when built with Qt5. + * fixed selection issue #45 + * Fix middle click position calculation in detailed view mode + * Fix crash when context menu is requested but selection is empty + * Activate view items only if clicked with left mouse button + * Do not emit activated signal when keyboard modifiers are on. + * Splits the checks for needed libraries + * Removes duplicated include_directories() entry + * Make sure clang compiler does not complain + * Install pkgconfig file of libfm-qt to correct location in FreeBSD + * Fix missing return values in several methods. + * Avoid endless popups of error dialogs when there are errors launching files. + * Save thumbnails as png files correctly. + * Remember custom positions for desktop icons and fix #29. + * Add template support to the folder context menus and fix #39. + * Show "owner" in the detailed list view mode. * Fix a crash when switching to detailed list mode in qt5. + * Use xcb to set EWMH window type hint to the desktop window in Qt5. * Some more cleanup for the CMakeList.txt files + * Add initial support for Qt5. + * Try to fix #36 again. + * Fix a seg fault caused by the widget being deleted during glib signal handling. + * Code cleanup, removing unnecessary header inclusion to speed up compilation. + * Avoid further handling of MountOperation in the gio finished callback if the object is deleted. + * Use modeless dialogs for app chooser and error reporting in Fm::FileLauncher and Fm::FileMenu. + * Add an small emblem for symlinks (using icon name "emblem-symbolic-link"). Fix bug #27. + * Add missing file to git. + * Move internal implementation details to private headers which are not installed to the system. + * Implement Fm::AppChooserDialog and Fm::AppMenuView classes. * Add / menu item to Fm::FileMenu. * Add custom app to Fm::AppChooserComboBox. + * Add Fm::AppChooserComboBox and use it in Fm::FilePropsDialog. + * Redesign Fm::FileLauncher APIs to make it more usable. * Add Fm::FileMenu::setFileLauncher() and Fm::FolderView::setFileLauncher() APIs. * Move PCManFM::View::onFileClick() and other popup menu handling to Fm::FolderView. + * Improve Fm::FileLaucher to make it easy to derive subclasses. * Implement a special dialog for opening executable files (Fix bug #13 - it does not launch executables) + * Fix bug #28 - Tash can icon does not refresh when the trash can changes its empty/full status + * Load autocompletion list for Fm::PathEdit only when the widget has the keyboard focus to avoid unnecessary I/O. + * Add proper popup menu items for selected folders and fix #20 and #19. * Some code refactors, adding openFolders() and openFolderInTerminal() to Application class. + * Fix #25 - Amount of items in the folder is not refreshed when the folder content changes. * Update status bar text properly on switching tab pages, selection changes, and folder content changes. + * Fix the broken compiler definitions caused by previous commit. + * Fix bug #22 - Do not select file extension by default on file rename. * Avoid installing private headers (*_p.h files) + * Setup pcmanfm-qt to support optional Custom Actions Menubar detects if libfm was built with vala or not if so a fm-actions.h will exist and support will be compiled in if not, will still compile with no actions menu + * Allow installation path configuration with standard CMake X_INSTALL_DIR + * Support reordering bookmark items in the places view with DND. + * Support adding bookmarks to the places view using drag and drop + * Preparing for implementing dnd for places view. + * Improve the usability of icon view mode, fixing github bug #24. + * Fix crashes caused by invalid pointer access. + * Switch current dir of the folder view correctly with dir tree view in the side pane. + * Finish chdir operation for Fm::DirTreeView. + * Support hiding hidden folders from DirTreeModel. + * Move some methods from DirTreeModel to DirTreeModelItem and fix some row updating problems. + * Implement dynamic folder loading/unloading when expanding or collapsing dir tree nodes. * Enable horizontal scrollbar of dir tree view. + * Move some code from Fm::DirTreeModel to Fm::DirTreeModelItem. + * Partially implement Fm::DirTreeView and Fm::DirTreeModel. (not finished yet) + * Fix an invalid pointer + * Implment different modes for Fm::SidePane, matching libfm-qtk design. * Add basic skeleton for dir tree view/model. + * Fix the cosmetic defect introduced by the eject buttons in the places view. + * Add eject buttons to mounted volumes in the places side pane. + * Add a wrapper class Fm::Path for FmPath C struct. + * Initialize icon_ member of PlacesModelItem correctly. + * Fix fallback icon when a platform plugin is abscent. * Make Fm::IconTheme::checkUpdate() a static function. + * Remove xsettings support. Use a cleaner way to detect config changes by monitor StyleChange events. * Add Fm::IconTheme::changed() signal which is emitted when the icon theme name is changed. * Replace nested Fm::PlacesModel::Item and related classes with their own separate toplevel classes. + * Fix the icon for files of unknown mime types, again. + * Fix the icon for files of unknown mime types. + * Add DES-EMA custom actions to the popup menus. + * Make it safe to create multiple Fm::LibFmQt objects and only initialize libfm once. + * Fix incorrect export symbols and use GNUInstallDirs for installation destination + * Use the latest libfm thumbnailer APIs. + * Fix #3614873 - Thumbnails in icon view shown upside down for some jpegs. + * Adopt recent changes of libfm. FmIcon is essentially identical to GIcon now. + * Add a UI file for application chooser dialog. + * Correctly handle display names of folders in path entry auto-completion. + * Add a global header and add proper definition for LIBFM_QT_API macro. + * Add "Empty trash" and fix a memory leak. + * Fix memory leaks for bookmarks. Fix the broken "Network" item in places. + * Reduce memory usage: Paint the folder items with our own code instead of using a dirty hacks duplicating pixmaps. + * Reduce of size of QPixmapCache in the hope of decreasing memory usage. + * Add fallback icons for places item "applications" and "network". + * Add class Fm::CachedFolderModel, a convinient way to share Fm::FolderModel objects and reduce memory usage. + * Resize the columns of detailed list view when items are inserted or removed. + * Optimize column widths in detailed list mode when the view is resized. + * Only show thumbnails for the first column in detailed list mode. + * Use new "automoc" feature of cmake 2.8.6 and remove cumbersome #include "*.moc" code. + * Trivial fix. + * Add additional custom filter support to ProxyFolderModel. + * Fix some memory leaks. + * Fix some compiler errors and update translations. + * Support the latest libfm trunk. Remove -fpermissive compiler flag and fix compiler errors/warnings. + * Adopt new libfm thumbnail APIs. + * Add soname 0.0.0 for libfm-qt, preparing for 0.1 release. + * Fix crashes caused by incorrect deletion of dialog objects. + * Enable thumbnail related settings. + * Update zh_TW translations and translation templates. + * Add Portuguese translation (pt). + * Add Lithuanian translation (lt_LT). + * Adopt the latest thumbnail API in libfm (thumbnail branch) to speed up loading. + * Workardound incorrect thumbnail painting caused by bug of QStyledItemDelegate. :-( + * Fix a crash caused by accessing data for invalid model index. + * Fix a crash caused by accessing data for invalid model index. + * Add basic thumbnail support (need the latest thumbnail branch of libfm). + * Add archiver integration for file context menus. + * Add archiver integration to file context menus. + * Add mnemonics for menu items. Make confirm dialog before delete and trash can optional. + * Update side pane according to current dir. Little fix. + * Implement "Open in Terminal" and "Open as Root". + * Implement "Auto Run" for newly inserted removable devices. + * Add "Edit Bookmarks" dialog. + * Implement "Invert Selection". Little fix of UI, add a Tool menu to main window. + * Implement "Create New" menu in the folder popup menu. + * Modify make rules for translations. Avoid deleting generated ts files when "make clean". Fix a small error in zh_TW translation. + * Add auto-completion to path entry bar. + * Rename Fm::Application to Fm::LibFmQt to decrease confusion. Set required Qt version to 4.6. + * Load translation files correctly for pcmanfm-qt and libfm-qt. + * Add basic skeleton for i18n (using Qt QTranslator & Qt Linguist). + * Add separate CMakeLists.txt files for pcmanfm and libfm-qt. Hide more implementation details from libfm-qt headers. + * Fix copyright notice in all source files. + * Install a pkgconfig file for libfm-qt for use in other projects. + * Fix a memory error caused by incorrect array size. Fix incorrect spacing of icons. + * Finish chown and chmod supports. + * Try to add file opermission settings UI. + * Implement very basic drag and drop support. + * Supress the incorrect default dnd handling of QListView. + * Try to implement Dnd. + * Finish desktop preferences. + * Improve desktop preferences and apply settings (partially done). + * Add desktop preferences dialog. + * Apply side pane icon size correctly. Add basic skeleton for archiver integration. + * Set shortcuts for frequently used menu options. Implement "rename file" support. Hide tabs when there is only one tab left (optional). + * Delete windows properly when they're closed with setAttribute(Qt::WA_DeleteOnClose); Apply settings to windows after clicking OK in the preference dialog. + * Improve preferences dialog. Change base class of SidePane to QWidget. + * Sync the state of folder popup menu and main menu bar. + * Implement sort options for main window. + * Fix file sorting options for Fm::FolderMenu. + * Correctly implement browse history and fix crashes. + * Add very simple browse history (back/forward) handling. + * Apply gcc visiblility attributes to export less symbols. + * Correctly handle file rename/overwrite during file operations. + * Exclude unnecessary files from CPack. + * Improve folder popup menu. + * Add folder popup menu. Some UI polishing. + * Fix a little crash. + * Fix crashes when turning off desktop manager. + * Show popup menu for blank area of folders. + * Do some refactor to make Fm::FolderView cleaner. Add PCManFM::View to do file manager-specific operations. + * Move files for libfm-qt and pcmanfm-qt to separate subdirs. diff --git a/CMakeLists.txt b/CMakeLists.txt index d90c5e6..8ba59ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ set(LIBFM_QT_LIBRARY_NAME "fm-qt" CACHE STRING "fm-qt") set(LIBFM_QT_VERSION_MAJOR 0) set(LIBFM_QT_VERSION_MINOR 11) -set(LIBFM_QT_VERSION_PATCH 0) +set(LIBFM_QT_VERSION_PATCH 1) 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") @@ -32,13 +32,16 @@ endif() find_package(Qt5Widgets "${REQUIRED_QT_VERSION}" REQUIRED) find_package(Qt5LinguistTools "${REQUIRED_QT_VERSION}" REQUIRED) find_package(Qt5X11Extras "${REQUIRED_QT_VERSION}" REQUIRED) +find_package(XCB REQUIRED) + +#Note: no run-time dependency on liblxqt, just a build dependency for lxqt_translate_ts/desktop +find_package(lxqt REQUIRED) find_package(PkgConfig) pkg_check_modules(SYSTEM_LIBS REQUIRED glib-2.0 gio-2.0 gio-unix-2.0 - xcb ) pkg_check_modules(LIBFM REQUIRED libfm>="${REQUIRED_LIBFM_VERSION}") @@ -50,6 +53,7 @@ include(GenerateExportHeader) include(CMakePackageConfigHelpers) include(LXQtTranslateTs) include(LXQtTranslateDesktop) +include(LXQtCompilerSettings NO_POLICY_SCOPE) add_definitions(-DQT_NO_KEYWORDS) @@ -57,27 +61,6 @@ add_definitions(-DQT_NO_KEYWORDS) set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) -if (CMAKE_VERSION VERSION_LESS "3.1") - include(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) - if(COMPILER_SUPPORTS_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - else() - CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) - # -std=c++0x is deprecated but some tools e.g. qmake or older gcc are still using it - if(COMPILER_SUPPORTS_CXX0X) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") - else() - message(FATAL_ERROR "Compiler ${CMAKE_CXX_COMPILER} does not support c++11/c++0x") - endif() - endif() -else() - set(CMAKE_CXX_STANDARD 11) -endif() - -if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(CMAKE_CXX_FLAGS "-fno-exceptions ${CMAKE_CXX_FLAGS}") -endif() set(CMAKE_AUTOMOC TRUE) set(CMAKE_INCLUDE_CURRENT_DIR ON) diff --git a/README.md b/README.md index 4340134..2db18f9 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,27 @@ # libfm-qt -Includes libfm-qt, the Qt port of the libfm - a library providing components to -build desktop file managers. +## Overview -Issue tracker: - https://github.com/lxde/pcmanfm-qt/issues +libfm-qt is the Qt port of libfm, a library providing components to build desktop file managers which belongs to [LXDE](http://lxde.org). -LXQt website: - http://lxqt.org +libfm-qt is licensed under the terms of the [LGPLv2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) or any later version. See file LICENSE for its full text. -LXDE website: - http://lxde.org +## Installation +### Compiling source code -# License +Runtime dependencies are qtx11extras and libfm ≥ 1,2 (not all features are provided by libfm-qt yet). +Additional build dependencies are CMake and optionally Git to pull latest VCS checkouts. The localization files were outsourced to repository [lxqt-l10n](https://github.com/lxde/lxqt-l10n) so the corresponding dependencies are needed, too. Please refer to this repository's `README.md` for further information. -libfm-qt is licensed under the terms of the -[LGPLv2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) or any later version. +Code configuration is handled by CMake. CMake variable `CMAKE_INSTALL_PREFIX` has to be set to `/usr` on most operating systems, depending on the way library paths are dealt with on 64bit systems variables like `CMAKE_INSTALL_LIBDIR` may have to be set as well. -See the LICENSE file for the full text of the license. +To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual. + +### Binary packages + +Official binary packages are available in Arch Linux, Debian (as of Debian stretch) and openSUSE (Leap 42.1 and Tumbleweed). +The library is still missing in Fedora which is providing version 0.10.0 of PCManFM-Qt only so far. This version was still including the code outsourced into libfm-qt later so libfm-qt will have to be provided by Fedora, too, as soon as the distribution upgrades to PCManFM-Qt ≥ 0.10.1. + +## Development + +Issues should go to the tracker of PCManFM-Qt at https://github.com/lxde/pcmanfm-qt/issues. diff --git a/cmake/FindXCB.cmake b/cmake/FindXCB.cmake new file mode 100644 index 0000000..98445bc --- /dev/null +++ b/cmake/FindXCB.cmake @@ -0,0 +1,53 @@ +#.rst: +# FindXCB +# ------- +# +# Find XCB libraries +# +# Tries to find xcb libraries on unix systems. +# +# - Be sure to set the COMPONENTS to the components you want to link to +# - The XCB_LIBRARIES variable is set ONLY to your COMPONENTS list +# - To use only a specific component check the XCB_LIBRARIES_${COMPONENT} variable +# +# The following values are defined +# +# :: +# +# XCB_FOUND - True if xcb is available +# XCB_INCLUDE_DIRS - Include directories for xcb +# XCB_LIBRARIES - List of libraries for xcb +# XCB_DEFINITIONS - List of definitions for xcb +# +#============================================================================= +# Copyright (c) 2015 Jari Vetoniemi +# +# Distributed under the OSI-approved BSD License (the "License"); +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +include(FeatureSummary) +set_package_properties(XCB PROPERTIES + URL "http://xcb.freedesktop.org/" + DESCRIPTION "X protocol C-language Binding") + +find_package(PkgConfig) +pkg_check_modules(PC_XCB QUIET xcb ${XCB_FIND_COMPONENTS}) + +find_library(XCB_LIBRARIES xcb HINTS ${PC_XCB_LIBRARY_DIRS}) +find_path(XCB_INCLUDE_DIRS xcb/xcb.h PATH_SUFFIXES xcb HINTS ${PC_XCB_INCLUDE_DIRS}) + +foreach(COMPONENT ${XCB_FIND_COMPONENTS}) + find_library(XCB_LIBRARIES_${COMPONENT} ${COMPONENT} HINTS ${PC_XCB_LIBRARY_DIRS}) + list(APPEND XCB_LIBRARIES ${XCB_LIBRARIES_${COMPONENT}}) + mark_as_advanced(XCB_LIBRARIES_${COMPONENT}) +endforeach(COMPONENT ${XCB_FIND_COMPONENTS}) + +set(XCB_DEFINITIONS ${PC_XCB_CFLAGS_OTHER}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIRS) +mark_as_advanced(XCB_INCLUDE_DIRS XCB_LIBRARIES XCB_DEFINITIONS) diff --git a/cmake/LXQtTranslateDesktop.cmake b/cmake/LXQtTranslateDesktop.cmake deleted file mode 100644 index 522ed68..0000000 --- a/cmake/LXQtTranslateDesktop.cmake +++ /dev/null @@ -1,107 +0,0 @@ -#============================================================================= -# The lxqt_translate_desktop() function was copied from the the -# LXQt LxQtTranste.cmake -# -# Original Author: Alexander Sokolov -# -# funtion lxqt_translate_desktop(_RESULT -# SOURCES -# [TRANSLATION_DIR] translation_directory -# ) -# Output: -# _RESULT The generated .desktop (.desktop) files -# -# Input: -# -# SOURCES List of input desktop files (.destktop.in) to be translated -# (merged), relative to the CMakeList.txt. -# -# TRANSLATION_DIR Optional path to the directory with the .ts files, -# relative to the CMakeList.txt. Defaults to -# "translations". -# -#============================================================================= - -function(lxqt_translate_desktop _RESULT) - # Parse arguments *************************************** - set(oneValueArgs TRANSLATION_DIR) - set(multiValueArgs SOURCES) - - cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - # check for unknown arguments - set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS}) - if (NOT ${_UNPARSED_ARGS} STREQUAL "") - MESSAGE(FATAL_ERROR - "Unknown arguments '${_UNPARSED_ARGS}'.\n" - "See lxqt_translate_desktop() documenation for more information.\n" - ) - endif() - - if (NOT DEFINED _ARGS_SOURCES) - set(${_RESULT} "" PARENT_SCOPE) - return() - else() - set(_sources ${_ARGS_SOURCES}) - endif() - - if (NOT DEFINED _ARGS_TRANSLATION_DIR) - set(_translationDir "translations") - else() - set(_translationDir ${_ARGS_TRANSLATION_DIR}) - endif() - - - get_filename_component (_translationDir ${_translationDir} ABSOLUTE) - - foreach (_inFile ${_sources}) - get_filename_component(_inFile ${_inFile} ABSOLUTE) - get_filename_component(_fileName ${_inFile} NAME_WE) - #Extract the real extension ............ - get_filename_component(_fileExt ${_inFile} EXT) - string(REPLACE ".in" "" _fileExt ${_fileExt}) - #....................................... - set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}${_fileExt}") - - file(GLOB _translations - ${_translationDir}/${_fileName}_*${_fileExt} - ${_translationDir}/local/${_fileName}_*${_fileExt} - ) - - set(_pattern "'\\[.*]\\s*='") - if (_translations) - add_custom_command(OUTPUT ${_outFile} - COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} - COMMAND grep -h ${_pattern} ${_translations} >> ${_outFile} - COMMENT "Generating ${_fileName}${_fileExt}" - ) - else() - add_custom_command(OUTPUT ${_outFile} - COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile} - COMMENT "Generating ${_fileName}${_fileExt}" - ) - endif() - - set(__result ${__result} ${_outFile}) - - - # TX file *********************************************** - set(_txFile "${CMAKE_BINARY_DIR}/tx/${_fileName}${_fileExt}.tx.sh") - string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_translationDir ${_translationDir}) - string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_inFile ${_inFile}) - string(REPLACE "." "" _fileType ${_fileExt}) - - file(WRITE ${_txFile} - "[ -f ${_inFile} ] || exit 0\n" - "echo '[lxde-qt.${_fileName}_${_fileType}]'\n" - "echo 'type = DESKTOP'\n" - "echo 'source_lang = en'\n" - "echo 'source_file = ${_tx_inFile}'\n" - "echo 'file_filter = ${_tx_translationDir}/${_fileName}_${_fileExt}'\n" - "echo ''\n" - ) - - endforeach() - - set(${_RESULT} ${__result} PARENT_SCOPE) -endfunction(lxqt_translate_desktop) diff --git a/cmake/LXQtTranslateTs.cmake b/cmake/LXQtTranslateTs.cmake deleted file mode 100644 index 5998830..0000000 --- a/cmake/LXQtTranslateTs.cmake +++ /dev/null @@ -1,131 +0,0 @@ -#============================================================================= -# Copyright 2014 Luís Pereira -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#============================================================================= -# -# funtion lxqt_translate_ts(qmFiles -# [USE_QT5 [Yes | No]] -# [UPDATE_TRANSLATIONS [Yes | No]] -# SOURCES -# [TEMPLATE] translation_template -# [TRANSLATION_DIR] translation_directory -# [INSTALL_DIR] install_directory -# ) -# Output: -# qmFiles The generated compiled translations (.qm) files -# -# Input: -# USE_QT5 Optional flag to choose between Qt4 and Qt5. Defaults to Qt5 -# -# UPDATE_TRANSLATIONS Optional flag. Setting it to Yes, extracts and -# compiles the translations. Setting it No, only -# compiles them. -# -# TEMPLATE Optional translations files base name. Defaults to -# ${PROJECT_NAME}. An .ts extensions is added. -# -# TRANSLATION_DIR Optional path to the directory with the .ts files, -# relative to the CMakeList.txt. Defaults to -# "translations". -# -# INSTALL_DIR Optional destination of the file compiled files (qmFiles). -# If not present no installation is performed - - - -# CMake v2.8.3 needed to use the CMakeParseArguments module -cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR) - -# We use our patched version to round a annoying bug. -include(Qt5PatchedLinguistToolsMacros) - -function(lxqt_translate_ts qmFiles) - set(oneValueArgs USE_QT5 UPDATE_TRANSLATIONS TEMPLATE TRANSLATION_DIR INSTALL_DIR) - set(multiValueArgs SOURCES) - cmake_parse_arguments(TR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - - if (NOT DEFINED TR_UPDATE_TRANSLATIONS) - set(TR_UPDATE_TRANSLATIONS "No") - endif() - - if (NOT DEFINED TR_USE_QT5) - set(TR_USE_QT5 "Yes") - endif() - - if(NOT DEFINED TR_TEMPLATE) - set(TR_TEMPLATE "${PROJECT_NAME}") - endif() - - if (NOT DEFINED TR_TRANSLATION_DIR) - set(TR_TRANSLATION_DIR "translations") - endif() - - file(GLOB tsFiles "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}_*.ts") - set(templateFile "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}.ts") - - if(TR_USE_QT5) - # Qt5 - if (TR_UPDATE_TRANSLATIONS) - qt5_patched_create_translation(QMS - ${TR_SOURCES} - ${templateFile} - OPTIONS -locations absolute - ) - qt5_patched_create_translation(QM - ${TR_SOURCES} - ${tsFiles} - OPTIONS -locations absolute - ) - else() - qt5_patched_add_translation(QM ${tsFiles}) - endif() - else() - # Qt4 - if(TR_UPDATE_TRANSLATIONS) - qt4_create_translation(QMS - ${TR_SOURCES} - ${templateFile} - OPTIONS -locations absolute - ) - qt4_create_translation(QM - ${TR_SOURCES} - ${tsFiles} - OPTIONS -locations absolute - ) - else() - qt4_add_translation(QM ${tsFiles}) - endif() - endif() - - if(TR_UPDATE_TRANSLATIONS) - add_custom_target("update_${TR_TEMPLATE}_ts" ALL DEPENDS ${QMS}) - endif() - - if(DEFINED TR_INSTALL_DIR) - install(FILES ${QM} DESTINATION ${TR_INSTALL_DIR}) - endif() - - set(${qmFiles} ${QM} PARENT_SCOPE) -endfunction() diff --git a/cmake/Qt5PatchedLinguistToolsMacros.cmake b/cmake/Qt5PatchedLinguistToolsMacros.cmake deleted file mode 100644 index e5c2f5c..0000000 --- a/cmake/Qt5PatchedLinguistToolsMacros.cmake +++ /dev/null @@ -1,112 +0,0 @@ -#============================================================================= -# Copyright 2005-2011 Kitware, Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# * Neither the name of Kitware, Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#============================================================================= - -include(CMakeParseArguments) - -function(QT5_PATCHED_CREATE_TRANSLATION _qm_files) - set(options) - set(oneValueArgs) - set(multiValueArgs OPTIONS) - - cmake_parse_arguments(_LUPDATE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - set(_lupdate_files ${_LUPDATE_UNPARSED_ARGUMENTS}) - set(_lupdate_options ${_LUPDATE_OPTIONS}) - - set(_my_sources) - set(_my_tsfiles) - foreach(_file ${_lupdate_files}) - get_filename_component(_ext ${_file} EXT) - get_filename_component(_abs_FILE ${_file} ABSOLUTE) - if(_ext MATCHES "ts") - list(APPEND _my_tsfiles ${_abs_FILE}) - else() - list(APPEND _my_sources ${_abs_FILE}) - endif() - endforeach() - foreach(_ts_file ${_my_tsfiles}) - if(_my_sources) - # make a list file to call lupdate on, so we don't make our commands too - # long for some systems -# get_filename_component(_ts_name ${_ts_file} NAME_WE) - - get_filename_component(_name ${_ts_file} NAME) - string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _ts_name ${_name}) - - set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file") - set(_lst_file_srcs) - foreach(_lst_file_src ${_my_sources}) - set(_lst_file_srcs "${_lst_file_src}\n${_lst_file_srcs}") - endforeach() - - get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES) - foreach(_pro_include ${_inc_DIRS}) - get_filename_component(_abs_include "${_pro_include}" ABSOLUTE) - set(_lst_file_srcs "-I${_pro_include}\n${_lst_file_srcs}") - endforeach() - - file(WRITE ${_ts_lst_file} "${_lst_file_srcs}") - endif() - add_custom_command(OUTPUT ${_ts_file} - COMMAND ${Qt5_LUPDATE_EXECUTABLE} - ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file} - DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM) - endforeach() - qt5_patched_add_translation(${_qm_files} ${_my_tsfiles}) - set(${_qm_files} ${${_qm_files}} PARENT_SCOPE) -endfunction() - - -function(QT5_PATCHED_ADD_TRANSLATION _qm_files) - foreach(_current_FILE ${ARGN}) - get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE) -# get_filename_component(qm ${_abs_FILE} NAME_WE) - - get_filename_component(_name ${_abs_FILE} NAME) - string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" qm ${_name}) - - get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION) - if(output_location) - file(MAKE_DIRECTORY "${output_location}") - set(qm "${output_location}/${qm}.qm") - else() - set(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm") - endif() - - add_custom_command(OUTPUT ${qm} - COMMAND ${Qt5_LRELEASE_EXECUTABLE} - ARGS ${_abs_FILE} -qm ${qm} - DEPENDS ${_abs_FILE} VERBATIM - ) - list(APPEND ${_qm_files} ${qm}) - endforeach() - set(${_qm_files} ${${_qm_files}} PARENT_SCOPE) -endfunction() diff --git a/debian/.gitignore b/debian/.gitignore index 17083ca..93416ca 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -3,8 +3,8 @@ /*.substvars /files /mangled +/debhelper-build-stamp -/libfm-qt5-2/ -/libfm-qt5-dev/ -/libfm-qt5-dbg/ +/libfm-qt3/ +/libfm-qt-dev/ /tmp diff --git a/debian/changelog b/debian/changelog index ecb88a9..f14d07b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,25 @@ +libfm-qt (0.11.1-2) unstable; urgency=medium + + * Cherry-picking upstream release 0.11.1. + * Syncded debian foo with experimental + * Bump compat to 10 + * Removed --parallel from rules, standard compat 10 + * Bumped Standards to 3.9.8, no changes needed + * Bump minimum version debhelper (>= 10) + * Bump minimum version libqt5xdg-dev (>= 2.0.0) + * Re-introduce build dependency liblxqt0-dev (>= 0.11.0) + * Added build dependency libqt5svg5-dev + * Added Recommends libfm-qt-l10n + * Exported LC_ALL=C.UTF-8 - define language settings for reproducible + builds + * Hard override translation control + * Use DCMAKE_BUILD_TYPE=RelWithDebInfo + * Fixed copyright Format field, using https + * Fixed copyrights, removed obsolete files + * Fixed libfm-qt3.install, don't install translations + + -- Alf Gaida Tue, 18 Oct 2016 01:07:52 +0200 + libfm-qt (0.11.0-2) unstable; urgency=medium * Merged changes into unstable diff --git a/debian/compat b/debian/compat index ec63514..f599e28 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -9 +10 diff --git a/debian/control b/debian/control index d06f19b..714f378 100644 --- a/debian/control +++ b/debian/control @@ -6,21 +6,24 @@ Uploaders: Alf Gaida , Shih-Yuan Lee (FourDollars) Section: x11 Priority: optional -Build-Depends: debhelper (>= 9), +Build-Depends: debhelper (>= 10), cmake (>= 3.0.2), libfm-dev (>= 1.2.0), libglib2.0-dev, + libkf5windowsystem-dev, + liblxqt0-dev ( >= 0.11.0), libmenu-cache-dev, + libqt5svg5-dev, libqt5x11extras5-dev, - libqt5xdg-dev (>= 1.3.0), + libqt5xdg-dev (>= 2.0.0), libx11-dev, pkg-config, qtbase5-private-dev, qttools5-dev, qttools5-dev-tools -Standards-Version: 3.9.7 +Standards-Version: 3.9.8 Vcs-Browser: https://anonscm.debian.org/cgit/pkg-lxqt/libfm-qt.git/?h=debian/sid -Vcs-Git: https://anonscm.debian.org/cgit/pkg-lxqt/libfm-qt.git -b debian/sid +Vcs-Git: https://anonscm.debian.org/git/pkg-lxqt/libfm-qt.git -b debian/sid Homepage: https://github.com/lxde/libfm-qt Package: libfm-qt3 @@ -35,6 +38,7 @@ Multi-Arch: same Section: libs Depends: ${misc:Depends}, ${shlibs:Depends} +Recommends: libfm-qt-l10n Pre-Depends: ${misc:Pre-Depends} Description: file management support for pcmanfm-qt Libfm-Qt is a companion library providing components to build desktop file diff --git a/debian/copyright b/debian/copyright index e1e0f78..b543182 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,4 +1,4 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: libfm-qt Source: https://github.com/lxde/libfm-qt @@ -13,14 +13,6 @@ Files: cmake/fm-qt-config.cmake.in Copyright: 2015 Luís Pereira License: BSD-3-Clause -Files: cmake/Qt5PatchedLinguistToolsMacros.cmake -Copyright: 2005-2011 Kitware, Inc. -License: BSD-3-Clause - -Files: src/xdndworkaround.* -Copyright: 2016 Hong Jen Yee (PCMan) -License: LGPL-2.1+ - Files: debian/* Copyright: 2014-2015 Wen Liao 2014-2016 ChangZhuo Chen (陳昌倬) diff --git a/debian/libfm-qt3.install b/debian/libfm-qt3.install index 3615ae2..3de3b10 100644 --- a/debian/libfm-qt3.install +++ b/debian/libfm-qt3.install @@ -1,2 +1 @@ usr/lib/*/*.so.* -usr/share/libfm-qt/translations/* diff --git a/debian/rules b/debian/rules index 79e7436..45e468f 100755 --- a/debian/rules +++ b/debian/rules @@ -1,9 +1,16 @@ #!/usr/bin/make -f -#DH_VERBOSE = 1 +# export DH_VERBOSE = 1 -export DEB_BUILD_MAINT_OPTIONS = hardening=+all +export LC_ALL=C.UTF-8 export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed +export DEB_BUILD_MAINT_OPTIONS = hardening=+all %: dh ${@} --buildsystem cmake \ - --parallel + --fail-missing + +override_dh_auto_configure: + dh_auto_configure -- \ + -DPULL_TRANSLATIONS=OFF \ + -DUPDATE_TRANSLATIONS=OFF \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc index 05cd1df..4936633 100644 --- a/debian/upstream/signing-key.asc +++ b/debian/upstream/signing-key.asc @@ -1,63 +1,50 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2.0.22 (GNU/Linux) -mQINBFJevCYBEACx+Hvy+Vsuf+V5jeLUnzjAmHoy8DfTeGWr3ts30IapLHrfi0+U -WpzNnISO77yTr4VNboVZH+GHM/rnPfieODfB4ZW6CZLlInMSKUXcgQsEqXpyBZhA -Ib/SPy2bOfHly1uRJes0uRDsH5+v/hD74sByfnjQlrvI68O6wvGZmDFMNNPVO8+/ -OWBSBNkBuVrrZOMSPsLwQGJ4UtUQ4whburaPJG4VZJc5DLbzJGbEuACc0IAEYJS3 -7AfXVXn4j4Gc9F3o1xTUnbOBnwGPquWwUIm3FM7Ec2OdkvMt3EwvnkMAfeVrq3iE -FDD/KZTxdL0BZH3QD8gB7Jm4v4f3Nkobg6JCvCbcH3wBdZW4mASbwWzfRaDC2zHb -ErTglD7PpShLKZZ0pr9okWZEGw4Ku3q8ALi1JXK/ePTmsBlvkVskOJ3Nnd0avgH4 -+Q/vZoKfH8EhNY745rI+8CE9iv6V9XiSUt4CKEWAENt4A8hq6U2vV+jZv3B6AgD7 -ZjiI59yD4YuYubu8rCnNizTgh1voVw3ietknn/x2H5yH8fByWZ5uL87C0ky/uma6 -ZGbiiAtM4kdkyDMrfRV5nlEG9EKAGPVu5mjeSCrfkETwZ9OFPz1AuDye4ZEXrrcC -iRQ7RX6/GtW18aHER0kzGnfwx5KJzkDrRBY8A2PdXLBcrsN4WpK9EX01PQARAQAB -tCNKZXJvbWUgTGVjbGFuY2hlIDxqZXJvbWVAbGVjbGFuLmNoPokCPwQTAQIAKQUC -Ul68JgIbAwUJAeEzgAcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEDfgrx/a -SPNzSHIP/1ewXcC0TFBcvDD7MrIP7anyNfiWfW7cxkR8GSamkg6HTa6Ndyr1FFjJ -OoDFUP37jWhu59CsHxs2D0zRWJktezfvElscRgqbHcdpIznqsGdI8hXCZafhBGVb -sdAB2LRawcXGxnXt7XajPcSVwLWRE62caBqohznU2iWvI780WNjEbZoA0LhZwaFF -UUPJm8ea9v0IkZVKUyg9WONZ1U7FEG9SaEiSpI8kJdx1fvCwZVDV/NRO5GqnJaho -P1LCne4YdwS6pt1/fRgk32IHxxZfHlLzLHxb6v1JmIg72x28qCmGyK9oFBDbbnYu -6Aq8XbHogOrD5vJM2Pfm2IhV0+JHOjfQbddv8tsAH1M+LI+tToXmg5st1AU3wnTn -pda3hjA1avKwkfBPW/osHc8782ViyS9iX2e9iDtMv608guij4NjpGExzGCypHOd8 -+VXRwJDjvgDynkL206MZ+wn0j5wHsIE8F3Y5Bp1thQOrdDli5MYNQoXhjFmH46XT -bcr84IgW0+AiXZdoFUqvwtzrWy2Onuw5R3k4OyV4skN4DkWXyAk/V+Y4K39JvTKf -H9YuiQ9blNzCu8WiAnjKnh9kNl9E/TyEwI6cHFmIPqF8ST9tJytWHtrKvU9csvXX -n8XNJmpcv2R1e6N+VuWWm5zUPTouv3AxCacLbm8Lh3ymGsk7ZEyhiQIcBBABAgAG -BQJSsFYyAAoJEBMY76xfu9vO6v0P/3wSj3/kE4nP4HfgcVJSzi+lm1ycpbLDZtgh -P1G+zJLVmA+E41vEZimeiYQxBAelatJz+CHzQo3LZ2oVChzVrZcVHn9k4P3pib69 -qCVif3/y0Wmecn+u2TWbOvJ7mthfO7T3W7rkW1/9ES7bUaXcXWQ2sjUBVqFkFsVt -xgJDo8wcxA+K4Yf06GCbxFwrB7X5GraWIkzqGnyse3XAQn8aORAXmE8Yd0FHOjEZ -Beb9shChnkYc3lEvNY8ioCaYSF9xr/Iz9cwpfPkpqFiVYWadtb+Gqeh6zC7vPmcT -zHxrgkq1WwQlSBm724tPt9xuGQoOglqEa23vlQZfv20nyrYjLeYUy6pMCRq7vn/n -nkQOcXF7yQlnqR6xKk0tWsM4e6du0ZvbjBbhHV/kBFVGCLm/upTwoMVm0WJTbr4T -5XfIZo7eA0lvGtUhe1PgcOidBikHfAIfYxu0BoMXoL4jbcQdR5+YBDEfsS0jPhCl -mew2ScW/R/UhUknJUVFTma0KHXzEmKiqeeUCDtwEi6fxdicAYkbcekgkfFiD/w8N -Lk3Uf+0x2MdKA36nUobFkk38oU+GW37kFWJs3f1YRuQFao896eNW/E8ekVMLNxOl -nCjnSbabaxDnxPTyW2KlNjf/QUEK4pT6S5QmuCSrle3PQpaSbAZDHzLBIL9gd3m6 -MH7+SvV4uQINBFJevCYBEADiXDUqstSdhIyuionS2KtE3IeEBIqS7GY8QPRBylIZ -ACVHFI/1HxChBqYVGFaDEQn3gj5lUUQPubfWaxzjF6+UNVQW4+cxmTocndAwfDbI -+E5BLdieFUzbAA05MV5ZjPhTNbSk1jpy4bNy0FILwNqc89Y6SoCbv1r3tZLCrBas -1+AfWknBynx0siGMbLFxtzR6hUkNz9URxt13FrzpUWMpAL8ZQGczOTSaWLrZA5l9 -xLzJ9ww8uM+C2Xej3/sANxi+kQE2GVMKurPS0TICwVWZxbdW/ytIkO67Rhse0q3t -vzjdawfCFRxv7XQB2ZJ6irDxbpHiJoojSWCHJadIyCG03iOiaqsSVvi4KnxtUck+ -udOEJUV5sxdzgeRrsDpeaN//KCWW9WjfsSkvOqP6S1gmWpNFdzF5XrzcgvqvSNqo -XejfakUTJqsIIEHO0zGuJFVzJNh2hQ/9dhjIspUORhtNKaljNvePiBrj2yqmd9PY -FlH1KMHe4H+YVIwPiyeNA87Pu+1yNo8gT7mXhGRfibgWjbt146WUJ7+l2StJMApn -eNSCartNaUNPnw96i2l5c9AsJ3SWC6XWpWzOLVj+9XceeA11lu/ogqEMHzx81NjH -2TePxwKTKxZnAvDmqryp++IgY2/OgIoIk3ZRdYu/dPijTOYWfCet/9/9kAFr9PeJ -KwARAQABiQIlBBgBAgAPBQJSXrwmAhsMBQkB4TOAAAoJEDfgrx/aSPNzJv0QAKkx -lCKEZ6ahAUuNWslsHnNWaHFHNawEO3NIEtQZGVFk2BYISupizvjZF6MnymO/9UFM -pzV6fp3xNdqaKWQBjScOgMgCASRixW2tMAKbJGHZKp3dBixpHgXxy2oOGMS+mQ5m -gWy07usq2YesoMD0K/SG6EnoRPHBvrJihArzMFVUY9hD3hk8bhiy8w9bCYFe+gkm -zpQl3/KN01kyt5LjzEBcIOw8qIBQe9Pk8PyOK75lPoNME714LatgOsyw2kaSQ9Sv -hziRGC5z/fV3PmH7XhSjENPKnCJU51GUMMLaL28t9o7Afh6Q8UV31/JO36vmQXQV -+b+0BoGqEmf3AKBASb2Cr2q4pZFjywwSUXHZ9hQyu1tpbE1dS6aI01kM0y270pk7 -W/ajuzuOxAVL1bJAanL/5+DWM03esZPVdEWhxpWEM40Z6Rhq+Xb2a5xfwCN9PmaQ -o9fez0I+yh53s7Ypv0tBj05FPe5L48+pDi6pz5nddN1B0FzF58jVfsBZUjBlY24+ -VwQeAaWkRXZrSEdtBS5ufsi80x/cNCSTJBWqtborKL1iGgf5MDPYRMSvmZXAeIld -pyL/0pbW7iokewyKzpFfo7KEbwLxB+flWaBZ867JpF4yyRj3b4qcvcyV8QnsoB7Z -KhxTl3gGwD/t0HUcu85zcfs4GkealYhIWfGaAso2 -=fF8P +mQINBFXQeMMBEACif4+9pTrC6uNmRng0ZbzLh7p3cazmbnp2YFgDQDJZ7ZNmebxy +ngRuRhjGuDcFAL/37BwJnrBpfZFK9ljoH4Fo5Jm9cOELaTy7AIcEiV9dKMyrKF1E +C76d8jHVuzuPbI92DkFdLZAdk+qjrrAy0x43PvUd+aaBGLcFs1ZMk7gOvElc2d95 +zWWSp5anjukmGbp+EsStnWJkF6VHj56qmklfYy5ioiVBOSpXo/RsACAcIlz8C8A1 +d4tNMiB2uF2OrUfrL8DD6m3nBqep+AYbIQrxMl9kUQH3I33e9kH/L+SHQyE6phS8 +Czq06WjV4TcJ9VWxm7hQCNLYSxhZYYr1AW45lS5+xmfBOq2qeLgvjbFxa8PPrsp6 +Bqgt8MjwUkXjU5IB7YulUBvFU2l0MJZWDBuNy0oNtCe1cU3JyIqLKjvzQQQ9eD5L +o3Ul704TLHz0z+67Rxh05Mi4JvyFMjnooSJkNH8/7yXoBN0ZGOh1/5zMU1gK5bmP +6hKgis2exSZNIS74mF6/PqGgcwk3PyI4T3keUQoNPj11M2EznLHxY19QZfQ5oMed +8xOlHKjpcm8PYMB4gduNXlV7gI9h7UxuC5GuPiP2lmM6wUyHu48divxDk5UYgPEC +xlPI2wHCNDsuy0EruCYIvrMSZfpYCCSrmXiOORBLO5qXkauILLkJarHqjQARAQAB +tCBBbGYgR2FpZGEgPGFnYWlkYUBzaWR1Y3Rpb24ub3JnPokCOAQTAQIAIgUCVdB4 +wwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQQsnI069epeOT2xAAgSHf +41103cnElGf6TokPl4J6hdRPy2CUAjmBtMfr8eajYvGDGgnmsh9AGYGURjfFVCCf +Ag+8b6nF3xg03UmgsuSO8H78HGv9kKzF9aHmLt+SXq3jUX+LnIkFHErZWjFAKdJr +luu1j6ltxLe9PQljxZnugzMaUbW8eEPKvcriiDn3S4/DtikW/jpGA0MTY4ZWs9pZ +L/6iRRH99L2X/cWO4sCgDXCTt4oK0f5OvwiuCoVOM+PYoIm31JICCKOlqamkCn7d +2KH3nsy0v7tXgnrnb/zr8jVGsZLzUE51AFOzb5Ec74/2SAq8X4gbTppttLXEIooq +nbepitW/PePkPY5gpfwHtFbl88qFnir+ABMefqRZkzeh0tsxJVLVHGP1KZykXpv7 +96A6Q1h7Zo9Ny7WwN5Xl02g35LVCaPyzd3A8A4315uMuP3iziq57UktKqh9d5S3t +jfK7e9UfFQZBLfxn2sNPsjdYSNUQp/PXTTk/599h359WVuUIR866T8K7N7EEon3p +qLItZljQ9Nmr/yGwKi9iQgi2LtZj5KUcF1zBLzZKf95FvoqSZqBXdFSjm+eYGaCH +Q2IBnhyP92lEknSK9ystUJXmY69tQKBFqJxScwaS+7a/rfLKssQjSWxqk+SX4QeW +e9z9FUpo71bq0Zkc/M9aOCoEEmhg4Ob/JWy08oC5Ag0EVdB4wwEQAKZDCc/C41y0 +omLFCAJybvHiFScM+jOpyGpQvceoviEhIT7h1br/pnSEMkgPQEDPWJGtKueg1/94 +sXTH24uefr3Y6JdZoBtprxl4JXUoOndgq1QH1xuUsy3/9YWU8Qboy9j8a8w0oCDE +T8Z03KHCwqzD3K+44jhmhF+0eLoaaY8ohS8ziP+DcFKVHyatmS5yCCdjVrj6PxMp +uy/y5SXT1kmiPdVAIzQlM5DlN6o46TV+BH0pPvVYjtwf31o0FckJxy5S1v0koCNB +vX2b7tTDPKzn8G18eUVhGoUTZBUCp1gg36wJ0YY4xgZ9vI/xDCeHeAkyvGtaTAoy +qP4rHoUO5KVRSDh7frSlrdbLGWHaQwOhcqoKd4qP/164wHPGkgHL1vztdOc7l1wx +q3gMh2uwmJR0NRrw4WVuaIqL9lEbGBNijlmGsuqXfsMRhc/qoqgVDWvrcCtEoOwl +TONGobW3jpCCjpa9SeGNjxuY6IVLn0lfX4hItNVY9sFA+H+yj4uBQ7zsmMUXafxt +Yllm0f98yGNg5lnJg4bLOYu3IkpogUKNA3qkZ+6vRtwH70/bJGp7qdx/3G4W5dMX +asd/rJjdELW+R/NVULAmK1ETSklaa3Z6vbTu8bN8gvP8pmMJ8f/U8+qzkuAqc201 +Z4O+s7ZsQfTiz5mm7zPGIYTnppDSno/rABEBAAGJAh8EGAECAAkFAlXQeMMCGwwA +CgkQQsnI069epeMt0g/+JrwLhULD6NOxaLgxboh/KZkh/7ViU4cB+QPT8JIcWxkZ +zj8uk85TUitEUzKmjp/ItCrhQE5WNNWbz/FBnAuLtaQuHhcHMA3Vu95UUCGi1vyZ +ZRlS3YRM6S9BOzrjG7fGQJmO/RU3g6rb0TAwGFxDHj8t4JEDTc3zASG7wV/VTn06 +d8XIH9CZOw3kUuhkQ3OR/PEj1BCeCC+caC+tBjO0fgvDp8RV7NFQQ9kH8R3/xlWd +6KMPtILE6fUft6LubWRGd1P5JBuzXivELolASajewbYtL/s87CCji3ngq0aT9raK +m02wqFzNbX1iv+w2iqPQXq6pdRyxtJ8+Q8Z7zEBGJS5nkrYjsLTduZIjJHYHYH7f +3/ydVjQ3z12iqHKElgaRI7RUmpNiNxVIr+TtuxzeC6G+CF++XNkUtJODvCmRaoJS +waYsitz8+LSv3tawZJ0iQkKc9nerQMuBD+AzIr3i4NgXiEIN513esUtnKzeyIIsL +ntUcBjXKuLCj8OZrZtexjq7edWWbN57/3ikyS2Z7y0i3O30qk5jmccSaS6kA7xTY +WCDFzbN2v2y+vGu9KYn+2HtrP2BtNa8JTh3waNeLUTpn4GV4mMrsZjOy6vhhHb91 +1TKfI1gvjk7lE9xaWmcDjdI55dw3jIq8kK9SdgORGq9/S3g7KJNRjme+6GjqQfk= +=h7ww -----END PGP PUBLIC KEY BLOCK----- diff --git a/debian/watch b/debian/watch index 0be7d26..376decb 100644 --- a/debian/watch +++ b/debian/watch @@ -1,3 +1,3 @@ -version=3 +version=4 opts="pgpsigurlmangle=s/$/.asc/" \ - https://github.com/lxde/libfm-qt/releases .*/([\d\.]+).tar.gz + https://github.com/lxde/libfm-qt/releases .*/libfm-qt-([\d\.]+).tar.xz diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 14cd663..f6ceea0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,10 +1,9 @@ -set(libfm_TRANSLATION_TEMPLATE ${PROJECT_NAME}) - include_directories( "${LIBFM_INCLUDE_DIRS}" "${LIBFM_INCLUDEDIR}/libfm" # to workaround incorrect #include in fm-actions. "${LIBMENUCACHE_INCLUDE_DIRS}" "${SYSTEM_LIBS_INCLUDE_DIRS}" + "${XCB_INCLUDE_DIRS}" ) link_directories( @@ -51,7 +50,6 @@ set(libfm_SRCS dndactionmenu.cpp editbookmarksdialog.cpp thumbnailloader.cpp - path.cpp execfiledialog.cpp appchoosercombobox.cpp appmenuview.cpp @@ -78,7 +76,11 @@ qt5_wrap_ui(libfm_UIS_H ${libfm_UIS}) lxqt_translate_ts(QM_FILES UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS} SOURCES ${libfm_SRCS} ${libfm_UIS} - TEMPLATE ${libfm_TRANSLATION_TEMPLATE} + INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/libfm-qt/translations" + PULL_TRANSLATIONS ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC ${TRANSLATIONS_REFSPEC} ) add_library(${LIBFM_QT_LIBRARY_NAME} SHARED @@ -110,6 +112,7 @@ target_link_libraries(${LIBFM_QT_LIBRARY_NAME} ${LIBFM_LIBRARIES} ${LIBMENUCACHE_LIBRARIES} ${SYSTEM_LIBS_LIBRARIES} + ${XCB_LIBRARIES} ) # set libtool soname @@ -130,11 +133,11 @@ install(FILES COMPONENT Devel ) +file(GLOB libfm_HS "${CMAKE_CURRENT_SOURCE_DIR}/*.h") # install include header files (FIXME: can we make this cleaner? should dir name be versioned?) -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/" +install(FILES ${libfm_HS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/libfm-qt" COMPONENT Devel - FILES_MATCHING PATTERN "*.h" ) generate_export_header(${LIBFM_QT_LIBRARY_NAME} @@ -188,11 +191,5 @@ else() ) endif() -install(FILES - ${QM_FILES} - DESTINATION "${CMAKE_INSTALL_DATADIR}/libfm-qt/translations" - COMPONENT Runtime -) - # prevent the generated files from being deleted during make cleaner set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true) diff --git a/src/appchoosercombobox.cpp b/src/appchoosercombobox.cpp index 5420930..bdd6cfe 100644 --- a/src/appchoosercombobox.cpp +++ b/src/appchoosercombobox.cpp @@ -26,11 +26,11 @@ namespace Fm { AppChooserComboBox::AppChooserComboBox(QWidget* parent): QComboBox(parent), - defaultApp_(NULL), + mimeType_(NULL), appInfos_(NULL), + defaultApp_(NULL), defaultAppIndex_(-1), prevIndex_(0), - mimeType_(NULL), blockOnCurrentIndexChanged_(false) { // the new Qt5 signal/slot syntax cannot handle overloaded methods by default diff --git a/src/appchooserdialog.cpp b/src/appchooserdialog.cpp index 0a2b19d..c331c7e 100644 --- a/src/appchooserdialog.cpp +++ b/src/appchooserdialog.cpp @@ -27,10 +27,10 @@ namespace Fm { AppChooserDialog::AppChooserDialog(FmMimeType* mimeType, QWidget* parent, Qt::WindowFlags f): QDialog(parent, f), + ui(new Ui::AppChooserDialog()), mimeType_(NULL), - selectedApp_(NULL), canSetDefault_(true), - ui(new Ui::AppChooserDialog()) { + selectedApp_(NULL) { ui->setupUi(this); connect(ui->appMenuView, &AppMenuView::selectionChanged, this, &AppChooserDialog::onSelectionChanged); diff --git a/src/appinfo.h b/src/appinfo.h new file mode 100644 index 0000000..e69de29 diff --git a/src/appmenuview.cpp b/src/appmenuview.cpp index 6804120..c66dc86 100644 --- a/src/appmenuview.cpp +++ b/src/appmenuview.cpp @@ -26,10 +26,10 @@ namespace Fm { AppMenuView::AppMenuView(QWidget* parent): + QTreeView(parent), model_(new QStandardItemModel()), menu_cache(NULL), - menu_cache_reload_notify(NULL), - QTreeView(parent) { + menu_cache_reload_notify(NULL) { setHeaderHidden(true); setSelectionMode(SingleSelection); diff --git a/src/archiver.h b/src/archiver.h new file mode 100644 index 0000000..9688327 --- /dev/null +++ b/src/archiver.h @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_ARCHIVER_H__ +#define __LIBFM_QT_FM_ARCHIVER_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Archiver { +public: + + + // default constructor + Archiver() { + dataPtr_ = nullptr; + } + + + // move constructor + Archiver(Archiver&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~Archiver() { + if(dataPtr_ != nullptr) { + (dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Archiver wrapPtr(FmArchiver* dataPtr) { + Archiver obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmArchiver* takeDataPtr() { + FmArchiver* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmArchiver* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmArchiver*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + + // move assignment + Archiver& operator=(Archiver&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void setDefault(void) { + fm_archiver_set_default(dataPtr()); + } + + + static Archiver getDefault( ) { + return wrapPtr(fm_archiver_get_default()); + } + + + bool extractArchivesTo(GAppLaunchContext* ctx, FmPathList* files, FmPath* dest_dir) { + return fm_archiver_extract_archives_to(dataPtr(), ctx, files, dest_dir); + } + + + bool extractArchives(GAppLaunchContext* ctx, FmPathList* files) { + return fm_archiver_extract_archives(dataPtr(), ctx, files); + } + + + bool createArchive(GAppLaunchContext* ctx, FmPathList* files) { + return fm_archiver_create_archive(dataPtr(), ctx, files); + } + + + bool isMimeTypeSupported(const char* type) { + return fm_archiver_is_mime_type_supported(dataPtr(), type); + } + + +// the wrapped object cannot be copied. +private: + Archiver(const Archiver& other) = delete; + Archiver& operator=(const Archiver& other) = delete; + + +private: + FmArchiver* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_ARCHIVER_H__ diff --git a/src/bookmarks.h b/src/bookmarks.h new file mode 100644 index 0000000..0545189 --- /dev/null +++ b/src/bookmarks.h @@ -0,0 +1,163 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_BOOKMARKS_H__ +#define __LIBFM_QT_FM_BOOKMARKS_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Bookmarks { +public: + + + // default constructor + Bookmarks() { + dataPtr_ = nullptr; + } + + + Bookmarks(FmBookmarks* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Bookmarks(const Bookmarks& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Bookmarks(Bookmarks&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~Bookmarks() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Bookmarks wrapPtr(FmBookmarks* dataPtr) { + Bookmarks obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmBookmarks* takeDataPtr() { + FmBookmarks* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmBookmarks* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmBookmarks*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Bookmarks& operator=(const Bookmarks& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Bookmarks& operator=(Bookmarks&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + GList* getAll(void) { + return fm_bookmarks_get_all(dataPtr()); + } + + + void rename(FmBookmarkItem* item, const char* new_name) { + fm_bookmarks_rename(dataPtr(), item, new_name); + } + + + void reorder(FmBookmarkItem* item, int pos) { + fm_bookmarks_reorder(dataPtr(), item, pos); + } + + + void remove(FmBookmarkItem* item) { + fm_bookmarks_remove(dataPtr(), item); + } + + + FmBookmarkItem* insert(FmPath* path, const char* name, int pos) { + return fm_bookmarks_insert(dataPtr(), path, name, pos); + } + + + static Bookmarks dup(void ) { + return Bookmarks::wrapPtr(fm_bookmarks_dup()); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_BOOKMARKS_H__ diff --git a/src/config.h b/src/config.h new file mode 100644 index 0000000..d1cffd9 --- /dev/null +++ b/src/config.h @@ -0,0 +1,152 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_CONFIG_H__ +#define __LIBFM_QT_FM_CONFIG_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Config { +public: + + + Config(void ) { + dataPtr_ = reinterpret_cast(fm_config_new()); + } + + + Config(FmConfig* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Config(const Config& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Config(Config&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~Config() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Config wrapPtr(FmConfig* dataPtr) { + Config obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmConfig* takeDataPtr() { + FmConfig* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmConfig* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmConfig*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Config& operator=(const Config& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Config& operator=(Config&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void emitChanged(const char* changed_key) { + fm_config_emit_changed(dataPtr(), changed_key); + } + + + void save(const char* name) { + fm_config_save(dataPtr(), name); + } + + + void loadFromKeyFile(GKeyFile* kf) { + fm_config_load_from_key_file(dataPtr(), kf); + } + + + void loadFromFile(const char* name) { + fm_config_load_from_file(dataPtr(), name); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_CONFIG_H__ diff --git a/src/deepcountjob.h b/src/deepcountjob.h new file mode 100644 index 0000000..1eda2fe --- /dev/null +++ b/src/deepcountjob.h @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_DEEP_COUNT_JOB_H__ +#define __LIBFM_QT_FM_DEEP_COUNT_JOB_H__ + +#include +#include +#include +#include "libfmqtglobals.h" +#include "job.h" + +namespace Fm { + + +class LIBFM_QT_API DeepCountJob: public Job { +public: + + + DeepCountJob(FmPathList* paths, FmDeepCountJobFlags flags) { + dataPtr_ = reinterpret_cast(fm_deep_count_job_new(paths, flags)); + } + + + // default constructor + DeepCountJob() { + dataPtr_ = nullptr; + } + + + DeepCountJob(FmDeepCountJob* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + DeepCountJob(const DeepCountJob& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + DeepCountJob(DeepCountJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + + // create a wrapper for the data pointer without increasing the reference count + static DeepCountJob wrapPtr(FmDeepCountJob* dataPtr) { + DeepCountJob obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmDeepCountJob* takeDataPtr() { + FmDeepCountJob* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmDeepCountJob* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmDeepCountJob*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + DeepCountJob& operator=(const DeepCountJob& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + DeepCountJob& operator=(DeepCountJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void setDest(dev_t dev, const char* fs_id) { + fm_deep_count_job_set_dest(dataPtr(), dev, fs_id); + } + + + +}; + + +} + +#endif // __LIBFM_QT_FM_DEEP_COUNT_JOB_H__ diff --git a/src/dirlistjob.h b/src/dirlistjob.h new file mode 100644 index 0000000..0c509a8 --- /dev/null +++ b/src/dirlistjob.h @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_DIR_LIST_JOB_H__ +#define __LIBFM_QT_FM_DIR_LIST_JOB_H__ + +#include +#include +#include +#include "libfmqtglobals.h" +#include "job.h" + +namespace Fm { + + +class LIBFM_QT_API DirListJob: public Job { +public: + + + DirListJob(FmPath* path, gboolean dir_only) { + dataPtr_ = reinterpret_cast(fm_dir_list_job_new(path, dir_only)); + } + + + // default constructor + DirListJob() { + dataPtr_ = nullptr; + } + + + DirListJob(FmDirListJob* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + DirListJob(const DirListJob& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + DirListJob(DirListJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + + // create a wrapper for the data pointer without increasing the reference count + static DirListJob wrapPtr(FmDirListJob* dataPtr) { + DirListJob obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmDirListJob* takeDataPtr() { + FmDirListJob* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmDirListJob* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmDirListJob*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + DirListJob& operator=(const DirListJob& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + DirListJob& operator=(DirListJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void addFoundFile(FmFileInfo* file) { + fm_dir_list_job_add_found_file(dataPtr(), file); + } + + + void setIncremental(gboolean set) { + fm_dir_list_job_set_incremental(dataPtr(), set); + } + + + FmFileInfoList* getFiles(void) { + return fm_dir_list_job_get_files(dataPtr()); + } + + + static DirListJob newForGfile(GFile* gf) { + return DirListJob::wrapPtr(fm_dir_list_job_new_for_gfile(gf)); + } + + + static DirListJob new2(FmPath* path, FmDirListJobFlags flags) { + return DirListJob::wrapPtr(fm_dir_list_job_new2(path, flags)); + } + + + +}; + + +} + +#endif // __LIBFM_QT_FM_DIR_LIST_JOB_H__ diff --git a/src/dirtreemodelitem.cpp b/src/dirtreemodelitem.cpp index 05b6486..602ff3d 100644 --- a/src/dirtreemodelitem.cpp +++ b/src/dirtreemodelitem.cpp @@ -25,25 +25,25 @@ namespace Fm { DirTreeModelItem::DirTreeModelItem(): - model_(nullptr), + fileInfo_(nullptr), folder_(nullptr), expanded_(false), loaded_(false), - fileInfo_(nullptr), + parent_(nullptr), placeHolderChild_(nullptr), - parent_(nullptr) { + model_(nullptr) { } DirTreeModelItem::DirTreeModelItem(FmFileInfo* info, DirTreeModel* model, DirTreeModelItem* parent): - model_(model), - folder_(nullptr), - expanded_(false), - loaded_(false), fileInfo_(fm_file_info_ref(info)), + folder_(nullptr), displayName_(QString::fromUtf8(fm_file_info_get_disp_name(info))), icon_(IconTheme::icon(fm_file_info_get_icon(info))), + expanded_(false), + loaded_(false), + parent_(parent), placeHolderChild_(nullptr), - parent_(parent) { + model_(model) { if(info) addPlaceHolderChild(); diff --git a/src/dirtreeview.cpp b/src/dirtreeview.cpp index de7e589..8b58374 100644 --- a/src/dirtreeview.cpp +++ b/src/dirtreeview.cpp @@ -30,8 +30,8 @@ namespace Fm { DirTreeView::DirTreeView(QWidget* parent): - currentExpandingItem_(NULL), - currentPath_(NULL) { + currentPath_(NULL), + currentExpandingItem_(NULL) { setSelectionMode(QAbstractItemView::SingleSelection); setHeaderHidden(true); @@ -66,7 +66,7 @@ void DirTreeView::expandPendingPath() { if(pathsToExpand_.isEmpty()) return; - FmPath* path = pathsToExpand_.first().data(); + FmPath* path = pathsToExpand_.first(); // qDebug() << "expanding: " << Path(path).displayBasename(); DirTreeModel* _model = static_cast(model()); DirTreeModelItem* item = _model->itemFromPath(path); diff --git a/src/dnddest.cpp b/src/dnddest.cpp index 71cabb3..daf22f2 100644 --- a/src/dnddest.cpp +++ b/src/dnddest.cpp @@ -44,13 +44,13 @@ bool DndDest::dropMimeData(const QMimeData* data, Qt::DropAction action) { FmPathList* srcPaths = pathListFromQUrls(data->urls()); switch(action) { case Qt::CopyAction: - FileOperation::copyFiles(srcPaths, destPath_.data()); + FileOperation::copyFiles(srcPaths, destPath_); break; case Qt::MoveAction: - FileOperation::moveFiles(srcPaths, destPath_.data()); + FileOperation::moveFiles(srcPaths, destPath_); break; case Qt::LinkAction: - FileOperation::symlinkFiles(srcPaths, destPath_.data()); + FileOperation::symlinkFiles(srcPaths, destPath_); default: fm_path_list_unref(srcPaths); return false; diff --git a/src/dummymonitor.h b/src/dummymonitor.h new file mode 100644 index 0000000..1570250 --- /dev/null +++ b/src/dummymonitor.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_DUMMY_MONITOR_H__ +#define __LIBFM_QT_FM_DUMMY_MONITOR_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + + +} + +#endif // __LIBFM_QT_FM_DUMMY_MONITOR_H__ diff --git a/src/execfiledialog.cpp b/src/execfiledialog.cpp index dcf420a..3759d0b 100644 --- a/src/execfiledialog.cpp +++ b/src/execfiledialog.cpp @@ -25,9 +25,9 @@ namespace Fm { ExecFileDialog::ExecFileDialog(FmFileInfo* file, QWidget* parent, Qt::WindowFlags f): QDialog (parent, f), + ui(new Ui::ExecFileDialog()), fileInfo_(fm_file_info_ref(file)), - result_(FM_FILE_LAUNCHER_EXEC_CANCEL), - ui(new Ui::ExecFileDialog()) { + result_(FM_FILE_LAUNCHER_EXEC_CANCEL) { ui->setupUi(this); // show file icon diff --git a/src/file-props.ui b/src/file-props.ui index c0b3918..23dd661 100644 --- a/src/file-props.ui +++ b/src/file-props.ui @@ -126,7 +126,7 @@ - Mime type: + MIME type: diff --git a/src/file.h b/src/file.h new file mode 100644 index 0000000..8902cda --- /dev/null +++ b/src/file.h @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_FILE_H__ +#define __LIBFM_QT_FM_FILE_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API File { +public: + + + // default constructor + File() { + dataPtr_ = nullptr; + } + + + File(FmFile* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + File(const File& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + File(File&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~File() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static File wrapPtr(FmFile* dataPtr) { + File obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmFile* takeDataPtr() { + FmFile* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmFile* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmFile*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + File& operator=(const File& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + File& operator=(File&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + static GFile* newForCommandlineArg(const char* arg) { + return fm_file_new_for_commandline_arg(arg); + } + + + static GFile* newForUri(const char* uri) { + return fm_file_new_for_uri(uri); + } + + + static bool wantsIncremental(GFile* file) { + return fm_file_wants_incremental(file); + } + + + static void addVfs(const char* name, FmFileInitTable* init) { + fm_file_add_vfs(name, init); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_FILE_H__ diff --git a/src/fileinfo.h b/src/fileinfo.h new file mode 100644 index 0000000..3322cbd --- /dev/null +++ b/src/fileinfo.h @@ -0,0 +1,511 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_FILE_INFO_H__ +#define __LIBFM_QT_FM_FILE_INFO_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API FileInfoList { +public: + + + FileInfoList( ) { + dataPtr_ = reinterpret_cast(fm_file_info_list_new()); + } + + + FileInfoList(FmFileInfoList* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_list_ref(FM_LIST(dataPtr))) : nullptr; + } + + + // copy constructor + FileInfoList(const FileInfoList& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_list_ref(FM_LIST(other.dataPtr_))) : nullptr; + } + + + // move constructor + FileInfoList(FileInfoList&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~FileInfoList() { + if(dataPtr_ != nullptr) { + fm_list_unref(FM_LIST(dataPtr_)); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static FileInfoList wrapPtr(FmFileInfoList* dataPtr) { + FileInfoList obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmFileInfoList* takeDataPtr() { + FmFileInfoList* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmFileInfoList* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmFileInfoList*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + FileInfoList& operator=(const FileInfoList& other) { + if(dataPtr_ != nullptr) { + fm_list_unref(FM_LIST(dataPtr_)); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_list_ref(FM_LIST(other.dataPtr_))) : nullptr; + return *this; + } + + + // move assignment + FileInfoList& operator=(FileInfoList&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + bool isSameFs(void) { + return fm_file_info_list_is_same_fs(dataPtr()); + } + + + bool isSameType(void) { + return fm_file_info_list_is_same_type(dataPtr()); + } + + + bool isEmpty() { + return fm_file_info_list_is_empty(dataPtr()); + } + + unsigned int getLength() { + return fm_file_info_list_get_length(dataPtr()); + } + + FmFileInfo* peekHead() { + return fm_file_info_list_peek_head(dataPtr()); + } + + GList* peekHeadLink() { + return fm_file_info_list_peek_head_link(dataPtr()); + } + + void pushTail(FmFileInfo* d) { + fm_file_info_list_push_tail(dataPtr(), d); + } + + void pushTailLink(GList* d) { + fm_file_info_list_push_tail_link(dataPtr(), d); + } + + FmFileInfo* popHead(){ + return fm_file_info_list_pop_head(dataPtr()); + } + + void deleteLink(GList* _l) { + fm_file_info_list_delete_link(dataPtr(), _l); + } + + void clear() { + fm_file_info_list_clear(dataPtr()); + } + + +private: + FmFileInfoList* dataPtr_; // data pointer for the underlying C struct + +}; + + + +class LIBFM_QT_API FileInfo { +public: + + + FileInfo( ) { + dataPtr_ = reinterpret_cast(fm_file_info_new()); + } + + + FileInfo(FmFileInfo* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_file_info_ref(dataPtr)) : nullptr; + } + + + // copy constructor + FileInfo(const FileInfo& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_file_info_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + FileInfo(FileInfo&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~FileInfo() { + if(dataPtr_ != nullptr) { + fm_file_info_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static FileInfo wrapPtr(FmFileInfo* dataPtr) { + FileInfo obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmFileInfo* takeDataPtr() { + FmFileInfo* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmFileInfo* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmFileInfo*() { + return dataPtr(); + } + + + // copy assignment + FileInfo& operator=(const FileInfo& other) { + if(dataPtr_ != nullptr) { + fm_file_info_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_file_info_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + FileInfo& operator=(FileInfo&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + bool canSetHidden(void) { + return fm_file_info_can_set_hidden(dataPtr()); + } + + + bool canSetIcon(void) { + return fm_file_info_can_set_icon(dataPtr()); + } + + + bool canSetName(void) { + return fm_file_info_can_set_name(dataPtr()); + } + + + bool canThumbnail(void) { + return fm_file_info_can_thumbnail(dataPtr()); + } + + + dev_t getDev(void) { + return fm_file_info_get_dev(dataPtr()); + } + + + gid_t getGid(void) { + return fm_file_info_get_gid(dataPtr()); + } + + + uid_t getUid(void) { + return fm_file_info_get_uid(dataPtr()); + } + + const char* getDispGroup() { + return fm_file_info_get_disp_group(dataPtr()); + } + + const char* getFsId() { + return fm_file_info_get_fs_id(dataPtr()); + } + + FmIcon* getIcon(void) { + return fm_file_info_get_icon(dataPtr()); + } + + + time_t getCtime(void) { + return fm_file_info_get_ctime(dataPtr()); + } + + + time_t getAtime(void) { + return fm_file_info_get_atime(dataPtr()); + } + + + time_t getMtime(void) { + return fm_file_info_get_mtime(dataPtr()); + } + + + const char* getTarget() { + return fm_file_info_get_target(dataPtr()); + } + + const char* getCollateKey() { + return fm_file_info_get_collate_key(dataPtr()); + } + + const char* getCollateKeyNoCaseFold() { + return fm_file_info_get_collate_key_nocasefold(dataPtr()); + } + + const char* getDesc() { + return fm_file_info_get_desc(dataPtr()); + } + + const char* getDispMtime() { + return fm_file_info_get_disp_mtime(dataPtr()); + } + + bool isWritableDirectory(void) { + return fm_file_info_is_writable_directory(dataPtr()); + } + + + bool isAccessible(void) { + return fm_file_info_is_accessible(dataPtr()); + } + + + bool isExecutableType(void) { + return fm_file_info_is_executable_type(dataPtr()); + } + + + bool isBackup(void) { + return fm_file_info_is_backup(dataPtr()); + } + + + bool isHidden(void) { + return fm_file_info_is_hidden(dataPtr()); + } + + + bool isUnknownType(void) { + return fm_file_info_is_unknown_type(dataPtr()); + } + + + bool isDesktopEntry(void) { + return fm_file_info_is_desktop_entry(dataPtr()); + } + + + bool isText(void) { + return fm_file_info_is_text(dataPtr()); + } + + + bool isImage(void) { + return fm_file_info_is_image(dataPtr()); + } + + + bool isMountable(void) { + return fm_file_info_is_mountable(dataPtr()); + } + + + bool isShortcut(void) { + return fm_file_info_is_shortcut(dataPtr()); + } + + + bool isSymlink(void) { + return fm_file_info_is_symlink(dataPtr()); + } + + + bool isDir(void) { + return fm_file_info_is_dir(dataPtr()); + } + + + FmMimeType* getMimeType(void) { + return fm_file_info_get_mime_type(dataPtr()); + } + + + bool isNative(void) { + return fm_file_info_is_native(dataPtr()); + } + + + mode_t getMode(void) { + return fm_file_info_get_mode(dataPtr()); + } + + + goffset getBlocks(void) { + return fm_file_info_get_blocks(dataPtr()); + } + + + goffset getSize(void) { + return fm_file_info_get_size(dataPtr()); + } + + const char* getDispSize() { + return fm_file_info_get_disp_size(dataPtr()); + } + + void setIcon(GIcon* icon) { + fm_file_info_set_icon(dataPtr(), icon); + } + + + void setDispName(const char* name) { + fm_file_info_set_disp_name(dataPtr(), name); + } + + + void setPath(FmPath* path) { + fm_file_info_set_path(dataPtr(), path); + } + + + const char* getName() { + return fm_file_info_get_name(dataPtr()); + } + + + const char* getDispName() { + return fm_file_info_get_disp_name(dataPtr()); + } + + + FmPath* getPath(void) { + return fm_file_info_get_path(dataPtr()); + } + + + void update(FmFileInfo* src) { + fm_file_info_update(dataPtr(), src); + } + + + static FileInfo newFromNativeFile(FmPath* path, const char* path_str, GError** err) { + return FileInfo::wrapPtr(fm_file_info_new_from_native_file(path, path_str, err)); + } + + + bool setFromNativeFile(const char* path, GError** err) { + return fm_file_info_set_from_native_file(dataPtr(), path, err); + } + + + void setFromMenuCacheItem(struct _MenuCacheItem* item) { + fm_file_info_set_from_menu_cache_item(dataPtr(), item); + } + + + static FileInfo newFromMenuCacheItem(FmPath* path, struct _MenuCacheItem* item) { + return FileInfo::wrapPtr(fm_file_info_new_from_menu_cache_item(path, item)); + } + + + void setFromGFileData(GFile* gf, GFileInfo* inf) { + fm_file_info_set_from_g_file_data(dataPtr(), gf, inf); + } + + + static FileInfo newFromGFileData(GFile* gf, GFileInfo* inf, FmPath* path) { + return FileInfo::wrapPtr(fm_file_info_new_from_g_file_data(gf, inf, path)); + } + + + void setFromGfileinfo(GFileInfo* inf) { + fm_file_info_set_from_gfileinfo(dataPtr(), inf); + } + + + static FileInfo newFromGfileinfo(FmPath* path, GFileInfo* inf) { + return FileInfo::wrapPtr(fm_file_info_new_from_gfileinfo(path, inf)); + } + + +private: + FmFileInfo* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_FILE_INFO_H__ diff --git a/src/fileinfojob.h b/src/fileinfojob.h new file mode 100644 index 0000000..396b254 --- /dev/null +++ b/src/fileinfojob.h @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_FILE_INFO_JOB_H__ +#define __LIBFM_QT_FM_FILE_INFO_JOB_H__ + +#include +#include +#include +#include "libfmqtglobals.h" +#include "job.h" + +namespace Fm { + + +class LIBFM_QT_API FileInfoJob: public Job { +public: + + + FileInfoJob(FmPathList* files_to_query, FmFileInfoJobFlags flags) { + dataPtr_ = reinterpret_cast(fm_file_info_job_new(files_to_query, flags)); + } + + + // default constructor + FileInfoJob() { + dataPtr_ = nullptr; + } + + + FileInfoJob(FmFileInfoJob* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + FileInfoJob(const FileInfoJob& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + FileInfoJob(FileInfoJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + + // create a wrapper for the data pointer without increasing the reference count + static FileInfoJob wrapPtr(FmFileInfoJob* dataPtr) { + FileInfoJob obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmFileInfoJob* takeDataPtr() { + FmFileInfoJob* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmFileInfoJob* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmFileInfoJob*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + FileInfoJob& operator=(const FileInfoJob& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + FileInfoJob& operator=(FileInfoJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + FmPath* getCurrent(void) { + return fm_file_info_job_get_current(dataPtr()); + } + + + void addGfile(GFile* gf) { + fm_file_info_job_add_gfile(dataPtr(), gf); + } + + + void add(FmPath* path) { + fm_file_info_job_add(dataPtr(), path); + } + + + +}; + + +} + +#endif // __LIBFM_QT_FM_FILE_INFO_JOB_H__ diff --git a/src/filemenu.cpp b/src/filemenu.cpp index 2a1ff8d..49bc6e2 100644 --- a/src/filemenu.cpp +++ b/src/filemenu.cpp @@ -44,8 +44,8 @@ FileMenu::FileMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd, QWidget FileMenu::FileMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd, const QString& title, QWidget* parent): QMenu(title, parent), - fileLauncher_(NULL), - unTrashAction_(NULL) { + unTrashAction_(NULL), + fileLauncher_(NULL) { createMenu(files, info, cwd); } @@ -99,7 +99,7 @@ void FileMenu::createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd) openWithMenuAction_ = new QAction(tr("Open With..."), this); addAction(openWithMenuAction_); // create the "Open with..." sub menu - QMenu* menu = new QMenu(); + QMenu* menu = new QMenu(this); openWithMenuAction_->setMenu(menu); if(sameType_) { /* add specific menu items for this mime type */ @@ -116,11 +116,13 @@ void FileMenu::createMenu(FmFileInfoList* files, FmFileInfo* info, FmPath* cwd) g_free(program_path); // create a QAction for the application. - AppInfoAction* action = new AppInfoAction(app); + AppInfoAction* action = new AppInfoAction(app, menu); connect(action, &QAction::triggered, this, &FileMenu::onApplicationTriggered); menu->addAction(action); } - g_list_free(apps); /* don't unref GAppInfos now */ + // unref GAppInfos here, they are still ref'ed in the AppInfoActions above + g_list_foreach(apps, (GFunc)g_object_unref, NULL); + g_list_free(apps); } } menu->addSeparator(); @@ -245,10 +247,12 @@ void FileMenu::addCustomActionItem(QMenu* menu, FmFileActionItem* item) { menu->addAction(action); if(fm_file_action_item_is_menu(item)) { GList* subitems = fm_file_action_item_get_sub_items(item); - for(GList* l = subitems; l; l = l->next) { - FmFileActionItem* subitem = FM_FILE_ACTION_ITEM(l->data); + if (subitems != NULL) { QMenu* submenu = new QMenu(menu); - addCustomActionItem(submenu, subitem); + for(GList* l = subitems; l; l = l->next) { + FmFileActionItem* subitem = FM_FILE_ACTION_ITEM(l->data); + addCustomActionItem(submenu, subitem); + } action->setMenu(submenu); } } @@ -350,6 +354,7 @@ void FileMenu::onDeleteTriggered() { void FileMenu::onUnTrashTriggered() { FmPathList* paths = fm_path_list_new_from_file_info_list(files_); FileOperation::unTrashFiles(paths); + fm_path_list_unref(paths); } void FileMenu::onPasteTriggered() { diff --git a/src/fileoperation.cpp b/src/fileoperation.cpp index 8026b8f..0d63772 100644 --- a/src/fileoperation.cpp +++ b/src/fileoperation.cpp @@ -31,6 +31,7 @@ namespace Fm { FileOperation::FileOperation(Type type, FmPathList* srcFiles, QObject* parent): QObject(parent), + job_(fm_file_ops_job_new((FmFileOpType)type, srcFiles)), dlg(NULL), destPath(NULL), srcPaths(fm_path_list_ref(srcFiles)), @@ -38,8 +39,7 @@ FileOperation::FileOperation(Type type, FmPathList* srcFiles, QObject* parent): elapsedTimer_(NULL), lastElapsed_(0), updateRemainingTime_(true), - autoDestroy_(true), - job_(fm_file_ops_job_new((FmFileOpType)type, srcFiles)) { + autoDestroy_(true) { g_signal_connect(job_, "ask", G_CALLBACK(onFileOpsJobAsk), this); g_signal_connect(job_, "ask-rename", G_CALLBACK(onFileOpsJobAskRename), this); diff --git a/src/fileoperationdialog.cpp b/src/fileoperationdialog.cpp index cbb409b..9aa7111 100644 --- a/src/fileoperationdialog.cpp +++ b/src/fileoperationdialog.cpp @@ -51,7 +51,7 @@ FileOperationDialog::FileOperationDialog(FileOperation* _operation): break; case FM_FILE_OP_DELETE: title = tr("Delete Files"); - message = tr("Deleting the following files"); + message = tr("Deleting the following files:"); ui->dest->hide(); ui->destLabel->hide(); break; diff --git a/src/fileopsjob.h b/src/fileopsjob.h new file mode 100644 index 0000000..e2bbe71 --- /dev/null +++ b/src/fileopsjob.h @@ -0,0 +1,193 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_FILE_OPS_JOB_H__ +#define __LIBFM_QT_FM_FILE_OPS_JOB_H__ + +#include +#include +#include +#include "libfmqtglobals.h" +#include "job.h" + +namespace Fm { + + +class LIBFM_QT_API FileOpsJob: public Job { +public: + + + FileOpsJob(FmFileOpType type, FmPathList* files) { + dataPtr_ = reinterpret_cast(fm_file_ops_job_new(type, files)); + } + + + // default constructor + FileOpsJob() { + dataPtr_ = nullptr; + } + + + FileOpsJob(FmFileOpsJob* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + FileOpsJob(const FileOpsJob& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + FileOpsJob(FileOpsJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + + // create a wrapper for the data pointer without increasing the reference count + static FileOpsJob wrapPtr(FmFileOpsJob* dataPtr) { + FileOpsJob obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmFileOpsJob* takeDataPtr() { + FmFileOpsJob* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmFileOpsJob* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmFileOpsJob*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + FileOpsJob& operator=(const FileOpsJob& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + FileOpsJob& operator=(FileOpsJob&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + FmFileOpOption getOptions(void) { + return fm_file_ops_job_get_options(dataPtr()); + } + + + FmFileOpOption askRename(GFile* src, GFileInfo* src_inf, GFile* dest, GFile** new_dest) { + return fm_file_ops_job_ask_rename(dataPtr(), src, src_inf, dest, new_dest); + } + + + void emitPercent(void) { + fm_file_ops_job_emit_percent(dataPtr()); + } + + + void emitCurFile(const char* cur_file) { + fm_file_ops_job_emit_cur_file(dataPtr(), cur_file); + } + + + void emitPrepared(void) { + fm_file_ops_job_emit_prepared(dataPtr()); + } + + + void setTarget(const char* url) { + fm_file_ops_job_set_target(dataPtr(), url); + } + + + void setHidden(gboolean hidden) { + fm_file_ops_job_set_hidden(dataPtr(), hidden); + } + + + void setIcon(GIcon* icon) { + fm_file_ops_job_set_icon(dataPtr(), icon); + } + + + void setDisplayName(const char* name) { + fm_file_ops_job_set_display_name(dataPtr(), name); + } + + + void setChown(gint uid, gint gid) { + fm_file_ops_job_set_chown(dataPtr(), uid, gid); + } + + + void setChmod(mode_t new_mode, mode_t new_mode_mask) { + fm_file_ops_job_set_chmod(dataPtr(), new_mode, new_mode_mask); + } + + + void setRecursive(gboolean recursive) { + fm_file_ops_job_set_recursive(dataPtr(), recursive); + } + + + FmPath* getDest(void) { + return fm_file_ops_job_get_dest(dataPtr()); + } + + + void setDest(FmPath* dest) { + fm_file_ops_job_set_dest(dataPtr(), dest); + } + + + +}; + + +} + +#endif // __LIBFM_QT_FM_FILE_OPS_JOB_H__ diff --git a/src/fileopsjobchangeattr.h b/src/fileopsjobchangeattr.h new file mode 100644 index 0000000..e69de29 diff --git a/src/fileopsjobdelete.h b/src/fileopsjobdelete.h new file mode 100644 index 0000000..e69de29 diff --git a/src/fileopsjobxfer.h b/src/fileopsjobxfer.h new file mode 100644 index 0000000..e69de29 diff --git a/src/filepropsdialog.cpp b/src/filepropsdialog.cpp index 824dc3f..398373f 100644 --- a/src/filepropsdialog.cpp +++ b/src/filepropsdialog.cpp @@ -46,9 +46,9 @@ enum { FilePropsDialog::FilePropsDialog(FmFileInfoList* files, QWidget* parent, Qt::WindowFlags f): QDialog(parent, f), fileInfos_(fm_file_info_list_ref(files)), + fileInfo(fm_file_info_list_peek_head(files)), singleType(fm_file_info_list_is_same_type(files)), singleFile(fm_file_info_list_get_length(files) == 1 ? true:false), - fileInfo(fm_file_info_list_peek_head(files)), mimeType(NULL) { setAttribute(Qt::WA_DeleteOnClose); @@ -69,17 +69,26 @@ FilePropsDialog::FilePropsDialog(FmFileInfoList* files, QWidget* parent, Qt::Win } FilePropsDialog::~FilePropsDialog() { - delete ui; - if(fileInfos_) fm_file_info_list_unref(fileInfos_); - if(deepCountJob) - g_object_unref(deepCountJob); + + // Stop the timer if it's still running if(fileSizeTimer) { fileSizeTimer->stop(); delete fileSizeTimer; fileSizeTimer = NULL; } + + // Cancel the indexing job if it hasn't finished + if(deepCountJob) { + g_signal_handlers_disconnect_by_func(deepCountJob, (gpointer)G_CALLBACK(onDeepCountJobFinished), this); + fm_job_cancel(FM_JOB(deepCountJob)); + g_object_unref(deepCountJob); + deepCountJob = NULL; + } + + // And finally delete the dialog's UI + delete ui; } void FilePropsDialog::initApplications() { @@ -295,7 +304,7 @@ void FilePropsDialog::initGeneralPage() { connect(fileSizeTimer, &QTimer::timeout, this, &FilePropsDialog::onFileSizeTimerTimeout); fileSizeTimer->start(600); g_signal_connect(deepCountJob, "finished", G_CALLBACK(onDeepCountJobFinished), this); - gboolean ret = fm_job_run_async(FM_JOB(deepCountJob)); + fm_job_run_async(FM_JOB(deepCountJob)); } /*static */ void FilePropsDialog::onDeepCountJobFinished(FmDeepCountJob* job, FilePropsDialog* pThis) { @@ -423,6 +432,29 @@ void FilePropsDialog::accept() { op->run(); } + // Renaming + if(singleFile) { + QString new_name = ui->fileName->text(); + if(QString::fromUtf8(fm_file_info_get_disp_name(fileInfo)) != new_name) { + FmPath* path = fm_file_info_get_path(fileInfo); + GFile* gf = fm_path_to_gfile(path); + GFile* parent_gf = g_file_get_parent(gf); + GFile* dest = g_file_get_child(G_FILE(parent_gf), new_name.toLocal8Bit().data()); + g_object_unref(parent_gf); + GError* err = NULL; + if(!g_file_move(gf, dest, + GFileCopyFlags(G_FILE_COPY_ALL_METADATA | + G_FILE_COPY_NO_FALLBACK_FOR_MOVE | + G_FILE_COPY_NOFOLLOW_SYMLINKS), + NULL, NULL, NULL, &err)) { + QMessageBox::critical(this, QObject::tr("Error"), err->message); + g_error_free(err); + } + g_object_unref(dest); + g_object_unref(gf); + } + } + QDialog::accept(); } diff --git a/src/filesearchdialog.cpp b/src/filesearchdialog.cpp index 4fc8699..512aca2 100644 --- a/src/filesearchdialog.cpp +++ b/src/filesearchdialog.cpp @@ -23,6 +23,7 @@ #include "ui_filesearch.h" #include #include +#include namespace Fm { @@ -54,8 +55,7 @@ void FileSearchDialog::accept() { int n = ui->listView->count(); if(n > 0) { FmSearch* search = fm_search_new(); - int i; - for(i = 0; i < n; ++i) { // add directories + for(int i = 0; i < n; ++i) { // add directories QListWidgetItem* item = ui->listView->item(i); fm_search_add_dir(search, item->text().toLocal8Bit().constData()); } @@ -90,7 +90,7 @@ void FileSearchDialog::accept() { "application/msword;application/vnd.ms-word", "application/msexcel;application/vnd.ms-excel" }; - for(i = 0; i < sizeof(doc_types)/sizeof(char*); ++i) + for(unsigned int i = 0; i < sizeof(doc_types)/sizeof(char*); ++i) fm_search_add_mime_type(search, doc_types[i]); } @@ -114,12 +114,12 @@ void FileSearchDialog::accept() { fm_search_set_min_mtime(search, ui->minTime->date().toString(QStringLiteral("yyyy-MM-dd")).toUtf8().constData()); } - searchUri_.take(fm_search_dup_path(search)); + searchUri_ = std::move(Path::wrapPtr(fm_search_dup_path(search))); fm_search_free(search); } else { - QMessageBox::critical(this, tr("Error"), tr("You should add at least add one directory to search.")); + QMessageBox::critical(this, tr("Error"), tr("You should add at least one directory to search.")); return; } QDialog::accept(); diff --git a/src/folder.h b/src/folder.h new file mode 100644 index 0000000..355b6d7 --- /dev/null +++ b/src/folder.h @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_FOLDER_H__ +#define __LIBFM_QT_FM_FOLDER_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Folder { +public: + + + // default constructor + Folder() { + dataPtr_ = nullptr; + } + + + Folder(FmFolder* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Folder(const Folder& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Folder(Folder&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~Folder() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Folder wrapPtr(FmFolder* dataPtr) { + Folder obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmFolder* takeDataPtr() { + FmFolder* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmFolder* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmFolder*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Folder& operator=(const Folder& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Folder& operator=(Folder&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + bool makeDirectory(const char* name, GError** error) { + return fm_folder_make_directory(dataPtr(), name, error); + } + + + void queryFilesystemInfo(void) { + fm_folder_query_filesystem_info(dataPtr()); + } + + + bool getFilesystemInfo(guint64* total_size, guint64* free_size) { + return fm_folder_get_filesystem_info(dataPtr(), total_size, free_size); + } + + + void reload(void) { + fm_folder_reload(dataPtr()); + } + + + bool isIncremental(void) { + return fm_folder_is_incremental(dataPtr()); + } + + + bool isValid(void) { + return fm_folder_is_valid(dataPtr()); + } + + + bool isLoaded(void) { + return fm_folder_is_loaded(dataPtr()); + } + + + FmFileInfo* getFileByName(const char* name) { + return fm_folder_get_file_by_name(dataPtr(), name); + } + + + bool isEmpty(void) { + return fm_folder_is_empty(dataPtr()); + } + + + FmFileInfoList* getFiles(void) { + return fm_folder_get_files(dataPtr()); + } + + + FmPath* getPath(void) { + return fm_folder_get_path(dataPtr()); + } + + + FmFileInfo* getInfo(void) { + return fm_folder_get_info(dataPtr()); + } + + + void unblockUpdates(void) { + fm_folder_unblock_updates(dataPtr()); + } + + + void blockUpdates(void) { + fm_folder_block_updates(dataPtr()); + } + + + static Folder findByPath(FmPath* path) { + return Folder::wrapPtr(fm_folder_find_by_path(path)); + } + + + static Folder fromUri(const char* uri) { + return Folder::wrapPtr(fm_folder_from_uri(uri)); + } + + + static Folder fromPathName(const char* path) { + return Folder::wrapPtr(fm_folder_from_path_name(path)); + } + + + static Folder fromGfile(GFile* gf) { + return Folder::wrapPtr(fm_folder_from_gfile(gf)); + } + + + static Folder fromPath(FmPath* path) { + return Folder::wrapPtr(fm_folder_from_path(path)); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_FOLDER_H__ diff --git a/src/folderconfig.h b/src/folderconfig.h new file mode 100644 index 0000000..61ebb40 --- /dev/null +++ b/src/folderconfig.h @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_FOLDER_CONFIG_H__ +#define __LIBFM_QT_FM_FOLDER_CONFIG_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API FolderConfig { +public: + + + FolderConfig(FmPath* path) { + dataPtr_ = reinterpret_cast(fm_folder_config_open(path)); + } + + + // default constructor + FolderConfig() { + dataPtr_ = nullptr; + } + + + // move constructor + FolderConfig(FolderConfig&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~FolderConfig() { + if(dataPtr_ != nullptr) { + fm_folder_config_close(dataPtr_, nullptr); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static FolderConfig wrapPtr(FmFolderConfig* dataPtr) { + FolderConfig obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmFolderConfig* takeDataPtr() { + FmFolderConfig* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmFolderConfig* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmFolderConfig*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + + // move assignment + FolderConfig& operator=(FolderConfig&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + static void saveCache(void ) { + fm_folder_config_save_cache(); + } + + + void purge(void) { + fm_folder_config_purge(dataPtr()); + } + + + void removeKey(const char* key) { + fm_folder_config_remove_key(dataPtr(), key); + } + + + void setStringList(const char* key, const gchar * const list[], gsize length) { + fm_folder_config_set_string_list(dataPtr(), key, list, length); + } + + + void setString(const char* key, const char* string) { + fm_folder_config_set_string(dataPtr(), key, string); + } + + + void setBoolean(const char* key, gboolean val) { + fm_folder_config_set_boolean(dataPtr(), key, val); + } + + + void setDouble(const char* key, gdouble val) { + fm_folder_config_set_double(dataPtr(), key, val); + } + + + void setUint64(const char* key, guint64 val) { + fm_folder_config_set_uint64(dataPtr(), key, val); + } + + + void setInteger(const char* key, gint val) { + fm_folder_config_set_integer(dataPtr(), key, val); + } + + + char** getStringList(const char* key, gsize* length) { + return fm_folder_config_get_string_list(dataPtr(), key, length); + } + + + char* getString(const char* key) { + return fm_folder_config_get_string(dataPtr(), key); + } + + + bool getBoolean(const char* key, gboolean* val) { + return fm_folder_config_get_boolean(dataPtr(), key, val); + } + + + bool getDouble(const char* key, gdouble* val) { + return fm_folder_config_get_double(dataPtr(), key, val); + } + + + bool getUint64(const char* key, guint64* val) { + return fm_folder_config_get_uint64(dataPtr(), key, val); + } + + + bool getInteger(const char* key, gint* val) { + return fm_folder_config_get_integer(dataPtr(), key, val); + } + + + bool isEmpty(void) { + return fm_folder_config_is_empty(dataPtr()); + } + + +// the wrapped object cannot be copied. +private: + FolderConfig(const FolderConfig& other) = delete; + FolderConfig& operator=(const FolderConfig& other) = delete; + + +private: + FmFolderConfig* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_FOLDER_CONFIG_H__ diff --git a/src/folderitemdelegate.cpp b/src/folderitemdelegate.cpp index 078345c..973f0e0 100644 --- a/src/folderitemdelegate.cpp +++ b/src/folderitemdelegate.cpp @@ -22,7 +22,7 @@ #include "foldermodel.h" #include #include -#include +#include #include #include #include @@ -34,8 +34,8 @@ namespace Fm { FolderItemDelegate::FolderItemDelegate(QAbstractItemView* view, QObject* parent): QStyledItemDelegate(parent ? parent : view), - symlinkIcon_(QIcon::fromTheme("emblem-symbolic-link")), - view_(view) { + view_(view), + symlinkIcon_(QIcon::fromTheme("emblem-symbolic-link")) { } FolderItemDelegate::~FolderItemDelegate() { @@ -49,16 +49,19 @@ QSize FolderItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QMo if(option.decorationPosition == QStyleOptionViewItem::Top || option.decorationPosition == QStyleOptionViewItem::Bottom) { - QStyleOptionViewItemV4 opt = option; + QStyleOptionViewItem opt = option; initStyleOption(&opt, index); opt.decorationAlignment = Qt::AlignHCenter|Qt::AlignTop; opt.displayAlignment = Qt::AlignTop|Qt::AlignHCenter; + // "opt.decorationSize" may be smaller than the requested size because + // "QStyledItemDelegate::initStyleOption()" uses "QIcon::actualSize()" to set it + // (see Qt -> qstyleditemdelegate.cpp). So, we always get decorationSize from "option". Q_ASSERT(gridSize_ != QSize()); - QRectF textRect(0, 0, gridSize_.width(), gridSize_.height() - opt.decorationSize.height()); + QRectF textRect(0, 0, gridSize_.width(), gridSize_.height() - option.decorationSize.height()); drawText(nullptr, opt, textRect); // passing NULL for painter will calculate the bounding rect only. - int width = qMax((int)textRect.width(), opt.decorationSize.width()); - int height = opt.decorationSize.height() + textRect.height(); + int width = qMax((int)textRect.width(), option.decorationSize.width()); + int height = option.decorationSize.height() + textRect.height(); return QSize(width, height); } return QStyledItemDelegate::sizeHint(option, index); @@ -83,28 +86,30 @@ void FolderItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& op painter->save(); painter->setClipRect(option.rect); - QStyleOptionViewItemV4 opt = option; + QStyleOptionViewItem opt = option; initStyleOption(&opt, index); opt.decorationAlignment = Qt::AlignHCenter|Qt::AlignTop; opt.displayAlignment = Qt::AlignTop|Qt::AlignHCenter; // draw the icon QIcon::Mode iconMode = iconModeFromState(opt.state); - QPoint iconPos(opt.rect.x() + (opt.rect.width() - opt.decorationSize.width()) / 2, opt.rect.y()); - QPixmap pixmap = opt.icon.pixmap(opt.decorationSize, iconMode); - painter->drawPixmap(iconPos, pixmap); + QPoint iconPos(opt.rect.x() + (opt.rect.width() - option.decorationSize.width()) / 2, opt.rect.y()); + QPixmap pixmap = opt.icon.pixmap(option.decorationSize, iconMode); + // in case the pixmap is smaller than the requested size + QSize margin = ((option.decorationSize - pixmap.size()) / 2).expandedTo(QSize(0, 0)); + painter->drawPixmap(iconPos + QPoint(margin.width(), margin.height()), pixmap); // draw some emblems for the item if needed // we only support symlink emblem at the moment if(isSymlink) - painter->drawPixmap(iconPos, symlinkIcon_.pixmap(opt.decorationSize / 2, iconMode)); + painter->drawPixmap(iconPos, symlinkIcon_.pixmap(option.decorationSize / 2, iconMode)); // draw the text // The text rect dimensions should be exactly as they were in sizeHint() QRectF textRect(opt.rect.x() - (gridSize_.width() - opt.rect.width()) / 2, - opt.rect.y() + opt.decorationSize.height(), + opt.rect.y() + option.decorationSize.height(), gridSize_.width(), - gridSize_.height() - opt.decorationSize.height()); + gridSize_.height() - option.decorationSize.height()); drawText(painter, opt, textRect); painter->restore(); } @@ -114,24 +119,27 @@ void FolderItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& op // draw emblems if needed if(isSymlink) { - QStyleOptionViewItemV4 opt = option; + QStyleOptionViewItem opt = option; initStyleOption(&opt, index); QIcon::Mode iconMode = iconModeFromState(opt.state); - QPoint iconPos(opt.rect.x(), opt.rect.y() + (opt.rect.height() - opt.decorationSize.height()) / 2); + QPoint iconPos(opt.rect.x(), opt.rect.y() + (opt.rect.height() - option.decorationSize.height()) / 2); // draw some emblems for the item if needed // we only support symlink emblem at the moment - painter->drawPixmap(iconPos, symlinkIcon_.pixmap(opt.decorationSize / 2, iconMode)); + painter->drawPixmap(iconPos, symlinkIcon_.pixmap(option.decorationSize / 2, iconMode)); } } } // if painter is nullptr, the method calculate the bounding rectangle of the text and save it to textRect -void FolderItemDelegate::drawText(QPainter* painter, QStyleOptionViewItemV4& opt, QRectF& textRect) const { +void FolderItemDelegate::drawText(QPainter* painter, QStyleOptionViewItem& opt, QRectF& textRect) const { QTextLayout layout(opt.text, opt.font); QTextOption textOption; textOption.setAlignment(opt.displayAlignment); textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); - textOption.setTextDirection(opt.direction); + if (opt.text.isRightToLeft()) + textOption.setTextDirection(Qt::RightToLeft); + else + textOption.setTextDirection(Qt::LeftToRight); layout.setTextOption(textOption); qreal height = 0; qreal width = 0; @@ -188,7 +196,7 @@ void FolderItemDelegate::drawText(QPainter* painter, QStyleOptionViewItemV4& opt if (opt.state & QStyle::State_Selected || opt.state & QStyle::State_MouseOver) { if (const QWidget* widget = opt.widget) { // let the style engine do it QStyle* style = widget->style() ? widget->style() : qApp->style(); - QStyleOptionViewItemV4 o(opt); + QStyleOptionViewItem o(opt); o.text = QString(); o.rect = selRect.toAlignedRect().intersected(opt.rect); // due to clipping and rounding, we might lose 1px o.showDecorationSelected = true; diff --git a/src/folderitemdelegate.h b/src/folderitemdelegate.h index 8df5b42..4035f78 100644 --- a/src/folderitemdelegate.h +++ b/src/folderitemdelegate.h @@ -45,7 +45,7 @@ public: virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; private: - void drawText(QPainter* painter, QStyleOptionViewItemV4& opt, QRectF& textRect) const; + void drawText(QPainter* painter, QStyleOptionViewItem& opt, QRectF& textRect) const; static QIcon::Mode iconModeFromState(QStyle::State state); private: diff --git a/src/foldermenu.cpp b/src/foldermenu.cpp index fb74883..a5fb5b7 100644 --- a/src/foldermenu.cpp +++ b/src/foldermenu.cpp @@ -115,10 +115,12 @@ void FolderMenu::addCustomActionItem(QMenu* menu, FmFileActionItem* item) { menu->addAction(action); if(fm_file_action_item_is_menu(item)) { GList* subitems = fm_file_action_item_get_sub_items(item); - for(GList* l = subitems; l; l = l->next) { - FmFileActionItem* subitem = FM_FILE_ACTION_ITEM(l->data); + if (subitems != NULL) { QMenu* submenu = new QMenu(menu); - addCustomActionItem(submenu, subitem); + for(GList* l = subitems; l; l = l->next) { + FmFileActionItem* subitem = FM_FILE_ACTION_ITEM(l->data); + addCustomActionItem(submenu, subitem); + } action->setMenu(submenu); } } diff --git a/src/folderview.cpp b/src/folderview.cpp index e63a53f..7f1f642 100644 --- a/src/folderview.cpp +++ b/src/folderview.cpp @@ -181,8 +181,8 @@ void FolderViewListView::activation(const QModelIndex &index) { FolderViewTreeView::FolderViewTreeView(QWidget* parent): QTreeView(parent), - layoutTimer_(nullptr), doingLayout_(false), + layoutTimer_(nullptr), activationAllowed_(true) { header()->setStretchLastSection(true); @@ -388,12 +388,12 @@ void FolderViewTreeView::onSortFilterChanged() { FolderView::FolderView(ViewMode _mode, QWidget* parent): QWidget(parent), view(nullptr), + model_(nullptr), mode((ViewMode)0), + fileLauncher_(nullptr), autoSelectionDelay_(600), autoSelectionTimer_(nullptr), selChangedTimer_(nullptr), - fileLauncher_(nullptr), - model_(nullptr), itemDelegateMargins_(QSize(3, 3)) { iconSize_[IconMode - FirstViewMode] = QSize(48, 48); @@ -500,6 +500,11 @@ void FolderView::setViewMode(ViewMode _mode) { listView->setItemDelegateForColumn(FolderModel::ColumnFileName, delegate); // FIXME: should we expose the delegate? listView->setMovement(QListView::Static); + /* If listView is already visible, setMovement() will lay out items again with delay + (see Qt, QListView::setMovement(), d->doDelayedItemsLayout()) and thus drop events + will remain disabled for the viewport. So, we should re-enable drop events here. */ + if(listView->viewport()->isVisible()) + listView->viewport()->setAcceptDrops(true); listView->setResizeMode(QListView::Adjust); listView->setWrapping(true); switch(mode) { @@ -651,7 +656,8 @@ bool FolderView::event(QEvent* event) { case QEvent::FontChange: updateGridSize(); break; - }; + default: break; + } return QWidget::event(event); } @@ -715,15 +721,15 @@ QItemSelectionModel* FolderView::selectionModel() const { return view ? view->selectionModel() : nullptr; } -FmPathList* FolderView::selectedFilePaths() const { +Fm::PathList FolderView::selectedFilePaths() const { if(model_) { QModelIndexList selIndexes = mode == DetailedListMode ? selectedRows() : selectedIndexes(); if(!selIndexes.isEmpty()) { - FmPathList* paths = fm_path_list_new(); + PathList paths; QModelIndexList::const_iterator it; for(it = selIndexes.begin(); it != selIndexes.end(); ++it) { FmFileInfo* file = model_->fileInfoFromIndex(*it); - fm_path_list_push_tail(paths, fm_file_info_get_path(file)); + paths.pushTail(fm_file_info_get_path(file)); } return paths; } @@ -744,15 +750,15 @@ QModelIndex FolderView::indexFromFolderPath(FmPath* folderPath) const { return QModelIndex(); } -FmFileInfoList* FolderView::selectedFiles() const { +Fm::FileInfoList FolderView::selectedFiles() const { if(model_) { QModelIndexList selIndexes = mode == DetailedListMode ? selectedRows() : selectedIndexes(); if(!selIndexes.isEmpty()) { - FmFileInfoList* files = fm_file_info_list_new(); + FileInfoList files; QModelIndexList::const_iterator it; for(it = selIndexes.constBegin(); it != selIndexes.constEnd(); ++it) { FmFileInfo* file = model_->fileInfoFromIndex(*it); - fm_file_info_list_push_tail(files, file); + files.pushTail(file); } return files; } @@ -825,10 +831,9 @@ void FolderView::childDropEvent(QDropEvent* e) { const QWidget* targetWidget = childView()->viewport(); // these are dynamic QObject property set by our XDND workarounds in xworkaround.cpp. xcb_window_t dndSource = xcb_window_t(targetWidget->property("xdnd::lastDragSource").toUInt()); - xcb_timestamp_t dropTimestamp = (xcb_timestamp_t)targetWidget->property("xdnd::lastDropTime").toUInt(); + //xcb_timestamp_t dropTimestamp = (xcb_timestamp_t)targetWidget->property("xdnd::lastDropTime").toUInt(); // qDebug() << "XDS: source window" << dndSource << dropTimestamp; if(dndSource != 0) { - xcb_connection_t* conn = QX11Info::connection(); xcb_atom_t XdndDirectSaveAtom = XdndWorkaround::internAtom("XdndDirectSave0", 15); xcb_atom_t textAtom = XdndWorkaround::internAtom("text/plain", 10); @@ -836,7 +841,7 @@ void FolderView::childDropEvent(QDropEvent* e) { QByteArray basename = XdndWorkaround::windowProperty(dndSource, XdndDirectSaveAtom, textAtom, 1024); // 2. construct the fill URI for the file, and update the source window property. - Path filePath = Path(path()).child(basename); + Path filePath = Path(path()).newChild(basename); QByteArray fileUri = filePath.toUri(); XdndWorkaround::setWindowProperty(dndSource, XdndDirectSaveAtom, textAtom, (void*)fileUri.constData(), fileUri.length()); @@ -918,6 +923,7 @@ bool FolderView::eventFilter(QObject* watched, QEvent* event) { } } break; + default: break; } } return QObject::eventFilter(watched, event); @@ -994,10 +1000,10 @@ void FolderView::onFileClicked(int type, FmFileInfo* fileInfo) { } else if(type == ContextMenuClick) { FmPath* folderPath = nullptr; - FmFileInfoList* files = selectedFiles(); - if (files) { - FmFileInfo* first = fm_file_info_list_peek_head(files); - if (fm_file_info_list_get_length(files) == 1 && fm_file_info_is_dir(first)) + FileInfoList files = selectedFiles(); + if (!files.isNull()) { + FmFileInfo* first = files.peekHead(); + if (files.getLength() == 1 && fm_file_info_is_dir(first)) folderPath = fm_file_info_get_path(first); } if (!folderPath) @@ -1005,11 +1011,11 @@ void FolderView::onFileClicked(int type, FmFileInfo* fileInfo) { QMenu* menu = nullptr; if(fileInfo) { // show context menu - if (FmFileInfoList* files = selectedFiles()) { - Fm::FileMenu* fileMenu = new Fm::FileMenu(files, fileInfo, folderPath); + FileInfoList files = selectedFiles(); + if (!files.isNull()) { + Fm::FileMenu* fileMenu = new Fm::FileMenu(files.dataPtr(), fileInfo, folderPath); fileMenu->setFileLauncher(fileLauncher_); prepareFileMenu(fileMenu); - fm_file_info_list_unref(files); menu = fileMenu; } } diff --git a/src/folderview.h b/src/folderview.h index cb21667..5173d94 100644 --- a/src/folderview.h +++ b/src/folderview.h @@ -29,6 +29,8 @@ #include #include "foldermodel.h" #include "proxyfoldermodel.h" +#include "fileinfo.h" +#include "path.h" class QTimer; @@ -92,8 +94,8 @@ public: } QItemSelectionModel* selectionModel() const; - FmFileInfoList* selectedFiles() const; - FmPathList* selectedFilePaths() const; + Fm::FileInfoList selectedFiles() const; + Fm::PathList selectedFilePaths() const; QModelIndex indexFromFolderPath(FmPath* folderPath) const; void selectAll(); diff --git a/src/icon.h b/src/icon.h new file mode 100644 index 0000000..794fdc9 --- /dev/null +++ b/src/icon.h @@ -0,0 +1,168 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_ICON_H__ +#define __LIBFM_QT_FM_ICON_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Icon { +public: + + + // default constructor + Icon() { + dataPtr_ = nullptr; + } + + + Icon(FmIcon* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_icon_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Icon(const Icon& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_icon_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Icon(Icon&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~Icon() { + if(dataPtr_ != nullptr) { + fm_icon_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Icon wrapPtr(FmIcon* dataPtr) { + Icon obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmIcon* takeDataPtr() { + FmIcon* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmIcon* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmIcon*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Icon& operator=(const Icon& other) { + if(dataPtr_ != nullptr) { + fm_icon_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_icon_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Icon& operator=(Icon&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + static void unloadCache( ) { + fm_icon_unload_cache(); + } + + + static void resetUserDataCache(GQuark quark) { + fm_icon_reset_user_data_cache(quark); + } + + + static void unloadUserDataCache( ) { + fm_icon_unload_user_data_cache(); + } + + + static void setUserDataDestroy(GDestroyNotify func) { + fm_icon_set_user_data_destroy(func); + } + + + void setUserData(gpointer user_data) { + fm_icon_set_user_data(dataPtr(), user_data); + } + + + gpointer getUserData(void) { + return fm_icon_get_user_data(dataPtr()); + } + + + static Icon fromName(const char* name) { + return Icon::wrapPtr(fm_icon_from_name(name)); + } + + + static Icon fromGicon(GIcon* gicon) { + return Icon::wrapPtr(fm_icon_from_gicon(gicon)); + } + + + +private: + FmIcon* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_ICON_H__ diff --git a/src/job.h b/src/job.h new file mode 100644 index 0000000..12e337b --- /dev/null +++ b/src/job.h @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_JOB_H__ +#define __LIBFM_QT_FM_JOB_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Job { +public: + + + // default constructor + Job() { + dataPtr_ = nullptr; + } + + + Job(FmJob* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Job(const Job& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Job(Job&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~Job() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Job wrapPtr(FmJob* dataPtr) { + Job obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmJob* takeDataPtr() { + FmJob* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmJob* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmJob*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Job& operator=(const Job& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Job& operator=(Job&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void resume(void) { + fm_job_resume(dataPtr()); + } + + + bool pause(void) { + return fm_job_pause(dataPtr()); + } + + + int askValist(const char* question, va_list options) { + return fm_job_ask_valist(dataPtr(), question, options); + } + + + int askv(const char* question, gchar* const* options) { + return fm_job_askv(dataPtr(), question, options); + } + + + int ask(const char* question, ... ) { + + int ret; + va_list args; + va_start (args, question); + ret = fm_job_ask_valist(dataPtr(), question, args); + va_end (args); + return ret; + + } + + + FmJobErrorAction emitError(GError* err, FmJobErrorSeverity severity) { + return fm_job_emit_error(dataPtr(), err, severity); + } + + + void finish(void) { + fm_job_finish(dataPtr()); + } + + + void setCancellable(GCancellable* cancellable) { + fm_job_set_cancellable(dataPtr(), cancellable); + } + + + GCancellable* getCancellable(void) { + return fm_job_get_cancellable(dataPtr()); + } + + + void initCancellable(void) { + fm_job_init_cancellable(dataPtr()); + } + + + gpointer callMainThread(FmJobCallMainThreadFunc func, gpointer user_data) { + return fm_job_call_main_thread(dataPtr(), func, user_data); + } + + + void cancel(void) { + fm_job_cancel(dataPtr()); + } + + + bool runSyncWithMainloop(void) { + return fm_job_run_sync_with_mainloop(dataPtr()); + } + + + bool runSync(void) { + return fm_job_run_sync(dataPtr()); + } + + + bool runAsync(void) { + return fm_job_run_async(dataPtr()); + } + + + bool isRunning(void) { + return fm_job_is_running(dataPtr()); + } + + + bool isCancelled(void) { + return fm_job_is_cancelled(dataPtr()); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_JOB_H__ diff --git a/src/list.h b/src/list.h new file mode 100644 index 0000000..e207004 --- /dev/null +++ b/src/list.h @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_LIST_H__ +#define __LIBFM_QT_FM_LIST_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API List { +public: + + + List(FmListFuncs* funcs) { + dataPtr_ = reinterpret_cast(fm_list_new(funcs)); + } + + + // default constructor + List() { + dataPtr_ = nullptr; + } + + + List(FmList* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_list_ref(dataPtr)) : nullptr; + } + + + // copy constructor + List(const List& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_list_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + List(List&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~List() { + if(dataPtr_ != nullptr) { + fm_list_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static List wrapPtr(FmList* dataPtr) { + List obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmList* takeDataPtr() { + FmList* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmList* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmList*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + List& operator=(const List& other) { + if(dataPtr_ != nullptr) { + fm_list_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_list_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + List& operator=(List&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void deleteLink(GList* l_) { + fm_list_delete_link(dataPtr(), l_); + } + + + void removeAll(gpointer data) { + fm_list_remove_all(dataPtr(), data); + } + + + void remove(gpointer data) { + fm_list_remove(dataPtr(), data); + } + + + void clear(void) { + fm_list_clear(dataPtr()); + } + + + +private: + FmList* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_LIST_H__ diff --git a/src/mimetype.h b/src/mimetype.h new file mode 100644 index 0000000..5cf402d --- /dev/null +++ b/src/mimetype.h @@ -0,0 +1,163 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_MIME_TYPE_H__ +#define __LIBFM_QT_FM_MIME_TYPE_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API MimeType { +public: + + + // default constructor + MimeType() { + dataPtr_ = nullptr; + } + + + MimeType(FmMimeType* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_mime_type_ref(dataPtr)) : nullptr; + } + + + // copy constructor + MimeType(const MimeType& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_mime_type_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + MimeType(MimeType&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~MimeType() { + if(dataPtr_ != nullptr) { + fm_mime_type_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static MimeType wrapPtr(FmMimeType* dataPtr) { + MimeType obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmMimeType* takeDataPtr() { + FmMimeType* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmMimeType* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmMimeType*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + MimeType& operator=(const MimeType& other) { + if(dataPtr_ != nullptr) { + fm_mime_type_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_mime_type_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + MimeType& operator=(MimeType&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void removeThumbnailer(gpointer thumbnailer) { + fm_mime_type_remove_thumbnailer(dataPtr(), thumbnailer); + } + + + void addThumbnailer(gpointer thumbnailer) { + fm_mime_type_add_thumbnailer(dataPtr(), thumbnailer); + } + + + GList* getThumbnailersList(void) { + return fm_mime_type_get_thumbnailers_list(dataPtr()); + } + + + FmIcon* getIcon(void) { + return fm_mime_type_get_icon(dataPtr()); + } + + + static MimeType fromName(const char* type) { + return MimeType::wrapPtr(fm_mime_type_from_name(type)); + } + + + static MimeType fromNativeFile(const char* file_path, const char* base_name, struct stat* pstat) { + return MimeType::wrapPtr(fm_mime_type_from_native_file(file_path, base_name, pstat)); + } + + + static MimeType fromFileName(const char* ufile_name) { + return MimeType::wrapPtr(fm_mime_type_from_file_name(ufile_name)); + } + + + +private: + FmMimeType* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_MIME_TYPE_H__ diff --git a/src/monitor.h b/src/monitor.h new file mode 100644 index 0000000..e69de29 diff --git a/src/mount-operation-password.ui b/src/mount-operation-password.ui index 75ebf31..72f1b30 100644 --- a/src/mount-operation-password.ui +++ b/src/mount-operation-password.ui @@ -163,6 +163,16 @@ + + Anonymous + asUser + username + domain + password + forgetPassword + sessionPassword + storePassword + diff --git a/src/mountoperation.cpp b/src/mountoperation.cpp index bc3e0b8..b7fb9cc 100644 --- a/src/mountoperation.cpp +++ b/src/mountoperation.cpp @@ -31,10 +31,10 @@ namespace Fm { MountOperation::MountOperation(bool interactive, QWidget* parent): QObject(parent), - interactive_(interactive), - running(false), op(g_mount_operation_new()), cancellable_(g_cancellable_new()), + running(false), + interactive_(interactive), eventLoop(NULL), autoDestroy_(true) { diff --git a/src/mountoperationpassworddialog.cpp b/src/mountoperationpassworddialog.cpp index 4305b0a..f2783e3 100644 --- a/src/mountoperationpassworddialog.cpp +++ b/src/mountoperationpassworddialog.cpp @@ -27,11 +27,11 @@ namespace Fm { MountOperationPasswordDialog::MountOperationPasswordDialog(MountOperation* op, GAskPasswordFlags flags): QDialog(), mountOperation(op), - canAnonymous(flags & G_ASK_PASSWORD_ANONYMOUS_SUPPORTED ? true : false), - canSavePassword(flags & G_ASK_PASSWORD_SAVING_SUPPORTED ? true : false), - needUserName(flags & G_ASK_PASSWORD_NEED_USERNAME ? true : false), needPassword(flags & G_ASK_PASSWORD_NEED_PASSWORD ? true : false), - needDomain(flags & G_ASK_PASSWORD_NEED_DOMAIN ? true : false) { + needUserName(flags & G_ASK_PASSWORD_NEED_USERNAME ? true : false), + needDomain(flags & G_ASK_PASSWORD_NEED_DOMAIN ? true : false), + canSavePassword(flags & G_ASK_PASSWORD_SAVING_SUPPORTED ? true : false), + canAnonymous(flags & G_ASK_PASSWORD_ANONYMOUS_SUPPORTED ? true : false) { ui = new Ui::MountOperationPasswordDialog(); ui->setupUi(this); diff --git a/src/navhistory.h b/src/navhistory.h new file mode 100644 index 0000000..f88ef4c --- /dev/null +++ b/src/navhistory.h @@ -0,0 +1,192 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_NAV_HISTORY_H__ +#define __LIBFM_QT_FM_NAV_HISTORY_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API NavHistory { +public: + + + NavHistory(void ) { + dataPtr_ = reinterpret_cast(fm_nav_history_new()); + } + + + NavHistory(FmNavHistory* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + NavHistory(const NavHistory& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + NavHistory(NavHistory&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~NavHistory() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static NavHistory wrapPtr(FmNavHistory* dataPtr) { + NavHistory obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmNavHistory* takeDataPtr() { + FmNavHistory* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmNavHistory* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmNavHistory*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + NavHistory& operator=(const NavHistory& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + NavHistory& operator=(NavHistory&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + void setMax(guint num) { + fm_nav_history_set_max(dataPtr(), num); + } + + + void clear(void) { + fm_nav_history_clear(dataPtr()); + } + + + void chdir(FmPath* path, gint old_scroll_pos) { + fm_nav_history_chdir(dataPtr(), path, old_scroll_pos); + } + + + bool canBack(void) { + return fm_nav_history_can_back(dataPtr()); + } + + + int getScrollPos(void) { + return fm_nav_history_get_scroll_pos(dataPtr()); + } + + + FmPath* goTo(guint n, gint old_scroll_pos) { + return fm_nav_history_go_to(dataPtr(), n, old_scroll_pos); + } + + + FmPath* getNthPath(guint n) { + return fm_nav_history_get_nth_path(dataPtr(), n); + } + + + unsigned int getCurIndex(void) { + return fm_nav_history_get_cur_index(dataPtr()); + } + + + void jump(GList* l, int old_scroll_pos) { + fm_nav_history_jump(dataPtr(), l, old_scroll_pos); + } + + + void forward(int old_scroll_pos) { + fm_nav_history_forward(dataPtr(), old_scroll_pos); + } + + + bool canForward(void) { + return fm_nav_history_can_forward(dataPtr()); + } + + + void back(int old_scroll_pos) { + fm_nav_history_back(dataPtr(), old_scroll_pos); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_NAV_HISTORY_H__ diff --git a/src/path.h b/src/path.h index be4a610..dccf91e 100644 --- a/src/path.h +++ b/src/path.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 - 2015 Hong Jen Yee (PCMan) + * Copyright (C) 2016 Hong Jen Yee (PCMan) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,231 +17,425 @@ * */ -#ifndef FM_PATH_H -#define FM_PATH_H +#ifndef __LIBFM_QT_FM_PATH_H__ +#define __LIBFM_QT_FM_PATH_H__ -#include "libfmqtglobals.h" #include -#include +#include +#include #include +#include "libfmqtglobals.h" + namespace Fm { -class LIBFM_QT_API Path { + +class LIBFM_QT_API PathList { public: - Path(): data_(nullptr) { + + PathList(void ) { + dataPtr_ = reinterpret_cast(fm_path_list_new()); } - Path(FmPath* path, bool takeOwnership = false): data_(path) { - if(path && !takeOwnership) - fm_path_ref(data_); + + PathList(FmPathList* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_list_ref(FM_LIST(dataPtr))) : nullptr; } - Path(const Path& other): data_(other.data_ ? fm_path_ref(other.data_) : nullptr) { + + // copy constructor + PathList(const PathList& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_list_ref(FM_LIST(other.dataPtr_))) : nullptr; } - Path(GFile* gf): data_(fm_path_new_for_gfile(gf)) { + + // move constructor + PathList(PathList&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); } - ~Path() { - if(data_) - fm_path_unref(data_); + + // destructor + ~PathList() { + if(dataPtr_ != nullptr) { + fm_list_unref(FM_LIST(dataPtr_)); + } } - static Path fromPathName(const char* path_name) { - return Path(fm_path_new_for_path(path_name), true); + + // create a wrapper for the data pointer without increasing the reference count + static PathList wrapPtr(FmPathList* dataPtr) { + PathList obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; } - static Path fromUri(const char* uri) { - return Path(fm_path_new_for_uri(uri), true); + // disown the managed data pointer + FmPathList* takeDataPtr() { + FmPathList* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; } - static Path fromDisplayName(const char* path_name) { - return Path(fm_path_new_for_display_name(path_name), true); + // get the raw pointer wrapped + FmPathList* dataPtr() { + return reinterpret_cast(dataPtr_); } - static Path fromString(const char* path_str) { - return Path(fm_path_new_for_str(path_str), true); + // automatic type casting + operator FmPathList*() { + return dataPtr(); } - static Path fromCommandlineArg(const char* arg) { - return Path(fm_path_new_for_commandline_arg(arg), true); + // copy assignment + PathList& operator=(const PathList& other) { + if(dataPtr_ != nullptr) { + fm_list_unref(FM_LIST(dataPtr_)); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_list_ref(FM_LIST(other.dataPtr_))) : nullptr; + return *this; } - Path child(const char* basename) { - return Path(fm_path_new_child(data_, basename), true); + + // move assignment + PathList& operator=(PathList&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; } - Path child(const char* basename, int name_len) { - return Path(fm_path_new_child_len(data_, basename, name_len), true); + bool isNull() { + return (dataPtr_ == nullptr); } - Path relative(const char* rel) { - return Path(fm_path_new_relative(data_, rel), true); + // methods + + void writeUriList(GString* buf) { + fm_path_list_write_uri_list(dataPtr(), buf); } - /* predefined paths */ - static Path root(void) { /* / */ - return Path(fm_path_get_root(), false); + char* toUriList(void) { + return fm_path_list_to_uri_list(dataPtr()); } - static Path home(void) { /* home directory */ - return Path(fm_path_get_home(), false); + unsigned int getLength() { + return fm_path_list_get_length(dataPtr()); } - static Path desktop(void) { /* $HOME/Desktop */ - return Path(fm_path_get_desktop(), false); + bool isEmpty() { + return fm_path_list_is_empty(dataPtr()); } - static Path trash(void) { /* trash:/// */ - return Path(fm_path_get_trash(), false); + FmPath* peekHead() { + return fm_path_list_peek_head(dataPtr()); } - static Path appsMenu(void) { /* menu://applications.menu/ */ - return Path(fm_path_get_apps_menu(), false); + GList* peekHeadLink() { + return fm_path_list_peek_head_link(dataPtr()); } - Path parent() { - return Path(data_ != nullptr ? fm_path_get_parent(data_) : nullptr, false); + void pushTail(FmPath* path) { + fm_path_list_push_tail(dataPtr(), path); } - const char* basename() { - return fm_path_get_basename(data_); + static PathList newFromFileInfoGslist(GSList* fis) { + return PathList::wrapPtr(fm_path_list_new_from_file_info_gslist(fis)); } - FmPathFlags flags() { - return fm_path_get_flags(data_); + + static PathList newFromFileInfoGlist(GList* fis) { + return PathList::wrapPtr(fm_path_list_new_from_file_info_glist(fis)); } - bool hasPrefix(FmPath* prefix) { - return fm_path_has_prefix(data_, prefix); + + static PathList newFromFileInfoList(FmFileInfoList* fis) { + return PathList::wrapPtr(fm_path_list_new_from_file_info_list(fis)); + } + + + static PathList newFromUris(char* const* uris) { + return PathList::wrapPtr(fm_path_list_new_from_uris(uris)); + } + + + static PathList newFromUriList(const char* uri_list) { + return PathList::wrapPtr(fm_path_list_new_from_uri_list(uri_list)); + } + + + +private: + FmPathList* dataPtr_; // data pointer for the underlying C struct + +}; + + + +class LIBFM_QT_API Path { +public: + + + // default constructor + Path() { + dataPtr_ = nullptr; + } + + + Path(FmPath* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_path_ref(dataPtr)) : nullptr; } - Path schemePath() { - return Path(fm_path_get_scheme_path(data_), true); + + // copy constructor + Path(const Path& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_path_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Path(Path&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~Path() { + if(dataPtr_ != nullptr) { + fm_path_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Path wrapPtr(FmPath* dataPtr) { + Path obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmPath* takeDataPtr() { + FmPath* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmPath* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmPath*() { + return dataPtr(); + } + + // copy assignment + Path& operator=(const Path& other) { + if(dataPtr_ != nullptr) { + fm_path_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_path_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Path& operator=(Path&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; } + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods bool isNative() { - return fm_path_is_native(data_); + return fm_path_is_native(dataPtr()); } bool isTrash() { - return fm_path_is_trash(data_); + return fm_path_is_trash(dataPtr()); } bool isTrashRoot() { - return fm_path_is_trash_root(data_); + return fm_path_is_trash_root(dataPtr()); } bool isNativeOrTrash() { - return fm_path_is_native_or_trash(data_); + return fm_path_is_native_or_trash(dataPtr()); } - char* toString() { - return fm_path_to_str(data_); + int depth(void) { + return fm_path_depth(dataPtr()); } - QByteArray toByteArray() { - char* s = fm_path_to_str(data_); - QByteArray str(s); - g_free(s); - return str; + + bool equalStr(const gchar* str, int n) { + return fm_path_equal_str(dataPtr(), str, n); } - char* toUri() { - return fm_path_to_uri(data_); + + int compare(FmPath* p2) { + return fm_path_compare(dataPtr(), p2); } - GFile* toGfile() { - return fm_path_to_gfile(data_); + int compare(Path& p2) { + return fm_path_compare(dataPtr(), p2.dataPtr()); } - /* - char* displayName(bool human_readable = true) { - return fm_path_display_name(data_, human_readable); + bool equal(FmPath* p2) { + return fm_path_equal(dataPtr(), p2); } - */ - QString displayName(bool human_readable = true) { - char* dispname = fm_path_display_name(data_, human_readable); - QString str = QString::fromUtf8(dispname); - g_free(dispname); - return str; + bool equal(Path& p2) { + return fm_path_equal(dataPtr(), p2.dataPtr()); } - /* - char* displayBasename() { - return fm_path_display_basename(data_); + bool operator == (Path& other) { + return fm_path_equal(dataPtr(), other.dataPtr()); } - */ - QString displayBasename() { - char* basename = fm_path_display_basename(data_); - QString s = QString::fromUtf8(basename); - g_free(basename); - return s; + bool operator != (Path& other) { + return !fm_path_equal(dataPtr(), other.dataPtr()); } - /* For used in hash tables */ - guint hash() { - return fm_path_hash(data_); + bool operator < (Path& other) { + return compare(other); } - void take(FmPath* path) { // take the ownership of the "path" - if(data_) - fm_path_unref(data_); - data_ = path; + bool operator > (Path& other) { + return (other < *this); } - Path& operator = (const Path& other) { - if(data_) - fm_path_unref(data_); - data_ = fm_path_ref(other.data_); - return *this; + unsigned int hash(void) { + return fm_path_hash(dataPtr()); } - bool operator == (const Path& other) const { - return fm_path_equal(data_, other.data_); + + char* displayBasename(void) { + return fm_path_display_basename(dataPtr()); } - bool operator != (const Path& other) const { - return !fm_path_equal(data_, other.data_); + char* displayName(gboolean human_readable) { + return fm_path_display_name(dataPtr(), human_readable); } - bool operator < (const Path& other) const { - return compare(other); + + GFile* toGfile(void) { + return fm_path_to_gfile(dataPtr()); } - bool operator > (const Path& other) const { - return (other < *this); + + char* toUri(void) { + return fm_path_to_uri(dataPtr()); } - /* can be used for sorting */ - int compare(const Path& other) const { - return fm_path_compare(data_, other.data_); + + char* toStr(void) { + return fm_path_to_str(dataPtr()); } - /* used for completion in entry */ - bool equal(const gchar *str, int n) const { - return fm_path_equal_str(data_, str, n); + + Path getSchemePath(void) { + return Path(fm_path_get_scheme_path(dataPtr())); } - /* calculate how many elements are in this path. */ - int depth() const { - return fm_path_depth(data_); + + bool hasPrefix(FmPath* prefix) { + return fm_path_has_prefix(dataPtr(), prefix); } - FmPath* data() const { - return data_; + + FmPathFlags getFlags(void) { + return fm_path_get_flags(dataPtr()); } + + Path getParent(void) { + return Path(fm_path_get_parent(dataPtr())); + } + + + static Path getAppsMenu(void ) { + return Path(fm_path_get_apps_menu()); + } + + + static Path getTrash(void ) { + return Path(fm_path_get_trash()); + } + + + static Path getDesktop(void ) { + return Path(fm_path_get_desktop()); + } + + + static Path getHome(void ) { + return Path(fm_path_get_home()); + } + + + static Path getRoot(void ) { + return Path(fm_path_get_root()); + } + + + static Path newForGfile(GFile* gf) { + return Path::wrapPtr(fm_path_new_for_gfile(gf)); + } + + + Path newRelative(const char* rel) { + return Path::wrapPtr(fm_path_new_relative(dataPtr(), rel)); + } + + + Path newChildLen(const char* basename, int name_len) { + return Path::wrapPtr(fm_path_new_child_len(dataPtr(), basename, name_len)); + } + + + Path newChild(const char* basename) { + return Path::wrapPtr(fm_path_new_child(dataPtr(), basename)); + } + + + static Path newForCommandlineArg(const char* arg) { + return Path::wrapPtr(fm_path_new_for_commandline_arg(arg)); + } + + + static Path newForStr(const char* path_str) { + return Path::wrapPtr(fm_path_new_for_str(path_str)); + } + + + static Path newForDisplayName(const char* path_name) { + return Path::wrapPtr(fm_path_new_for_display_name(path_name)); + } + + + static Path newForUri(const char* uri) { + return Path::wrapPtr(fm_path_new_for_uri(uri)); + } + + + static Path newForPath(const char* path_name) { + return Path::wrapPtr(fm_path_new_for_path(path_name)); + } + + + private: - FmPath* data_; + FmPath* dataPtr_; // data pointer for the underlying C struct + }; } Q_DECLARE_OPAQUE_POINTER(FmPath*) -#endif // FM_PATH_H +#endif // __LIBFM_QT_FM_PATH_H__ diff --git a/src/pathedit.cpp b/src/pathedit.cpp index 01fd35a..50b866d 100644 --- a/src/pathedit.cpp +++ b/src/pathedit.cpp @@ -69,9 +69,9 @@ void PathEditJob::runJob() { PathEdit::PathEdit(QWidget* parent): QLineEdit(parent), - cancellable_(NULL), + completer_(new QCompleter()), model_(new QStringListModel()), - completer_(new QCompleter()) { + cancellable_(NULL) { setCompleter(completer_); completer_->setModel(model_); connect(this, &PathEdit::textChanged, this, &PathEdit::onTextChanged); diff --git a/src/placesmodelitem.cpp b/src/placesmodelitem.cpp index 8df7608..1f18f1f 100644 --- a/src/placesmodelitem.cpp +++ b/src/placesmodelitem.cpp @@ -27,15 +27,15 @@ namespace Fm { PlacesModelItem::PlacesModelItem(): QStandardItem(), path_(NULL), - icon_(NULL), - fileInfo_(NULL) { + fileInfo_(NULL), + icon_(NULL) { } PlacesModelItem::PlacesModelItem(const char* iconName, QString title, FmPath* path): QStandardItem(title), path_(path ? fm_path_ref(path) : NULL), - icon_(fm_icon_from_name(iconName)), - fileInfo_(NULL) { + fileInfo_(NULL), + icon_(fm_icon_from_name(iconName)) { if(icon_) QStandardItem::setIcon(IconTheme::icon(icon_)); setEditable(false); @@ -44,8 +44,8 @@ PlacesModelItem::PlacesModelItem(const char* iconName, QString title, FmPath* pa PlacesModelItem::PlacesModelItem(FmIcon* icon, QString title, FmPath* path): QStandardItem(title), path_(path ? fm_path_ref(path) : NULL), - icon_(icon ? fm_icon_ref(icon) : NULL), - fileInfo_(NULL) { + fileInfo_(NULL), + icon_(icon ? fm_icon_ref(icon) : NULL) { if(icon_) QStandardItem::setIcon(IconTheme::icon(icon)); setEditable(false); @@ -53,9 +53,9 @@ PlacesModelItem::PlacesModelItem(FmIcon* icon, QString title, FmPath* path): PlacesModelItem::PlacesModelItem(QIcon icon, QString title, FmPath* path): QStandardItem(icon, title), - icon_(NULL), path_(path ? fm_path_ref(path) : NULL), - fileInfo_(NULL) { + fileInfo_(NULL), + icon_(NULL) { setEditable(false); } diff --git a/src/proxyfoldermodel.cpp b/src/proxyfoldermodel.cpp index b375a2d..94accc1 100644 --- a/src/proxyfoldermodel.cpp +++ b/src/proxyfoldermodel.cpp @@ -26,10 +26,10 @@ namespace Fm { ProxyFolderModel::ProxyFolderModel(QObject * parent): QSortFilterProxyModel(parent), - thumbnailSize_(0), showHidden_(false), + folderFirst_(true), showThumbnails_(false), - folderFirst_(true) { + thumbnailSize_(0) { setDynamicSortFilter(true); setSortCaseSensitivity(Qt::CaseInsensitive); } diff --git a/src/renamedialog.cpp b/src/renamedialog.cpp index e9f9456..054752b 100644 --- a/src/renamedialog.cpp +++ b/src/renamedialog.cpp @@ -72,9 +72,9 @@ RenameDialog::RenameDialog(FmFileInfo* src, FmFileInfo* dest, QWidget* parent, Q .arg(QString::fromUtf8(fm_file_info_get_disp_mtime(dest))); } else { - infoStr = QString(tr("Type: %1\nModified: %3")) - .arg(QString::fromUtf8(fm_file_info_get_desc(src))) - .arg(QString::fromUtf8(fm_file_info_get_disp_mtime(src))); + infoStr = QString(tr("Type: %1\nModified: %2")) + .arg(QString::fromUtf8(fm_file_info_get_desc(dest))) + .arg(QString::fromUtf8(fm_file_info_get_disp_mtime(dest))); } ui->destInfo->setText(infoStr); diff --git a/src/sidepane.cpp b/src/sidepane.cpp index 9c9a20f..959245d 100644 --- a/src/sidepane.cpp +++ b/src/sidepane.cpp @@ -32,12 +32,12 @@ namespace Fm { SidePane::SidePane(QWidget* parent): QWidget(parent), - showHidden_(false), - mode_(ModeNone), + currentPath_(NULL), view_(NULL), combo_(NULL), - currentPath_(NULL), - iconSize_(24, 24) { + iconSize_(24, 24), + mode_(ModeNone), + showHidden_(false) { verticalLayout = new QVBoxLayout(this); verticalLayout->setContentsMargins(0, 0, 0, 0); diff --git a/src/simplejob.h b/src/simplejob.h new file mode 100644 index 0000000..e69de29 diff --git a/src/templates.h b/src/templates.h new file mode 100644 index 0000000..fa55979 --- /dev/null +++ b/src/templates.h @@ -0,0 +1,158 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_TEMPLATES_H__ +#define __LIBFM_QT_FM_TEMPLATES_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Template { +public: + + + // default constructor + Template() { + dataPtr_ = nullptr; + } + + + Template(FmTemplate* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Template(const Template& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Template(Template&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~Template() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Template wrapPtr(FmTemplate* dataPtr) { + Template obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmTemplate* takeDataPtr() { + FmTemplate* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmTemplate* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmTemplate*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Template& operator=(const Template& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Template& operator=(Template&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + bool createFile(GFile* path, GError** error, gboolean run_default) { + return fm_template_create_file(dataPtr(), path, error, run_default); + } + + + bool isDirectory(void) { + return fm_template_is_directory(dataPtr()); + } + + + FmIcon* getIcon(void) { + return fm_template_get_icon(dataPtr()); + } + + + FmMimeType* getMimeType(void) { + return fm_template_get_mime_type(dataPtr()); + } + + + static GList* listAll(gboolean user_only) { + return fm_template_list_all(user_only); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_TEMPLATES_H__ diff --git a/src/terminal.h b/src/terminal.h new file mode 100644 index 0000000..cd7a31c --- /dev/null +++ b/src/terminal.h @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_TERMINAL_H__ +#define __LIBFM_QT_FM_TERMINAL_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Terminal { +public: + + + // default constructor + Terminal() { + dataPtr_ = nullptr; + } + + + Terminal(FmTerminal* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(g_object_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Terminal(const Terminal& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Terminal(Terminal&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + virtual ~Terminal() { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Terminal wrapPtr(FmTerminal* dataPtr) { + Terminal obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmTerminal* takeDataPtr() { + FmTerminal* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmTerminal* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmTerminal*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Terminal& operator=(const Terminal& other) { + if(dataPtr_ != nullptr) { + g_object_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(g_object_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Terminal& operator=(Terminal&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + static bool launch(const gchar* dir, GError** error) { + return fm_terminal_launch(dir, error); + } + + + static Terminal dupDefault(GError** error) { + return Terminal::wrapPtr(fm_terminal_dup_default(error)); + } + + + // automatic type casting for GObject + operator GObject*() { + return reinterpret_cast(dataPtr_); + } + + +protected: + GObject* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_TERMINAL_H__ diff --git a/src/thumbnailer.h b/src/thumbnailer.h new file mode 100644 index 0000000..bbf3db2 --- /dev/null +++ b/src/thumbnailer.h @@ -0,0 +1,158 @@ +/* + * Copyright (C) 2016 Hong Jen Yee (PCMan) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __LIBFM_QT_FM_THUMBNAILER_H__ +#define __LIBFM_QT_FM_THUMBNAILER_H__ + +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + +class LIBFM_QT_API Thumbnailer { +public: + + + // default constructor + Thumbnailer() { + dataPtr_ = nullptr; + } + + + Thumbnailer(FmThumbnailer* dataPtr){ + dataPtr_ = dataPtr != nullptr ? reinterpret_cast(fm_thumbnailer_ref(dataPtr)) : nullptr; + } + + + // copy constructor + Thumbnailer(const Thumbnailer& other) { + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_thumbnailer_ref(other.dataPtr_)) : nullptr; + } + + + // move constructor + Thumbnailer(Thumbnailer&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + } + + + // destructor + ~Thumbnailer() { + if(dataPtr_ != nullptr) { + fm_thumbnailer_unref(dataPtr_); + } + } + + + // create a wrapper for the data pointer without increasing the reference count + static Thumbnailer wrapPtr(FmThumbnailer* dataPtr) { + Thumbnailer obj; + obj.dataPtr_ = reinterpret_cast(dataPtr); + return obj; + } + + // disown the managed data pointer + FmThumbnailer* takeDataPtr() { + FmThumbnailer* data = reinterpret_cast(dataPtr_); + dataPtr_ = nullptr; + return data; + } + + // get the raw pointer wrapped + FmThumbnailer* dataPtr() { + return reinterpret_cast(dataPtr_); + } + + // automatic type casting + operator FmThumbnailer*() { + return dataPtr(); + } + + // automatic type casting + operator void*() { + return dataPtr(); + } + + + // copy assignment + Thumbnailer& operator=(const Thumbnailer& other) { + if(dataPtr_ != nullptr) { + fm_thumbnailer_unref(dataPtr_); + } + dataPtr_ = other.dataPtr_ != nullptr ? reinterpret_cast(fm_thumbnailer_ref(other.dataPtr_)) : nullptr; + return *this; + } + + + // move assignment + Thumbnailer& operator=(Thumbnailer&& other) { + dataPtr_ = reinterpret_cast(other.takeDataPtr()); + return *this; + } + + bool isNull() { + return (dataPtr_ == nullptr); + } + + // methods + + static void checkUpdate( ) { + fm_thumbnailer_check_update(); + } + + + void free(void) { + fm_thumbnailer_free(dataPtr()); + } + + + bool launchForUri(const char* uri, const char* output_file, guint size) { + return fm_thumbnailer_launch_for_uri(dataPtr(), uri, output_file, size); + } + + + GPid launchForUriAsync(const char* uri, const char* output_file, guint size, GError** error) { + return fm_thumbnailer_launch_for_uri_async(dataPtr(), uri, output_file, size, error); + } + + + char* commandForUri(const char* uri, const char* output_file, guint size) { + return fm_thumbnailer_command_for_uri(dataPtr(), uri, output_file, size); + } + + + static Thumbnailer newFromKeyfile(const char* id, GKeyFile* kf) { + return Thumbnailer::wrapPtr(fm_thumbnailer_new_from_keyfile(id, kf)); + } + + + +private: + FmThumbnailer* dataPtr_; // data pointer for the underlying C struct + +}; + + +} + +#endif // __LIBFM_QT_FM_THUMBNAILER_H__ diff --git a/src/thumbnailloader.cpp b/src/thumbnailloader.cpp index af60fd6..8b46cdb 100644 --- a/src/thumbnailloader.cpp +++ b/src/thumbnailloader.cpp @@ -98,7 +98,7 @@ ThumbnailLoader::ThumbnailLoader() { getImageText, setImageText }; - gboolean success = fm_thumbnail_loader_set_backend(&qt_backend); + fm_thumbnail_loader_set_backend(&qt_backend); } ThumbnailLoader::~ThumbnailLoader() { @@ -117,7 +117,7 @@ GObject* ThumbnailLoader::readImageFromStream(GInputStream* stream, guint64 len, // FIXME: should we set a limit here? Otherwise if len is too large, we can run out of memory. QScopedArrayPointer buffer(new unsigned char[len]); // allocate enough buffer unsigned char* pbuffer = buffer.data(); - int totalReadSize = 0; + unsigned int totalReadSize = 0; while(!g_cancellable_is_cancelled(cancellable) && totalReadSize < len) { int bytesToRead = totalReadSize + 4096 > len ? len - totalReadSize : 4096; gssize readSize = g_input_stream_read(stream, pbuffer, bytesToRead, cancellable, NULL); diff --git a/src/translations/libfm-qt.ts b/src/translations/libfm-qt.ts deleted file mode 100644 index d04b96e..0000000 --- a/src/translations/libfm-qt.ts +++ /dev/null @@ -1,1265 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - - - - - Installed Applications - - - - - Custom Command - - - - - Command line to execute: - - - - - Application name: - - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - - - - - Keep terminal window open after command execution - - - - - Execute in terminal emulator - - - - - Set selected application as default action of this file type - - - - - EditBookmarksDialog - - - Edit Bookmarks - - - - - Name - - - - - Location - - - - - &Add Item - - - - - &Remove Item - - - - - Use drag and drop to reorder the items - - - - - ExecFileDialog - - - Execute file - - - - - &Open - - - - - E&xecute - - - - - Execute in &Terminal - - - - - Cancel - - - - - FileOperationDialog - - - Destination: - - - - - Processing: - - - - - Preparing... - - - - - Progress - - - - - Time remaining: - - - - - FilePropsDialog - - - File Properties - - - - - General - - - - - Location: - - - - - File type: - - - - - Mime type: - - - - - File size: - - - - - On-disk size: - - - - - Last modified: - - - - - Link target: - - - - - Open With: - - - - - Last accessed: - - - - - Permissions - - - - - Ownership - - - - - - - Group: - - - - - - - Owner: - - - - - Access Control - - - - - - Other: - - - - - Make the file executable - - - - - - - Read - - - - - - - Write - - - - - - - Execute - - - - - Sticky - - - - - SetUID - - - - - SetGID - - - - - Advanced Mode - - - - - Fm::AppChooserComboBox - - - Customize - - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - - - - - Fm::CreateNewMenu - - - Folder - - - - - Blank File - - - - - Fm::DirTreeModel - - - Loading... - - - - - <No sub folders> - - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - - - - - Move here - - - - - Create symlink here - - - - - Cancel - - - - - Fm::EditBookmarksDialog - - - New bookmark - - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - - - - - This file '%1' is executable. Do you want to execute it? - - - - - Fm::FileMenu - - - Open - - - - - Open With... - - - - - Other Applications - - - - - Create &New - - - - - &Restore - - - - - Cut - - - - - Copy - - - - - Paste - - - - - - &Move to Trash - - - - - Rename - - - - - Extract to... - - - - - Extract Here - - - - - Compress - - - - - Properties - - - - - Output - - - - - &Delete - - - - - Fm::FileOperation - - - Error - - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - - - - - - Confirm - - - - - Do you want to delete the selected files? - - - - - Do you want to move the selected files to trash can? - - - - - Fm::FileOperationDialog - - - Move files - - - - - Moving the following files to destination folder: - - - - - Copy Files - - - - - Copying the following files to destination folder: - - - - - Trash Files - - - - - Moving the following files to trash can: - - - - - Delete Files - - - - - Deleting the following files - - - - - Create Symlinks - - - - - Creating symlinks for the following files: - - - - - Change Attributes - - - - - Changing attributes of the following files: - - - - - Restore Trashed Files - - - - - Restoring the following files from trash can: - - - - - Error - - - - - Fm::FilePropsDialog - - - View folder content - - - - - View and modify folder content - - - - - Read - - - - - Read and write - - - - - Forbidden - - - - - Files of different types - - - - - Multiple Files - - - - - Apply changes - - - - - Do you want to recursively apply these changes to all files and sub-folders? - - - - - Fm::FileSearchDialog - - - Error - - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - - - - - &Paste - - - - - Select &All - - - - - Invert Selection - - - - - Sorting - - - - - Show Hidden - - - - - Folder Pr&operties - - - - - By File Name - - - - - By Modification Time - - - - - By File Size - - - - - By File Type - - - - - By File Owner - - - - - Ascending - - - - - Descending - - - - - Folder First - - - - - Case Sensitive - - - - - Fm::FolderModel - - - Name - - - - - Type - - - - - Size - - - - - Modified - - - - - Owner - - - - - Fm::FontButton - - - Bold - - - - - Italic - - - - - Fm::MountOperationPasswordDialog - - - &Connect - - - - - Fm::PlacesModel - - - Places - - - - - Desktop - - - - - Computer - - - - - Applications - - - - - Network - - - - - Devices - - - - - Bookmarks - - - - - Trash - - - - - Fm::PlacesView - - - Open in New Tab - - - - - Open in New Window - - - - - Empty Trash - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - - - - - Mount - - - - - Eject - - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - - - - - Type: %1 -Modified: %2 - - - - - Type: %1 -Modified: %3 - - - - - &Overwrite - - - - - &Rename - - - - - Fm::SidePane - - - - Places - - - - - - Directory Tree - - - - - Shows list of common places, devices, and bookmarks in sidebar - - - - - Shows tree of directories in sidebar - - - - - MountOperationPasswordDialog - - - Mount - - - - - Connect &anonymously - - - - - Connect as u&ser: - - - - - &Username: - - - - - &Password: - - - - - &Domain: - - - - - Forget password &immediately - - - - - Remember password until you &logout - - - - - Remember &forever - - - - - QObject - - - Rename File - - - - - Please enter a new name: - - - - - - - - Error - - - - - Create Folder - - - - - Create File - - - - - Please enter a new file name: - - - - - New text file - - - - - Please enter a new folder name: - - - - - New folder - - - - - Enter a name for the new %1: - - - - - RenameDialog - - - Confirm to replace files - - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - - - - - dest - - - - - with the following file? - - - - - src file info - - - - - dest file info - - - - - src - - - - - &File name: - - - - - Apply this option to all existing files - - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_ar.ts b/src/translations/libfm-qt_ar.ts deleted file mode 100644 index 81c124b..0000000 --- a/src/translations/libfm-qt_ar.ts +++ /dev/null @@ -1,1265 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - - - - - Installed Applications - - - - - Custom Command - - - - - Command line to execute: - - - - - Application name: - - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - - - - - Keep terminal window open after command execution - - - - - Execute in terminal emulator - - - - - Set selected application as default action of this file type - - - - - EditBookmarksDialog - - - Edit Bookmarks - - - - - Name - - - - - Location - - - - - &Add Item - - - - - &Remove Item - - - - - Use drag and drop to reorder the items - - - - - ExecFileDialog - - - Execute file - - - - - &Open - - - - - E&xecute - - - - - Execute in &Terminal - - - - - Cancel - - - - - FileOperationDialog - - - Destination: - - - - - Processing: - - - - - Preparing... - - - - - Progress - - - - - Time remaining: - - - - - FilePropsDialog - - - File Properties - - - - - General - - - - - Location: - - - - - File type: - - - - - Mime type: - - - - - File size: - - - - - On-disk size: - - - - - Last modified: - - - - - Link target: - - - - - Open With: - - - - - Last accessed: - - - - - Permissions - - - - - Ownership - - - - - - - Group: - - - - - - - Owner: - - - - - Access Control - - - - - - Other: - - - - - Make the file executable - - - - - - - Read - - - - - - - Write - - - - - - - Execute - - - - - Sticky - - - - - SetUID - - - - - SetGID - - - - - Advanced Mode - - - - - Fm::AppChooserComboBox - - - Customize - - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - - - - - Fm::CreateNewMenu - - - Folder - - - - - Blank File - - - - - Fm::DirTreeModel - - - Loading... - - - - - <No sub folders> - - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - - - - - Move here - - - - - Create symlink here - - - - - Cancel - - - - - Fm::EditBookmarksDialog - - - New bookmark - - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - - - - - This file '%1' is executable. Do you want to execute it? - - - - - Fm::FileMenu - - - Open - - - - - Cut - - - - - Copy - - - - - Paste - - - - - - &Move to Trash - - - - - Output - - - - - &Delete - - - - - Rename - - - - - Open With... - - - - - Other Applications - - - - - Create &New - - - - - &Restore - - - - - Extract to... - - - - - Extract Here - - - - - Compress - - - - - Properties - - - - - Fm::FileOperation - - - Error - - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - - - - - - Confirm - - - - - Do you want to delete the selected files? - - - - - Do you want to move the selected files to trash can? - - - - - Fm::FileOperationDialog - - - Move files - - - - - Moving the following files to destination folder: - - - - - Copy Files - - - - - Copying the following files to destination folder: - - - - - Trash Files - - - - - Moving the following files to trash can: - - - - - Delete Files - - - - - Deleting the following files - - - - - Create Symlinks - - - - - Creating symlinks for the following files: - - - - - Change Attributes - - - - - Changing attributes of the following files: - - - - - Restore Trashed Files - - - - - Restoring the following files from trash can: - - - - - Error - - - - - Fm::FilePropsDialog - - - View folder content - - - - - View and modify folder content - - - - - Read - - - - - Read and write - - - - - Forbidden - - - - - Files of different types - - - - - Multiple Files - - - - - Apply changes - - - - - Do you want to recursively apply these changes to all files and sub-folders? - - - - - Fm::FileSearchDialog - - - Error - - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - - - - - &Paste - - - - - Select &All - - - - - Invert Selection - - - - - Sorting - - - - - Show Hidden - - - - - Folder Pr&operties - - - - - By File Name - - - - - By Modification Time - - - - - By File Size - - - - - By File Type - - - - - By File Owner - - - - - Ascending - - - - - Descending - - - - - Folder First - - - - - Case Sensitive - - - - - Fm::FolderModel - - - Name - - - - - Type - - - - - Size - - - - - Modified - - - - - Owner - - - - - Fm::FontButton - - - Bold - - - - - Italic - - - - - Fm::MountOperationPasswordDialog - - - &Connect - - - - - Fm::PlacesModel - - - Places - - - - - Desktop - - - - - Trash - - - - - Computer - - - - - Applications - - - - - Network - - - - - Devices - - - - - Bookmarks - - - - - Fm::PlacesView - - - Empty Trash - - - - - Open in New Tab - - - - - Open in New Window - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - - - - - Mount - - - - - Eject - - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - - - - - Type: %1 -Modified: %2 - - - - - Type: %1 -Modified: %3 - - - - - &Overwrite - - - - - &Rename - - - - - Fm::SidePane - - - - Places - - - - - - Directory Tree - - - - - Shows list of common places, devices, and bookmarks in sidebar - - - - - Shows tree of directories in sidebar - - - - - MountOperationPasswordDialog - - - Mount - - - - - Connect &anonymously - - - - - Connect as u&ser: - - - - - &Username: - - - - - &Password: - - - - - &Domain: - - - - - Forget password &immediately - - - - - Remember password until you &logout - - - - - Remember &forever - - - - - QObject - - - - - - Error - - - - - Rename File - - - - - Please enter a new name: - - - - - Create Folder - - - - - Please enter a new file name: - - - - - New text file - - - - - Please enter a new folder name: - - - - - New folder - - - - - Enter a name for the new %1: - - - - - Create File - - - - - RenameDialog - - - Confirm to replace files - - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - - - - - dest - - - - - with the following file? - - - - - src file info - - - - - dest file info - - - - - src - - - - - &File name: - - - - - Apply this option to all existing files - - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_cs_CZ.ts b/src/translations/libfm-qt_cs_CZ.ts deleted file mode 100644 index ec2abd7..0000000 --- a/src/translations/libfm-qt_cs_CZ.ts +++ /dev/null @@ -1,1292 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Výběr aplikace - - - - Installed Applications - Nainstalované aplikace - - - - Custom Command - Vlastní příkaz - - - - Command line to execute: - Příkaz k vykonání: - - - - Application name: - Jméno aplikace: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Tyto zástupné symboly mohou být použity v příkazovém řádku:</b> -<ul> -<li><b>%f</b>: Reprezentuje jméno jednoho souboru</li> -<li><b>%F</b>: Reprezentuje jména více souborů</li> -<li><b>%u</b>: Reprezentuje URI jednoho souboru</li> -<li><b>%U</b>: Reprezentuje URI více souborů</li> -</ul> - - - - Keep terminal window open after command execution - Nechat okno terminálu otevřené - - - - Execute in terminal emulator - Spustit v emulátoru terminálu - - - - Set selected application as default action of this file type - Použít aplikaci jako výchozí pro soubory tohoto typu - - - - EditBookmarksDialog - - - Edit Bookmarks - Upravit záložky - - - - Name - Jméno - - - - Location - Umístění - - - - &Add Item - &Přidat položku - - - - &Remove Item - &Odebrat položku - - - - Use drag and drop to reorder the items - Přetažením uprav pořadí - - - - ExecFileDialog - - - Execute file - Spustit soubor - - - - &Open - &Otevřít - - - - E&xecute - &Spustit - - - - Execute in &Terminal - Spustit v &Terminálu - - - - Cancel - Zrušit - - - - FileOperationDialog - - - Destination: - Umístění: - - - - Processing: - Zpracování: - - - - Preparing... - Příprava... - - - - Progress - Průběh - - - - Time remaining: - Zbývající čas: - - - - FilePropsDialog - - - File Properties - Vlastnosti souboru - - - - General - Obecné - - - - Location: - Umístění: - - - - File type: - Typ souboru: - - - - Mime type: - Mime typ: - - - - File size: - Velikost souboru: - - - - On-disk size: - Zabrané místo: - - - - Last modified: - Upraveno: - - - - Link target: - Cíl odkazu: - - - - Open With: - Otevřít pomocí: - - - - Last accessed: - Poslední přístup: - - - - Permissions - Práva - - - - Ownership - Vlastnictví - - - - - - Group: - Skupina: - - - - - - Owner: - Vlastník: - - - - Access Control - Zpřístupnění - - - - - Other: - Ostatní: - - - - Make the file executable - Označit soubor jako spustitelný - - - - - - Read - Čtení - - - - - - Write - Čtení a zápis - - - - - - Execute - Spuštění - - - - Sticky - - - - - SetUID - - - - - SetGID - - - - - Advanced Mode - Pokročilý režim - - - - Fm::AppChooserComboBox - - - Customize - Vlastní - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Vyber program, ve kterém se budou otvírat soubory “%1“ - - - - Fm::CreateNewMenu - - - Folder - Adresář - - - - Blank File - Prázdný soubor - - - - Fm::DirTreeModel - - - Loading... - - - - - <No sub folders> - - - - - Fm::DirTreeView - - - Open in New T&ab - Otevřít v novém &panelu - - - - Open in New Win&dow - Otevřít v novém &okně - - - - Open in Termina&l - Otevřít v &terminálu - - - - Fm::DndActionMenu - - - Copy here - Kopírovat sem - - - - Move here - Přesunout sem - - - - Create symlink here - Vytvořit zde odkaz - - - - Cancel - Zrušit - - - - Fm::EditBookmarksDialog - - - New bookmark - Nová záložka - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - - - - - This file '%1' is executable. Do you want to execute it? - - - - - Fm::FileMenu - - - Open - Otevřít - - - - Create &New - Vytvořit &nový - - - - &Restore - O&bnovit - - - - Cut - Vyjmout - - - - Copy - Kopírovat - - - - Paste - Vložit - - - - - &Move to Trash - Přesunout do &koše - - - - Output - Výstup - - - - &Delete - &Smazat - - - - Rename - Přejmenovat - - - - Open With... - Otevřít v ... - - - - Other Applications - Ostatní programy - - - - Extract to... - Rozbalit do ... - - - - Extract Here - Rozbalit sem - - - - Compress - Komprimovat - - - - Properties - Vlastnosti - - - - Fm::FileOperation - - - Error - Chyba - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Některé soubory nemohou být přesunuty do koše, protože příslušné souborové systémy nepodporují tuto operaci. -Chceš je odstranit trvale? - - - - - Confirm - Potvrdit - - - - Do you want to delete the selected files? - Chceš smazat vybrané soubory? - - - - Do you want to move the selected files to trash can? - Chceš přesunout vybrané soubory do koše? - - - - Fm::FileOperationDialog - - - Move files - - - - - Moving the following files to destination folder: - - - - - Copy Files - - - - - Copying the following files to destination folder: - - - - - Trash Files - - - - - Moving the following files to trash can: - - - - - Delete Files - - - - - Deleting the following files - - - - - Create Symlinks - - - - - Creating symlinks for the following files: - - - - - Change Attributes - - - - - Changing attributes of the following files: - - - - - Restore Trashed Files - - - - - Restoring the following files from trash can: - - - - - Error - Chyba - - - - Fm::FilePropsDialog - - - View folder content - Zobrazit obsah složky - - - - View and modify folder content - Zobrazit a měnit obsah složky - - - - Read - Čtení - - - - Read and write - Čtení a zápis - - - - Forbidden - Zakázáno - - - - Files of different types - Soubory různých typů - - - - Multiple Files - - - - - Apply changes - Použít změny - - - - Do you want to recursively apply these changes to all files and sub-folders? - - - - - Fm::FileSearchDialog - - - Error - Chyba - - - - You should add at least add one directory to search. - Přidej aspoň jeden adresář k prohledání. - - - - Select a folder - Vybrat adresář - - - - Fm::FolderMenu - - - Create &New - Vytvořit &nový - - - - &Paste - &Vložit - - - - Select &All - Vybr&at všechno - - - - Invert Selection - Invertovat výběr - - - - Sorting - Řadit - - - - Show Hidden - Zobrazit skryté - - - - Folder Pr&operties - Vlastnosti sl&ožky - - - Folder - Adresář - - - Blank File - Prázdný soubor - - - - By File Name - Podle jména - - - - By Modification Time - Podle času - - - - By File Size - Podle velikosti - - - - By File Type - Podle typu - - - - By File Owner - Podle vlastníka - - - - Ascending - Vzestupně - - - - Descending - sestupně - - - - Folder First - Adresáře jako první - - - - Case Sensitive - Zohlednit velikost písmen - - - - Fm::FolderModel - - - Name - Jméno - - - - Type - Typ - - - - Size - Velikost - - - - Modified - Změněno - - - - Owner - Vlastník - - - - Fm::FontButton - - - Bold - Tučné - - - - Italic - Kurzíva - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Připojit - - - - Fm::PlacesModel - - - Places - Místa - - - - Desktop - Plocha - - - - Trash - Koš - - - - Computer - Počítač - - - - Applications - Aplikace - - - - Network - Síť - - - - Devices - Zařízení - - - - Bookmarks - Záložky - - - - Fm::PlacesView - - - Empty Trash - Vysypat koš - - - Rename - Přejmenovat - - - Delete - Smazat - - - - Open in New Tab - Otevřít v novém panelu - - - - Open in New Window - Otevřít v novém okně - - - - Move Bookmark Up - Přesunout záložku nahoru - - - - Move Bookmark Down - Přesunout záložku dolů - - - - Rename Bookmark - Přejmenovat záložku - - - - Remove Bookmark - Odstranit záložku - - - - - Unmount - Odpojit - - - - Mount - Připojit - - - - Eject - Vysunout - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Typ: %1 -Velikost: %2 -Změněno: %3 - - - - Type: %1 -Modified: %2 - Typ: %1 -Změněno: %2 - - - - Type: %1 -Modified: %3 - Typ: %1 -Změněno: %3 - - - - &Overwrite - &Přepsat - - - - &Rename - Pře&jmenovat - - - - Fm::SidePane - - - - Places - Místa - - - - - Directory Tree - Strom adresářů - - - - Shows list of common places, devices, and bookmarks in sidebar - Zobrazit seznam obvyklých míst, zařízení a záložek v postranní liště - - - - Shows tree of directories in sidebar - Zobrazit strom adresářů v postranní liště - - - - MountOperationPasswordDialog - - - Mount - Připojit - - - - Connect &anonymously - Připojit &anonymně - - - - Connect as u&ser: - Připojit jako &uživatel: - - - - &Username: - &Jméno: - - - - &Password: - &Heslo: - - - - &Domain: - &Doména: - - - - Forget password &immediately - &Zapomenout heslo - - - - Remember password until you &logout - Pamatovat si heslo do &odhlášení - - - - Remember &forever - Pamatovat si heslo &trvale - - - - QObject - - - - - - Error - Chyba - - - - Rename File - Přejmenovat soubor - - - - Please enter a new name: - Prosím zadej nové jméno: - - - - Create Folder - Vytvořit adresář - - - - Please enter a new file name: - Prosím zadej nové jméno souboru: - - - - New text file - Nový textový soubor - - - - Please enter a new folder name: - Prosím zadej nové jméno adresáře: - - - - New folder - Nový adresář - - - - Enter a name for the new %1: - Zadej jméno pro nový %1: - - - - Create File - Vytvořit soubor - - - - RenameDialog - - - Confirm to replace files - Potvrdit náhradu souborů - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Na tomto místě už je soubor se stejným jménem.</span></p><p>Chceš nahradit existující soubor</p></body></html> - - - - dest - - - - - with the following file? - následujícím souborem? - - - - src file info - - - - - dest file info - - - - - src - - - - - &File name: - &Jméno souboru: - - - - Apply this option to all existing files - Použij tuto volbu pro všechny soubory - - - - SearchDialog - - - Search Files - Hledat soubory - - - - Name/Location - Jméno/umístění - - - - File Name Patterns: - Jméno souboru obsahuje: - - - - * - - - - - Case insensitive - Nezohledňovat velikost písmen - - - - Use regular expression - Použít regulární výrazy - - - - Places to Search: - Místa k prohledání: - - - - &Add - &Přidat - - - - &Remove - &Odstranit - - - - Search in sub directories - Hledat v podadresářích - - - - Search for hidden files - Hledat skryté soubory - - - - File Type - Typ souboru - - - - Only search for files of following types: - Hledat pouze soubory tohoto typu: - - - - Text files - Textové soubory - - - - Image files - Obrázky - - - - Audio files - Zvuky - - - - Video files - Videa - - - - Documents - Dokumenty - - - - Folders - Adresáře - - - - Content - Obsah - - - - File contains: - Soubor obsahuje: - - - - Case insensiti&ve - Nezohledňovat &velikost písmen - - - - &Use regular expression - Po&užít regulární výrazy - - - - Properties - Vlastnosti - - - - File Size: - Velikost souboru: - - - - Larger than: - Větší než: - - - - - Bytes - Bytů - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - Menší než: - - - - Last Modified Time: - Čas poslední změny: - - - - Earlier than: - Dříve než: - - - - Later than: - Později než: - - - diff --git a/src/translations/libfm-qt_de.ts b/src/translations/libfm-qt_de.ts deleted file mode 100644 index 5cb146c..0000000 --- a/src/translations/libfm-qt_de.ts +++ /dev/null @@ -1,1293 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Wählen Sie eine Anwendung - - - - Installed Applications - Installierte Anwendungen - - - - Custom Command - Benutzerdefinierter Befehl - - - - Command line to execute: - Auszuführender Befehl: - - - - Application name: - Anwendungsname: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Diese speziellen Kürzel können im Befehl verwendet werden</b> -<ul> -<li><b>%f</b>: Repräsentiert eine einzelne Datei</li> -<li><b>%F</b>: Repräsentiert mehrere Dateien</li> -<li><b>%u</b>: Repräsentiert eine einzelne URI einer Datei</li> -<li><b>%U</b>: Repräsentiert mehrere URIs</li> -</ul> - - - - Keep terminal window open after command execution - Terminalfenster nach der Ausführung des Befehls offen lassen - - - - Execute in terminal emulator - In einem Terminalemulator ausführen - - - - Set selected application as default action of this file type - Ausgewählte Anwendung als Standardaktion für diesen Dateityp festlegen - - - - EditBookmarksDialog - - - Edit Bookmarks - Lesezeichen bearbeiten - - - - Name - Name - - - - Location - Ort - - - - &Add Item - Element &hinzufügen - - - - &Remove Item - Element &entfernen - - - - Use drag and drop to reorder the items - Klicken und ziehen Sie, um Elemente zu sortieren - - - - ExecFileDialog - - - Execute file - Datei ausführen - - - - &Open - Ö&ffnen - - - - E&xecute - &Ausführen - - - - Execute in &Terminal - In einem &Terminal ausführen - - - - Cancel - Abbrechen - - - - FileOperationDialog - - - Destination: - Ziel: - - - - Processing: - Verarbeitet: - - - - Preparing... - Vorbereiten... - - - - Progress - Fortschritt - - - - Time remaining: - Verbleibende Zeit: - - - - FilePropsDialog - - - File Properties - Dateieigenschaften - - - - General - Allgemeines - - - - Location: - Ort: - - - - File type: - Dateityp: - - - - Mime type: - MIME-Typ: - - - - File size: - Dateigröße: - - - - On-disk size: - Größe auf dem Datenträger: - - - - Last modified: - Letztes Änderungsdatum: - - - - Link target: - Verknüpfungsziel: - - - - Open With: - Öffnen mit: - - - - Last accessed: - Letzter Zugriff: - - - - Permissions - Berechtigungen - - - - Ownership - Besitz - - - - - - Group: - Gruppe: - - - - - - Owner: - Besitzer: - - - - Access Control - Zugriffskontrolle - - - - - Other: - Andere: - - - - Make the file executable - Datei ausführbar machen - - - - - - Read - Lesen - - - - - - Write - Schreiben - - - - - - Execute - Ausführen - - - - Sticky - "Sticky bit" - - - - SetUID - SetUID - - - - SetGID - SetGID - - - - Advanced Mode - Erweiterte Einstellungen - - - - Fm::AppChooserComboBox - - - Customize - Anpassen - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Wählen Sie eine Anwendung für Dateien vom Typ "%1" - - - - Fm::CreateNewMenu - - - Folder - Ordner - - - - Blank File - Leere Datei - - - - Fm::DirTreeModel - - - Loading... - Lädt... - - - - <No sub folders> - <Keine Unterverzeichnisse> - - - - Fm::DirTreeView - - - Open in New T&ab - Öffnen in neuem T&ab - - - - Open in New Win&dow - Öffnen in neuem &Fenster - - - - Open in Termina&l - Öffnen in Termina&l - - - - Fm::DndActionMenu - - - Copy here - Hierhin kopieren - - - - Move here - Hierhin verschieben - - - - Create symlink here - Hier eine symbolische Verknüpfung erstellen - - - - Cancel - Abbrechen - - - - Fm::EditBookmarksDialog - - - New bookmark - Neues Lesezeichen - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - Die Textdatei '%1' scheint ein ausführbares Skript zu sein. -Was möchten Sie damit tun? - - - - This file '%1' is executable. Do you want to execute it? - Die Datei '%1' ist ausführbar. Möchten Sie sie ausführen? - - - - Fm::FileMenu - - - Open - Öffnen - - - - Create &New - &Neu erstellen - - - - &Restore - Wiede&rherstellen - - - - Cut - Ausschneiden - - - - Copy - Kopieren - - - - Paste - Einfügen - - - - - &Move to Trash - In den &Papierkorb verschieben - - - - Output - Ausgabe - - - - &Delete - &Löschen - - - - Rename - Umbenennen - - - - Open With... - Öffnen mit... - - - - Other Applications - Andere Anwendungen - - - - Extract to... - Entpacken nach... - - - - Extract Here - Hier entpacken - - - - Compress - Komprimieren - - - - Properties - Eigenschaften - - - - Fm::FileOperation - - - Error - Fehler - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Einige Dateien können nicht in den Papierkorb verschoben werden, da die zugrundeliegenden Dateisysteme den Vorgang nicht unterstützen. -Sollen die Dateien stattdessen gelöscht werden? - - - - - Confirm - Bestätigung - - - - Do you want to delete the selected files? - Möchten Sie die ausgewählten Dateien löschen? - - - - Do you want to move the selected files to trash can? - Möchten Sie die ausgewählten Dateien in den Papierkorb verschieben? - - - - Fm::FileOperationDialog - - - Move files - Dateien verschieben - - - - Moving the following files to destination folder: - Verschiebe die folgenden Dateien in den Zielordner: - - - - Copy Files - Dateien kopieren - - - - Copying the following files to destination folder: - Kopiere die folgenden Dateien in den Zielordner: - - - - Trash Files - Dateien für den Papierkorb - - - - Moving the following files to trash can: - Verschiebe die folgenden Dateien in den Papierkorb: - - - - Delete Files - Dateien löschen - - - - Deleting the following files - Lösche die folgenden Dateien - - - - Create Symlinks - Symbolische Verknüpfung erstellen - - - - Creating symlinks for the following files: - Symbolische Verknüpfungen für die folgenden Dateien erstellen: - - - - Change Attributes - Eigenschaften ändern - - - - Changing attributes of the following files: - Eigenschaften der folgenden Dateien ändern: - - - - Restore Trashed Files - Dateien aus dem Papierkorb wiederherstellen - - - - Restoring the following files from trash can: - Folgende Dateien aus dem Papierkorb wiederherstellen: - - - - Error - Fehler - - - - Fm::FilePropsDialog - - - View folder content - Ordnerinhalt ansehen - - - - View and modify folder content - Ordnerinhalt ansehen und modifizieren - - - - Read - Lesen - - - - Read and write - Lesen und schreiben - - - - Forbidden - Unzulässig - - - - Files of different types - Dateien unterschiedlicher Typen - - - - Multiple Files - Mehrere Dateien - - - - Apply changes - Änderungen anwenden - - - - Do you want to recursively apply these changes to all files and sub-folders? - Möchten Sie die Änderungen auf alle Dateien und Unterverzeichnisse anwenden? - - - - Fm::FileSearchDialog - - - Error - Fehler - - - - You should add at least add one directory to search. - Sie sollten mindestens einen Ordner für die Suche hinzufügen. - - - - Select a folder - Einen Ordner wählen - - - - Fm::FolderMenu - - - Create &New - &Neu erstellen - - - - &Paste - &Einfügen - - - - Select &All - &Alle auswählen - - - - Invert Selection - Auswahl umkehren - - - - Sorting - Sortierung - - - - Show Hidden - Versteckte anzeigen - - - - Folder Pr&operties - Ordner&eigenschaften - - - Folder - Ordner - - - Blank File - Leere Datei - - - - By File Name - Nach Dateiname - - - - By Modification Time - Nach Änderungsdatum - - - - By File Size - Nach Dateigröße - - - - By File Type - Nach Typ - - - - By File Owner - Nach Besitzer - - - - Ascending - Aufsteigend - - - - Descending - Absteigend - - - - Folder First - Ordner zuerst - - - - Case Sensitive - Groß-/ Kleinschreibung beachten - - - - Fm::FolderModel - - - Name - Name - - - - Type - Typ - - - - Size - Größe - - - - Modified - Geändert - - - - Owner - Besitzer - - - - Fm::FontButton - - - Bold - Fett - - - - Italic - Kursiv - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Verbinden - - - - Fm::PlacesModel - - - Places - Orte - - - - Desktop - Schreibtisch - - - - Trash - Papierkorb - - - - Computer - Rechner - - - - Applications - Anwendungen - - - - Network - Netzwerk - - - - Devices - Geräte - - - - Bookmarks - Lesezeichen - - - - Fm::PlacesView - - - Empty Trash - Papierkorb leeren - - - Rename - Umbenennen - - - Delete - Löschen - - - - Open in New Tab - Öffnen in neuem Tab - - - - Open in New Window - Öffnen in neuem Fenster - - - - Move Bookmark Up - Nach oben verschieben - - - - Move Bookmark Down - Nach unten verschieben - - - - Rename Bookmark - Lesezeichen umbenennen - - - - Remove Bookmark - Lesezeichen entfernen - - - - - Unmount - Aushängen - - - - Mount - Einhängen - - - - Eject - Auswerfen - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Typ: %1 -Größe: %2 -Geändert: %3 - - - - Type: %1 -Modified: %2 - Typ: %1 -Geändert: %2 - - - - Type: %1 -Modified: %3 - Typ: %1 -Geändert: %3 - - - - &Overwrite - Über&schreiben - - - - &Rename - &Umbenennen - - - - Fm::SidePane - - - - Places - Orte - - - - - Directory Tree - Verzeichnisbaum - - - - Shows list of common places, devices, and bookmarks in sidebar - Zeigt eine Liste diverser Orte, Geräte und Lesezeichen in der Seitenleiste - - - - Shows tree of directories in sidebar - Zeigt einen Verzeichnisbaum in der Seitenleiste - - - - MountOperationPasswordDialog - - - Mount - Einhängen - - - - Connect &anonymously - &Anonym verbinden - - - - Connect as u&ser: - Verbinden als &Benutzer: - - - - &Username: - Benutzer&name: - - - - &Password: - &Passwort: - - - - &Domain: - &Domäne: - - - - Forget password &immediately - Passwort &sofort vergessen - - - - Remember password until you &logout - Passwort &erst beim Abmelden vergessen - - - - Remember &forever - Passwort &für immer merken - - - - QObject - - - - - - Error - Fehler - - - - Rename File - Datei umbenennen - - - - Please enter a new name: - Bitte geben Sie einen neuen Namen ein: - - - - Create Folder - Ordner erstellen - - - - Please enter a new file name: - Bitte geben Sie einen neuen Dateinamen ein: - - - - New text file - Neue Textdatei - - - - Please enter a new folder name: - Bitte geben Sie einen neuen Ordnernamen ein: - - - - New folder - Neuer Ordner - - - - Enter a name for the new %1: - Geben Sie einen Namen für %1 ein: - - - - Create File - Datei erstellen - - - - RenameDialog - - - Confirm to replace files - Überschreiben von Dateien bestätigen - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Es gibt bereits eine gleichnamige Datei an diesem Ort.</span></p><p>Möchten Sie die Datei ersetzen?</p></body></html> - - - - dest - Ziel - - - - with the following file? - Mit der folgenden Datei? - - - - src file info - Info über die Quelldatei - - - - dest file info - Info über die Zieldatei - - - - src - Quelle - - - - &File name: - &Dateiname: - - - - Apply this option to all existing files - Diese Aktion auf alle existierenden Dateien anwenden - - - - SearchDialog - - - Search Files - Dateien suchen - - - - Name/Location - Name/Ort - - - - File Name Patterns: - Muster für Dateinamen: - - - - * - * - - - - Case insensitive - Groß- und Kleinschreibung ignorieren - - - - Use regular expression - Regulären Ausdruck verwenden - - - - Places to Search: - Zu durchsuchende Orte: - - - - &Add - &Hinzufügen - - - - &Remove - &Entfernen - - - - Search in sub directories - In Unterordnern suchen - - - - Search for hidden files - Nach versteckten Dateien suchen - - - - File Type - Dateityp - - - - Only search for files of following types: - Nur nach Dateien der folgenden Typen suchen: - - - - Text files - Textdateien - - - - Image files - Bilddateien - - - - Audio files - Audiodateien - - - - Video files - Videodateien - - - - Documents - Dokumente - - - - Folders - Ordner - - - - Content - Inhalt - - - - File contains: - Datei enthält: - - - - Case insensiti&ve - Groß- und Kleinschreibung ig&norieren - - - - &Use regular expression - Reg&ulären Ausdruck verwenden - - - - Properties - Eigenschaften - - - - File Size: - Dateigröße: - - - - Larger than: - Größer als: - - - - - Bytes - Bytes - - - - - KiB - KiB - - - - - MiB - MiB - - - - - GiB - GiB - - - - Smaller than: - Kleiner als: - - - - Last Modified Time: - Letztes Änderungsdatum: - - - - Earlier than: - Früher als: - - - - Later than: - Später als: - - - diff --git a/src/translations/libfm-qt_el.ts b/src/translations/libfm-qt_el.ts deleted file mode 100644 index 4b2d511..0000000 --- a/src/translations/libfm-qt_el.ts +++ /dev/null @@ -1,1285 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Επιλέξτε μια εφαρμογή - - - - Installed Applications - Εγκατεστημένες εφαρμογές - - - - Custom Command - Προσαρμοσμένη εντολή - - - - Command line to execute: - Γραμμή εντολών προς εκτέλεση: - - - - Application name: - Όνομα της εφαρμογής: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Αυτοί οι ειδικοί κωδικοί μπορούν να χρησιμοποιηθούν στη γραμμή εντολών:</b> -<ul> -<li><b>%f</b>: Αναπαριστά ένα όνομα αρχείου</li> -<li><b>%F</b>: Αναπαριστά πολλαπλά ονόματα αρχείων</li> -<li><b>%u</b>: Αναπαριστά ένα URI του αρχείου</li> -<li><b>%U</b>: Αναπαριστά πολλαπλά URI</li> -</ul> - - - - Keep terminal window open after command execution - Διατήρηση του παραθύρου του τερματικού ανοιχτό μετά την εκτέλεση της εντολής - - - - Execute in terminal emulator - Εκτέλεση στον προσομοιωτή τερματικού - - - - Set selected application as default action of this file type - Ορίστε την επιλεγμένη εφαρμογή ως την εξ ορισμού ενέργεια για αυτού του τύπου αρχεία - - - - EditBookmarksDialog - - - Edit Bookmarks - Επεξεργασία σελιδοδεικτών - - - - Name - Όνομα - - - - Location - Τοποθεσία - - - - &Add Item - &Προσθήκη αντικειμένου - - - - &Remove Item - &Αφαίρεση αντικειμένου - - - - Use drag and drop to reorder the items - Χρησιμοποιήστε τη μεταφορά και απόθεση για αναδιάταξη των αντικειμένων - - - - ExecFileDialog - - - Execute file - Εκτέλεση του αρχείου - - - - &Open - Ά&νοιγμα - - - - E&xecute - &Εκτέλεση - - - - Execute in &Terminal - Εκτέλεση στο &τερματικό - - - - Cancel - Ακύρωση - - - - FileOperationDialog - - - Destination: - Προορισμός: - - - - Processing: - Επεξεργασία: - - - - Preparing... - Προετοιμασία... - - - - Progress - Πρόοδος - - - - Time remaining: - Υπολειπόμενος χρόνος: - - - - FilePropsDialog - - - File Properties - Ιδιότητες του αρχείου - - - - General - Γενικά - - - - Location: - Τοποθεσία: - - - - File type: - Τύπος αρχείου: - - - - Mime type: - Τύπος Mime: - - - - File size: - Μέγεθος αρχείου: - - - - On-disk size: - Μέγεθος στον δίσκο: - - - - Last modified: - Τελευταία τροποποίηση: - - - - Link target: - Προορισμός συνδέσμου: - - - - Open With: - Άνοιγμα με: - - - - Last accessed: - Τελευταία προσπέλαση: - - - - Permissions - Άδειες - - - - Ownership - Ιδιοκτησία - - - - - - Group: - Ομάδα: - - - - - - Owner: - Ιδιοκτήτης: - - - - Access Control - Έλεγχος πρόσβασης - - - - - Other: - Άλλο: - - - - Make the file executable - Ορισμός ως εκτελέσιμο - - - - - - Read - Ανάγνωση - - - - - - Write - Εγγραφή - - - - - - Execute - Εκτέλεση - - - - Sticky - Κολλημένο - - - - SetUID - SetUID - - - - SetGID - SetGID - - - - Advanced Mode - Προηγμένη λειτουργία - - - - Fm::AppChooserComboBox - - - Customize - Προσαρμοσμένο - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Επιλέξτε μια εφαρμογή για το άνοιγμα των αρχείων «%1» - - - - Fm::CreateNewMenu - - - Folder - Φάκελος - - - - Blank File - Κενό αρχείο - - - - Fm::DirTreeModel - - - Loading... - Φόρτωση... - - - - <No sub folders> - <No sub folders> - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - Αντιγραφή εδώ - - - - Move here - Μετακίνηση εδώ - - - - Create symlink here - Δημιουργία συμβολικού δεσμού εδώ - - - - Cancel - Ακύρωση - - - - Fm::EditBookmarksDialog - - - New bookmark - Νέος σελιδοδείκτης - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - Το αρχείο κειμένου «%1» φαίνεται ότι είναι ένα εκτελέσιμο σενάριο. -Τι θέλετε να κάνετε με αυτό; - - - - This file '%1' is executable. Do you want to execute it? - Αυτό το αρχείο «%1» είναι εκτελέσιμο. Θέλετε να το εκτελέσετε; - - - - Fm::FileMenu - - - Open - Άνοιγμα - - - - Open With... - Άνοιγμα με... - - - - Other Applications - Άλλες εφαρμογές - - - - Create &New - Δημιουργία &νέου - - - - &Restore - &Επαναφορά - - - - Cut - Αποκοπή - - - - Copy - Αντιγραφή - - - - Paste - Επικόλληση - - - - - &Move to Trash - &Μετακίνηση στα απορρίμματα - - - - Rename - Μετονομασία - - - - Extract to... - Εξαγωγή σε... - - - - Extract Here - Εξαγωγή εδώ - - - - Compress - Συμπίεση - - - - Properties - Ιδιότητες - - - - Output - Έξοδος - - - - &Delete - &Διαγραφή - - - - Fm::FileOperation - - - Error - Σφάλμα - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Μερικά αρχεία δεν μπορούν να μετακινηθούν στον κάδο απορριμμάτων διότι το υποκείμενο αρχείο συστήματος δεν υποστηρίζει αυτήν την ενέργεια. -Θέλετε αντί αυτού να το διαγράψετε; - - - - - Confirm - Επιβεβαίωση - - - - Do you want to delete the selected files? - Επιθυμείτε την διαγραφή των επιλεγμένων αρχείων; - - - - Do you want to move the selected files to trash can? - Επιθυμείτε την μετακίνηση των επιλεγμένων αρχείων στον κάδο απορριμμάτων; - - - - Fm::FileOperationDialog - - - Move files - Μετακίνηση των αρχείων - - - - Moving the following files to destination folder: - Μετακίνηση των ακολούθων αρχείων στον φάκελο προορισμού: - - - - Copy Files - Αντιγραφή των αρχείων - - - - Copying the following files to destination folder: - Αντιγραφή των ακολούθων αρχείων στον φάκελο προορισμού: - - - - Trash Files - Ρίψη των αρχείων στα απορρίμματα - - - - Moving the following files to trash can: - Μετακίνηση των ακολούθων αρχείων στον κάδο απορριμμάτων: - - - - Delete Files - Διαγραφή των αρχείων - - - - Deleting the following files - Διαγραφή των ακολούθων αρχείων - - - - Create Symlinks - Δημιουργία συμβολικών δεσμών - - - - Creating symlinks for the following files: - Δημιουργία συμβολικών δεσμών για τα ακόλουθα αρχεία: - - - - Change Attributes - Αλλαγή ιδιοχαρακτηριστικών - - - - Changing attributes of the following files: - Αλλαγή των ιδιοχαρακτηριστικών των ακολούθων αρχείων: - - - - Restore Trashed Files - Επαναφορά των αρχείων από τον κάδο απορριμμάτων - - - - Restoring the following files from trash can: - Επαναφέρονται τα παρακάτω αρχεία από τον κάδο απορριμμάτων: - - - - Error - Σφάλμα - - - - Fm::FilePropsDialog - - - View folder content - Προβολή των περιεχομένων του φακέλου - - - - View and modify folder content - Προβολή και τροποποίηση των περιεχομένων του φακέλου - - - - Read - Ανάγνωση - - - - Read and write - Ανάγνωση και εγγραφή - - - - Forbidden - Απαγορευμένο - - - - Files of different types - Αρχεία διαφορετικού τύπου - - - - Multiple Files - Πολλαπλά αρχεία - - - - Apply changes - Εφαρμογή των αλλαγών - - - - Do you want to recursively apply these changes to all files and sub-folders? - Θέλετε να εφαρμόσετε αναδρομικά αυτές τις αλλαγές σε όλα τα αρχεία και υποφακέλους; - - - - Fm::FileSearchDialog - - - Error - Σφάλμα - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - Δημιουργία &νέου - - - - &Paste - Επι&κόλληση - - - - Select &All - Επιλογή ό&λων - - - - Invert Selection - Αντιστροφή επιλογής - - - - Sorting - Ταξινόμηση - - - - Show Hidden - Εμφάνιση των κρυφών - - - - Folder Pr&operties - Ι&διότητες του φακέλου - - - Folder - Φάκελος - - - Blank File - Κενό αρχείο - - - - By File Name - Ανά όνομα αρχείου - - - - By Modification Time - Ανά χρόνο τροποποίησης - - - - By File Size - Ανά μέγεθος αρχείου - - - - By File Type - Ανά τύπο αρχείου - - - - By File Owner - Ανά ιδιοκτήτη αρχείου - - - - Ascending - Αύξουσα - - - - Descending - Φθίνουσα - - - - Folder First - Οι φάκελοι πρώτα - - - - Case Sensitive - Διάκριση πεζών/κεφαλαίων - - - - Fm::FolderModel - - - Name - Όνομα - - - - Type - Τύπος - - - - Size - Μέγεθος - - - - Modified - Τροποποιήθηκε - - - - Owner - Ιδιοκτήτης - - - - Fm::FontButton - - - Bold - Έντονα - - - - Italic - Πλάγια - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Σύνδεση - - - - Fm::PlacesModel - - - Places - Τοποθεσίες - - - - Desktop - Επιφάνεια εργασίας - - - - Computer - Υπολογιστής - - - - Applications - Εφαρμογές - - - - Network - Δίκτυο - - - - Devices - Συσκευές - - - - Bookmarks - Σελιδοδείκτες - - - - Trash - Απορρίμματα - - - - Fm::PlacesView - - - Open in New Tab - Άνοιγμα σε νέα καρτέλα - - - - Open in New Window - Άνοιγμα σε νέο παράθυρο - - - - Empty Trash - Άδειασμα των απορριμμάτων - - - - Move Bookmark Up - Μετακίνηση του σελιδοδείκτη προς τα πάνω - - - - Move Bookmark Down - Μετακίνηση του σελιδοδείκτη προς τα κάτω - - - - Rename Bookmark - Μετονομασία σελιδοδείκτη - - - - Remove Bookmark - Αφαίρεση σελιδοδείκτη - - - - - Unmount - Αποπροσάρτηση - - - - Mount - Προσάρτηση - - - - Eject - Εξαγωγή - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Τύπος: %1 -Μέγεθος: %2 -Τροποποιήθηκε: %3 - - - - Type: %1 -Modified: %2 - Τύπος: %1 -Τροποποιήθηκε: %2 - - - - Type: %1 -Modified: %3 - Τύπος: %1 -Τροποποιήθηκε: %3 - - - - &Overwrite - &Αντικατάσταση - - - - &Rename - &Μετονομασία - - - - Fm::SidePane - - - - Places - Τοποθεσίες - - - - - Directory Tree - Δέντρο καταλόγων - - - - Shows list of common places, devices, and bookmarks in sidebar - Εμφανίζει τη λίστα με τις κοινές τοποθεσίες, συσκευές, και σελιδοδείκτες στην πλευρική στήλη - - - - Shows tree of directories in sidebar - Εμφανίζει ένα δέντρο των καταλόγων στην πλευρική στήλη - - - - MountOperationPasswordDialog - - - Mount - Προσάρτηση - - - - Connect &anonymously - &Ανώνυμη σύνδεση - - - - Connect as u&ser: - Σύνδεση ως &χρήστης: - - - - &Username: - Όνομα χ&ρήστη: - - - - &Password: - &Κωδικός πρόσβασης: - - - - &Domain: - &Τομέας: - - - - Forget password &immediately - &Λήθη του κωδικού πρόσβασης άμεσα - - - - Remember password until you &logout - Απομνημόνευση του κωδικού πρόσβασης &μέχρι να αποσυνδεθείτε - - - - Remember &forever - Απομνημόνευση ε&σαεί - - - - QObject - - - Rename File - Μετονομασία αρχείου - - - - Please enter a new name: - Παρακαλώ εισαγάγετε ένα νέο όνομα: - - - - - - - Error - Σφάλμα - - - - Create Folder - Δημιουργία φακέλου - - - - Create File - Δημιουργία αρχείου - - - - Please enter a new file name: - Παρακαλώ εισαγάγετε ένα νέο όνομα αρχείου: - - - - New text file - Νέο αρχείο κειμένου - - - - Please enter a new folder name: - Παρακαλώ εισαγάγετε ένα νέο όνομα φακέλου: - - - - New folder - Νέος φάκελος - - - - Enter a name for the new %1: - Εισαγάγετε ένα όνομα για το νέο %1: - - - - RenameDialog - - - Confirm to replace files - Επιβεβαίωση αντικατάστασης των αρχείων - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Υπάρχει ήδη ένα αρχείο με το ίδιο όνομα στην συγκεκριμένη τοποθεσία.</span></p><p>Θέλετε να αντικαταστήσετε το υπάρχον αρχείο;</p></body></html> - - - - dest - προορισμός - - - - with the following file? - με το παρακάτω αρχείο; - - - - src file info - πληροφορίες αρχείου πηγής - - - - dest file info - πληροφορίες αρχείου προορισμού - - - - src - πηγή - - - - &File name: - &Όνομα αρχείου: - - - - Apply this option to all existing files - Εφαρμογή της επιλογής σε όλα τα υπάρχοντα αρχεία - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - Ιδιότητες - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_es.ts b/src/translations/libfm-qt_es.ts deleted file mode 100644 index 090f33c..0000000 --- a/src/translations/libfm-qt_es.ts +++ /dev/null @@ -1,1293 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Seleccione una Aplicación - - - - Installed Applications - Aplicaciones Instaladas - - - - Custom Command - Comando Personalizado - - - - Command line to execute: - Línea de comandos a ejecutar: - - - - Application name: - Nombre de la aplicación: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Estos códigos pueden ser usados en la línea de comando:</b> -<ul> -<li><b>%f</b>: Representa un nombre de archivo</li> -<li><b>%F</b>: Representa múltiples nombres de archivos</li> -<li><b>%u</b>: Representa una URI para el archivo</li> -<li><b>%U</b>: Representa múltiples URIs</li> -</ul> - - - - Keep terminal window open after command execution - Mantener la terminal abierta luego de la ejecución del comando - - - - Execute in terminal emulator - Ejecutar en un emulador de terminal - - - - Set selected application as default action of this file type - Configurar la aplicación seleccionada como por defecto para este tipo de archivo - - - - EditBookmarksDialog - - - Edit Bookmarks - Editar marcadores - - - - Name - Nombre - - - - Location - Localización - - - - &Add Item - &Agregar elemento - - - - &Remove Item - &Eliminar elemento - - - - Use drag and drop to reorder the items - Arrastre y suelte para reordenar los elementos - - - - ExecFileDialog - - - Execute file - Ejecutar archivo - - - - &Open - &Abrir - - - - E&xecute - &Ejecutar - - - - Execute in &Terminal - Ejecutar en &Terminal - - - - Cancel - Cancelar - - - - FileOperationDialog - - - Destination: - Destino: - - - - Processing: - Procesando: - - - - Preparing... - Preparando... - - - - Progress - Progreso - - - - Time remaining: - Tiempo restante: - - - - FilePropsDialog - - - File Properties - Propiedades de Archivo - - - - General - General - - - - Location: - Localización: - - - - File type: - Tipo de archivo: - - - - Mime type: - Tipo Mime: - - - - File size: - Tamaño del archivo: - - - - On-disk size: - Tamaño en disco: - - - - Last modified: - Última modificación: - - - - Link target: - Destino del enlace: - - - - Open With: - Abrir con: - - - - Last accessed: - Último acceso: - - - - Permissions - Permisos - - - - Ownership - Propiedad - - - - - - Group: - Grupo: - - - - - - Owner: - Dueño: - - - - Access Control - Control de acceso - - - - - Other: - Otro: - - - - Make the file executable - Marcar como ejecutable - - - - - - Read - Lectura - - - - - - Write - Escritura - - - - - - Execute - Ejecución - - - - Sticky - Sticky - - - - SetUID - SetUID - - - - SetGID - SetGID - - - - Advanced Mode - Modo avanzado - - - - Fm::AppChooserComboBox - - - Customize - Personalizar - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Seleccione una aplicación para abrir archivos "%1" - - - - Fm::CreateNewMenu - - - Folder - Directorio - - - - Blank File - Archivo Vacío - - - - Fm::DirTreeModel - - - Loading... - Cargando... - - - - <No sub folders> - <No hay subdirectorios> - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - Copiar aquí - - - - Move here - Mover aquí - - - - Create symlink here - Crear enlace simbólico aquí - - - - Cancel - Cancelar - - - - Fm::EditBookmarksDialog - - - New bookmark - Nuevo marcador - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - El archivo de texto '%1' parece ser un script ejecutable. -¿Qué desea hacer con él? - - - - This file '%1' is executable. Do you want to execute it? - El archivo '%1' es ejecutable. ¿Quiere ejecutarlo? - - - - Fm::FileMenu - - - Open - Abrir - - - - Open With... - Abrir con... - - - - Other Applications - Otras Aplicaciones - - - - Create &New - Crear &Nuevo - - - - &Restore - &Restaurar - - - - Cut - Cortar - - - - Copy - Copiar - - - - Paste - Pegar - - - - - &Move to Trash - &Mover a la Papelera - - - - Rename - Renombrar - - - - Extract to... - Extraer en... - - - - Extract Here - Extraer aquí - - - - Compress - Comprimir - - - - Properties - Propiedades - - - - Output - Salida - - - - &Delete - &Borrar - - - - Fm::FileOperation - - - Error - Error - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Algunos archivos no pueden moverse a la papelera porque el subsistema de archivos no permite esta operación. -¿Quiere eliminarlos en su lugar? - - - - - Confirm - Confirmación - - - - Do you want to delete the selected files? - ¿Quiere borrar los archivos seleccionados? - - - - Do you want to move the selected files to trash can? - ¿Quiere mover los archivos seleccionados a la papelera? - - - - Fm::FileOperationDialog - - - Move files - Mover archivos - - - - Moving the following files to destination folder: - Moviendo los siguientes archivos al directorio destino: - - - - Copy Files - Copiar archivos - - - - Copying the following files to destination folder: - Copiando los siguientes archivos al directorio destino: - - - - Trash Files - Enviar archivos a la papelera - - - - Moving the following files to trash can: - Moviendo los siguientes archivos a la papelera: - - - - Delete Files - Borrar archivos - - - - Deleting the following files - Borrando los siguientes archivos - - - - Create Symlinks - Crear enlaces simbólicos - - - - Creating symlinks for the following files: - Creando enlaces simbólicos para los siguientes archivos: - - - - Change Attributes - Cambiar atributos - - - - Changing attributes of the following files: - Cambiando atributos para los siguientes archivos: - - - - Restore Trashed Files - Restaurar archivos borrados - - - - Restoring the following files from trash can: - Restaurando los siguientes archivos desde la papelera: - - - - Error - Error - - - - Fm::FilePropsDialog - - - View folder content - Ver contenido del directorio - - - - View and modify folder content - Ver y modificar el contenido del directorio - - - - Read - Lectura - - - - Read and write - Lectura y escritura - - - - Forbidden - Prohibido - - - - Files of different types - Archivos de diferentes tipos - - - - Multiple Files - Múltiples archivos - - - - Apply changes - Aplicar cambios - - - - Do you want to recursively apply these changes to all files and sub-folders? - ¿Quiere aplicar los cambios a todos los archivos y subdirectorios? - - - - Fm::FileSearchDialog - - - Error - Error - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - Crear &Nuevo - - - - &Paste - &Pegar - - - - Select &All - Seleccion&ar todo - - - - Invert Selection - Invertir Selección - - - - Sorting - Ordenar - - - - Show Hidden - Mostrar Ocultos - - - - Folder Pr&operties - Pr&opiedades del directorio - - - Folder - Directorio - - - Blank File - Archivo Vacío - - - - By File Name - Por nombre de archivo - - - - By Modification Time - Por fecha de modificación - - - - By File Size - Por tamaño de archivo - - - - By File Type - Por tipo de archivo - - - - By File Owner - Por dueño del archivo - - - - Ascending - Ascendente - - - - Descending - Descendente - - - - Folder First - Primero Directorios - - - - Case Sensitive - Coincidir mayúsculas - - - - Fm::FolderModel - - - Name - Nombre - - - - Type - Tipo - - - - Size - Tamaño - - - - Modified - Modificado - - - - Owner - Dueño - - - - Fm::FontButton - - - Bold - Negrita - - - - Italic - Itálica - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Conectar - - - - Fm::PlacesModel - - - Places - Lugares - - - - Desktop - Escritorio - - - - Computer - Sistema - - - - Applications - Aplicaciones - - - - Network - Red - - - - Devices - Dispositivos - - - - Bookmarks - Marcadores - - - - Trash - Papelera - - - - Fm::PlacesView - - - Empty Trash - Vaciar Papelera - - - Rename - Renombrar - - - Delete - Borrar - - - - Open in New Tab - - - - - Open in New Window - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - Desmontar - - - - Mount - Montar - - - - Eject - Expulsar - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Tipo: %1 -Tamaño: %2 -Modificado: %3 - - - - Type: %1 -Modified: %2 - Tipo: %1 -Modificado: %2 - - - - Type: %1 -Modified: %3 - Tipo: %1 -Modificado: %3 - - - - &Overwrite - &Sobreescribir - - - - &Rename - &Renombrar - - - - Fm::SidePane - - - - Places - Lugares - - - - - Directory Tree - Árbol de Directorios - - - - Shows list of common places, devices, and bookmarks in sidebar - Muestra lista de lugares comunes, dispositivos y marcadores en la barra lateral - - - - Shows tree of directories in sidebar - Muestra árbol de directorios en barra lateral - - - - MountOperationPasswordDialog - - - Mount - Montar - - - - Connect &anonymously - Conectar &anonimamente - - - - Connect as u&ser: - Conectar como u&suario: - - - - &Username: - &Usuario: - - - - &Password: - &Contraseña: - - - - &Domain: - &Dominio: - - - - Forget password &immediately - Descartar contraseña &inmediatamente - - - - Remember password until you &logout - &Recordar contraseña hasta cerrar sesión - - - - Remember &forever - Recordar &para siempre - - - - QObject - - - - - - Error - Error - - - - Rename File - Renombrar Archivo - - - - Please enter a new name: - Introduzca un nuevo nombre: - - - - Create Folder - - - - - Please enter a new file name: - Introduzca un nuevo nombre de archivo: - - - - New text file - Nuevo archivo de texto - - - - Please enter a new folder name: - Ingrese un nuevo nombre de directorio: - - - - New folder - Nuevo directorio - - - - Enter a name for the new %1: - Ingresar un nombre para el nuevo %1: - - - - Create File - Crear Archivo - - - - RenameDialog - - - Confirm to replace files - Confirmación de sustitución - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Ya existe un archivo con el mismo nombre en este lugar.</span></p><p>¿Quiere reemplazar el archivo existente?</p></body></html> - - - - dest - destino - - - - with the following file? - con el siguiente archivo? - - - - src file info - información del archivo de origen - - - - dest file info - información del archivo de destino - - - - src - origen - - - - &File name: - Nombre de &archivo: - - - - Apply this option to all existing files - Aplicar esta opción a todos los archivos - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - Propiedades - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_fr.ts b/src/translations/libfm-qt_fr.ts deleted file mode 100644 index ee00c16..0000000 --- a/src/translations/libfm-qt_fr.ts +++ /dev/null @@ -1,1296 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Sélectionnez une application - - - - Installed Applications - Applications installées - - - - Custom Command - Commandes personnalisées - - - - Command line to execute: - Ligne de commande a exécuter : - - - - Application name: - Nom de l’application : - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Ces codes spéciaux peuvent être utilisées dans la ligne de commande :</b> -<ul> -<li><b>%f</b>: Represente un seul nom de fichier</li> -<li><b>%F</b>: Represente plusieurs nom de fichiers</li> -<li><b>%u</b>: Represente l’URI d'un seul fichier</li> -<li><b>%U</b>: Represente plusieurs URIs</li> -</ul> - - - - Keep terminal window open after command execution - Garder la fenêtre de terminal ouverte après exécution de la commande - - - - Execute in terminal emulator - Exécuter dans un émulateur de terminal - - - - Set selected application as default action of this file type - Définir l’application sélectionnée par défaut pour les fichiers de ce type - - - - EditBookmarksDialog - - - Edit Bookmarks - Modifier les signets - - - - Name - Nom - - - - Location - Emplacement - - - - &Add Item - &Ajouter un élément - - - - &Remove Item - &Supprimer un élément - - - - Use drag and drop to reorder the items - Utiliser le glisser-déposer pour trier à nouveau les éléments - - - - ExecFileDialog - - - Execute file - Exécuter le fichier - - - - &Open - &Ouvrir - - - - E&xecute - E&xécuter - - - - Execute in &Terminal - Exécuter dans un &terminal - - - - Cancel - Annuler - - - - FileOperationDialog - - - Destination: - Destination : - - - - Processing: - Traitement : - - - - Preparing... - Préparation… - - - - Progress - Progression - - - - Time remaining: - Temps restant : - - - - FilePropsDialog - - - File Properties - Propriétés du fichier - - - - General - Général - - - - Location: - Emplacement : - - - - File type: - Type de fichier : - - - - Mime type: - Type Mime : - - - - File size: - Taille du fichier : - - - - On-disk size: - Taille sur le disque : - - - - Last modified: - Date de dernière modification : - - - - Link target: - Cible du lien : - - - - Open With: - Ouvrir avec : - - - - Last accessed: - Date de dernier accès : - - - - Permissions - Droits d'accès - - - - Ownership - Propriété - - - - - - Group: - Groupe : - - - - - - Owner: - Propriétaire : - - - - Access Control - Contrôle d’accès - - - - - Other: - Autre : - - - - Make the file executable - Rendre le fichier exécutable - - - - - - Read - Lecture - - - - - - Write - Écriture - - - - - - Execute - Exécution - - - - Sticky - Permanent - - - - SetUID - SetUID - - - - SetGID - SetGID - - - - Advanced Mode - Mode avancé - - - - Fm::AppChooserComboBox - - - Customize - Personnaliser - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Sélectionnez une application pour ouvrir les fichiers de type "%1" - - - - Fm::CreateNewMenu - - - Folder - Dossier - - - - Blank File - Fichier vide - - - - Fm::DirTreeModel - - - Loading... - Chargement… - - - - <No sub folders> - <Aucun sous-dossiers> - - - - Fm::DirTreeView - - - Open in New T&ab - Ouvrir dans un nouvel &onglet - - - - Open in New Win&dow - Ouvrir dans une nouvelle &fenêtre - - - - Open in Termina&l - Ouvrir dans un &terminal - - - - Fm::DndActionMenu - - - Copy here - Copier ici - - - - Move here - Déplacer ici - - - - Create symlink here - Créer un lien symbolique ici - - - - Cancel - Annuler - - - - Fm::EditBookmarksDialog - - - New bookmark - Nouveau signet - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - - - - - This file '%1' is executable. Do you want to execute it? - Le fichier '%1' est exécutable. Souhaitez-vous le lancer ? - - - - Fm::FileMenu - - - Open - Ouvrir - - - OpenWith - OpenWith - - - - Cut - Couper - - - - Copy - Copier - - - - Paste - Coller - - - - - &Move to Trash - &Mettre à la corbeille - - - - Output - - - - - &Delete - &Supprimer - - - - Rename - Renommer - - - - Open With... - Ouvrir avec… - - - - Other Applications - Autres applications - - - - Create &New - Créer un &nouveau - - - - &Restore - Restaurer - - - - Extract to... - Extraire vers… - - - - Extract Here - Extraire ici - - - - Compress - Compresser - - - - Properties - Propriétés - - - - Fm::FileOperation - - - Error - Erreur - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Certains fichiers ne peuvent pas être mis à la corbeille car les systèmes de fichiers sous-jacents ne prennent pas en charge cette opération. -Voulez-vous plutôt les supprimer ? - - - - - Confirm - Confirmer - - - - Do you want to delete the selected files? - Voulez-vous supprimer les fichiers sélectionnés ? - - - - Do you want to move the selected files to trash can? - Voulez-vous mettre les fichiers sélectionnés à la corbeille ? - - - - Fm::FileOperationDialog - - - Move files - Déplacer les fichiers - - - - Moving the following files to destination folder: - Déplacement des fichiers suivants vers le dossier de destination en cours : - - - - Copy Files - Copier les fichiers - - - - Copying the following files to destination folder: - Copie des fichiers suivants vers le dossier de destination en cours : - - - - Trash Files - Mettre les fichiers de la corbeille - - - - Moving the following files to trash can: - Déplacement des fichiers suivants vers la corbeille en cours : - - - - Delete Files - Supprimer les fichiers - - - - Deleting the following files - Suppression des fichiers suivants - - - - Create Symlinks - Créer des liens symboliques - - - - Creating symlinks for the following files: - Création de liens symboliques avec les fichiers suivants en cours : - - - - Change Attributes - Modifier les attributs - - - - Changing attributes of the following files: - Modification des attributs des fichiers suivants en cours : - - - - Restore Trashed Files - Restaurer les fichiers de la corbeille - - - - Restoring the following files from trash can: - Restauration des fichiers suivants depuis la corbeille en cours : - - - - Error - Erreur - - - - Fm::FilePropsDialog - - - View folder content - Voir le contenu du dossier - - - - View and modify folder content - Voir et modifier le contenu du dossier - - - - Read - Lecture - - - - Read and write - Lecture et écriture - - - - Forbidden - Interdit - - - - Files of different types - Fichiers de différents types - - - - Multiple Files - Fichiers multiples - - - - Apply changes - Appliquer les modifications - - - - Do you want to recursively apply these changes to all files and sub-folders? - Voulez-vous appliquer ces changements récursivement à tous les fichiers et sous-dossiers ? - - - - Fm::FileSearchDialog - - - Error - Erreur - - - - You should add at least add one directory to search. - Vous devriez indiquer au moins un dossier pour la recherche. - - - - Select a folder - Sélectionnez un dossier - - - - Fm::FolderMenu - - - Create &New - Créer un &nouveau - - - - &Paste - &Coller - - - - Select &All - Sélectionner &tous - - - - Invert Selection - Inverser la sélection - - - - Sorting - Tri en cours - - - - Show Hidden - Afficher les éléments cachés - - - - Folder Pr&operties - Pr&opriétés du dossier - - - Folder - Dossier - - - File - Fichier - - - - By File Name - Par nom de fichier - - - - By Modification Time - Par date de modification - - - - By File Size - Par taille de fichier - - - - By File Type - Par type de fichier - - - - By File Owner - Par propriétaire de fichier - - - - Ascending - Ascendant - - - - Descending - Descendant - - - - Folder First - Dossier en premier - - - - Case Sensitive - Sensible à la casse - - - - Fm::FolderModel - - - Name - Nom - - - - Type - Type - - - - Size - Taille - - - - Modified - Modifié - - - - Owner - Propriétaire - - - - Fm::FontButton - - - Bold - Gras - - - - Italic - Italique - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Connecter - - - - Fm::PlacesModel - - - Places - Emplacements - - - - Desktop - Bureau - - - - Trash - Corbeille - - - - Computer - Ordinateur - - - - Applications - Applications - - - - Network - Réseau - - - - Devices - Appareils - - - - Bookmarks - Signets - - - - Fm::PlacesView - - - Empty Trash - Corbeille vide - - - Rename - Renommer - - - Delete - Supprimer - - - - Open in New Tab - Ouvrir dans un nouvel onglet - - - - Open in New Window - Ouvrir dans une nouvelle fenêtre - - - - Move Bookmark Up - Monter le signet - - - - Move Bookmark Down - Descendre le signet - - - - Rename Bookmark - Renommer le signet - - - - Remove Bookmark - Effacer le signet - - - - - Unmount - Démonter - - - - Mount - Monter - - - - Eject - Éjecter - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Type : %1 -Taille : %2 -Modification : %3 - - - - Type: %1 -Modified: %2 - Type : %1 -Modification : %2 - - - - Type: %1 -Modified: %3 - Type : %1 -Modification : %3 - - - - &Overwrite - &Remplacer - - - - &Rename - &Renommer - - - - Fm::SidePane - - - - Places - Emplacements - - - - - Directory Tree - - - - - Shows list of common places, devices, and bookmarks in sidebar - - - - - Shows tree of directories in sidebar - - - - - MountOperationPasswordDialog - - - Mount - Monter - - - - Connect &anonymously - Connecter &anonymement - - - - Connect as u&ser: - Connecter comme utilis&sateur : - - - - &Username: - Nom d'&utilisateur : - - - - &Password: - Mot de &passe : - - - - &Domain: - &Domaine : - - - - Forget password &immediately - Oublier le mot de passe &immédiatement - - - - Remember password until you &logout - Se souvenir du mot de passe jusqu'à &la déconnexion - - - - Remember &forever - &Toujours s'en souvenir - - - - QObject - - - - - - Error - Erreur - - - - Rename File - Renommer le fichier - - - - Please enter a new name: - Veuillez entrer un nouveau nom : - - - - Create Folder - Créer un dossier - - - - Please enter a new file name: - Veuillez entrer un nouveau nom de fichier : - - - - New text file - Nouveau fichier texte - - - - Please enter a new folder name: - Veuillez entrer un nouveau nom de répertoire : - - - - New folder - Nouveau répertoire - - - - Enter a name for the new %1: - Entrez un nom pour le nouveau %1 : - - - - Create File - Créer un fichier - - - - RenameDialog - - - Confirm to replace files - Confirmer le remplacement des fichiers - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Il existe déjà un fichier avec le même nom à cet emplacement.</span></p><p>Voulez-vous replacer le fichier existant ?</p></body></html> - - - - dest - dst - - - - with the following file? - avec le fichier suivant ? - - - - src file info - infos fichier src - - - - dest file info - infos fichier dst - - - - src - src - - - - &File name: - Nom de &fichier : - - - - Apply this option to all existing files - Appliquer cette option à tous les fichiers existants - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - * - - - - Case insensitive - Insensible à la casse - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - &Ajout - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - Type de fichier - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - Fichiers audio - - - - Video files - - - - - Documents - Documents - - - - Folders - Dossiers - - - - Content - Contenu - - - - File contains: - Le fichier contient : - - - - Case insensiti&ve - &Insensible à la casse - - - - &Use regular expression - - - - - Properties - Propriétés - - - - File Size: - Taille du fichier : - - - - Larger than: - - - - - - Bytes - Octets - - - - - KiB - KiB - - - - - MiB - MiB - - - - - GiB - GiB - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - Plus récent que : - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_gl.ts b/src/translations/libfm-qt_gl.ts deleted file mode 100644 index 43e5874..0000000 --- a/src/translations/libfm-qt_gl.ts +++ /dev/null @@ -1,1290 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - - - - - Installed Applications - - - - - Custom Command - - - - - Command line to execute: - - - - - Application name: - - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - - - - - Keep terminal window open after command execution - - - - - Execute in terminal emulator - - - - - Set selected application as default action of this file type - - - - - EditBookmarksDialog - - - Edit Bookmarks - Editar marcadores - - - - Name - Nome - - - - Location - Localización - - - - &Add Item - &Engadir un elemento - - - - &Remove Item - &Retirar o elemento - - - - Use drag and drop to reorder the items - Usar arrastrar e soltar para ordenar elementos - - - - ExecFileDialog - - - Execute file - - - - - &Open - - - - - E&xecute - - - - - Execute in &Terminal - - - - - Cancel - Cancelar - - - - FileOperationDialog - - - Destination: - Destino: - - - - Processing: - Procesando: - - - - Preparing... - Preparando... - - - - Progress - Progreso - - - - Time remaining: - Tempo restante: - - - - FilePropsDialog - - - File Properties - Propiedades do ficheiro - - - - General - Xeral - - - - Location: - Localización - - - - File type: - Tipo de ficheiro: - - - - Mime type: - Tipo MIME: - - - - File size: - Tamaño do ficheiro: - - - - On-disk size: - Tamaño no disco: - - - - Last modified: - Última modificación: - - - - Link target: - Destino da ligazón: - - - - Open With: - Abrir con: - - - - Last accessed: - Último acceso: - - - - Permissions - Permisos - - - - Ownership - Dono - - - - - - Group: - Grupo: - - - - - - Owner: - Propietario: - - - - Access Control - Control de acceso - - - - - Other: - Outros: - - - - Make the file executable - Facer que o ficheiro sexa executábel - - - - - - Read - Lectura - - - - - - Write - Escritura - - - - - - Execute - Execución - - - - Sticky - Persistente - - - - SetUID - Estabelecer o UID - - - - SetGID - Estabelecer o GID - - - - Advanced Mode - Modo avanzado - - - - Fm::AppChooserComboBox - - - Customize - - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - - - - - Fm::CreateNewMenu - - - Folder - Cartafol - - - - Blank File - - - - - Fm::DirTreeModel - - - Loading... - - - - - <No sub folders> - - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - Copiar para aquí - - - - Move here - Mover para aquí - - - - Create symlink here - Crear aquí unha ligazón simbólica - - - - Cancel - Cancelar - - - - Fm::EditBookmarksDialog - - - New bookmark - Novo marcador - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - - - - - This file '%1' is executable. Do you want to execute it? - - - - - Fm::FileMenu - - - Open - Abrir - - - OpenWith - Abrir con - - - - Cut - Cortar - - - - Copy - Copiar - - - - Paste - Pegar - - - - - &Move to Trash - Deitar no lixo - - - - Output - - - - - &Delete - &Eliminar - - - - Rename - Renomear - - - - Open With... - - - - - Other Applications - - - - - Create &New - Crear &novo - - - - &Restore - - - - - Extract to... - Extraer en… - - - - Extract Here - Extraer aquí - - - - Compress - Comprimir - - - - Properties - Propiedades - - - - Fm::FileOperation - - - Error - Erro - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Algúns ficheiros non poden enviarse ao cesto do lixo porque o subsistema de ficheiros non permite esta operación. -Desexa eliminalos no seu canto? - - - - - Confirm - Confirmar - - - - Do you want to delete the selected files? - Quere eliminar os ficheiros seleccionados? - - - - Do you want to move the selected files to trash can? - Quere mover os ficheiros seleccionados ao cesto do lixo? - - - - Fm::FileOperationDialog - - - Move files - Mover os ficheiros - - - - Moving the following files to destination folder: - Movendo os seguintes ficheiros ao cartafol de destino: - - - - Copy Files - Copiar os ficheiros - - - - Copying the following files to destination folder: - Copiando os seguintes ficheiros ao cartafol de destino: - - - - Trash Files - Deitar no lixo os ficheiros - - - - Moving the following files to trash can: - Movendo os seguintes ficheiros ao lixo: - - - - Delete Files - Eliminar os ficheiros - - - - Deleting the following files - Eliminando os seguintes ficheiros - - - - Create Symlinks - Crear ligazóns simbólicas - - - - Creating symlinks for the following files: - Creando ligazóns simbólicas para os seguintes ficheiros: - - - - Change Attributes - Cambiar os atributos - - - - Changing attributes of the following files: - Cambiando os atributos dos seguintes ficheiros: - - - - Restore Trashed Files - Restaurar os ficheiro do lixo - - - - Restoring the following files from trash can: - Restaurando os seguintes ficheiros do lixo: - - - - Error - Erro - - - - Fm::FilePropsDialog - - - View folder content - Ver o contido do cartafol - - - - View and modify folder content - Ver e modificar o contido do cartafol - - - - Read - Lectura - - - - Read and write - Lectura e escritura - - - - Forbidden - Prohibido - - - - Files of different types - Ficheiros de tipos diferentes - - - - Multiple Files - Múltiplos ficheiros - - - - Apply changes - Aplicar os cambios - - - - Do you want to recursively apply these changes to all files and sub-folders? - Quere aplicar recursivamente estes cambios a todos os ficheiros e subcartafoles? - - - - Fm::FileSearchDialog - - - Error - Erro - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - Crear &novo - - - - &Paste - &Pegar - - - - Select &All - Seleccionar &todo - - - - Invert Selection - Inverter a selección - - - - Sorting - Ordenación - - - - Show Hidden - Amosar agochados - - - - Folder Pr&operties - Pr&opiedades do cartafol - - - Folder - Cartafol - - - File - Ficheiro - - - - By File Name - Polo nome do ficheiro - - - - By Modification Time - Pola data de modificación - - - - By File Size - Polo tamaño do ficheiro - - - - By File Type - Polo tipo do ficheiro - - - - By File Owner - Polo propietario do ficheiro - - - - Ascending - Ascendente - - - - Descending - Descendente - - - - Folder First - Primeiro os cartafoles - - - - Case Sensitive - Distinguindo maiúsculas de minúsculas - - - - Fm::FolderModel - - - Name - Nome - - - - Type - Tipo - - - - Size - Tamaño - - - - Modified - Modificado - - - - Owner - Propietario - - - - Fm::FontButton - - - Bold - Negra - - - - Italic - Itálica - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Conectar - - - - Fm::PlacesModel - - - Places - Lugares - - - - Desktop - Escritorio - - - - Trash - Lixo - - - - Computer - Computador - - - - Applications - Aplicacións - - - - Network - Rede - - - - Devices - Dispositivos - - - - Bookmarks - Marcadores - - - - Fm::PlacesView - - - Empty Trash - - - - Rename - Renomear - - - Delete - Eliminar - - - - Open in New Tab - - - - - Open in New Window - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - Desmontar - - - - Mount - Montar - - - - Eject - Expulsar - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Tipo: %1 -Tamaño: %2 -Modificado: %3 - - - - Type: %1 -Modified: %2 - Tipo: %1 -Modificado: %2 - - - - Type: %1 -Modified: %3 - Tipo: %1 -Modificado: %3 - - - - &Overwrite - &Sobrescribir - - - - &Rename - &Renomear - - - - Fm::SidePane - - - - Places - Lugares - - - - - Directory Tree - - - - - Shows list of common places, devices, and bookmarks in sidebar - - - - - Shows tree of directories in sidebar - - - - - MountOperationPasswordDialog - - - Mount - Montar - - - - Connect &anonymously - Conectar &anonimamente - - - - Connect as u&ser: - Conectar como u&suario - - - - &Username: - Nome de &usuario: - - - - &Password: - &Contrasinal: - - - - &Domain: - &Dominio: - - - - Forget password &immediately - Esquecer o contrasinal &inmediatamente - - - - Remember password until you &logout - Lembrar o contrasinal ata &saír da sesión - - - - Remember &forever - &Lemprar para sempre - - - - QObject - - - - - - Error - Erro - - - - Rename File - Renomear o ficheiro - - - - Please enter a new name: - Introduza un nome novo: - - - - Create Folder - - - - - Please enter a new file name: - Introduza un novo nome de ficheiro: - - - - New text file - Novo ficheiro de texto - - - - Please enter a new folder name: - Introduza un nome novo para o cartafol: - - - - New folder - Novo cartafol - - - - Enter a name for the new %1: - - - - - Create File - Crear un ficheiro - - - - RenameDialog - - - Confirm to replace files - Confirmar a substitución de ficheiros - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Xa existe un ficheiro con este mesmo nome neste lugar.</span></p><p>Quere substituír o ficheiro existente?</p></body></html> - - - - dest - dest - - - - with the following file? - co seguinte ficheiro? - - - - src file info - Ficheiro de información «src» - - - - dest file info - Ficheiro de información «dest» - - - - src - src - - - - &File name: - Nome do &ficheiro: - - - - Apply this option to all existing files - Aplicar esta opción a todos os ficheiros existentes - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - Propiedades - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_hu.ts b/src/translations/libfm-qt_hu.ts deleted file mode 100644 index 41e2041..0000000 --- a/src/translations/libfm-qt_hu.ts +++ /dev/null @@ -1,1293 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Alkalmazás választás - - - - Installed Applications - Telepített alkalmazások - - - - Custom Command - Egyéb parancs - - - - Command line to execute: - Végrehajtandó parancs: - - - - Application name: - Alkalmazás neve: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>A parancssorban használható speciális karakterek:</b> -<ul> -<li><b>%f</b>: Egy fájnév</li> -<li><b>%F</b>: Több fájlnév</li> -<li><b>%u</b>: Egy URI</li> -<li><b>%U</b>: Több URI</li> -</ul> - - - - Keep terminal window open after command execution - Végrehajtás után a terminál nyitva marad - - - - Execute in terminal emulator - Végrehajtás külső terminálban - - - - Set selected application as default action of this file type - A választott alkalmazás rendelődjék a fáljtípushoz - - - - EditBookmarksDialog - - - Edit Bookmarks - Könyvjelzők szerkesztése - - - - Name - Név - - - - Location - Hely - - - - &Add Item - Ho&zzáadás - - - - &Remove Item - Tö&rlés - - - - Use drag and drop to reorder the items - Húzással rendezhető minden elem - - - - ExecFileDialog - - - Execute file - Fájl futtatás - - - - &Open - &Nyitás - - - - E&xecute - &Futtatás - - - - Execute in &Terminal - Futtatás &terminálban - - - - Cancel - Mégse - - - - FileOperationDialog - - - Destination: - Cél: - - - - Processing: - Feldolgozva: - - - - Preparing... - Előkészület... - - - - Progress - Folyamat - - - - Time remaining: - Hátralévő idő: - - - - FilePropsDialog - - - File Properties - Fájljellemzők - - - - General - Általános - - - - Location: - Hely: - - - - File type: - Fájltípus: - - - - Mime type: - Mime típus: - - - - File size: - Fájlméret: - - - - On-disk size: - Mérete a lemezen: - - - - Last modified: - Módosítási idő: - - - - Link target: - Link cél: - - - - Open With: - Megnyitás ezzel: - - - - Last accessed: - Utolsó hozzáférés: - - - - Permissions - Jogosultságok - - - - Ownership - Tulajdonos - - - - - - Group: - Csoport: - - - - - - Owner: - Tulajdonos: - - - - Access Control - Hozzáférés - - - - - Other: - Mások: - - - - Make the file executable - Futtatható - - - - - - Read - Olvas - - - - - - Write - Ír - - - - - - Execute - Végrehajt - - - - Sticky - Sticky - - - - SetUID - UID beállítás - - - - SetGID - GID beállítás - - - - Advanced Mode - Haladó mód - - - - Fm::AppChooserComboBox - - - Customize - Saját beállítás - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Alkalmazás választás a "%1" fájl megnyitásához - - - - Fm::CreateNewMenu - - - Folder - Mappa - - - - Blank File - Üres fájl - - - - Fm::DirTreeModel - - - Loading... - Olvasás... - - - - <No sub folders> - <Nincs almappa> - - - - Fm::DirTreeView - - - Open in New T&ab - Megnyi&tás új fülön - - - - Open in New Win&dow - Me&gnyitás új ablakban - - - - Open in Termina&l - Megnyitás terminá&lban - - - - Fm::DndActionMenu - - - Copy here - Másolás ide - - - - Move here - Mozgatás ide - - - - Create symlink here - Szimlink ide - - - - Cancel - Mégse - - - - Fm::EditBookmarksDialog - - - New bookmark - Új könyvjelző - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - Ez a '%1' fájl futtatható szkriptnek tűnik. -Mi legyen vele? - - - - This file '%1' is executable. Do you want to execute it? - Ez a '%1' fájl futtatható. Futtassuk? - - - - Fm::FileMenu - - - Open - Nyit - - - - Create &New - &Új létrehozása - - - - &Restore - &Visszalép - - - - Cut - Kivág - - - - Copy - Másol - - - - Paste - Beilleszt - - - - - &Move to Trash - Kukába &mozgat - - - - Output - Kimenet - - - - &Delete - &Töröl - - - - Rename - Átnevez - - - - Open With... - Megnyitás ezzel... - - - - Other Applications - Más alkalmazások - - - - Extract to... - Kibontás... - - - - Extract Here - Kibontás ide - - - - Compress - Csomagolás - - - - Properties - Tulajdonságok - - - - Fm::FileOperation - - - Error - Hiba - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Egyes fájlok nem mozgathatók a kukába, mert a rendszer ezt nem engedélyezi. -Töröljük őket véglegesen? - - - - - Confirm - Jóváhagyás - - - - Do you want to delete the selected files? - Töröljük a választott fájlokat? - - - - Do you want to move the selected files to trash can? - Helyezzük a kukába a választott fájlokat? - - - - Fm::FileOperationDialog - - - Move files - Fájlmozgatás - - - - Moving the following files to destination folder: - A következő fájlok mozgatása ide: - - - - Copy Files - Fájlmásolás - - - - Copying the following files to destination folder: - A következő fájlok másolása ide: - - - - Trash Files - Fájlok a kukába - - - - Moving the following files to trash can: - A következő fájlok kukába mozgatása: - - - - Delete Files - Fájltörlés - - - - Deleting the following files - A következő fájlok törlése - - - - Create Symlinks - Szimlink létrehozás - - - - Creating symlinks for the following files: - Szimlink készítés a következő fájlokra: - - - - Change Attributes - Attribútum változtatás - - - - Changing attributes of the following files: - A következő fájlok attribútum változtatása: - - - - Restore Trashed Files - Kukázott fájlok visszaállítása - - - - Restoring the following files from trash can: - A következő fájlok visszaállítása a kukából: - - - - Error - Hiba - - - - Fm::FilePropsDialog - - - View folder content - Mappatartalom - - - - View and modify folder content - Mappatartalom és változtatása - - - - Read - Olvasás - - - - Read and write - Olvasás és írás - - - - Forbidden - Tiltott - - - - Files of different types - Különféle fájltípusok - - - - Multiple Files - Többszörös fájlok - - - - Apply changes - Változtatások alkalmazása - - - - Do you want to recursively apply these changes to all files and sub-folders? - Minden mappára és fájlra alkalmazzuk a változtatásokat? - - - - Fm::FileSearchDialog - - - Error - Hiba - - - - You should add at least add one directory to search. - Kereséshez legalább egy mappa megadandó. - - - - Select a folder - Mappa választás - - - - Fm::FolderMenu - - - Create &New - &Új létrehozása - - - - &Paste - &Beilleszt - - - - Select &All - Minden kivál&asztása - - - - Invert Selection - Kiválasztás fordítása - - - - Sorting - Rendezés - - - - Show Hidden - Rejtettek is - - - - Folder Pr&operties - Mappatulajd&onságok - - - Folder - Mappa - - - Blank File - Üres fájl - - - - By File Name - Név - - - - By Modification Time - Módosítási idő - - - - By File Size - Méret - - - - By File Type - Típus - - - - By File Owner - Tulajdonos - - - - Ascending - Emelkedő - - - - Descending - Csökkenő - - - - Folder First - Mappák elől - - - - Case Sensitive - Nagybetűérzékeny - - - - Fm::FolderModel - - - Name - Név - - - - Type - Típus - - - - Size - Méret - - - - Modified - Módosítva - - - - Owner - Tulaj - - - - Fm::FontButton - - - Bold - Kövér - - - - Italic - Dőlt - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Kapcsolódás - - - - Fm::PlacesModel - - - Places - Helyek - - - - Desktop - Asztal - - - - Trash - Kuka - - - - Computer - Számítógép - - - - Applications - Alkalmazások - - - - Network - Hálózat - - - - Devices - Eszközök - - - - Bookmarks - Könyvjelzők - - - - Fm::PlacesView - - - Empty Trash - Kukaürítés - - - Rename - Átnevez - - - Delete - Töröl - - - - Open in New Tab - Megnyitás új fülön - - - - Open in New Window - Megnyitás új ablakban - - - - Move Bookmark Up - Könyvjelző föl - - - - Move Bookmark Down - Könyvjelző le - - - - Rename Bookmark - Könyvjelző átnevezés - - - - Remove Bookmark - Könyvjelző törlés - - - - - Unmount - Lecsatol - - - - Mount - Csatol - - - - Eject - Kidobat - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Típus: %1 -Méret: %2 -Módosítva: %3 - - - - Type: %1 -Modified: %2 - Típus: %1 -Módosítva: %2 - - - - Type: %1 -Modified: %3 - Típus: %1 -Módosítva: %3 - - - - &Overwrite - &Felülír - - - - &Rename - &Átnevez - - - - Fm::SidePane - - - - Places - Helyek - - - - - Directory Tree - Könyvtárfa - - - - Shows list of common places, devices, and bookmarks in sidebar - Általános helyek, eszközök és könyvjelzők listája az oldalsávban - - - - Shows tree of directories in sidebar - Könyvtárfa az oldalsávban - - - - MountOperationPasswordDialog - - - Mount - Csatlakozás - - - - Connect &anonymously - Névtelen cs&atlakozás - - - - Connect as u&ser: - Felha&sználóként: - - - - &Username: - &Név: - - - - &Password: - &Jelszó: - - - - &Domain: - &Hálózati cím: - - - - Forget password &immediately - Jelszófelejtés &iziben - - - - Remember password until you &logout - Je&lszófelejtés kilépéskor - - - - Remember &forever - Jelszóme&gjegyzés örökre - - - - QObject - - - - - - Error - Hiba - - - - Rename File - Fájlátnevezés - - - - Please enter a new name: - Új név: - - - - Create Folder - Mappakészítés - - - - Please enter a new file name: - Új fájlnév: - - - - New text file - Új szövegfájl - - - - Please enter a new folder name: - Űj mappanév: - - - - New folder - Új mappa - - - - Enter a name for the new %1: - Az új %1 neve: - - - - Create File - Fájlkészítés - - - - RenameDialog - - - Confirm to replace files - Fájlfelülírás megerősítése - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Itt már van ilyen nevű fájl.</span></p><p>Felülírjuk a meglévőt?</p></body></html> - - - - dest - cél - - - - with the following file? - Ezzel a fájllal? - - - - src file info - forrásfájl infó - - - - dest file info - célfájl infó - - - - src - forrás - - - - &File name: - &Fájlnév: - - - - Apply this option to all existing files - Az összes fájlra vonatkozzon mindez - - - - SearchDialog - - - Search Files - Fájlkeresés - - - - Name/Location - Név/hely - - - - File Name Patterns: - Fájlnév szűrő: - - - - * - * - - - - Case insensitive - Nagybetű érzéketlen - - - - Use regular expression - Szabályos kifejezés - - - - Places to Search: - Keresési helyek: - - - - &Add - Hozzá&ad - - - - &Remove - Tö&röl - - - - Search in sub directories - Alkönyvtárakban is keres - - - - Search for hidden files - Rejtett fájlok is - - - - File Type - Fájltípus - - - - Only search for files of following types: - Csak ilyen típusú fájlokat keres: - - - - Text files - Szöveg - - - - Image files - Kép - - - - Audio files - Hang - - - - Video files - Videó - - - - Documents - Dokumentum - - - - Folders - Könyvtár - - - - Content - Tartalom - - - - File contains: - Fájl tartalmazza: - - - - Case insensiti&ve - Nagybetű ér&zéketlen - - - - &Use regular expression - Szabvá&nyos kifejezés - - - - Properties - Tulajdonságok - - - - File Size: - Méret: - - - - Larger than: - Nagyobb mint: - - - - - Bytes - Bájt - - - - - KiB - Kb - - - - - MiB - Mb - - - - - GiB - Gb - - - - Smaller than: - Kissebb mint: - - - - Last Modified Time: - Utolsó módosítás ideje: - - - - Earlier than: - Korábbi ennél: - - - - Later than: - Későbbi ennél: - - - diff --git a/src/translations/libfm-qt_it.ts b/src/translations/libfm-qt_it.ts deleted file mode 100644 index 168dc52..0000000 --- a/src/translations/libfm-qt_it.ts +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Scegli un'applicazione - - - - Installed Applications - Applicazioni installate - - - - Custom Command - Comando personalizzato - - - - Command line to execute: - Riga di comando da eseguire: - - - - Application name: - Nome dell'applicazione: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Questi caratteri speciali possono essere usati nella riga di comando:</b> -<ul> -<li><b>%f</b>: indica un nome file singolo</li> -<li><b>%F</b>: indica diversi nomi file</li> -<li><b>%u</b>: indica un URI singolo del file</li> -<li><b>%U</b>: indica diversi URI</li> -</ul> - - - - Keep terminal window open after command execution - Non chiudere il terminale dopo l'esecuzione - - - - Execute in terminal emulator - Esegui in un emulatore di terminale - - - - Set selected application as default action of this file type - Ricorda come associazione predefinita per questo tipo di file - - - - EditBookmarksDialog - - - Edit Bookmarks - Modifica segnalibri - - - - Name - Nome - - - - Location - Posizione - - - - &Add Item - &Aggiungi elemento - - - - &Remove Item - &Rimuovi elemento - - - - Use drag and drop to reorder the items - Trascina per riordinare gli elementi - - - - ExecFileDialog - - - Execute file - Esegui file - - - - &Open - &Apri - - - - E&xecute - E&segui - - - - Execute in &Terminal - Esegui in un &terminale - - - - Cancel - Annulla - - - - FileOperationDialog - - - Destination: - Destinazione: - - - - Processing: - Elaborazione: - - - - Preparing... - Preparazione... - - - - Progress - Avanzamento - - - - Time remaining: - Tempo rimanente: - - - - FilePropsDialog - - - File Properties - Proprietà file - - - - General - Generale - - - - Location: - Posizione: - - - - File type: - Tipo file: - - - - Mime type: - Tipo MIME: - - - - File size: - Dimensione file: - - - - On-disk size: - Dimensione sul disco: - - - - Last modified: - Ultima modifica: - - - - Link target: - Destinazione collegamento: - - - - Open With: - Apri con: - - - - Last accessed: - Ultimo accesso: - - - - Permissions - Permessi - - - - Ownership - Proprietà - - - - - - Group: - Gruppo: - - - - - - Owner: - Proprietario: - - - - Access Control - Controllo degli accessi - - - - - Other: - Altri: - - - - Make the file executable - Rendi il file eseguibile - - - - - - Read - Lettura - - - - - - Write - Scrittura - - - - - - Execute - Esecuzione - - - - Sticky - Sticky - - - - SetUID - SetUID - - - - SetGID - SetGID - - - - Advanced Mode - Modalità avanzata - - - - Fm::AppChooserComboBox - - - Customize - Personalizza - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Seleziona un'applicazione per aprire i file "%1" - - - - Fm::CreateNewMenu - - - Folder - Cartella - - - - Blank File - File vuoto - - - - Fm::DirTreeModel - - - Loading... - Caricamento in corso... - - - - <No sub folders> - <nessuna sottocartella> - - - - Fm::DirTreeView - - - Open in New T&ab - Apri in una nuova &scheda - - - - Open in New Win&dow - Apri in una nuova &finestra - - - - Open in Termina&l - Apri in un &terminale - - - - Fm::DndActionMenu - - - Copy here - Copia qui - - - - Move here - Sposta qui - - - - Create symlink here - Crea collegamento qui - - - - Cancel - Annulla - - - - Fm::EditBookmarksDialog - - - New bookmark - Nuovo segnalibro - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - Questo file di testo "%1" sembra essere uno script eseguibile. -Cosa vuoi fare? - - - - This file '%1' is executable. Do you want to execute it? - Questo file "%1" è eseguibile. Vuoi eseguirlo? - - - - Fm::FileMenu - - - Open - Apri - - - OpenWith - ApriCon - - - - Cut - Taglia - - - - Copy - Copia - - - - Paste - Incolla - - - - - &Move to Trash - Cestin&a - - - - Output - Risultato - - - - &Delete - &Elimina - - - - Rename - Rinomina - - - - Open With... - Apri con... - - - - Other Applications - Altre applicazioni - - - - Create &New - Crea &nuovo - - - - &Restore - &Ripristina - - - - Extract to... - Estrai in... - - - - Extract Here - Estrai qui - - - - Compress - Comprimi - - - - Properties - Proprietà - - - - Fm::FileOperation - - - Error - Errore - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Alcuni file non possono essere spostati nel cestino perché il file system su cui si trovano non supporta questa operazione. -Vuoi invece eliminarli? - - - - - Confirm - Conferma - - - - Do you want to delete the selected files? - Vuoi eliminare i file selezionati? - - - - Do you want to move the selected files to trash can? - Vuoi spostare nel cestino i file selezionati? - - - - Fm::FileOperationDialog - - - Move files - Sposta file - - - - Moving the following files to destination folder: - Spostamento dei file seguenti nella cartella di destinazione: - - - - Copy Files - Copia file - - - - Copying the following files to destination folder: - Copia dei file seguenti nella cartella di destinazione: - - - - Trash Files - Cestina file - - - - Moving the following files to trash can: - Spostamento dei file seguenti nel cestino: - - - - Delete Files - Elimina file - - - - Deleting the following files - Eliminazione dei file seguenti - - - - Create Symlinks - Crea collegamenti simbolici - - - - Creating symlinks for the following files: - Creazione collegamenti simbolici per i seguenti file: - - - - Change Attributes - Cambia attributi - - - - Changing attributes of the following files: - Modifica degli attributi per i seguenti file: - - - - Restore Trashed Files - Ripristina file cestinati - - - - Restoring the following files from trash can: - Ripristino dei file seguenti dal cestino: - - - - Error - Errore - - - - Fm::FilePropsDialog - - - View folder content - Visualizza il contenuto della cartella - - - - View and modify folder content - Visualizza e modifica il contenuto della cartella - - - - Read - Lettura - - - - Read and write - Lettura e scrittura - - - - Forbidden - Vietato - - - - Files of different types - File di tipi diversi - - - - Multiple Files - File multipli - - - - Apply changes - Applica modifiche - - - - Do you want to recursively apply these changes to all files and sub-folders? - Vuoi applicare ricorsivamente queste modifiche a tutti i file e a tutte le sottocartelle? - - - - Fm::FileSearchDialog - - - Error - Errore - - - - You should add at least add one directory to search. - Dovresti aggiungere almeno una cartella in cui cercare. - - - - Select a folder - Seleziona una cartella - - - - Fm::FolderMenu - - - Create &New - Crea &nuovo - - - - &Paste - &Incolla - - - - Select &All - Seleziona t&utto - - - - Invert Selection - Inverti selezione - - - - Sorting - Ordinamento - - - - Show Hidden - Mostra nascosti - - - - Folder Pr&operties - Pr&oprietà cartella - - - Folder - Cartella - - - File - File - - - - By File Name - Per nome file - - - - By Modification Time - Per data modifica - - - - By File Size - Per dimensione file - - - - By File Type - Per tipo file - - - - By File Owner - Per proprietario file - - - - Ascending - Crescente - - - - Descending - Decrescente - - - - Folder First - Prima le cartelle - - - - Case Sensitive - Distingui MAIUSCOLE/minuscole - - - - Fm::FolderModel - - - Name - Nome - - - - Type - Tipo - - - - Size - Dimensione - - - - Modified - Modificato - - - - Owner - Proprietario - - - - Fm::FontButton - - - Bold - Grassetto - - - - Italic - Corsivo - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Connetti - - - - Fm::PlacesModel - - - Places - Risorse - - - - Desktop - Scrivania - - - - Trash - Cestino - - - - Computer - Computer - - - - Applications - Applicazioni - - - - Network - Rete - - - - Devices - Dispositivi - - - - Bookmarks - Segnalibri - - - - Fm::PlacesView - - - Empty Trash - Svuota cestino - - - Rename - Rinomina - - - Delete - Elimina - - - - Open in New Tab - Apri in una nuova scheda - - - - Open in New Window - Apri in una nuova finestra - - - - Move Bookmark Up - Sposta segnalibro in su - - - - Move Bookmark Down - Sposta segnalibro in giù - - - - Rename Bookmark - Rinomina segnalibro - - - - Remove Bookmark - Rimuovi segnalibro - - - - - Unmount - Smonta - - - - Mount - Monta - - - - Eject - Espelli - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Tipo: %1 -Dimensione: %2 -Ultima modifica: %3 - - - - Type: %1 -Modified: %2 - Tipo: %1 -Ultima modifica: %2 - - - - Type: %1 -Modified: %3 - Tipo: %1 -Ultima modifica: %3 - - - - &Overwrite - S&ovrascrivi - - - - &Rename - &Rinomina - - - - Fm::SidePane - - - - Places - Risorse - - - - - Directory Tree - Albero delle cartelle - - - - Shows list of common places, devices, and bookmarks in sidebar - Mostra un elenco di risorse, dispositivi e segnalibri nel pannello laterale - - - - Shows tree of directories in sidebar - Mostra l'albero delle cartelle nel pannello laterale - - - - MountOperationPasswordDialog - - - Mount - Monta - - - - Connect &anonymously - Connetti in modo &anonimo - - - - Connect as u&ser: - Connetti come &utente: - - - - &Username: - &Nome utente: - - - - &Password: - &Password: - - - - &Domain: - &Dominio: - - - - Forget password &immediately - Dimentica la password &immediatamente - - - - Remember password until you &logout - Ricorda &la password fino al termine sessione - - - - Remember &forever - Ricorda per &sempre - - - - QObject - - - - - - Error - Errore - - - - Rename File - Rinomina file - - - - Please enter a new name: - Digita un nuovo nome: - - - - Create Folder - Crea cartella - - - - Please enter a new file name: - Digita un nuovo nome del file: - - - - New text file - Nuovo file di testo - - - - Please enter a new folder name: - Digita un nuovo nome della cartella: - - - - New folder - Nuova cartella - - - - Enter a name for the new %1: - Digita un nome per %1: - - - - Create File - Crea file - - - - RenameDialog - - - Confirm to replace files - Conferma sostituzione dei file - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">C'è già un file con lo stesso nome in questa posizione.</span></p><p>Vuoi sostituire il file esistente?</p></body></html> - - - - dest - dest - - - - with the following file? - con il file seguente? - - - - src file info - info file sorg - - - - dest file info - info file dest - - - - src - sorg - - - - &File name: - Nome &file: - - - - Apply this option to all existing files - Applica questa opzione a tutti i file esistenti - - - - SearchDialog - - - Search Files - Cerca file - - - - Name/Location - Nome/Posizione - - - - File Name Patterns: - Modelli di nome dei file: - - - - * - * - - - - Case insensitive - Non distinguere le maiuscole - - - - Use regular expression - Utilizza un'espressione regolare - - - - Places to Search: - Risorse in cui cercare: - - - - &Add - &Aggiungi - - - - &Remove - &Rimuovi - - - - Search in sub directories - Cerca nelle sottocartelle - - - - Search for hidden files - Cerca i file nascosti - - - - File Type - Tipo di file - - - - Only search for files of following types: - Cerca solo i file dei tipi seguenti: - - - - Text files - File di testo - - - - Image files - File di immagini - - - - Audio files - File audio - - - - Video files - File video - - - - Documents - Documenti - - - - Folders - Cartelle - - - - Content - Contenuto - - - - File contains: - Il file contiene: - - - - Case insensiti&ve - Non disting&uere le maiuscole - - - - &Use regular expression - &Utilizza un'espressione regolare - - - - Properties - Proprietà - - - - File Size: - Dimensione file: - - - - Larger than: - Più grande di: - - - - - Bytes - Byte - - - - - KiB - KiB - - - - - MiB - MiB - - - - - GiB - GiB - - - - Smaller than: - Più piccolo di: - - - - Last Modified Time: - Ultima modifica: - - - - Earlier than: - Prima del: - - - - Later than: - Dopo del: - - - diff --git a/src/translations/libfm-qt_ja.ts b/src/translations/libfm-qt_ja.ts deleted file mode 100644 index 672030a..0000000 --- a/src/translations/libfm-qt_ja.ts +++ /dev/null @@ -1,1302 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - アプリケーションを選ぶ - - - - Installed Applications - インストール済アプリケーション - - - - Custom Command - カスタムコマンド - - - - Command line to execute: - 実行するコマンドライン: - - - - Application name: - アプリケーション名 - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>コマンドラインには、次の特別なコードを使用することができます:</b> -<ul> -<li><b>%f</b>: 単一のファイル名を表す</li> -<li><b>%F</b>: 複数のファイル名を表す</li> -<li><b>%u</b>: 単一のファイルのURIを表す</li> -<li><b>%U</b>: 複数のURIを表す</li> -</ul> - - - - Keep terminal window open after command execution - コマンド実行後も端末のウィンドウを閉じない - - - - Execute in terminal emulator - 端末エミュレーター内で実行 - - - - Set selected application as default action of this file type - 選択したアプリケーションをこのファイルの種類に関連付ける - - - - EditBookmarksDialog - - - Edit Bookmarks - ブックマークを編集 - - - - Name - 名前 - - - - Location - 場所 - - - - &Add Item - アイテムを追加(&A) - - - - &Remove Item - アイテムを削除(&R) - - - - Use drag and drop to reorder the items - アイテムを並べ替えるにはドラッグアンドドロップ - - - - ExecFileDialog - - - Execute file - ファイルを実行 - - - - &Open - 開く(&O) - - - - E&xecute - 実行(&E) - - - - Execute in &Terminal - 端末内で実行(&T) - - - - Cancel - キャンセル - - - - FileOperationDialog - - - Destination: - 送り先: - - - - Processing: - 処理中: - - - - Preparing... - 準備中... - - - - Progress - 進行状況 - - - - Time remaining: - 残り時間: - - - - FilePropsDialog - - - File Properties - ファイルのプロパティー - - - - General - 一般 - - - - Location: - 場所: - - - - File type: - 種類: - - - - Mime type: - MIMEタイプ: - - - - File size: - サイズ: - - - - On-disk size: - ディスク上のサイズ: - - - - Last modified: - 最終更新日時: - - - - Link target: - リンク先: - - - - Open With: - 関連付け: - - - - Last accessed: - 最終アクセス日時: - - - - Permissions - パーミッション - - - - Ownership - 所有権 - - - - - - Group: - グループ: - - - - - - Owner: - 所有者: - - - - Access Control - アクセス制限 - - - - - Other: - その他: - - - - Make the file executable - ファイルを実行可能にする - - - - - - Read - 読取り - - - - - - Write - 書込み - - - - - - Execute - 実行 - - - - Sticky - スティッキー - - - - SetUID - UIDを設定 - - - - SetGID - GIDを設定 - - - - Advanced Mode - 高度なモード - - - - Fm::AppChooserComboBox - - - Customize - カスタマイズ - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - ファイルを開くアプリケーションを選択 - - - - Fm::CreateNewMenu - - - Folder - フォルダー - - - - Blank File - 空のファイル - - - - Fm::DirTreeModel - - - Loading... - ロード中... - - - - <No sub folders> - <サブフォルダーなし> - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - ここへコピー - - - - Move here - ここへ移動 - - - - Create symlink here - シンボリックリンクを作成 - - - - Cancel - キャンセル - - - - Fm::EditBookmarksDialog - - - New bookmark - 新規ブックマーク - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - このテキストファイル '%1' は実行可能スクリプトです。 -どうしますか? - - - - This file '%1' is executable. Do you want to execute it? - このファイル '%1' は実行可能です。 -実行しますか? - - - - Fm::FileMenu - - - Open - 開く - - - OpenWith - アプリケーションで開く - - - - Cut - 切り取り - - - - Copy - コピー - - - - Paste - 貼り付け - - - - - &Move to Trash - ゴミ箱へ移動(&M) - - - - Output - 出力 - - - - &Delete - 削除(&D) - - - - Rename - 名前を変更する - - - - Open With... - アプリケーションで開く - - - - Other Applications - その他のアプリケーション - - - - Create &New - 新規作成 (&N) - - - - &Restore - - - - - Extract to... - 展開する - - - - Extract Here - ここへ展開する - - - - Compress - 圧縮する - - - - Properties - プロパティー - - - - Fm::FileOperation - - - Error - エラー - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - ファイルシステムのサポートがないため、ゴミ箱へ移動できないファイルがあります。 -かわりにこれらを削除しますか? - - - - - Confirm - 確認 - - - - Do you want to delete the selected files? - 選択したファイルを削除しますか? - - - - Do you want to move the selected files to trash can? - 選択したファイルをゴミ箱に移しますか? - - - - Fm::FileOperationDialog - - - Move files - ファイルを移動 - - - - Moving the following files to destination folder: - 次のファイルを対象のフォルダーへ移動: - - - - Copy Files - ファイルをコピー - - - - Copying the following files to destination folder: - 次のファイルを対象のフォルダーへコピー: - - - - Trash Files - ファイルをゴミ箱へ入れる - - - - Moving the following files to trash can: - 次のファイルをゴミ箱へ入れる: - - - - Delete Files - ファイルを削除 - - - - Deleting the following files - 以下のファイルを削除 - - - - Create Symlinks - シンボリックリンク作成 - - - - Creating symlinks for the following files: - 以下のファイルのシンボリックリンクを作成: - - - - Change Attributes - 属性を変更 - - - - Changing attributes of the following files: - 以下のファイルの属性を変更: - - - - Restore Trashed Files - ゴミ箱から戻す - - - - Restoring the following files from trash can: - 以下のファイルをゴミ箱から戻す: - - - - Error - エラー - - - - Fm::FilePropsDialog - - - View folder content - フォルダーの内容を表示 - - - - View and modify folder content - フォルダーの内容を表示・変更 - - - - Read - 読取り - - - - Read and write - 読取りおよび書込み - - - - Forbidden - 禁止 - - - - Files of different types - 異なる種類のファイル - - - - Multiple Files - 複数のファイル - - - - Apply changes - 変更を適用 - - - - Do you want to recursively apply these changes to all files and sub-folders? - 変更をすべてのファイルとサブフォルダーにも再帰的に適用しますか? - - - - Fm::FileSearchDialog - - - Error - エラー - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - 新規作成 (&N) - - - - &Paste - ペースト(&P) - - - - Select &All - すべてを選択(&A) - - - - Invert Selection - 選択を反転 - - - - Sorting - ソート - - - - Show Hidden - 隠しファイルの表示 - - - - Folder Pr&operties - フォルダのプロパティー(&O) - - - Folder - フォルダー - - - File - ファイル - - - Blank File - 空のファイル - - - - By File Name - 名前 - - - - By Modification Time - 更新時刻 - - - - By File Size - サイズ - - - - By File Type - 種類 - - - - By File Owner - 所有者 - - - - Ascending - 昇順 - - - - Descending - 降順 - - - - Folder First - フォルダーを先に - - - - Case Sensitive - 大文字小文字を区別 - - - - Fm::FolderModel - - - Name - 名前 - - - - Type - 種類 - - - - Size - サイズ - - - - Modified - 更新日時 - - - - Owner - 所有者 - - - - Fm::FontButton - - - Bold - 太字 - - - - Italic - 斜体 - - - - Fm::MountOperationPasswordDialog - - - &Connect - 接続&(C) - - - - Fm::PlacesModel - - - Places - 場所 - - - - Desktop - デスクトップ - - - - Trash - ゴミ箱 - - - - Computer - コンピューター - - - - Applications - アプリケーション - - - - Network - ネットワーク - - - - Devices - デバイス - - - - Bookmarks - ブックマーク - - - - Fm::PlacesView - - - Empty Trash - ゴミ箱を空にする - - - Rename - 名前を変更 - - - Delete - 削除 - - - - Open in New Tab - - - - - Open in New Window - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - アンマウント - - - - Mount - マウント - - - - Eject - 取出し - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - 種類: %1 -サイズ: %2 -更新日時: %3 - - - - Type: %1 -Modified: %2 - 種類: %1 -更新日時: %2 - - - - Type: %1 -Modified: %3 - 種類: %1 -更新日時: %3 - - - - &Overwrite - 上書き(&O) - - - - &Rename - 名前を変更(&R) - - - - Fm::SidePane - - - - Places - 場所 - - - - - Directory Tree - ディレクトリーツリー - - - - Shows list of common places, devices, and bookmarks in sidebar - サイドバーに、一般的な場所およびデバイス、ブックマークのリストを表示 - - - - Shows tree of directories in sidebar - サイドバーにディレクトリーツリーを表示 - - - - MountOperationPasswordDialog - - - Mount - マウント - - - - Connect &anonymously - 匿名で接続(&A) - - - - Connect as u&ser: - ユーザーとして接続(&U) - - - - &Username: - ユーザー名(&U): - - - - &Password: - &パスワード(&P): - - - - &Domain: - &ドメイン(&D): - - - - Forget password &immediately - パスワードを記憶させない - - - - Remember password until you &logout - パスワードをログアウトするまで記憶させる - - - - Remember &forever - パスワードを恒久的に記憶させる - - - - QObject - - - - - - Error - エラー - - - - Rename File - ファイル名を変更 - - - - Please enter a new name: - 新しい名前を入力してください: - - - - Create Folder - - - - - Please enter a new file name: - 新規ファイルの名前を入力してください: - - - - New text file - 新規テキストファイル - - - - Please enter a new folder name: - 新規フォルダの名前を入力してください: - - - - New folder - 新規フォルダー - - - - Enter a name for the new %1: - 新しい %1 の名前を入力してください: - - - - Create File - ファイル作成 - - - - RenameDialog - - - Confirm to replace files - ファイルの置換えを確認 - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">この場所にはすでに、同じ名前のファイルがあります。</span></p><p>既存のファイルを置き換えますか?</p></body></html> - - - - dest - 送り先 - - - - with the following file? - 以下のファイルと置き換えますか? - - - - src file info - - - - - dest file info - 送り先のファイルの情報 - - - - src - 送り元のファイルの情報 - - - - &File name: - ファイル名(&F): - - - - Apply this option to all existing files - 既存のすべてのファイルにも適用する - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - プロパティー - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_lt_LT.ts b/src/translations/libfm-qt_lt_LT.ts deleted file mode 100644 index 6e245a7..0000000 --- a/src/translations/libfm-qt_lt_LT.ts +++ /dev/null @@ -1,1301 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - - - - - Installed Applications - - - - - Custom Command - - - - - Command line to execute: - - - - - Application name: - - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - - - - - Keep terminal window open after command execution - - - - - Execute in terminal emulator - - - - - Set selected application as default action of this file type - - - - - EditBookmarksDialog - - - Edit Bookmarks - Redaguoti žymeles - - - - Name - Pavadinimas - - - - Location - Vieta - - - - &Add Item - &Pridėti elementą - - - - &Remove Item - &Pašalinti elementą - - - - Use drag and drop to reorder the items - Failų tvarkai pakeisti naudokite vilkimą - - - - ExecFileDialog - - - Execute file - - - - - &Open - - - - - E&xecute - - - - - Execute in &Terminal - - - - - Cancel - Atšaukti - - - - FileOperationDialog - - - Destination: - Paskirties vieta: - - - - Processing: - Apdorojama: - - - - Preparing... - Ruošiamasi... - - - - Progress - Eiga - - - - Time remaining: - Liko laiko: - - - - FilePropsDialog - - - File Properties - Failo savybės - - - - General - Bendra - - - - Location: - Vieta: - - - - File type: - Failo tipas: - - - - Mime type: - Mime tipas: - - - - File size: - Failo dydis: - - - - On-disk size: - Dydis diske: - - - - Last modified: - Paskutinis pakeitimas: - - - - Link target: - Nuorodos tikslas: - - - - Open With: - Atverti su: - - - - Last accessed: - Paskutinį kartą naudota: - - - - Permissions - Leidimai - - - - Ownership - Nuosavybė - - - - - - Group: - Grupė: - - - - - - Owner: - Savininkas: - - - - Access Control - Prieigos kontrolė - - - - - Other: - Kita: - - - - Make the file executable - Padaryti failą vykdomu - - - - - - Read - Skaityti - - - - - - Write - Rašyti - - - - - - Execute - Vykdyti - - - - Sticky - Lipnus - - - - SetUID - Nustatyti UID - - - - SetGID - Nustatyti GID - - - - Advanced Mode - Išsamus režimas - - - - Fm::AppChooserComboBox - - - Customize - - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - - - - - Fm::CreateNewMenu - - - Folder - Aplankas - - - - Blank File - - - - - Fm::DirTreeModel - - - Loading... - - - - - <No sub folders> - - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - Kopijuoti čia - - - - Move here - Perkelti čia - - - Create symlink here - symlink=symbolic link - Sukurti simbolinę nuorodą - - - - Cancel - Atšaukti - - - - Create symlink here - Sukurti simbolinę nuorodą - - - - Fm::EditBookmarksDialog - - - New bookmark - Nauja žymelė - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - - - - - This file '%1' is executable. Do you want to execute it? - - - - - Fm::FileMenu - - - Open - Atverti - - - OpenWith - Atverti su - - - - Cut - Iškirpti - - - - Copy - Kopijuoti - - - - Paste - Įklijuoti - - - - - &Move to Trash - &Perkelti į šiukšlinę - - - - &Delete - &Pašalinti - - - - Rename - Pervadinti - - - - Create &New - &Kurti naują - - - - Extract to... - Išskleisti į... - - - - Extract Here - Išskleisti čia - - - - Compress - Archyvuoti - - - - Properties - Savybės - - - - Open With... - - - - - Other Applications - - - - - Output - - - - - &Restore - - - - - Fm::FileOperation - - - - Confirm - Patvirtinti - - - - Do you want to delete the selected files? - Ar norite ištrinti pasirinktus failus? - - - - Do you want to move the selected files to trash can? - Ar norite perkelti pasirinktus failus į šiukšlinę? - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Kai kurie failai negali būti išmesti į šiukšlinę, nes failų sistema to nepalaiko. -Ar norite vietoje to juos pašalinti visam laikui? - - - - Error - Klaida - - - - Fm::FileOperationDialog - - - Move files - Perkelti failus - - - - Moving the following files to destination folder: - Šie failai perkeliami į paskirties aplanką: - - - - Copy Files - Kopijuoti failus - - - - Copying the following files to destination folder: - Šie failai kopijuojami į paskirties aplanką: - - - - Trash Files - Išmesti failus į šiukšliadėžę - - - - Moving the following files to trash can: - Failai perkeliami į šiukšliadėžę: - - - - Delete Files - Pašalinti failus - - - - Deleting the following files - Šalinami šie failai - - - Create Symlinks - symlink=symbolic link - Sukurti simbolinę nuorodą - - - - Creating symlinks for the following files: - Šiems failams kuriamos simbolinės nuorodos: - - - - Change Attributes - Keisti atributus - - - - Changing attributes of the following files: - Keičiami šių failų atributai: - - - - Restore Trashed Files - Atstatyti ištrintus failus - - - - Restoring the following files from trash can: - Šie failai atstatomi iš šiukšliadėžės: - - - - Error - Klaida - - - - Create Symlinks - Sukurti simbolinę nuorodą - - - - Fm::FilePropsDialog - - - View folder content - Žiūrėti aplanko turinį - - - - View and modify folder content - Žiūrėti ir keisti aplanko turinį - - - - Read - Skaityti - - - - Read and write - Skaityti ir rašyti - - - - Forbidden - Uždrausta - - - - Files of different types - Skirtingų tipų failai - - - - Multiple Files - Keli failai - - - - Apply changes - Pritaikyti pakeitimus - - - - Do you want to recursively apply these changes to all files and sub-folders? - Ar norite rekursyviai pritaikyti šiuos pakeitimus visiems failams ir poaplankiams? - - - - Fm::FileSearchDialog - - - Error - Klaida - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - &Kurti naują - - - - &Paste - Į&klijuoti - - - - Select &All - Pasirinkti &viską - - - - Invert Selection - Invertuoti pasirinkimą - - - - Sorting - Rikiavimas - - - - Show Hidden - Rodyti paslėptus - - - - Folder Pr&operties - Failo &savybės - - - Folder - Aplankas - - - File - Failas - - - - By File Name - Pagal failo vardą - - - - By Modification Time - Pagal keitimo datą - - - - By File Size - Pagal failo dydį - - - - By File Type - Pagal failo tipą - - - - By File Owner - Pagal failo savininką - - - - Ascending - Didėjančiai - - - - Descending - Mažėjančiai - - - - Folder First - Pirmiausia aplankai - - - - Case Sensitive - Skirti raidžių dydį - - - - Fm::FolderModel - - - Name - Pavadinimas - - - - Type - Tipas - - - - Size - Dydis - - - - Modified - Pakeista - - - - Owner - Savininkas - - - - Fm::FontButton - - - Bold - Paryškintas - - - - Italic - Kursyvinis - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Prisijungti - - - - Fm::PlacesModel - - - Desktop - Darbastalis - - - - Trash - Šiukšlinė - - - - Computer - Kompiuteris - - - - Applications - Programos - - - - Network - Tinklas - - - - Places - - - - - Devices - - - - - Bookmarks - - - - - Fm::PlacesView - - Rename - Pervadinti - - - Delete - Šalinami failai - - - - Open in New Tab - - - - - Open in New Window - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - Atjungti - - - - Mount - Prijungti - - - - Eject - Išstumti - - - - Empty Trash - - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Tipas: %1 -Dydis: %2 -Keista: %3 - - - - Type: %1 -Modified: %3 - Tipas: %1 -Keista: %3 - - - - &Overwrite - &Perrašyti - - - - &Rename - Pe&rvadinti - - - - Type: %1 -Modified: %2 - Tipas: %1 -Keista: %2 {1 -?} - - - - Fm::SidePane - - - - Places - - - - - - Directory Tree - - - - - Shows list of common places, devices, and bookmarks in sidebar - - - - - Shows tree of directories in sidebar - - - - - MountOperationPasswordDialog - - - Mount - Prijungti - - - - Connect &anonymously - Prisijungti &anonimiškai - - - - Connect as u&ser: - Prisijungti kaip nau&dotojui: - - - - &Username: - &Naudotojo vardas: - - - - &Password: - &Slaptažodis: - - - - &Domain: - &Domenas: - - - - Forget password &immediately - &Neįsiminti slaptažodžio - - - - Remember password until you &logout - &Atsiminti slaptažodį iki atsijungsite - - - - Remember &forever - Prisiminti &visam laikui - - - - QObject - - - - - - Error - Klaida - - - - Rename File - Pervadinti failą - - - - Please enter a new name: - Įveskite naują pavadinimą: - - - - Create Folder - - - - - Please enter a new file name: - Įveskite naują failo pavadinimą: - - - - New text file - Naujas tekstinis failas - - - - Please enter a new folder name: - Įveskite naują failo pavadinimą: - - - - New folder - Naujas aplankas - - - - Create File - Sukurti failą - - - - Enter a name for the new %1: - - - - - RenameDialog - - - Confirm to replace files - Patvirtinti failų pakeitimą - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Šiame aplanke jau yra failas tokiu pačiu pavadinimu.</span></p><p>Ar norite pakeisti esamą failą?</p></body></html> - - - - dest - paskirtis - - - - with the following file? - šiuo failu? - - - - src file info - šaltinio failo informacija - - - - dest file info - paskirties failo informacija - - - - src - šaltinis - - - - &File name: - &Failo pavadinimas: - - - - Apply this option to all existing files - Pritaikyti šią nuostatą visiems failams - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - Savybės - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_pl.ts b/src/translations/libfm-qt_pl.ts deleted file mode 100644 index 6b8dc71..0000000 --- a/src/translations/libfm-qt_pl.ts +++ /dev/null @@ -1,1293 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Wybór programu - - - - Installed Applications - Zainstalowane programy - - - - Custom Command - Własny wiersz poleceń - - - - Command line to execute: - Wiersz poleceń do wykonania: - - - - Application name: - Nazwa programu: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>W wierszu poleceń można użyć następujących oznaczeń:</b> -<ul> -<li><b>%f</b>: nazwa pierwszego z zaznaczonych plików</li> -<li><b>%F</b>: nazwy wszystkich zaznaczonych plików</li> -<li><b>%u</b>: ścieżka pierwszego z zaznaczonych plików</li> -<li><b>%U</b>: ścieżki wszystkich zaznaczonych plików</li> -</ul> - - - - Keep terminal window open after command execution - Zachowanie otwartego terminala po wykonaniu polecenia - - - - Execute in terminal emulator - Uruchomienie w emulatorze terminala - - - - Set selected application as default action of this file type - Ustaw wybrany program jako domyślną akcję dla tego typu plików - - - - EditBookmarksDialog - - - Edit Bookmarks - Edycja zakładek - - - - Name - Nazwa - - - - Location - Położenie - - - - &Add Item - &Dodaj - - - - &Remove Item - &Usuń - - - - Use drag and drop to reorder the items - Przeciągnij i upuść aby zmienić kolejność - - - - ExecFileDialog - - - Execute file - Uruchom - - - - &Open - &Otwórz - - - - E&xecute - &Uruchom - - - - Execute in &Terminal - Uruchom w &terminalu - - - - Cancel - Anuluj - - - - FileOperationDialog - - - Destination: - Cel: - - - - Processing: - Przetwarzanie: - - - - Preparing... - Przygotowanie... - - - - Progress - Postęp - - - - Time remaining: - Pozostały czas: - - - - FilePropsDialog - - - File Properties - Właściwości pliku - - - - General - Ogólne - - - - Location: - Położenie: - - - - File type: - Typ pliku: - - - - Mime type: - Typ mime: - - - - File size: - Rozmiar pliku: - - - - On-disk size: - Rozmiar na dysku: - - - - Last modified: - Ostatnia modyfikacja: - - - - Link target: - Położenie docelowe: - - - - Open With: - Otwieranie za pomocą: - - - - Last accessed: - Ostatni dostęp: - - - - Permissions - Uprawnienia - - - - Ownership - Właściciel - - - - - - Group: - Grupa: - - - - - - Owner: - Właściciel: - - - - Access Control - Prawa dostępu - - - - - Other: - Inni: - - - - Make the file executable - Ustaw prawo wykonywalności - - - - - - Read - Odczyt - - - - - - Write - Zapis - - - - - - Execute - Wykonanie - - - - Sticky - Sticky - - - - SetUID - SetUID - - - - SetGID - SetGID - - - - Advanced Mode - Zaawansowane - - - - Fm::AppChooserComboBox - - - Customize - Dostosuj - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - WYbierz program do otwarcia "%1" plików - - - - Fm::CreateNewMenu - - - Folder - Katalog - - - - Blank File - Pusty plik - - - - Fm::DirTreeModel - - - Loading... - Wczytywanie... - - - - <No sub folders> - <Brak katalogów> - - - - Fm::DirTreeView - - - Open in New T&ab - Otwórz w nowej k&arcie - - - - Open in New Win&dow - Otwórz w nowym o&knie - - - - Open in Termina&l - Otwórz w termina&lu - - - - Fm::DndActionMenu - - - Copy here - Kopiuj tutaj - - - - Move here - Przenieś tutaj - - - - Create symlink here - Utwórz dowiązanie symboliczne - - - - Cancel - Anuluj - - - - Fm::EditBookmarksDialog - - - New bookmark - Nowa zakładka - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - Plik tekstowy '%1' wygląda na wykonywalny skrypt. -Co chcesz zrobić z tym plikiem? - - - - This file '%1' is executable. Do you want to execute it? - Plik '%1' jest wykonywalny. Czy chcesz go uruchomić? - - - - Fm::FileMenu - - - Open - Otwórz - - - - Create &New - Utwórz &nowy - - - - &Restore - &Przywróć - - - - Cut - Wytnij - - - - Copy - Kopiuj - - - - Paste - Wklej - - - - - &Move to Trash - Przenieś do &kosza - - - - Output - Wyjście - - - - &Delete - &Usuń - - - - Rename - Zmień nazwę - - - - Open With... - Otwórz za pomocą... - - - - Other Applications - Inny program - - - - Extract to... - Rozpakuj do... - - - - Extract Here - Rozpakuj tutaj - - - - Compress - Skompresuj - - - - Properties - Właściwości - - - - Fm::FileOperation - - - Error - Błąd - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Niektóre pliki nie mogą zostać przeniesione do kosza ponieważ system plików nie obsługuje takiej operacji. -Czy zamiast tego usunąć te pliki? - - - - - Confirm - Potwierdź - - - - Do you want to delete the selected files? - Czy chcesz usunąć wybrane pliki? - - - - Do you want to move the selected files to trash can? - Czy chcesz przenieść wybrane pliki do kosza? - - - - Fm::FileOperationDialog - - - Move files - Przenoszenie plików - - - - Moving the following files to destination folder: - Przenoszenie następujących plików do katalogu docelowego: - - - - Copy Files - Kopiowanie plików - - - - Copying the following files to destination folder: - Kopiowanie następujących plików do katalogu docelowego: - - - - Trash Files - Przenoszenie plików do kosza - - - - Moving the following files to trash can: - Przenoszenie następujących plików do kosza: - - - - Delete Files - Usuwanie plików - - - - Deleting the following files - Usuwanie następujących plików - - - - Create Symlinks - Tworzenie dowiązań symbolicznych - - - - Creating symlinks for the following files: - Tworzenie dowiązań dla następujących plików: - - - - Change Attributes - Zmiana uprawnień - - - - Changing attributes of the following files: - Zmiana uprawnień dla następujących plików: - - - - Restore Trashed Files - Przywracanie plików z kosza - - - - Restoring the following files from trash can: - Przywracanie następujących plików z kosza: - - - - Error - Błąd - - - - Fm::FilePropsDialog - - - View folder content - Wyświetlanie zawartości - - - - View and modify folder content - Wyświetlanie i modyfikowanie zawartości - - - - Read - Odczyt - - - - Read and write - Odczyt i zapis - - - - Forbidden - Zabronione - - - - Files of different types - Pliki różnego typu - - - - Multiple Files - Wiele plików - - - - Apply changes - Zastosuj zmiany - - - - Do you want to recursively apply these changes to all files and sub-folders? - Czy chcesz rekursywnie zastosować zmiany do wszystkich plików i podkatalogów? - - - - Fm::FileSearchDialog - - - Error - Błąd - - - - You should add at least add one directory to search. - Musisz dodać przynajmniej jeden katalog. - - - - Select a folder - Wybierz katalog - - - - Fm::FolderMenu - - - Create &New - Utwórz &nowy - - - - &Paste - &Wklej - - - - Select &All - Z&aznacz wszystko - - - - Invert Selection - Odwróć zaznaczenie - - - - Sorting - Sortowanie - - - - Show Hidden - Wyświetlanie ukrytych plików - - - - Folder Pr&operties - Właściwości &katalogu - - - Folder - Katalog - - - Blank File - Pusty plik - - - - By File Name - Według nazwy - - - - By Modification Time - Według czasu modyfikacji - - - - By File Size - Według rozmiaru - - - - By File Type - Według typu - - - - By File Owner - Wedłuh właściciela pliku - - - - Ascending - Rosnąco - - - - Descending - Malejąco - - - - Folder First - Najpierw katalogi - - - - Case Sensitive - Uwzględnij wielkość liter - - - - Fm::FolderModel - - - Name - Nazwa - - - - Type - Typ - - - - Size - Rozmiar - - - - Modified - Zmodyfikowany - - - - Owner - Właściciel - - - - Fm::FontButton - - - Bold - Pogrubienie - - - - Italic - Kursywa - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Podłącz - - - - Fm::PlacesModel - - - Places - Położenia - - - - Desktop - Pulpit - - - - Trash - Kosz - - - - Computer - Komputer - - - - Applications - Programy - - - - Network - Sieć - - - - Devices - Urządzenia - - - - Bookmarks - Zakładki - - - - Fm::PlacesView - - - Empty Trash - Opróżnij kosz - - - Rename - Zmień nazwę - - - Delete - Usuń - - - - Open in New Tab - Otwórz w nowej karcie - - - - Open in New Window - Otwórz w nowym oknie - - - - Move Bookmark Up - Do góry - - - - Move Bookmark Down - W dół - - - - Rename Bookmark - Zmień nazwę - - - - Remove Bookmark - Usuń - - - - - Unmount - Odmontuj - - - - Mount - Montuj - - - - Eject - Wysuń - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Typ: %1 -Rozmiar: %2 -Zmodyfikowany: %3 - - - - Type: %1 -Modified: %2 - Typ: %1 -Zmodyfikowany: %2 - - - - Type: %1 -Modified: %3 - Typ: %1 -Zmodyfikowany: %3 - - - - &Overwrite - &Nadpisz - - - - &Rename - &Zmień nazwę - - - - Fm::SidePane - - - - Places - Położenia - - - - - Directory Tree - Drzewo katalogów - - - - Shows list of common places, devices, and bookmarks in sidebar - Pokazuje listę miejsc, urządzeń oraz zakładek w panelu bocznym - - - - Shows tree of directories in sidebar - Pokazuje drzewo katalogów w panelu bocznym - - - - MountOperationPasswordDialog - - - Mount - Montowanie - - - - Connect &anonymously - Połącz &anonimowo - - - - Connect as u&ser: - Połącz jako &użytkownik: - - - - &Username: - &Użytkownik: - - - - &Password: - &Hasło: - - - - &Domain: - &Domena: - - - - Forget password &immediately - Zapomnij hasło &od razu - - - - Remember password until you &logout - &Pamiętaj hasło do wylogowania - - - - Remember &forever - Pamiętaj na &zawsze - - - - QObject - - - - - - Error - Błąd - - - - Rename File - Zmiana nazwy - - - - Please enter a new name: - Podaj nową nazwę: - - - - Create Folder - Utwórz katalog - - - - Please enter a new file name: - Podaj nazwę pliku: - - - - New text file - Nowy plik tekstowy - - - - Please enter a new folder name: - POdaj nazwę nowego katalogu: - - - - New folder - Nowy katalog - - - - Enter a name for the new %1: - Podaj nazwę dla pliku %1: - - - - Create File - Utwórz plik - - - - RenameDialog - - - Confirm to replace files - Potwierdź aby nadpisać pliki - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Plik o podanej nazwie już istnieje w katalogu docelowym.</span></p><p>Czy chcesz nadpisać istniejący plik?</p></body></html> - - - - dest - - - - - with the following file? - następującym plikiem? - - - - src file info - - - - - dest file info - - - - - src - - - - - &File name: - &Nazwa pliku: - - - - Apply this option to all existing files - Zastosuj do wszystkich plików - - - - SearchDialog - - - Search Files - Wyszukiwanie - - - - Name/Location - Nazwa/Lokacja - - - - File Name Patterns: - Nazwa pliku: - - - - * - * - - - - Case insensitive - Nie uwzględniaj wielkości liter - - - - Use regular expression - Użyj wyrażeń regularnych - - - - Places to Search: - Katalogi do przeszukania: - - - - &Add - Dod&aj - - - - &Remove - &Usuń - - - - Search in sub directories - Przeszukuj podkatalogi - - - - Search for hidden files - Przeszukuj pliki ukryte - - - - File Type - Typy plików - - - - Only search for files of following types: - Wyszukaj tylko pliki następujących typów: - - - - Text files - Pliki tekstowe - - - - Image files - Obrazki - - - - Audio files - Pliki audio - - - - Video files - Pliki wideo - - - - Documents - Dokumenty - - - - Folders - Katalogi - - - - Content - Zawartość - - - - File contains: - Plik zawiera: - - - - Case insensiti&ve - &Nie uwzględniaj wielkości liter - - - - &Use regular expression - &Użyj wyrażeń regularnych - - - - Properties - Właściwości - - - - File Size: - Rozmiar pliku: - - - - Larger than: - Większy niż: - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - Mniejszy niż: - - - - Last Modified Time: - CZas ostatniej modyfikacji: - - - - Earlier than: - Wcześniej niż: - - - - Later than: - Poźniej niż: - - - diff --git a/src/translations/libfm-qt_pt.ts b/src/translations/libfm-qt_pt.ts deleted file mode 100644 index f76a202..0000000 --- a/src/translations/libfm-qt_pt.ts +++ /dev/null @@ -1,1301 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Escolha uma aplicação - - - - Installed Applications - Aplicações instaladas - - - - Custom Command - Comando personalizado - - - - Command line to execute: - Linha de comandos a executar: - - - - Application name: - Nome da aplicação: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Pode utilizar os seguintes códigos na linha de comandos:</b> -<ul> -<li><b>%f</b>: é o nome de um ficheiro</li> -<li><b>%F</b>: é o nome de vários ficheiros</li> -<li><b>%u</b>: é o URI do ficheiro</li> -<li><b>%U</b>: é o URI de vários ficheiros</li> -</ul> - - - - Keep terminal window open after command execution - Manter janela de terminal aberta depois de executar o comando - - - - Execute in terminal emulator - Executar no emulador de terminal - - - - Set selected application as default action of this file type - Utilizar a aplicação selecionada como pré-definida para este tipo de ficheiro - - - - EditBookmarksDialog - - - Edit Bookmarks - Editar marcadores - - - - Name - Nome - - - - Location - Localização - - - - &Add Item - &Adicionar item - - - - &Remove Item - &Remover item - - - - Use drag and drop to reorder the items - Arraste e largue para organizar itens - - - - ExecFileDialog - - - Execute file - Executar ficheiro - - - - &Open - &Abrir - - - - E&xecute - E&xecutar - - - - Execute in &Terminal - Executar no &terminal - - - - Cancel - Cancelar - - - - FileOperationDialog - - - Destination: - Destino: - - - - Processing: - Processamento: - - - - Preparing... - Preparação... - - - - Progress - Evolução - - - - Time remaining: - Tempo restante: - - - - FilePropsDialog - - - File Properties - Propriedades do ficheiro - - - - General - Geral - - - - Location: - Localização: - - - - File type: - Tipo de ficheiro: - - - - Mime type: - Tipo MIME: - - - - File size: - Tamanho do ficheiro: - - - - On-disk size: - Tamanho no disco: - - - - Last modified: - Última modificação: - - - - Link target: - Destino da ligação: - - - - Open With: - Abrir com: - - - - Last accessed: - Último acesso: - - - - Permissions - Pemissões - - - - Ownership - Propriedade - - - - - - Group: - Grupo: - - - - - - Owner: - Dono: - - - - Access Control - Controlo de acesso - - - - - Other: - Outro: - - - - Make the file executable - Marcar como executável - - - - - - Read - Leitura - - - - - - Write - Escrita - - - - - - Execute - Execução - - - - Sticky - Fixo - - - - SetUID - Definir UID - - - - SetGID - Definir GID - - - - Advanced Mode - Modo avançado - - - - Fm::AppChooserComboBox - - - Customize - Personalizar - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Selecione uma aplicação para abrir os ficheiros %1 - - - - Fm::CreateNewMenu - - - Folder - Pasta - - - - Blank File - Ficheiro vazio - - - - Fm::DirTreeModel - - - Loading... - A carregar... - - - - <No sub folders> - <Não existem subpastas> - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - Copiar para aqui - - - - Move here - Mover para aqui - - - - Create symlink here - Criar ligação simbólica aqui - - - - Cancel - Cancelar - - - - Fm::EditBookmarksDialog - - - New bookmark - Novo marcador - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - Parece que o ficheiro de texto %1 é um script executável. -O que pretende fazer com o ficheiro? - - - - This file '%1' is executable. Do you want to execute it? - O ficheiro %1 é um executável. Pretende executar o ficheiro? - - - - Fm::FileMenu - - - Open - Abrir - - - OpenWith - Abrir com - - - - Cut - Cortar - - - - Copy - Copiar - - - - Paste - Colar - - - - - &Move to Trash - &Mover para o lixo - - - - Output - Destino - - - - &Delete - &Eliminar - - - - Rename - Mudar nome - - - - Open With... - Abrir com... - - - - Other Applications - Outras aplicações - - - - Create &New - Criar &novo(a) - - - - &Restore - &Restaurar - - - - Extract to... - Extrair para... - - - - Extract Here - Extrair aqui - - - - Compress - Comprimir - - - - Properties - Propriedades - - - - Fm::FileOperation - - - Error - Erro - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Alguns ficheiros não podem ser movidos para o lixo porque o sistema de ficheiros não suporta esta operação. -Eliminar permanentemente? - - - - - Confirm - Confirmação - - - - Do you want to delete the selected files? - Quer mesmo eliminar o(s) ficheiro(s) selecionado(s)? - - - - Do you want to move the selected files to trash can? - Quer mesmo mover o(s) ficheiro(s) selecionado(s) para o lixo? - - - - Fm::FileOperationDialog - - - Move files - Mover ficheiros - - - - Moving the following files to destination folder: - A mover os ficheiros para a pasta de destino: - - - - Copy Files - Copiar ficheiros - - - - Copying the following files to destination folder: - A copiar os ficheiros para a pasta de destino: - - - - Trash Files - Destruir ficheiros - - - - Moving the following files to trash can: - A mover os ficheiros para o lixo: - - - - Delete Files - Eliminar ficheiros - - - - Deleting the following files - A eliminar estes ficheiros - - - - Create Symlinks - Criar ligações simbólicas - - - - Creating symlinks for the following files: - A criar ligações simbólicas a estes ficheiros: - - - - Change Attributes - Alterar atributos - - - - Changing attributes of the following files: - A alterar os atributos destes ficheiros: - - - - Restore Trashed Files - Restaurar ficheiros eliminados - - - - Restoring the following files from trash can: - Restaurar estes ficheiros do lixo: - - - - Error - Erro - - - - Fm::FilePropsDialog - - - View folder content - Ver conteúdo da pasta - - - - View and modify folder content - Ver e modificar conteúdo da pasta - - - - Read - Leitura - - - - Read and write - Leitura e escrita - - - - Forbidden - Proibido - - - - Files of different types - Ficheiros de outro tipo - - - - Multiple Files - Vários ficheiros - - - - Apply changes - Aplicar alterações - - - - Do you want to recursively apply these changes to all files and sub-folders? - Pretende aplicar as alterações a todos os ficheiros e subpastas? - - - - Fm::FileSearchDialog - - - Error - Erro - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - Criar &novo(a) - - - - &Paste - Co&lar - - - - Select &All - Selecion&ar tudo - - - - Invert Selection - Inverter seleção - - - - Sorting - Ordenação - - - - Show Hidden - Mostrar ocultos - - - - Folder Pr&operties - Pr&opriedades da pasta - - - Folder - Pasta - - - File - Ficheiro - - - Blank File - Ficheiro vazio - - - - By File Name - Por nome de ficheiro - - - - By Modification Time - Por data de modificação - - - - By File Size - Por tamanho de ficheiro - - - - By File Type - Por tipo de ficheiro - - - - By File Owner - Por dono de ficheiro - - - - Ascending - Ascendente - - - - Descending - Descendente - - - - Folder First - Pastas no início - - - - Case Sensitive - Diferenciar capitalização - - - - Fm::FolderModel - - - Name - Nome - - - - Type - Tipo - - - - Size - Tamanho - - - - Modified - Modificado - - - - Owner - Dono - - - - Fm::FontButton - - - Bold - Negrito - - - - Italic - Itálico - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Ligar - - - - Fm::PlacesModel - - - Places - Locais - - - - Desktop - Área de trabalho - - - - Trash - Lixo - - - - Computer - Computador - - - - Applications - Aplicações - - - - Network - Rede - - - - Devices - Dispositivos - - - - Bookmarks - Marcadores - - - - Fm::PlacesView - - - Empty Trash - Esvaziar lixo - - - Rename - Mudar nome - - - Delete - Eliminar - - - - Open in New Tab - - - - - Open in New Window - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - Desmontar - - - - Mount - Montar - - - - Eject - Ejetar - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Tipo: %1 -Tamanho: %2 -Modificado: %3 - - - - Type: %1 -Modified: %2 - Tipo: %1 -Modificado: %2 - - - - Type: %1 -Modified: %3 - Tipo: %1 -Modificado: %3 - - - - &Overwrite - &Substituir - - - - &Rename - &Mudar nome - - - - Fm::SidePane - - - - Places - Locais - - - - - Directory Tree - Árvore de diretórios - - - - Shows list of common places, devices, and bookmarks in sidebar - Mostra a lista de locais, dispositivos e marcadores na barra lateral - - - - Shows tree of directories in sidebar - Mostra a árvore de diretórios na barra lateral - - - - MountOperationPasswordDialog - - - Mount - Montar - - - - Connect &anonymously - Ligar &anonimamente - - - - Connect as u&ser: - Ligar com utili&zador: - - - - &Username: - Nome de &utilizador: - - - - &Password: - &Senha: - - - - &Domain: - &Domínio: - - - - Forget password &immediately - Esquecer senha &imediatamente - - - - Remember password until you &logout - Memorizar sen&ha até fechar a sessão - - - - Remember &forever - Memorizar &eternamente - - - - QObject - - - - - - Error - Erro - - - - Rename File - Mudar nome do ficheiro - - - - Please enter a new name: - Introduza o novo nome: - - - - Create Folder - - - - - Please enter a new file name: - Introduza o nome do ficheiro: - - - - New text file - Novo ficheiro de texto - - - - Please enter a new folder name: - Introduza o nome da pasta: - - - - New folder - Nova pasta - - - - Enter a name for the new %1: - Introduza o nome para %1: - - - - Create File - Criar ficheiro - - - - RenameDialog - - - Confirm to replace files - Confirmação de substituição - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Já existe um ficheiro com o mesmo nome nesta localização.</span></p><p>Pretende substituir o ficheiro existente</p></body></html> - - - - dest - destino - - - - with the following file? - por este? - - - - src file info - informações do ficheiro de origem - - - - dest file info - informações do ficheiro de destino - - - - src - origem - - - - &File name: - Nome do &ficheiro: - - - - Apply this option to all existing files - Aplicar opção a todos os ficheiros existentes - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - Propriedades - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/translations/libfm-qt_ru.ts b/src/translations/libfm-qt_ru.ts deleted file mode 100644 index b6a45d8..0000000 --- a/src/translations/libfm-qt_ru.ts +++ /dev/null @@ -1,1277 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - Выбрать приложение - - - - Installed Applications - Установленные приложения - - - - Custom Command - Своя команда - - - - Command line to execute: - Выполняемая командная строка: - - - - Application name: - Имя приложения: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>Эти спец. коды могут быть использованы в командной строке:</b> -<ul> -<li><b>%f</b>: Означает имя одного файла</li> -<li><b>%F</b>: Означает имена нескольких файлов</li> -<li><b>%u</b>: Означает один URI файла</li> -<li><b>%U</b>: Означает несколько URI файлов</li> -</ul> - - - - Keep terminal window open after command execution - Держать окно терминала открытым после выполнения команды - - - - Execute in terminal emulator - Запустить в эмуляторе терминала - - - - Set selected application as default action of this file type - Использовать выбранное приложение как действие по умолчанию для файлов этого типа - - - - EditBookmarksDialog - - - Edit Bookmarks - Изменить закладки - - - - Name - Имя - - - - Location - Расположение - - - - &Add Item - &Добавить элемент - - - - &Remove Item - &Удалить элемент - - - - Use drag and drop to reorder the items - Перетаскивайте элементы мышкой, чтобы изменить их порядок - - - - ExecFileDialog - - - Execute file - Выполнить файл - - - - &Open - &Открыть - - - - E&xecute - В&ыполнить - - - - Execute in &Terminal - Выполнить в &терминале - - - - Cancel - Отмена - - - - FileOperationDialog - - - Destination: - Назначение: - - - - Processing: - Обработка: - - - - Preparing... - Подготовка... - - - - Progress - Прогресс - - - - Time remaining: - Времени осталось: - - - - FilePropsDialog - - - File Properties - Свойства файла - - - - General - Общие - - - - Location: - Расположение: - - - - File type: - Тип файла: - - - - Mime type: - Тип Mime: - - - - File size: - Размер файла: - - - - On-disk size: - Размер на диске: - - - - Last modified: - Последнее изменение: - - - - Link target: - Цель ссылки: - - - - Open With: - Открыть с помощью: - - - - Last accessed: - Последний доступ: - - - - Permissions - Разрешения - - - - Ownership - Владение - - - - - - Group: - Группа: - - - - - - Owner: - Владелец: - - - - Access Control - Контроль доступа - - - - - Other: - Остальные: - - - - Make the file executable - Сделать файл исполняемым - - - - - - Read - Чтение - - - - - - Write - Запись - - - - - - Execute - Выполнение - - - - Sticky - - - - - SetUID - - - - - SetGID - - - - - Advanced Mode - Расширенный режим - - - - Fm::AppChooserComboBox - - - Customize - Настроить - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - Выберите приложение, чтобы открыть "%1" файлов - - - - Fm::CreateNewMenu - - - Folder - Папку - - - - Blank File - Пустой файл - - - - Fm::DirTreeModel - - - Loading... - Загрузка... - - - - <No sub folders> - <Нет подпапок> - - - - Fm::DirTreeView - - - Open in New T&ab - Открыть в новой вкл&адке - - - - Open in New Win&dow - Открыть в новом о&кне - - - - Open in Termina&l - Открыть в термина&ле - - - - Fm::DndActionMenu - - - Copy here - Копировать сюда - - - - Move here - Переместить сюда - - - - Create symlink here - Создать здесь ссылку - - - - Cancel - Отмена - - - - Fm::EditBookmarksDialog - - - New bookmark - Новая закладка - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - Этот текстовый файл '%1' похож на исполняемый скрипт. -Что вы хотите с ним сделать? - - - - This file '%1' is executable. Do you want to execute it? - Файл '%1' является исполняемым. Вы хотите запустить его? - - - - Fm::FileMenu - - - Open - Открыть - - - - Open With... - Открыть с помощью... - - - - Other Applications - Другие приложения - - - - Create &New - &Создать - - - - &Restore - &Восстановить - - - - Cut - Вырезать - - - - Copy - Копировать - - - - Paste - Вставить - - - - - &Move to Trash - &Переместить в корзину - - - - Rename - Переименовать - - - - Extract to... - Распаковать в... - - - - Extract Here - Распаковать здесь - - - - Compress - Сжать - - - - Properties - Свойства - - - - Output - Вывод - - - - &Delete - &Удалить - - - - Fm::FileOperation - - - Error - Ошибка - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - Некоторые файлы не могут быть помещены в корзину, поскольку файловая система не поддерживает эту операцию. -Вы хотите удалить их вместо перемещения? - - - - - Confirm - Подтвердить - - - - Do you want to delete the selected files? - Вы действительно хотите удалить выбранные файлы? - - - - Do you want to move the selected files to trash can? - Вы действительно хотите переместить выбранные файлы в корзину? - - - - Fm::FileOperationDialog - - - Move files - Перемещение файлов - - - - Moving the following files to destination folder: - Перемещение следующих файлов в папку назначения: - - - - Copy Files - Копирование файлов - - - - Copying the following files to destination folder: - Копирование следующих файлов в папку назначения: - - - - Trash Files - Перемещение файлов в корзину - - - - Moving the following files to trash can: - Перемещение следующих файлов в корзину: - - - - Delete Files - Удаление файлов - - - - Deleting the following files - Удаление следующих файлов - - - - Create Symlinks - Создание ссылок - - - - Creating symlinks for the following files: - Создание ссылок на следующие файлы: - - - - Change Attributes - Изменение атрибутов - - - - Changing attributes of the following files: - Изменение атрибутов следующих файлов: - - - - Restore Trashed Files - Восстановление файлов из корзины - - - - Restoring the following files from trash can: - Восстановление следующих файлов из корзины: - - - - Error - Ошибка - - - - Fm::FilePropsDialog - - - View folder content - Просмотр содержимого папки - - - - View and modify folder content - Просмотр и изменение содержимого папки - - - - Read - Чтение - - - - Read and write - Чтение и запись - - - - Forbidden - Запрещено - - - - Files of different types - Файлы разного типа - - - - Multiple Files - Несколько файлов - - - - Apply changes - Применить изменения - - - - Do you want to recursively apply these changes to all files and sub-folders? - Вы хотите применить изменения рекурсивно ко всем файлам и подпапкам? - - - - Fm::FileSearchDialog - - - Error - Ошибка - - - - You should add at least add one directory to search. - Вы должны добавить не менее одного места для поиска. - - - - Select a folder - Выберите папку - - - - Fm::FolderMenu - - - Create &New - &Создать - - - - &Paste - &Вставить - - - - Select &All - Выбрать &всё - - - - Invert Selection - Инвертировать выделение - - - - Sorting - Сортировка - - - - Show Hidden - Показать скрытые - - - - Folder Pr&operties - &Свойства папки - - - - By File Name - По имени - - - - By Modification Time - По времени изменения - - - - By File Size - По размеру - - - - By File Type - По типу - - - - By File Owner - По владельцу - - - - Ascending - Возрастающая - - - - Descending - Убывающая - - - - Folder First - Сначала папки - - - - Case Sensitive - Чувствительность к регистру - - - - Fm::FolderModel - - - Name - Имя - - - - Type - Тип - - - - Size - Размер - - - - Modified - Изменён - - - - Owner - Владелец - - - - Fm::FontButton - - - Bold - Жирный - - - - Italic - Курсив - - - - Fm::MountOperationPasswordDialog - - - &Connect - &Соединить - - - - Fm::PlacesModel - - - Places - Места - - - - Desktop - Рабочий стол - - - - Computer - Компьютер - - - - Applications - Приложения - - - - Network - Сеть - - - - Devices - Устройства - - - - Bookmarks - Закладки - - - - Trash - Корзина - - - - Fm::PlacesView - - - Empty Trash - Очистить корзину - - - - Open in New Tab - Открыть в новой вкладке - - - - Open in New Window - Открыть в новом окне - - - - Move Bookmark Up - Сдвинуть закладку вверх - - - - Move Bookmark Down - Сдвинуть закладку вниз - - - - Rename Bookmark - Переименовать закладку - - - - Remove Bookmark - Удалить закладку - - - - - Unmount - Отключить - - - - Mount - Подключить - - - - Eject - Извлечь - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - Тип: %1 -Размер: %2 -Изменён: %3 - - - - Type: %1 -Modified: %2 - Тип: %1 -Изменён: %2 - - - - Type: %1 -Modified: %3 - Тип: %1 -Изменён: %3 - - - - &Overwrite - &Перезаписать - - - - &Rename - &Переименовать - - - - Fm::SidePane - - - - Places - Места - - - - - Directory Tree - Дерево папок - - - - Shows list of common places, devices, and bookmarks in sidebar - Показывает список обычных мест, устройств и закладок в боковой панели - - - - Shows tree of directories in sidebar - Показывает дерево папок в боковой панели - - - - MountOperationPasswordDialog - - - Mount - Подключить - - - - Connect &anonymously - Подсоединить &анонимно - - - - Connect as u&ser: - Подсоединить как &пользователь: - - - - &Username: - &Имя пользователя: - - - - &Password: - &Пароль: - - - - &Domain: - &Домен: - - - - Forget password &immediately - Забыть пароль &сразу - - - - Remember password until you &logout - Запомнить пароль пока вы не &вышли - - - - Remember &forever - Запомнить &навсегда - - - - QObject - - - - - - Error - Ошибка - - - - Rename File - Переименовать файл - - - - Please enter a new name: - Введите новое имя: - - - - Create Folder - Создать папку - - - - Please enter a new file name: - Введите имя нового файла: - - - - New text file - Новый текстовый файл - - - - Please enter a new folder name: - Введите имя новой папки: - - - - New folder - Новая папка - - - - Enter a name for the new %1: - Введите имя для нового %1: - - - - Create File - Создать файл - - - - RenameDialog - - - Confirm to replace files - Подтвердить замену файлов - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">В этом месте назначения уже есть файл с таким именем.</span></p><p>Вы хотите заменить существующий файл?</p></body></html> - - - - dest - - - - - with the following file? - следующим файлом? - - - - src file info - - - - - dest file info - - - - - src - - - - - &File name: - &Имя файла: - - - - Apply this option to all existing files - Запомнить выбор для всех уже существующих файлов - - - - SearchDialog - - - Search Files - Искать файлы - - - - Name/Location - Имя/Расположение - - - - File Name Patterns: - Шаблоны имени файла: - - - - * - - - - - Case insensitive - Нечувствительный к регистру поиск - - - - Use regular expression - Использовать регулярные выражения - - - - Places to Search: - Места для поиска: - - - - &Add - &Добавить - - - - &Remove - &Удалить - - - - Search in sub directories - Искать в подпапках - - - - Search for hidden files - Искать скрытые файлы - - - - File Type - Тип файла - - - - Only search for files of following types: - Искать файлы только следующих типов: - - - - Text files - Текстовые файлы - - - - Image files - Изображения - - - - Audio files - Аудиофайлы - - - - Video files - Видеофайлы - - - - Documents - Документы - - - - Folders - Папки - - - - Content - Содержание - - - - File contains: - Файл содержит: - - - - Case insensiti&ve - Нечувствительн&ый к регистру поиск - - - - &Use regular expression - &Использовать регулярные выражения - - - - Properties - Свойства - - - - File Size: - Размер файла: - - - - Larger than: - Больше, чем: - - - - - Bytes - Байт - - - - - KiB - КиБ - - - - - MiB - МиБ - - - - - GiB - ГиБ - - - - Smaller than: - Меньше, чем: - - - - Last Modified Time: - Время последнего изменения: - - - - Earlier than: - Раньше, чем: - - - - Later than: - Позже, чем: - - - diff --git a/src/translations/libfm-qt_zh_TW.ts b/src/translations/libfm-qt_zh_TW.ts deleted file mode 100644 index 26deb47..0000000 --- a/src/translations/libfm-qt_zh_TW.ts +++ /dev/null @@ -1,1305 +0,0 @@ - - - - - AppChooserDialog - - - Choose an Application - 選擇一個應用程式 - - - - Installed Applications - 安裝的應用程式 - - - - Custom Command - 自訂指令 - - - - Command line to execute: - 要執行的命令列: - - - - Application name: - 應用程式名稱: - - - - <b>These special codes can be used in the command line:</b> -<ul> -<li><b>%f</b>: Represents a single file name</li> -<li><b>%F</b>: Represents multiple file names</li> -<li><b>%u</b>: Represents a single URI of the file</li> -<li><b>%U</b>: Represents multiple URIs</li> -</ul> - <b>這些特殊代號可以在指令列參數使用:</b> -<ul> -<li><b>%f</b>:代表單一檔案名稱</li> -<li><b>%F</b>:代表多個檔案名稱</li> -<li><b>%u</b>:代表單一檔案 URI</li> -<li><b>%U</b>:代表多個 URI</li> -</ul> - - - - Keep terminal window open after command execution - 執行指令後保持終端機視窗開啟 - - - - Execute in terminal emulator - 在終端機模擬器執行 - - - - Set selected application as default action of this file type - 將所選應用程式設定為此類型檔案的預設處理程式 - - - - EditBookmarksDialog - - - Edit Bookmarks - 編輯書籤 - - - - Name - 名稱 - - - - Location - 位置 - - - - &Add Item - 新增項目(&A) - - - - &Remove Item - 移除項目(&R) - - - - Use drag and drop to reorder the items - 使用拖放重新排序項目 - - - - ExecFileDialog - - - Execute file - 執行檔案 - - - - &Open - 開啟(&) - - - - E&xecute - 執行(&X) - - - - Execute in &Terminal - 在終端機內執行(&T) - - - - Cancel - 取消 - - - - FileOperationDialog - - - Destination: - 目的地: - - - - Processing: - 正在處理: - - - - Preparing... - 準備中... - - - - Progress - 進度 - - - - Time remaining: - 剩餘時間: - - - - FilePropsDialog - - - File Properties - 檔案屬性 - - - - General - 一般 - - - - Location: - 位置: - - - - File type: - 檔案類型: - - - - Mime type: - Mime 類型: - - - - File size: - 檔案大小: - - - - On-disk size: - 磁碟上大小: - - - - Last modified: - 最後修改: - - - - Link target: - 連結目標: - - - - Open With: - 開啟: - - - - Last accessed: - 最後存取: - - - - Permissions - 權限 - - - - Ownership - 所有權 - - - - - - Group: - 群組: - - - - - - Owner: - 擁有者: - - - - Access Control - 存取控制 - - - - - Other: - 其他: - - - - Make the file executable - 使檔案可執行 - - - - - - Read - 讀取 - - - - - - Write - 寫入 - - - - - - Execute - 執行 - - - - Sticky - - - - - SetUID - - - - - SetGID - - - - - Advanced Mode - 進階模式 - - - - Fm::AppChooserComboBox - - - Customize - 自訂 - - - - Fm::AppChooserDialog - - - Select an application to open "%1" files - 選取用來開啟「%1」檔案的應用程式 - - - - Fm::CreateNewMenu - - - Folder - 資料夾 - - - - Blank File - 空白檔案 - - - - Fm::DirTreeModel - - - Loading... - 載入中... - - - - <No sub folders> - <沒有子資料夾> - - - - Fm::DirTreeView - - - Open in New T&ab - - - - - Open in New Win&dow - - - - - Open in Termina&l - - - - - Fm::DndActionMenu - - - Copy here - 複製到這裡 - - - - Move here - 移動到這裡 - - - - Create symlink here - 建立符號連結到這裡 - - - - Cancel - 取消 - - - - Fm::EditBookmarksDialog - - - New bookmark - 新書籤 - - - - Fm::ExecFileDialog - - - This text file '%1' seems to be an executable script. -What do you want to do with it? - 這個文字檔 '%1' 似乎是可執行的 script。 -想要進行什麼操作? - - - - This file '%1' is executable. Do you want to execute it? - 這個檔案 '%1' 是可執行檔,是否想要執行? - - - - Fm::FileMenu - - - Open - 開啟 - - - OpenWith - 用其他程式開啟 - - - - Open With... - 用其他程式開啟... - - - - Other Applications - 其他應用程式 - - - - Create &New - 新建(&N) - - - - &Restore - 恢復(&R) - - - - Cut - 剪下 - - - - Copy - 複製 - - - - Paste - 貼上 - - - - - &Move to Trash - 移動到垃圾桶(&M) - - - - Output - 輸出 - - - - &Delete - 刪除(&D) - - - Delete - 刪除 - - - - Rename - 重新命名 - - - - Extract to... - 解壓縮到... - - - - Extract Here - 在此解壓縮 - - - - Compress - 壓縮 - - - - Properties - 屬性 - - - - Fm::FileOperation - - - Error - 錯誤 - - - - Some files cannot be moved to trash can because the underlying file systems don't support this operation. -Do you want to delete them instead? - 因為檔案系統不支援,有些檔案無法丟到垃圾桶 -是否直接刪除這些檔案? - - - - - Confirm - 確認 - - - - Do you want to delete the selected files? - 你確定要刪除選取的檔案嗎? - - - - Do you want to move the selected files to trash can? - 你確定要把選取的檔案移到垃圾桶嗎? - - - - Fm::FileOperationDialog - - - Move files - 移動檔案 - - - - Moving the following files to destination folder: - 正在移動下列檔案到目的資料夾: - - - - Copy Files - 複製檔案 - - - - Copying the following files to destination folder: - 正在複製下列檔案到目的資料夾: - - - - Trash Files - 將檔案丟到垃圾桶 - - - - Moving the following files to trash can: - 正在將下列檔案移動到垃圾桶: - - - - Delete Files - 刪除檔案 - - - - Deleting the following files - 正在刪除下列檔案 - - - - Create Symlinks - 建立符號連結 - - - - Creating symlinks for the following files: - 正在建立下列檔案的符號連結: - - - - Change Attributes - 改變屬性 - - - - Changing attributes of the following files: - 正在更改下列檔案的屬性: - - - - Restore Trashed Files - 恢復被刪除的檔案 - - - - Restoring the following files from trash can: - 正在恢復下列被刪除的檔案 - - - - Error - 錯誤 - - - - Fm::FilePropsDialog - - - View folder content - 檢視資料夾內容 - - - - View and modify folder content - 檢視及修改資料夾內容 - - - - Read - 讀取 - - - - Read and write - 讀取及寫入 - - - - Forbidden - 禁止 - - - - Files of different types - 不同類型的檔案 - - - - Multiple Files - 多個檔案 - - - - Apply changes - 套用變更 - - - - Do you want to recursively apply these changes to all files and sub-folders? - 你是否想將這些變更套用到所有子資料夾和其內的檔案? - - - - Fm::FileSearchDialog - - - Error - 錯誤 - - - - You should add at least add one directory to search. - - - - - Select a folder - - - - - Fm::FolderMenu - - - Create &New - 新建(&N) - - - - &Paste - 貼上(&P) - - - - Select &All - 全選(&A) - - - - Invert Selection - 反向選取 - - - - Sorting - 排序 - - - - Show Hidden - 顯示隱藏檔 - - - - Folder Pr&operties - 資料夾屬性(&O) - - - Folder - 資料夾 - - - File - 檔案 - - - Blank File - 空白檔案 - - - - By File Name - 依照檔名 - - - - By Modification Time - 依照修改時間 - - - - By File Size - 依照檔案大小 - - - - By File Type - 依照檔案型態 - - - - By File Owner - 依照檔案所有者 - - - - Ascending - 升冪排列 - - - - Descending - 降冪排列 - - - - Folder First - 資料夾優先 - - - - Case Sensitive - 區分大小寫 - - - - Fm::FolderModel - - - Name - 名稱 - - - - Type - 類型 - - - - Size - 大小 - - - - Modified - 修改 - - - - Owner - 所有者 - - - - Fm::FontButton - - - Bold - 粗體 - - - - Italic - 斜體 - - - - Fm::MountOperationPasswordDialog - - - &Connect - 連接(&C) - - - - Fm::PlacesModel - - - Places - 位置 - - - - Desktop - 桌面 - - - - Trash - 垃圾桶 - - - - Computer - 電腦 - - - - Applications - 應用程式 - - - - Network - 網路 - - - - Devices - 裝置 - - - - Bookmarks - 書籤 - - - - Fm::PlacesView - - - Empty Trash - 清空垃圾桶 - - - Rename - 重新命名 - - - Delete - 刪除 - - - - Open in New Tab - - - - - Open in New Window - - - - - Move Bookmark Up - - - - - Move Bookmark Down - - - - - Rename Bookmark - - - - - Remove Bookmark - - - - - - Unmount - 卸載 - - - - Mount - 掛載 - - - - Eject - 退出 - - - - Fm::RenameDialog - - - - Type: %1 -Size: %2 -Modified: %3 - 類型: %1 -大小: %2 -最後修改: %3 - - - - Type: %1 -Modified: %2 - 類型: %1 -最後修改: %2 - - - - Type: %1 -Modified: %3 - 類型: %1 -最後修改: %3 - - - - &Overwrite - 覆蓋(&O) - - - - &Rename - 重新命名(&R) - - - - Fm::SidePane - - - - Places - 位置 - - - - - Directory Tree - 目錄樹 - - - - Shows list of common places, devices, and bookmarks in sidebar - - - - - Shows tree of directories in sidebar - - - - - MountOperationPasswordDialog - - - Mount - 掛載 - - - - Connect &anonymously - 匿名連線(&A) - - - - Connect as u&ser: - 以使用者帳號連線(&S): - - - - &Username: - 使用者名稱(&U): - - - - &Password: - 密碼(&P): - - - - &Domain: - - - - - Forget password &immediately - 立刻忘記密碼(&I) - - - - Remember password until you &logout - 記住密碼直到登出(&L) - - - - Remember &forever - 永遠記住密碼(&F) - - - - QObject - - - - - - Error - 錯誤 - - - - Rename File - 重新命名 - - - - Please enter a new name: - 請輸入一個新名稱: - - - - Create Folder - - - - - Please enter a new file name: - 請輸入一個新檔名: - - - - Please enter a new folder name: - 請輸入一個新資料夾名稱: - - - - New folder - 新資料夾 - - - - New text file - 新文字檔 - - - - Enter a name for the new %1: - 幫新的 %1 輸入一個名稱: - - - - Create File - 建立檔案 - - - - RenameDialog - - - Confirm to replace files - 確認取代檔案 - - - - <html><head/><body><p><span style=" font-weight:600;">There is already a file with the same name in this location.</span></p><p>Do you want to replace the existing file?</p></body></html> - - - - - dest - - - - - with the following file? - - - - - src file info - - - - - dest file info - - - - - src - - - - - &File name: - 檔名(&F): - - - - Apply this option to all existing files - 套用這個選項到所有已存在的檔案 - - - - SearchDialog - - - Search Files - - - - - Name/Location - - - - - File Name Patterns: - - - - - * - - - - - Case insensitive - - - - - Use regular expression - - - - - Places to Search: - - - - - &Add - - - - - &Remove - - - - - Search in sub directories - - - - - Search for hidden files - - - - - File Type - - - - - Only search for files of following types: - - - - - Text files - - - - - Image files - - - - - Audio files - - - - - Video files - - - - - Documents - - - - - Folders - - - - - Content - - - - - File contains: - - - - - Case insensiti&ve - - - - - &Use regular expression - - - - - Properties - 屬性 - - - - File Size: - - - - - Larger than: - - - - - - Bytes - - - - - - KiB - - - - - - MiB - - - - - - GiB - - - - - Smaller than: - - - - - Last Modified Time: - - - - - Earlier than: - - - - - Later than: - - - - diff --git a/src/utilities.cpp b/src/utilities.cpp index 8823d60..57cb451 100644 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -93,7 +93,7 @@ void copyFilesToClipboard(FmPathList* files) { QMimeData* data = new QMimeData(); char* urilist = fm_path_list_to_uri_list(files); // Gnome, LXDE, and XFCE - data->setData("x-special/gnome-copied-files", (QString("copy\n") + urilist).toUtf8()); + data->setData("x-special/gnome-copied-files", QByteArray("copy\n") + QByteArray(urilist)); // The KDE way data->setData("text/uri-list", urilist); // data.setData("x-kde-cut-selection", "0"); @@ -106,7 +106,7 @@ void cutFilesToClipboard(FmPathList* files) { QMimeData* data = new QMimeData(); char* urilist = fm_path_list_to_uri_list(files); // Gnome, LXDE, and XFCE - data->setData("x-special/gnome-copied-files", (QString("cut\n") + urilist).toUtf8()); + data->setData("x-special/gnome-copied-files", QByteArray("cut\n") + QByteArray(urilist)); // The KDE way data->setData("text/uri-list", urilist); data->setData("x-kde-cut-selection", "1"); diff --git a/src/path.cpp b/src/utils.h similarity index 73% rename from src/path.cpp rename to src/utils.h index 5af020f..109146d 100644 --- a/src/path.cpp +++ b/src/utils.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 - 2015 Hong Jen Yee (PCMan) + * Copyright (C) 2016 Hong Jen Yee (PCMan) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,6 +17,19 @@ * */ -#include "path.h" +#ifndef __LIBFM_QT_FM_UTILS_H__ +#define __LIBFM_QT_FM_UTILS_H__ -using namespace Fm; +#include +#include +#include +#include "libfmqtglobals.h" + + +namespace Fm { + + + +} + +#endif // __LIBFM_QT_FM_UTILS_H__ diff --git a/src/xdndworkaround.cpp b/src/xdndworkaround.cpp index b7b73a8..ef8238e 100644 --- a/src/xdndworkaround.cpp +++ b/src/xdndworkaround.cpp @@ -84,7 +84,6 @@ XdndWorkaround::~XdndWorkaround() { bool XdndWorkaround::nativeEventFilter(const QByteArray & eventType, void * message, long * result) { if(Q_LIKELY(eventType == "xcb_generic_event_t")) { xcb_generic_event_t* event = static_cast(message); - uint8_t response_type = event->response_type & uint8_t(~0x80); switch(event->response_type & ~0x80) { case XCB_CLIENT_MESSAGE: return clientMessage(reinterpret_cast(event)); @@ -163,12 +162,11 @@ QByteArray XdndWorkaround::windowProperty(xcb_window_t window, xcb_atom_t propAt // static void XdndWorkaround::setWindowProperty(xcb_window_t window, xcb_atom_t propAtom, xcb_atom_t typeAtom, void* data, int len, int format) { xcb_connection_t* conn = QX11Info::connection(); - xcb_void_cookie_t cookie = xcb_change_property(conn, XCB_PROP_MODE_REPLACE, window, propAtom, typeAtom, format, len, data); + xcb_change_property(conn, XCB_PROP_MODE_REPLACE, window, propAtom, typeAtom, format, len, data); } bool XdndWorkaround::clientMessage(xcb_client_message_event_t* event) { - xcb_connection_t* conn = QX11Info::connection(); QByteArray event_type = atomName(event->type); // qDebug() << "client message:" << event_type;