pax_global_header00006660000000000000000000000064126312460660014520gustar00rootroot0000000000000052 comment=a7533049f24bc02933ce00f61d123a069b51553a pcmanfm-qt-0.10.1/000077500000000000000000000000001263124606600136425ustar00rootroot00000000000000pcmanfm-qt-0.10.1/.gitignore000066400000000000000000000000161263124606600156270ustar00rootroot00000000000000build *.kdev4 pcmanfm-qt-0.10.1/AUTHORS000066400000000000000000000002211263124606600147050ustar00rootroot00000000000000Upstream Authors: LXQt team: http://lxqt.org Hong Jen Yee (PCMan) Copyright: Copyright (c) 2013-2015 LXQt team pcmanfm-qt-0.10.1/CMakeLists.txt000066400000000000000000000074061263124606600164110ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.0.2) project(pcmanfm-qt) # CMP0063: Honor visibility properties for all target types. if (POLICY CMP0063) cmake_policy (SET CMP0063 NEW) endif (POLICY CMP0063) set(PCMANFM_QT_VERSION_MAJOR 0) set(PCMANFM_QT_VERSION_MINOR 10) set(PCMANFM_QT_VERSION_PATCH 0) set(PCMANFM_QT_VERSION ${PCMANFM_QT_VERSION_MAJOR}.${PCMANFM_QT_VERSION_MINOR}.${PCMANFM_QT_VERSION_PATCH}) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") find_package(Qt5Widgets 5.2 REQUIRED) find_package(Qt5DBus 5.2 REQUIRED) find_package(Qt5LinguistTools 5.2 REQUIRED) find_package(Qt5X11Extras 5.2 REQUIRED) find_package(fm-qt REQUIRED) find_package(PkgConfig REQUIRED) pkg_check_modules(LIB_XCB REQUIRED xcb) option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) include(GNUInstallDirs) include(LXQtTranslateTs) include(LXQtTranslateDesktop) # set visibility to hidden to hide symbols, unless they're exported manually in the code 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 visibility to hidden to hide symbols, unless they're exported manually in the code set(CMAKE_CXX_FLAGS "-fno-exceptions ${CMAKE_CXX_FLAGS}") endif() set(CMAKE_AUTOMOC TRUE) set(CMAKE_INCLUDE_CURRENT_DIR ON) add_subdirectory(pcmanfm) # manpage for pcmanfm-qt configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/pcmanfm-qt.1.in" "${CMAKE_CURRENT_BINARY_DIR}/pcmanfm-qt.1" @ONLY ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcmanfm-qt.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" ) # add Doxygen support to generate API docs # References: # http://majewsky.wordpress.com/2010/08/14/tip-of-the-day-cmake-and-doxygen/ # http://www.bluequartz.net/projects/EIM_Segmentation/SoftwareDocumentation/html/usewithcmakeproject.html option(BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" OFF) if(BUILD_DOCUMENTATION) find_package(Doxygen REQUIRED) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in" "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile" @ONLY) add_custom_target(doc ALL ${DOXYGEN_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" COMMENT "Generating API documentation with Doxygen" VERBATIM ) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/docs" DESTINATION "${CMAKE_INSTALL_DOCDIR}") endif() # building tarball with CPack ------------------------------------------------- # To create a source distribution, type: # make package_source include(InstallRequiredSystemLibraries) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") set(CPACK_PACKAGE_VENDOR "") set(CPACK_PACKAGE_VERSION_MAJOR ${PCMANFM_QT_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${PCMANFM_QT_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${PCMANFM_QT_VERSION_PATCH}) set(CPACK_GENERATOR TBZ2) set(CPACK_SOURCE_GENERATOR TBZ2) set(CPACK_SOURCE_IGNORE_FILES /build/;.gitignore;.*~;.git;.kdev4;temp) include(CPack) pcmanfm-qt-0.10.1/Doxyfile.in000066400000000000000000002323121263124606600157600ustar00rootroot00000000000000# Doxyfile 1.8.4 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed # in front of the TAG it is preceding . # All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG + = value [value, ...] # Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or sequence of words) that should # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. PROJECT_NAME = "PCManFM-Qt" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = @PROJECT_BINARY_DIR@/docs # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, # Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, # Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. Note that you specify absolute paths here, but also # relative paths, which will be relative from the directory where doxygen is # started. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name = value". # For example adding "sideeffect = \par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name = value". For example adding # "class = itcl::class" will allow you to use the command class in the # itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext = language, where ext is a file extension, # and language is one of the parsers supported by doxygen: IDL, Java, # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, # C++. For instance to make doxygen treat .inc files as Fortran files (default # is PHP), and .f files as C (default is Fortran), use: inc = Fortran f = C. Note # that for custom extensions you also need to set FILE_PATTERNS otherwise the # files are not read by doxygen. EXTENSION_MAPPING = # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all # comments according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you # can mix doxygen, HTML, and XML commands with Markdown formatting. # Disable only in case of backward compatibilities issues. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by by putting a % sign in front of the word # or globally by setting AUTOLINK_SUPPORT to NO. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES (the # default) will make doxygen replace the get and set methods by a property in # the documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and # unions are shown inside the group in which they are included (e.g. using # @ingroup) instead of on a separate page (for HTML and Man pages) or # section (for LaTeX and RTF). INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and # unions with only public data fields or simple typedef fields will be shown # inline in the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO (the default), structs, classes, and unions are shown on a separate # page (for HTML and Man pages) or section (for LaTeX and RTF). INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can # be an expensive process and often the same symbol appear multiple times in # the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too # small doxygen will become slower. If the cache is too large, memory is wasted. # The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid # range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 # symbols. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal # scope will be included in the documentation. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to # do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even # if there is only one candidate or it is obvious which candidate to choose # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST = YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if section-label ... \endif # and \cond section-label ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The # .bib extension is automatically appended if omitted. Using this command # requires the bibtex tool to be installed. See also # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this # feature you need bibtex and perl available in the search path. Do not use # file names with spaces, bibtex cannot handle them. CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = "@PROJECT_SOURCE_DIR@/libfm-qt" "@PROJECT_SOURCE_DIR@/pcmanfm" # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = */*_p.h # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = FakeTr _* LibFmQtData # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be ignored. # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern = filter (like *.cpp = my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty or if # non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext = (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = # If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C, C++ and Fortran comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. Note that when using a custom header you are responsible # for the proper inclusion of any scripts and style sheets that doxygen # needs, which is dependent on the configuration options used. # It is advised to generate a default header using "doxygen -w html # header.html footer.html stylesheet.css YourConfigFile" and then modify # that header. Note that the header is subject to change so you typically # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If left blank doxygen will # generate a default style sheet. Note that it is recommended to use # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this # tag will in the future become obsolete. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional # user-defined cascading style sheet that is included after the standard # style sheets created by doxygen. Using this option one can overrule # certain style aspects. This is preferred over using HTML_STYLESHEET # since it does not replace the standard style sheet and is therefor more # robust against future updates. Doxygen will copy the style sheet file to # the output directory. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that # the files will be copied as-is; there are no commands or markers available. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the style sheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of # entries shown in the various tree structured indices initially; the user # can expand and collapse entries dynamically later on. Doxygen will expand # the tree to such a level that at most the specified number of entries are # visible (unless a fully collapsed tree already exceeds this amount). # So setting the number of entries 1 will produce a full collapsed tree by # default. 0 is a special value representing an infinite number of entries # and will result in a full expanded tree by default. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely # identify the documentation publisher. This should be a reverse domain-name # style string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) # at top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. Since the tabs have the same information as the # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to YES, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML # documentation. Note that a value of 0 will completely suppress the enum # values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you may also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and # SVG. The default value is HTML-CSS, which is slower, but has the best # compatibility. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to # the MathJax Content Delivery Network so you can quickly see the result without # installing MathJax. # However, it is strongly recommended to install a local # copy of MathJax from http://www.mathjax.org before deployment. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension # names that should be enabled during MathJax rendering. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript # pieces of code that will be used on startup of the MathJax code. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using Javascript. # There are two flavours of web server based search depending on the # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for # searching and an index file used by the script. When EXTERNAL_SEARCH is # enabled the indexing and searching needs to be provided by external tools. # See the manual for details. SERVER_BASED_SEARCH = NO # When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain # the search results. Doxygen ships with an example indexer (doxyindexer) and # search engine (doxysearch.cgi) which are based on the open source search # engine library Xapian. See the manual for configuration details. EXTERNAL_SEARCH = NO # The SEARCHENGINE_URL should point to a search engine hosted by a web server # which will returned the search results when EXTERNAL_SEARCH is enabled. # Doxygen ships with an example search engine (doxysearch) which is based on # the open source search engine library Xapian. See the manual for configuration # details. SEARCHENGINE_URL = # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed # search data is written to a file for indexing by an external tool. With the # SEARCHDATA_FILE tag the name of this file can be specified. SEARCHDATA_FILE = searchdata.xml # When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple # projects and redirect the results back to the right project. EXTERNAL_SEARCH_ID = # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id # of to a relative location where the documentation can be found. # The format is: EXTRA_SEARCH_MAPPINGS = id1 = loc1 id2 = loc2 ... EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4 will be used. PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for # the generated latex document. The footer should contain everything after # the last chapter. If it is left blank doxygen will generate a # standard footer. Notice: only use this tag if you know what you are doing! LATEX_FOOTER = # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images # or other source files which should be copied to the LaTeX output directory. # Note that the files will be copied as-is; there are no commands or markers # available. LATEX_EXTRA_FILES = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See # http://en.wikipedia.org/wiki/BibTeX for more info. LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- # If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files # that can be used to generate PDF. GENERATE_DOCBOOK = NO # The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be put in # front of it. If left blank docbook will be used as the default path. DOCBOOK_OUTPUT = docbook #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name = definition (no spaces). If the definition and the = are # omitted = 1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the : = operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition that # overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. For each # tag file the location of the external documentation should be added. The # format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1 = loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths # or URLs. Note that each tag file must have a unique name (where the name does # NOT include the path). If a tag file is not located in the directory in which # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # If the EXTERNAL_PAGES tag is set to YES all external pages will be listed # in the related pages index. If set to NO, only the current project's # pages will be listed. EXTERNAL_PAGES = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will use the Helvetica font for all dot files that # doxygen generates. When you want a differently looking font you can specify # the font name using DOT_FONTNAME. You need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by setting # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the # directory containing the font. DOT_FONTNAME = Helvetica # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the Helvetica font. # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to # set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If the UML_LOOK tag is enabled, the fields and methods are shown inside # the class node. If there are many fields or methods and many nodes the # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS # threshold limits the number of items for each type to make the size more # manageable. Set this to 0 for no limit. Note that the threshold may be # exceeded by 50% before the limit is enforced. UML_LIMIT_NUM_FIELDS = 10 # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are svg, png, jpg, or gif. # If left blank png will be used. If you choose svg you need to set # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. # Note that this requires a modern browser other than Internet Explorer. # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible. Older versions of IE do not have SVG support. INTERACTIVE_SVG = NO # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = YES # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES pcmanfm-qt-0.10.1/LICENSE000066400000000000000000000355641263124606600146640ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS pcmanfm-qt-0.10.1/README.md000066400000000000000000000007441263124606600151260ustar00rootroot00000000000000# PCManFM-Qt The Qt port of the LXDE file manager PCManFM. Includes libfm-qt, the Qt port of the libfm - a library providing components to build desktop file managers. Issue tracker: https://github.com/lxde/pcmanfm-qt/issues LXQt website: http://lxqt.org LXDE website: http://lxde.org # License PCManFM is licensed under the terms of the [GPLv2](https://www.gnu.org/licenses/gpl-2.0.en.html) or any later version. See the LICENSE file for the full text of the license. pcmanfm-qt-0.10.1/cmake/000077500000000000000000000000001263124606600147225ustar00rootroot00000000000000pcmanfm-qt-0.10.1/cmake/LXQtTranslateDesktop.cmake000066400000000000000000000075561263124606600220010ustar00rootroot00000000000000#============================================================================= # 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) pcmanfm-qt-0.10.1/cmake/LXQtTranslateTs.cmake000066400000000000000000000115751263124606600207520ustar00rootroot00000000000000#============================================================================= # 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() pcmanfm-qt-0.10.1/cmake/Qt5PatchedLinguistToolsMacros.cmake000066400000000000000000000111721263124606600235750ustar00rootroot00000000000000#============================================================================= # 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() pcmanfm-qt-0.10.1/pcmanfm-qt.1.in000066400000000000000000000027051263124606600164000ustar00rootroot00000000000000.TH PCManFM-Qt "1" "September 2014" "@CMAKE_PROJECT_NAME@ @PCMANFM_QT_VERSION@" "User Commands" .SH NAME PCManFM-Qt \- A lightweight Qt-based file manager for X Window. .SH SYNOPSIS pcmanfm\-qt [OPTION...] [FILE1, FILE2,...] .SH DESCRIPTION PCMan File Manager Qt (\fBPCManFM-Qt\fP) is an extremely fast, lightweight, yet feature-rich file manager with tabbed browsing. It is the default file manager for the lightweight desktop environment \fBLXQt\fP. .SH OPTIONS .SS "Help Options:" .TP \fB\-h\fR, \fB\-\-help\fR Show help options .SS "Application Options:" .TP \fB\-p\fR, \fB\-\-profile\fR=\fI\,PROFILE\/\fR Set name of configuration profile .TP \fB\-d\fR, \fB\-\-daemon\-mode\fR Run PCManFM as a daemon .TP \fB\-\-quit\fR Quit PCManFM .TP \fB\-\-desktop\fR Launch desktop manager .TP \fB\-\-desktop\-off\fR Turn off desktop manager if it's running .TP \fB\-\-desktop\-pref\fR=\fI\,NAME\/\fR Open desktop preference dialog on the page with the specified name .TP \fB\-w\fR, \fB\-\-set\-wallpaper\fR=\fI\,FILE\/\fR Set desktop wallpaper from image FILE .TP \fB\-\-wallpaper\-mode\fR=\fI\,MODE\/\fR Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) .TP \fB\-\-show\-pref\fR=\fI\,NAME\/\fR Open Preferences dialog on the page with the specified name .TP \fB\-n\fR, \fB\-\-new\-window\fR Open new window .TP \fB\-f\fR, \fB\-\-find\-files\fR Open Find Files utility .SH "AUTHORS" .B pcmanfm-qt was primarily written by Hong Jen Yee (PCMan) . pcmanfm-qt-0.10.1/pcmanfm/000077500000000000000000000000001263124606600152635ustar00rootroot00000000000000pcmanfm-qt-0.10.1/pcmanfm/CMakeLists.txt000066400000000000000000000036071263124606600200310ustar00rootroot00000000000000set(pcmanfm_SRCS application.cpp pcmanfm.cpp mainwindow.cpp tabpage.cpp tabbar.cpp view.cpp launcher.cpp preferencesdialog.cpp xdgdir.cpp desktoppreferencesdialog.cpp desktopwindow.cpp desktopitemdelegate.cpp autorundialog.cpp settings.cpp ) qt5_add_dbus_adaptor(pcmanfm_SRCS org.pcmanfm.Application.xml application.h PCManFM::Application applicationadaptor ApplicationAdaptor ) set(pcmanfm_UIS main-win.ui about.ui preferences.ui desktop-preferences.ui desktop-folder.ui autorun.ui ) qt5_wrap_ui(pcmanfm_UIS_H ${pcmanfm_UIS}) # add translation for pcmanfm-qt lxqt_translate_ts(QM_FILES UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS} SOURCES ${pcmanfm_SRCS} ${pcmanfm_UIS} ) # translate desktop entry files for pcmanfm-qt and desktop preferences lxqt_translate_desktop(DESKTOP_FILES SOURCES pcmanfm-qt.desktop.in pcmanfm-qt-desktop-pref.desktop.in ) add_executable(pcmanfm-qt ${pcmanfm_SRCS} ${pcmanfm_UIS_H} ${QM_FILES} ${DESKTOP_FILES} ) set_property( TARGET pcmanfm-qt APPEND PROPERTY COMPILE_DEFINITIONS PCMANFM_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/pcmanfm-qt" PCMANFM_QT_VERSION="${PCMANFM_QT_VERSION}" ) target_include_directories(pcmanfm-qt PRIVATE "${LIB_XCB_INDLUDE_DIRS}" ) target_link_libraries(pcmanfm-qt Qt5::X11Extras Qt5::Widgets Qt5::DBus fm-qt "${LIB_XCB_LIBRARIES}" ) install(TARGETS pcmanfm-qt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) # install a desktop entry file for pcmanfm-qt and desktop preferences install(FILES ${DESKTOP_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" ) install(FILES ${QM_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/pcmanfm-qt/translations") # prevent the generated files from being deleted during make clean set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true) pcmanfm-qt-0.10.1/pcmanfm/about.ui000066400000000000000000000120361263124606600167360ustar00rootroot00000000000000 AboutDialog 0 0 430 325 About <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Qt::RichText Qt::AlignCenter Qt::AlignCenter Lightweight file manager Qt::AlignCenter <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Qt::RichText Qt::AlignCenter 0 false Authors true Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> false License true PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Qt::Horizontal QDialogButtonBox::Close buttonBox accepted() AboutDialog accept() 248 254 157 274 buttonBox rejected() AboutDialog reject() 316 260 286 274 pcmanfm-qt-0.10.1/pcmanfm/application.cpp000066400000000000000000000723701263124606600203030ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "application.h" #include "mainwindow.h" #include "desktopwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "applicationadaptor.h" #include "preferencesdialog.h" #include "desktoppreferencesdialog.h" #include #include "autorundialog.h" #include "launcher.h" #include #include #include #include #include "xdgdir.h" #include namespace PCManFM { static const char* serviceName = "org.pcmanfm.PCManFM"; static const char* ifaceName = "org.pcmanfm.Application"; int ProxyStyle::styleHint(StyleHint hint, const QStyleOption* option, const QWidget* widget, QStyleHintReturn* returnData) const { Application* app = static_cast(qApp); if(hint == QStyle::SH_ItemView_ActivateItemOnSingleClick) return app->settings().singleClick(); return QProxyStyle::styleHint(hint, option, widget, returnData); } Application::Application(int& argc, char** argv): QApplication(argc, argv), libFm_(), settings_(), profileName_("default"), daemonMode_(false), desktopWindows_(), enableDesktopManager_(false), preferencesDialog_(), volumeMonitor_(NULL), userDirsWatcher_(NULL), lxqtRunning_(false), editBookmarksialog_() { argc_ = argc; argv_ = argv; setApplicationVersion(PCMANFM_QT_VERSION); // QDBusConnection::sessionBus().registerObject("/org/pcmanfm/Application", this); QDBusConnection dbus = QDBusConnection::sessionBus(); if(dbus.registerService(serviceName)) { // we successfully registered the service isPrimaryInstance = true; setStyle(new ProxyStyle()); desktop()->installEventFilter(this); new ApplicationAdaptor(this); dbus.registerObject("/Application", this); connect(this, &Application::aboutToQuit, this, &Application::onAboutToQuit); // aboutToQuit() is not signalled on SIGTERM, install signal handler installSigtermHandler(); settings_.load(profileName_); // decrease the cache size to reduce memory usage QPixmapCache::setCacheLimit(2048); if(settings_.useFallbackIconTheme()) { QIcon::setThemeName(settings_.fallbackIconThemeName()); Fm::IconTheme::checkChanged(); } // Check if LXQt Session is running. LXQt has it's own Desktop Folder // editor. We just hide our editor when LXQt is running. QDBusInterface* lxqtSessionIface = new QDBusInterface( QStringLiteral("org.lxqt.session"), QStringLiteral("/LXQtSession")); if (lxqtSessionIface) { if (lxqtSessionIface->isValid()) { lxqtRunning_ = true; userDesktopFolder_ = XdgDir::readDesktopDir(); initWatch(); } delete lxqtSessionIface; lxqtSessionIface = 0; } } else { // an service of the same name is already registered. // we're not the first instance isPrimaryInstance = false; } } Application::~Application() { desktop()->removeEventFilter(this); if(volumeMonitor_) { g_signal_handlers_disconnect_by_func(volumeMonitor_, gpointer(onVolumeAdded), this); g_object_unref(volumeMonitor_); } // if(enableDesktopManager_) // removeNativeEventFilter(this); } void Application::initWatch() { QFile file_ (QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/user-dirs.dirs")); if(! file_.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << Q_FUNC_INFO << "Could not read: " << userDirsFile_; userDirsFile_ = QString(); } else { userDirsFile_ = file_.fileName(); } userDirsWatcher_ = new QFileSystemWatcher(this); userDirsWatcher_->addPath(userDirsFile_); connect(userDirsWatcher_, &QFileSystemWatcher::fileChanged, this, &Application::onUserDirsChanged); } bool Application::parseCommandLineArgs() { bool keepRunning = false; QCommandLineParser parser; parser.addHelpOption(); parser.addVersionOption(); QCommandLineOption profileOption(QStringList() << "p" << "profile", tr("Name of configuration profile"), tr("PROFILE")); parser.addOption(profileOption); QCommandLineOption daemonOption(QStringList() << "d" << "daemon-mode", tr("Run PCManFM as a daemon")); parser.addOption(daemonOption); QCommandLineOption quitOption(QStringList() << "q" << "quit", tr("Quit PCManFM")); parser.addOption(quitOption); QCommandLineOption desktopOption("desktop", tr("Launch desktop manager")); parser.addOption(desktopOption); QCommandLineOption desktopOffOption("desktop-off", tr("Turn off desktop manager if it's running")); parser.addOption(desktopOffOption); QCommandLineOption desktopPrefOption("desktop-pref", tr("Open desktop preference dialog on the page with the specified name"), tr("NAME")); parser.addOption(desktopPrefOption); QCommandLineOption newWindowOption(QStringList() << "n" << "new-window", tr("Open new window")); parser.addOption(newWindowOption); QCommandLineOption findFilesOption(QStringList() << "f" << "find-files", tr("Open Find Files utility")); parser.addOption(findFilesOption); QCommandLineOption setWallpaperOption(QStringList() << "w" << "set-wallpaper", tr("Set desktop wallpaper from image FILE"), tr("FILE")); parser.addOption(setWallpaperOption); // don't translate list of modes in description, please QCommandLineOption wallpaperModeOption("wallpaper-mode", tr("Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile)"), tr("MODE")); parser.addOption(wallpaperModeOption); QCommandLineOption showPrefOption("show-pref", tr("Open Preferences dialog on the page with the specified name"), tr("NAME")); parser.addOption(showPrefOption); parser.addPositionalArgument("files", tr("Files or directories to open"), tr("[FILE1, FILE2,...]")); parser.process(arguments()); if(isPrimaryInstance) { qDebug("isPrimaryInstance"); if(parser.isSet(daemonOption)) daemonMode_ = true; if(parser.isSet(profileOption)) profileName_ = parser.value(profileOption); // load settings settings_.load(profileName_); // desktop icon management if(parser.isSet(desktopOption)) { desktopManager(true); keepRunning = true; } else if(parser.isSet(desktopOffOption)) desktopManager(false); if(parser.isSet(desktopPrefOption)) { // desktop preference dialog desktopPrefrences(parser.value(desktopPrefOption)); keepRunning = true; } else if(parser.isSet(findFilesOption)) { // file searching utility findFiles(parser.positionalArguments()); keepRunning = true; } else if(parser.isSet(showPrefOption)) { // preferences dialog preferences(parser.value(showPrefOption)); keepRunning = true; } else if(parser.isSet(setWallpaperOption) || parser.isSet(wallpaperModeOption)) // set wall paper setWallpaper(parser.value(setWallpaperOption), parser.value(wallpaperModeOption)); else { if(!parser.isSet(desktopOption) && !parser.isSet(desktopOffOption)) { QStringList paths = parser.positionalArguments(); if(paths.isEmpty()) { // if no path is specified and we're using daemon mode, // don't open current working directory if(!daemonMode_) paths.push_back(QDir::currentPath()); } if(!paths.isEmpty()) launchFiles(QDir::currentPath(), paths, parser.isSet(newWindowOption)); keepRunning = true; } } } else { QDBusConnection dbus = QDBusConnection::sessionBus(); QDBusInterface iface(serviceName, "/Application", ifaceName, dbus, this); if(parser.isSet(quitOption)) { iface.call("quit"); return false; } if(parser.isSet(desktopOption)) iface.call("desktopManager", true); else if(parser.isSet(desktopOffOption)) iface.call("desktopManager", false); if(parser.isSet(desktopPrefOption)) { // desktop preference dialog iface.call("desktopPrefrences", parser.value(desktopPrefOption)); } else if(parser.isSet(findFilesOption)) { // file searching utility iface.call("findFiles", parser.positionalArguments()); } else if(parser.isSet(showPrefOption)) { // preferences dialog iface.call("preferences", parser.value(showPrefOption)); } else if(parser.isSet(setWallpaperOption) || parser.isSet(wallpaperModeOption)) { // set wall paper iface.call("setWallpaper", parser.value(setWallpaperOption), parser.value(wallpaperModeOption)); } else { if(!parser.isSet(desktopOption) && !parser.isSet(desktopOffOption)) { QStringList paths = parser.positionalArguments(); if(paths.isEmpty()) { paths.push_back(QDir::currentPath()); } iface.call("launchFiles", QDir::currentPath(), paths, parser.isSet(newWindowOption)); } } } return keepRunning; } void Application::init() { // install the translations built-into Qt itself qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); installTranslator(&qtTranslator); // install libfm-qt translator installTranslator(libFm_.translator()); // install our own tranlations translator.load("pcmanfm-qt_" + QLocale::system().name(), PCMANFM_DATA_DIR "/translations"); installTranslator(&translator); } int Application::exec() { if(!parseCommandLineArgs()) return 0; if(daemonMode_) // keep running even when there is no window opened. setQuitOnLastWindowClosed(false); volumeMonitor_ = g_volume_monitor_get(); // delay the volume manager a little because in newer versions of glib/gio there's a problem. // when the first volume monitor object is created, it discovers volumes asynchonously. // g_volume_monitor_get() immediately returns while the monitor is still discovering devices. // So initially g_volume_monitor_get_volumes() returns nothing, but shortly after that // we get volume-added signals for all of the volumes. This is not what we want. // So, we wait for 3 seconds here to let it finish device discovery. QTimer::singleShot(3000, this, SLOT(initVolumeManager())); return QCoreApplication::exec(); } void Application::onUserDirsChanged() { qDebug() << Q_FUNC_INFO; bool file_deleted = !userDirsWatcher_->files().contains(userDirsFile_); if(file_deleted) { // if our config file is already deleted, reinstall a new watcher userDirsWatcher_->addPath(userDirsFile_); } const QString d = XdgDir::readDesktopDir(); if (d != userDesktopFolder_) { userDesktopFolder_ = d; const QDir dir(d); if (dir.exists()) { const int N = desktopWindows_.size(); for(int i = 0; i < N; ++i) { desktopWindows_.at(i)->setDesktopFolder(); } } else { qWarning("Application::onUserDirsChanged: %s doesn't exist", userDesktopFolder_.toUtf8().constData()); } } } void Application::onAboutToQuit() { qDebug("aboutToQuit"); settings_.save(); } bool Application::eventFilter(QObject* watched, QEvent* event) { if(watched == desktop()) { switch(event->type()) { case QEvent::StyleChange: case QEvent::ThemeChange: setStyle(new ProxyStyle()); }; } return QObject::eventFilter(watched, event); } void Application::onLastWindowClosed() { } void Application::onSaveStateRequest(QSessionManager& manager) { } void Application::desktopManager(bool enabled) { // TODO: turn on or turn off desktpo management (desktop icons & wallpaper) qDebug("desktopManager: %d", enabled); QDesktopWidget* desktopWidget = desktop(); if(enabled) { if(!enableDesktopManager_) { // installNativeEventFilter(this); Q_FOREACH(QScreen* screen, screens()) { connect(screen, &QScreen::virtualGeometryChanged, this, &Application::onVirtualGeometryChanged); connect(screen, &QObject::destroyed, this, &Application::onScreenDestroyed); } connect(this, &QApplication::screenAdded, this, &Application::onScreenAdded); connect(desktopWidget, &QDesktopWidget::resized, this, &Application::onScreenResized); connect(desktopWidget, &QDesktopWidget::screenCountChanged, this, &Application::onScreenCountChanged); // NOTE: there are two modes // When virtual desktop is used (all screens are combined to form a large virtual desktop), // we only create one DesktopWindow. Otherwise, we create one for each screen. if(desktopWidget->isVirtualDesktop()) { DesktopWindow* window = createDesktopWindow(-1); desktopWindows_.push_back(window); } else { int n = desktopWidget->numScreens(); desktopWindows_.reserve(n); for(int i = 0; i < n; ++i) { DesktopWindow* window = createDesktopWindow(i); desktopWindows_.push_back(window); } } } } else { if(enableDesktopManager_) { disconnect(desktopWidget, &QDesktopWidget::resized, this, &Application::onScreenResized); disconnect(desktopWidget, &QDesktopWidget::screenCountChanged, this, &Application::onScreenCountChanged); int n = desktopWindows_.size(); for(int i = 0; i < n; ++i) { DesktopWindow* window = desktopWindows_.at(i); delete window; } desktopWindows_.clear(); Q_FOREACH(QScreen* screen, screens()) { disconnect(screen, &QScreen::virtualGeometryChanged, this, &Application::onVirtualGeometryChanged); disconnect(screen, &QObject::destroyed, this, &Application::onScreenDestroyed); } disconnect(this, &QApplication::screenAdded, this, &Application::onScreenAdded); // removeNativeEventFilter(this); } } enableDesktopManager_ = enabled; } void Application::desktopPrefrences(QString page) { // show desktop preference window if(!desktopPreferencesDialog_) { desktopPreferencesDialog_ = new DesktopPreferencesDialog(); // Should be used only one time desktopPreferencesDialog_->setEditDesktopFolder(!lxqtRunning_); } desktopPreferencesDialog_.data()->selectPage(page); desktopPreferencesDialog_.data()->show(); desktopPreferencesDialog_.data()->raise(); desktopPreferencesDialog_.data()->activateWindow(); } void Application::onFindFileAccepted() { Fm::FileSearchDialog* dlg = static_cast(sender()); Fm::Path uri = dlg->searchUri(); // FIXME: we should be able to open it in an existing window FmPathList* paths = fm_path_list_new(); fm_path_list_push_tail(paths, uri.data()); Launcher(NULL).launchPaths(NULL, paths); fm_path_list_unref(paths); } void Application::findFiles(QStringList paths) { // launch file searching utility. Fm::FileSearchDialog* dlg = new Fm::FileSearchDialog(paths); connect(dlg, &QDialog::accepted, this, &Application::onFindFileAccepted); dlg->setAttribute(Qt::WA_DeleteOnClose); dlg->show(); } void Application::launchFiles(QString cwd, QStringList paths, bool inNewWindow) { FmPathList* pathList = fm_path_list_new(); FmPath* cwd_path = NULL; QStringList::iterator it; Q_FOREACH(const QString& it, paths) { QByteArray pathName = it.toLocal8Bit(); FmPath* path = NULL; if(pathName[0] == '/') // absolute path path = fm_path_new_for_path(pathName.constData()); else if(pathName.contains(":/")) // URI path = fm_path_new_for_uri(pathName.constData()); else if(pathName == "~") // special case for home dir path = fm_path_ref(fm_path_get_home()); else // basename { if(Q_UNLIKELY(!cwd_path)) cwd_path = fm_path_new_for_str(cwd.toLocal8Bit().constData()); path = fm_path_new_relative(cwd_path, pathName.constData()); } fm_path_list_push_tail(pathList, path); fm_path_unref(path); } if(cwd_path) fm_path_unref(cwd_path); Launcher(NULL).launchPaths(NULL, pathList); fm_path_list_unref(pathList); } void Application::openFolders(FmFileInfoList* files) { Launcher(NULL).launchFiles(NULL, files); } void Application::openFolderInTerminal(FmPath* path) { if(!settings_.terminal().isEmpty()) { char* cwd_str; if(fm_path_is_native(path)) cwd_str = fm_path_to_str(path); else { // gio will map remote filesystems to local FUSE-mounted paths here. GFile* gf = fm_path_to_gfile(path); cwd_str = g_file_get_path(gf); g_object_unref(gf); } GError* err = NULL; if(!fm_terminal_launch(cwd_str, &err)) { QMessageBox::critical(NULL, tr("Error"), QString::fromUtf8(err->message)); g_error_free(err); } g_free(cwd_str); } else { // show an error message and ask the user to set the command QMessageBox::critical(NULL, tr("Error"), tr("Terminal emulator is not set.")); preferences("advanced"); } } void Application::preferences(QString page) { // open preference dialog if(!preferencesDialog_) { preferencesDialog_ = new PreferencesDialog(page); } else { // TODO: set page } preferencesDialog_.data()->show(); preferencesDialog_.data()->raise(); preferencesDialog_.data()->activateWindow(); } void Application::setWallpaper(QString path, QString modeString) { static const char* valid_wallpaper_modes[] = {"color", "stretch", "fit", "center", "tile"}; DesktopWindow::WallpaperMode mode = settings_.wallpaperMode(); bool changed = false; if(!path.isEmpty() && path != settings_.wallpaper()) { if(QFile(path).exists()) { settings_.setWallpaper(path); changed = true; } } // convert mode string to value for(int i = 0; i < G_N_ELEMENTS(valid_wallpaper_modes); ++i) { if(modeString == valid_wallpaper_modes[i]) { mode = (DesktopWindow::WallpaperMode)i; if(mode != settings_.wallpaperMode()) changed = true; break; } } // FIXME: support different wallpapers on different screen. // update wallpaper if(changed) { if(enableDesktopManager_) { Q_FOREACH(DesktopWindow * desktopWindow, desktopWindows_) { if(!path.isEmpty()) desktopWindow->setWallpaperFile(path); if(mode != settings_.wallpaperMode()) desktopWindow->setWallpaperMode(mode); desktopWindow->updateWallpaper(); } settings_.save(); // save the settings to the config file } } } void Application::onScreenResized(int num) { if(desktop()->isVirtualDesktop()) { // in virtual desktop mode, we only have one desktop window. that is the first one. DesktopWindow* window = desktopWindows_.at(0); window->setGeometry(desktop()->geometry()); } else { DesktopWindow* window = desktopWindows_.at(num); QRect rect = desktop()->screenGeometry(num); window->setGeometry(rect); } } DesktopWindow* Application::createDesktopWindow(int screenNum) { DesktopWindow* window = new DesktopWindow(screenNum); if(screenNum == -1) { // one large virtual desktop only QRect rect = desktop()->geometry(); window->setGeometry(rect); } else { QRect rect = desktop()->screenGeometry(screenNum); window->setGeometry(rect); } window->updateFromSettings(settings_); window->show(); return window; } void Application::onScreenCountChanged(int newCount) { QDesktopWidget* desktopWidget = desktop(); bool oldVirtual = (desktopWindows_.size() == 1 && desktopWindows_.at(0)->screenNum() == -1); bool isVirtual = desktopWidget->isVirtualDesktop(); if(oldVirtual && isVirtual) { // if we are using virtual desktop mode previously, and the new mode is sitll virtual // no further change is needed, only do relayout. desktopWindows_.at(0)->queueRelayout(); return; } // we used non-virtual mode originally, but now we're switched to virtual mode if(isVirtual) newCount = 1; // we only want one desktop window for all screens in virtual mode if(newCount > desktopWindows_.size()) { // add more desktop windows for(int i = desktopWindows_.size(); i < newCount; ++i) { DesktopWindow* desktop = createDesktopWindow(i); desktopWindows_.push_back(desktop); } } else if(newCount < desktopWindows_.size()) { // delete excessive desktop windows for(int i = newCount; i < desktopWindows_.size(); ++i) { DesktopWindow* desktop = desktopWindows_.at(i); delete desktop; } desktopWindows_.resize(newCount); } if(newCount == 1) { // now only 1 screen is in use DesktopWindow* desktop = desktopWindows_.at(0); if(isVirtual) desktop->setScreenNum(-1); else // non-virtual mode, and we only have 1 screen desktop->setScreenNum(0); desktop->updateWallpaper(); } } // called when Settings is changed to update UI void Application::updateFromSettings() { // if(iconTheme.isEmpty()) // Fm::IconTheme::setThemeName(settings_.fallbackIconThemeName()); // update main windows and desktop windows QWidgetList windows = this->topLevelWidgets(); QWidgetList::iterator it; for(it = windows.begin(); it != windows.end(); ++it) { QWidget* window = *it; if(window->inherits("PCManFM::MainWindow")) { MainWindow* mainWindow = static_cast(window); mainWindow->updateFromSettings(settings_); } } if(desktopManagerEnabled()) updateDesktopsFromSettings(); } void Application::updateDesktopsFromSettings() { QVector::iterator it; for(it = desktopWindows_.begin(); it != desktopWindows_.end(); ++it) { DesktopWindow* desktopWindow = static_cast(*it); desktopWindow->updateFromSettings(settings_); } } void Application::editBookmarks() { if(!editBookmarksialog_) { FmBookmarks* bookmarks = fm_bookmarks_dup(); editBookmarksialog_ = new Fm::EditBookmarksDialog(bookmarks); g_object_unref(bookmarks); } editBookmarksialog_.data()->show(); } void Application::initVolumeManager() { g_signal_connect(volumeMonitor_, "volume-added", G_CALLBACK(onVolumeAdded), this); if(settings_.mountOnStartup()) { /* try to automount all volumes */ GList* vols = g_volume_monitor_get_volumes(volumeMonitor_); for(GList* l = vols; l; l = l->next) { GVolume* volume = G_VOLUME(l->data); if(g_volume_should_automount(volume)) autoMountVolume(volume, false); g_object_unref(volume); } g_list_free(vols); } } bool Application::autoMountVolume(GVolume* volume, bool interactive) { if(!g_volume_should_automount(volume) || !g_volume_can_mount(volume)) return FALSE; GMount* mount = g_volume_get_mount(volume); if(!mount) { // not mounted, automount is needed // try automount Fm::MountOperation* op = new Fm::MountOperation(interactive); op->mount(volume); if(!op->wait()) return false; if(!interactive) return true; mount = g_volume_get_mount(volume); } if(mount) { if(interactive && settings_.autoRun()) { // show autorun dialog AutoRunDialog* dlg = new AutoRunDialog(volume, mount); dlg->show(); } g_object_unref(mount); } return true; } // static void Application::onVolumeAdded(GVolumeMonitor* monitor, GVolume* volume, Application* pThis) { if(pThis->settings_.mountRemovable()) pThis->autoMountVolume(volume, true); } #if 0 bool Application::nativeEventFilter(const QByteArray & eventType, void * message, long * result) { if(eventType == "xcb_generic_event_t") { // XCB event // filter all native X11 events (xcb) xcb_generic_event_t* generic_event = reinterpret_cast(message); // qDebug("XCB event: %d", generic_event->response_type & ~0x80); Q_FOREACH(DesktopWindow * window, desktopWindows_) { } } return false; } #endif void Application::onScreenAdded(QScreen* newScreen) { if(enableDesktopManager_) { connect(newScreen, &QScreen::virtualGeometryChanged, this, &Application::onVirtualGeometryChanged); connect(newScreen, &QObject::destroyed, this, &Application::onScreenDestroyed); } } void Application::onScreenDestroyed(QObject* screenObj) { // NOTE by PCMan: This is a workaround for Qt 5 bug #40681. // With this very dirty workaround, we can fix lxde/lxde-qt bug #204, #205, and #206. // Qt 5 has two new regression bugs which breaks lxqt-panel in a multihead environment. // #40681: Regression bug: QWidget::winId() returns old value and QEvent::WinIdChange event is not emitted sometimes. (multihead setup) // #40791: Regression: QPlatformWindow, QWindow, and QWidget::winId() are out of sync. // Explanations for the workaround: // Internally, Qt mantains a list of QScreens and update it when XRandR configuration changes. // When the user turn off an monitor with xrandr --output --off, this will destroy the QScreen // object which represent the output. If the QScreen being destroyed contains our panel widget, // Qt will call QWindow::setScreen(0) on the internal windowHandle() of our panel widget to move it // to the primary screen. However, moving a window to a different screen is more than just changing // its position. With XRandR, all screens are actually part of the same virtual desktop. However, // this is not the case in other setups, such as Xinerama and moving a window to another screen is // not possible unless you destroy the widget and create it again for a new screen. // Therefore, Qt destroy the widget and re-create it when moving our panel to a new screen. // Unfortunately, destroying the window also destroy the child windows embedded into it, // using XEMBED such as the tray icons. (#206) // Second, when the window is re-created, the winId of the QWidget is changed, but Qt failed to // generate QEvent::WinIdChange event so we have no way to know that. We have to set // some X11 window properties using the native winId() to make it a dock, but this stop working // because we cannot get the correct winId(), so this causes #204 and #205. // // The workaround is very simple. Just completely destroy the window before Qt has a chance to do // QWindow::setScreen() for it. Later, we recreate the window ourselves. So this can bypassing the Qt bugs. if(enableDesktopManager_) { bool reloadNeeded = false; // FIXME: add workarounds for Qt5 bug #40681 and #40791 here. Q_FOREACH(DesktopWindow* desktop, desktopWindows_) { if(desktop->windowHandle()->screen() == screenObj) { desktop->destroy(); // destroy the underlying native window reloadNeeded = true; } } if(reloadNeeded) QTimer::singleShot(0, this, SLOT(reloadDesktopsAsNeeded())); } } void Application::reloadDesktopsAsNeeded() { if(enableDesktopManager_) { // workarounds for Qt5 bug #40681 and #40791 here. Q_FOREACH(DesktopWindow* desktop, desktopWindows_) { if(!desktop->windowHandle()) { desktop->create(); // re-create the underlying native window desktop->queueRelayout(); desktop->show(); } } } } // This slot is for Qt 5 onlt, but the stupid Qt moc cannot do conditional compilation // so we have to define it for Qt 4 as well. void Application::onVirtualGeometryChanged(const QRect& rect) { // NOTE: the following is a workaround for Qt bug 32567. // https://bugreports.qt-project.org/browse/QTBUG-32567 // Though the status of the bug report is closed, it's not yet fixed for X11. // In theory, QDesktopWidget should emit "workAreaResized()" signal when the work area // of any screen is changed, but in fact it does not do it. // However, QScreen provided since Qt5 does not have the bug and // virtualGeometryChanged() is emitted correctly when the workAreas changed. // So we use it in Qt5. if(enableDesktopManager_) { // qDebug() << "onVirtualGeometryChanged"; Q_FOREACH(DesktopWindow* desktop, desktopWindows_) { desktop->queueRelayout(); } } } static int sigterm_fd[2]; static void sigtermHandler(int) { char c = 1; ::write(sigterm_fd[0], &c, sizeof(c)); } void Application::installSigtermHandler() { if(::socketpair(AF_UNIX, SOCK_STREAM, 0, sigterm_fd) == 0) { QSocketNotifier* notifier = new QSocketNotifier(sigterm_fd[1], QSocketNotifier::Read, this); connect(notifier, &QSocketNotifier::activated, this, &Application::onSigtermNotified); struct sigaction action; action.sa_handler = sigtermHandler; ::sigemptyset(&action.sa_mask); action.sa_flags = SA_RESTART; if(::sigaction(SIGTERM, &action, 0) != 0) { qWarning("Couldn't install SIGTERM handler"); } } else { qWarning("Couldn't create SIGTERM socketpair"); } } void Application::onSigtermNotified() { if (QSocketNotifier* notifier = qobject_cast(sender())) { notifier->setEnabled(false); char c; ::read(sigterm_fd[1], &c, sizeof(c)); quit(); notifier->setEnabled(true); } } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/application.h000066400000000000000000000076121263124606600177450ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_APPLICATION_H #define PCMANFM_APPLICATION_H #include #include "settings.h" #include #include #include #include #include #include #include class QScreen; class QFileSystemWatcher; namespace PCManFM { class DesktopWindow; class PreferencesDialog; class DesktopPreferencesDialog; class ProxyStyle: public QProxyStyle { Q_OBJECT public: ProxyStyle() : QProxyStyle() {} virtual ~ProxyStyle() {} virtual int styleHint(StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0) const; }; class Application : public QApplication { Q_OBJECT Q_PROPERTY(bool desktopManagerEnabled READ desktopManagerEnabled) public: Application(int& argc, char** argv); virtual ~Application(); void init(); int exec(); Settings& settings() { return settings_; } Fm::LibFmQt& libFm() { return libFm_; } // public interface exported via dbus void launchFiles(QString cwd, QStringList paths, bool inNewWindow); void setWallpaper(QString path, QString modeString); void preferences(QString page); void desktopPrefrences(QString page); void editBookmarks(); void desktopManager(bool enabled); void findFiles(QStringList paths = QStringList()); bool desktopManagerEnabled() { return enableDesktopManager_; } void updateFromSettings(); void updateDesktopsFromSettings(); void openFolderInTerminal(FmPath* path); void openFolders(FmFileInfoList* files); QString profileName() { return profileName_; } protected Q_SLOTS: void onAboutToQuit(); void onSigtermNotified(); void onLastWindowClosed(); void onSaveStateRequest(QSessionManager & manager); void onScreenResized(int num); void onScreenCountChanged(int newCount); void initVolumeManager(); void onVirtualGeometryChanged(const QRect& rect); void onScreenDestroyed(QObject* screenObj); void onScreenAdded(QScreen* newScreen); void reloadDesktopsAsNeeded(); void onFindFileAccepted(); protected: virtual bool eventFilter(QObject* watched, QEvent* event); bool parseCommandLineArgs(); DesktopWindow* createDesktopWindow(int screenNum); bool autoMountVolume(GVolume* volume, bool interactive = true); static void onVolumeAdded(GVolumeMonitor* monitor, GVolume* volume, Application* pThis); private Q_SLOTS: void onUserDirsChanged(); private: void initWatch(); void installSigtermHandler(); bool isPrimaryInstance; Fm::LibFmQt libFm_; Settings settings_; QString profileName_; bool daemonMode_; bool enableDesktopManager_; QVector desktopWindows_; QPointer preferencesDialog_; QPointer desktopPreferencesDialog_; QPointer editBookmarksialog_; QTranslator translator; QTranslator qtTranslator; GVolumeMonitor* volumeMonitor_; QFileSystemWatcher *userDirsWatcher_; QString userDirsFile_; QString userDesktopFolder_; bool lxqtRunning_; int argc_; char** argv_; }; } #endif // PCMANFM_APPLICATION_H pcmanfm-qt-0.10.1/pcmanfm/autorun.ui000066400000000000000000000060161263124606600173220ustar00rootroot00000000000000 AutoRunDialog 0 0 334 312 Removable medium is inserted ../../../.designer/backup../../../.designer/backup <b>Removable medium is inserted</b> Type of medium: Detecting... Please select the action you want to perform: 0 1 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() AutoRunDialog accept() 248 254 157 274 buttonBox rejected() AutoRunDialog reject() 316 260 286 274 pcmanfm-qt-0.10.1/pcmanfm/autorundialog.cpp000066400000000000000000000105331263124606600206460ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "autorundialog.h" #include #include #include "application.h" #include "mainwindow.h" namespace PCManFM { AutoRunDialog::AutoRunDialog(GVolume* volume, GMount* mount, QWidget* parent, Qt::WindowFlags f): cancellable(g_cancellable_new()), applications(NULL), mount_(G_MOUNT(g_object_ref(mount))), QDialog(parent, f) { setAttribute(Qt::WA_DeleteOnClose); ui.setupUi(this); GIcon* gicon = g_volume_get_icon(volume); QIcon icon = Fm::IconTheme::icon(gicon); ui.icon->setPixmap(icon.pixmap(QSize(48, 48))); // add actions QListWidgetItem* item = new QListWidgetItem(QIcon::fromTheme("system-file-manager"), tr("Open in file manager")); ui.listWidget->addItem(item); g_mount_guess_content_type(mount, TRUE, cancellable, (GAsyncReadyCallback)onContentTypeFinished, this); } AutoRunDialog::~AutoRunDialog() { g_list_foreach(applications, (GFunc)g_object_unref, NULL); g_list_free(applications); if(mount_) g_object_unref(mount_); if(cancellable) { g_cancellable_cancel(cancellable); g_object_unref(cancellable); } } void AutoRunDialog::accept() { QListWidgetItem* item = ui.listWidget->selectedItems().first(); if(item) { GFile* gf = g_mount_get_root(mount_); void* p = item->data(Qt::UserRole).value(); if(p) { // run the selected application GAppInfo* app = G_APP_INFO(p); GList* filelist = g_list_prepend(NULL, gf); g_app_info_launch(app, filelist, NULL, NULL); g_list_free(filelist); } else { // the default action, open the mounted folder in the file manager Application* app = static_cast(qApp); Settings& settings = app->settings(); FmPath* path = fm_path_new_for_gfile(gf); // open the path in a new window // FIXME: or should we open it in a new tab? Make this optional later MainWindow* win = new MainWindow(path); fm_path_unref(path); win->resize(settings.windowWidth(), settings.windowHeight()); if(settings.windowMaximized()) { win->setWindowState(win->windowState() | Qt::WindowMaximized); } win->show(); } g_object_unref(gf); } QDialog::accept(); } // static void AutoRunDialog::onContentTypeFinished(GMount* mount, GAsyncResult* res, AutoRunDialog* pThis) { if(pThis->cancellable) { g_object_unref(pThis->cancellable); pThis->cancellable = NULL; } char** types = g_mount_guess_content_type_finish(mount, res, NULL); char* desc = NULL; if(types) { if(types[0]) { for(char** type = types; *type; ++type) { GList* l = g_app_info_get_all_for_type(*type); if(l) pThis->applications = g_list_concat(pThis->applications, l); } desc = g_content_type_get_description(types[0]); } g_strfreev(types); if(pThis->applications) { int pos = 0; for(GList* l = pThis->applications; l; l = l->next, ++pos) { GAppInfo* app = G_APP_INFO(l->data); GIcon* gicon = g_app_info_get_icon(app); QIcon icon = Fm::IconTheme::icon(gicon); QString text = QString::fromUtf8(g_app_info_get_name(app)); QListWidgetItem* item = new QListWidgetItem(icon, text); item->setData(Qt::UserRole, qVariantFromValue(app)); pThis->ui.listWidget->insertItem(pos, item); } } } if(desc) { pThis->ui.mediumType->setText(QString::fromUtf8(desc)); g_free(desc); } else pThis->ui.mediumType->setText(tr("Removable Disk")); // select the first item pThis->ui.listWidget->item(0)->setSelected(true); } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/autorundialog.h000066400000000000000000000026271263124606600203200ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_AUTORUNDIALOG_H #define PCMANFM_AUTORUNDIALOG_H #include #include "ui_autorun.h" #include namespace PCManFM { class AutoRunDialog : public QDialog { Q_OBJECT public: explicit AutoRunDialog(GVolume* volume, GMount* mount, QWidget* parent = 0, Qt::WindowFlags f = 0); virtual ~AutoRunDialog(); virtual void accept(); private Q_SLOTS: private: static void onContentTypeFinished(GMount* mount, GAsyncResult* res, AutoRunDialog* pThis); private: Ui::AutoRunDialog ui; GCancellable* cancellable; GList* applications; GMount* mount_; }; } #endif // PCMANFM_AUTORUNDIALOG_H pcmanfm-qt-0.10.1/pcmanfm/desktop-folder.ui000066400000000000000000000027431263124606600205520ustar00rootroot00000000000000 DesktopFolder 0 0 352 81 Form true Desktop Desktop folder: Image file Folder path &Browse pcmanfm-qt-0.10.1/pcmanfm/desktop-preferences.ui000066400000000000000000000232361263124606600216000ustar00rootroot00000000000000 DesktopPreferencesDialog 0 0 534 434 Desktop Preferences 0 General Background 0 0 0 0 Wallpaper mode: 0 0 Wallpaper image file: 0 0 Select background color: Image file Image file path &Browse Label Text 0 0 0 0 0 0 Select text color: 0 0 Select shadow color: 0 0 Select font: 0 0 Qt::Vertical 20 10 Advanced Window Manager Show menus provided by window managers when desktop is clicked Qt::Vertical 20 40 Qt::Horizontal QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok Fm::ColorButton QPushButton
libfm-qt/colorbutton.h
Fm::FontButton QPushButton
libfm-qt/fontbutton.h
buttonBox accepted() DesktopPreferencesDialog accept() 248 254 157 274 buttonBox rejected() DesktopPreferencesDialog reject() 316 260 286 274
pcmanfm-qt-0.10.1/pcmanfm/desktopitemdelegate.cpp000066400000000000000000000156531263124606600220240ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "desktopitemdelegate.h" #include #include #include #include #include #include #include #include namespace PCManFM { DesktopItemDelegate::DesktopItemDelegate(QListView* view, QObject* parent): QStyledItemDelegate(parent ? parent : view), view_(view), symlinkIcon_(QIcon::fromTheme("emblem-symbolic-link")), shadowColor_(0, 0, 0) { } // FIXME: we need to figure out a way to derive from Fm::FolderItemDelegate to avoid code duplication. void DesktopItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { Q_ASSERT(index.isValid()); QStyleOptionViewItemV4 opt = option; initStyleOption(&opt, index); painter->save(); painter->setClipRect(option.rect); opt.decorationAlignment = Qt::AlignHCenter | Qt::AlignTop; opt.displayAlignment = Qt::AlignTop | Qt::AlignHCenter; // draw the icon QIcon::Mode iconMode; if(opt.state & QStyle::State_Enabled) { if(opt.state & QStyle::State_Selected) iconMode = QIcon::Selected; else { iconMode = QIcon::Normal; } } else iconMode = QIcon::Disabled; 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); // draw some emblems for the item if needed // we only support symlink emblem at the moment FmFileInfo* file = static_cast(index.data(Fm::FolderModel::FileInfoRole).value()); if(file) { if(fm_file_info_is_symlink(file)) { painter->drawPixmap(iconPos, symlinkIcon_.pixmap(opt.decorationSize / 2, iconMode)); } } // draw text QSize gridSize = view_->gridSize() - QSize(6, 6); QRectF textRect(opt.rect.x() - (gridSize.width() - opt.rect.width()) / 2, opt.rect.y() + opt.decorationSize.height(), gridSize.width(), gridSize.height() - opt.decorationSize.height()); drawText(painter, opt, textRect); if(opt.state & QStyle::State_HasFocus) { // FIXME: draw focus rect } painter->restore(); } void DesktopItemDelegate::drawText(QPainter* painter, QStyleOptionViewItemV4& opt, QRectF& textRect) const { QTextLayout layout(opt.text, opt.font); QTextOption textOption; textOption.setAlignment(opt.displayAlignment); textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); textOption.setTextDirection(opt.direction); layout.setTextOption(textOption); qreal height = 0; qreal width = 0; int visibleLines = 0; layout.beginLayout(); QString elidedText; textRect.adjust(2, 2, -2, -2); // a 2-px margin is considered at FolderView::updateGridSize() for(;;) { QTextLine line = layout.createLine(); if(!line.isValid()) break; line.setLineWidth(textRect.width()); height += opt.fontMetrics.leading(); line.setPosition(QPointF(0, height)); if((height + line.height() + textRect.y()) > textRect.bottom()) { // if part of this line falls outside the textRect, ignore it and quit. QTextLine lastLine = layout.lineAt(visibleLines - 1); elidedText = opt.text.mid(lastLine.textStart()); elidedText = opt.fontMetrics.elidedText(elidedText, opt.textElideMode, textRect.width()); break; } height += line.height(); width = qMax(width, line.naturalTextWidth()); ++ visibleLines; } layout.endLayout(); width = qMax(width, (qreal)opt.fontMetrics.width(elidedText)); QRectF boundRect = layout.boundingRect(); boundRect.setWidth(width); boundRect.setHeight(height); boundRect.moveTo(textRect.x() + (textRect.width() - width)/2, textRect.y()); QRectF selRect = boundRect.adjusted(-2, -2, 2, 2); if(!painter) { // no painter, calculate the bounding rect only textRect = selRect; return; } if((opt.state & QStyle::State_Selected) && opt.widget) { QPalette palette = opt.widget->palette(); // qDebug("w: %f, h:%f, m:%f", boundRect.width(), boundRect.height(), layout.minimumWidth()); painter->fillRect(selRect, palette.highlight()); } else { // only draw shadow for non-selected items // draw shadow, FIXME: is it possible to use QGraphicsDropShadowEffect here? QPen prevPen = painter->pen(); painter->setPen(QPen(shadowColor_)); for(int i = 0; i < visibleLines; ++i) { QTextLine line = layout.lineAt(i); if(i == (visibleLines - 1) && !elidedText.isEmpty()) { // the last line, draw elided text QPointF pos(boundRect.x() + line.position().x() + 1, boundRect.y() + line.y() + line.ascent() + 1); painter->drawText(pos, elidedText); } else { line.draw(painter, textRect.topLeft() + QPointF(1, 1)); } } painter->setPen(prevPen); } // draw text for(int i = 0; i < visibleLines; ++i) { QTextLine line = layout.lineAt(i); if(i == (visibleLines - 1) && !elidedText.isEmpty()) { // the last line, draw elided text QPointF pos(boundRect.x() + line.position().x(), boundRect.y() + line.y() + line.ascent()); painter->drawText(pos, elidedText); } else { line.draw(painter, textRect.topLeft()); } } } QSize DesktopItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { QVariant value = index.data(Qt::SizeHintRole); if(value.isValid()) return qvariant_cast(value); QStyleOptionViewItemV4 opt = option; initStyleOption(&opt, index); opt.decorationAlignment = Qt::AlignHCenter|Qt::AlignTop; opt.displayAlignment = Qt::AlignTop|Qt::AlignHCenter; QSize gridSize = view_->gridSize() - QSize(6, 6); // a 6-px margin is added at FolderView::updateGridSize() Q_ASSERT(gridSize != QSize()); QRectF textRect(0, 0, gridSize.width(), gridSize.height() - opt.decorationSize.height()); drawText(NULL, 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(); return QSize(width, height); } DesktopItemDelegate::~DesktopItemDelegate() { } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/desktopitemdelegate.h000066400000000000000000000033411263124606600214600ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_DESKTOPITEMDELEGATE_H #define PCMANFM_DESKTOPITEMDELEGATE_H #include #include class QListView; class QTextOption; class QTextLayout; namespace PCManFM { class DesktopItemDelegate : public QStyledItemDelegate { Q_OBJECT public: explicit DesktopItemDelegate(QListView* view, QObject* parent = 0); virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const; virtual ~DesktopItemDelegate(); void setShadowColor(const QColor& shadowColor) { shadowColor_ = shadowColor; } const QColor& shadowColor() const { return shadowColor_; } private: void drawText(QPainter* painter, QStyleOptionViewItemV4& opt, QRectF& textRect) const; private: QListView* view_; QIcon symlinkIcon_; QColor shadowColor_; }; } #endif // PCMANFM_DESKTOPITEMDELEGATE_H pcmanfm-qt-0.10.1/pcmanfm/desktoppreferencesdialog.cpp000066400000000000000000000145231263124606600230470ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "desktoppreferencesdialog.h" #include "desktopwindow.h" #include "settings.h" #include "application.h" #include "xdgdir.h" #include #include #include #include #include #include #include #include namespace PCManFM { DesktopPreferencesDialog::DesktopPreferencesDialog(QWidget* parent, Qt::WindowFlags f): QDialog(parent, f), editDesktopFolderEnabled(false), desktopFolderWidget(0), desktopFolder() { setAttribute(Qt::WA_DeleteOnClose); Settings& settings = static_cast(qApp)->settings(); ui.setupUi(this); // setup wallpaper modes connect(ui.wallpaperMode, static_cast(&QComboBox::currentIndexChanged), this, &DesktopPreferencesDialog::onWallpaperModeChanged); ui.wallpaperMode->addItem(tr("Fill with background color only"), DesktopWindow::WallpaperNone); ui.wallpaperMode->addItem(tr("Stretch to fill the entire screen"), DesktopWindow::WallpaperStretch); ui.wallpaperMode->addItem(tr("Stretch to fit the screen"), DesktopWindow::WallpaperFit); ui.wallpaperMode->addItem(tr("Center on the screen"), DesktopWindow::WallpaperCenter); ui.wallpaperMode->addItem(tr("Tile the image to fill the entire screen"), DesktopWindow::WallpaperTile); int i; switch(settings.wallpaperMode()) { case DesktopWindow::WallpaperNone: i = 0; break; case DesktopWindow::WallpaperStretch: i = 1; break; case DesktopWindow::WallpaperFit: i = 2; break; case DesktopWindow::WallpaperCenter: i = 3; break; case DesktopWindow::WallpaperTile: i = 4; break; default: i = 0; } ui.wallpaperMode->setCurrentIndex(i); connect(ui.browse, &QPushButton::clicked, this, &DesktopPreferencesDialog::onBrowseClicked); qDebug("wallpaper: %s", settings.wallpaper().toUtf8().data()); ui.imageFile->setText(settings.wallpaper()); ui.font->setFont(settings.desktopFont()); ui.backgroundColor->setColor(settings.desktopBgColor()); ui.textColor->setColor(settings.desktopFgColor()); ui.shadowColor->setColor(settings.desktopShadowColor()); ui.showWmMenu->setChecked(settings.showWmMenu()); connect(ui.buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &DesktopPreferencesDialog::onApplyClicked); } DesktopPreferencesDialog::~DesktopPreferencesDialog() { } void DesktopPreferencesDialog::setupDesktopFolderUi() { desktopFolderWidget = new QWidget(); uiDesktopFolder.setupUi(desktopFolderWidget); ui.advancedPageLayout->insertWidget(1, desktopFolderWidget); uiDesktopFolder.verticalLayout->setMargin(0); desktopFolder = XdgDir::readDesktopDir(); qDebug("desktop folder: %s", desktopFolder.toStdString().c_str()); uiDesktopFolder.desktopFolder->setText(desktopFolder); connect(uiDesktopFolder.browseDesktopFolder, &QPushButton::clicked, this, &DesktopPreferencesDialog::onBrowseDesktopFolderClicked); } void DesktopPreferencesDialog::applySettings() { Settings& settings = static_cast(qApp)->settings(); if (editDesktopFolderEnabled) XdgDir::setDesktopDir(uiDesktopFolder.desktopFolder->text()); settings.setWallpaper(ui.imageFile->text()); int mode = ui.wallpaperMode->itemData(ui.wallpaperMode->currentIndex()).toInt(); settings.setWallpaperMode(mode); settings.setDesktopFont(ui.font->font()); settings.setDesktopBgColor(ui.backgroundColor->color()); settings.setDesktopFgColor(ui.textColor->color()); settings.setDesktopShadowColor(ui.shadowColor->color()); settings.setShowWmMenu(ui.showWmMenu->isChecked()); settings.save(); } void DesktopPreferencesDialog::onApplyClicked() { applySettings(); static_cast(qApp)->updateDesktopsFromSettings(); } void DesktopPreferencesDialog::accept() { applySettings(); static_cast(qApp)->updateDesktopsFromSettings(); QDialog::accept(); } void DesktopPreferencesDialog::onWallpaperModeChanged(int index) { int mode = ui.wallpaperMode->itemData(index).toInt(); bool enable = (mode != DesktopWindow::WallpaperNone); ui.imageFile->setEnabled(enable); ui.browse->setEnabled(enable); } void DesktopPreferencesDialog::onBrowseClicked() { QFileDialog dlg; dlg.setAcceptMode(QFileDialog::AcceptOpen); dlg.setFileMode(QFileDialog::ExistingFile); // compose a name fileter from QImageReader QString filter; filter.reserve(256); filter = tr("Image Files"); filter += " ("; QList formats = QImageReader::supportedImageFormats(); Q_FOREACH(QByteArray format, formats) { filter += "*."; filter += format.toLower(); filter += ' '; } filter += ')'; dlg.setNameFilter(filter); dlg.setNameFilterDetailsVisible(false); if(dlg.exec() == QDialog::Accepted) { QString filename; filename = dlg.selectedFiles().first(); ui.imageFile->setText(filename); } } void DesktopPreferencesDialog::onBrowseDesktopFolderClicked() { QFileDialog dlg; dlg.setAcceptMode(QFileDialog::AcceptOpen); dlg.setAcceptMode(QFileDialog::AcceptOpen); dlg.setFileMode(QFileDialog::DirectoryOnly); if (dlg.exec() == QDialog::Accepted) { QString dir; dir = dlg.selectedFiles().first(); uiDesktopFolder.desktopFolder->setText(dir); } } void DesktopPreferencesDialog::selectPage(QString name) { QWidget* page = findChild(name + "Page"); if(page) ui.tabWidget->setCurrentWidget(page); } void DesktopPreferencesDialog::setEditDesktopFolder(const bool enabled) { editDesktopFolderEnabled = enabled; if (editDesktopFolderEnabled) setupDesktopFolderUi(); } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/desktoppreferencesdialog.h000066400000000000000000000033431263124606600225120ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_DESKTOPPREFERENCESDIALOG_H #define PCMANFM_DESKTOPPREFERENCESDIALOG_H #include #include "ui_desktop-preferences.h" #include "ui_desktop-folder.h" namespace PCManFM { class DesktopPreferencesDialog : public QDialog { Q_OBJECT public: explicit DesktopPreferencesDialog(QWidget* parent = 0, Qt::WindowFlags f = 0); virtual ~DesktopPreferencesDialog(); virtual void accept(); void selectPage(QString name); // Should only be used one time. void setEditDesktopFolder(const bool enabled); protected Q_SLOTS: void onApplyClicked(); void onWallpaperModeChanged(int index); void onBrowseClicked(); void onBrowseDesktopFolderClicked(); void applySettings(); private: Ui::DesktopPreferencesDialog ui; Ui::DesktopFolder uiDesktopFolder; bool editDesktopFolderEnabled; QWidget* desktopFolderWidget; QString desktopFolder; void setupDesktopFolderUi(); }; } #endif // PCMANFM_DESKTOPPREFERENCESDIALOG_H pcmanfm-qt-0.10.1/pcmanfm/desktopwindow.cpp000066400000000000000000000741711263124606600207020ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "desktopwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "./application.h" #include "mainwindow.h" #include "desktopitemdelegate.h" #include #include #include #include #include #include #include #include #include "xdgdir.h" #include #include #include #include namespace PCManFM { DesktopWindow::DesktopWindow(int screenNum): View(Fm::FolderView::IconMode), screenNum_(screenNum), folder_(NULL), model_(NULL), proxyModel_(NULL), fileLauncher_(NULL), showWmMenu_(false), wallpaperMode_(WallpaperNone), relayoutTimer_(NULL) { QDesktopWidget* desktopWidget = QApplication::desktop(); setWindowFlags(Qt::Window | Qt::FramelessWindowHint); setAttribute(Qt::WA_X11NetWmWindowTypeDesktop); setAttribute(Qt::WA_DeleteOnClose); // set our custom file launcher View::setFileLauncher(&fileLauncher_); listView_ = static_cast(childView()); listView_->setMovement(QListView::Snap); listView_->setResizeMode(QListView::Adjust); listView_->setFlow(QListView::TopToBottom); // NOTE: When XRnadR is in use, the all screens are actually combined to form a // large virtual desktop and only one DesktopWindow needs to be created and screenNum is -1. // In some older multihead setups, such as xinerama, every physical screen // is treated as a separate desktop so many instances of DesktopWindow may be created. // In this case we only want to show desktop icons on the primary screen. if(desktopWidget->isVirtualDesktop() || screenNum_ == desktopWidget->primaryScreen()) { loadItemPositions(); Settings& settings = static_cast(qApp)->settings(); model_ = Fm::CachedFolderModel::modelFromPath(fm_path_get_desktop()); folder_ = reinterpret_cast(g_object_ref(model_->folder())); proxyModel_ = new Fm::ProxyFolderModel(); proxyModel_->setSourceModel(model_); proxyModel_->setShowThumbnails(settings.showThumbnails()); proxyModel_->sort(Fm::FolderModel::ColumnFileMTime); setModel(proxyModel_); connect(proxyModel_, &Fm::ProxyFolderModel::rowsInserted, this, &DesktopWindow::onRowsInserted); connect(proxyModel_, &Fm::ProxyFolderModel::rowsAboutToBeRemoved, this, &DesktopWindow::onRowsAboutToBeRemoved); connect(proxyModel_, &Fm::ProxyFolderModel::layoutChanged, this, &DesktopWindow::onLayoutChanged); connect(listView_, &QListView::indexesMoved, this, &DesktopWindow::onIndexesMoved); } // set our own delegate delegate_ = new DesktopItemDelegate(listView_); listView_->setItemDelegateForColumn(Fm::FolderModel::ColumnFileName, delegate_); // remove frame listView_->setFrameShape(QFrame::NoFrame); // inhibit scrollbars FIXME: this should be optional in the future listView_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); listView_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); connect(this, &DesktopWindow::openDirRequested, this, &DesktopWindow::onOpenDirRequested); listView_->installEventFilter(this); // setup shortcuts QShortcut* shortcut; shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_X), this); // cut connect(shortcut, &QShortcut::activated, this, &DesktopWindow::onCutActivated); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_C), this); // copy connect(shortcut, &QShortcut::activated, this, &DesktopWindow::onCopyActivated); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_V), this); // paste connect(shortcut, &QShortcut::activated, this, &DesktopWindow::onPasteActivated); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_A), this); // select all connect(shortcut, &QShortcut::activated, listView_, &QListView::selectAll); shortcut = new QShortcut(QKeySequence(Qt::Key_Delete), this); // delete connect(shortcut, &QShortcut::activated, this, &DesktopWindow::onDeleteActivated); shortcut = new QShortcut(QKeySequence(Qt::Key_F2), this); // rename connect(shortcut, &QShortcut::activated, this, &DesktopWindow::onRenameActivated); shortcut = new QShortcut(QKeySequence(Qt::ALT + Qt::Key_Return), this); // rename connect(shortcut, &QShortcut::activated, this, &DesktopWindow::onFilePropertiesActivated); shortcut = new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_Delete), this); // force delete connect(shortcut, &QShortcut::activated, this, &DesktopWindow::onDeleteActivated); } DesktopWindow::~DesktopWindow() { listView_->removeEventFilter(this); if(relayoutTimer_) delete relayoutTimer_; if(proxyModel_) delete proxyModel_; if(model_) model_->unref(); if(folder_) g_object_unref(folder_); } void DesktopWindow::setBackground(const QColor& color) { bgColor_ = color; } void DesktopWindow::setForeground(const QColor& color) { QPalette p = listView_->palette(); p.setBrush(QPalette::Text, color); listView_->setPalette(p); fgColor_ = color; } void DesktopWindow::setShadow(const QColor& color) { shadowColor_ = color; delegate_->setShadowColor(color); } void DesktopWindow::onOpenDirRequested(FmPath* path, int target) { // open in new window unconditionally. Application* app = static_cast(qApp); MainWindow* newWin = new MainWindow(path); // apply window size from app->settings newWin->resize(app->settings().windowWidth(), app->settings().windowHeight()); newWin->show(); } void DesktopWindow::resizeEvent(QResizeEvent* event) { QWidget::resizeEvent(event); // resize wall paper if needed if(isVisible() && wallpaperMode_ != WallpaperNone && wallpaperMode_ != WallpaperTile) { updateWallpaper(); update(); } queueRelayout(100); // Qt use a 100 msec delay for relayout internally so we use it, too. } void DesktopWindow::setDesktopFolder() { FmPath *path = fm_path_new_for_path(XdgDir::readDesktopDir().toStdString().c_str()); model_ = Fm::CachedFolderModel::modelFromPath(path); proxyModel_->setSourceModel(model_); } void DesktopWindow::setWallpaperFile(QString filename) { wallpaperFile_ = filename; } void DesktopWindow::setWallpaperMode(WallpaperMode mode) { wallpaperMode_ = mode; } QImage DesktopWindow::loadWallpaperFile(QSize requiredSize) { // NOTE: for ease of programming, we only use the cache for the primary screen. bool useCache = (screenNum_ == -1 || screenNum_ == 0); QFile info; QString cacheFileName; if(useCache) { // see if we have a scaled version cached on disk cacheFileName = QString::fromLocal8Bit(qgetenv("XDG_CACHE_HOME")); if(cacheFileName.isEmpty()) cacheFileName = QDir::homePath() % QLatin1String("/.cache"); Application* app = static_cast(qApp); cacheFileName += QLatin1String("/pcmanfm-qt/") % app->profileName(); QDir().mkpath(cacheFileName); // ensure that the cache dir exists cacheFileName += QLatin1String("/wallpaper.cache"); // read info file QString origin; info.setFileName(cacheFileName % ".info"); if(info.open(QIODevice::ReadOnly)) { // FIXME: we need to compare mtime to see if the cache is out of date origin = QString::fromLocal8Bit(info.readLine()); info.close(); if(!origin.isEmpty()) { // try to see if we can get the size of the cached image. QImageReader reader(cacheFileName); reader.setAutoDetectImageFormat(true); QSize cachedSize = reader.size(); qDebug() << "size of cached file" << cachedSize << ", requiredSize:" << requiredSize; if(cachedSize.isValid()) { if(cachedSize == requiredSize) { // see if the cached wallpaper has the size we want QImage image = reader.read(); // return the loaded image qDebug() << "origin" << origin; if(origin == wallpaperFile_) return image; } } } } qDebug() << "no cached wallpaper. generate a new one!"; } // we don't have a cached scaled image, load the original file QImage image(wallpaperFile_); qDebug() << "size of original image" << image.size(); if(image.isNull() || image.size() == requiredSize) // if the original size is what we want return image; // scale the original image QImage scaled = image.scaled(requiredSize.width(), requiredSize.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); // FIXME: should we save the scaled image if its size is larger than the original image? if(useCache) { // write the path of the original image to the .info file if(info.open(QIODevice::WriteOnly)) { info.write(wallpaperFile_.toLocal8Bit()); info.close(); // write the scaled cache image to disk const char* format; // we keep jpg format for *.jpg files, and use png format for others. if(wallpaperFile_.endsWith(QLatin1String(".jpg"), Qt::CaseInsensitive) || wallpaperFile_.endsWith(QLatin1String(".jpeg"), Qt::CaseInsensitive)) format = "JPG"; else format = "PNG"; scaled.save(cacheFileName, format); } qDebug() << "wallpaper cached saved to " << cacheFileName; // FIXME: we might delay the write of the cached image? } return scaled; } // really generate the background pixmap according to current settings and apply it. void DesktopWindow::updateWallpaper() { // reset the brush // QPalette palette(listView_->palette()); QPalette palette(Fm::FolderView::palette()); if(wallpaperMode_ == WallpaperNone) { // use background color only palette.setBrush(QPalette::Base, bgColor_); } else { // use wallpaper QPixmap pixmap; QImage image; if(wallpaperMode_ == WallpaperTile) { // use the original size image = QImage(wallpaperFile_); pixmap = QPixmap::fromImage(image); } else if(wallpaperMode_ == WallpaperStretch) { image = loadWallpaperFile(size()); pixmap = QPixmap::fromImage(image); } else { // WallpaperCenter || WallpaperFit if(wallpaperMode_ == WallpaperCenter) { image = QImage(wallpaperFile_); // load original image } else if(wallpaperMode_ == WallpaperFit) { // calculate the desired size QSize origSize = QImageReader(wallpaperFile_).size(); // get the size of the original file if(origSize.isValid()) { QSize desiredSize = origSize; desiredSize.scale(width(), height(), Qt::KeepAspectRatio); image = loadWallpaperFile(desiredSize); // load the scaled image } } if(!image.isNull()) { pixmap = QPixmap(size()); QPainter painter(&pixmap); pixmap.fill(bgColor_); int x = (width() - image.width()) / 2; int y = (height() - image.height()) / 2; painter.drawImage(x, y, image); } } wallpaperPixmap_ = pixmap; if(!pixmap.isNull()) { QBrush brush(pixmap); palette.setBrush(QPalette::Base, brush); } else // if the image is not loaded, fallback to use background color only palette.setBrush(QPalette::Base, bgColor_); } //FIXME: we should set the pixmap to X11 root window? setPalette(palette); } void DesktopWindow::updateFromSettings(Settings& settings) { setDesktopFolder(); setWallpaperFile(settings.wallpaper()); setWallpaperMode(settings.wallpaperMode()); setFont(settings.desktopFont()); setIconSize(Fm::FolderView::IconMode, QSize(settings.bigIconSize(), settings.bigIconSize())); // setIconSize may trigger relayout of items by QListView, so we need to do the layout again. queueRelayout(); setForeground(settings.desktopFgColor()); setBackground(settings.desktopBgColor()); setShadow(settings.desktopShadowColor()); showWmMenu_ = settings.showWmMenu(); updateWallpaper(); update(); } void DesktopWindow::onFileClicked(int type, FmFileInfo* fileInfo) { if(!fileInfo && showWmMenu_) return; // do not show the popup if we want to use the desktop menu provided by the WM. View::onFileClicked(type, fileInfo); } void DesktopWindow::prepareFileMenu(Fm::FileMenu* menu) { // qDebug("DesktopWindow::prepareFileMenu"); PCManFM::View::prepareFileMenu(menu); QAction* action = new QAction(tr("Stic&k to Current Position"), menu); action->setCheckable(true); menu->insertSeparator(menu->separator2()); menu->insertAction(menu->separator2(), action); FmFileInfoList* files = menu->files(); // select exactly one item if(fm_file_info_list_get_length(files) == 1) { FmFileInfo* file = menu->firstFile(); if(customItemPos_.find(fm_file_info_get_name(file)) != customItemPos_.end()) { // the file item has a custom position action->setChecked(true); } } connect(action, &QAction::toggled, this, &DesktopWindow::onStickToCurrentPos); } void DesktopWindow::prepareFolderMenu(Fm::FolderMenu* menu) { PCManFM::View::prepareFolderMenu(menu); // remove file properties action menu->removeAction(menu->propertiesAction()); // add an action for desktop preferences instead QAction* action = menu->addAction(tr("Desktop Preferences")); connect(action, &QAction::triggered, this, &DesktopWindow::onDesktopPreferences); } void DesktopWindow::onDesktopPreferences() { static_cast(qApp)->desktopPrefrences(QString()); } void DesktopWindow::onRowsInserted(const QModelIndex& parent, int start, int end) { queueRelayout(); } void DesktopWindow::onRowsAboutToBeRemoved(const QModelIndex& parent, int start, int end) { Q_UNUSED(parent); Q_UNUSED(start); Q_UNUSED(end); if(!customItemPos_.isEmpty()) { // also delete stored custom item positions for the items currently being removed. // Here we can't rely on ProxyFolderModel::fileInfoFromIndex() because, although rows // aren't removed yet, files are already removed. QHash _customItemPos = customItemPos_; char* dektopPath = fm_path_to_str(fm_path_get_desktop()); QString desktopDir = QString(dektopPath) + QString("/"); g_free(dektopPath); QHash::iterator it; for(it = _customItemPos.begin(); it != _customItemPos.end(); ++it) { const QByteArray& name = it.key(); if(!QFile::exists(desktopDir + QString::fromUtf8(name, name.length()))) customItemPos_.remove(it.key()); } if(customItemPos_ != _customItemPos) saveItemPositions(); } queueRelayout(); } void DesktopWindow::onLayoutChanged() { queueRelayout(); } void DesktopWindow::onIndexesMoved(const QModelIndexList& indexes) { // remember the custom position for the items Q_FOREACH(const QModelIndex& index, indexes) { // Under some circumstances, Qt might emit indexMoved for // every single cells in the same row. (when QAbstractItemView::SelectItems is set) // So indexes list may contain several indixes for the same row. // Since we only care about rows, not individual cells, // let's handle column 0 of every row here. if(index.column() == 0) { FmFileInfo* file = proxyModel_->fileInfoFromIndex(index); QRect itemRect = listView_->rectForIndex(index); QPoint tl = itemRect.topLeft(); QRect workArea = qApp->desktop()->availableGeometry(screenNum_); workArea.adjust(12, 12, -12, -12); if(customItemPos_.keys(tl).isEmpty() // don't put items on each other && tl.x() >= workArea.x() && tl.y() >= workArea.y() && tl.x() + listView_->gridSize().width() <= workArea.right() && tl.y() + listView_->gridSize().height() <= workArea.bottom()) { QByteArray name = fm_file_info_get_name(file); customItemPos_[name] = tl; // qDebug() << "indexMoved:" << name << index << itemRect; } } } saveItemPositions(); queueRelayout(); } // QListView does item layout in a very inflexible way, so let's do our custom layout again. // FIXME: this is very inefficient, but due to the design flaw of QListView, this is currently the only workaround. void DesktopWindow::relayoutItems() { loadItemPositions(); // something may have changed // qDebug("relayoutItems()"); if(relayoutTimer_) { // this slot might be called from the timer, so we cannot delete it directly here. relayoutTimer_->deleteLater(); relayoutTimer_ = NULL; } QDesktopWidget* desktop = qApp->desktop(); int screen = 0; int row = 0; int rowCount = proxyModel_->rowCount(); for(;;) { if(desktop->isVirtualDesktop()) { if(screen >= desktop->numScreens()) break; }else { screen = screenNum_; } QRect workArea = desktop->availableGeometry(screen); workArea.adjust(12, 12, -12, -12); // add a 12 pixel margin to the work area // qDebug() << "workArea" << screen << workArea; // FIXME: we use an internal class declared in a private header here, which is pretty bad. QSize grid = listView_->gridSize(); QPoint pos = workArea.topLeft(); for(; row < rowCount; ++row) { QModelIndex index = proxyModel_->index(row, 0); int itemWidth = delegate_->sizeHint(listView_->getViewOptions(), index).width(); FmFileInfo* file = proxyModel_->fileInfoFromIndex(index); QByteArray name = fm_file_info_get_name(file); QHash::iterator it = customItemPos_.find(name); if(it != customItemPos_.end()) { // the item has a custom position QPoint customPos = *it; // center the contents vertically listView_->setPositionForIndex(customPos + QPoint((grid.width() - itemWidth) / 2, 0), index); // qDebug() << "set custom pos:" << name << row << index << customPos; continue; } // check if the current pos is alredy occupied by a custom item bool used = false; for(it = customItemPos_.begin(); it != customItemPos_.end(); ++it) { QPoint customPos = *it; if(QRect(customPos, grid).contains(pos)) { used = true; break; } } if(used) { // go to next pos --row; } else { // center the contents vertically listView_->setPositionForIndex(pos + QPoint((grid.width() - itemWidth) / 2, 0), index); // qDebug() << "set pos" << name << row << index << pos; } // move to next cell in the column pos.setY(pos.y() + grid.height() + listView_->spacing()); if(pos.y() + grid.height() > workArea.bottom()) { // if the next position may exceed the bottom of work area, go to the top of next column pos.setX(pos.x() + grid.width() + listView_->spacing()); pos.setY(workArea.top()); // check if the new column exceeds the right margin of work area if(pos.x() + grid.width() > workArea.right()) { if(desktop->isVirtualDesktop()) { // in virtual desktop mode, go to next screen ++screen; break; } } } } if(row >= rowCount) break; } } void DesktopWindow::loadItemPositions() { // load custom item positions customItemPos_.clear(); Settings& settings = static_cast(qApp)->settings(); QString configFile = QString("%1/desktop-items-%2.conf").arg(settings.profileDir(settings.profileName())).arg(screenNum_); QSettings file(configFile, QSettings::IniFormat); QSize grid = listView_->gridSize(); QRect workArea = qApp->desktop()->availableGeometry(screenNum_); workArea.adjust(12, 12, -12, -12); char* dektopPath = fm_path_to_str(fm_path_get_desktop()); QString desktopDir = QString(dektopPath) + QString("/"); g_free(dektopPath); Q_FOREACH(const QString& name, file.childGroups()) { if(!QFile::exists(desktopDir + name.toUtf8())) { // the file may have been removed from outside LXQT continue; } file.beginGroup(name); QVariant var = file.value("pos"); if(var.isValid()) { QPoint customPos = var.toPoint(); if (customPos.x() >= workArea.x() && customPos.y() >= workArea.y() && customPos.x() + listView_->gridSize().width() <= workArea.right() && customPos.y() + listView_->gridSize().height() <= workArea.bottom()) { // correct positions that are't aligned to the grid qreal w = qAbs((qreal)customPos.x() - (qreal)workArea.x()) / (qreal)(grid.width() + listView_->spacing()); qreal h = qAbs(customPos.y() - (qreal)workArea.y()) / (qreal)(grid.height() + listView_->spacing()); customPos.setX(workArea.x() + qRound(w) * (grid.width() + listView_->spacing())); customPos.setY(workArea.y() + qRound(h) * (grid.height() + listView_->spacing())); while(customItemPos_.values().contains(customPos)) { customPos.setY(customPos.y() + grid.height() + listView_->spacing()); if(customPos.y() + grid.height() > workArea.bottom()) { customPos.setX(customPos.x() + grid.width() + listView_->spacing()); customPos.setY(workArea.top()); } } customItemPos_[name.toUtf8()] = customPos; } } file.endGroup(); } } void DesktopWindow::saveItemPositions() { Settings& settings = static_cast(qApp)->settings(); // store custom item positions QString configFile = QString("%1/desktop-items-%2.conf").arg(settings.profileDir(settings.profileName())).arg(screenNum_); // FIXME: using QSettings here is inefficient and it's not friendly to UTF-8. QSettings file(configFile, QSettings::IniFormat); file.clear(); // remove all existing entries // FIXME: we have to remove dead entries not associated to any files? QHash::iterator it; for(it = customItemPos_.begin(); it != customItemPos_.end(); ++it) { const QByteArray& name = it.key(); QPoint pos = it.value(); file.beginGroup(QString::fromUtf8(name, name.length())); file.setValue("pos", pos); file.endGroup(); } } void DesktopWindow::onStickToCurrentPos(bool toggled) { QAction* action = static_cast(sender()); Fm::FileMenu* menu = static_cast(action->parent()); QModelIndexList indexes = listView_->selectionModel()->selectedIndexes(); if(!indexes.isEmpty()) { FmFileInfo* file = menu->firstFile(); QByteArray name = fm_file_info_get_name(file); QModelIndex index = indexes.first(); if(toggled) { // remember to current custom position QRect itemRect = listView_->rectForIndex(index); customItemPos_[name] = itemRect.topLeft(); saveItemPositions(); } else { // cancel custom position and perform relayout QHash::iterator it = customItemPos_.find(name); if(it != customItemPos_.end()) { customItemPos_.erase(it); saveItemPositions(); relayoutItems(); } } } } void DesktopWindow::queueRelayout(int delay) { // qDebug() << "queueRelayout"; if(!relayoutTimer_) { relayoutTimer_ = new QTimer(); relayoutTimer_->setSingleShot(true); connect(relayoutTimer_, &QTimer::timeout, this, &DesktopWindow::relayoutItems); relayoutTimer_->start(delay); } } // slots for file operations void DesktopWindow::onCutActivated() { if(FmPathList* paths = selectedFilePaths()) { Fm::cutFilesToClipboard(paths); fm_path_list_unref(paths); } } void DesktopWindow::onCopyActivated() { if(FmPathList* paths = selectedFilePaths()) { Fm::copyFilesToClipboard(paths); fm_path_list_unref(paths); } } void DesktopWindow::onPasteActivated() { Fm::pasteFilesFromClipboard(path()); } void DesktopWindow::onDeleteActivated() { if(FmPathList* paths = selectedFilePaths()) { Settings& settings = static_cast(qApp)->settings(); bool shiftPressed = (qApp->keyboardModifiers() & Qt::ShiftModifier ? true : false); if(settings.useTrash() && !shiftPressed) Fm::FileOperation::trashFiles(paths, settings.confirmTrash()); else Fm::FileOperation::deleteFiles(paths, settings.confirmDelete()); fm_path_list_unref(paths); } } void DesktopWindow::onRenameActivated() { if(FmFileInfoList* files = selectedFiles()) { for(GList* l = fm_file_info_list_peek_head_link(files); l; l = l->next) { FmFileInfo* info = FM_FILE_INFO(l->data); Fm::renameFile(info, NULL); fm_file_info_list_unref(files); } } } void DesktopWindow::onFilePropertiesActivated() { if(FmFileInfoList* files = selectedFiles()) { Fm::FilePropsDialog::showForFiles(files); fm_file_info_list_unref(files); } } static void forwardMouseEventToRoot(QMouseEvent* event) { xcb_ungrab_pointer(QX11Info::connection(), event->timestamp()); // forward the event to the root window xcb_button_press_event_t xcb_event; uint32_t mask = 0; xcb_event.state = 0; switch(event->type()) { case QEvent::MouseButtonPress: xcb_event.response_type = XCB_BUTTON_PRESS; mask = XCB_EVENT_MASK_BUTTON_PRESS; break; case QEvent::MouseButtonRelease: xcb_event.response_type = XCB_BUTTON_RELEASE; mask = XCB_EVENT_MASK_BUTTON_RELEASE; break; default: return; } // convert Qt button to XCB button switch(event->button()) { case Qt::LeftButton: xcb_event.detail = 1; xcb_event.state |= XCB_BUTTON_MASK_1; break; case Qt::MiddleButton: xcb_event.detail = 2; xcb_event.state |= XCB_BUTTON_MASK_2; break; case Qt::RightButton: xcb_event.detail = 3; xcb_event.state |= XCB_BUTTON_MASK_3; break; default: xcb_event.detail = 0; } // convert Qt modifiers to XCB states if(event->modifiers() & Qt::ShiftModifier) xcb_event.state |= XCB_MOD_MASK_SHIFT; if(event->modifiers() & Qt::ControlModifier) xcb_event.state |= XCB_MOD_MASK_SHIFT; if(event->modifiers() & Qt::AltModifier) xcb_event.state |= XCB_MOD_MASK_1; xcb_event.sequence = 0; xcb_event.time = event->timestamp(); WId root = QX11Info::appRootWindow(QX11Info::appScreen()); xcb_event.event = root; xcb_event.root = root; xcb_event.child = 0; xcb_event.root_x = event->globalX(); xcb_event.root_y = event->globalY(); xcb_event.event_x = event->x(); xcb_event.event_y = event->y(); xcb_event.same_screen = 1; xcb_send_event(QX11Info::connection(), 0, root, mask, (char*)&xcb_event); xcb_flush(QX11Info::connection()); } bool DesktopWindow::event(QEvent* event) { switch(event->type()) { case QEvent::WinIdChange: { qDebug() << "winid change:" << effectiveWinId(); if(effectiveWinId() == 0) break; // set freedesktop.org EWMH hints properly if(QX11Info::isPlatformX11() && QX11Info::connection()) { xcb_connection_t* con = QX11Info::connection(); const char* atom_name = "_NET_WM_WINDOW_TYPE_DESKTOP"; xcb_atom_t atom = xcb_intern_atom_reply(con, xcb_intern_atom(con, 0, strlen(atom_name), atom_name), NULL)->atom; const char* prop_atom_name = "_NET_WM_WINDOW_TYPE"; xcb_atom_t prop_atom = xcb_intern_atom_reply(con, xcb_intern_atom(con, 0, strlen(prop_atom_name), prop_atom_name), NULL)->atom; xcb_atom_t XA_ATOM = 4; xcb_change_property(con, XCB_PROP_MODE_REPLACE, effectiveWinId(), prop_atom, XA_ATOM, 32, 1, &atom); } break; } #undef FontChange // FontChange is defined in the headers of XLib and clashes with Qt, let's undefine it. case QEvent::StyleChange: case QEvent::FontChange: queueRelayout(); break; default: break; } return QWidget::event(event); } #undef FontChange // this seems to be defined in Xlib headers as a macro, undef it! bool DesktopWindow::eventFilter(QObject * watched, QEvent * event) { if(watched == listView_) { switch(event->type()) { case QEvent::StyleChange: case QEvent::FontChange: if(model_) queueRelayout(); break; default: break; } } else if(watched == listView_->viewport()) { switch(event->type()) { case QEvent::MouseButtonPress: case QEvent::MouseButtonRelease: if(showWmMenu_) { QMouseEvent* e = static_cast(event); // If we want to show the desktop menus provided by the window manager instead of ours, // we have to forward the mouse events we received to the root window. // check if the user click on blank area QModelIndex index = listView_->indexAt(e->pos()); if(!index.isValid() && e->button() != Qt::LeftButton) { forwardMouseEventToRoot(e); } } break; default: break; } } return false; } void DesktopWindow::childDropEvent(QDropEvent* e) { bool moveItem = false; if(e->source() == listView_ && e->keyboardModifiers() == Qt::NoModifier) { // drag source is our list view, and no other modifier keys are pressed // => we're dragging desktop items const QMimeData *mimeData = e->mimeData(); if(mimeData->hasFormat("application/x-qabstractitemmodeldatalist")) { QModelIndex dropIndex = listView_->indexAt(e->pos()); if(dropIndex.isValid()) { // drop on an item QModelIndexList selected = selectedIndexes(); // the dragged items if(selected.contains(dropIndex)) { // drop on self, ignore moveItem = true; } } else { // drop on a blank area moveItem = true; } } } if(moveItem) e->accept(); else Fm::FolderView::childDropEvent(e); } void DesktopWindow::closeEvent(QCloseEvent *event) { // prevent the desktop window from being closed. event->ignore(); } void DesktopWindow::setScreenNum(int num) { if(screenNum_ != num) { screenNum_ = num; queueRelayout(); } } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/desktopwindow.h000066400000000000000000000067671263124606600203550ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_DESKTOPWINDOW_H #define PCMANFM_DESKTOPWINDOW_H #include "view.h" #include "launcher.h" #include #include #include #include namespace Fm { class CachedFolderModel; class ProxyFolderModel; class FolderViewListView; } namespace PCManFM { class DesktopItemDelegate; class Settings; class DesktopWindow : public View { Q_OBJECT public: friend class Application; enum WallpaperMode { WallpaperNone, WallpaperStretch, WallpaperFit, WallpaperCenter, WallpaperTile }; explicit DesktopWindow(int screenNum); virtual ~DesktopWindow(); void setForeground(const QColor& color); void setShadow(const QColor& color); void setBackground(const QColor& color); void setDesktopFolder(); void setWallpaperFile(QString filename); void setWallpaperMode(WallpaperMode mode = WallpaperStretch); // void setWallpaperAlpha(qreal alpha); void updateWallpaper(); void updateFromSettings(Settings& settings); void queueRelayout(int delay = 0); int screenNum() const { return screenNum_; } void setScreenNum(int num); protected: virtual void prepareFolderMenu(Fm::FolderMenu* menu); virtual void prepareFileMenu(Fm::FileMenu* menu); virtual void resizeEvent(QResizeEvent* event); virtual void onFileClicked(int type, FmFileInfo* fileInfo); void loadItemPositions(); void saveItemPositions(); QImage loadWallpaperFile(QSize requiredSize); virtual bool event(QEvent* event); virtual bool eventFilter(QObject * watched, QEvent * event); virtual void childDropEvent(QDropEvent* e); virtual void closeEvent(QCloseEvent *event); protected Q_SLOTS: void onOpenDirRequested(FmPath* path, int target); void onDesktopPreferences(); void onRowsAboutToBeRemoved(const QModelIndex& parent, int start, int end); void onRowsInserted(const QModelIndex& parent, int start, int end); void onLayoutChanged(); void onIndexesMoved(const QModelIndexList& indexes); void relayoutItems(); void onStickToCurrentPos(bool toggled); // void updateWorkArea(); // file operations void onCutActivated(); void onCopyActivated(); void onPasteActivated(); void onRenameActivated(); void onDeleteActivated(); void onFilePropertiesActivated(); private: Fm::ProxyFolderModel* proxyModel_; Fm::CachedFolderModel* model_; FmFolder* folder_; Fm::FolderViewListView* listView_; QColor fgColor_; QColor bgColor_; QColor shadowColor_; QString wallpaperFile_; WallpaperMode wallpaperMode_; QPixmap wallpaperPixmap_; DesktopItemDelegate* delegate_; Launcher fileLauncher_; bool showWmMenu_; int screenNum_; QHash customItemPos_; QTimer* relayoutTimer_; }; } #endif // PCMANFM_DESKTOPWINDOW_H pcmanfm-qt-0.10.1/pcmanfm/file-search.ui000066400000000000000000000345131263124606600200120ustar00rootroot00000000000000 FindFilesDialog 0 0 431 416 Find Files 0 Name/Location File name patterns Pattern: Case insensitive Use regular expression Places to search Add Remove Qt::Vertical 20 40 Search in sub directories Search hidden files File Type File Type Only search for files of following types: Text files Image files Audio files Video files Documents Qt::Vertical 20 40 Content File contains Case insensitive Use regular expression Qt::Vertical 20 40 Properties File Size Bigger than: false false Smaller than: false false Last Modified Time Earlier than: false true Later than: false true Qt::Vertical 20 40 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() FindFilesDialog accept() 222 344 157 274 buttonBox rejected() FindFilesDialog reject() 290 350 286 274 checkBox_14 toggled(bool) dateTimeEdit setEnabled(bool) 129 166 294 170 checkBox_15 toggled(bool) dateTimeEdit_2 setEnabled(bool) 91 188 302 195 checkBox_12 toggled(bool) spinBox setEnabled(bool) 102 73 184 77 checkBox_12 toggled(bool) comboBox setEnabled(bool) 49 72 357 76 checkBox_13 toggled(bool) spinBox_2 setEnabled(bool) 123 101 186 104 checkBox_13 toggled(bool) comboBox_2 setEnabled(bool) 53 98 339 108 pcmanfm-qt-0.10.1/pcmanfm/launcher.cpp000066400000000000000000000037551263124606600176020ustar00rootroot00000000000000/* * * Copyright (C) 2014 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #include "launcher.h" #include "mainwindow.h" #include "application.h" namespace PCManFM { Launcher::Launcher(PCManFM::MainWindow* mainWindow): Fm::FileLauncher(), mainWindow_(mainWindow) { Application* app = static_cast(qApp); setQuickExec(app->settings().quickExec()); } Launcher::~Launcher() { } bool Launcher::openFolder(GAppLaunchContext* ctx, GList* folder_infos, GError** err) { GList* l = folder_infos; FmFileInfo* fi = FM_FILE_INFO(l->data); Application* app = static_cast(qApp); MainWindow* mainWindow = mainWindow_; if(!mainWindow) { mainWindow = new MainWindow(fm_file_info_get_path(fi)); mainWindow->resize(app->settings().windowWidth(), app->settings().windowHeight()); if(app->settings().windowMaximized()) { mainWindow->setWindowState(mainWindow->windowState() | Qt::WindowMaximized); } } else mainWindow->chdir(fm_file_info_get_path(fi)); l = l->next; for(; l; l = l->next) { fi = FM_FILE_INFO(l->data); mainWindow->addTab(fm_file_info_get_path(fi)); } mainWindow->show(); mainWindow->raise(); return true; } } //namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/launcher.h000066400000000000000000000024061263124606600172370ustar00rootroot00000000000000/* * * Copyright (C) 2014 * * 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 PCMANFM_LAUNCHER_H #define PCMANFM_LAUNCHER_H #include namespace PCManFM { class MainWindow; class Launcher : public Fm::FileLauncher { public: Launcher(MainWindow* mainWindow = NULL); ~Launcher(); protected: virtual bool openFolder(GAppLaunchContext* ctx, GList* folder_infos, GError** err); private: MainWindow* mainWindow_; }; } #endif // PCMANFM_LAUNCHER_H pcmanfm-qt-0.10.1/pcmanfm/main-win.ui000066400000000000000000000471401263124606600173470ustar00rootroot00000000000000 MainWindow 0 0 460 369 File Manager .. 0 0 0 0 0 0 true Qt::Horizontal 0 0 2 1 0 0 0 0 0 Filter by string... true 0 0 460 23 &File C&reate New &Help &View &Sorting &Edit &Bookmarks &Go &Tool Main Toolbar false false TopToolBarArea false .. Go &Up Go Up Alt+Up .. &Home Alt+Home .. &Reload F5 .. Go .. Quit .. &About .. &New Window New Window Ctrl+N true Show &Hidden Ctrl+H .. &Computer .. &Trash &Network .. &Desktop .. &Add to Bookmarks &Applications Reload true &Icon View true &Compact View true &Detailed List true &Thumbnail View .. Cu&t Ctrl+X .. &Copy Ctrl+C .. &Paste Ctrl+V Select &All Ctrl+A Pr&eferences true &Ascending true &Descending true &By File Name true By &Modification Time true By File &Type true By &Owner true &Folder First .. New &Tab New Tab Ctrl+T .. Go &Back Go Back Alt+Left .. Go &Forward Go Forward Alt+Right &Invert Selection .. &Delete Del &Rename F2 C&lose Tab Ctrl+W File &Properties Alt+Return &Folder Properties true &Case Sensitive true By File &Size &Close Window Edit Bookmarks Open &Terminal F4 Open as &Root &Edit Bookmarks .. &Folder Ctrl+Shift+N .. &Blank File Ctrl+Alt+N &Find Files F3 true &Filter .. Close &left tabs .. Close &right tabs Close &other tabs PCManFM::TabBar QWidget
tabbar.h
1
Fm::SidePane QWidget
libfm-qt/sidepane.h
1
pcmanfm-qt-0.10.1/pcmanfm/mainwindow.cpp000066400000000000000000001042031263124606600201430ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "mainwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include "tabpage.h" #include "launcher.h" #include #include #include #include #include #include #include "ui_about.h" #include "application.h" #include // #include "qmodeltest/modeltest.h" using namespace Fm; namespace PCManFM { MainWindow::MainWindow(FmPath* path): QMainWindow(), fileLauncher_(this), rightClickIndex(-1) { Settings& settings = static_cast(qApp)->settings(); setAttribute(Qt::WA_DeleteOnClose); // setup user interface ui.setupUi(this); // hide menu items that are not usable //if(!uriExists("computer:///")) // ui.actionComputer->setVisible(false); if(!settings.supportTrash()) ui.actionTrash->setVisible(false); // FIXME: add an option to hide network:/// // We cannot use uriExists() here since calling this on "network:///" // is very slow and blocking. //if(!uriExists("network:///")) // ui.actionNetwork->setVisible(false); // add a context menu for showing browse history to back and forward buttons QToolButton* forwardButton = static_cast(ui.toolBar->widgetForAction(ui.actionGoForward)); forwardButton->setContextMenuPolicy(Qt::CustomContextMenu); connect(forwardButton, &QToolButton::customContextMenuRequested, this, &MainWindow::onBackForwardContextMenu); QToolButton* backButton = static_cast(ui.toolBar->widgetForAction(ui.actionGoBack)); backButton->setContextMenuPolicy(Qt::CustomContextMenu); connect(backButton, &QToolButton::customContextMenuRequested, this, &MainWindow::onBackForwardContextMenu); // tabbed browsing interface ui.tabBar->setDocumentMode(true); ui.tabBar->setTabsClosable(true); ui.tabBar->setElideMode(Qt::ElideRight); ui.tabBar->setExpanding(false); ui.tabBar->setMovable(true); // reorder the tabs by dragging #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) // switch to the tab under the cursor during dnd. ui.tabBar->setChangeCurrentOnDrag(true); ui.tabBar->setAcceptDrops(true); #endif ui.tabBar->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui.actionCloseRight, &QAction::triggered, this, &MainWindow::closeRightTabs); connect(ui.actionCloseLeft, &QAction::triggered, this, &MainWindow::closeLeftTabs); connect(ui.actionCloseOther, &QAction::triggered, this, &MainWindow::closeOtherTabs); connect(ui.tabBar, &QTabBar::currentChanged, this, &MainWindow::onTabBarCurrentChanged); connect(ui.tabBar, &QTabBar::tabCloseRequested, this, &MainWindow::onTabBarCloseRequested); connect(ui.tabBar, &QTabBar::tabMoved, this, &MainWindow::onTabBarTabMoved); connect(ui.tabBar, &QTabBar::customContextMenuRequested, this, &MainWindow::tabContextMenu); connect(ui.stackedWidget, &QStackedWidget::widgetRemoved, this, &MainWindow::onStackedWidgetWidgetRemoved); // FIXME: should we make the filter bar a per-view configuration? ui.filterBar->setVisible(settings.showFilter()); ui.actionFilter->setChecked(settings.showFilter()); connect(ui.filterBar, &QLineEdit::textChanged, this, &MainWindow::onFilterStringChanged); // side pane ui.sidePane->setIconSize(QSize(settings.sidePaneIconSize(), settings.sidePaneIconSize())); ui.sidePane->setMode(settings.sidePaneMode()); connect(ui.sidePane, &Fm::SidePane::chdirRequested, this, &MainWindow::onSidePaneChdirRequested); connect(ui.sidePane, &Fm::SidePane::openFolderInNewWindowRequested, this, &MainWindow::onSidePaneOpenFolderInNewWindowRequested); connect(ui.sidePane, &Fm::SidePane::openFolderInNewTabRequested, this, &MainWindow::onSidePaneOpenFolderInNewTabRequested); connect(ui.sidePane, &Fm::SidePane::openFolderInTerminalRequested, this, &MainWindow::onSidePaneOpenFolderInTerminalRequested); connect(ui.sidePane, &Fm::SidePane::createNewFolderRequested, this, &MainWindow::onSidePaneCreateNewFolderRequested); connect(ui.sidePane, &Fm::SidePane::modeChanged, this, &MainWindow::onSidePaneModeChanged); // detect change of splitter position connect(ui.splitter, &QSplitter::splitterMoved, this, &MainWindow::onSplitterMoved); // path bar pathEntry = new Fm::PathEdit(this); connect(pathEntry, &Fm::PathEdit::returnPressed, this, &MainWindow::onPathEntryReturnPressed); ui.toolBar->insertWidget(ui.actionGo, pathEntry); // add filesystem info to status bar fsInfoLabel = new QLabel(ui.statusbar); ui.statusbar->addPermanentWidget(fsInfoLabel); // setup the splitter ui.splitter->setStretchFactor(1, 1); // only the right pane can be stretched QList sizes; sizes.append(settings.splitterPos()); sizes.append(300); ui.splitter->setSizes(sizes); // load bookmark menu bookmarks = fm_bookmarks_dup(); g_signal_connect(bookmarks, "changed", G_CALLBACK(onBookmarksChanged), this); loadBookmarksMenu(); // Fix the menu groups which is not done by Qt designer // To my suprise, this was supported in Qt designer 3 :-( QActionGroup* group = new QActionGroup(ui.menu_View); group->setExclusive(true); group->addAction(ui.actionIconView); group->addAction(ui.actionCompactView); group->addAction(ui.actionThumbnailView); group->addAction(ui.actionDetailedList); group = new QActionGroup(ui.menuSorting); group->setExclusive(true); group->addAction(ui.actionByFileName); group->addAction(ui.actionByMTime); group->addAction(ui.actionByFileSize); group->addAction(ui.actionByFileType); group->addAction(ui.actionByOwner); group = new QActionGroup(ui.menuSorting); group->setExclusive(true); group->addAction(ui.actionAscending); group->addAction(ui.actionDescending); // create shortcuts QShortcut* shortcut; shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_L), this); connect(shortcut, &QShortcut::activated, pathEntry, static_cast(&Fm::PathEdit::setFocus)); shortcut = new QShortcut(Qt::ALT + Qt::Key_D, this); connect(shortcut, &QShortcut::activated, pathEntry, static_cast(&QWidget::setFocus)); shortcut = new QShortcut(Qt::CTRL + Qt::Key_Tab, this); connect(shortcut, &QShortcut::activated, this, &MainWindow::onShortcutNextTab); shortcut = new QShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_Tab, this); connect(shortcut, &QShortcut::activated, this, &MainWindow::onShortcutPrevTab); // Add Ctrl+PgUp and Ctrl+PgDown as well, because they are common in Firefox // , Opera, Google Chromium/Google Chrome and most other tab-using // applications. shortcut = new QShortcut(Qt::CTRL + Qt::Key_PageDown, this); connect(shortcut, &QShortcut::activated, this, &MainWindow::onShortcutNextTab); shortcut = new QShortcut(Qt::CTRL + Qt::Key_PageUp, this); connect(shortcut, &QShortcut::activated, this, &MainWindow::onShortcutPrevTab); int i; for(i = 0; i < 10; ++i) { shortcut = new QShortcut(QKeySequence(Qt::ALT + Qt::Key_0 + i), this); connect(shortcut, &QShortcut::activated, this, &MainWindow::onShortcutJumpToTab); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_0 + i), this); connect(shortcut, &QShortcut::activated, this, &MainWindow::onShortcutJumpToTab); } shortcut = new QShortcut(QKeySequence(Qt::Key_Backspace), this); connect(shortcut, &QShortcut::activated, this, &MainWindow::on_actionGoUp_triggered); shortcut = new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_Delete), this); connect(shortcut, &QShortcut::activated, this, &MainWindow::on_actionDelete_triggered); if(QToolButton* clearButton = ui.filterBar->findChild()) { clearButton->setToolTip(tr("Clear text (Ctrl+K)")); shortcut = new QShortcut(Qt::CTRL + Qt::Key_K, this); connect(shortcut, &QShortcut::activated, ui.filterBar, &QLineEdit::clear); } if(path) addTab(path); // size from settings if(settings.rememberWindowSize()) { resize(settings.windowWidth(), settings.windowHeight()); if(settings.windowMaximized()) setWindowState(windowState() | Qt::WindowMaximized); } } MainWindow::~MainWindow() { if(bookmarks) { g_signal_handlers_disconnect_by_func(bookmarks, (gpointer)G_CALLBACK(onBookmarksChanged), this); g_object_unref(bookmarks); } } void MainWindow::chdir(FmPath* path) { TabPage* page = currentPage(); if(page) { ui.filterBar->clear(); page->chdir(path, true); updateUIForCurrentPage(); } } // add a new tab void MainWindow::addTab(FmPath* path) { Settings& settings = static_cast(qApp)->settings(); TabPage* newPage = new TabPage(path, this); newPage->setFileLauncher(&fileLauncher_); int index = ui.stackedWidget->addWidget(newPage); connect(newPage, &TabPage::titleChanged, this, &MainWindow::onTabPageTitleChanged); connect(newPage, &TabPage::statusChanged, this, &MainWindow::onTabPageStatusChanged); connect(newPage, &TabPage::openDirRequested, this, &MainWindow::onTabPageOpenDirRequested); connect(newPage, &TabPage::sortFilterChanged, this, &MainWindow::onTabPageSortFilterChanged); connect(newPage, &TabPage::backwardRequested, this, &MainWindow::on_actionGoBack_triggered); connect(newPage, &TabPage::forwardRequested, this, &MainWindow::on_actionGoForward_triggered); ui.tabBar->insertTab(index, newPage->title()); if(!settings.alwaysShowTabs()) { ui.tabBar->setVisible(ui.tabBar->count() > 1); } } void MainWindow::onPathEntryReturnPressed() { QString text = pathEntry->text(); QByteArray utext = text.toUtf8(); FmPath* path = fm_path_new_for_display_name(utext); chdir(path); fm_path_unref(path); } void MainWindow::on_actionGoUp_triggered() { TabPage* page = currentPage(); if(page) { ui.filterBar->clear(); page->up(); updateUIForCurrentPage(); } } void MainWindow::on_actionGoBack_triggered() { TabPage* page = currentPage(); if(page) { ui.filterBar->clear(); page->backward(); updateUIForCurrentPage(); } } void MainWindow::on_actionGoForward_triggered() { TabPage* page = currentPage(); if(page) { ui.filterBar->clear(); page->forward(); updateUIForCurrentPage(); } } void MainWindow::on_actionHome_triggered() { chdir(fm_path_get_home()); } void MainWindow::on_actionReload_triggered() { currentPage()->reload(); } void MainWindow::on_actionGo_triggered() { onPathEntryReturnPressed(); } void MainWindow::on_actionNewTab_triggered() { FmPath* path = currentPage()->path(); addTab(path); } void MainWindow::on_actionNewWin_triggered() { FmPath* path = currentPage()->path(); (new MainWindow(path))->show(); } void MainWindow::on_actionNewFolder_triggered() { if(TabPage* tabPage = currentPage()) { FmPath* dirPath = tabPage->folderView()->path(); if(dirPath) createFileOrFolder(CreateNewFolder, dirPath); } } void MainWindow::on_actionNewBlankFile_triggered() { if(TabPage* tabPage = currentPage()) { FmPath* dirPath = tabPage->folderView()->path(); if(dirPath) createFileOrFolder(CreateNewTextFile, dirPath); } } void MainWindow::on_actionCloseTab_triggered() { closeTab(ui.tabBar->currentIndex()); } void MainWindow::on_actionCloseWindow_triggered() { // FIXME: should we save state here? close(); // the window will be deleted automatically on close } void MainWindow::on_actionFileProperties_triggered() { TabPage* page = currentPage(); if(page) { FmFileInfoList* files = page->selectedFiles(); if(files) { Fm::FilePropsDialog::showForFiles(files); fm_file_info_list_unref(files); } } } void MainWindow::on_actionFolderProperties_triggered() { TabPage* page = currentPage(); if(page) { FmFolder* folder = page->folder(); if(folder) { FmFileInfo* info = fm_folder_get_info(folder); if(info) Fm::FilePropsDialog::showForFile(info); } } } void MainWindow::on_actionShowHidden_triggered(bool checked) { TabPage* tabPage = currentPage(); tabPage->setShowHidden(checked); ui.sidePane->setShowHidden(checked); static_cast(qApp)->settings().setShowHidden(checked); } void MainWindow::on_actionByFileName_triggered(bool checked) { currentPage()->sort(Fm::FolderModel::ColumnFileName, currentPage()->sortOrder()); } void MainWindow::on_actionByMTime_triggered(bool checked) { currentPage()->sort(Fm::FolderModel::ColumnFileMTime, currentPage()->sortOrder()); } void MainWindow::on_actionByOwner_triggered(bool checked) { currentPage()->sort(Fm::FolderModel::ColumnFileOwner, currentPage()->sortOrder()); } void MainWindow::on_actionByFileSize_triggered(bool checked) { currentPage()->sort(Fm::FolderModel::ColumnFileSize, currentPage()->sortOrder()); } void MainWindow::on_actionByFileType_triggered(bool checked) { currentPage()->sort(Fm::FolderModel::ColumnFileType, currentPage()->sortOrder()); } void MainWindow::on_actionAscending_triggered(bool checked) { currentPage()->sort(currentPage()->sortColumn(), Qt::AscendingOrder); } void MainWindow::on_actionDescending_triggered(bool checked) { currentPage()->sort(currentPage()->sortColumn(), Qt::DescendingOrder); } void MainWindow::on_actionCaseSensitive_triggered(bool checked) { currentPage()->setSortCaseSensitive(checked); } void MainWindow::on_actionFolderFirst_triggered(bool checked) { currentPage()->setSortFolderFirst(checked); } void MainWindow::on_actionFilter_triggered(bool checked) { ui.filterBar->setVisible(checked); static_cast(qApp)->settings().setShowFilter(checked); } void MainWindow::on_actionComputer_triggered() { FmPath* path = fm_path_new_for_uri("computer:///"); chdir(path); fm_path_unref(path); } void MainWindow::on_actionApplications_triggered() { chdir(fm_path_get_apps_menu()); } void MainWindow::on_actionTrash_triggered() { chdir(fm_path_get_trash()); } void MainWindow::on_actionNetwork_triggered() { FmPath* path = fm_path_new_for_uri("network:///"); chdir(path); fm_path_unref(path); } void MainWindow::on_actionDesktop_triggered() { chdir(fm_path_get_desktop()); } void MainWindow::on_actionAddToBookmarks_triggered() { TabPage* page = currentPage(); if(page) { FmPath* cwd = page->path(); if(cwd) { char* dispName = fm_path_display_basename(cwd); fm_bookmarks_insert(bookmarks, cwd, dispName, -1); g_free(dispName); } } } void MainWindow::on_actionEditBookmarks_triggered() { Application* app = static_cast(qApp); app->editBookmarks(); } void MainWindow::on_actionAbout_triggered() { // the about dialog class AboutDialog : public QDialog { public: explicit AboutDialog(QWidget* parent = 0, Qt::WindowFlags f = 0) { ui.setupUi(this); ui.version->setText(tr("Version: %1").arg(PCMANFM_QT_VERSION)); } private: Ui::AboutDialog ui; }; AboutDialog dialog(this); dialog.exec(); } void MainWindow::on_actionIconView_triggered() { currentPage()->setViewMode(Fm::FolderView::IconMode); } void MainWindow::on_actionCompactView_triggered() { currentPage()->setViewMode(Fm::FolderView::CompactMode); } void MainWindow::on_actionDetailedList_triggered() { currentPage()->setViewMode(Fm::FolderView::DetailedListMode); } void MainWindow::on_actionThumbnailView_triggered() { currentPage()->setViewMode(Fm::FolderView::ThumbnailMode); } void MainWindow::onTabBarCloseRequested(int index) { closeTab(index); } void MainWindow::onTabBarTabMoved(int from, int to) { // a tab in the tab bar is moved by the user, so we have to move the // corredponding tab page in the stacked widget to the new position, too. QWidget* page = ui.stackedWidget->widget(from); if(page) { // we're not going to delete the tab page, so here we block signals // to avoid calling the slot onStackedWidgetWidgetRemoved() before // removing the page. Otherwise the page widget will be destroyed. ui.stackedWidget->blockSignals(true); ui.stackedWidget->removeWidget(page); ui.stackedWidget->insertWidget(to, page); // insert the page to the new position ui.stackedWidget->blockSignals(false); // unblock signals ui.stackedWidget->setCurrentWidget(page); } } void MainWindow::onFilterStringChanged(QString str) { if(TabPage* tabPage = currentPage()) { // appy filter only if needed (not if tab is changed) if(str != tabPage->getFilterStr()) { tabPage->setFilterStr(str); tabPage->applyFilter(); } } } void MainWindow::closeTab(int index) { QWidget* page = ui.stackedWidget->widget(index); if(page) { ui.stackedWidget->removeWidget(page); // this does not delete the page widget delete page; // NOTE: we do not remove the tab here. // it'll be donoe in onStackedWidgetWidgetRemoved() } } void MainWindow::resizeEvent(QResizeEvent *event) { QMainWindow::resizeEvent(event); Settings& settings = static_cast(qApp)->settings(); if(settings.rememberWindowSize()) { settings.setLastWindowMaximized(isMaximized()); if(!isMaximized()) { settings.setLastWindowWidth(width()); settings.setLastWindowHeight(height()); } } } void MainWindow::closeEvent(QCloseEvent *event) { QWidget::closeEvent(event); Settings& settings = static_cast(qApp)->settings(); if(settings.rememberWindowSize()) { settings.setLastWindowMaximized(isMaximized()); if(!isMaximized()) { settings.setLastWindowWidth(width()); settings.setLastWindowHeight(height()); } } } void MainWindow::onTabBarCurrentChanged(int index) { ui.stackedWidget->setCurrentIndex(index); if(TabPage* page = static_cast(ui.stackedWidget->widget(index))) ui.filterBar->setText(page->getFilterStr()); updateUIForCurrentPage(); } void MainWindow::updateStatusBarForCurrentPage() { TabPage* tabPage = currentPage(); QString text = tabPage->statusText(TabPage::StatusTextSelectedFiles); if(text.isEmpty()) text = tabPage->statusText(TabPage::StatusTextNormal); ui.statusbar->showMessage(text); text = tabPage->statusText(TabPage::StatusTextFSInfo); fsInfoLabel->setText(text); fsInfoLabel->setVisible(!text.isEmpty()); } void MainWindow::updateViewMenuForCurrentPage() { TabPage* tabPage = currentPage(); if(tabPage) { // update menus. FIXME: should we move this to another method? ui.actionShowHidden->setChecked(tabPage->showHidden()); // view mode QAction* modeAction = NULL; switch(tabPage->viewMode()) { case Fm::FolderView::IconMode: modeAction = ui.actionIconView; break; case Fm::FolderView::CompactMode: modeAction = ui.actionCompactView; break; case Fm::FolderView::DetailedListMode: modeAction = ui.actionDetailedList; break; case Fm::FolderView::ThumbnailMode: modeAction = ui.actionThumbnailView; break; } Q_ASSERT(modeAction != NULL); modeAction->setChecked(true); // sort menu QAction* sortActions[Fm::FolderModel::NumOfColumns]; sortActions[Fm::FolderModel::ColumnFileName] = ui.actionByFileName; sortActions[Fm::FolderModel::ColumnFileMTime] = ui.actionByMTime; sortActions[Fm::FolderModel::ColumnFileSize] = ui.actionByFileSize; sortActions[Fm::FolderModel::ColumnFileType] = ui.actionByFileType; sortActions[Fm::FolderModel::ColumnFileOwner] = ui.actionByOwner; sortActions[tabPage->sortColumn()]->setChecked(true); if(tabPage->sortOrder() == Qt::AscendingOrder) ui.actionAscending->setChecked(true); else ui.actionDescending->setChecked(true); ui.actionCaseSensitive->setChecked(tabPage->sortCaseSensitive()); ui.actionFolderFirst->setChecked(tabPage->sortFolderFirst()); } } void MainWindow::updateUIForCurrentPage() { TabPage* tabPage = currentPage(); if(tabPage) { setWindowTitle(tabPage->title()); pathEntry->setText(tabPage->pathName()); ui.statusbar->showMessage(tabPage->statusText()); fsInfoLabel->setText(tabPage->statusText(TabPage::StatusTextFSInfo)); tabPage->folderView()->childView()->setFocus(); // update side pane ui.sidePane->setCurrentPath(tabPage->path()); ui.sidePane->setShowHidden(tabPage->showHidden()); // update back/forward/up toolbar buttons ui.actionGoUp->setEnabled(tabPage->canUp()); ui.actionGoBack->setEnabled(tabPage->canBackward()); ui.actionGoForward->setEnabled(tabPage->canForward()); updateViewMenuForCurrentPage(); updateStatusBarForCurrentPage(); } } void MainWindow::onStackedWidgetWidgetRemoved(int index) { // qDebug("onStackedWidgetWidgetRemoved: %d", index); // need to remove associated tab from tabBar ui.tabBar->removeTab(index); if(ui.tabBar->count() == 0) { // this is the last one deleteLater(); // destroy the whole window // qDebug("delete window"); } else { Settings& settings = static_cast(qApp)->settings(); if(!settings.alwaysShowTabs() && ui.tabBar->count() == 1) { ui.tabBar->setVisible(false); } } } void MainWindow::onTabPageTitleChanged(QString title) { TabPage* tabPage = static_cast(sender()); int index = ui.stackedWidget->indexOf(tabPage); if(index >= 0) ui.tabBar->setTabText(index, title); if(tabPage == currentPage()) setWindowTitle(title); } void MainWindow::onTabPageStatusChanged(int type, QString statusText) { TabPage* tabPage = static_cast(sender()); if(tabPage == currentPage()) { switch(type) { case TabPage::StatusTextNormal: case TabPage::StatusTextSelectedFiles: { // FIXME: updating the status text so frequently is a little bit ineffiecient QString text = statusText = tabPage->statusText(TabPage::StatusTextSelectedFiles); if(text.isEmpty()) ui.statusbar->showMessage(tabPage->statusText(TabPage::StatusTextNormal)); else ui.statusbar->showMessage(text); break; } case TabPage::StatusTextFSInfo: fsInfoLabel->setText(tabPage->statusText(TabPage::StatusTextFSInfo)); fsInfoLabel->setVisible(!statusText.isEmpty()); break; } } } void MainWindow::onTabPageOpenDirRequested(FmPath* path, int target) { switch(target) { case OpenInCurrentTab: chdir(path); break; case OpenInNewTab: addTab(path); break; case OpenInNewWindow: { (new MainWindow(path))->show(); break; } } } void MainWindow::onTabPageSortFilterChanged() { TabPage* tabPage = static_cast(sender()); if(tabPage == currentPage()) { updateViewMenuForCurrentPage(); Settings& settings = static_cast(qApp)->settings(); settings.setSortColumn(static_cast(tabPage->sortColumn())); settings.setSortOrder(tabPage->sortOrder()); settings.setSortFolderFirst(tabPage->sortFolderFirst()); } } void MainWindow::onSidePaneChdirRequested(int type, FmPath* path) { // FIXME: use enum for type value or change it to button. if(type == 0) // left button (default) chdir(path); else if(type == 1) // middle button addTab(path); else if(type == 2) // new window (new MainWindow(path))->show(); } void MainWindow::onSidePaneOpenFolderInNewWindowRequested(FmPath* path) { (new MainWindow(path))->show(); } void MainWindow::onSidePaneOpenFolderInNewTabRequested(FmPath* path) { addTab(path); } void MainWindow::onSidePaneOpenFolderInTerminalRequested(FmPath* path) { Application* app = static_cast(qApp); app->openFolderInTerminal(path); } void MainWindow::onSidePaneCreateNewFolderRequested(FmPath* path) { createFileOrFolder(CreateNewFolder, path); } void MainWindow::onSidePaneModeChanged(Fm::SidePane::Mode mode) { static_cast(qApp)->settings().setSidePaneMode(mode); } void MainWindow::onSplitterMoved(int pos, int index) { Application* app = static_cast(qApp); app->settings().setSplitterPos(pos); } void MainWindow::loadBookmarksMenu() { GList* allBookmarks = fm_bookmarks_get_all(bookmarks); QAction* before = ui.actionAddToBookmarks; for(GList* l = allBookmarks; l; l = l->next) { FmBookmarkItem* item = reinterpret_cast(l->data); BookmarkAction* action = new BookmarkAction(item, ui.menu_Bookmarks); connect(action, &QAction::triggered, this, &MainWindow::onBookmarkActionTriggered); ui.menu_Bookmarks->insertAction(before, action); } ui.menu_Bookmarks->insertSeparator(before); g_list_free_full(allBookmarks, (GDestroyNotify)fm_bookmark_item_unref); } void MainWindow::onBookmarksChanged(FmBookmarks* bookmarks, MainWindow* pThis) { // delete existing items QList actions = pThis->ui.menu_Bookmarks->actions(); QList::const_iterator it = actions.begin(); QList::const_iterator last_it = actions.end() - 2; while(it != last_it) { QAction* action = *it; ++it; pThis->ui.menu_Bookmarks->removeAction(action); } pThis->loadBookmarksMenu(); } void MainWindow::onBookmarkActionTriggered() { BookmarkAction* action = static_cast(sender()); FmPath* path = action->path(); if(path) { Application* app = static_cast(qApp); Settings& settings = app->settings(); switch(settings.bookmarkOpenMethod()) { case OpenInCurrentTab: /* current tab */ default: chdir(path); break; case OpenInNewTab: /* new tab */ addTab(path); break; case OpenInNewWindow: /* new window */ (new MainWindow(path))->show(); break; } } } void MainWindow::on_actionCopy_triggered() { TabPage* page = currentPage(); FmPathList* paths = page->selectedFilePaths(); copyFilesToClipboard(paths); fm_path_list_unref(paths); } void MainWindow::on_actionCut_triggered() { TabPage* page = currentPage(); FmPathList* paths = page->selectedFilePaths(); cutFilesToClipboard(paths); fm_path_list_unref(paths); } void MainWindow::on_actionPaste_triggered() { pasteFilesFromClipboard(currentPage()->path(), this); } void MainWindow::on_actionDelete_triggered() { Application* app = static_cast(qApp); Settings& settings = app->settings(); TabPage* page = currentPage(); FmPathList* paths = page->selectedFilePaths(); bool shiftPressed = (qApp->keyboardModifiers() & Qt::ShiftModifier ? true : false); if(settings.useTrash() && !shiftPressed) FileOperation::trashFiles(paths, settings.confirmTrash(), this); else FileOperation::deleteFiles(paths, settings.confirmDelete(), this); fm_path_list_unref(paths); } void MainWindow::on_actionRename_triggered() { TabPage* page = currentPage(); FmFileInfoList* files = page->selectedFiles(); for(GList* l = fm_file_info_list_peek_head_link(files); l; l = l->next) { FmFileInfo* file = FM_FILE_INFO(l->data); Fm::renameFile(file, NULL); } fm_file_info_list_unref(files); } void MainWindow::on_actionSelectAll_triggered() { currentPage()->selectAll(); } void MainWindow::on_actionInvertSelection_triggered() { currentPage()->invertSelection(); } void MainWindow::on_actionPreferences_triggered() { Application* app = reinterpret_cast(qApp); app->preferences(QString()); } /* void MainWindow::changeEvent(QEvent* event) { switch(event->type()) { case QEvent::StyleChange: break; } QWidget::changeEvent(event); } */ void MainWindow::onBackForwardContextMenu(QPoint pos) { // show a popup menu for browsing history here. QToolButton* btn = static_cast(sender()); TabPage* page = currentPage(); Fm::BrowseHistory& history = page->browseHistory(); int current = history.currentIndex(); QMenu menu; for(int i = 0; i < history.size(); ++i) { const BrowseHistoryItem& item = history.at(i); Fm::Path path = item.path(); QAction* action = menu.addAction(path.displayName()); if(i == current) { // make the current path bold and checked action->setCheckable(true); action->setChecked(true); QFont font = menu.font(); font.setBold(true); action->setFont(font); } } QAction* selectedAction = menu.exec(btn->mapToGlobal(pos)); if(selectedAction) { int index = menu.actions().indexOf(selectedAction); ui.filterBar->clear(); page->jumpToHistory(index); updateUIForCurrentPage(); } } void MainWindow::tabContextMenu(const QPoint& pos) { int tabNum = ui.tabBar->count(); if(tabNum <= 1) return; rightClickIndex = ui.tabBar->tabAt(pos); if(rightClickIndex < 0) return; QMenu menu; if(rightClickIndex > 0) menu.addAction(ui.actionCloseLeft); if(rightClickIndex < tabNum - 1) { menu.addAction(ui.actionCloseRight); if(rightClickIndex > 0) { menu.addSeparator(); menu.addAction(ui.actionCloseOther); } } menu.exec(ui.tabBar->mapToGlobal(pos)); } void MainWindow::closeLeftTabs() { while(rightClickIndex > 0) { closeTab(rightClickIndex - 1); --rightClickIndex; } } void MainWindow::closeRightTabs() { if(rightClickIndex < 0) return; while(rightClickIndex < ui.tabBar->count() - 1) closeTab(rightClickIndex + 1); } void MainWindow::updateFromSettings(Settings& settings) { // apply settings // menu ui.actionDelete->setText(settings.useTrash() ? tr("&Move to Trash") : tr("&Delete")); ui.actionDelete->setIcon(settings.useTrash() ? QIcon::fromTheme("user-trash") : QIcon::fromTheme("edit-delete")); // side pane ui.sidePane->setIconSize(QSize(settings.sidePaneIconSize(), settings.sidePaneIconSize())); // tabs ui.tabBar->setTabsClosable(settings.showTabClose()); if(!settings.alwaysShowTabs()) { ui.tabBar->setVisible(ui.tabBar->count() > 1); } // all tab pages int n = ui.stackedWidget->count(); for(int i = 0; i < n; ++i) { TabPage* page = static_cast(ui.stackedWidget->widget(i)); page->updateFromSettings(settings); } } static const char* su_cmd_subst(char opt, gpointer user_data) { return (const char*)user_data; } static FmAppCommandParseOption su_cmd_opts[] = { { 's', su_cmd_subst }, { 0, NULL } }; void MainWindow::on_actionOpenAsRoot_triggered() { TabPage* page = currentPage(); if(page) { Application* app = static_cast(qApp); Settings& settings = app->settings(); if(!settings.suCommand().isEmpty()) { // run the su command // FIXME: it's better to get the filename of the current process rather than hard-code pcmanfm-qt here. QByteArray suCommand = settings.suCommand().toLocal8Bit(); char* cmd = NULL; QByteArray programCommand = app->applicationFilePath().toLocal8Bit(); programCommand += " %U"; if(fm_app_command_parse(suCommand.constData(), su_cmd_opts, &cmd, gpointer(programCommand.constData())) == 0) { /* no %s found so just append to it */ g_free(cmd); cmd = g_strconcat(suCommand.constData(), programCommand.constData(), NULL); } GAppInfo* appInfo = g_app_info_create_from_commandline(cmd, NULL, GAppInfoCreateFlags(0), NULL); g_free(cmd); if(appInfo) { FmPath* cwd = page->path(); GError* err = NULL; char* uri = fm_path_to_uri(cwd); GList* uris = g_list_prepend(NULL, uri); if(!g_app_info_launch_uris(appInfo, uris, NULL, &err)) { QMessageBox::critical(this, tr("Error"), QString::fromUtf8(err->message)); g_error_free(err); } g_list_free(uris); g_free(uri); g_object_unref(appInfo); } } else { // show an error message and ask the user to set the command QMessageBox::critical(this, tr("Error"), tr("Switch user command is not set.")); app->preferences("advanced"); } } } void MainWindow::on_actionFindFiles_triggered() { Application* app = static_cast(qApp); FmPathList* selectedPaths = currentPage()->selectedFilePaths(); QStringList paths; if(selectedPaths) { for(GList* l = fm_path_list_peek_head_link(selectedPaths); l; l = l->next) { // FIXME: is it ok to use display name here? // This might be broken on filesystems with non-UTF-8 filenames. Fm::Path path(FM_PATH(l->data)); paths.append(path.displayName(false)); } fm_path_list_unref(selectedPaths); } else { paths.append(currentPage()->pathName()); } app->findFiles(paths); } void MainWindow::on_actionOpenTerminal_triggered() { TabPage* page = currentPage(); if(page) { Application* app = static_cast(qApp); app->openFolderInTerminal(page->path()); } } void MainWindow::onShortcutNextTab() { int current = ui.tabBar->currentIndex(); if(current < ui.tabBar->count() - 1) ui.tabBar->setCurrentIndex(current + 1); else ui.tabBar->setCurrentIndex(0); } void MainWindow::onShortcutPrevTab() { int current = ui.tabBar->currentIndex(); if(current > 0) ui.tabBar->setCurrentIndex(current - 1); else ui.tabBar->setCurrentIndex(ui.tabBar->count() - 1); } // Switch to nth tab when Alt+n or Ctrl+n is pressed void MainWindow::onShortcutJumpToTab() { QShortcut* shortcut = reinterpret_cast(sender()); QKeySequence seq = shortcut->key(); int keyValue = seq[0]; // See the source code of QKeySequence and refer to the method: // QString QKeySequencePrivate::encodeString(int key, QKeySequence::SequenceFormat format). // Then we know how to test if a key sequence contains a modifier. // It's a shame that Qt has no API for this task. if((keyValue & Qt::ALT) == Qt::ALT) // test if we have Alt key pressed keyValue -= Qt::ALT; else if((keyValue & Qt::CTRL) == Qt::CTRL) // test if we have Ctrl key pressed keyValue -= Qt::CTRL; // now keyValue should contains '0' - '9' only int index; if(keyValue == '0') index = 9; else index = keyValue - '1'; if(index < ui.tabBar->count()) ui.tabBar->setCurrentIndex(index); } } pcmanfm-qt-0.10.1/pcmanfm/mainwindow.h000066400000000000000000000123041263124606600176100ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef FM_MAIN_WINDOW_H #define FM_MAIN_WINDOW_H #include "ui_main-win.h" #include #include #include #include #include #include #include #include #include #include #include "launcher.h" namespace PCManFM { class TabPage; class Settings; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(FmPath* path = NULL); virtual ~MainWindow(); void chdir(FmPath* path); void addTab(FmPath* path); TabPage* currentPage() { return reinterpret_cast(ui.stackedWidget->currentWidget()); } void updateFromSettings(Settings& settings); protected Q_SLOTS: void onPathEntryReturnPressed(); void on_actionNewTab_triggered(); void on_actionNewWin_triggered(); void on_actionNewFolder_triggered(); void on_actionNewBlankFile_triggered(); void on_actionCloseTab_triggered(); void on_actionCloseWindow_triggered(); void on_actionFileProperties_triggered(); void on_actionFolderProperties_triggered(); void on_actionCut_triggered(); void on_actionCopy_triggered(); void on_actionPaste_triggered(); void on_actionDelete_triggered(); void on_actionRename_triggered(); void on_actionSelectAll_triggered(); void on_actionInvertSelection_triggered(); void on_actionPreferences_triggered(); void on_actionGoBack_triggered(); void on_actionGoForward_triggered(); void on_actionGoUp_triggered(); void on_actionHome_triggered(); void on_actionReload_triggered(); void on_actionIconView_triggered(); void on_actionCompactView_triggered(); void on_actionDetailedList_triggered(); void on_actionThumbnailView_triggered(); void on_actionGo_triggered(); void on_actionShowHidden_triggered(bool check); void on_actionByFileName_triggered(bool checked); void on_actionByMTime_triggered(bool checked); void on_actionByOwner_triggered(bool checked); void on_actionByFileType_triggered(bool checked); void on_actionByFileSize_triggered(bool checked); void on_actionAscending_triggered(bool checked); void on_actionDescending_triggered(bool checked); void on_actionFolderFirst_triggered(bool checked); void on_actionCaseSensitive_triggered(bool checked); void on_actionFilter_triggered(bool checked); void on_actionApplications_triggered(); void on_actionComputer_triggered(); void on_actionTrash_triggered(); void on_actionNetwork_triggered(); void on_actionDesktop_triggered(); void on_actionAddToBookmarks_triggered(); void on_actionEditBookmarks_triggered(); void on_actionOpenTerminal_triggered(); void on_actionOpenAsRoot_triggered(); void on_actionFindFiles_triggered(); void on_actionAbout_triggered(); void onBookmarkActionTriggered(); void onTabBarCloseRequested(int index); void onTabBarCurrentChanged(int index); void onTabBarTabMoved(int from, int to); void onFilterStringChanged(QString str); void onShortcutPrevTab(); void onShortcutNextTab(); void onShortcutJumpToTab(); void onStackedWidgetWidgetRemoved(int index); void onTabPageTitleChanged(QString title); void onTabPageStatusChanged(int type, QString statusText); void onTabPageOpenDirRequested(FmPath* path, int target); void onTabPageSortFilterChanged(); void onSidePaneChdirRequested(int type, FmPath* path); void onSidePaneOpenFolderInNewWindowRequested(FmPath* path); void onSidePaneOpenFolderInNewTabRequested(FmPath* path); void onSidePaneOpenFolderInTerminalRequested(FmPath* path); void onSidePaneCreateNewFolderRequested(FmPath* path); void onSidePaneModeChanged(Fm::SidePane::Mode mode); void onSplitterMoved(int pos, int index); void onBackForwardContextMenu(QPoint pos); void tabContextMenu(const QPoint& pos); void closeLeftTabs(); void closeRightTabs(); void closeOtherTabs() { closeLeftTabs(); closeRightTabs(); } protected: // void changeEvent( QEvent * event); void closeTab(int index); virtual void resizeEvent(QResizeEvent *event); virtual void closeEvent(QCloseEvent *event); private: static void onBookmarksChanged(FmBookmarks* bookmarks, MainWindow* pThis); void loadBookmarksMenu(); void updateUIForCurrentPage(); void updateViewMenuForCurrentPage(); void updateStatusBarForCurrentPage(); private: Ui::MainWindow ui; QLineEdit* pathEntry; QLabel* fsInfoLabel; FmBookmarks* bookmarks; Launcher fileLauncher_; int rightClickIndex; }; } #endif // FM_MAIN_WINDOW_H pcmanfm-qt-0.10.1/pcmanfm/org.pcmanfm.Application.xml000066400000000000000000000016601263124606600224610ustar00rootroot00000000000000 pcmanfm-qt-0.10.1/pcmanfm/pcmanfm-qt-desktop-pref.desktop.in000066400000000000000000000003711263124606600237300ustar00rootroot00000000000000[Desktop Entry] Type=Application Name=Desktop GenericName=Desktop Settings Comment=Change wallpapers and behavior of desktop manager Exec=pcmanfm-qt --desktop-pref=general Icon=user-desktop Categories=Settings;Qt;DesktopSettings; StartupNotify=true pcmanfm-qt-0.10.1/pcmanfm/pcmanfm-qt.desktop.in000066400000000000000000000004111263124606600213220ustar00rootroot00000000000000[Desktop Entry] Type=Application Name=PCManFM File Manager GenericName=File Manager Comment=Browse the file system and manage the files Exec=pcmanfm-qt %U MimeType=inode/directory; Icon=system-file-manager Categories=FileManager;Utility;Core;Qt; StartupNotify=true pcmanfm-qt-0.10.1/pcmanfm/pcmanfm.cpp000066400000000000000000000005271263124606600174140ustar00rootroot00000000000000#include #include "application.h" #include int main(int argc, char** argv) { // ensure that glib integration of Qt is not turned off // This fixes #168: https://github.com/lxde/pcmanfm-qt/issues/168 qunsetenv("QT_NO_GLIB"); PCManFM::Application app(argc, argv); app.init(); return app.exec(); } pcmanfm-qt-0.10.1/pcmanfm/preferences.ui000066400000000000000000000732441263124606600201350ustar00rootroot00000000000000 PreferencesDialog 0 0 685 440 Preferences 0 0 Qt::ScrollBarAlwaysOff -1 Behavior Display User Interface Thumbnail Volume Advanced 0 0 0 Browsing QFormLayout::AllNonFixedFieldsGrow Open files with single click false Delay of auto-selection in single click mode (0 to disable) Default view mode: false sec 0.100000000000000 Bookmarks: Open in current tab Open in new tab Open in new window File Operations Confirm before deleting files Move deleted files to "trash bin" instead of erasing from disk. Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file Qt::Vertical 0 0 Icons 0 0 Icon theme: 0 0 Size of big icons: Size of small icons: Size of thumbnails: Size of side pane icons: User interface Use SI decimal prefixes instead of IEC binary prefixes Treat backup files as hidden false Always show full file names false Show icons of hidden files shadowed Qt::Vertical 0 0 Window QFormLayout::ExpandingFieldsGrow Always show the tab bar Show 'Close' buttons on tabs Remember the size of the last closed window Default width of new windows: Default height of new windows: 32768 32768 Show in places Home Unchecked Desktop Unchecked Trash can Unchecked Computer Unchecked Applications Unchecked Devices Unchecked Network Unchecked Qt::Vertical 0 0 Thumbnail Do not generate thumbnails for image files exceeding this size: KB 1048576 Only show thumbnails for local files Show thumbnails of files Qt::Vertical 0 225 Auto Mount Mount mountable volumes automatically on program startup Mount removable media automatically when they are inserted Show available options for removable media when they are inserted When removable medium unmounted: Close &tab containing removable medium Chan&ge folder in the tab to home folder Qt::Vertical 0 0 Programs QFormLayout::AllNonFixedFieldsGrow Terminal emulator: Switch &user command: suCommand Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Qt::PlainText Archiver in&tegration: archiver true Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Qt::Vertical 0 0 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok listWidget alwaysShowTabs showTabClose rememberWindowSize fixedWindowWidth fixedWindowHeight singleClick autoSelectionDelay viewMode configmDelete useTrash mountOnStartup mountRemovable autoRun closeOnUnmount goHomeOnUnmount terminal suCommand archiver buttonBox accepted() PreferencesDialog accept() 261 487 157 274 buttonBox rejected() PreferencesDialog reject() 329 487 286 274 listWidget currentRowChanged(int) stackedWidget setCurrentIndex(int) 94 157 359 145 singleClick toggled(bool) label setEnabled(bool) 237 39 237 39 rememberWindowSize toggled(bool) fixedWindowWidth setDisabled(bool) 506 351 462 386 singleClick toggled(bool) autoSelectionDelay setEnabled(bool) 237 39 237 39 rememberWindowSize toggled(bool) fixedWindowHeight setDisabled(bool) 549 351 462 421 rememberWindowSize toggled(bool) label_12 setDisabled(bool) 211 342 211 374 rememberWindowSize toggled(bool) label_13 setDisabled(bool) 183 338 187 404 pcmanfm-qt-0.10.1/pcmanfm/preferencesdialog.cpp000066400000000000000000000324341263124606600214560ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "preferencesdialog.h" #include "application.h" #include "settings.h" #include #include #include #include #include namespace PCManFM { static int bigIconSizes[] = {96, 72, 64, 48, 36, 32, 24, 20}; static int smallIconSizes[] = {48, 36, 32, 24, 20, 16, 12}; static int thumbnailIconSizes[] = {256, 224, 192, 160, 128, 96, 64}; PreferencesDialog::PreferencesDialog (QString activePage, QWidget* parent): QDialog (parent) { ui.setupUi(this); setAttribute(Qt::WA_DeleteOnClose); // resize the list widget according to the width of its content. ui.listWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); ui.listWidget->setMaximumWidth(ui.listWidget->sizeHintForColumn(0) + ui.listWidget->frameWidth() * 2 + 4); initFromSettings(); if(!activePage.isEmpty()) { QWidget* page = findChild(activePage + "Page"); if(page) { int index = ui.stackedWidget->indexOf(page); ui.listWidget->setCurrentRow(index); } } adjustSize(); } PreferencesDialog::~PreferencesDialog() { } static void findIconThemesInDir(QHash& iconThemes, QString dirName) { QDir dir(dirName); QStringList subDirs = dir.entryList(QDir::AllDirs); GKeyFile* kf = g_key_file_new(); Q_FOREACH(QString subDir, subDirs) { QString indexFile = dirName % '/' % subDir % "/index.theme"; if(g_key_file_load_from_file(kf, indexFile.toLocal8Bit().constData(), GKeyFileFlags(0), NULL)) { // FIXME: skip hidden ones // icon theme must have this key, so it has icons if it has this key // otherwise, it might be a cursor theme or any other kind of theme. if(g_key_file_has_key(kf, "Icon Theme", "Directories", NULL)) { char* dispName = g_key_file_get_locale_string(kf, "Icon Theme", "Name", NULL, NULL); // char* comment = g_key_file_get_locale_string(kf, "Icon Theme", "Comment", NULL, NULL); iconThemes[subDir] = dispName; g_free(dispName); } } } g_key_file_free(kf); } void PreferencesDialog::initIconThemes(Settings& settings) { // check if auto-detection is done (for example, from xsettings) if(settings.useFallbackIconTheme()) { // auto-detection failed // load xdg icon themes and select the current one QHash iconThemes; // user customed icon themes findIconThemesInDir(iconThemes, QString(g_get_home_dir()) % "/.icons"); // search for icons in system data dir const char* const* dataDirs = g_get_system_data_dirs(); for(const char* const* dataDir = dataDirs; *dataDir; ++dataDir) { findIconThemesInDir(iconThemes, QString(*dataDir) % "/icons"); } iconThemes.remove("hicolor"); // remove hicolor, which is only a fallback QHash::const_iterator it; for(it = iconThemes.begin(); it != iconThemes.end(); ++it) { ui.iconTheme->addItem(it.value(), it.key()); } ui.iconTheme->model()->sort(0); // sort the list of icon theme names // select current theme name int n = ui.iconTheme->count(); int i; for(i = 0; i < n; ++i) { QVariant itemData = ui.iconTheme->itemData(i); if(itemData == settings.fallbackIconThemeName()) { break; } } if(i >= n) i = 0; ui.iconTheme->setCurrentIndex(i); } else { // auto-detection of icon theme works, hide the fallback icon theme combo box. ui.iconThemeLabel->hide(); ui.iconTheme->hide(); } } void PreferencesDialog::initArchivers(Settings& settings) { const GList* allArchivers = fm_archiver_get_all(); int i = 0; for(const GList* l = allArchivers; l; l = l->next, ++i) { FmArchiver* archiver = reinterpret_cast(l->data); ui.archiver->addItem(archiver->program, QString(archiver->program)); if(archiver->program == settings.archiver()) ui.archiver->setCurrentIndex(i); } } void PreferencesDialog::initDisplayPage(Settings& settings) { initIconThemes(settings); // icon sizes int i; for(i = 0; i < G_N_ELEMENTS(bigIconSizes); ++i) { int size = bigIconSizes[i]; ui.bigIconSize->addItem(QString("%1 x %1").arg(size), size); if(settings.bigIconSize() == size) ui.bigIconSize->setCurrentIndex(i); } for(i = 0; i < G_N_ELEMENTS(smallIconSizes); ++i) { int size = smallIconSizes[i]; QString text = QString("%1 x %1").arg(size); ui.smallIconSize->addItem(text, size); if(settings.smallIconSize() == size) ui.smallIconSize->setCurrentIndex(i); ui.sidePaneIconSize->addItem(text, size); if(settings.sidePaneIconSize() == size) ui.sidePaneIconSize->setCurrentIndex(i); } for(i = 0; i < G_N_ELEMENTS(thumbnailIconSizes); ++i) { int size = thumbnailIconSizes[i]; ui.thumbnailIconSize->addItem(QString("%1 x %1").arg(size), size); if(settings.thumbnailIconSize() == size) ui.thumbnailIconSize->setCurrentIndex(i); } ui.siUnit->setChecked(settings.siUnit()); ui.backupAsHidden->setChecked(settings.backupAsHidden()); ui.showFullNames->setChecked(settings.showFullNames()); ui.shadowHidden->setChecked(settings.shadowHidden()); // FIXME: Hide options that we don't support yet. ui.showFullNames->hide(); ui.shadowHidden->hide(); } void PreferencesDialog::initUiPage(Settings& settings) { ui.alwaysShowTabs->setChecked(settings.alwaysShowTabs()); ui.showTabClose->setChecked(settings.showTabClose()); ui.rememberWindowSize->setChecked(settings.rememberWindowSize()); ui.fixedWindowWidth->setValue(settings.fixedWindowWidth()); ui.fixedWindowHeight->setValue(settings.fixedWindowHeight()); // FIXME: Hide options that we don't support yet. ui.showInPlaces->parentWidget()->hide(); } void PreferencesDialog::initBehaviorPage(Settings& settings) { ui.singleClick->setChecked(settings.singleClick()); ui.autoSelectionDelay->setValue(double(settings.autoSelectionDelay()) / 1000); ui.bookmarkOpenMethod->setCurrentIndex(settings.bookmarkOpenMethod()); ui.viewMode->addItem(tr("Icon View"), (int)Fm::FolderView::IconMode); ui.viewMode->addItem(tr("Compact Icon View"), (int)Fm::FolderView::CompactMode); ui.viewMode->addItem(tr("Thumbnail View"), (int)Fm::FolderView::ThumbnailMode); ui.viewMode->addItem(tr("Detailed List View"), (int)Fm::FolderView::DetailedListMode); const Fm::FolderView::ViewMode modes[] = { Fm::FolderView::IconMode, Fm::FolderView::CompactMode, Fm::FolderView::ThumbnailMode, Fm::FolderView::DetailedListMode }; for(int i = 0; i < G_N_ELEMENTS(modes); ++i) { if(modes[i] == settings.viewMode()) { ui.viewMode->setCurrentIndex(i); break; } } ui.configmDelete->setChecked(settings.confirmDelete()); if(settings.supportTrash()) ui.useTrash->setChecked(settings.useTrash()); else { ui.useTrash->hide(); } ui.noUsbTrash->setChecked(settings.noUsbTrash()); ui.confirmTrash->setChecked(settings.confirmTrash()); ui.quickExec->setChecked(settings.quickExec()); } void PreferencesDialog::initThumbnailPage(Settings& settings) { ui.showThumbnails->setChecked(settings.showThumbnails()); ui.thumbnailLocal->setChecked(settings.thumbnailLocalFilesOnly()); ui.maxThumbnailFileSize->setValue(settings.maxThumbnailFileSize()); } void PreferencesDialog::initVolumePage(Settings& settings) { ui.mountOnStartup->setChecked(settings.mountOnStartup()); ui.mountRemovable->setChecked(settings.mountRemovable()); ui.autoRun->setChecked(settings.autoRun()); if(settings.closeOnUnmount()) ui.closeOnUnmount->setChecked(true); else ui.goHomeOnUnmount->setChecked(true); } void PreferencesDialog::initTerminals(Settings& settings) { // load the known terminal list from the terminal.list file of libfm QSettings termlist(LIBFM_DATA_DIR "/terminals.list", QSettings::IniFormat); ui.terminal->addItems(termlist.childGroups()); ui.terminal->setEditText(settings.terminal()); } void PreferencesDialog::initAdvancedPage(Settings& settings) { initArchivers(settings); initTerminals(settings); ui.suCommand->setText(settings.suCommand()); ui.onlyUserTemplates->setChecked(settings.onlyUserTemplates()); ui.templateTypeOnce->setChecked(settings.templateTypeOnce()); ui.templateRunApp->setChecked(settings.templateRunApp()); // FIXME: Hide options that we don't support yet. ui.templateRunApp->hide(); } void PreferencesDialog::initFromSettings() { Settings& settings = static_cast(qApp)->settings(); initDisplayPage(settings); initUiPage(settings); initBehaviorPage(settings); initThumbnailPage(settings); initVolumePage(settings); initAdvancedPage(settings); } void PreferencesDialog::applyDisplayPage(Settings& settings) { if(settings.useFallbackIconTheme()) { // only apply the value if icon theme combo box is in use // the combo box is hidden when auto-detection of icon theme from xsettings works. QString newIconTheme = ui.iconTheme->itemData(ui.iconTheme->currentIndex()).toString(); if(newIconTheme != settings.fallbackIconThemeName()) { settings.setFallbackIconThemeName(newIconTheme); QIcon::setThemeName(settings.fallbackIconThemeName()); // update the UI by emitting a style change event Q_FOREACH(QWidget *widget, QApplication::allWidgets()) { QEvent event(QEvent::StyleChange); QApplication::sendEvent(widget, &event); } } } settings.setBigIconSize(ui.bigIconSize->itemData(ui.bigIconSize->currentIndex()).toInt()); settings.setSmallIconSize(ui.smallIconSize->itemData(ui.smallIconSize->currentIndex()).toInt()); settings.setThumbnailIconSize(ui.thumbnailIconSize->itemData(ui.thumbnailIconSize->currentIndex()).toInt()); settings.setSidePaneIconSize(ui.sidePaneIconSize->itemData(ui.sidePaneIconSize->currentIndex()).toInt()); settings.setSiUnit(ui.siUnit->isChecked()); settings.setBackupAsHidden(ui.backupAsHidden->isChecked()); settings.setShowFullNames(ui.showFullNames->isChecked()); settings.setShadowHidden(ui.shadowHidden->isChecked()); } void PreferencesDialog::applyUiPage(Settings& settings) { settings.setAlwaysShowTabs(ui.alwaysShowTabs->isChecked()); settings.setShowTabClose(ui.showTabClose->isChecked()); settings.setRememberWindowSize(ui.rememberWindowSize->isChecked()); settings.setFixedWindowWidth(ui.fixedWindowWidth->value()); settings.setFixedWindowHeight(ui.fixedWindowHeight->value()); } void PreferencesDialog::applyBehaviorPage(Settings& settings) { settings.setSingleClick(ui.singleClick->isChecked()); settings.setAutoSelectionDelay(int(ui.autoSelectionDelay->value() * 1000)); settings.setBookmarkOpenMethod(OpenDirTargetType(ui.bookmarkOpenMethod->currentIndex())); // FIXME: bug here? Fm::FolderView::ViewMode mode = Fm::FolderView::ViewMode(ui.viewMode->itemData(ui.viewMode->currentIndex()).toInt()); settings.setViewMode(mode); settings.setConfirmDelete(ui.configmDelete->isChecked()); if(settings.supportTrash()) settings.setUseTrash(ui.useTrash->isChecked()); settings.setNoUsbTrash(ui.noUsbTrash->isChecked()); settings.setConfirmTrash(ui.confirmTrash->isChecked()); settings.setQuickExec(ui.quickExec->isChecked()); } void PreferencesDialog::applyThumbnailPage(Settings& settings) { settings.setShowThumbnails(ui.showThumbnails->isChecked()); settings.setThumbnailLocalFilesOnly(ui.thumbnailLocal->isChecked()); settings.setMaxThumbnailFileSize(ui.maxThumbnailFileSize->value()); } void PreferencesDialog::applyVolumePage(Settings& settings) { settings.setAutoRun(ui.autoRun->isChecked()); settings.setMountOnStartup(ui.mountOnStartup->isChecked()); settings.setMountRemovable(ui.mountRemovable->isChecked()); settings.setCloseOnUnmount(ui.closeOnUnmount->isChecked()); } void PreferencesDialog::applyAdvancedPage(Settings& settings) { settings.setTerminal(ui.terminal->currentText()); settings.setSuCommand(ui.suCommand->text()); settings.setArchiver(ui.archiver->itemData(ui.archiver->currentIndex()).toString()); settings.setOnlyUserTemplates(ui.onlyUserTemplates->isChecked()); settings.setTemplateTypeOnce(ui.templateTypeOnce->isChecked()); settings.setTemplateRunApp(ui.templateRunApp->isChecked()); } void PreferencesDialog::applySettings() { Settings& settings = static_cast(qApp)->settings(); applyDisplayPage(settings); applyUiPage(settings); applyBehaviorPage(settings); applyThumbnailPage(settings); applyVolumePage(settings); applyAdvancedPage(settings); settings.save(); Application* app = static_cast(qApp); app->updateFromSettings(); } void PreferencesDialog::accept() { applySettings(); QDialog::accept(); } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/preferencesdialog.h000066400000000000000000000040151263124606600211150ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_PREFERENCESDIALOG_H #define PCMANFM_PREFERENCESDIALOG_H #include #include "ui_preferences.h" #include namespace PCManFM { class Settings; class PreferencesDialog : public QDialog { Q_OBJECT public: // activePage is the name of page to select (general, display, advanced...) explicit PreferencesDialog(QString activePage = QString(), QWidget* parent = 0); virtual ~PreferencesDialog(); virtual void accept(); private: void initIconThemes(Settings& settings); void initArchivers(Settings& settings); void initDisplayPage(Settings& settings); void initUiPage(Settings& settings); void initBehaviorPage(Settings& settings); void initThumbnailPage(Settings& settings); void initVolumePage(Settings& settings); void initAdvancedPage(Settings& settings); void initTerminals(Settings& settings); void applyUiPage(Settings& settings); void applyDisplayPage(Settings& settings); void applyBehaviorPage(Settings& settings); void applyThumbnailPage(Settings& settings); void applyVolumePage(Settings& settings); void applyAdvancedPage(Settings& settings); void initFromSettings(); void applySettings(); private: Ui::PreferencesDialog ui; }; } #endif // PCMANFM_PREFERENCESDIALOG_H pcmanfm-qt-0.10.1/pcmanfm/settings.cpp000066400000000000000000000435251263124606600176400ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "settings.h" #include #include #include #include #include #include "desktopwindow.h" #include // #include namespace PCManFM { inline static const char* bookmarkOpenMethodToString(OpenDirTargetType value); inline static OpenDirTargetType bookmarkOpenMethodFromString(const QString str); inline static const char* wallpaperModeToString(int value); inline static int wallpaperModeFromString(const QString str); inline static const char* viewModeToString(Fm::FolderView::ViewMode value); inline static Fm::FolderView::ViewMode viewModeFromString(const QString str); inline static const char* sidePaneModeToString(Fm::SidePane::Mode value); inline static Fm::SidePane::Mode sidePaneModeFromString(const QString& str); inline static const char* sortOrderToString(Qt::SortOrder order); inline static Qt::SortOrder sortOrderFromString(const QString str); inline static const char* sortColumnToString(Fm::FolderModel::ColumnId value); inline static Fm::FolderModel::ColumnId sortColumnFromString(const QString str); Settings::Settings(): QObject(), supportTrash_(Fm::uriExists("trash:///")), // check if trash:/// is supported fallbackIconThemeName_(), useFallbackIconTheme_(QIcon::themeName().isEmpty() || QIcon::themeName() == "hicolor"), bookmarkOpenMethod_(OpenInCurrentTab), suCommand_(), terminal_(), mountOnStartup_(true), mountRemovable_(true), autoRun_(true), closeOnUnmount_(false), wallpaperMode_(0), wallpaper_(), desktopBgColor_(), desktopFgColor_(), desktopShadowColor_(), showWmMenu_(false), desktopShowHidden_(false), desktopSortOrder_(Qt::AscendingOrder), desktopSortColumn_(Fm::FolderModel::ColumnFileName), alwaysShowTabs_(true), showTabClose_(true), rememberWindowSize_(true), fixedWindowWidth_(640), fixedWindowHeight_(480), lastWindowWidth_(640), lastWindowHeight_(480), lastWindowMaximized_(false), splitterPos_(120), sidePaneMode_(Fm::SidePane::ModePlaces), viewMode_(Fm::FolderView::IconMode), showHidden_(false), sortOrder_(Qt::AscendingOrder), sortColumn_(Fm::FolderModel::ColumnFileName), sortFolderFirst_(true), showFilter_(false), // settings for use with libfm singleClick_(false), autoSelectionDelay_(600), useTrash_(true), confirmDelete_(true), noUsbTrash_(false), confirmTrash_(false), quickExec_(false), showThumbnails_(true), archiver_(), siUnit_(false), bigIconSize_(48), smallIconSize_(24), sidePaneIconSize_(24), thumbnailIconSize_(128) { } Settings::~Settings() { } QString Settings::profileDir(QString profile, bool useFallback) { // NOTE: it's a shame that QDesktopServices does not handle XDG_CONFIG_HOME // try user-specific config file first QString dirName; // WARNING: Don't use XDG_CONFIG_HOME with root because it might // give the user config directory if gksu-properties is set to su. if(geteuid()) dirName = QLatin1String(qgetenv("XDG_CONFIG_HOME")); if (dirName.isEmpty()) dirName = QDir::homePath() % QLatin1String("/.config"); dirName = dirName % "/pcmanfm-qt/" % profile; QDir dir(dirName); // if user config dir does not exist, try system-wide config dirs instead if(!dir.exists() && useFallback) { QString fallbackDir; for(const char* const* configDir = g_get_system_config_dirs(); *configDir; ++configDir) { fallbackDir = QString(*configDir) % "/pcmanfm-qt/" % profile; dir.setPath(fallbackDir); if(dir.exists()) { dirName = fallbackDir; break; } } } return dirName; } bool Settings::load(QString profile) { profileName_ = profile; QString fileName = profileDir(profile, true) % "/settings.conf"; return loadFile(fileName); } bool Settings::save(QString profile) { QString fileName = profileDir(profile.isEmpty() ? profileName_ : profile) % "/settings.conf"; return saveFile(fileName); } bool Settings::loadFile(QString filePath) { QSettings settings(filePath, QSettings::IniFormat); settings.beginGroup("System"); fallbackIconThemeName_ = settings.value("FallbackIconThemeName").toString(); if(fallbackIconThemeName_.isEmpty()) { // FIXME: we should choose one from installed icon themes or get // the value from XSETTINGS instead of hard code a fallback value. fallbackIconThemeName_ = "elementary"; // fallback icon theme name } suCommand_ = settings.value("SuCommand", "gksu %s").toString(); setTerminal(settings.value("Terminal", "xterm").toString()); setArchiver(settings.value("Archiver", "file-roller").toString()); setSiUnit(settings.value("SIUnit", false).toBool()); setOnlyUserTemplates(settings.value("OnlyUserTemplates", false).toBool()); setTemplateTypeOnce(settings.value("TemplateTypeOnce", false).toBool()); setTemplateRunApp(settings.value("TemplateRunApp", false).toBool()); settings.endGroup(); settings.beginGroup("Behavior"); bookmarkOpenMethod_ = bookmarkOpenMethodFromString(settings.value("BookmarkOpenMethod").toString()); // settings for use with libfm useTrash_ = settings.value("UseTrash", true).toBool(); singleClick_ = settings.value("SingleClick", false).toBool(); autoSelectionDelay_ = settings.value("AutoSelectionDelay", 600).toInt(); confirmDelete_ = settings.value("ConfirmDelete", true).toBool(); setNoUsbTrash(settings.value("NoUsbTrash", false).toBool()); confirmTrash_ = settings.value("ConfirmTrash", false).toBool(); setQuickExec(settings.value("QuickExec", false).toBool()); // bool thumbnailLocal_; // bool thumbnailMax; settings.endGroup(); settings.beginGroup("Desktop"); wallpaperMode_ = wallpaperModeFromString(settings.value("WallpaperMode").toString()); wallpaper_ = settings.value("Wallpaper").toString(); desktopBgColor_.setNamedColor(settings.value("BgColor", "#000000").toString()); desktopFgColor_.setNamedColor(settings.value("FgColor", "#ffffff").toString()); desktopShadowColor_.setNamedColor(settings.value("ShadowColor", "#000000").toString()); if(settings.contains("Font")) desktopFont_.fromString(settings.value("Font").toString()); else desktopFont_ = QApplication::font(); showWmMenu_ = settings.value("ShowWmMenu", false).toBool(); desktopShowHidden_ = settings.value("ShowHidden", false).toBool(); desktopSortOrder_ = sortOrderFromString(settings.value("SortOrder").toString()); desktopSortColumn_ = sortColumnFromString(settings.value("SortColumn").toString()); settings.endGroup(); settings.beginGroup("Volume"); mountOnStartup_ = settings.value("MountOnStartup", true).toBool(); mountRemovable_ = settings.value("MountRemovable", true).toBool(); autoRun_ = settings.value("AutoRun", true).toBool(); closeOnUnmount_ = settings.value("CloseOnUnmount", true).toBool(); settings.endGroup(); settings.beginGroup("Thumbnail"); showThumbnails_ = settings.value("ShowThumbnails", true).toBool(); setMaxThumbnailFileSize(settings.value("MaxThumbnailFileSize", 4096).toInt()); setThumbnailLocalFilesOnly(settings.value("ThumbnailLocalFilesOnly", true).toBool()); settings.endGroup(); settings.beginGroup("FolderView"); viewMode_ = viewModeFromString(settings.value("Mode", Fm::FolderView::IconMode).toString()); showHidden_ = settings.value("ShowHidden", false).toBool(); sortOrder_ = sortOrderFromString(settings.value("SortOrder").toString()); sortColumn_ = sortColumnFromString(settings.value("SortColumn").toString()); sortFolderFirst_ = settings.value("SortFolderFirst", true).toBool(); showFilter_ = settings.value("ShowFilter", false).toBool(); setBackupAsHidden(settings.value("BackupAsHidden", false).toBool()); showFullNames_ = settings.value("ShowFullNames", false).toBool(); shadowHidden_ = settings.value("ShadowHidden", false).toBool(); // override config in libfm's FmConfig bigIconSize_ = settings.value("BigIconSize", 48).toInt(); smallIconSize_ = settings.value("SmallIconSize", 24).toInt(); sidePaneIconSize_ = settings.value("SidePaneIconSize", 24).toInt(); thumbnailIconSize_ = settings.value("ThumbnailIconSize", 128).toInt(); settings.endGroup(); settings.beginGroup("Window"); fixedWindowWidth_ = settings.value("FixedWidth", 640).toInt(); fixedWindowHeight_ = settings.value("FixedHeight", 480).toInt(); lastWindowWidth_ = settings.value("LastWindowWidth", 640).toInt(); lastWindowHeight_ = settings.value("LastWindowHeight", 480).toInt(); lastWindowMaximized_ = settings.value("LastWindowMaximized", false).toBool(); rememberWindowSize_ = settings.value("RememberWindowSize", true).toBool(); alwaysShowTabs_ = settings.value("AlwaysShowTabs", true).toBool(); showTabClose_ = settings.value("ShowTabClose", true).toBool(); splitterPos_ = settings.value("SplitterPos", 150).toInt(); sidePaneMode_ = sidePaneModeFromString(settings.value("SidePaneMode").toString()); settings.endGroup(); return true; } bool Settings::saveFile(QString filePath) { QSettings settings(filePath, QSettings::IniFormat); settings.beginGroup("System"); settings.setValue("FallbackIconThemeName", fallbackIconThemeName_); settings.setValue("SuCommand", suCommand_); settings.setValue("Terminal", terminal_); settings.setValue("Archiver", archiver_); settings.setValue("SIUnit", siUnit_); settings.setValue("OnlyUserTemplates", onlyUserTemplates_); settings.setValue("TemplateTypeOnce", templateTypeOnce_); settings.setValue("TemplateRunApp", templateRunApp_); settings.endGroup(); settings.beginGroup("Behavior"); settings.setValue("BookmarkOpenMethod", bookmarkOpenMethodToString(bookmarkOpenMethod_)); // settings for use with libfm settings.setValue("UseTrash", useTrash_); settings.setValue("SingleClick", singleClick_); settings.setValue("AutoSelectionDelay", autoSelectionDelay_); settings.setValue("ConfirmDelete", confirmDelete_); settings.setValue("NoUsbTrash", noUsbTrash_); settings.setValue("ConfirmTrash", confirmTrash_); settings.setValue("QuickExec", quickExec_); // bool thumbnailLocal_; // bool thumbnailMax; settings.endGroup(); settings.beginGroup("Desktop"); settings.setValue("WallpaperMode", wallpaperModeToString(wallpaperMode_)); settings.setValue("Wallpaper", wallpaper_); settings.setValue("BgColor", desktopBgColor_.name()); settings.setValue("FgColor", desktopFgColor_.name()); settings.setValue("ShadowColor", desktopShadowColor_.name()); settings.setValue("Font", desktopFont_.toString()); settings.setValue("ShowWmMenu", showWmMenu_); settings.setValue("ShowHidden", desktopShowHidden_); settings.setValue("SortOrder", sortOrderToString(desktopSortOrder_)); settings.setValue("SortColumn", sortColumnToString(desktopSortColumn_)); settings.endGroup(); settings.beginGroup("Volume"); settings.setValue("MountOnStartup", mountOnStartup_); settings.setValue("MountRemovable", mountRemovable_); settings.setValue("AutoRun", autoRun_); settings.setValue("CloseOnUnmount", closeOnUnmount_); settings.endGroup(); settings.beginGroup("Thumbnail"); settings.setValue("ShowThumbnails", showThumbnails_); settings.setValue("MaxThumbnailFileSize", maxThumbnailFileSize()); settings.setValue("ThumbnailLocalFilesOnly", thumbnailLocalFilesOnly()); settings.endGroup(); settings.beginGroup("FolderView"); settings.setValue("Mode", viewModeToString(viewMode_)); settings.setValue("ShowHidden", showHidden_); settings.setValue("SortOrder", sortOrderToString(sortOrder_)); settings.setValue("SortColumn", sortColumnToString(sortColumn_)); settings.setValue("SortFolderFirst", sortFolderFirst_); settings.setValue("ShowFilter", showFilter_); settings.setValue("BackupAsHidden", backupAsHidden_); settings.setValue("ShowFullNames", showFullNames_); settings.setValue("ShadowHidden", shadowHidden_); // override config in libfm's FmConfig settings.setValue("BigIconSize", bigIconSize_); settings.setValue("SmallIconSize", smallIconSize_); settings.setValue("SidePaneIconSize", sidePaneIconSize_); settings.setValue("ThumbnailIconSize", thumbnailIconSize_); settings.endGroup(); settings.beginGroup("Window"); settings.setValue("FixedWidth", fixedWindowWidth_); settings.setValue("FixedHeight", fixedWindowHeight_); settings.setValue("LastWindowWidth", lastWindowWidth_); settings.setValue("LastWindowHeight", lastWindowHeight_); settings.setValue("LastWindowMaximized", lastWindowMaximized_); settings.setValue("RememberWindowSize", rememberWindowSize_); settings.setValue("AlwaysShowTabs", alwaysShowTabs_); settings.setValue("ShowTabClose", showTabClose_); settings.setValue("SplitterPos", splitterPos_); settings.setValue("SidePaneMode", sidePaneModeToString(sidePaneMode_)); settings.endGroup(); return true; } static const char* bookmarkOpenMethodToString(OpenDirTargetType value) { switch(value) { case OpenInCurrentTab: default: return "current_tab"; case OpenInNewTab: return "new_tab"; case OpenInNewWindow: return "new_window"; case OpenInLastActiveWindow: return "last_window"; } return ""; } static OpenDirTargetType bookmarkOpenMethodFromString(const QString str) { if(str == QStringLiteral("new_tab")) return OpenInNewTab; else if(str == QStringLiteral("new_window")) return OpenInNewWindow; else if(str == QStringLiteral("last_window")) return OpenInLastActiveWindow; return OpenInCurrentTab; } static const char* viewModeToString(Fm::FolderView::ViewMode value) { const char* ret; switch(value) { case Fm::FolderView::IconMode: default: ret = "icon"; break; case Fm::FolderView::CompactMode: ret = "compact"; break; case Fm::FolderView::DetailedListMode: ret = "detailed"; break; case Fm::FolderView::ThumbnailMode: ret = "thumbnail"; break; } return ret; } Fm::FolderView::ViewMode viewModeFromString(const QString str) { Fm::FolderView::ViewMode ret; if(str == "icon") ret = Fm::FolderView::IconMode; else if(str == "compact") ret = Fm::FolderView::CompactMode; else if(str == "detailed") ret = Fm::FolderView::DetailedListMode; else if(str == "thumbnail") ret = Fm::FolderView::ThumbnailMode; else ret = Fm::FolderView::IconMode; return ret; } static const char* sortOrderToString(Qt::SortOrder order) { return (order == Qt::DescendingOrder ? "descending" : "ascending"); } static Qt::SortOrder sortOrderFromString(const QString str) { return (str == "descending" ? Qt::DescendingOrder : Qt::AscendingOrder); } static const char* sortColumnToString(Fm::FolderModel::ColumnId value) { const char* ret; switch(value) { case Fm::FolderModel::ColumnFileName: default: ret = "name"; break; case Fm::FolderModel::ColumnFileType: ret = "type"; break; case Fm::FolderModel::ColumnFileSize: ret = "size"; break; case Fm::FolderModel::ColumnFileMTime: ret = "mtime"; break; case Fm::FolderModel::ColumnFileOwner: ret = "owner"; break; } return ret; } static Fm::FolderModel::ColumnId sortColumnFromString(const QString str) { Fm::FolderModel::ColumnId ret; if(str == "name") ret = Fm::FolderModel::ColumnFileName; else if(str == "type") ret = Fm::FolderModel::ColumnFileType; else if(str == "size") ret = Fm::FolderModel::ColumnFileSize; else if(str == "mtime") ret = Fm::FolderModel::ColumnFileMTime; else if(str == "owner") ret = Fm::FolderModel::ColumnFileOwner; else ret = Fm::FolderModel::ColumnFileName; return ret; } static const char* wallpaperModeToString(int value) { const char* ret; switch(value) { case DesktopWindow::WallpaperNone: default: ret = "none"; break; case DesktopWindow::WallpaperStretch: ret = "stretch"; break; case DesktopWindow::WallpaperFit: ret = "fit"; break; case DesktopWindow::WallpaperCenter: ret = "center"; break; case DesktopWindow::WallpaperTile: ret = "tile"; break; } return ret; } static int wallpaperModeFromString(const QString str) { int ret; if(str == "stretch") ret = DesktopWindow::WallpaperStretch; else if(str == "fit") ret = DesktopWindow::WallpaperFit; else if(str == "center") ret = DesktopWindow::WallpaperCenter; else if(str == "tile") ret = DesktopWindow::WallpaperTile; else ret = DesktopWindow::WallpaperNone; return ret; } static const char* sidePaneModeToString(Fm::SidePane::Mode value) { const char* ret; switch(value) { case Fm::SidePane::ModePlaces: default: ret = "places"; break; case Fm::SidePane::ModeDirTree: ret = "dirtree"; break; case Fm::SidePane::ModeNone: ret = "none"; break; } return ret; } static Fm::SidePane::Mode sidePaneModeFromString(const QString& str) { Fm::SidePane::Mode ret; if(str == "none") ret = Fm::SidePane::ModeNone; else if(str == "dirtree") ret = Fm::SidePane::ModeDirTree; else ret = Fm::SidePane::ModePlaces; return ret; } void Settings::setTerminal(QString terminalCommand) { terminal_ = terminalCommand; // override the settings in libfm FmConfig. g_free(fm_config->terminal); fm_config->terminal = g_strdup(terminal_.toLocal8Bit().constData()); g_signal_emit_by_name(fm_config, "changed::terminal"); } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/settings.h000066400000000000000000000313211263124606600172740ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_SETTINGS_H #define PCMANFM_SETTINGS_H #include #include #include #include #include "desktopwindow.h" #include #include namespace PCManFM { enum OpenDirTargetType { OpenInCurrentTab, OpenInNewTab, OpenInNewWindow, OpenInLastActiveWindow }; class Settings : public QObject { Q_OBJECT public: Settings(); virtual ~Settings(); bool load(QString profile = "default"); bool save(QString profile = QString()); bool loadFile(QString filePath); bool saveFile(QString filePath); QString profileDir(QString profile, bool useFallback = false); // setter/getter functions QString profileName() const { return profileName_; } bool supportTrash() const { return supportTrash_; } QString fallbackIconThemeName() const { return fallbackIconThemeName_; } bool useFallbackIconTheme() const { return useFallbackIconTheme_; } void setFallbackIconThemeName(QString iconThemeName) { fallbackIconThemeName_ = iconThemeName; } OpenDirTargetType bookmarkOpenMethod() { return bookmarkOpenMethod_; } void setBookmarkOpenMethod(OpenDirTargetType bookmarkOpenMethod) { bookmarkOpenMethod_ = bookmarkOpenMethod; } QString suCommand() const { return suCommand_; } void setSuCommand(QString suCommand) { suCommand_ = suCommand; } QString terminal() { return terminal_; } void setTerminal(QString terminalCommand); QString archiver() const { return archiver_; } void setArchiver(QString archiver) { archiver_ = archiver; // override libfm FmConfig g_free(fm_config->archiver); fm_config->archiver = g_strdup(archiver_.toLocal8Bit().constData()); } bool mountOnStartup() const { return mountOnStartup_; } void setMountOnStartup(bool mountOnStartup) { mountOnStartup_ = mountOnStartup; } bool mountRemovable() { return mountRemovable_; } void setMountRemovable(bool mountRemovable) { mountRemovable_ = mountRemovable; } bool autoRun() const { return autoRun_; } void setAutoRun(bool autoRun) { autoRun_ = autoRun; } bool closeOnUnmount() const { return closeOnUnmount_; } void setCloseOnUnmount(bool value) { closeOnUnmount_ = value; } DesktopWindow::WallpaperMode wallpaperMode() const { return DesktopWindow::WallpaperMode(wallpaperMode_); } void setWallpaperMode(int wallpaperMode) { wallpaperMode_ = wallpaperMode; } QString wallpaper() const { return wallpaper_; } void setWallpaper(QString wallpaper) { wallpaper_ = wallpaper; } const QColor& desktopBgColor() const { return desktopBgColor_; } void setDesktopBgColor(QColor desktopBgColor) { desktopBgColor_ = desktopBgColor; } const QColor& desktopFgColor() const { return desktopFgColor_; } void setDesktopFgColor(QColor desktopFgColor) { desktopFgColor_ = desktopFgColor; } const QColor& desktopShadowColor() const { return desktopShadowColor_; } void setDesktopShadowColor(QColor desktopShadowColor) { desktopShadowColor_ = desktopShadowColor; } QFont desktopFont() const { return desktopFont_; } void setDesktopFont(QFont font) { desktopFont_ = font; } bool showWmMenu() const { return showWmMenu_; } void setShowWmMenu(bool value) { showWmMenu_ = value; } bool desktopShowHidden() const { return desktopShowHidden_; } void setDesktopShowHidden(bool desktopShowHidden) { desktopShowHidden_ = desktopShowHidden; } Qt::SortOrder desktopSortOrder() const { return desktopSortOrder_; } void setDesktopSortOrder(Qt::SortOrder desktopSortOrder) { desktopSortOrder_ = desktopSortOrder; } Fm::FolderModel::ColumnId desktopSortColumn() const { return desktopSortColumn_; } void setDesktopSortColumn(Fm::FolderModel::ColumnId desktopSortColumn) { desktopSortColumn_ = desktopSortColumn; } bool alwaysShowTabs() const { return alwaysShowTabs_; } void setAlwaysShowTabs(bool alwaysShowTabs) { alwaysShowTabs_ = alwaysShowTabs; } bool showTabClose() const { return showTabClose_; } void setShowTabClose(bool showTabClose) { showTabClose_ = showTabClose; } bool rememberWindowSize() const { return rememberWindowSize_; } void setRememberWindowSize(bool rememberWindowSize) { rememberWindowSize_ = rememberWindowSize; } int windowWidth() const { if(rememberWindowSize_) return lastWindowWidth_; else return fixedWindowWidth_; } int windowHeight() const { if(rememberWindowSize_) return lastWindowHeight_; else return fixedWindowHeight_; } bool windowMaximized() const { if(rememberWindowSize_) return lastWindowMaximized_; else return false; } int fixedWindowWidth() const { return fixedWindowWidth_; } void setFixedWindowWidth(int fixedWindowWidth) { fixedWindowWidth_ = fixedWindowWidth; } int fixedWindowHeight() const { return fixedWindowHeight_; } void setFixedWindowHeight(int fixedWindowHeight) { fixedWindowHeight_ = fixedWindowHeight; } void setLastWindowWidth(int lastWindowWidth) { lastWindowWidth_ = lastWindowWidth; } void setLastWindowHeight(int lastWindowHeight) { lastWindowHeight_ = lastWindowHeight; } void setLastWindowMaximized(bool lastWindowMaximized) { lastWindowMaximized_ = lastWindowMaximized; } int splitterPos() const { return splitterPos_; } void setSplitterPos(int splitterPos) { splitterPos_ = splitterPos; } Fm::SidePane::Mode sidePaneMode() const { return sidePaneMode_; } void setSidePaneMode(Fm::SidePane::Mode sidePaneMode) { sidePaneMode_ = sidePaneMode; } Fm::FolderView::ViewMode viewMode() const { return viewMode_; } void setViewMode(Fm::FolderView::ViewMode viewMode) { viewMode_ = viewMode; } bool showHidden() const { return showHidden_; } void setShowHidden(bool showHidden) { showHidden_ = showHidden; } Qt::SortOrder sortOrder() const { return sortOrder_; } void setSortOrder(Qt::SortOrder sortOrder) { sortOrder_ = sortOrder; } Fm::FolderModel::ColumnId sortColumn() const { return sortColumn_; } void setSortColumn(Fm::FolderModel::ColumnId sortColumn) { sortColumn_ = sortColumn; } bool sortFolderFirst() const { return sortFolderFirst_; } void setSortFolderFirst(bool folderFirst) { sortFolderFirst_ = folderFirst; } bool showFilter() const { return showFilter_; } void setShowFilter(bool value) { showFilter_ = value; } // settings for use with libfm bool singleClick() const { return singleClick_; } void setSingleClick(bool singleClick) { singleClick_ = singleClick; } int autoSelectionDelay() const { return autoSelectionDelay_; } void setAutoSelectionDelay(int value) { autoSelectionDelay_ = value; } bool useTrash() const { if(!supportTrash_) return false; return useTrash_; } void setUseTrash(bool useTrash) { useTrash_ = useTrash; } bool confirmDelete() const { return confirmDelete_; } void setConfirmDelete(bool confirmDelete) { confirmDelete_ = confirmDelete; } bool noUsbTrash() const { return noUsbTrash_; } void setNoUsbTrash(bool noUsbTrash) { noUsbTrash_ = noUsbTrash; fm_config->no_usb_trash = noUsbTrash_; // also set this to libfm since FmFileOpsJob reads this config value before trashing files. } bool confirmTrash() const { return confirmTrash_; } void setConfirmTrash(bool value) { confirmTrash_ = value; } bool quickExec() const { return quickExec_; } void setQuickExec(bool value) { quickExec_ = value; fm_config->quick_exec = quickExec_; } // bool thumbnailLocal_; // bool thumbnailMax; int bigIconSize() const { return bigIconSize_; } void setBigIconSize(int bigIconSize) { bigIconSize_ = bigIconSize; } int smallIconSize() const { return smallIconSize_; } void setSmallIconSize(int smallIconSize) { smallIconSize_ = smallIconSize; } int sidePaneIconSize() const { return sidePaneIconSize_; } void setSidePaneIconSize(int sidePaneIconSize) { sidePaneIconSize_ = sidePaneIconSize; } int thumbnailIconSize() const { return thumbnailIconSize_; } bool showThumbnails() { return showThumbnails_; } void setShowThumbnails(bool show) { showThumbnails_ = show; } void setThumbnailLocalFilesOnly(bool value) { Fm::ThumbnailLoader::setLocalFilesOnly(value); } bool thumbnailLocalFilesOnly() { return Fm::ThumbnailLoader::localFilesOnly(); } int maxThumbnailFileSize() { return Fm::ThumbnailLoader::maxThumbnailFileSize(); } void setMaxThumbnailFileSize(int size) { Fm::ThumbnailLoader::setMaxThumbnailFileSize(size); } void setThumbnailIconSize(int thumbnailIconSize) { thumbnailIconSize_ = thumbnailIconSize; } bool siUnit() { return siUnit_; } void setSiUnit(bool siUnit) { siUnit_ = siUnit; // override libfm FmConfig settings. FIXME: should we do this? fm_config->si_unit = (gboolean)siUnit_; } bool backupAsHidden() const { return backupAsHidden_; } void setBackupAsHidden(bool value) { backupAsHidden_ = value; fm_config->backup_as_hidden = backupAsHidden_; // also set this to libfm since fm_file_info_is_hidden() reads this value internally. } bool showFullNames() const { return showFullNames_; } void setShowFullNames(bool value) { showFullNames_ = value; } bool shadowHidden() const { return shadowHidden_; } void setShadowHidden(bool value) { shadowHidden_ = value; } bool onlyUserTemplates() const { return onlyUserTemplates_; } void setOnlyUserTemplates(bool value) { onlyUserTemplates_ = value; fm_config->only_user_templates = onlyUserTemplates_; } bool templateTypeOnce() const { return templateTypeOnce_; } void setTemplateTypeOnce(bool value) { templateTypeOnce_ = value; fm_config->template_type_once = templateTypeOnce_; } bool templateRunApp() const { return templateRunApp_; } void setTemplateRunApp(bool value) { templateRunApp_ = value; fm_config->template_run_app = templateRunApp_; } private: QString profileName_; bool supportTrash_; // PCManFM specific QString fallbackIconThemeName_; bool useFallbackIconTheme_; OpenDirTargetType bookmarkOpenMethod_; QString suCommand_; QString terminal_; bool mountOnStartup_; bool mountRemovable_; bool autoRun_; bool closeOnUnmount_; int wallpaperMode_; QString wallpaper_; QColor desktopBgColor_; QColor desktopFgColor_; QColor desktopShadowColor_; QFont desktopFont_; bool showWmMenu_; bool desktopShowHidden_; Qt::SortOrder desktopSortOrder_; Fm::FolderModel::ColumnId desktopSortColumn_; bool alwaysShowTabs_; bool showTabClose_; bool rememberWindowSize_; int fixedWindowWidth_; int fixedWindowHeight_; int lastWindowWidth_; int lastWindowHeight_; bool lastWindowMaximized_; int splitterPos_; Fm::SidePane::Mode sidePaneMode_; Fm::FolderView::ViewMode viewMode_; bool showHidden_; Qt::SortOrder sortOrder_; Fm::FolderModel::ColumnId sortColumn_; bool sortFolderFirst_; bool showFilter_; // settings for use with libfm bool singleClick_; int autoSelectionDelay_; bool useTrash_; bool confirmDelete_; bool noUsbTrash_; // do not trash files on usb removable devices bool confirmTrash_; // Confirm before moving files into "trash can" bool quickExec_; // Don't ask options on launch executable file bool showThumbnails_; QString archiver_; bool siUnit_; bool backupAsHidden_; bool showFullNames_; bool shadowHidden_; int bigIconSize_; int smallIconSize_; int sidePaneIconSize_; int thumbnailIconSize_; bool onlyUserTemplates_; bool templateTypeOnce_; bool templateRunApp_; }; } #endif // PCMANFM_SETTINGS_H pcmanfm-qt-0.10.1/pcmanfm/tabbar.cpp000066400000000000000000000022151263124606600172220ustar00rootroot00000000000000/* Copyright (C) 2014 Kuzma Shapran This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "tabbar.h" #include namespace PCManFM { TabBar::TabBar(QWidget *parent): QTabBar(parent) { } void TabBar::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::MiddleButton) { int index = tabAt(event->pos()); if (index != -1) { Q_EMIT tabCloseRequested(index); } } QTabBar::mouseReleaseEvent(event); } } pcmanfm-qt-0.10.1/pcmanfm/tabbar.h000066400000000000000000000020641263124606600166710ustar00rootroot00000000000000/* Copyright (C) 2014 Kuzma Shapran This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef FM_TABBAR_H #define FM_TABBAR_H #include class QMouseEvent; namespace PCManFM { class TabBar : public QTabBar { Q_OBJECT public: explicit TabBar(QWidget *parent = 0); protected: void mouseReleaseEvent(QMouseEvent *event); }; } #endif // FM_TABBAR_H pcmanfm-qt-0.10.1/pcmanfm/tabpage.cpp000066400000000000000000000465551263124606600174110ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "tabpage.h" #include "launcher.h" #include #include #include #include #include #include #include #include "settings.h" #include "application.h" #include #include #include using namespace Fm; namespace PCManFM { bool ProxyFilter::filterAcceptsRow(const Fm::ProxyFolderModel* model, FmFileInfo* info) const { if(!model || !info) return true; QString baseName(fm_file_info_get_name(info)); if(!virtHiddenList_.isEmpty() && !model->showHidden() && virtHiddenList_.contains(baseName)) return false; if(!filterStr_.isEmpty() && !baseName.contains(filterStr_, Qt::CaseInsensitive)) return false; return true; } void ProxyFilter::setVirtHidden(FmFolder* folder) { virtHiddenList_ = QStringList(); // reset the list if(!folder) return; if(FmPath* path = fm_folder_get_path(folder)) { char* pathStr = fm_path_to_str(path); if(pathStr) { QString dotHidden = QString(pathStr) + QString("/.hidden"); g_free(pathStr); QFile file(dotHidden); if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); while(!in.atEnd()) virtHiddenList_.append(in.readLine()); file.close(); } } } } TabPage::TabPage(FmPath* path, QWidget* parent): QWidget(parent), folder_(NULL), folderModel_(NULL), overrideCursor_(false) { Settings& settings = static_cast(qApp)->settings(); // create proxy folder model to do item filtering proxyModel_ = new ProxyFolderModel(); proxyModel_->setShowHidden(settings.showHidden()); proxyModel_->setShowThumbnails(settings.showThumbnails()); connect(proxyModel_, &ProxyFolderModel::sortFilterChanged, this, &TabPage::onModelSortFilterChanged); verticalLayout = new QVBoxLayout(this); verticalLayout->setContentsMargins(0, 0, 0, 0); folderView_ = new View(settings.viewMode(), this); // newView->setColumnWidth(Fm::FolderModel::ColumnName, 200); connect(folderView_, &View::openDirRequested, this, &TabPage::onOpenDirRequested); connect(folderView_, &View::selChanged, this, &TabPage::onSelChanged); connect(folderView_, &View::clickedBack, this, &TabPage::backwardRequested); connect(folderView_, &View::clickedForward, this, &TabPage::forwardRequested); proxyFilter_ = new ProxyFilter(); proxyModel_->addFilter(proxyFilter_); // FIXME: this is very dirty folderView_->setModel(proxyModel_); verticalLayout->addWidget(folderView_); chdir(path, true); } TabPage::~TabPage() { freeFolder(); if(proxyFilter_) delete proxyFilter_; if(proxyModel_) delete proxyModel_; if(folderModel_) folderModel_->unref(); if(overrideCursor_) { QApplication::restoreOverrideCursor(); // remove busy cursor } } void TabPage::freeFolder() { if(folder_) { g_signal_handlers_disconnect_by_func(folder_, (gpointer)onFolderStartLoading, this); g_signal_handlers_disconnect_by_func(folder_, (gpointer)onFolderFinishLoading, this); g_signal_handlers_disconnect_by_func(folder_, (gpointer)onFolderError, this); g_signal_handlers_disconnect_by_func(folder_, (gpointer)onFolderFsInfo, this); g_signal_handlers_disconnect_by_func(folder_, (gpointer)onFolderRemoved, this); g_signal_handlers_disconnect_by_func(folder_, (gpointer)onFolderUnmount, this); g_signal_handlers_disconnect_by_func(folder_, (gpointer)onFolderContentChanged, this); g_object_unref(folder_); folder_ = NULL; } } /*static*/ void TabPage::onFolderStartLoading(FmFolder* _folder, TabPage* pThis) { if(!pThis->overrideCursor_) { // FIXME: sometimes FmFolder of libfm generates unpaired "start-loading" and // "finish-loading" signals of uncertain reasons. This should be a bug in libfm. // Until it's fixed in libfm, we need to workaround the problem here, not to // override the cursor twice. QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); pThis->overrideCursor_ = true; } #if 0 #if FM_CHECK_VERSION(1, 0, 2) && 0 // disabled if(fm_folder_is_incremental(_folder)) { /* create a model for the folder and set it to the view it is delayed for non-incremental folders since adding rows into model is much faster without handlers connected to its signals */ FmFolderModel* model = fm_folder_model_new(folder, FALSE); fm_folder_view_set_model(fv, model); fm_folder_model_set_sort(model, app_config->sort_by, (app_config->sort_type == GTK_SORT_ASCENDING) ? FM_SORT_ASCENDING : FM_SORT_DESCENDING); g_object_unref(model); } else #endif fm_folder_view_set_model(fv, NULL); #endif } // slot void TabPage::restoreScrollPos() { // scroll to recorded position folderView_->childView()->verticalScrollBar()->setValue(browseHistory().currentScrollPos()); // if the current folder is the parent folder of the last browsed folder, // select the folder item in current view. if(lastFolderPath_.parent() == path()) { QModelIndex index = folderView_->indexFromFolderPath(lastFolderPath_.data()); if(index.isValid()) { folderView_->childView()->scrollTo(index, QAbstractItemView::EnsureVisible); folderView_->childView()->setCurrentIndex(index); } } } /*static*/ void TabPage::onFolderFinishLoading(FmFolder* _folder, TabPage* pThis) { // FIXME: is this needed? FmFileInfo* fi = fm_folder_get_info(_folder); if(fi) { // if loading of the folder fails, it's possible that we don't have FmFileInfo. pThis->title_ = QString::fromUtf8(fm_file_info_get_disp_name(fi)); Q_EMIT pThis->titleChanged(pThis->title_); } fm_folder_query_filesystem_info(_folder); // FIXME: is this needed? #if 0 FmFolderView* fv = folder_view; const FmNavHistoryItem* item; GtkScrolledWindow* scroll = GTK_SCROLLED_WINDOW(fv); /* Note: most of the time, we delay the creation of the * folder model and do it after the whole folder is loaded. * That is because adding rows into model is much faster when no handlers * are connected to its signals. So we detach the model from folder view * and create the model again when it's fully loaded. * This optimization, however, is not used for FmFolder objects * with incremental loading (search://) */ if(fm_folder_view_get_model(fv) == NULL) { /* create a model for the folder and set it to the view */ FmFolderModel* model = fm_folder_model_new(folder, app_config->show_hidden); fm_folder_view_set_model(fv, model); #if FM_CHECK_VERSION(1, 0, 2) /* since 1.0.2 sorting should be applied on model instead of view */ fm_folder_model_set_sort(model, app_config->sort_by, (app_config->sort_type == GTK_SORT_ASCENDING) ? FM_SORT_ASCENDING : FM_SORT_DESCENDING); #endif g_object_unref(model); } #endif // update status text QString& text = pThis->statusText_[StatusTextNormal]; text = pThis->formatStatusText(); Q_EMIT pThis->statusChanged(StatusTextNormal, text); if(pThis->overrideCursor_) { QApplication::restoreOverrideCursor(); // remove busy cursor pThis->overrideCursor_ = false; } // After finishing loading the folder, the model is updated, but Qt delays the UI update // for performance reasons. Therefore at this point the UI is not up to date. // Of course, the scrollbar ranges are not updated yet. We solve this by installing an Qt timeout handler. QTimer::singleShot(10, pThis, SLOT(restoreScrollPos())); } /*static*/ FmJobErrorAction TabPage::onFolderError(FmFolder* _folder, GError* err, FmJobErrorSeverity severity, TabPage* pThis) { if(err->domain == G_IO_ERROR) { if(err->code == G_IO_ERROR_NOT_MOUNTED && severity < FM_JOB_ERROR_CRITICAL) { FmPath* path = fm_folder_get_path(_folder); MountOperation* op = new MountOperation(pThis); op->mount(path); if(op->wait()) { // blocking event loop, wait for mount operation to finish. // This will reload the folder, which generates a new "start-loading" // signal, so we get more "start-loading" signals than "finish-loading" // signals. FIXME: This is a bug of libfm. // Because the two signals are not correctly paired, we need to // remove busy cursor here since "finish-loading" is not emitted. QApplication::restoreOverrideCursor(); // remove busy cursor pThis->overrideCursor_ = false; return FM_JOB_RETRY; } } } if(severity >= FM_JOB_ERROR_MODERATE) { /* Only show more severe errors to the users and * ignore milder errors. Otherwise too many error * message boxes can be annoying. * This fixes bug #3411298- Show "Permission denied" when switching to super user mode. * https://sourceforge.net/tracker/?func=detail&aid=3411298&group_id=156956&atid=801864 * */ // FIXME: consider replacing this modal dialog with an info bar to improve usability QMessageBox::critical(pThis, tr("Error"), QString::fromUtf8(err->message)); } return FM_JOB_CONTINUE; } /*static*/ void TabPage::onFolderFsInfo(FmFolder* _folder, TabPage* pThis) { guint64 free, total; QString& msg = pThis->statusText_[StatusTextFSInfo]; if(fm_folder_get_filesystem_info(_folder, &total, &free)) { char total_str[64]; char free_str[64]; fm_file_size_to_str(free_str, sizeof(free_str), free, fm_config->si_unit); fm_file_size_to_str(total_str, sizeof(total_str), total, fm_config->si_unit); msg = tr("Free space: %1 (Total: %2)") .arg(QString::fromUtf8(free_str)) .arg(QString::fromUtf8(total_str)); } else msg.clear(); Q_EMIT pThis->statusChanged(StatusTextFSInfo, msg); } QString TabPage::formatStatusText() { if(proxyModel_ && folder_) { FmFileInfoList* files = fm_folder_get_files(folder_); int total_files = fm_file_info_list_get_length(files); int shown_files = proxyModel_->rowCount(); int hidden_files = total_files - shown_files; QString text = tr("%n item(s)", "", shown_files); if(hidden_files > 0) text += tr(" (%n hidden)", "", hidden_files); return text; } return QString(); } /*static*/ void TabPage::onFolderRemoved(FmFolder* _folder, TabPage* pThis) { // the folder we're showing is removed, destroy the widget qDebug("folder removed"); Settings& settings = static_cast(qApp)->settings(); // NOTE: call pThis->deleteLater() directly from this GObject signal handler // does not work but I don't know why. // Maybe it's the problem of glib mainloop integration? // Call it when idle works, though. if(settings.closeOnUnmount()) QTimer::singleShot(0, pThis, SLOT(deleteLater())); else pThis->chdir(fm_path_get_home()); } /*static*/ void TabPage::onFolderUnmount(FmFolder* _folder, TabPage* pThis) { // the folder we're showing is unmounted, destroy the widget qDebug("folder unmount"); // NOTE: call pThis->deleteLater() directly from this GObject signal handler // does not work but I don't know why. // Maybe it's the problem of glib mainloop integration? // Call it when idle works, though. Settings& settings = static_cast(qApp)->settings(); // NOTE: call pThis->deleteLater() directly from this GObject signal handler // does not work but I don't know why. // Maybe it's the problem of glib mainloop integration? // Call it when idle works, though. if(settings.closeOnUnmount()) QTimer::singleShot(0, pThis, SLOT(deleteLater())); else pThis->chdir(fm_path_get_home()); } /*static */ void TabPage::onFolderContentChanged(FmFolder* _folder, TabPage* pThis) { /* update status text */ pThis->statusText_[StatusTextNormal] = pThis->formatStatusText(); Q_EMIT pThis->statusChanged(StatusTextNormal, pThis->statusText_[StatusTextNormal]); } QString TabPage::pathName() { char* disp_path = fm_path_display_name(path(), TRUE); QString ret = QString::fromUtf8(disp_path); g_free(disp_path); return ret; } void TabPage::chdir(FmPath* newPath, bool addHistory) { if(folder_) { // we're already in the specified dir if(fm_path_equal(newPath, fm_folder_get_path(folder_))) return; // remember the previous folder path that we have browsed. lastFolderPath_ = fm_folder_get_path(folder_); if(addHistory) { // store current scroll pos in the browse history BrowseHistoryItem& item = history_.currentItem(); QAbstractItemView* childView = folderView_->childView(); item.setScrollPos(childView->verticalScrollBar()->value()); } // free the previous model if(folderModel_) { proxyModel_->setSourceModel(NULL); folderModel_->unref(); // unref the cached model folderModel_ = NULL; } freeFolder(); } char* disp_name = fm_path_display_basename(newPath); title_ = QString::fromUtf8(disp_name); Q_EMIT titleChanged(title_); g_free(disp_name); folder_ = fm_folder_from_path(newPath); proxyFilter_->setVirtHidden(folder_); if(addHistory) { // add current path to browse history history_.add(path()); } g_signal_connect(folder_, "start-loading", G_CALLBACK(onFolderStartLoading), this); g_signal_connect(folder_, "finish-loading", G_CALLBACK(onFolderFinishLoading), this); g_signal_connect(folder_, "error", G_CALLBACK(onFolderError), this); g_signal_connect(folder_, "fs-info", G_CALLBACK(onFolderFsInfo), this); /* destroy the page when the folder is unmounted or deleted. */ g_signal_connect(folder_, "removed", G_CALLBACK(onFolderRemoved), this); g_signal_connect(folder_, "unmount", G_CALLBACK(onFolderUnmount), this); g_signal_connect(folder_, "content-changed", G_CALLBACK(onFolderContentChanged), this); folderModel_ = CachedFolderModel::modelFromFolder(folder_); proxyModel_->setSourceModel(folderModel_); proxyModel_->sort(proxyModel_->sortColumn(), proxyModel_->sortOrder()); Settings& settings = static_cast(qApp)->settings(); proxyModel_->setFolderFirst(settings.sortFolderFirst()); proxyModel_->sort(settings.sortColumn(), settings.sortOrder()); if(fm_folder_is_loaded(folder_)) { onFolderStartLoading(folder_, this); onFolderFinishLoading(folder_, this); onFolderFsInfo(folder_, this); } else onFolderStartLoading(folder_, this); } void TabPage::selectAll() { folderView_->selectAll(); } void TabPage::invertSelection() { folderView_->invertSelection(); } void TabPage::onOpenDirRequested(FmPath* path, int target) { Q_EMIT openDirRequested(path, target); } // when the current selection in the folder view is changed void TabPage::onSelChanged(int numSel) { QString msg; if(numSel > 0) { /* FIXME: display total size of all selected files. */ if(numSel == 1) { /* only one file is selected */ FmFileInfoList* files = folderView_->selectedFiles(); FmFileInfo* fi = fm_file_info_list_peek_head(files); const char* size_str = fm_file_info_get_disp_size(fi); if(size_str) { msg = QString("\"%1\" (%2) %3") .arg(QString::fromUtf8(fm_file_info_get_disp_name(fi))) .arg(QString::fromUtf8(size_str ? size_str : "")) .arg(QString::fromUtf8(fm_file_info_get_desc(fi))); } else { msg = QString("\"%1\" %2") .arg(QString::fromUtf8(fm_file_info_get_disp_name(fi))) .arg(QString::fromUtf8(fm_file_info_get_desc(fi))); } /* FIXME: should we support statusbar plugins as in the gtk+ version? */ fm_file_info_list_unref(files); } else { goffset sum; GList* l; msg = tr("%1 item(s) selected", NULL, numSel).arg(numSel); /* don't count if too many files are selected, that isn't lightweight */ if(numSel < 1000) { sum = 0; FmFileInfoList* files = folderView_->selectedFiles(); for(l = fm_file_info_list_peek_head_link(files); l; l = l->next) { if(fm_file_info_is_dir(FM_FILE_INFO(l->data))) { /* if we got a directory then we cannot tell it's size unless we do deep count but we cannot afford it */ sum = -1; break; } sum += fm_file_info_get_size(FM_FILE_INFO(l->data)); } if(sum >= 0) { char size_str[128]; fm_file_size_to_str(size_str, sizeof(size_str), sum, fm_config->si_unit); msg += QString(" (%1)").arg(QString::fromUtf8(size_str)); } /* FIXME: should we support statusbar plugins as in the gtk+ version? */ fm_file_info_list_unref(files); } /* FIXME: can we show some more info on selection? that isn't lightweight if a lot of files are selected */ } } statusText_[StatusTextSelectedFiles] = msg; Q_EMIT statusChanged(StatusTextSelectedFiles, msg); } void TabPage::backward() { // remember current scroll position BrowseHistoryItem& item = history_.currentItem(); QAbstractItemView* childView = folderView_->childView(); item.setScrollPos(childView->verticalScrollBar()->value()); history_.backward(); chdir(history_.currentPath(), false); } void TabPage::forward() { // remember current scroll position BrowseHistoryItem& item = history_.currentItem(); QAbstractItemView* childView = folderView_->childView(); item.setScrollPos(childView->verticalScrollBar()->value()); history_.forward(); chdir(history_.currentPath(), false); } void TabPage::jumpToHistory(int index) { if(index >=0 && index < history_.size()) { // remember current scroll position BrowseHistoryItem& item = history_.currentItem(); QAbstractItemView* childView = folderView_->childView(); item.setScrollPos(childView->verticalScrollBar()->value()); history_.setCurrentIndex(index); chdir(history_.currentPath(), false); } } bool TabPage::canUp() { return (path() != NULL && fm_path_get_parent(path()) != NULL); } void TabPage::up() { FmPath* _path = path(); if(_path) { FmPath* parent = fm_path_get_parent(_path); if(parent) { chdir(parent, true); } } } void TabPage::onModelSortFilterChanged() { Q_EMIT sortFilterChanged(); } void TabPage::updateFromSettings(Settings& settings) { folderView_->updateFromSettings(settings); } void TabPage::setShowHidden(bool showHidden) { if(!proxyModel_ || showHidden == proxyModel_->showHidden()) return; proxyModel_->setShowHidden(showHidden); statusText_[StatusTextNormal] = formatStatusText(); Q_EMIT statusChanged(StatusTextNormal, statusText_[StatusTextNormal]); } void TabPage:: applyFilter() { if(!proxyModel_) return; proxyModel_->updateFilters(); statusText_[StatusTextNormal] = formatStatusText(); Q_EMIT statusChanged(StatusTextNormal, statusText_[StatusTextNormal]); } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/tabpage.h000066400000000000000000000133131263124606600170400ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef FM_TABPAGE_H #define FM_TABPAGE_H #include #include #include #include #include "view.h" #include namespace Fm { class FileLauncher; class FolderModel; class ProxyFolderModel; class CachedFolderModel; }; namespace PCManFM { class Settings; class Launcher; class ProxyFilter : public Fm::ProxyFolderModelFilter { public: bool filterAcceptsRow(const Fm::ProxyFolderModel* model, FmFileInfo* info) const; virtual ~ProxyFilter() {} void setVirtHidden(FmFolder* folder); QString getFilterStr() { return filterStr_; } void setFilterStr(QString str) { filterStr_ = str; } private: QString filterStr_; QStringList virtHiddenList_; }; class TabPage : public QWidget { Q_OBJECT public: enum StatusTextType { StatusTextNormal, StatusTextSelectedFiles, StatusTextFSInfo, StatusTextNum }; public: explicit TabPage(FmPath* path, QWidget* parent = nullptr); virtual ~TabPage(); void chdir(FmPath* newPath, bool addHistory = true); Fm::FolderView::ViewMode viewMode() { return folderView_->viewMode(); } void setViewMode(Fm::FolderView::ViewMode mode) { folderView_->setViewMode(mode); } void sort(int col, Qt::SortOrder order = Qt::AscendingOrder) { // if(folderModel_) // folderModel_->sort(col, order); if(proxyModel_) proxyModel_->sort(col, order); } int sortColumn() { return proxyModel_->sortColumn(); } Qt::SortOrder sortOrder() { return proxyModel_->sortOrder(); } bool sortFolderFirst() { return proxyModel_->folderFirst(); } void setSortFolderFirst(bool value) { proxyModel_->setFolderFirst(value); } bool sortCaseSensitive() { return proxyModel_->sortCaseSensitivity(); } void setSortCaseSensitive(bool value) { proxyModel_->setSortCaseSensitivity(value ? Qt::CaseSensitive : Qt::CaseInsensitive); } bool showHidden() { return proxyModel_->showHidden(); } void setShowHidden(bool showHidden); FmPath* path() { return folder_ ? fm_folder_get_path(folder_) : nullptr; } QString pathName(); FmFolder* folder() { return folder_; } Fm::FolderModel* folderModel() { return reinterpret_cast(folderModel_); } View* folderView() { return folderView_; } Fm::BrowseHistory& browseHistory() { return history_; } FmFileInfoList* selectedFiles() { return folderView_->selectedFiles(); } FmPathList* selectedFilePaths() { return folderView_->selectedFilePaths(); } void selectAll(); void invertSelection(); void reload() { if(folder_) { proxyFilter_->setVirtHidden(folder_); // reread ".hidden" fm_folder_reload(folder_); } } QString title() const { return title_; } QString statusText(StatusTextType type = StatusTextNormal) const { return statusText_[type]; } bool canBackward() { return history_.canBackward(); } void backward(); bool canForward() { return history_.canForward(); } void forward(); void jumpToHistory(int index); bool canUp(); void up(); void updateFromSettings(Settings& settings); void setFileLauncher(Fm::FileLauncher* launcher) { folderView_->setFileLauncher(launcher); } Fm::FileLauncher* fileLauncher() { return folderView_->fileLauncher(); } QString getFilterStr() { if(proxyFilter_) return proxyFilter_->getFilterStr(); return QString(); } void setFilterStr(QString str) { if(proxyFilter_) proxyFilter_->setFilterStr(str); } void applyFilter(); Q_SIGNALS: void statusChanged(int type, QString statusText); void titleChanged(QString title); void openDirRequested(FmPath* path, int target); void sortFilterChanged(); void forwardRequested(); void backwardRequested(); protected Q_SLOTS: void onOpenDirRequested(FmPath* path, int target); void onModelSortFilterChanged(); void onSelChanged(int numSel); void restoreScrollPos(); private: void freeFolder(); QString formatStatusText(); static void onFolderStartLoading(FmFolder* _folder, TabPage* pThis); static void onFolderFinishLoading(FmFolder* _folder, TabPage* pThis); static FmJobErrorAction onFolderError(FmFolder* _folder, GError* err, FmJobErrorSeverity severity, TabPage* pThis); static void onFolderFsInfo(FmFolder* _folder, TabPage* pThis); static void onFolderRemoved(FmFolder* _folder, TabPage* pThis); static void onFolderUnmount(FmFolder* _folder, TabPage* pThis); static void onFolderContentChanged(FmFolder* _folder, TabPage* pThis); private: View* folderView_; Fm::CachedFolderModel* folderModel_; Fm::ProxyFolderModel* proxyModel_; ProxyFilter* proxyFilter_; QVBoxLayout* verticalLayout; FmFolder* folder_; QString title_; QString statusText_[StatusTextNum]; Fm::BrowseHistory history_; // browsing history Fm::Path lastFolderPath_; // last browsed folder bool overrideCursor_; }; } #endif // FM_TABPAGE_H pcmanfm-qt-0.10.1/pcmanfm/translations/000077500000000000000000000000001263124606600200045ustar00rootroot00000000000000pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_de.desktop000066400000000000000000000002231263124606600265100ustar00rootroot00000000000000#Translations Name[de]=Schreibtisch GenericName[de]=Schreibtischeinstellungen Comment[de]=Einstellungen wie Hintergrundbild oder verwendete Menüs pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_el.desktop000066400000000000000000000004461263124606600265270ustar00rootroot00000000000000Name[el]=Επιφάνεια εργασίας GenericName[el]=Ρυθμίσεις της επιφάνειας εργασίας Comment[el]=Αλλαγή της ταπετσαρίας και της συμπεριφοράς του διαχειριστή της επιφάνειας εργασίας pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_hu.desktop000066400000000000000000000001731263124606600265400ustar00rootroot00000000000000#Translations Name[hu]=Asztal GenericName[hu]=Asztalbeállítás Comment[hu]=Asztal kinézet és viselkedés beállítása pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_it.desktop000066400000000000000000000002051263124606600265340ustar00rootroot00000000000000#Translations Name[it]=Scrivania GenericName[it]=Preferenze della scrivania Comment[it]=Configura percorso e aspetto della scrivania pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_pl.desktop000066400000000000000000000001631263124606600265360ustar00rootroot00000000000000#Translations Name[pl]=Pulpit GenericName[pl]=Ustawienia pulpitu Comment[pl]=Zmiana tapety oraz zachowania pulpitu pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_pt.desktop000066400000000000000000000002461263124606600265500ustar00rootroot00000000000000#Translations Name[pt]=Área de trabalho GenericName[pt]=Definições da área de trabalho Comment[pt]=Mudar o papel de parede e o comportamento da área de trabalho pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_ru.desktop000066400000000000000000000003301263124606600265450ustar00rootroot00000000000000#Translations Name[ru]=Рабочий стол GenericName[ru]=Настройки рабочего стола Comment[ru]=Изменить обои и поведение менеджера рабочего столаpcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt-desktop-pref_ru_RU.desktop000066400000000000000000000003411263124606600271550ustar00rootroot00000000000000#Translations Name[ru_RU]=Рабочий стол GenericName[ru_RU]=Настройки рабочего стола Comment[ru_RU]=Изменить обои и поведение менеджера рабочего столаpcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt.ts000066400000000000000000001424401263124606600224240ustar00rootroot00000000000000 AboutDialog About <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. License AutoRunDialog Removable medium is inserted <b>Removable medium is inserted</b> Type of medium: Detecting... Please select the action you want to perform: DesktopFolder Form Desktop Desktop folder: Image file Folder path &Browse DesktopPreferencesDialog Desktop Preferences Background Wallpaper mode: Wallpaper image file: Select background color: Image file Image file path &Browse Label Text Select text color: Select shadow color: Select font: General Window Manager Show menus provided by window managers when desktop is clicked Advanced MainWindow File Manager Go &Up Go Up Alt+Up &Home Alt+Home &Reload F5 Go Quit &About &New Window New Window Ctrl+N Show &Hidden Ctrl+H &Computer &Trash &Network &Desktop &Add to Bookmarks &Applications Reload &Icon View &Compact View &Detailed List &Thumbnail View Cu&t Ctrl+X &Copy Ctrl+C &Paste Ctrl+V Select &All Ctrl+A Pr&eferences &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Case Sensitive By File &Size &Close Window &Folder &Blank File New &Tab New Tab Ctrl+T Go &Back Go Back Alt+Left Go &Forward Go Forward Alt+Right &Invert Selection &Delete Del &Rename F2 C&lose Tab Ctrl+W File &Properties Alt+Return &Folder Properties Edit Bookmarks Open &Terminal F4 Open as &Root &Edit Bookmarks Ctrl+Shift+N Ctrl+Alt+N &Find Files F3 Filter Filter by string... &File C&reate New &Help &View &Sorting &Edit &Bookmarks &Go &Tool Main Toolbar PCManFM::Application Name of configuration profile PROFILE Run PCManFM as a daemon Quit PCManFM Launch desktop manager Turn off desktop manager if it's running Open desktop preference dialog on the page with the specified name NAME Open new window Open Find Files utility Set desktop wallpaper from image FILE FILE Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) MODE Open Preferences dialog on the page with the specified name Files or directories to open [FILE1, FILE2,...] Error Terminal emulator is not set. PCManFM::AutoRunDialog Open in file manager Removable Disk PCManFM::DesktopPreferencesDialog Fill with background color only Stretch to fill the entire screen Stretch to fit the screen Center on the screen Tile the image to fill the entire screen Image Files PCManFM::DesktopWindow Stic&k to Current Position Desktop Preferences PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 &Move to Trash &Delete Error Switch user command is not set. PCManFM::PreferencesDialog Icon View Compact Icon View Thumbnail View Detailed List View PCManFM::TabPage Error Free space: %1 (Total: %2) %n item(s) (%n hidden) %1 item(s) selected PCManFM::View Open in New T&ab Open in New Win&dow Open in Termina&l PreferencesDialog Preferences User Interface Behavior Thumbnail Volume Advanced Icons Size of big icons: Size of small icons: Size of thumbnails: Size of side pane icons: Icon theme: Window Always show the tab bar Show 'Close' buttons on tabs Remember the size of the last closed window Default width of new windows: Default height of new windows: Browsing Open files with single click Delay of auto-selection in single click mode (0 to disable) Default view mode: sec File Operations Confirm before deleting files Move deleted files to "trash bin" instead of erasing from disk. Show thumbnails of files Only show thumbnails for local files Display Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home Desktop Trash can Computer Applications Devices Network Do not generate thumbnails for image files exceeding this size: KB Auto Mount Mount mountable volumes automatically on program startup Mount removable media automatically when they are inserted Show available options for removable media when they are inserted When removable medium unmounted: Close &tab containing removable medium Chan&ge folder in the tab to home folder Programs Terminal emulator: Switch &user command: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Archiver in&tegration: Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Use SI decimal prefixes instead of IEC binary prefixes pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_ar.ts000066400000000000000000001432761263124606600231160ustar00rootroot00000000000000 AboutDialog About <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors License AutoRunDialog Removable medium is inserted <b>Removable medium is inserted</b> Type of medium: Detecting... Please select the action you want to perform: DesktopFolder Form Desktop Desktop folder: Image file Folder path &Browse DesktopPreferencesDialog Desktop Preferences Background Wallpaper mode: Wallpaper image file: Select background color: Image file Image file path &Browse Label Text Select text color: Select shadow color: Select font: General Window Manager Show menus provided by window managers when desktop is clicked Advanced MainWindow File Manager Go Up Alt+Up Alt+Home Reload F5 &Home &Reload Go Quit &About New Window Ctrl+N Show &Hidden Ctrl+H &Computer &Trash &Network &Desktop &Add to Bookmarks &Applications Ctrl+X &Copy Ctrl+C &Paste Ctrl+V Select &All Pr&eferences &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection &Delete &Rename &Case Sensitive By File &Size &Close Window Ctrl+A Go &Up &New Window &Icon View &Compact View &Detailed List &Thumbnail View Cu&t New &Tab New Tab Ctrl+T Go &Back Go Back Alt+Left Go &Forward Go Forward Alt+Right Del F2 C&lose Tab File &Properties &Folder Properties Ctrl+Shift+N Ctrl+Alt+N Filter C&reate New &Sorting Main Toolbar Ctrl+W Alt+Return Edit Bookmarks Open &Terminal F4 Open as &Root &Edit Bookmarks &Folder &Blank File &Find Files F3 Filter by string... &File &Help &View &Edit &Bookmarks &Go &Tool PCManFM::Application Name of configuration profile PROFILE Run PCManFM as a daemon Quit PCManFM Launch desktop manager Turn off desktop manager if it's running Open desktop preference dialog on the page with the specified name NAME Open new window Open Find Files utility Set desktop wallpaper from image FILE FILE Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) MODE Open Preferences dialog on the page with the specified name Files or directories to open [FILE1, FILE2,...] Error Terminal emulator is not set. PCManFM::AutoRunDialog Open in file manager Removable Disk PCManFM::DesktopPreferencesDialog Fill with background color only Stretch to fill the entire screen Stretch to fit the screen Center on the screen Tile the image to fill the entire screen Image Files PCManFM::DesktopWindow Stic&k to Current Position Desktop Preferences PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 &Move to Trash &Delete Error Switch user command is not set. PCManFM::PreferencesDialog Icon View Compact Icon View Thumbnail View Detailed List View PCManFM::TabPage Error Free space: %1 (Total: %2) %n item(s) (%n hidden) %1 item(s) selected PCManFM::View Open in New T&ab Open in New Win&dow Open in Termina&l PreferencesDialog Preferences User Interface Behavior Thumbnail Volume Advanced Icons Size of big icons: Size of small icons: Size of thumbnails: Size of side pane icons: Icon theme: Window Default width of new windows: Default height of new windows: Always show the tab bar Show 'Close' buttons on tabs Remember the size of the last closed window Browsing Open files with single click Delay of auto-selection in single click mode (0 to disable) Default view mode: sec File Operations Confirm before deleting files Move deleted files to "trash bin" instead of erasing from disk. Show thumbnails of files Only show thumbnails for local files Display Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home Desktop Trash can Computer Applications Devices Network Do not generate thumbnails for image files exceeding this size: KB Auto Mount Mount mountable volumes automatically on program startup Mount removable media automatically when they are inserted Show available options for removable media when they are inserted When removable medium unmounted: Close &tab containing removable medium Chan&ge folder in the tab to home folder Switch &user command: Archiver in&tegration: Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Programs Terminal emulator: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Use SI decimal prefixes instead of IEC binary prefixes pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_cs_CZ.ts000066400000000000000000001476331263124606600235160ustar00rootroot00000000000000 AboutDialog About O <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Authors Autoři License Licence AutoRunDialog Removable medium is inserted <b>Removable medium is inserted</b> Type of medium: Detecting... Please select the action you want to perform: DesktopFolder Form Desktop Desktop folder: Image file Folder path &Browse DesktopPreferencesDialog Desktop Preferences Background Wallpaper mode: Wallpaper image file: Select background color: Image file Image file path &Browse Label Text Select text color: Select shadow color: Select font: General Window Manager Show menus provided by window managers when desktop is clicked Advanced Pokročilé MainWindow File Manager Správce souborů Go Up Nahoru Alt+Up Alt+Nahoru Home Domů Alt+Home Alt+Home Reload Obnovit F5 F5 &Home &Reload &Obnovit Go Jdi Quit ukončit &About &O programu New Window Nové okno Ctrl+N Ctrl+N Show &Hidden Zobrazit &skryté Ctrl+H Ctrl+H &Computer Počítač &Trash &Koš &Network Síť &Desktop Plocha &Add to Bookmarks Přidat k záložkám &Applications Programy Ctrl+X Ctrl+X &Copy Kopírovat Ctrl+C Ctrl+C &Paste Vložit Ctrl+V Ctrl+V Select &All Vybrat všechno Pr&eferences &Nastavení &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection Invertovat výběr &Delete Smazat &Rename Přejmenovat &Case Sensitive By File &Size &Close Window Ctrl+A Ctrl+A Go &Up Nahoru &New Window Nové &okno &Icon View Pohled s ikonami &Compact View Kompaktní pohled &Detailed List Seznam s podrobnostmi &Thumbnail View Pohled s náhledy Cu&t Vyjmout Ascending Vzestupně Descending Sestupně By File Name Podle jména By Modification Time Podle času By File Type Podle typu By Owner Podle vlastníka Folder First Složky jako první New &Tab Nový &panel New Tab Nový panel Ctrl+T Ctrl+T Go &Back Zpět Go Back Zpět Alt+Left Alt+Vlevo Go &Forward &Vpřed Go Forward Vpřed Alt+Right Alt+Vpravo Del F2 F2 C&lose Tab Zavřít panel File &Properties Vlastnosti souboru &Folder Properties Vlastnosti složky Ctrl+Shift+N Ctrl+Alt+N Filter C&reate New &Sorting Řadit Main Toolbar Hlavní panel Ctrl+W Ctrl+W Alt+Return Alt+Return Case Sensitive Rozlišovat velikost písmen By File Size Podle velikosti Close Window Zavřít okno Edit Bookmarks Upravit záložky Open &Terminal Otevřít &terminál F4 F4 Open as &Root Otevřít jako &Root &Edit Bookmarks Upravit záložky &Folder &Blank File &Find Files F3 Filter by string... &File &Soubor &Help &Nápověda &View &Zobrazení &Edit Úpr&avy &Bookmarks Zál&ožky &Go &Jdi &Tool Nás&troje PCManFM::Application Name of configuration profile PROFILE Run PCManFM as a daemon Quit PCManFM Launch desktop manager Turn off desktop manager if it's running Open desktop preference dialog on the page with the specified name NAME Open new window Open Find Files utility Set desktop wallpaper from image FILE FILE Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) MODE Open Preferences dialog on the page with the specified name Files or directories to open [FILE1, FILE2,...] Error Terminal emulator is not set. PCManFM::AutoRunDialog Open in file manager Removable Disk PCManFM::DesktopPreferencesDialog Fill with background color only Stretch to fill the entire screen Stretch to fit the screen Center on the screen Tile the image to fill the entire screen Image Files PCManFM::DesktopWindow Stic&k to Current Position Desktop Preferences PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 &Move to Trash &Delete Smazat Error Switch user command is not set. PCManFM::PreferencesDialog Icon View Compact Icon View Thumbnail View Detailed List View PCManFM::TabPage Error Free space: %1 (Total: %2) %n item(s) (%n hidden) %1 item(s) selected PCManFM::View Open in New T&ab Open in New Win&dow Open in Termina&l PreferencesDialog Preferences User Interface Uživatelské rozhraní Behavior Chování Thumbnail Náhled Volume Advanced Pokročilé Icons Size of big icons: Velikost velkých ikon: Size of small icons: Velikost malých ikon: Size of thumbnails: Velikost náhledů: Size of side pane icons: Velikost ikon v postranním panelu: Icon theme: Window Default width of new windows: Default height of new windows: Always show the tab bar Show 'Close' buttons on tabs Remember the size of the last closed window Browsing Open files with single click Delay of auto-selection in single click mode (0 to disable) Default view mode: sec File Operations Confirm before deleting files Move deleted files to "trash bin" instead of erasing from disk. Show thumbnails of files Zobrazovat náhledy souborů Only show thumbnails for local files Zobrazovat náhlet jen u lokálních souborů Display Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home Domů Desktop Trash can Computer Applications Devices Network Do not generate thumbnails for image files exceeding this size: Negenerovat náhledy obrázků přesahujících tuto velikost: KB Auto Mount Mount mountable volumes automatically on program startup Mount removable media automatically when they are inserted Show available options for removable media when they are inserted When removable medium unmounted: Close &tab containing removable medium Chan&ge folder in the tab to home folder Switch &user command: Archiver in&tegration: Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Programs Terminal emulator: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Use SI decimal prefixes instead of IEC binary prefixes pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_de.desktop000066400000000000000000000001621263124606600241110ustar00rootroot00000000000000#Translations Name[de]=PCManFM-Qt GenericName[de]=Dateimanager Comment[de]=Dateimanager der Desktop-Umgebung LXQt pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_de.ts000066400000000000000000001644741263124606600231070ustar00rootroot00000000000000 AboutDialog About Über <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Ressourcen schonender Dateimanager PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version. Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License. Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben Sie an die Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA. Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programmierung: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Authors Autoren License Lizenz AutoRunDialog Removable medium is inserted Ein entfernbares Speichermedium wurde eingelegt <b>Removable medium is inserted</b> <b>Ein entfernbares Speichermedium wurde eingelegt</b> Type of medium: Art des Mediums: Detecting... Erkennungsvorgang... Please select the action you want to perform: Bitte wählen Sie die Handlung, welche Sie ausführen möchten: DesktopFolder Form Desktop Schreibtisch Desktop folder: Schreibtischordner: Image file Bilddatei Folder path Pfad des Ordners &Browse &Suchen DesktopPreferencesDialog Desktop Preferences Schreibtischeinstellungen Background Hintergrund Wallpaper mode: Hintergrundbildmodus: Wallpaper image file: Hintergrundbild: Select background color: Hintergrundfarbe: Image file Bilddatei Image file path Pfad zur Bilddatei &Browse &Suchen Label Text Text Select text color: Farbe der Beschriftung: Select shadow color: Farbe des Schattens: Select font: Schrift für Beschriftung: General Allgemeines Window Manager Fenstermanager Show menus provided by window managers when desktop is clicked Beim Klicken auf den Schreibtisch die Menüs des Fenstermanagers anzeigen Desktop not an ideal translation, see discussion in https://github.com/lxde/lxqt/issues/699 Schreibtisch Desktop folder: Schreibtischordner: Folder path Pfad des Ordners Advanced Erweitert FindFilesDialog Find Files Dateisuche Name/Location Dateiname, Lokalisation File name patterns Dateiname Pattern: Suchmuster: Case insensitive Groß- und Kleinschreibung ignorieren Use regular expression Muster ist regulärer Ausdruck Places to search Lokalisation Add Hinzufügen Remove Entfernen Search in sub directories Unterverzeichnisse einbeziehen Search hidden files versteckte Dateien einbeziehen File Type Dateityp Only search for files of following types: Suche auf die folgenden Typen beschränken: Text files Textdateien Image files Bilddateien Audio files Audiodateien Video files Videodateien Documents Dokumente Content Inhalt File contains Datei enthält Properties Dateieigenschaften File Size Dateigröße Bigger than: größer als: Smaller than: kleiner als: Last Modified Time Zeitpunkt der letzten Modifikation Earlier than: vor: Later than: nach: MainWindow File Manager Dateimanager Go Up Hoch Alt+Up Alt+Bild hoch Home Nutzerverzeichnis Alt+Home Alt+Pos1 Reload Neu laden F5 F5 &Home &Reload Neu &laden Go Los Quit Verlassen &About &Über New Window Neues Fenster Ctrl+N Strg+N Show &Hidden &Versteckte anzeigen Ctrl+H Strg+H &Computer &Geräte &Trash &Papierkorb &Network &Netzwerk &Desktop Schreib&tisch &Add to Bookmarks Zu Lesezeichen &hinzufügen &Applications &Anwendungen Ctrl+X Strg+X &Copy &Kopieren Ctrl+C Strg+C &Paste E&infügen Ctrl+V Strg+V Select &All &Alles markieren Pr&eferences &Einstellungen &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection Auswahl &umkehren &Delete &Löschen &Rename Um&benennen &Case Sensitive By File &Size &Close Window Ctrl+A Strg+A Go &Up &Übergeordneter Ordner &New Window Neues &Fenster &Icon View &Symbolansicht &Compact View &Listenansicht &Detailed List &Detailansicht &Thumbnail View &Miniaturansicht Cu&t &Ausschneiden Ascending Aufsteigend Descending Absteigend By File Name Nach Name By Modification Time Nach Änderungsdatum By File Type Nach Dateityp By Owner Nach Besitzer Folder First Ordner zuerst New &Tab Neuer &Tab New Tab Neuer Tab Ctrl+T Strg+T Go &Back &Zurück Go Back Zurück Alt+Left Alt+Pfeil links Go &Forward &Vorwärts Go Forward Vorwärts Alt+Right Alt+Pfeil rechts Del Entf F2 F2 C&lose Tab Tab &schließen File &Properties &Dateieigenschaften &Folder Properties &Eigenschaften des aktuellen Ordners Folder Ordner Ctrl+Shift+N Strg+Umschalt+N Blank File Leere Datei Ctrl+Alt+N Strg+Alt+N C&reate New Neu e&rstellen &Sorting S&ortierung Main Toolbar Hauptwerkzeugleiste Ctrl+W Strg+W Alt+Return Alt+Return Case Sensitive Groß-/Kleinschreibung beachten By File Size Nach Dateigröße Close Window Fenster schließen Edit Bookmarks Lesezeichen bearbeiten Open &Terminal &Terminal öffnen F4 F4 Open as &Root Als &Root öffnen &Edit Bookmarks &Lesezeichen bearbeiten &Folder &Blank File &Find Files F3 F3 Filter Filter by string... &File &Datei &Help &Hilfe &View &Ansicht &Edit &Bearbeiten &Bookmarks &Lesezeichen &Go &Gehe zu &Tool &Werkzeuge PCManFM::Application Name of configuration profile Name des Konfigurationsprofils PROFILE PROFIL Run PCManFM as a daemon PCManFM als Daemon starten Quit PCManFM PCManFM beenden Launch desktop manager Verwaltung der Arbeitsfläche starten Turn off desktop manager if it's running Verwaltung der Arbeitsfläche beenden, falls aktiv Open desktop preference dialog on the page with the specified name Einstellungsdialog der Arbeitsfläche mit dem angegebenen Tab öffnen NAME NAME Open new window Neues Fenster öffnen Open Find Files utility Dateisuche öffnen Set desktop wallpaper from image FILE Angegebene DATEI als Hintergrundbild einstellen FILE DATEI Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Hintergrundbildmodus einstellen. MODUS=(color|stretch|fit|center|tile) MODE MODUS Open Preferences dialog on the page with the specified name Einstellungsdialog auf dem angegebenen Tab öffnen Files or directories to open Zu öfnende Dateien oder Ordner [FILE1, FILE2,...] [DATEI1, DATEI2, ...] Error Fehler Terminal emulator is not set. Es ist kein Terminalemulator eingestellt. PCManFM::AutoRunDialog Open in file manager Öffnen in Dateimanager Removable Disk Entfernbares Medium PCManFM::DesktopPreferencesDialog Fill with background color only Nur mit Hintergrundfarbe füllen Stretch to fill the entire screen Auf Bildschirmgröße bringen Stretch to fit the screen In Bildschirm einpassen Center on the screen Zentriert Tile the image to fill the entire screen Nebeneinander Image Files Bilddateien PCManFM::DesktopWindow Stic&k to Current Position Symbole &fixieren Desktop Preferences Schreibtischeinstellungen PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 Version: %1 &Move to Trash In den &Papierkorb verschieben &Delete &Löschen Error Fehler Switch user command is not set. Befehl, um den Benutzer zu wechseln, ist nicht eingestellt. PCManFM::PreferencesDialog Icon View Symbolansicht Compact Icon View Kleine Symbolansicht Thumbnail View Miniaturansicht Detailed List View Detaillierte Listenansicht PCManFM::TabPage Error Fehler Free space: %1 (Total: %2) Freier Speicherplatz: %1 (Gesamt: %2) %n item(s) %n Objekt %n Objekte (%n hidden) (%n versteckt) (%n versteckt) %1 item(s) selected %1 Objekte ausgewählt PCManFM::View Open in New T&ab Öffnen in neuem &Tab Open in New Win&dow Öffnen in neuem &Fenster Open in Termina&l Öffnen in &Terminal PreferencesDialog Preferences Einstellungen User Interface Benutzeroberfläche Behavior Verhalten Thumbnail Vorschaubild Volume Datenträger Advanced Erweitert Icons Symbole Size of big icons: Größe für große Symbole: Size of small icons: Größe für kleine Symbole: Size of thumbnails: Größe von Vorschaubildern: Size of side pane icons: Größe der Symbole in der Seitenleiste: Icon theme: Symbolthema: Window Fenster Default width of new windows: Breite für neue Fenster: Default height of new windows: Höhe für neue Fenster: Always show the tab bar Tableiste immer anzeigen Show 'Close' buttons on tabs 'Schließen'-Knopf an Tabs zeigen Remember the size of the last closed window Größe des zuletzt geschlossenen Fensters merken Browsing Durchstöbern Open files with single click Einfacher Klick zum Öffnen von Dateien Delay of auto-selection in single click mode (0 to disable) Wartezeit für die automatische Auswahl im Einzelklickmodus (0 zum Abschalten) Default view mode: Standardansicht: sec sec File Operations Handhabung von Dateien Confirm before deleting files Löschen von Dateien bestätigen Move deleted files to "trash bin" instead of erasing from disk. Gelöschte Dateien in den "Papierkorb" verschieben anstatt sie von der Festplatte zu löschen. Show thumbnails of files Vorschaubilder von Dateien anzeigen Only show thumbnails for local files Vorschaubilder nur für lokale Dateien anzeigen Display Anzeige Bookmarks: Lesezeichen: Open in current tab Öffnen in aktuellem Tab Open in new tab Öffnen in neuem Tab Open in new window Öffnen in neuem Fenster Erase files on removable media instead of "trash can" creation Dateien auf Wechseldatenträgern löschen anstatt sie in den Papierkorb zu verschieben Confirm before moving files into "trash can" Bestätigung vor Verschieben in den Papierkorb Don't ask options on launch executable file Beim Starten ausführbarer Dateien keine Optionen hierzu erfragen User interface Benutzeroberfläche Treat backup files as hidden Sicherungsdateien wie versteckte handhaben Always show full file names Dateinamen immer vollständig anzeigen Show icons of hidden files shadowed Icons versteckter Dateien schattiert anzeigen Show in places Unter "Orte" anzeigen Home Nutzerverzeichnis Desktop Schreibtisch Trash can Papierkorb Computer Rechner Applications Anwendungen Devices Geräte Network Netzwerk Do not generate thumbnails for image files exceeding this size: Keine Vorschaubilder erzeugen für Dateien größer als: KB KB Auto Mount Automatisches Einbinden Mount mountable volumes automatically on program startup Datenträger bei Programmstart automatisch einhängen Mount removable media automatically when they are inserted Wechseldatenträger automatisch beim Einlegen einbinden Show available options for removable media when they are inserted Verfügbare Optionen für Wechseldatenträger beim Einlegen anzeigen When removable medium unmounted: Wenn Wechseldatenträger entfernt werden: Close &tab containing removable medium Den Rei&ter des Wechseldatenträgers schließen Chan&ge folder in the tab to home folder Im Tab des Wechsledatenträgers das Nutze&rverzeichnis anzeigen Switch &user command: Befehl zum N&utzerwechsel: Archiver in&tegration: Archivverwal&tung: Templates Vorlagen Show only user defined templates in menu Ausschließlich benutzerdefinierte im Menü anzeigen Show only one template for each MIME type Nur eine Vorlage pro MIME-Typ anzeigen Run default application after creation from template Aus Vorlagen erstellte Dokumente in Standardanwendung öffnen Close tab containing removable medium Schließe Tab mit Wechseldatenträger Change folder in the tab to home folder Ändere Ordner im Tab zum Persönlichen Ordner Programs Programme Terminal emulator: Terminalemulator: Switch user command: Befehl für Benutzerwechsel: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Beispiele:"xterm -e %s" für Terminal oder "gksu %s" für Benutzerwechsel. %s = das Kommando, welches in einem Terminal oder als Root ausgeführt werden soll. Archiver integration: Archivmanagerintegration: Use SI decimal prefixes instead of IEC binary prefixes SI-Dezimalpräfixe anstatt IEC-Binärpräfixe verwenden pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_el.desktop000066400000000000000000000003561263124606600241260ustar00rootroot00000000000000Name[el]=Διαχειριστής αρχείων PCManFM GenericName[el]=Διαχειριστής αρχείων Comment[el]=Περιήγηση του συστήματος αρχείων και διαχείριση των αρχείων pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_el.ts000066400000000000000000002000631263124606600231000ustar00rootroot00000000000000 AboutDialog About Σχετικά <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Ελαφρύς διαχειριστής αρχείων <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Προγραμματισμός: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors Συγγραφείς PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Διαχειριστής αρχείων PCMan Πνευματικά δικαιώματα (C) 2009 - 2014 洪任諭 (Hong Jen Yee) Αυτό το πρόγραμμα είναι ένα ελεύθερο λογισμικό· επιτρέπεται η αναδιανομή ή/και η τροποποίησή του υπό τους όρους της άδειας GNU Γενική Άδεια Χρήσης όπως έχουν δημοσιευθεί από το «Free Software Foundation», είτε την έκδοση 2 αυτής της άδειας ή (σύμφωνα με την επιλογή σας) οποιαδήποτε μεταγενέστερη έκδοση. Αυτό το πρόγραμμα διανέμεται με την ελπίδα πως θα είναι χρήσιμο, αλλά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ, χωρίς ακόμη και την υπονοούμενη εγγύηση ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ. Δείτε την GNU Γενική Άδεια Χρήσης για περισσότερες λεπτομέρειες. Θα πρέπει να έχετε παραλάβει ένα αντίγραφο της GNU Γενικής Άδειας Χρήσης μαζί με αυτό το πρόγραμμα. Αν όχι, γράψτε στο Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. License Άδεια χρήσης AutoRunDialog Removable medium is inserted Εισήχθη ένα αφαιρούμενο μέσο <b>Removable medium is inserted</b> <b>Εισήχθη ένα αφαιρούμενο μέσο</b> Type of medium: Τύπος του μέσου: Detecting... Εντοπισμός... Please select the action you want to perform: Παρακαλώ επιλέξτε την ενέργεια που επιθυμείτε να πραγματοποιήσετε: DesktopFolder Form Desktop Επιφάνεια εργασίας Desktop folder: Φάκελος επιφάνειας εργασίας: Image file Αρχείο εικόνας Folder path Διαδρομή του φακέλου &Browse &Περιήγηση DesktopPreferencesDialog Desktop Preferences Προτιμήσεις της επιφάνειας εργασίας Background Παρασκήνιο Wallpaper mode: Λειτουργία ταπετσαρίας: Wallpaper image file: Αρχείο εικόνας ταπετσαρίας: Select background color: Επιλέξτε το χρώμα του παρασκηνίου: Image file Αρχείο εικόνας Image file path Διαδρομή αρχείου εικόνας &Browse &Περιήγηση Label Text Ετικέτα κειμένου Select text color: Επιλέξτε το χρώμα του κειμένου: Select shadow color: Επιλέξτε το χρώμα της σκιάς: Select font: Επιλέξτε τη γραμματοσειρά: General Γενικά Window Manager Διαχειριστής παραθύρων Show menus provided by window managers when desktop is clicked Εμφάνιση των μενού των διαχειριστών παραθύρων με κλικ στην επιφάνεια εργασίας Desktop Επιφάνεια εργασίας Desktop folder: Φάκελος επιφάνειας εργασίας: Folder path Διαδρομή του φακέλου Advanced Προηγμένο FindFilesDialog Find Files Αναζήτηση αρχείων Name/Location Όνομα/Τοποθεσία File name patterns Σχηματομορφές ονομάτων αρχείων Pattern: Σχηματομορφή: Case insensitive Δίχως διάκριση πεζών/κεφαλαίων Use regular expression Χρήση κανονικής έκφρασης Places to search Τοποθεσίες προς αναζήτηση Add Προσθήκη Remove Αφαίρεση Search in sub directories Αναζήτηση σε υποφακέλους Search hidden files Αναζήτηση κρυφών αρχείων File Type Τύπος αρχείου Only search for files of following types: Αναζήτηση αρχείων μόνο για τους ακόλουθους τύπους: Text files Αρχεία κειμένου Image files Αρχεία εικόνων Audio files Αρχεία ήχου Video files Αρχεία βίντεο Documents Έγγραφα Content Περιεχόμενο File contains Αρχεία που περιέχουν Properties Ιδιότητες File Size Μέγεθος αρχείων Bigger than: Μεγαλύτερο από: Smaller than: Μικρότερο από: Last Modified Time Χρόνος της τελευταίας τροποποίησης Earlier than: Προγενέστερα από: Later than: Αργότερα από: MainWindow File Manager Διαχειριστής αρχείων Go &Up Μετάβαση &πάνω Go Up Μετάβαση πάνω Alt+Up Alt+Πάνω Home Προσωπικός φάκελος &Home Alt+Home Alt+Home &Reload &Επαναφόρτωση F5 F5 Go Μετάβαση Quit Έξοδος &About &Σχετικά &New Window &Νέο παράθυρο New Window Νέο παράθυρο Ctrl+N Ctrl+N Show &Hidden Εμφάνιση των &κρυφών Ctrl+H Ctrl+H &Computer &Υπολογιστής &Trash &Απορρίμματα &Network &Δίκτυο &Desktop &Επιφάνεια εργασίας &Add to Bookmarks &Προσθήκη στους σελιδοδείκτες &Applications Ε&φαρμογές Reload Επαναφόρτωση &Icon View &Εικονιδία &Compact View &Συμπαγής &Detailed List &Λεπτομερής λίστα &Thumbnail View &Εικόνες επισκόπησης Cu&t Α&ποκοπή Ctrl+X Ctrl+X &Copy &Αντιγραφή Ctrl+C Ctrl+C &Paste Επι&κόλληση Ctrl+V Ctrl+V Select &All Επιλογή ό&λων Ctrl+A Ctrl+A Pr&eferences &Προτιμήσεις &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Case Sensitive By File &Size &Close Window &Folder &Blank File Ascending Αύξουσα Descending Φθίνουσα By File Name Ανά όνομα αρχείου By Modification Time Ανά χρόνο τροποποίησης By File Type Ανά τύπο αρχείου By Owner Ανά ιδιοκτήτη Folder First Πρώτα οι φάκελοι New &Tab Νέα &καρτέλα New Tab Νέα καρτέλα Ctrl+T Ctrl+T Go &Back Μετάβαση &πίσω Go Back Μετάβαση πίσω Alt+Left Alt+Αριστερά Go &Forward Μετάβαση &εμπρός Go Forward Μετάβαση εμπρός Alt+Right Alt+Δεξιά &Invert Selection Αντιστρο&φή επιλογής &Delete &Διαγραφή Del Del &Rename &Μετονομασία F2 F2 C&lose Tab Κλείσιμο καρ&τέλας Ctrl+W Ctrl+W File &Properties Αρχεία και ι&διότητες Alt+Return Alt+Return &Folder Properties Ιδιότητες &φακέλου Case Sensitive Διάκριση πεζών/κεφαλαίων By File Size Ανά μέγεθος αρχείου Close Window Κλείσιμο παραθύρου Edit Bookmarks Επεξεργασία σελιδοδεικτών Open &Terminal Άνοιγμα του &τερματικού F4 F4 Open as &Root Άνοιγμα ως δια&χειριστής &Edit Bookmarks Επε&ξεργασία σελιδοδεικτών Folder Φάκελος Ctrl+Shift+N Ctrl+Shift+N Blank File Κενό αρχείο Ctrl+Alt+N Ctrl+Alt+N &Find Files F3 F3 Filter Filter by string... &File &Αρχείο C&reate New &Δημιουργία νέου &Help &Βοήθεια &View &Προβολή &Sorting &Ταξινόμηση &Edit &Επεξεργασία &Bookmarks &Σελιδοδείκτες &Go &Μετάβαση &Tool &Εργαλεία Main Toolbar Κύρια γραμμή εργαλείων PCManFM::Application Name of configuration profile Όνομα διαμόρφωσης του προφίλ PROFILE ΠΡΟΦΙΛ Run PCManFM as a daemon Εκτέλεση του PCManFM ως δαίμονα Quit PCManFM Έξοδος του PCManFM Launch desktop manager Εκτέλεση διαχειριστή της επιφάνειας εργασίας Turn off desktop manager if it's running Τερματισμός του διαχειριστή της επιφάνειας εργασίας αν εκτελείται Open desktop preference dialog on the page with the specified name Άνοιγμα του διαλόγου προτιμήσεων της επιφάνειας εργασίας στη σελίδα με το καθορισμένο όνομα NAME ΟΝΟΜΑ Open new window Άνοιγμα νέου παραθύρου Open Find Files utility Άνοιγμα του εργαλείου αναζήτησης αρχείων Set desktop wallpaper from image FILE Ορισμός της ταπετσαρίας της επιφάνειας εργασίας από ΑΡΧΕΙΟ εικόνας FILE ΑΡΧΕΙΟ Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Ορισμός της λειτουργίας της επιφάνειας ΛΕΙΤΟΥΡΓΙΑ=(χρώμα|τέντωμα|προσαρμογή|κέντρο|παράθεση) MODE ΛΕΙΤΟΥΡΓΙΑ Open Preferences dialog on the page with the specified name Άνοιγμα του διαλόγου προτιμήσεων στη σελίδα με το καθορισμένο όνομα Files or directories to open Αρχεία ή κατάλογοι προς άνοιγμα [FILE1, FILE2,...] [ΑΡΧΕΙΟ1, ΑΡΧΕΙΟ2,...] Error Σφάλμα Terminal emulator is not set. Δεν έχει οριστεί ο προσομοιωτής τερματικού. PCManFM::AutoRunDialog Open in file manager Άνοιγμα στο διαχειριστή αρχείων Removable Disk Αφαιρούμενος δίσκος PCManFM::DesktopPreferencesDialog Fill with background color only Γέμισμα μόνο με το χρώμα του παρασκηνίου Stretch to fill the entire screen Τέντωμα γι πλήρωση ολόκληρης της οθόνης Stretch to fit the screen Τέντωμα για πλήρωση της οθόνης Center on the screen Στο κέντρο της οθόνης Tile the image to fill the entire screen Παράθεση της εικόνας για πλήρωση ολόκληρης της οθόνης Image Files Αρχεία εικόνων PCManFM::DesktopWindow Stic&k to Current Position &Παραμονή στην τρέχουσα θέση Desktop Preferences Ιδιότητες της επιφάνειας εργασίας PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 Έκδοση: %1 &Move to Trash &Μετακίνηση στα απορρίμματα &Delete &Διαγραφή Error Σφάλμα Switch user command is not set. Η εντολή εναλλαγής του χρήστη δεν έχει οριστεί. PCManFM::PreferencesDialog Icon View Προβολή εικονιδίων Compact Icon View Συμπαγής προβολή εικονιδίων Thumbnail View Προβολή εικόνων επισκόπησης Detailed List View Αναλυτική προβολή λίστας PCManFM::TabPage Error Σφάλμα Free space: %1 (Total: %2) Ελεύθερος χώρος: %1 (Σύνολο: %2) %n item(s) %n αντικείμενο(α) %n αντικείμενο(α) (%n hidden) (%n κρυφό(ά)) (%n κρυφό(ά)) %1 item(s) selected Επιλέχτηκε %1 αντικείμενο(α) PCManFM::View Open in New T&ab Άνοιγμα σε νέα &καρτέλα Open in New Win&dow Άνοιγμα σε νέο &παράθυρο Open in Termina&l Άνοιγμα στο &τερματικό PreferencesDialog Preferences Προτιμήσεις User Interface Περιβάλλον χρήστη Behavior Συμπεριφορά Thumbnail Εικόνες επισκόπησης Volume Χώροι αποθήκευσης Advanced Προηγμένα Icons Εικονίδια Size of big icons: Το μέγεθος των μεγάλων εικονιδίων: Size of small icons: Το μέγεθος των μικρών εικονιδίων: Size of thumbnails: Το μέγεθος των εικόνων επισκόπησης: Size of side pane icons: Το μέγεθος των εικονιδίων του πλευρικού πίνακα: Icon theme: Θέματα εικονιδίων: Window Παράθυρο Always show the tab bar Να εμφανίζεται πάντα η γραμμή καρτελών Show 'Close' buttons on tabs Εμφάνιση του κουμπιού κλεισίματος στις καρτέλες Remember the size of the last closed window Απομνημόνευση του μεγέθους του τελευταία κλεισμένου παραθύρου Default width of new windows: Πλάτος εξ ορισμού των νέων παραθύρων: Default height of new windows: Ύψος εξ ορισμού των νέων παραθύρων: Browsing Εξερεύνηση Open files with single click Άνοιγμα των αρχείων με μονό κλικ Delay of auto-selection in single click mode (0 to disable) Καθυστέρηση της αυτόματης επιλογής στη λειτουργία μονού κλικ (0 για απενεργοποίηση) Default view mode: Λειτουργία προβολής εξ ορισμού: sec δευτ File Operations Λειτουργίες αρχείων Confirm before deleting files Επιβεβαίωση πριν τη διαγραφή των αρχείων Move deleted files to "trash bin" instead of erasing from disk. Μετακίνηση των διαγραμμένων αρχείων στον κάδο των απορριμμάτων αντί τη διαγραφή τους από το δίσκο. Show thumbnails of files Εμφάνιση εικόνων επισκόπησης των αρχείων Only show thumbnails for local files Εμφάνιση των εικόνων επισκόπησης μόνο για τα τοπικά αρχεία Display Εμφάνιση Bookmarks: Σελιδοδείκτες: Open in current tab Άνοιγμα στην τρέχουσα καρτέλα Open in new tab Άνοιγμα σε νέα καρτέλα Open in new window Άνοιγμα σε νέο παράθυρο Erase files on removable media instead of "trash can" creation Διαγραφή των αρχείων των αφαιρούμενων συσκευών αντί για τη δημιουργία ενός κάδου απορριμμάτων Confirm before moving files into "trash can" Επιβεβαίωση πριν την μετακίνηση των αρχείων στον κάδο απορριμμάτων Don't ask options on launch executable file Να μην ερωτώνται ενέργειες κατά το άνοιγμα ενός εκτελέσιμου αρχείου User interface Περιβάλλον χρήστη Treat backup files as hidden Διαχείριση των αρχείων αντιγράφων ασφαλείας ως κρυφά Always show full file names Να εμφανίζονται πάντα τα πλήρη ονόματα των αρχείων Show icons of hidden files shadowed Εμφάνιση των εικονιδίων των κρυφών αρχείων σε σκίαση Show in places Εμφάνιση στις τοποθεσίες Home Προσωπικός φάκελος Desktop Επιφάνεια εργασίας Trash can Απορρίμματα Computer Υπολογιστής Applications Εφαρμογές Devices Συσκευές Network Δίκτυο Do not generate thumbnails for image files exceeding this size: Να μην δημιουργούνται εικόνες επισκόπησης για αρχεία εικόνων που υπερβαίνουν αυτό το το μέγεθος: KB KB Auto Mount Αυτόματη προσάρτηση Mount mountable volumes automatically on program startup Αυτόματη προσάρτηση των διαθέσιμων χώρων αποθήκευσης κατά την έναρξη του προγράμματος Mount removable media automatically when they are inserted Αυτόματη προσάρτηση των αφαιρούμενων μέσων κατά την εισαγωγή τους Show available options for removable media when they are inserted Εμφάνιση των διαθέσιμων επιλογών των αφαιρούμενων μέσων κατά την εισαγωγή τους When removable medium unmounted: Κατά την αποπροσάρτηση ενός αφαιρουμένου μέσου: Close &tab containing removable medium Κλείσιμο της καρ&τέλας που περιέχει το αφαιρούμενο μέσο Chan&ge folder in the tab to home folder Α&λλαγή του φακέλου της καρτέλα στον προσωπικό κατάλογο Programs Προγράμματα Terminal emulator: Προσομοιωτής τερματικού: Switch &user command: Εντολή εναλλαγής &χρήστη: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Παραδείγματα: "xterm -e %s" για το τερματικό ή "gksu %s" για την αλλαγή χρήστη. %s = η γραμμή εντολών που θέλετε να εκτελέσετε μέσω του τερματικού ή της su. Archiver in&tegration: Ενσωμάτωση αρ&χειοθέτησης: Templates Πρότυπα Show only user defined templates in menu Εμφάνιση στο μενού μόνο των πρότυπων που έχουν καθοριστεί από τον χρήστη Show only one template for each MIME type Εμφάνιση μόνο ενός πρότυπου για έκαστον τύπο MIME Run default application after creation from template Εκτέλεση της εξ ορισμού εφαρμογής μετά τη δημιουργία από το πρότυπο Use SI decimal prefixes instead of IEC binary prefixes Χρήση προθεμάτων δεκαδικών SI αντί για δυαδικά προθέματα IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_es.ts000066400000000000000000001624461263124606600231230ustar00rootroot00000000000000 AboutDialog About Acerca de <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Administrador de archivos liviano <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Authors Autores Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programado por: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> License Licencia PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Administrador de archivos PCManFM Copyright (C) 2009-2014 洪 任 諭 (Hong Jen Yee) Este programa es software libre; puede redistribuirlo y / o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Fundación para el Software Libre; ya sea la versión 2 de la Licencia, o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Vea la Licencia Pública General GNU para más detalles. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa; si no, escriba a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. AutoRunDialog Removable medium is inserted Disco removible insertado <b>Removable medium is inserted</b> <b>Disco removible insertado</b> Type of medium: Tipo de disco: Detecting... Detectando... Please select the action you want to perform: Seleccione la acción que desea ejecutar: DesktopFolder Form Desktop Desktop folder: Image file Archivo de imagen Folder path &Browse E&xaminar DesktopPreferencesDialog Desktop Preferences Preferencias de Escritorio General General Background Fondo Wallpaper mode: Modo de papel tapiz: Wallpaper image file: Imagen de papel tapiz: Select background color: Seleccione color de fondo: Image file Archivo de imagen Image file path Ruta de archivo de imagen &Browse E&xaminar Label Text Texto de etiquetas Select text color: Seleccione color de texto: Select shadow color: Seleccione color de sombra: Select font: Seleccione el tipo de letra: Window Manager Advanced Avanzado Show menus provided by window managers when desktop is clicked Mostrar menús de los administradores de ventanas cuando se hace click sobre el escritorio FindFilesDialog Find Files Buscar archivos Name/Location Nombre/Posición File name patterns Patrones de nombre de archivos Pattern: Patrón: Case insensitive No coincidir mayúsculas Use regular expression Usar expresión regular Places to search Lugares donde buscar Add Agregar Remove Eliminar Search in sub directories Buscar en sub directorios Search hidden files Buscar archivos ocultos File Type Tipo de Archivo Only search for files of following types: Solo buscar archivos de los siguientes tipos: Text files Archivos de texto Image files Archivos de imágenes Audio files Archivos de audio Video files Archivos de video Documents Documentos Content Contenido File contains Contenidos del archivo Properties Propiedades File Size Tamaño del Archivo Bigger than: Mayor a: Smaller than: Menor a: Last Modified Time Fecha de Modificación Earlier than: Antes de: Later than: Después de: MainWindow File Manager Administrador de archivos Ctrl+Shift+N Ctrl+Alt+N &Find Files F3 F3 Filter Filter by string... &File &Archivo C&reate New &Help Ay&uda &View &Ver &Sorting &Ordenar &Edit &Editar &Bookmarks &Marcadores &Go &Ir &Tool &Herramientas Main Toolbar Barra de Herramientas Principal Go &Up S&ubir Go Up Subir Alt+Up Alt+Arriba Home Carpeta personal &Home Alt+Home Alt+Inicio &Reload &Recargar F5 F5 Go Ir Quit Salir &About &Acerca de &New Window &Nueva ventana New Window Nueva ventana Ctrl+N Ctrl+N Show &Hidden Mo&strar ocultos Ctrl+H Ctrl+H &Computer &Sistema &Trash &Papelera &Network &Red &Desktop &Escritorio &Add to Bookmarks &Agregar a marcadores &Applications &Aplicaciones Reload Recargar &Icon View V&ista de Íconos &Compact View Vista &Compacta &Detailed List Lista &Detallada &Thumbnail View Vista de &Miniaturas Cu&t Cor&tar Ctrl+X Ctrl+X &Copy &Copiar Ctrl+C Ctrl+C &Paste &Pegar Ctrl+V Ctrl+V Select &All Seleccion&ar Todo Ctrl+A Ctrl+A Pr&eferences Pr&eferencias &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Case Sensitive By File &Size &Close Window &Folder &Blank File Ascending Ascendente Descending Descendente By File Name Por Nombre de Archivo By Modification Time Por Fecha de Modificación By File Type Por Tipo de Archivo By Owner Por Dueño Folder First Carpetas Primero New &Tab Nueva &Pestaña New Tab Nueva Pestaña Ctrl+T Ctrl+T Go &Back Re&troceder Go Back Retroceder Alt+Left Alt+Izquierda Go &Forward A&vanzar Go Forward Avanzar Alt+Right Alt+Derecha &Invert Selection &Invertir Selección &Delete &Eliminar Del Supr &Rename Cambia&r Nombre F2 F2 C&lose Tab &Cerrar Pestaña Ctrl+W Ctrl+W File &Properties Propiedades de &Archivo Alt+Return Alt+Enter &Folder Properties &Propiedades de &Carpeta Case Sensitive Coincidir Mayúsculas By File Size Por Tamaño de Archivo Close Window Cerrar Ventana Edit Bookmarks Editar Marcadores Open &Terminal Abrir &terminal F4 F4 Open as &Root Abrir como &root &Edit Bookmarks &Editar Marcadores PCManFM::Application Name of configuration profile Nombre del perfil ce configuración PROFILE PERFIL Run PCManFM as a daemon Ejecutar PCManFM como un servicio Quit PCManFM Cerrar PCManFM Launch desktop manager Abrir administrador de escritorio Turn off desktop manager if it's running Cerrar administrador de escritorio si está en ejecución Open desktop preference dialog on the page with the specified name Abrir diálogo de preferencias de escritorio en la página especificada NAME NOMBRE Open new window Abrir nueva ventana Open Find Files utility Abrir búsqueda de archivos Set desktop wallpaper from image FILE Configurar papel tapiz desde un archivo FILE ARCHIVO Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Definir modo de papel tapiz. MODO =(color|estirar|ajustar|centrar|repetir) MODE MODO Open Preferences dialog on the page with the specified name Abrir diálogo de preferencias en la página especificada Files or directories to open Archivos o directorios a abrir [FILE1, FILE2,...] [Archivo 1, Archivo 2,...] Error Error Terminal emulator is not set. El emulador de terminal no está configurado. PCManFM::AutoRunDialog Open in file manager Abrir en administrador de archivos Removable Disk Disco Removible PCManFM::DesktopPreferencesDialog Fill with background color only Llenar solamente con el color de fondo Stretch to fill the entire screen Estirar para llenar la pantalla Stretch to fit the screen Estirar para ajustar a la pantalla Center on the screen Centrar en la pantalla Tile the image to fill the entire screen Repetir la imagen hasta llenar la pantalla Image Files Archivos de Imagen PCManFM::DesktopWindow Stic&k to Current Position &Pegar en la posición actual Desktop Preferences Preferencias de Escritorio PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 Versión: %1 &Move to Trash &Mover a la Papelera &Delete &Eliminar Error Error Switch user command is not set. El comando para cambiar de usuario no está definido. PCManFM::PreferencesDialog Icon View Vista de Íconos Compact Icon View Vista Compacta de Íconos Thumbnail View Vista de Miniaturas Detailed List View Lista Detallada PCManFM::TabPage Error Error Free space: %1 (Total: %2) Espacio libre: %1 (Total %2) %n item(s) %n elemento %n elementos (%n hidden) (%n oculto) (%n ocultos) %1 item(s) selected %1 elemento(s) seleccionado(s) PCManFM::View Open in New T&ab &Abrir en Nueva Pestaña Open in New Win&dow Abrir en Nueva &Ventana Open in Termina&l Abrir en Termina&l PreferencesDialog Preferences Preferencias User Interface Interfaz de Usuario Behavior Comportamiento Thumbnail Miniaturas Volume Volumen Advanced Avanzado Icons Íconos Size of big icons: Tamaño de íconos grandes: Size of small icons: Tamaño de íconos pequeños: Size of thumbnails: Tamaño de miniaturas: Size of side pane icons: Tamaño de íconos del panel lateral: Icon theme: Tema de íconos: Window Ventana Always show the tab bar Mostrar siempre la barra de pestañas Show 'Close' buttons on tabs Mostrar botones de cerrar en las pestañas Remember the size of the last closed window Recordar el tamaño de la última ventana cerrada Default width of new windows: Ancho para nuevas ventanas: Default height of new windows: Altura para nuevas ventanas: Browsing Navegación Open files with single click Abrir archivos con un solo click Delay of auto-selection in single click mode (0 to disable) Demora de selección automática en modo de un click (0 para deshabilitar) Default view mode: Modo de visualización por defecto: sec seg File Operations Operaciones de Archivos Confirm before deleting files Confirmar antes de borrar Move deleted files to "trash bin" instead of erasing from disk. Mover archivos a la papelera en lugar de eliminarlos del disco. Show thumbnails of files Mostrar miniaturas de archivos Only show thumbnails for local files Solo mostrar miniaturas para archivos locales Display Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home Carpeta personal Desktop Trash can Computer Applications Devices Network Do not generate thumbnails for image files exceeding this size: No generar miniaturas para archivos de imágenes mayores a: KB KB Auto Mount Montar Automáticamente Mount mountable volumes automatically on program startup Montar discos removibles automáticamente al inicio Mount removable media automatically when they are inserted Montar discos removibles automáticamente cuando se insertan Show available options for removable media when they are inserted Mostrar opciones disponibles para los discos removibles al insertarlos When removable medium unmounted: Cuando se desconecta un disco removible: Close &tab containing removable medium Chan&ge folder in the tab to home folder Switch &user command: Archiver in&tegration: Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Close tab containing removable medium Cerrar la pestaña que contiene al disco removible Change folder in the tab to home folder Cambiar el directorio en la pestaña a la carpeta personal Programs Programas Terminal emulator: Emulador de terminal: Switch user command: Comando para cambiar de usuario: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Ejemplos: "xterm -e %s" para terminal o "gksu %s" para cambiar de usuario. %s = la línea de comandos a ejecutar en la terminal o como otro usuario. Archiver integration: Integración con programas de archivo: Use SI decimal prefixes instead of IEC binary prefixes Usar prefijos decimales SI en lugar de prefijos binarios IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_fr.ts000066400000000000000000001607521263124606600231210ustar00rootroot00000000000000 AboutDialog About À propos <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Gestionnaire de fichiers léger <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Gestionnaire de fichiers de PCMan Copyright © 2009 - 2015 洪任諭 (Hong Jen Yee) Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la “GNU General Public License” telle que publiée par la Free Software Foundation, soit en version 2, soit (à votre gré) toute version ultérieure. Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISABILITÉ, ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence Générale Publique GNU pour plus de détails. Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme ; si ce n'est pas le cas, écrivez à la fondation pour le logiciel libre à l'adresse ci-dessous : Free Software Foundation, Inc.n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programmation : Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors Auteurs PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Gestionnaire de fichiers de PCMan Copyright © 2009 - 2015 洪任諭 (Hong Jen Yee) Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la “GNU General Public License” telle que publiée par la Free Software Foundation, soit en version 2, soit (à votre gré) toute version ultérieure. Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISABILITÉ, ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence Générale Publique GNU pour plus de détails. Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme ; si ce n'est pas le cas, écrivez à la fondation pour le logiciel libre à l'adresse ci-dessous : Free Software Foundation, Inc.n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. License Licence AutoRunDialog Removable medium is inserted Un média amovible a été inséré <b>Removable medium is inserted</b> <b>Un média amovible a été inséré</b> Type of medium: Type de média : Detecting... Détection en cours… Please select the action you want to perform: Veuillez sélectionner l'action que vous voulez effectuer : DesktopFolder Form Formulaire Desktop Desktop folder: Image file Fichier image Folder path &Browse &Parcourir DesktopPreferencesDialog Desktop Preferences Préférences du bureau Background Arrière-plan Wallpaper mode: Mode du fond d'écran : Wallpaper image file: Fichier image du fond d'écran : Select background color: Sélectionnez la couleur d'arrière-plan : Image file Fichier image Image file path Chemin du fichier image &Browse &Parcourir Label Text Texte de l'étiquette Select text color: Sélectionnez la couleur du texte : Select shadow color: Sélectionnez la couleur de l'ombre : Select font: Sélectionnez la police : General Général Window Manager Gestionnaire de fenêtre Show menus provided by window managers when desktop is clicked Afficher les menus fournis par les gestionnaires de fenêtres lorsqu'on clique sur le bureau Advanced Avancé MainWindow File Manager Gestionnaire de fichiers Go Up Monter Alt+Up Alt+Haut Home Page d'accueil Alt+Home Alt+Début / Origine Reload Recharger F5 F5 &Home &Reload &Recharger Go Aller à Quit Quitter &About &À propos New Window Nouvelle fenêtre Ctrl+N Ctrl+N Show &Hidden Afficher les éléments cac&hés Ctrl+H Ctrl+H &Computer &Ordinateur &Trash &Corbeille &Network &Réseau &Desktop &Bureau &Add to Bookmarks &Ajouter aux signets &Applications &Applications Ctrl+X Ctrl+X &Copy &Copier Ctrl+C Ctrl+C &Paste &Coller Ctrl+V Ctrl+V Select &All Tout sélect&ionner Pr&eferences Préfér&ences &Ascending &Croissant &Descending &Décroissant &By File Name &Par nom de fichier By &Modification Time Par date de &modification By File &Type Par &type de fichier By &Owner Par &Propriétaire &Folder First &Dossiers d'abord &Invert Selection &Inverser la sélection &Delete &Supprimer &Rename &Renommer &Case Sensitive Sensible à la &casse By File &Size Par &taille de fichier &Close Window &Fermer la fenêtre Ctrl+A Ctrl+A Go &Up Mon&ter &New Window &Nouvelle fenêtre &Icon View Vue en &icônes &Compact View Vue &compacte &Detailed List Liste &détaillée &Thumbnail View Vue en vigne&ttes Cu&t Cou&per Ascending Ascendant Descending Descendant By File Name Par nom de fichier By Modification Time Par date de modification By File Type Par type de fichier By Owner Par propriétaire Folder First Dossier en premier New &Tab Nouvel ongle&t New Tab Nouvel onglet Ctrl+T Ctrl+T Go &Back Re&culer Go Back Reculer Alt+Left Alt+Gauche Go &Forward Ava&ncer Go Forward Avancer Alt+Right Alt+Droite Del Suppr F2 F2 C&lose Tab Fermer &l'onglet File &Properties &Propriétés du fichier &Folder Properties Propriétés du &dossier Ctrl+Shift+N Ctrl+Maj+N Ctrl+Alt+N Ctrl+Alt+N Filter Filtrer C&reate New Créer un &nouveau &Sorting Tri en cour&s Main Toolbar Barre d'outils principale Ctrl+W Ctrl+W Alt+Return Alt+Entrée Case Sensitive Sensible à la casse By File Size Par taille de fichier Close Window Fermer la fenêtre Edit Bookmarks Modifier les signets Open &Terminal Ouvrir le &terminal F4 F4 Open as &Root Ouvrir en tant que &root &Edit Bookmarks Modifi&er les signets &Folder &Dossier &Blank File &Fichier vide &Find Files &Trouver des fichiers F3 F3 Filter by string... Filtrer par chaîne… &File &Fichier &Help &Aide &View &Voir &Edit &Édition &Bookmarks &Signets &Go A&ller à… &Tool Ou&tils PCManFM::Application Name of configuration profile Nom du profil de configuration PROFILE PROFIL Run PCManFM as a daemon Lancer PCManFM comme démon Quit PCManFM Quitter PCManFM Launch desktop manager Lancer le gestionnaire de bureau Turn off desktop manager if it's running Éteindre le gestionnaire de bureau s'il fonctionne Open desktop preference dialog on the page with the specified name Ouvrir la boîte de dialogue des préférences du bureau sur la page avec le nom spécifié NAME NAME Set desktop wallpaper from image FILE Définir le fond d'écran de bureau depuis l'image FILE FILE FILE Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Définir le mode de fond d'écran de bureau. MODE=(couleur|étirer|ajuster|centrer|découper) MODE MODE Open Preferences dialog on the page with the specified name Ouvrir la boîte de dialogue des préférences sur la page avec le nom spécifié Open new window Ouvrir une nouvelle fenêtre Open Find Files utility Ouvrir l'utilitaire de recherche de fichiers [FILE1, FILE2,...] [FILE1, FILE2, etc.] Files or directories to open Fichiers ou dossiers à ouvrir Error Erreur Terminal emulator is not set. L'émulateur de terminal n'est pas défini. PCManFM::AutoRunDialog Open in file manager Ouvrir dans le gestionnaire de fichiers Removable Disk Disque amovible PCManFM::DesktopPreferencesDialog Fill with background color only Remplir seulement avec la couleur d'arrière-plan Stretch to fill the entire screen Étirer pour remplir l'écran entier Stretch to fit the screen Étirer pour remplir l'écran Center on the screen Centrer sur l’écran Tile the image to fill the entire screen Faire une mosaïque avec l'image pour remplir l'écran entier Image Files Fichiers image PCManFM::DesktopWindow Stic&k to Current Position Res&ter à la position actuelle Desktop Preferences Préférences du bureau PCManFM::MainWindow Clear text (Ctrl+K) Effacer le texte (Ctrl+K) Version: %1 Version: %1 &Move to Trash &Mettre à la corbeille &Delete &Supprimer Error Erreur Switch user command is not set. La commande de changement d’utilisateur n'est pas configurée. PCManFM::PreferencesDialog Icon View Vue en icônes Compact Icon View Vue en icônes compacte Thumbnail View Vue en vignettes Detailed List View Vue en liste détaillée PCManFM::TabPage Error Erreur Free space: %1 (Total: %2) Espace libre: %1 (total : %2) %n item(s) %n élément %n éléments (%n hidden) (%n caché) (%n cachés) %1 item(s) selected %1 élément(s) sélectionné(s) PCManFM::View Open in New T&ab Ouvrir dans un nouvel ongle&t Open in New Win&dow Ouvrir &dans une nouvelle fenêtre Open in Termina&l Ouvrir dans &le terminal PreferencesDialog Preferences Préférences User Interface Interface utilisateur Behavior Comportement Thumbnail Vignette Volume Volume Advanced Avancé Icons Icônes Size of big icons: Taille des grandes icônes : Size of small icons: Taille des petites icônes : Size of thumbnails: Taille des vignettes : Size of side pane icons: Taille des icônes de panneau latéral : Icon theme: Thème d'icônes : Window Fenêtre Default width of new windows: Largeur par défaut des nouvelles fenêtres : Default height of new windows: Hauteur par défaut des nouvelles fenêtres : Always show the tab bar Toujours afficher la barre des onglets Show 'Close' buttons on tabs Afficher le bouton « Fermer » sur les onglets Remember the size of the last closed window Mémoriser la taille de la dernière fenêtre fermée Browsing Navigation Open files with single click Ouvrir les fichiers avec un simple clic Delay of auto-selection in single click mode (0 to disable) Délai avant auto-sélection en mode simple click (0 pour désactiver) Default view mode: Mode de vue par défaut : sec s File Operations Opérations sur les fichiers Confirm before deleting files Confirmer avant de supprimer les fichiers Move deleted files to "trash bin" instead of erasing from disk. Mettre les fichiers supprimés à la corbeille eu lieu de les effacer du disque. Show thumbnails of files Montrer les vignettes des fichiers Only show thumbnails for local files Montrer les vignettes seulement pour les fichiers locaux Display Bookmarks: Marque-pages : Open in current tab Ouvrir dans l'onglet courant Open in new tab Ouvrir dans un nouvel onglet Open in new window Ouvrir dans une nouvelle fenêtre Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Confirmer avant de déplacer des fichiers à la poubelle Don't ask options on launch executable file Ne pas poser de questions avant lancement de fichier exécutable User interface Interface utilisateur Treat backup files as hidden Cacher les fichiers de sauvegarde Always show full file names Toujours montrer le nom complet des fichiers Show icons of hidden files shadowed Montrer les icônes de fichiers cachés ombragées Show in places Home Page d'accueil Desktop Bureau Trash can Poubelle Computer Ordinateur Applications Applications Devices Périphériques Network Réseau Do not generate thumbnails for image files exceeding this size: Ne pas générer de vignettes pour les fichiers image excédant cette taille : KB Ko Auto Mount Monter automatiquement Mount mountable volumes automatically on program startup Monter automatiquement les volumes au démarrage du programme Mount removable media automatically when they are inserted Monter automatiquement les médias amovibles lorsqu'ils sont insérés Show available options for removable media when they are inserted Montrer les options disponibles pour les médias amovibles lorsqu'ils sont insérés When removable medium unmounted: Close &tab containing removable medium Chan&ge folder in the tab to home folder Switch &user command: Archiver in&tegration: Templates Modèles Show only user defined templates in menu Ne montrer que les modèles définis par l'utilisateur dans le menu Show only one template for each MIME type Ne montrer qu'un modèle pour chaque type MIME Run default application after creation from template Programs Programmes Terminal emulator: Émulateur de terminal : Switch user command: Commande de changement d'utilisateur : Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Exemples : « xterm -e %s » pour le terminal ; « gksu %s » pour changer d’utilisateur. %s = la ligne de commande que vous voulez exécuter avec le terminal ou su. Archiver integration: Intégration du logiciel de compression de données : Use SI decimal prefixes instead of IEC binary prefixes Utiliser les préfixes de décimales du système international d'unités au lieu des préfixes binaires de l'IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_gl.ts000066400000000000000000001564671263124606600231240ustar00rootroot00000000000000 AboutDialog About Sobre <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Un xestor de xanelas lixeiro <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) Este programa é software libre; pode distribuílo e/ou modificalo baixo os termos da Licenza Pública Xeral GNU tal como foi publicada pola Free Software Foundation; tanto na versión 2 da Licenza, como (segundo o seu criterio) calquera versión posterior. Este programa distribúese coa esperanza de que sexa útil, pero SEN NINGUNHA GARANTÍA; nin sequera a garantíia implícita de COMERCIALIZACIÓN ou ADECUACIÖN PARA UN PROPÓSITO ESPECÍFICO. Vexa a Licenza Pública Xeral GNU para obter mais detalles. Debe ter recibido unha copia da Licenza Pública Xeral GNU con este programa; se non é así, escriba á Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. {2009 ?} {2014 ?} {2 ?} {51 ?} {02110-1301,?} <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programación: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors Autores PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) Este programa é software libre; pode distribuílo e/ou modificalo baixo os termos da Licenza Pública Xeral GNU tal como foi publicada pola Free Software Foundation; tanto na versión 2 da Licenza, como (segundo o seu criterio) calquera versión posterior. Este programa distribúese coa esperanza de que sexa útil, pero SEN NINGUNHA GARANTÍA; nin sequera a garantíia implícita de COMERCIALIZACIÓN ou ADECUACIÖN PARA UN PROPÓSITO ESPECÍFICO. Vexa a Licenza Pública Xeral GNU para obter mais detalles. Debe ter recibido unha copia da Licenza Pública Xeral GNU con este programa; se non é así, escriba á Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. License Licenza AutoRunDialog Removable medium is inserted Foi inserido un dispositivo removíbel <b>Removable medium is inserted</b> <b>Foi inserido un dispositivo removíbel</b> Type of medium: Tipo de dispositivo: Detecting... Detectando... Please select the action you want to perform: Escolla a acción que quere realizar: DesktopFolder Form Desktop Desktop folder: Image file Ficheiro de imaxe Folder path &Browse &Examinar DesktopPreferencesDialog Desktop Preferences Preferencias do escritorio Background Fondo Wallpaper mode: Modo do fondo de escritorio: Wallpaper image file: Ficheiro de imaxe do fondo de escritorio: Select background color: Escoller a cor do fondo: Image file Ficheiro de imaxe Image file path Ruta ao ficheiro de imaxe &Browse &Examinar Label Text Texto da etiqueta Select text color: Escoller a cor do texto: Select shadow color: Escoller a cor da sombra: Select font: Escoller o tipo de letra: General Xeral Window Manager Show menus provided by window managers when desktop is clicked Amosar os menús fornecidos polos xestores de xanelas cando se preme no escritorio Advanced Avanzado MainWindow File Manager Xestor de ficheiros Go Up Subir Alt+Up Alt+Frecha arriba Home Inicio Alt+Home Alt+Inicio Reload Cargar de novo F5 F5 &Home &Reload &Cargar de novo Go Ir para Quit Saír &About &Sobre New Window Nova xanela Ctrl+N Ctrl+N Show &Hidden Amosar a&gochados Ctrl+H Ctrl+H &Computer &Computador &Trash &Lixo &Network &Rede &Desktop &Escritorio &Add to Bookmarks En&gadir aos marcadores &Applications &Aplicacións Ctrl+X Ctrl-X &Copy &Copiar Ctrl+C Ctrl+C &Paste &Pegar Ctrl+V Ctrl+V Select &All Seleccionar &todo Pr&eferences Pre&ferencias &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection &Inverter a selección &Delete &Eliminar &Rename &Renomear &Case Sensitive By File &Size &Close Window Ctrl+A Ctrl+A Go &Up S&ubir &New Window &Nova xanela &Icon View Vista de &iconas &Compact View Vista &compacta &Detailed List Vista &detallada &Thumbnail View Vista de &miniaturas Cu&t Cor&tar Ascending Ascendente Descending Descendente By File Name Polo nome do ficheiro By Modification Time Pola data de modificación By File Type Polo tipo do ficheiro By Owner Polo propietario Folder First Primeiro os cartafoles New &Tab Nova &lapela New Tab Nova lapela Ctrl+T Ctrl+T Go &Back A&trás Go Back Ir cara atrás Alt+Left Alt+Frecha esquerda Go &Forward Adian&te Go Forward Adiante Alt+Right Alt+Frecha dereita Del Supr F2 F2 C&lose Tab &Pechar a lapela File &Properties &Propiedades do ficheiro &Folder Properties Propiedades do &cartafol Ctrl+Shift+N Ctrl+Alt+N Filter C&reate New &Sorting &Ordenación Main Toolbar Barra de ferramentas principal Ctrl+W Ctrl+W Alt+Return Alt+Intro Case Sensitive Distinguindo maiúsculas de minúsculas By File Size Polo tamaño do ficheiro Close Window Pechar a xanela Edit Bookmarks Editar os marcadores Open &Terminal Abrir un &terminal F4 F4 Open as &Root Abrir como &root &Edit Bookmarks &Editar marcadores &Folder &Blank File &Find Files F3 F3 Filter by string... &File &Ficheiro &Help &Axuda &View &Ver &Edit &Editar &Bookmarks &Marcadores &Go &Ir para &Tool &Ferramenta PCManFM::Application Name of configuration profile Nome do perfil de configuración PROFILE PERFIL Run PCManFM as a daemon Executar PCManFM como un servizo Quit PCManFM Saír do PCManFM Launch desktop manager Iniciar o xestor de escritorio Turn off desktop manager if it's running Apagar o xestor de escritorio se está en execución Open desktop preference dialog on the page with the specified name Abrir o diálogo de preferencias do escritorio na páxina co nome especificado NAME NOME Set desktop wallpaper from image FILE Estabelecer o fondo de pantalla do escritorio desde o FICHEIRO de imaxe FILE FICHEIRO Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Axuste o modo de fondo de escritorio. MODO=(color|stretch|fit|center|tile) MODE MODO Open Preferences dialog on the page with the specified name Abrir o diálogo de preferencias do escritorio na páxina co nome especificado Open new window Abrir unha nova xanela Open Find Files utility Abrir a utilidade de busca de ficheiros [FILE1, FILE2,...] [FICHEIRO1, FICHEIRO2,...] Files or directories to open Error Erro Terminal emulator is not set. Non foi estabelecido o emulador de terminal PCManFM::AutoRunDialog Open in file manager Abrir no xestor de ficheiros Removable Disk Disco extraíbel PCManFM::DesktopPreferencesDialog Fill with background color only Encher só coa cor de fondo Stretch to fill the entire screen Estirar para encher a pantalla completa Stretch to fit the screen Estirar para adaptar á pantalla Center on the screen Centrar na pantalla Tile the image to fill the entire screen Facer mosaico coa imaxe para encher a pantalla completa Image Files Ficheiros de imaxe PCManFM::DesktopWindow Stic&k to Current Position &Permanente na posición actual Desktop Preferences Preferencias do escritorio PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 &Move to Trash &Mover ao lixo &Delete &Eliminar Error Erro Switch user command is not set. A orde para cambiar de usuario non está configurada. PCManFM::PreferencesDialog Icon View Vista en Iconas Compact Icon View Vista compacta en iconas Thumbnail View Vista de miniaturas Detailed List View Ver como lista detallada PCManFM::TabPage Error Erro Free space: %1 (Total: %2) Espazo libre: %1 (Total: %2) %n item(s) %n elemento %n elementos (%n hidden)  (%n agochado)  (%n agochados) %1 item(s) selected Escolleu %1 elemento(s) PCManFM::View Open in New T&ab Abrir nunha nova l&apela Open in New Win&dow Abrir nunha nova xa&nela Open in Termina&l Abrir nun termina&l PreferencesDialog Preferences Preferencias User Interface Interface de usuario Behavior Comportamento Thumbnail Miniatura Volume Volume Advanced Avanzado Icons Iconas Size of big icons: Tamaño das iconas grandes: Size of small icons: Tamaño das iconas pequenas: Size of thumbnails: Tamaño das miniaturas: Size of side pane icons: Tamaño das iconas do panel lateral: Icon theme: Tema de iconas: Window Xanela Default width of new windows: Largo predeterminado para as novas xanelas: Default height of new windows: Alto predeterminado para as novas xanelas: Always show the tab bar Amosar sempre a barra de lapelas Show 'Close' buttons on tabs Amosar os botóns de «Pechar» nas lapelas Remember the size of the last closed window Browsing Navegando Open files with single click Abrir os ficheiros cun só clic Delay of auto-selection in single click mode (0 to disable) Default view mode: Modo de vista predeterminado: sec File Operations Operacións de ficheiro Confirm before deleting files Confirmar antes de eliminar os ficheiros Move deleted files to "trash bin" instead of erasing from disk. Mover os ficheiros eliminados ao «cesto do lixo» no canto de borralos do disco. Show thumbnails of files Amosar miniaturas dos ficheiros Only show thumbnails for local files Amosar só as miniaturas dos ficheiros locais Display Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home Inicio Desktop Trash can Computer Applications Devices Network Do not generate thumbnails for image files exceeding this size: Non xerar miniaturas dos ficheiros de imaxe se o tamaño excede de: KB  KB Auto Mount Montaxe automático Mount mountable volumes automatically on program startup Montar os volumes montábeis automaticamente no arrinque do programa Mount removable media automatically when they are inserted Montar os dispositivos removíbeis automaticamente ao seren inseridos Show available options for removable media when they are inserted Amosar as opción para os dispositivos removíbeis ao seren inseridos When removable medium unmounted: Close &tab containing removable medium Chan&ge folder in the tab to home folder Switch &user command: Archiver in&tegration: Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Programs Programas Terminal emulator: Emulador de terminal: Switch user command: Orde de cambio de usuario: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Exemplos: «xterm -e %s» para o terminal ou «gksu %s» para cambiar de usuario. %s = á liña de ordes que quere executar co terminal ou como superusario. Archiver integration: Integración do «Archiver»: Use SI decimal prefixes instead of IEC binary prefixes Utilizar prefixos decimais SI no canto de prefixos binarios IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_hu.desktop000066400000000000000000000002011263124606600241270ustar00rootroot00000000000000#Translations Name[hu]=PCManFM-Qt fájlkezelő GenericName[hu]=Fájlkezelő Comment[hu]=Fájlok böngészése és karbantartása pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_hu.ts000066400000000000000000001453751263124606600231320ustar00rootroot00000000000000 AboutDialog About Rólunk <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Könnyed fájlkezelő <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programozó: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors Szerzők PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) Ez egy szabad szoftver, ami a Free Software Foundation által megjelentetett GNU General Public Licensz 2-es, vagy későbbi verzióiban felsorolt feltételekkel szabadon terjeszthető, módosítható. A megjelentetők remélik, hogy a program hasznos, viszont SEMMILYEN GARANCIÁT NEM VÁLLALNAK, beleértve áttételesen az ÜZLETI célú hasznosítására, továbbá a SPECIÁLIS CÉLRA TÖRTÉNŐ HASZNÁLHATÓSÁGÁRA sem. További részletek a GNU General Public Licensz soraiban. Ezzel a programmal együtt meg kellett kapnia a GNU General Public Licensz másolatát is, ha nem, akkor írjon a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA címre. License Licensz AutoRunDialog Removable medium is inserted Új cserélhető adathordozó észlelve <b>Removable medium is inserted</b> <b>Új hordozható adathordozó észlelve</b> Type of medium: Adathordozó fajtája: Detecting... Észlelés... Please select the action you want to perform: Válassz egy lehetőséget: DesktopFolder Form Űrlap Desktop Asztal Desktop folder: Asztal mappa: Image file Képfájl Folder path Könyvtár útvonal &Browse &Böngészés DesktopPreferencesDialog Desktop Preferences Asztal tulajdonságok Background Háttérkép Wallpaper mode: Tapéta mód: Wallpaper image file: Tapéta képfájl: Select background color: Háttérszín: Image file Képfájl Image file path Képfájl útvonala &Browse &Böngészés Label Text Felirat Select text color: Szövegszín: Select shadow color: Árnyékszín: Select font: Betűtípus: General Window Manager Ablakkezelő Show menus provided by window managers when desktop is clicked Asztalra kattintva az ablakkezelő menüje látszik Advanced Haladó MainWindow File Manager Fájlkezelő Go &Up &Föl Go Up Föl Alt+Up Alt+Föl &Home &Saját könyvtár Alt+Home Alt+Home &Reload Új&ratölt F5 F5 Go Ugrás Quit Kilép &About Ról&am &New Window Ú&J ablak New Window ÚJ ablak Ctrl+N Ctrl+N Show &Hidden &Rejtettek Ctrl+H Ctrl+H &Computer &Számítógép &Trash &Kuka &Network &Hálózat &Desktop A&sztal &Add to Bookmarks &Könyvjelzőkhöz &Applications &Alkalmazások Reload Újratölt &Icon View &Ikonnézet &Compact View &Tömör nézet &Detailed List &Teljes lista &Thumbnail View &Bélyegképek Cu&t &Kivág Ctrl+X Ctrl+X &Copy &Másol Ctrl+C Ctrl+C &Paste &Beilleszt Ctrl+V Ctrl+V Select &All &Mindet Ctrl+A Ctrl+A Pr&eferences B&eállítások &Ascending &Növekvő &Descending &Csökkenő &By File Name &Fájlnév szerint By &Modification Time &Módosítási idő szerint By File &Type Fájl&típus szerint By &Owner &Tulajdonos szerint &Folder First Ma&ppák elől &Case Sensitive Na&gybetűérzékeny By File &Size Fá&jlméret szerint &Close Window A&blak bezárás &Folder &Mappa &Blank File &Üres fájl New &Tab Új &fül New Tab Új fül Ctrl+T Ctrl+T Go &Back &Vissza Go Back Vissza Alt+Left Alt+Bal Go &Forward &Előre Go Forward Előre Alt+Right Alt+Jobb &Invert Selection K&ijelölés megfordítás &Delete &Töröl Del Del &Rename &Átnevez F2 F2 C&lose Tab Fü&l bezárás Ctrl+W Ctrl+W File &Properties &Fájljellemzők Alt+Return Alt+Return &Folder Properties &Mappajellemzők Edit Bookmarks Könyvjelzőkezelés Open &Terminal &Terminál F4 F4 Open as &Root &Rendszergazdai megnyitás &Edit Bookmarks Könyvj&elzőkezelés Ctrl+Shift+N Ctrl+Shift+N Ctrl+Alt+N Ctrl+Alt+N &Find Files &Fájlkeresés F3 F3 Filter Szűrő Filter by string... Szövegszűrő... &File &Fájl C&reate New Ú&j létrehozás &Help &Súgó &View &Nézet &Sorting Rendezé&s &Edit Sz&erkeszt &Bookmarks &Könyvjelzők &Go U&grás &Tool &Eszközök Main Toolbar Eszközsáv PCManFM::Application Name of configuration profile Beállítófájl neve PROFILE PROFIL Run PCManFM as a daemon PCManFM daemon-ként Quit PCManFM PCManFM elhagyása Launch desktop manager Asztalkezelő indítás Turn off desktop manager if it's running Futó asztalkezelő lekapcsolása Open desktop preference dialog on the page with the specified name Asztalbeállító nyitása a megadott nevű lapon NAME NÉV Open new window Új ablak nyitás Open Find Files utility Fájlkereső indítása Set desktop wallpaper from image FILE A megadott FILE használata tapétaként FILE FÁJL Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Tapéta mód. MODE=(color|stretch|fit|center|tile) MODE MÓD Open Preferences dialog on the page with the specified name Beállító nyitása a megadott nevű lapon Files or directories to open Megnyitandó fájlok vagy mappák [FILE1, FILE2,...] [FÁJL1, FÁJL2,...] Error Hiba Terminal emulator is not set. A terminál emulátor beállítatlan. PCManFM::AutoRunDialog Open in file manager Megnyitás fájlkezelővel Removable Disk Cserélhető lemez PCManFM::DesktopPreferencesDialog Fill with background color only Kitöltés csak háttérszínnel Stretch to fill the entire screen Kitöltve Stretch to fit the screen Nyújtva Center on the screen Középre Tile the image to fill the entire screen Csempézve Image Files Képfájlok PCManFM::DesktopWindow Stic&k to Current Position &Pozíció megjegyzése Desktop Preferences Asztalbeállítások PCManFM::MainWindow Clear text (Ctrl+K) Szövegtörlés (Ctrl+K) Version: %1 Verzió: %1 &Move to Trash &Kukába &Delete &Töröl Error Hiba Switch user command is not set. Felhasználóváltó parancs határozatlan. PCManFM::PreferencesDialog Icon View Ikon Compact Icon View Kicsi ikon Thumbnail View Bélyegkép Detailed List View Részletes PCManFM::TabPage Error Hiba Free space: %1 (Total: %2) Szabad: %1 (Összes: %2) %n item(s) %n elem (%n hidden) (%n rejtett) %1 item(s) selected %1 elem választva PCManFM::View Open in New T&ab Nyi&tás új fülön Open in New Win&dow Nyitás új a&blakban Open in Termina&l Nyitás terminá&lban PreferencesDialog Preferences Beállítások User Interface Felhasználói felület Behavior Viselkedés Thumbnail Bélyegkép Volume Adathordozó Advanced Haladó Icons Ikonok Size of big icons: Nagy méret: Size of small icons: Kicsi méret: Size of thumbnails: Bélyegképméret: Size of side pane icons: Oldalsáv ikonméret: Icon theme: Ikon téma: Window Ablak Always show the tab bar Fülsáv mindig látható Show 'Close' buttons on tabs 'Bezár'gomb a fülön látszik Remember the size of the last closed window Utoljára bezárt ablak méretének megjegyzése Default width of new windows: Új ablak alapszélessége: Default height of new windows: Új ablak alapmagassága: Browsing Böngészés Open files with single click Megnyitás egy kattintásra Delay of auto-selection in single click mode (0 to disable) Egykattintásos megnyitási módban az automata kiválasztás késleltetése (0 tilt) Default view mode: Alapértelmezett nézetmód: sec mp File Operations Fájlműveletek Confirm before deleting files Törlés előtt megerősítés Move deleted files to "trash bin" instead of erasing from disk. Törölt fájlok lemezről törlés helyett a kukába mennek. Show thumbnails of files Fájloknál Only show thumbnails for local files Csak helyi fájloknál Display Képernyő Bookmarks: Könyvjelzők: Open in current tab Megnyitás itt Open in new tab Megnyitás új fülön Open in new window Megnyitás új ablakban Erase files on removable media instead of "trash can" creation Cserélhető adathordozón a fájlok törlése "kukázás" helyett Confirm before moving files into "trash can" Megerősítés "kukázás" előtt Don't ask options on launch executable file Fájl futtatás előtt nincs opció kérés User interface Kezelőfelület Treat backup files as hidden Biztonsági mentett fájlokat rejtettként kezel Always show full file names Mindig részletes fájlnevek Show icons of hidden files shadowed Rejtett fájlok ikonjai árnyékoltak Show in places Helyben látható Home Saját könyvtár Desktop Asztal Trash can Kuka Computer Számítógép Applications Alkalmazások Devices Eszközök Network Hálózat Do not generate thumbnails for image files exceeding this size: Nincs kép, ha a fájl ennél nagyobb: KB KB Auto Mount Automata csatolás Mount mountable volumes automatically on program startup Csatolható eszközök automata csatolása induláskor Mount removable media automatically when they are inserted Cserélhető adathordozók automata csatolása behelyezéskor Show available options for removable media when they are inserted Cserélhető adathordozók behelyezéskor választás felkínálása When removable medium unmounted: Cserélhető adathordozó lecsatolásakor: Close &tab containing removable medium Cserélhe&tő adathortozós fül bezárása Chan&ge folder in the tab to home folder A &fül a saját mappát fogja mutatni Programs Programok Terminal emulator: Terminálemulátor: Switch &user command: Fel&használó váltási parancs: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Példa: "xterm -e %s" terminálhoz "gksu %s" felhasználóváltáshoz. %s = A parancs, mely terminálhoz, vagy rendszergazdakénti végrehajtáshoz kell. Archiver in&tegration: Csomagoló beépí&tés: Templates Társítások Show only user defined templates in menu Menüben csak felhasználói társítások Show only one template for each MIME type Minden MIME típushoz csak egy társítás látható Run default application after creation from template Tásítás után az alapértelmezett alkalmazás fut Use SI decimal prefixes instead of IEC binary prefixes IEC bináris helyett SI decimális prefix használata pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_it.desktop000066400000000000000000000001711263124606600241350ustar00rootroot00000000000000#Translations Name[it]=Gestore file PCmanFM GenericName[it]=Gestore file Comment[it]=Esplora e organizza file e cartelle pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_it.ts000066400000000000000000001541641263124606600231260ustar00rootroot00000000000000 AboutDialog About Informazioni <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Gestore file leggero <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan Gestore file Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) Questo programma è software libero; puoi redistribuirlo e/o modificarlo nei termini della GNU General Public License come pubblicata dalla Free Software Foundation; nella versione 2 della licenza, o (a tua scelta) qualsiasi versione successiva. Questo programma è distribuito nella speranza che possa essere utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER FINI PARTICOLARI. Vedi la GNU General Public License per ulteriori dettagli. Dovresti aver ricevuto una copia della GNU General Public License insieme a questo programma; In caso contrario, scrivi a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programmazione: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors Autori License Licenza AutoRunDialog Removable medium is inserted Supporto rimovibile inserito <b>Removable medium is inserted</b> <b>Supporto rimovibile inserito</b> Type of medium: Tipo di supporto: Detecting... Rilevamento... Please select the action you want to perform: Seleziona l'azione da eseguire: DesktopFolder Form Modulo Desktop Scrivania Desktop folder: Cartella della scrivania: Image file File immagine Folder path Percorso della cartella &Browse &Sfoglia DesktopPreferencesDialog Desktop Preferences Preferenze della scrivania Background Sfondo Wallpaper mode: Modalità sfondo: Wallpaper image file: File immagine di sfondo: Select background color: Seleziona il colore di sfondo: Image file File immagine Image file path Percorso al file immagine &Browse &Sfoglia Label Text Testo etichette Select text color: Seleziona il colore del testo: Select shadow color: Seleziona il colore delle ombre: Select font: Seleziona il carattere: General Generale Window Manager Gestore delle finestre Show menus provided by window managers when desktop is clicked Mostra i menu forniti dal gestore delle finestre quando fai clic sul desktop Desktop Scrivania Desktop folder: Cartella della scrivania: Folder path Percorso della cartella Advanced Avanzate MainWindow File Manager Gestore file Go Up Vai su Alt+Up Alt+Su Home Cartella home Alt+Home Alt+Inizio Reload Ricarica F5 F5 &Home &Home &Reload &Ricarica Go Vai Quit Esci &About &Informazioni New Window Nuova finestra Ctrl+N Ctrl+N Show &Hidden Mostra i file &nascosti Ctrl+H Ctrl+H &Computer &Computer &Trash Ces&tino &Network &Rete &Desktop &Scrivania &Add to Bookmarks &Aggiungi ai segnalibri &Applications &Applicazioni Ctrl+X Ctrl+X &Copy &Copia Ctrl+C Ctrl+C &Paste &Incolla Ctrl+V Ctrl+V Select &All Seleziona t&utto Pr&eferences Pr&eferenze &Ascending &Crescente &Descending &Decrescente &By File Name &Per nome file By &Modification Time Per data di &modifica By File &Type Per &tipo di file By &Owner Per pr&oprietario &Folder First Prima le ca&rtelle &Invert Selection &Inverti selezione &Delete &Elimina &Rename &Rinomina Ctrl+A Ctrl+A Go &Up Vai &su &New Window &Nuova finestra &Icon View Vista &icone &Compact View Vista &compatta &Detailed List Elenco &dettagliato &Thumbnail View Vista minia&ture Cu&t &Taglia Ascending Crescente Descending Decrescente By File Name Per nome file By Modification Time Per data modifica By File Type Per tipo file By Owner Per proprietario Folder First Prima le cartelle New &Tab Nuova sc&heda New Tab Nuova scheda Ctrl+T Ctrl+T Go &Back Vai in&dietro Go Back Va indietro Alt+Left Alt+Sinistra Go &Forward Vai &avanti Go Forward Va avanti Alt+Right Alt+Destra Del Canc F2 F2 C&lose Tab C&hiudi scheda File &Properties &Proprietà file &Folder Properties Proprietà &cartella &Case Sensitive Distingui le maius&cole By File &Size Per dimen&sione del file &Close Window &Chiudi finestra &Folder &Cartella Ctrl+Shift+N Ctrl+Shift+N &Blank File File &vuoto Ctrl+Alt+N Ctrl+Alt+N &Find Files Trova &file F3 F3 Filter Filtro Filter by string... Filtra per stringa... C&reate New C&rea nuovo &Sorting &Ordinamento Main Toolbar Barra degli strumenti principale Ctrl+W Ctrl+W Alt+Return Alt+Invio Case Sensitive Distingui le maiuscole By File Size Per dimensione del file Close Window Chiudi finestra Edit Bookmarks Modifica segnalibri Open &Terminal Apri &terminale F4 F4 Open as &Root Apri come &root &Edit Bookmarks &Modifica segnalibri &File &File &Help A&iuto &View &Visualizza &Edit &Modifica &Bookmarks &Segnalibri &Go &Vai &Tool S&trumenti PCManFM::Application Name of configuration profile Nome del profilo di configurazione PROFILE PROFILO Run PCManFM as a daemon Esegui PCManFM come demone Quit PCManFM Esci da PCManFM Launch desktop manager Lancia il gestore della scrivania Turn off desktop manager if it's running Spegni il gestore della scrivania se è in esecuzione Open desktop preference dialog on the page with the specified name Apri le preferenze della scrivania alla pagina con il nome specificato NAME NOME Set desktop wallpaper from image FILE Imposta lo sfondo della scrivania con l'immagine dal FILE FILE FILE Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Imposta la modalità dello sfondo della scrivania. MODO=(color|stretch|fit|center|tile) MODE MODO Open Preferences dialog on the page with the specified name where is that? Apri le preferenze alla pagina con il nome specificato Open new window Apri una nuova finestra Open Find Files utility Apri l'utilità di ricerca file [FILE1, FILE2,...] [FILE1, FILE2, ...] Files or directories to open File o cartelle da aprire Error Errore Terminal emulator is not set. L'emulatore di terminale non è impostato. PCManFM::AutoRunDialog Open in file manager Apri nel gestore file Removable Disk Disco rimovibile PCManFM::DesktopPreferencesDialog Fill with background color only Riempi solo con il colore di sfondo Stretch to fill the entire screen Allarga per riempire tutto lo schermo Stretch to fit the screen Restringi per adattare allo schermo Center on the screen Centra nello schermo Tile the image to fill the entire screen Ripete l'immagine per riempire tutto lo schermo Image Files File immagine PCManFM::DesktopWindow Stic&k to Current Position Blo&cca alla posizione attuale Desktop Preferences Preferenze della scrivania PCManFM::MainWindow Clear text (Ctrl+K) Cancella il testo (Ctrl+K) Version: %1 Versione:%1 &Move to Trash Cestin&a &Delete &Elimina Error Errore Switch user command is not set. Il comando per cambiare utente non è impostato. PCManFM::PreferencesDialog Icon View Vista icone Compact Icon View Vista icone compatta Thumbnail View Vista miniature Detailed List View Vista elenco dettagliato PCManFM::TabPage Error Errore Free space: %1 (Total: %2) Spazio libero: %1 (totale: %2) %n item(s) %n elemento %n elementi (%n hidden)  (%n nascosto)  (%n nascosti) %1 item(s) selected %1 elementi selezionati PCManFM::View Open in New T&ab Apri in una nuova sc&heda Open in New Win&dow Apri una nuova &finestra Open in Termina&l Apri nel termina&le PreferencesDialog Preferences Preferenze User Interface Interfaccia utente Behavior Comportamento Thumbnail Miniatura Volume Volume Advanced Avanzate Icons Icone Size of big icons: Dimensione delle icone grandi: Size of small icons: Dimensione delle icone piccole: Size of thumbnails: Dimensione delle miniature: Size of side pane icons: Dimensione delle icone del riquadro laterale: Icon theme: Tema delle icone: Window Finestra Default width of new windows: Larghezza predefinita delle nuove finestre: Default height of new windows: Altezza predefinita delle nuove finestre: Always show the tab bar Mostra sempre la barra delle schede Show 'Close' buttons on tabs Mostra pulsanti di chiusura sulle schede Remember the size of the last closed window Ricorda la dimensione della ultima finestra chiusa Browsing Navigazione Open files with single click Apri file con un clic singolo Delay of auto-selection in single click mode (0 to disable) Ritardo per la selezione automatica in modalità con clic singolo (0 per disabilitare) Default view mode: Modalità vista predefinita: sec secondi File Operations Operazioni sui file Confirm before deleting files Conferma prima di rimuovere i file Move deleted files to "trash bin" instead of erasing from disk. Sposta nel «Cestino» i file rimossi invece di eliminarli dal disco. Show thumbnails of files Mostra miniature dei file Only show thumbnails for local files Mostra miniature solo per i file locali Display Schermo Bookmarks: Segnalibri: Open in current tab Apri nella scheda attuale Open in new tab Apri in una nuova scheda Open in new window Apri una nuova finestra Erase files on removable media instead of "trash can" creation Cancella i file sui supporti rimovibile invece di cestinarli Confirm before moving files into "trash can" Conferma prima di cestinare i file Don't ask options on launch executable file Non chiedere opzioni all'avvio dei file eseguibili User interface Interfaccia utente Treat backup files as hidden Tratta i file di backup come nascosti Always show full file names Mostra sempre il nome completo dei file Show icons of hidden files shadowed Mostra le icone dei file nascosti come ombreggiate Show in places Mostra in Risorse Home Home Desktop Scrivania Trash can Cestino Computer Computer Applications Applicazioni Devices Dispositivi Network Rete Do not generate thumbnails for image files exceeding this size: Non generare miniature per file immagine più grandi di: KB  KB Auto Mount Montaggio automatico Mount mountable volumes automatically on program startup Monta automaticamente i volumi disponibili all'avvio del programma Mount removable media automatically when they are inserted Monta automaticamente i volumi rimovibli quando vengono inseriti Show available options for removable media when they are inserted Mostra opzioni disponibili per i volumi rimovibli quando vengono inseriti When removable medium unmounted: Quando viene smontato un volume rimovibile: Close &tab containing removable medium Chiudi &scheda con il contenuto Chan&ge folder in the tab to home folder Cambia in cartella &home Switch &user command: Comando per &cambiare utente: Archiver in&tegration: Gestore &archivi da usare: Templates Modelli Show only user defined templates in menu Mostra solo i modelli definiti dall'utente nel menu Show only one template for each MIME type Mostra solo un modello per ogni tipo MIME Run default application after creation from template Esegui l'applicazione predefinita dopo la creazione da modello Programs Programmi Terminal emulator: Emulatore di terminale: Switch user command: Comando per cambiare utente: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Esempi: "xterm -e %s" per il terminale o "gksu %s" per cambiare utente. %s = la riga di comando da eseguire con il terminal o con su. Archiver integration: Integrazione con gli archivi: Use SI decimal prefixes instead of IEC binary prefixes Usa i prefissi decimali del SI invece di quelli binari dello IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_ja.ts000066400000000000000000001636331263124606600231050ustar00rootroot00000000000000 AboutDialog About 情報 <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager 軽量なファイルマネージャー <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee)  このプログラムはフリーソフトウェアです。 あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン2か、希望によっては それ以降のバージョンのうちどれか)の定める条件の下で 再頒布または改変することができます。  このプログラムは有用であることを願って頒布されますが、 *全くの無保証* です。 商業可能性の保証や特定の目的への適合性は、 言外に示されたものも含め全く存在しません。 詳しくはGNU 一般公衆利用許諾契約書をご覧ください。  あなたはこのプログラムとともに、 GNU 一般公衆利用許諾契約書の複製物を1部 受け取ったはずです。もし受け取っていなければ、 フリーソフトウェア財団まで請求してください。 (宛先は the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.) <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> プログラム作成: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors 作者 PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee)  このプログラムはフリーソフトウェアです。 あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン2か、希望によっては それ以降のバージョンのうちどれか)の定める条件の下で 再頒布または改変することができます。  このプログラムは有用であることを願って頒布されますが、 *全くの無保証* です。 商業可能性の保証や特定の目的への適合性は、 言外に示されたものも含め全く存在しません。 詳しくはGNU 一般公衆利用許諾契約書をご覧ください。  あなたはこのプログラムとともに、 GNU 一般公衆利用許諾契約書の複製物を1部 受け取ったはずです。もし受け取っていなければ、 フリーソフトウェア財団まで請求してください。 (宛先は the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.) License ライセンス AutoRunDialog Removable medium is inserted リムーバブルメディアが接続されました <b>Removable medium is inserted</b> <b>リムーバブルメディアが接続されました</b> Type of medium: メディアの種類: Detecting... 検出中... Please select the action you want to perform: 実行させる処理を選んでください DesktopFolder Form Desktop Desktop folder: Image file 画像ファイル Folder path &Browse 参照(&B) DesktopPreferencesDialog Desktop Preferences デスクトップの設定 Background 背景 Wallpaper mode: 壁紙のモード: Wallpaper image file: 壁紙の画像ファイル: Select background color: 背景色を選択: Image file 画像ファイル Image file path 画像ファイルのパス &Browse 参照(&B) Label Text ラベルテキスト Select text color: 文字色を選択 Select shadow color: 影の色を選択: Select font: フォントを選択 General 一般 Window Manager Show menus provided by window managers when desktop is clicked デスクトップのクリック時にウインドウマネージャーのメニューを表示 Advanced 高度 MainWindow File Manager ファイルマネージャー Go Up 上へ Alt+Up Alt+Up Home ホーム Alt+Home Alt+Home Reload 再読込み F5 F5 &Home &Reload 再読込み(&R) Go 開く Quit 終了 &About 情報(&A) New Window 新しいウインドウ Ctrl+N Ctrl+N Show &Hidden 隠しファイルを表示(&H) Ctrl+H Ctrl+H &Computer コンピューター(&C) &Trash ゴミ箱(&T) &Network ネットワーク(&N) &Desktop デスクトップ(&D) &Add to Bookmarks ブックマークに追加(&A) &Applications アプリケーション(&A) Ctrl+X Ctrl+X &Copy コピー(&C) Ctrl+C Ctrl+C &Paste 貼り付け(&P) Ctrl+V Ctrl+V Select &All すべてを選択(&A) Pr&eferences 設定(&R) &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection 選択を反転(&I) &Delete 削除(&D) &Rename 名前を変更(&R) &Case Sensitive By File &Size &Close Window Ctrl+A Ctrl+A Go &Up 上へ(&U) &New Window 新しいウインドウ(&N) &Icon View アイコン表示(&I) &Compact View コンパクト表示(&C) &Detailed List 詳細リスト(&D) &Thumbnail View サムネイル表示(&T) Cu&t 切り取り(&T) Ascending 昇順 Descending 降順 By File Name 名前 By Modification Time 更新日時 By File Type 種類 By Owner 所有者 Folder First フォルダを先に New &Tab 新しいタブ(&T) New Tab 新しいタブ Ctrl+T Ctrl+T Go &Back 戻る(&B) Go Back 戻る Alt+Left Alt+Left Go &Forward 進む(&F) Go Forward 進む Alt+Right Alt+Right Del Del F2 F2 C&lose Tab タブを閉じる(&C) File &Properties ファイルのプロパティー(&P) &Folder Properties フォルダーのプロパティー(&F) Ctrl+Shift+N Ctrl+Alt+N Filter C&reate New &Sorting ソート(&S) Main Toolbar メインツールバー Ctrl+W Ctrl+W Alt+Return Alt+Return Case Sensitive 大文字小文字を区別 By File Size サイズ Close Window ウインドウを閉じる Edit Bookmarks ブックマークを編集 Open &Terminal 端末で開く(&T) F4 F4 Open as &Root rootで開く(&R) &Edit Bookmarks ブックマークを編集 &Folder &Blank File &Find Files F3 F3 Filter by string... &File ファイル(&F) &Help ヘルプ(&H) &View 表示(&V) &Edit 編集(&E) &Bookmarks ブックマーク(&B) &Go 開く(&G) &Tool ツール(&T) PCManFM::Application Name of configuration profile 設定プロファイルの名前 PROFILE PROFILE Run PCManFM as a daemon PCManFMをデーモンとして実行 Quit PCManFM PCManFMを終了 Launch desktop manager デスクトップマネージャーを起動 Turn off desktop manager if it's running 実行中のデスクトップマネージャーを終了 Open desktop preference dialog on the page with the specified name 特定の名前のページ上でデスクトップ設定ダイアログを開く NAME NAME Set desktop wallpaper from image FILE 画像ファイルからデスクトップの壁紙を設定 FILE FILE Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) デスクトップの壁紙のモードを設定する。MODE=(color|stretch|fit|center|tile) MODE MODE Open Preferences dialog on the page with the specified name 特定の名前のページで設定ダイアログを開く Open new window 新しいウインドウを開く Open Find Files utility ファイル検索ユーティリティーを開く [FILE1, FILE2,...] [FILE1, FILE2,...] Files or directories to open 開くファイルまたはディレクトリー Error エラー Terminal emulator is not set. 端末エミュレーターを未設定です PCManFM::AutoRunDialog Open in file manager ファイルマネージャーで開く Removable Disk リムーバブルディスク PCManFM::DesktopPreferencesDialog Fill with background color only 背景色のみで埋める Stretch to fill the entire screen 画面全部に引き伸ばす Stretch to fit the screen 画面に合わせて調節 Center on the screen 画面の中央に表示 Tile the image to fill the entire screen 画面全体に並べる Image Files 画像ファイル PCManFM::DesktopWindow Stic&k to Current Position 現在の場所に固定 Desktop Preferences デスクトップ設定 PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 バージョン: %1 &Move to Trash ゴミ箱へ移動(&M) &Delete 削除(&D) Error エラー Switch user command is not set. ユーザー切替コマンドを未設定です Terminal emulator is not set. 端末エミュレーターを未設定です PCManFM::PreferencesDialog Icon View アイコン表示 Compact Icon View 小さなアイコン表示 Thumbnail View サムネイル表示 Detailed List View 詳細なリスト表示 PCManFM::TabPage Error エラー Free space: %1 (Total: %2) 空き領域: %1 (全体: %2) %n item(s) %n 個のアイテム (%n hidden) (%n 個の隠しアイテム) %1 item(s) selected %1 個のアイテムを選択 PCManFM::View Open in New T&ab 新しいタブを開く(&T) Open in New Win&dow 新しいウインドウを開く(&D) Open in Termina&l 端末内で開く(&L) PreferencesDialog Preferences 設定 User Interface ユーザーインターフェース Behavior 挙動 Display Thumbnail サムネイル Volume ボリューム Advanced 高度 Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file Icons アイコン Size of big icons: 大きいアイコンの大きさ: Size of small icons: 小さいアイコンの大きさ: Size of thumbnails: サムネイルの大きさ: Size of side pane icons: サイドペインのアイコンの大きさ Icon theme: アイコンテーマ: Window ウインドウ Default width of new windows: 新しいウインドウのデフォルト幅 Default height of new windows: 新しいウインドウのデフォルトの高さ Always show the tab bar タブバーを常に表示 Show 'Close' buttons on tabs 閉じるボタンをタブに表示 Remember the size of the last closed window 直前に閉じたウインドウのサイズを記憶 Browsing ブラウジング Open files with single click シングルクリックでファイルを開く Delay of auto-selection in single click mode (0 to disable) シングルクリックモードでの自動選択の遅延時間(0で無効) Default view mode: デフォルトの表示モード sec File Operations ファイル操作 Confirm before deleting files ファイルを削除する前に確認 Move deleted files to "trash bin" instead of erasing from disk. ディスクから削除せずに"ゴミ箱"へ入れる User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home ホーム Desktop Trash can Computer Applications Devices Network Show thumbnails of files ファイルのサムネイルを表示 Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Only show thumbnails for local files ローカルファイルのみサムネイル表示 Do not generate thumbnails for image files exceeding this size: 次のサイズを超える画像ファイルのサムネイルを生成しない: KB KB When removable medium unmounted: リムーバブルメディアもアンマウントする際に: Switch &user command: Archiver in&tegration: Close tab containing removable medium リムーバブルメディアを表示しているタブを閉じる Change folder in the tab to home folder そのタブのフォルダーをホームフォルダーに移動 Terminal emulator: 端末エミュレーター: Do not generate thumbnails for files exceeding this size (KB): 次のサイズ(KB)を超えるファイルのサムネイルを生成しない: Auto Mount 自動マウント Mount mountable volumes automatically on program startup プログラム開始時にマウント可能なボリュームをマウントする Mount removable media automatically when they are inserted リムーバブルメディアが接続された際に自動的にマウントする Show available options for removable media when they are inserted リムーバブルメディアが接続された際に、可能な処理を表示する Close &tab containing removable medium Chan&ge folder in the tab to home folder Programs プログラム Terminal emulator command for directories: ディレクトリーで実行する端末エミュレーターのコマンド Switch user command: ユーザーを切り替えるためのコマンド Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. 例: 端末に "xterm -e %s" 、ユーザー切替に "gksu %s" %s には、端末やsuで実行するコマンドが代入されます Archiver integration: アーカイバー連係: Terminal emulator command for programs: プログラムを実行する端末エミュレーターのコマンド: Use SI decimal prefixes instead of IEC binary prefixes IEC二進接頭辞の代わりに、SI十進接頭辞を用いる pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_lt_LT.ts000066400000000000000000001554241263124606600235300ustar00rootroot00000000000000 AboutDialog About Apie <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Lengva failų tvarkyklė <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programavo: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors Autoriai PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. License Licencija PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> AutoRunDialog Removable medium is inserted Įdėta išimama laikmena <b>Removable medium is inserted</b> <b>Įdėta išimama laikmena</b> Type of medium: Laikmenos tipas: Detecting... Aptinkama... Please select the action you want to perform: Pasirinkite veiksmą kurį norite atlikti: DesktopFolder Form Desktop Desktop folder: Image file Paveikslėlio failas Folder path &Browse &Naršyti DesktopPreferencesDialog Desktop Preferences Darbastalio nustatymai Background Fonas Wallpaper mode: Fono režimas: Wallpaper image file: Fono paveikslėlis: Select background color: Pasirinkite fono spalvą: Image file Paveikslėlio failas Image file path Paveikslėlio kelias &Browse &Naršyti Label Text Antraštė Select text color: Parinkite teksto spalvą: Select shadow color: Pasirinkite šešėlio spalvą: Select font: Pasirinkite šriftą: General Bendra Advanced Sudėtingesni Show menus provided by window managers when desktop is clicked Window Manager MainWindow File Manager Failų tvarkyklė Go Up Aukštyn Alt+Up Alt+Up Home Home (Namai) Alt+Home Alt+Home Reload Įkelti iš naujo F5 F5 &Home &Reload Į&kelti iš naujo Go Eiti Quit Išeiti &About &Apie New Window Naujas langas Ctrl+N Ctrl+N Show &Hidden Rodyti &paslėptus Ctrl+H Ctrl+H &Computer &Kompiuteris &Trash Š&iukšlinė &Network &Tinklas &Desktop &Darbastalis &Add to Bookmarks Į&dėti į žymeles &Applications &Programos Ctrl+X Ctrl+X &Copy &Kopijuoti Ctrl+C Ctrl+C &Paste Į&klijuoti Ctrl+V Ctrl+V Select &All Pažymėti &viską Pr&eferences &Nustatymai &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection Pasirinkti &atvirkščiai &Delete &Pašalinti &Rename &Pervadinti &Case Sensitive By File &Size &Close Window Ctrl+A Ctrl+A Go &Up &Aukštyn &New Window &Naujas langas &Icon View &Piktogramų rodinys &Compact View &Glaustas rodinys &Detailed List &Detalaus sąrašo vaizdas &Thumbnail View &Miniatiūrų rodinys Cu&t Iš&kirpti Ascending Didėjančiai Descending Mažėjančiai By File Name Pagal failo vardą By Modification Time Pagal keitimo datą By File Type Pagal failo tipą By Owner Pagal savininką Folder First Pirmiausia aplankai New &Tab Nauja &kortelė New Tab Nauja kortelė Ctrl+T Ctrl+T Go &Back &Atgal Go Back Atgal Alt+Left Alt+Left Go &Forward &Pirmyn Go Forward Pirmyn Alt+Right Alt+Right Del Del F2 F2 C&lose Tab &Užverti kortelę File &Properties Failo &savybės &Folder Properties Aplanko sa&vybės Ctrl+Shift+N Ctrl+Alt+N Filter C&reate New &Sorting &Rikiavimas Ctrl+W Ctrl+W Alt+Return Alt+Return Case Sensitive Skirti raidžių dydį By File Size Pagal failo dydį Close Window Užverti langą Edit Bookmarks Redaguoti žymeles Open &Terminal Atverti &terminalą F4 F4 Open as &Root Atverti &administratoriaus teisėmis &Edit Bookmarks &Redaguoti žymeles &Folder &Blank File &Find Files F3 F3 Filter by string... &File &Failas &Help Ž&inynas &View &Rodymas &Edit &Taisa &Bookmarks Ž&ymelės &Go &Eiti &Tool Į&rankiai Main Toolbar PCManFM::Application Name of configuration profile Konfigūracijos profilio pavadinimas PROFILE PROFILIS Run PCManFM as a daemon Paleisti PCManFM kaip demoną Quit PCManFM Užverti PCManFM Launch desktop manager Paleisti darbastalio tvarkyklę Turn off desktop manager if it's running Išjungti darbastalio tvarkyklę (jei ji veikia) Open desktop preference dialog on the page with the specified name Atverti nustatymų dialogą nurodytame puslapyje NAME PAVADINIMAS Set desktop wallpaper from image FILE Nustatyti darbastalio foną iš paveikslėlio FAILO FILE FAILAS Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Darbastalio fono režimas. REŽIMAS=(color|stretch|fit|center|tile) MODE REŽIMAS Open Preferences dialog on the page with the specified name Atverti nustatymų dialogą nurodytame puslapyje Open new window Atverti naują langą Open Find Files utility Atverti failų paieškos įrankį [FILE1, FILE2,...] [FAILAS1, FAILAS2,...] Error Klaida Terminal emulator is not set. Nenustatytas terminalo emuliatorius. Files or directories to open PCManFM::AutoRunDialog Open in file manager Atverti failų tvarkyklėje Removable Disk Išimamas diskas PCManFM::DesktopPreferencesDialog Fill with background color only Užpildyti tik fono spalva Stretch to fill the entire screen Ištempti per visą ekraną Stretch to fit the screen Sutalpinti ekrane Center on the screen Rodyti ekrano centre Tile the image to fill the entire screen Užpildyti ekraną paveikslėliais Image Files Paveikslėlių failai PCManFM::DesktopWindow Desktop Preferences Darbastalio nustatymai Stic&k to Current Position PCManFM::MainWindow Clear text (Ctrl+K) &Move to Trash &Perkelti į šiukšliadėžę &Delete &Pašalinti Error Klaida Switch user command is not set. Nenustatyta naudotojo perjungimo komanda. Terminal emulator is not set. Nenustatytas terminalo emuliatorius. Version: %1 PCManFM::PreferencesDialog Icon View Piktogramų peržiūra Compact Icon View Kompaktiškas piktogramų rodinys Thumbnail View Miniatiūrų rodinys Detailed List View Išsamus sąrašas PCManFM::TabPage Free space: %1 (Total: %2) Laisvos vietos: %1 (Iš viso: %2 ) %n item(s) %n elementas(-ai) (%n hidden) (%n paslėptas) Error Klaida %1 item(s) selected PCManFM::View Open in New T&ab Open in New Win&dow Open in Termina&l PreferencesDialog Preferences Nustatymai User Interface Naudotojo sąsaja Behavior Elgsena Display Thumbnail Miniatiūra Volume Tomas Advanced Papildomi Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file Icons Piktogramos Size of big icons: Didelių piktogramų dydis: Size of small icons: Mažų piktogramų dydis: Size of thumbnails: Miniatiūrų dydis: Size of side pane icons: Šoninio skydelio piktogramų dydis: Icon theme: Piktogramų tema: Window Langas Default width of new windows: Numatytasis naujų langų plotis: Default height of new windows: Numatytasis naujų langų aukštis: Always show the tab bar Visada rodyti kortelių juostą Show 'Close' buttons on tabs Ant kortelių rodyti uždarymo mygtukus Browsing Naršymas Open files with single click Atverti failus vienu mygtuko paspaudimu Default view mode: Numatytas rodinys: File Operations Failų operacijos Confirm before deleting files Patvirtinti prieš ištrinant failus Move deleted files to "trash bin" instead of erasing from disk. Ištrintus failus perkelti į šiukšlinę, o ne ištrinti iš disko. Show thumbnails of files Rodyti failų miniatiūras Only show thumbnails for local files Miniatiūras rodyti tik vietiniams failams Do not generate thumbnails for files exceeding this size (KB): Negeneruoti miniatiūrų, jei failas didesnis nei (KB): Auto Mount Automatinis prijungimas Mount mountable volumes automatically on program startup Paleidžiant programą automatiškai prijungti prijungiamus tomus Mount removable media automatically when they are inserted Prijungti išimamas laikmenas automatiškai jas įdėjus Show available options for removable media when they are inserted Prijungus išimamą laikmeną rodyti galimus veiksmus Programs Programos Terminal emulator command for directories: Terminalo emuliatoriaus komanda aplankams: Switch user command: Naudotojo perjungimo komanda: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Pavyzdys: „xterm -e %s“ terminalui ar „gksu %s“ naudotojo perjungimui. %s = komandinė eilutė, kurią jūs norite vykdyti kartu su terminalu arba „su“. Archiver integration: Archyvatoriaus integracija: Terminal emulator command for programs: Terminalo emuliatoriaus komanda programoms: Use SI decimal prefixes instead of IEC binary prefixes Naudoti SI dešimtainius matmenis vietoj IEC dvejetainių matmenų Do not generate thumbnails for image files exceeding this size: KB Terminal emulator: When removable medium unmounted: Delay of auto-selection in single click mode (0 to disable) sec User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Remember the size of the last closed window Show in places Home Home (Namai) Desktop Trash can Computer Applications Devices Network Close &tab containing removable medium Chan&ge folder in the tab to home folder Switch &user command: Archiver in&tegration: Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_pl.desktop000066400000000000000000000002201263124606600241270ustar00rootroot00000000000000#Translations Name[pl]=Menedżer plików PCManFM GenericName[pl]=Menedżer plików Comment[pl]=Przegląd systemu plików i zarządzanie plikami pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_pl.ts000066400000000000000000001611441263124606600231210ustar00rootroot00000000000000 AboutDialog About O programie <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Lekki menedżer plików PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Programowanie: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Authors Autorzy License Licencja AutoRunDialog Removable medium is inserted Wykryto nośnik wymienny <b>Removable medium is inserted</b> <b>Wykryto nośnik wymienny</b> Type of medium: Typ nośnika: Detecting... Wykrywanie... Please select the action you want to perform: Wybierz działanie, które chcesz wykonać: DesktopFolder Form Desktop Pulpit Desktop folder: Katalog Pulpitu: Image file Plik obrazka Folder path Ścieżka katalogu &Browse &Wybierz DesktopPreferencesDialog Desktop Preferences Ustawienia pulpitu Background Tło Wallpaper mode: Tryb: Wallpaper image file: Obraz tła: Select background color: Kolor tła: Image file Plik obrazka Image file path Ścieżka obrazka &Browse &Wybierz Label Text Tekst Select text color: Kolor tekstu: Select shadow color: Kolor cienia: Select font: Czcionka: General Wygląd Window Manager Menedżer Okien Show menus provided by window managers when desktop is clicked Wyświetlanie menu menedżera okien po kliknięciu na pulpicie Desktop Pulpit Desktop folder: Katalog Pulpitu: Folder path Ścieżka katalogu Advanced Zaawansowane FindFilesDialog Find Files Znajdź pliki Name/Location Nazwa/Lokalizacja File name patterns Wzorce nazwy pliku Pattern: Wzorzec: Case insensitive Ignoruj wielkość liter Use regular expression Użyj wyrażeń regularnych Places to search Szukaj w Add Dodaj Remove Usuń Search in sub directories Szukaj w podkatalogach Search hidden files Szukaj wśród ukrytych plików File Type Typ pliku Only search for files of following types: Szukaj tylko plików o podanym typie: Text files Pliki tekstowe Image files Obrazy Audio files Pliki dźwiękowe Video files Pliki wideo Documents Dokumenty Content Zawartość File contains Pliki zawierające Properties Ustawienia File Size Rozmiar pliku Bigger than: Większy niż: Smaller than: Mniejszy niż: Last Modified Time Czas ostatniej modyfikacji Earlier than: Wcześniejszy niż: Later than: Późniejszy niż: MainWindow File Manager Menedżer plików Go Up Katalog nadrzędny Alt+Up Alt+Góra Home Katalog użytkownika Alt+Home Alt+Home Reload Odśwież F5 F5 &Home &Reload &Odśwież Go Przejdź Quit Zamknij &About &O programie New Window Nowe okno Ctrl+N Ctrl+N Show &Hidden Wyświetl &ukryte pliki Ctrl+H Ctrl+H &Computer &Komputer &Trash Ko&sz &Network &Sieć &Desktop &Pulpit &Add to Bookmarks &Dodaj zakładkę &Applications P&rogramy Ctrl+X Ctrl+X &Copy &Kopiuj Ctrl+C Ctrl+C &Paste &Wklej Ctrl+V Ctrl+V Select &All Zazn&acz wszystko Pr&eferences Pr&eferencje &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection &Odwróć zaznaczenie &Delete &Usuń &Rename &Zmień nazwę &Case Sensitive By File &Size &Close Window Ctrl+A Ctrl+A Go &Up Do &góry &New Window &Nowe okno &Icon View &Ikony &Compact View Lista &zwarta &Detailed List Lista &szczegółowa &Thumbnail View &Miniatury Cu&t W&ytnij Ascending Rosnąco Descending Malejąco By File Name Według nazwy By Modification Time Według czasu modyfikacji By File Type Według typu By Owner Według właściciela Folder First Najpierw katalogi New &Tab Nowa &karta New Tab Nowa karta Ctrl+T Ctrl+T Go &Back &Poprzedni katalog Go Back Poprzedni katalog Alt+Left Alt+Lewo Go &Forward &Następny katalog Go Forward Następny katalog Alt+Right Alt+Prawo Del Del F2 F2 C&lose Tab &Zamknij kartę File &Properties Właściwości &pliku &Folder Properties Właściwości &katalogu Folder Katalog Ctrl+Shift+N Ctrl+Shift+N Blank File Pusty plik Ctrl+Alt+N Ctrl+Alt+N C&reate New &Nowy &Sorting &Sortowanie Main Toolbar Pasek narzędziowy Ctrl+W Ctrl+W Alt+Return Alt+Return Case Sensitive Uwzględniaj wielkość liter By File Size Według rozmiaru Close Window Zamknij okno Edit Bookmarks Edytuj zakładki Open &Terminal Otwórz w &terminalu F4 F4 Open as &Root Otwórz jako &Root &Edit Bookmarks Edytuj &Zakładki &Folder &Blank File &Find Files F3 F3 Filter Filter by string... &File &Plik &Help Po&moc &View &Widok &Edit &Edycja &Bookmarks &Zakładki &Go P&rzejdź &Tool &Narzędzia PCManFM::Application Name of configuration profile Nazwa profilu konfiguracji PROFILE PROFIL Run PCManFM as a daemon Uruchom PCManFM jako daemon Quit PCManFM Zakończ PCManFM Launch desktop manager Uruchom menedżera pulpitu Turn off desktop manager if it's running Wyłądż menedżera pulpitu jeżeli jest uruchomiony Open desktop preference dialog on the page with the specified name NAME NAZWA Open new window Otwórz nowe okno Open Find Files utility Set desktop wallpaper from image FILE Ustaw tło pulpitu z obrazka PLIK FILE PLIK Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Ustaw tryb tapety pulpitu. TRYB=(color|stretch|fit|center|tile) MODE TRYB Open Preferences dialog on the page with the specified name Files or directories to open Pliki lub katalogi do otwarcia [FILE1, FILE2,...] [PLIK1, PLIK2,...] Error Błąd Terminal emulator is not set. Nie ustawiono emulatora terminala. PCManFM::AutoRunDialog Open in file manager Otwórz w menedżerze plików Removable Disk Nośnik wymienny PCManFM::DesktopPreferencesDialog Fill with background color only Wypełnij tylko kolorem Stretch to fill the entire screen Rozciągnij do rozmiaru ekranu Stretch to fit the screen Dopasuj do rozmiaru ekranu Center on the screen Wyśrodkuj Tile the image to fill the entire screen Sąsiadująco Image Files Pliki obrazków PCManFM::DesktopWindow Stic&k to Current Position Przyp&nij do aktualnej pozycji Desktop Preferences Ustawienia pulpitu PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 Wersja: %1 &Move to Trash &Przenieś do kosza &Delete &Usuń Error Błąd Switch user command is not set. Nie ustawiono polecenia do przełączania użytkowników. PCManFM::PreferencesDialog Icon View Ikony Compact Icon View Lista zwarta Thumbnail View Miniatury Detailed List View Lista szczegółowa PCManFM::TabPage Error Błąd Free space: %1 (Total: %2) Wolna przestrzeń: %1 (całkowita: %2) %n item(s) %n elementów (%n hidden) (%n ukrytych) %1 item(s) selected Zaznaczono %1 elementy PCManFM::View Open in New T&ab Otwórz w nowej &karcie Open in New Win&dow Otwórz w nowym &oknie Open in Termina&l Otwórz w &terminalu PreferencesDialog Preferences Preferencje User Interface Wyświetlanie Behavior Zachowanie Thumbnail Miniatury Volume Wolumen Advanced Zaawansowane Icons Ikony Size of big icons: Rozmiar dużych ikon: Size of small icons: Rozmiar małych ikon: Size of thumbnails: Rozmiar miniatur: Size of side pane icons: Rozmiar ikon panelu bocznego: Icon theme: Motyw ikon: Window Okno Default width of new windows: Domyślna szerokość nowych okien: Default height of new windows: Domyślna wysokość nowych okien: Always show the tab bar Zawsze pokazuj pasek kart Show 'Close' buttons on tabs Pokaż przycisk 'Zamknij' na kartach Remember the size of the last closed window Pamiętaj rozmiar ostatnio zamkniętego okna Browsing Przeglądanie Open files with single click Otwórz pliki pojedynczym kliknięciem Delay of auto-selection in single click mode (0 to disable) Opóźnienie zaznaczania (0 aby wyłączyć) Default view mode: Domyślny tryb widoku: sec s File Operations Operacje na plikach Confirm before deleting files Potwierdź przed usunięciem plików Move deleted files to "trash bin" instead of erasing from disk. Przenoszenie plików do "Kosza" zamiast usuwania z dysku Show thumbnails of files Wyświetl miniatury zawartości plików Only show thumbnails for local files Wyświetl miniatury zawartości tylko lokalnych plików Display Bookmarks: Zakładki: Open in current tab Otwórz w aktualnej zakładce Open in new tab Otwórz w nowej zakładce Open in new window Otwórz w nowym oknie Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Potwierdź przed przeniesieniem plików do "Kosza" Don't ask options on launch executable file User interface Wyświetlanie Treat backup files as hidden Always show full file names Zawsze wyświetlaj pełne nazwy plików Show icons of hidden files shadowed Show in places Home Katalog użytkownika Desktop Pulpit Trash can Kosz Computer Komputer Applications Aplikacje Devices Urządzenia Network Sieć Do not generate thumbnails for image files exceeding this size: Nie generuj miniatur dla plików większych niż: KB KB Auto Mount Automatyczne montowanie Mount mountable volumes automatically on program startup Montowanie wolumenów podczas uruchamiania programu Mount removable media automatically when they are inserted Montowanie nośników wymiennych po wsunięciu Show available options for removable media when they are inserted Wyświetlanie możliwych czynności po wsunięciu nośnika wymiennego When removable medium unmounted: Działania po odmontowaniu nośnika wymiennego: Close &tab containing removable medium Zamknij zakładkę nośnika wymiennego Chan&ge folder in the tab to home folder Zmień katalog w zakładce na katalog użytkownika Switch &user command: Archiver in&tegration: Menedżer archiwów Templates Szablony Show only user defined templates in menu Show only one template for each MIME type Pokazuj tylko jeden szablon dla każdego typu MIME Run default application after creation from template Close tab containing removable medium Zamknięcie karty Change folder in the tab to home folder Przejście do katalogu użytkownika Programs Programy Terminal emulator: Emulator terminala: Switch user command: Przełączanie użytkowników: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Przykład: "xterm -e %s" dla terminala lub "gksu %s" dla przełączania użytkownika. %s = polecenie, które chcesz wykonać za pomocą terminala lub su. Archiver integration: Menedżer archiwów: Use SI decimal prefixes instead of IEC binary prefixes Używanie dziesiętnych prefiksów SI zamiast binarnych IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_pt.desktop000066400000000000000000000002461263124606600241470ustar00rootroot00000000000000#Translations Name[pt]=Gestor de ficheiros PCManFM GenericName[pt]=Gestor de ficheiros Comment[pt]=Explorar o sistema de ficheiros e gerir os seus ficheiros e pastas pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_pt.ts000066400000000000000000001615751263124606600231410ustar00rootroot00000000000000 AboutDialog About Sobre <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Gestor de ficheiros <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Gestor de ficheiros PCMan Direitos de autor (C) 2009 - 2015 洪任諭 (Hong Jen Yee) Esta aplicação é um programa livre. Pode distribuir e/ou modificar a aplicação nos termos da GNU General Public License, conforme pubilcada pela Free Software Foundation; tanto na sua versão 2 ou, por opção, qualquer versão mais recente. Este programa é disponibilizado na expetativa de ser útil. mas não possui qualquer garantia. Nem mesmo a garantia implícita de comercialização ou adaptação a algum caso em concreto. Consulte a GNU General Public License para mais detalhes. Deve ter recebido uma cópia da GNU General Public License com o programa Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> <html><head/><body><p><a href="http://pcmanfm.sourceforge.net/"><span style=" text-decoration: underline; color:#0000ff;">http://pcmanfm.sourceforge.net/</span></a></p></body></html> Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Desenvolvido por: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Authors Autores PCMan File Manager Copyright (C) 2009 - 2013 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Gestor de ficheiros PCMan Direitos de autor (C) 2009 - 2015 洪任諭 (Hong Jen Yee) Esta aplicação é um programa livre. Pode distribuir e/ou modifcar a aplicação segundo os termos da GNU General Public License, conforme pubilcada pela Free Software Foundation; tanto na sua versão 2 ou, por opção, qualquer versão mais recente. Este programa é disponibilizado na expetativa de ser útil. mas não possui qualquer garantia. Nem mesmo a garantia implícita de comercialização ou adaptação a algum caso em concreto. Consulte a GNU General Public License para mais detalhes. Deve ter recebido uma cópia da GNU General Public License com o programa Se tal facto não ocorreu, escreva para a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. License Licença AutoRunDialog Removable medium is inserted Disco amovível inserido <b>Removable medium is inserted</b> <b>Disco amovível inserido</b> Type of medium: Tipo de disco: Detecting... A detetar... Please select the action you want to perform: Escolha a ação que pretende executar: DesktopFolder Form Desktop Área de trabalho Desktop folder: Pasta da área de trabalho: Image file Ficheiro de imagem Folder path Caminho da pasta &Browse E&xplorar DesktopPreferencesDialog Desktop Preferences Preferências da área de trabalho Background Fundo Wallpaper mode: Modo de papel de parede: Wallpaper image file: Ficheiro do papel de parede: Select background color: Escolha a cor de fundo: Image file Ficheiro de imagem Image file path Caminho do ficheiro de imagem &Browse E&xplorar Label Text Texto Select text color: Escolha a cor do texto: Select shadow color: Escolha a cor da sombra: Select font: Escolha o tipo de letra: General Geral Window Manager Gestor de janelas Show menus provided by window managers when desktop is clicked Mostrar menus disponibilizados pelo gestor de janelas ao clicar na área de trabalho Desktop Área de trabalho Desktop folder: Pasta da área de trabalho: Folder path Caminho da pasta Advanced Avançado MainWindow File Manager Gestor de ficheiros Go Up Subir Alt+Up Alt+Up Home Pasta pessoal Alt+Home Alt+Home Reload Recarregar F5 F5 &Home &Reload &Recarregar Go Ir Quit Sair &About &Sobre New Window Nova janela Ctrl+N Ctrl+N Show &Hidden Mostrar &ocultos Ctrl+H Ctrl+H &Computer &Computador &Trash &Lixo &Network &Rede &Desktop Área &de trabalho &Add to Bookmarks &Adicionar aos marcadores &Applications &Aplicações Ctrl+X Ctrl+X &Copy &Copiar Ctrl+C Ctrl+C &Paste Co&lar Ctrl+V Ctrl+V Select &All Selecion&ar tudo Pr&eferences Pr&eferências &Ascending &Descending &By File Name By &Modification Time By File &Type By &Owner &Folder First &Invert Selection &Inverter seleção &Delete E&liminar &Rename Muda&r nome &Case Sensitive By File &Size &Close Window Ctrl+A Ctrl+A Go &Up S&ubir &New Window &Nova janela &Icon View V&ista de ícones &Compact View Vista &compacta &Detailed List Lista &detalhada &Thumbnail View Vista de minia&turas Cu&t Cor&tar Ascending Ascendente Descending Descendente By File Name Por nome de ficheiro By Modification Time Por data de modificação By File Type Por tipo de ficheiro By Owner Por dono Folder First Pastas no início New &Tab Novo &separador New Tab Novo separador Ctrl+T Ctrl+T Go &Back &Recuar Go Back Recuar Alt+Left Alt+Left Go &Forward &Avançar Go Forward Avançar Alt+Right Alt+Right Del Del F2 F2 C&lose Tab &Fechar separador File &Properties &Propriedades do ficheiro &Folder Properties Propried&ades da pasta Ctrl+Shift+N Ctrl+Alt+N Filter C&reate New &Sorting &Ordenação Main Toolbar Barra principal Ctrl+W Ctrl+W Alt+Return Alt+Return Case Sensitive Diferenciar maiúsculas/minúsculas By File Size Por tamanho de ficheiro Close Window Fechar janela Edit Bookmarks Editar marcadores Open &Terminal Abrir &terminal F4 F4 Open as &Root Abrir como &root &Edit Bookmarks &Editar marcadores &Folder &Blank File &Find Files F3 F3 Filter by string... &File &Ficheiro &Help Aj&uda &View &Ver &Edit &Editar &Bookmarks &Marcadores &Go &Ir &Tool Ferramen&tas PCManFM::Application Name of configuration profile Nome do perfil PROFILE Perfil Run PCManFM as a daemon Executar PCManFM como serviço Quit PCManFM Fechar PCManFM Launch desktop manager Abrir gestor da área de trabalho Turn off desktop manager if it's running Fechar gestor da área de trabalho se estiver em execução Open desktop preference dialog on the page with the specified name Abrir diálogo de preferências da área de trabalho na página especificada NAME Nome Set desktop wallpaper from image FILE Definir papel de parede com base num ficheiro FILE Ficheiro Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Definir modo do papel de parede. Modo =(color|stretch|fit|center|tile) MODE Modo Open Preferences dialog on the page with the specified name Abrir diálogo de preferências na página especificada Open new window Abrir nova janela Open Find Files utility Abrir utilitário de procura de ficheiros [FILE1, FILE2,...] [Ficheiro1, ficheiro2,...] Files or directories to open Ficheiros ou diretórios a abrir Error Erro Terminal emulator is not set. O emulador de terminal não está definido. PCManFM::AutoRunDialog Open in file manager Abrir no gestor de ficheiros Removable Disk Disco amovível PCManFM::DesktopPreferencesDialog Fill with background color only Preencher apenas com a cor de fundo Stretch to fill the entire screen Esticar para preencher o ecrã Stretch to fit the screen Esticar para ajustar ao ecrã Center on the screen Centrar no ecrã Tile the image to fill the entire screen Imagens em mosaico para preencher o ecrã Image Files Ficheiros de imagem PCManFM::DesktopWindow Stic&k to Current Position Fi&xar na posiçao atual Desktop Preferences Preferências da área de trabalho PCManFM::MainWindow Clear text (Ctrl+K) Version: %1 Versão: %1 &Move to Trash &Mover para o lixo &Delete &Eliminar Error Erro Switch user command is not set. O comando para trocar de utilizador não está definido. Terminal emulator is not set. O emulador de terminal não está definido. PCManFM::PreferencesDialog Icon View Vista de ícones Compact Icon View Vista compacta de ícones Thumbnail View Vista de miniaturas Detailed List View Lista detalhada PCManFM::TabPage Error Erro Free space: %1 (Total: %2) Espaço livre: %1 (Total: %2) %n item(s) %n item %n itens (%n hidden) (%n oculto) (%n ocultos) %1 item(s) selected %1 itens selecionados PCManFM::View Open in New T&ab Abrir em novo sep&arador Open in New Win&dow Abrir em &nova janela Open in Termina&l Abrir no termina&l PreferencesDialog Preferences Preferências User Interface Interface Behavior Comportamento Display Thumbnail Miniaturas Volume Volume Advanced Avançado Bookmarks: Open in current tab Open in new tab Open in new window Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file Icons Ícones Size of big icons: Tamanho dos ícones grandes: Size of small icons: Tamanho dos ícones pequenos: Size of thumbnails: Tamanho das miniaturas: Size of side pane icons: Tamanho dos ícones no painel lateral: Icon theme: Tema de ícones: Window Janela Default width of new windows: Largura para as novas janelas: Default height of new windows: Altura para as novas janeas: Always show the tab bar Mostrar sempre barra de separadores Show 'Close' buttons on tabs Mostrar botão "Fechar" nos separadores Remember the size of the last closed window Memorizar tamanho da última janela fechada Browsing Navegação Open files with single click Abrir ficheiros com um clique Delay of auto-selection in single click mode (0 to disable) Atraso para seleçao automática no modo de um clique (0 para desativar) Default view mode: Modo de visualização: sec seg File Operations Operações de ficheiros Confirm before deleting files Confirmar antes de eliminar Move deleted files to "trash bin" instead of erasing from disk. Mover ficheiros para o lixo em vez de os eliminar do disco. User interface Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home Pasta pessoal Desktop Área de trabalho Trash can Computer Applications Devices Network Show thumbnails of files Mostrar miniaturas dos ficheiros Templates Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Only show thumbnails for local files Mostrar apenas para ficheiros locais Do not generate thumbnails for image files exceeding this size: Não gerar miniaturas para as imagens que excedam este tamanho: KB KB When removable medium unmounted: Ao desmontar um disco amovível: Switch &user command: Archiver in&tegration: Close tab containing removable medium Fechar o separador que contém o disco Change folder in the tab to home folder Mudar o separador para a pasta pessoal Terminal emulator: Emulador de terminal: Do not generate thumbnails for files exceeding this size (KB): Não gerar miniaturas para os ficheiros que excedam (KB): Auto Mount Montar automaticamente Mount mountable volumes automatically on program startup Montar discos amovíveis ao iniciar a aplicação Mount removable media automatically when they are inserted Montar discos amovíveis ao inserir Show available options for removable media when they are inserted Mostrar opções possíveis para os discos assim que forem inseridos Close &tab containing removable medium Chan&ge folder in the tab to home folder Programs Programas Terminal emulator command for directories: Comando do terminal para os diretórios: Switch user command: Comando para trocar de utilizador: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Exemplo: "xterm -e %s" para terminal ou "gksu %s" para trocar de utilizador. %s = a linha de comandos a executar no terminal ou com o comando su. Archiver integration: Integração de arquivadores: Terminal emulator command for programs: Comando do terminal para os programas: Use SI decimal prefixes instead of IEC binary prefixes Utilizar prefixos decimais SI em vez dos prefixos binários IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_ru.desktop000066400000000000000000000003361263124606600241520ustar00rootroot00000000000000#Translations Name[ru]=Диспетчер файлов PCManFM GenericName[ru]=Диспетчер файлов Comment[ru]=Просматривайте файловую систему и управляйте файламиpcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_ru.ts000066400000000000000000001654401263124606600231370ustar00rootroot00000000000000 AboutDialog About О программе <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Легковесный диспетчер файлов <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Authors Авторы Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Программирование: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> License Лицензия PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Файловый менеджер PCMan Авторское право (C) 2009 - 2014 洪任諭 (Hong Jen Yee) Эта программа является свободным программным обеспечением; вы можете распространять и/или модифицировать ее согласно условиям стандартной общественной лицензии GNU, опубликованной Фондом свободного ПО; либо версии 2 лицензии, либо (по вашему выбору) любой более поздней версии. Эта программа распространяется в надежде что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Смотрите Стандартную Общественную Лицензию GNU для большего количества деталей. Вы должны были получить копию Стандартной Общественной Лицензии GNU вместе с этой программой; если лицензии не было, напишите в Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Бостон, MA 02110-1301, США. AutoRunDialog Removable medium is inserted Вставлен съёмный носитель <b>Removable medium is inserted</b> <b>Вставлен съёмный носитель</b> Type of medium: Тип носителя: Detecting... Обнаружение... Please select the action you want to perform: Выберите действие, которое хотите совершить: DesktopFolder Form Desktop Рабочий стол Desktop folder: Папка рабочего стола: Image file Файл изображения Folder path Путь к папке &Browse &Обзор DesktopPreferencesDialog Desktop Preferences Настройки рабочего стола General Общие Background Фон Wallpaper mode: Режим обоев: Wallpaper image file: Файл изображения обоев: Select background color: Выбрать цвет фона: Image file Файл изображения Image file path Путь к файлу изображения &Browse &Обзор Label Text Текст ярлыков Select text color: Выбрать цвет текста: Select shadow color: Выбрать цвет тени: Select font: Выбрать шрифт: Window Manager Оконный менеджер Desktop Рабочий стол Desktop folder: Папка рабочего стола: Folder path Путь к папке Advanced Расширенные Show menus provided by window managers when desktop is clicked Показывать меню, предоставляемые оконными менеджерами по клику на рабочий стол FindFilesDialog Find Files Найnb файлы Name/Location Имя/расположение File name patterns Шаблоны имён файлов Pattern: Шаблон: Case insensitive Регистрочувствительный Use regular expression Использовать регулярные выражения Places to search Места поиска Add Добавить Remove Удалить Search in sub directories Искать в подпапках Search hidden files Искать скрытые файлы File Type Тип файла Only search for files of following types: Искать только следующие типы файлов: Text files Текстовые файлы Image files Файлы изображений Audio files Аудиофайлы Video files Видеофайлы Documents Документы Content Содержание File contains Содержание файла Properties Свойства File Size Размер файла Bigger than: Больше чем: Smaller than: Меньше чем: Last Modified Time Время последнего изменения Earlier than: Раньше чем: Later than: Позже чем: MainWindow File Manager Диспетчер файлов Ctrl+Shift+N Ctrl+Alt+N Filter Фильтр Filter by string... Фильтровать по строке... &File &Файл C&reate New С&оздать новое &Help &Справка &View &Вид &Sorting &Сортировка &Edit &Правка &Bookmarks &Закладки &Go &Перейти &Tool &Инструмент Main Toolbar Главная панель инструментов Go &Up Перейти &вверх Go Up Перейти вверх Alt+Up &Home &Домой Alt+Home &Reload &Обновить F5 Go Перейти Quit Выйти &About &О программе &New Window &Новое окно New Window Новое окно Ctrl+N Show &Hidden Показать &скрытые Ctrl+H &Computer &Компьютер &Trash &Корзина &Network &Сеть &Desktop &Рабочий стол &Add to Bookmarks &Добавить в закладки &Applications &Приложения Reload Обновить &Icon View Просмотр &значками &Compact View &Компактный просмотр &Detailed List Просмотр &подробным списком &Thumbnail View Просмотр &эскизами Cu&t &Вырезать Ctrl+X &Copy &Копировать Ctrl+C &Paste &Вставить Ctrl+V Select &All Выделить &всё Ctrl+A Pr&eferences &Настройки &Ascending По &возрастанию &Descending По &убыванию &By File Name &По имени файла By &Modification Time По времени &изменения By File &Type По &типу файла By &Owner По &владельцу &Folder First Сначала &папки &Case Sensitive &Регистрочувствительная By File &Size По &размеру файла &Close Window &Закрыть окно &Folder &Папка &Blank File &Пустой файл &Find Files &Найти файлы F3 Close &left tabs Закрыть вкладки &слева Close &right tabs Закрыть вкладки &справа Close &other tabs Закрыть &другие New &Tab Новая &вкладка New Tab Новая вкладка Ctrl+T Go &Back Перейти &назад Go Back Перейти назад Alt+Left Go &Forward Перейти &вперёд Go Forward Перейти вперёд Alt+Right &Invert Selection &Инвертировать выделение &Delete &Удалить Del &Rename &Переименовать F2 C&lose Tab &Закрыть вкладку Ctrl+W File &Properties &Свойства файла Alt+Return &Folder Properties &Свойства папки Edit Bookmarks Изменить закладки Open &Terminal Открыть &терминал F4 Open as &Root Открыть от имени &суперпользователя &Edit Bookmarks &Изменить закладки PCManFM::Application Name of configuration profile Имя профиля конфигурации PROFILE ПРОФИЛЬ Run PCManFM as a daemon Запустить PCManFM как демон Quit PCManFM Выйти из PCManFM Launch desktop manager Запустить менеджер рабочего стола Turn off desktop manager if it's running Отключить менеджер рабочего стола, если он запущен Open desktop preference dialog on the page with the specified name Открыть диалог настроек рабочего стола на странице с указанным именем NAME ИМЯ Set desktop wallpaper from image FILE Выбрать обои рабочего стола из ФАЙЛА изображения FILE ФАЙЛ Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Выбрать режим обоев рабочего стола. РЕЖИМ=(цвет|растянуть|вместить|по центру|черепицей) MODE РЕЖИМ Open Preferences dialog on the page with the specified name Открыть диалог настроек на странице с указанным именем Open new window Открыть новое окно Open Find Files utility Открыть утилиту поиска файлов [FILE1, FILE2,...] [ФАЙЛ1, ФАЙЛ2,...] Files or directories to open Файлы или папки для открытия Error Ошибка Terminal emulator is not set. Эмулятор терминала не указан. PCManFM::AutoRunDialog Open in file manager Открыть в диспетчере файлов Removable Disk Съёмный диск PCManFM::DesktopPreferencesDialog Fill with background color only Заполнить только цветом фона Stretch to fill the entire screen Растянуть по всему экрану Stretch to fit the screen Растянуть по размеру экрана Center on the screen По центру экрана Tile the image to fill the entire screen Плиточное заполнение всего экрана изображением Image Files Файлы изображений PCManFM::DesktopWindow Stic&k to Current Position &Прикрепить к текущему положению Desktop Preferences Настройки рабочего стола PCManFM::MainWindow Clear text (Ctrl+K) Стереть текст (Ctrl+K) Version: %1 Версия: %1 &Move to Trash &Переместить в корзину &Delete &Удалить Error Ошибка Switch user command is not set. Команда переключения пользователя не задана. PCManFM::PreferencesDialog Icon View Просмотр значками Compact Icon View Просмотр компактными значками Thumbnail View Просмотр эскизами Detailed List View Просмотр подробным списком PCManFM::TabPage Error Ошибка Free space: %1 (Total: %2) Свободное место: %1 (всего: %2) %n item(s) %n объект %n объекта %n объектов (%n hidden) (%n скрыт) (%n скрыто) (%n скрыто) %1 item(s) selected %1 объекта(ов) выделено PCManFM::View Open in New T&ab Открыть в новой &вкладке Open in New Win&dow Открыть в новом &окне Open in Termina&l Открыть в &терминале PreferencesDialog Preferences Настройки User Interface Интерфейс пользователя Behavior Поведение Thumbnail Эскизы Volume Том Advanced Расширенные Icons Значки Size of big icons: Размер больших значков: Size of small icons: Размер маленьких значков: Size of thumbnails: Размер значков: Size of side pane icons: Размер значков боковой панели: Icon theme: Тема значков: Window Окно Always show the tab bar Всегда показывать панель вкладок Show 'Close' buttons on tabs Показывать кнопку «Закрыть» на вкладках Remember the size of the last closed window Запоминать размер последнего закрытого окна Default width of new windows: Ширина новых окон по умолчанию: Default height of new windows: Высота новых окон по умолчанию: Browsing Просмотр Open files with single click Открывать файлы по одиночному щелчку мыши Delay of auto-selection in single click mode (0 to disable) Задержка автовыделения в режиме одиночного щелчка (0 для отключения) Default view mode: Режим просмотра по умолчанию: sec сек File Operations Операции с файлами Confirm before deleting files Подтверждение перед удалением файлов Move deleted files to "trash bin" instead of erasing from disk. Перемещать удалённые файлы в корзину вместо удаления их с диска. Show thumbnails of files Показывать эскизы файлов Only show thumbnails for local files Показывать эскизы только для локальных файлов Display Вид Bookmarks: Закладки: Open in current tab Открывать в текущей вкладке Open in new tab Открывать в новой вкладке Open in new window Открывать в новом окне Erase files on removable media instead of "trash can" creation Удалять файлы на съёмных носителях вместо создания «Корзины» Confirm before moving files into "trash can" Просить подтверждения перед удалением файлов в «Корзину» Don't ask options on launch executable file Не предлагать варианты запуска исполняемых файлов User interface Интерфейс пользователя Treat backup files as hidden Рассматривать резервные файлы как скрытые Always show full file names Всегда показывать полные имена файлов Show icons of hidden files shadowed Показывать значки скрытых файлов затенёнными Show in places Показвать в «Местах» Home Домой Desktop Рабочий стол Trash can Корзина Computer Компьютер Applications Приложения Devices Устройства Network Сеть Do not generate thumbnails for image files exceeding this size: Не создавать эскизы для файлов изображений больших чем: KB КБ Auto Mount Автоподключение Mount mountable volumes automatically on program startup Подключать съёмные тома автоматически при запуске программы Mount removable media automatically when they are inserted Подключать съёмные тома автоматически при их подключении Show available options for removable media when they are inserted Показывать доступные варианты для съёмных устройств при их вставлении When removable medium unmounted: При отключении съёмного устройства: Close &tab containing removable medium Закрыть &вкладку, отображающую содержимое съёмного носителя Chan&ge folder in the tab to home folder Изме&нить папку во вкладке на домашнюю Switch &user command: Команда смены &пользователя: Archiver in&tegration: Ин&теграция с архиваторами: Templates Шаблоны Show only user defined templates in menu Показывать только шаблоны, определённые пользователем, в меню Show only one template for each MIME type Показывать только один шаблон для каждого типа MIME Run default application after creation from template Запускать приложение по умолчанию после создания шаблона Programs Программы Terminal emulator: Эмулятор терминала: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Примеры: "xterm -e %s" для терминала или "gksu %s" для переключения пользователя. %s = командная строка,которую вы хотите выполнить с терминалом или su. Use SI decimal prefixes instead of IEC binary prefixes Использовать десятичные префиксы СИ вместо двоичных префиксов IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_ru_RU.desktop000066400000000000000000000003471263124606600245620ustar00rootroot00000000000000#Translations Name[ru_RU]=Диспетчер файлов PCManFM GenericName[ru_RU]=Диспетчер файлов Comment[ru_RU]=Просматривайте файловую систему и управляйте файламиpcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_ru_RU.ts000066400000000000000000001654431263124606600235500ustar00rootroot00000000000000 AboutDialog About О программе <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager Легковесный диспетчер файлов <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Authors Авторы Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> Программирование: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> License Лицензия PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Файловый менеджер PCMan Авторское право (C) 2009 - 2014 洪任諭 (Hong Jen Yee) Эта программа является свободным программным обеспечением; вы можете распространять и/или модифицировать ее согласно условиям стандартной общественной лицензии GNU, опубликованной Фондом свободного ПО; либо версии 2 лицензии, либо (по вашему выбору) любой более поздней версии. Эта программа распространяется в надежде что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Смотрите Стандартную Общественную Лицензию GNU для большего количества деталей. Вы должны были получить копию Стандартной Общественной Лицензии GNU вместе с этой программой; если лицензии не было, напишите в Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Бостон, MA 02110-1301, США. AutoRunDialog Removable medium is inserted Вставлен съёмный носитель <b>Removable medium is inserted</b> <b>Вставлен съёмный носитель</b> Type of medium: Тип носителя: Detecting... Обнаружение... Please select the action you want to perform: Выберите действие, которое хотите совершить: DesktopFolder Form Desktop Рабочий стол Desktop folder: Папка рабочего стола: Image file Файл изображения Folder path Путь к папке &Browse &Обзор DesktopPreferencesDialog Desktop Preferences Настройки рабочего стола General Общие Background Фон Wallpaper mode: Режим обоев: Wallpaper image file: Файл изображения обоев: Select background color: Выбрать цвет фона: Image file Файл изображения Image file path Путь к файлу изображения &Browse &Обзор Label Text Текст ярлыков Select text color: Выбрать цвет текста: Select shadow color: Выбрать цвет тени: Select font: Выбрать шрифт: Window Manager Оконный менеджер Desktop Рабочий стол Desktop folder: Папка рабочего стола: Folder path Путь к папке Advanced Расширенные Show menus provided by window managers when desktop is clicked Показывать меню, предоставляемые оконными менеджерами по клику на рабочий стол FindFilesDialog Find Files Найnb файлы Name/Location Имя/расположение File name patterns Шаблоны имён файлов Pattern: Шаблон: Case insensitive Регистрочувствительный Use regular expression Использовать регулярные выражения Places to search Места поиска Add Добавить Remove Удалить Search in sub directories Искать в подпапках Search hidden files Искать скрытые файлы File Type Тип файла Only search for files of following types: Искать только следующие типы файлов: Text files Текстовые файлы Image files Файлы изображений Audio files Аудиофайлы Video files Видеофайлы Documents Документы Content Содержание File contains Содержание файла Properties Свойства File Size Размер файла Bigger than: Больше чем: Smaller than: Меньше чем: Last Modified Time Время последнего изменения Earlier than: Раньше чем: Later than: Позже чем: MainWindow File Manager Диспетчер файлов Ctrl+Shift+N Ctrl+Alt+N Filter Фильтр Filter by string... Фильтровать по строке... &File &Файл C&reate New С&оздать новое &Help &Справка &View &Вид &Sorting &Сортировка &Edit &Правка &Bookmarks &Закладки &Go &Перейти &Tool &Инструмент Main Toolbar Главная панель инструментов Go &Up Перейти &вверх Go Up Перейти вверх Alt+Up &Home &Домой Alt+Home &Reload &Обновить F5 Go Перейти Quit Выйти &About &О программе &New Window &Новое окно New Window Новое окно Ctrl+N Show &Hidden Показать &скрытые Ctrl+H &Computer &Компьютер &Trash &Корзина &Network &Сеть &Desktop &Рабочий стол &Add to Bookmarks &Добавить в закладки &Applications &Приложения Reload Обновить &Icon View Просмотр &значками &Compact View &Компактный просмотр &Detailed List Просмотр &подробным списком &Thumbnail View Просмотр &эскизами Cu&t &Вырезать Ctrl+X &Copy &Копировать Ctrl+C &Paste &Вставить Ctrl+V Select &All Выделить &всё Ctrl+A Pr&eferences &Настройки &Ascending По &возрастанию &Descending По &убыванию &By File Name &По имени файла By &Modification Time По времени &изменения By File &Type По &типу файла By &Owner По &владельцу &Folder First Сначала &папки &Case Sensitive &Регистрочувствительная By File &Size По &размеру файла &Close Window &Закрыть окно &Folder &Папка &Blank File &Пустой файл &Find Files &Найти файлы F3 Close &left tabs Закрыть вкладки &слева Close &right tabs Закрыть вкладки &справа Close &other tabs Закрыть &другие New &Tab Новая &вкладка New Tab Новая вкладка Ctrl+T Go &Back Перейти &назад Go Back Перейти назад Alt+Left Go &Forward Перейти &вперёд Go Forward Перейти вперёд Alt+Right &Invert Selection &Инвертировать выделение &Delete &Удалить Del &Rename &Переименовать F2 C&lose Tab &Закрыть вкладку Ctrl+W File &Properties &Свойства файла Alt+Return &Folder Properties &Свойства папки Edit Bookmarks Изменить закладки Open &Terminal Открыть &терминал F4 Open as &Root Открыть от имени &суперпользователя &Edit Bookmarks &Изменить закладки PCManFM::Application Name of configuration profile Имя профиля конфигурации PROFILE ПРОФИЛЬ Run PCManFM as a daemon Запустить PCManFM как демон Quit PCManFM Выйти из PCManFM Launch desktop manager Запустить менеджер рабочего стола Turn off desktop manager if it's running Отключить менеджер рабочего стола, если он запущен Open desktop preference dialog on the page with the specified name Открыть диалог настроек рабочего стола на странице с указанным именем NAME ИМЯ Set desktop wallpaper from image FILE Выбрать обои рабочего стола из ФАЙЛА изображения FILE ФАЙЛ Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) Выбрать режим обоев рабочего стола. РЕЖИМ=(цвет|растянуть|вместить|по центру|черепицей) MODE РЕЖИМ Open Preferences dialog on the page with the specified name Открыть диалог настроек на странице с указанным именем Open new window Открыть новое окно Open Find Files utility Открыть утилиту поиска файлов [FILE1, FILE2,...] [ФАЙЛ1, ФАЙЛ2,...] Files or directories to open Файлы или папки для открытия Error Ошибка Terminal emulator is not set. Эмулятор терминала не указан. PCManFM::AutoRunDialog Open in file manager Открыть в диспетчере файлов Removable Disk Съёмный диск PCManFM::DesktopPreferencesDialog Fill with background color only Заполнить только цветом фона Stretch to fill the entire screen Растянуть по всему экрану Stretch to fit the screen Растянуть по размеру экрана Center on the screen По центру экрана Tile the image to fill the entire screen Плиточное заполнение всего экрана изображением Image Files Файлы изображений PCManFM::DesktopWindow Stic&k to Current Position &Прикрепить к текущему положению Desktop Preferences Настройки рабочего стола PCManFM::MainWindow Clear text (Ctrl+K) Стереть текст (Ctrl+K) Version: %1 Версия: %1 &Move to Trash &Переместить в корзину &Delete &Удалить Error Ошибка Switch user command is not set. Команда переключения пользователя не задана. PCManFM::PreferencesDialog Icon View Просмотр значками Compact Icon View Просмотр компактными значками Thumbnail View Просмотр эскизами Detailed List View Просмотр подробным списком PCManFM::TabPage Error Ошибка Free space: %1 (Total: %2) Свободное место: %1 (всего: %2) %n item(s) %n объект %n объекта %n объектов (%n hidden) (%n скрыт) (%n скрыто) (%n скрыто) %1 item(s) selected %1 объекта(ов) выделено PCManFM::View Open in New T&ab Открыть в новой &вкладке Open in New Win&dow Открыть в новом &окне Open in Termina&l Открыть в &терминале PreferencesDialog Preferences Настройки User Interface Интерфейс пользователя Behavior Поведение Thumbnail Эскизы Volume Том Advanced Расширенные Icons Значки Size of big icons: Размер больших значков: Size of small icons: Размер маленьких значков: Size of thumbnails: Размер значков: Size of side pane icons: Размер значков боковой панели: Icon theme: Тема значков: Window Окно Always show the tab bar Всегда показывать панель вкладок Show 'Close' buttons on tabs Показывать кнопку «Закрыть» на вкладках Remember the size of the last closed window Запоминать размер последнего закрытого окна Default width of new windows: Ширина новых окон по умолчанию: Default height of new windows: Высота новых окон по умолчанию: Browsing Просмотр Open files with single click Открывать файлы по одиночному щелчку мыши Delay of auto-selection in single click mode (0 to disable) Задержка автовыделения в режиме одиночного щелчка (0 для отключения) Default view mode: Режим просмотра по умолчанию: sec сек File Operations Операции с файлами Confirm before deleting files Подтверждение перед удалением файлов Move deleted files to "trash bin" instead of erasing from disk. Перемещать удалённые файлы в корзину вместо удаления их с диска. Show thumbnails of files Показывать эскизы файлов Only show thumbnails for local files Показывать эскизы только для локальных файлов Display Вид Bookmarks: Закладки: Open in current tab Открывать в текущей вкладке Open in new tab Открывать в новой вкладке Open in new window Открывать в новом окне Erase files on removable media instead of "trash can" creation Удалять файлы на съёмных носителях вместо создания «Корзины» Confirm before moving files into "trash can" Просить подтверждения перед удалением файлов в «Корзину» Don't ask options on launch executable file Не предлагать варианты запуска исполняемых файлов User interface Интерфейс пользователя Treat backup files as hidden Рассматривать резервные файлы как скрытые Always show full file names Всегда показывать полные имена файлов Show icons of hidden files shadowed Показывать значки скрытых файлов затенёнными Show in places Показвать в «Местах» Home Домой Desktop Рабочий стол Trash can Корзина Computer Компьютер Applications Приложения Devices Устройства Network Сеть Do not generate thumbnails for image files exceeding this size: Не создавать эскизы для файлов изображений больших чем: KB КБ Auto Mount Автоподключение Mount mountable volumes automatically on program startup Подключать съёмные тома автоматически при запуске программы Mount removable media automatically when they are inserted Подключать съёмные тома автоматически при их подключении Show available options for removable media when they are inserted Показывать доступные варианты для съёмных устройств при их вставлении When removable medium unmounted: При отключении съёмного устройства: Close &tab containing removable medium Закрыть &вкладку, отображающую содержимое съёмного носителя Chan&ge folder in the tab to home folder Изме&нить папку во вкладке на домашнюю Switch &user command: Команда смены &пользователя: Archiver in&tegration: Ин&теграция с архиваторами: Templates Шаблоны Show only user defined templates in menu Показывать только шаблоны, определённые пользователем, в меню Show only one template for each MIME type Показывать только один шаблон для каждого типа MIME Run default application after creation from template Запускать приложение по умолчанию после создания шаблона Programs Программы Terminal emulator: Эмулятор терминала: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. Примеры: "xterm -e %s" для терминала или "gksu %s" для переключения пользователя. %s = командная строка,которую вы хотите выполнить с терминалом или su. Use SI decimal prefixes instead of IEC binary prefixes Использовать десятичные префиксы СИ вместо двоичных префиксов IEC pcmanfm-qt-0.10.1/pcmanfm/translations/pcmanfm-qt_zh_TW.ts000066400000000000000000001530031263124606600235340ustar00rootroot00000000000000 AboutDialog About 關於 <html><head/><body><p><span style=" font-size:16pt; font-weight:600;">PCManFM</span></p></body></html> Lightweight file manager 輕量級檔案管理程式 PCMan File Manager Copyright (C) 2009 - 2014 洪任諭 (Hong Jen Yee) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Programming: * Hong Jen Yee (PCMan) <pcman.tw@gmail.com> <html><head/><body><p><a href="http://lxqt.org/"><span style=" text-decoration: underline; color:#0000ff;">http://lxqt.org/</span></a></p></body></html> Authors 作者 License 授權 AutoRunDialog Removable medium is inserted 插入可移除式裝置 <b>Removable medium is inserted</b> <b>插入可移除式裝置</b> Type of medium: 媒體種類: Detecting... 正在偵測... Please select the action you want to perform: 請選擇想要執行的動作: DesktopFolder Form Desktop 桌面 Desktop folder: 桌面資料夾: Image file 影像檔案 Folder path 資料夾路徑 &Browse 瀏覽(&B) DesktopPreferencesDialog Desktop Preferences 桌面偏好設定 Background 背景 Wallpaper mode: 桌布: Wallpaper image file: 桌布影像檔案: Select background color: 選擇背景顏色: Image file 影像檔案 Image file path 影像檔路徑 &Browse 瀏覽(&B) Label Text 標籤文字 Select text color: 選擇文字顏色: Select shadow color: 選擇陰影顏色: Select font: 選擇字型: General 一般 Window Manager 視窗管理員 Show menus provided by window managers when desktop is clicked 按下桌面時顯示視窗管理員提供的選單 Advanced 進階 MainWindow File Manager 檔案管理程式 Go Up 往上一層 Alt+Up Home 家目錄 Alt+Home Reload 重新讀取 F5 Go &Up 上一層(&U) &Home &Reload 重新讀取(&) Go Quit 離開 &About 關於(&A) &New Window 新視窗(&N) New Window 新視窗 Ctrl+N Show &Hidden 顯示隱藏檔(&H) Ctrl+H &Computer 電腦(&C) &Trash 垃圾桶(&T) &Network 網路(&N) &Desktop 桌面(&D) &Add to Bookmarks 加入到書籤(&A) &Applications 應用程式(&A) &Icon View 圖示檢視(&I) &Compact View 簡易檢視(&C) &Detailed List 詳細清單(&D) &Thumbnail View 縮圖檢視(&T) Cu&t 剪下(&T) &Ascending 升冪排列(&A) &Descending 降冪排列(&D) &By File Name By &Modification Time By File &Type By &Owner &Folder First C&lose Tab 關閉(&L) File &Properties 檔案屬性(&P) &Folder Properties 資料夾屬性(&F) &Case Sensitive By File &Size &Close Window Ctrl+Shift+N Ctrl+Alt+N Filter C&reate New &Sorting 排序(&S) Main Toolbar Icon View 圖示檢視 Compact View 簡易檢視 Detailed List 詳細清單 Thumbnail View 縮圖檢視 &Cut 剪下(&C) Ctrl+X &Copy 複製(&C) Ctrl+C &Paste 貼上(&P) Ctrl+V Select &All 全選(&A) Pr&eferences 偏好設定(&R) &Invert Selection 反向選取(&I) &Delete 刪除(&D) &Rename 重新命名(&R) Select All 全選 Ctrl+A Preferences 偏好設定 Ascending 升冪排列 Descending 降冪排列 By File Name 依照檔名 By Modification Time 依照修改時間 By File Type 依照檔案類型 By Owner 依照檔案擁有者 Folder First 資料夾優先 New &Tab 新分頁(&T) New Tab 新分頁 Ctrl+T Go &Back 後退(&B) Go Back 後退 Alt+Left Go &Forward 前進(&F) Go Forward 前進 Alt+Right Invert Selection 反向選取 Delete 刪除 Del Rename 重新命名 F2 Close Tab 關閉分頁 Ctrl+W File Properties 檔案屬性 Alt+Return Folder Properties 資料夾屬性 Case Sensitive 區分大小寫 By File Size 依照檔案大小 Close Window 關閉視窗 Edit Bookmarks 編輯書籤 Open &Terminal 開啟終端機(&T) F4 Open as &Root 以系統管理員權限開啟(&R) &Edit Bookmarks 編輯書籤(&E) &Folder &Blank File &Find Files F3 Filter by string... &File 檔案(&F) &Help 說明(&H) &View 檢視(&V) Sorting 排序 &Edit 編輯(&E) &Bookmarks 書籤(&B) &Go 前往(&G) &Tool 工具(&T) PCManFM::Application Name of configuration profile PROFILE Run PCManFM as a daemon Quit PCManFM Launch desktop manager Turn off desktop manager if it's running Open desktop preference dialog on the page with the specified name NAME Open new window Open Find Files utility Set desktop wallpaper from image FILE FILE Set mode of desktop wallpaper. MODE=(color|stretch|fit|center|tile) MODE Open Preferences dialog on the page with the specified name Files or directories to open [FILE1, FILE2,...] Error 錯誤 Terminal emulator is not set. 終端機模擬器尚未設定 PCManFM::AutoRunDialog Open in file manager 在檔案管理程式內開啟 Removable Disk 可移除式磁碟 PCManFM::DesktopPreferencesDialog Fill with background color only 只以背景色填滿 Stretch to fill the entire screen 延展以填滿整個螢幕 Stretch to fit the screen 延展到最適合螢幕大小 Center on the screen 置於螢幕中央 Tile the image to fill the entire screen 連續拼貼鋪滿整個螢幕 Image Files 影像檔案 PCManFM::DesktopWindow Stic&k to Current Position 保持在目前位置(&K) Desktop Preferences 桌面偏好設定 PCManFM::MainWindow Clear text (Ctrl+K) 清除文字(Ctrl+K) Version: %1 版本: %1 &Move to Trash 移動到垃圾桶(&M) &Delete 刪除(&D) Error 錯誤 Switch user command is not set. 切換使用者指令尚未設定 Terminal emulator is not set. 終端機模擬器尚未設定 PCManFM::PreferencesDialog Icon View 圖示檢視 Compact Icon View 簡易檢視 Thumbnail View 縮圖檢視 Detailed List View 詳細清單檢視 PCManFM::TabPage Error 錯誤 Free space: %1 (Total: %2) 可用空間 %1 (全部: %2) %n item(s) %n 個項目 (%n hidden) (%n 個隱藏) %1 item(s) selected 選取 %1 個項目 PCManFM::View Open in New T&ab 在新分頁開啟 (&A) Open in New Win&dow 在新視窗開啟 (&D) Open in Termina&l 在終端機內開啟 (&L) PreferencesDialog Preferences 偏好設定 User Interface 使用者界面 Behavior 行為 Display 顯示 Thumbnail 縮圖 Volume 磁碟 Advanced 進階 Bookmarks: 書籤: Open in current tab 在目前分頁開啟 Open in new tab 在新分頁開啟 Open in new window 在新視窗開啟 Erase files on removable media instead of "trash can" creation Confirm before moving files into "trash can" Don't ask options on launch executable file Icons 圖示 Size of big icons: 大圖示尺寸: Size of small icons: 小圖示尺寸: Size of thumbnails: 縮圖尺寸: Size of side pane icons: 側邊欄圖示尺寸: Icon theme: 圖示佈景主題: Window 視窗 Default width of new windows: 新視窗的預設寬度 Default height of new windows: 新視窗的預設高度 Always show the tab bar 總是顯示標籤列 Show 'Close' buttons on tabs 在分頁標籤上顯示「關閉」按鈕 Remember the size of the last closed window 記住最後關閉視窗的大小 Browsing 瀏覽 Open files with single click 單擊開啟檔案 Delay of auto-selection in single click mode (0 to disable) Default view mode: 預設檢視模式: sec File Operations 檔案操作 Confirm before deleting files 刪除檔案前確認 Move deleted files to "trash bin" instead of erasing from disk. 將檔案移動到垃圾桶,而不直接刪除 User interface 使用者界面 Treat backup files as hidden Always show full file names Show icons of hidden files shadowed Show in places Home 家目錄 Desktop 桌面 Trash can Computer 電腦 Applications Devices Network Show thumbnails of files 顯示檔案縮圖 Templates 模板 Show only user defined templates in menu Show only one template for each MIME type Run default application after creation from template Only show thumbnails for local files 只顯示本地檔案的縮圖 Do not generate thumbnails for image files exceeding this size: 不為超過指定大小的檔案產生縮圖: KB When removable medium unmounted: Switch &user command: 切換使用者的指令: Archiver in&tegration: 壓縮程式整合: Terminal emulator: 終端機模擬器: Do not generate thumbnails for files exceeding this size (KB): 不為超過指定大小的檔案產生縮圖 (KB) Auto Mount 自動掛載 Mount mountable volumes automatically on program startup 掛載可掛載的磁碟 Mount removable media automatically when they are inserted 可移除式媒體插入時自動掛載 Show available options for removable media when they are inserted 可移除式媒體插入時顯示可用的選項 Close &tab containing removable medium Chan&ge folder in the tab to home folder Programs 程式 Terminal emulator command for directories: 用來開啟目錄的終端機模擬器指令: Switch user command: 切換使用者的指令: Examples: "xterm -e %s" for terminal or "gksu %s" for switching user. %s = the command line you want to execute with terminal or su. 範例: 終端機指令可用 "xterm -e %s"而切換使用者指令可用 "gksu %s"。 %s = 想要用終端機或是切換使用者執行的指令。 Archiver integration: 壓縮程式整合: Terminal emulator command for programs: 用來執行程式的終端機模擬器指令: Use SI decimal prefixes instead of IEC binary prefixes pcmanfm-qt-0.10.1/pcmanfm/view.cpp000066400000000000000000000112541263124606600167440ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "view.h" #include #include #include "application.h" #include "settings.h" #include "application.h" #include "mainwindow.h" #include "launcher.h" #include namespace PCManFM { View::View(Fm::FolderView::ViewMode _mode, QWidget* parent): Fm::FolderView(_mode, parent) { Settings& settings = static_cast(qApp)->settings(); updateFromSettings(settings); } View::~View() { } void View::onFileClicked(int type, FmFileInfo* fileInfo) { if(type == MiddleClick) { if(fm_file_info_is_dir(fileInfo)) { Q_EMIT openDirRequested(fm_file_info_get_path(fileInfo), OpenInNewTab); } } else { Fm::FolderView::onFileClicked(type, fileInfo); } } void View::onNewWindow() { Fm::FileMenu* menu = static_cast(sender()->parent()); // FIXME: open the files in a new window Application* app = static_cast(qApp); app->openFolders(menu->files()); } void View::onNewTab() { Fm::FileMenu* menu = static_cast(sender()->parent()); for(GList* l = fm_file_info_list_peek_head_link(menu->files()); l; l = l->next) { FmFileInfo* file = FM_FILE_INFO(l->data); Q_EMIT openDirRequested(fm_file_info_get_path(file), OpenInNewTab); } } void View::onOpenInTerminal() { Application* app = static_cast(qApp); Fm::FileMenu* menu = static_cast(sender()->parent()); for(GList* l = fm_file_info_list_peek_head_link(menu->files()); l; l = l->next) { FmFileInfo* file = FM_FILE_INFO(l->data); app->openFolderInTerminal(fm_file_info_get_path(file)); } } void View::onSearch() { } void View::prepareFileMenu(Fm::FileMenu* menu) { Application* app = static_cast(qApp); menu->setConfirmDelete(app->settings().confirmDelete()); menu->setConfirmTrash(app->settings().confirmTrash()); menu->setUseTrash(app->settings().useTrash()); // add some more menu items for dirs bool all_native = true; bool all_directory = true; FmFileInfoList* files = menu->files(); for(GList* l = fm_file_info_list_peek_head_link(files); l; l = l->next) { FmFileInfo* fi = FM_FILE_INFO(l->data); if(!fm_file_info_is_dir(fi)) all_directory = false; else if(fm_file_info_is_dir(fi) && !fm_file_info_is_native(fi)) all_native = false; } if (all_directory) { QAction* action = new QAction(QIcon::fromTheme("window-new"), tr("Open in New T&ab"), menu); connect(action, &QAction::triggered, this, &View::onNewTab); menu->insertAction(menu->separator1(), action); action = new QAction(QIcon::fromTheme("window-new"), tr("Open in New Win&dow"), menu); connect(action, &QAction::triggered, this, &View::onNewWindow); menu->insertAction(menu->separator1(), action); // TODO: add search // action = menu->addAction(_("Search")); if(all_native) { action = new QAction(QIcon::fromTheme("utilities-terminal"), tr("Open in Termina&l"), menu); connect(action, &QAction::triggered, this, &View::onOpenInTerminal); menu->insertAction(menu->separator1(), action); } } else { menu->pasteAction()->setVisible(false); menu->createAction()->setVisible(false); } } void View::prepareFolderMenu(Fm::FolderMenu* menu) { } void View::updateFromSettings(Settings& settings) { setIconSize(Fm::FolderView::IconMode, QSize(settings.bigIconSize(), settings.bigIconSize())); setIconSize(Fm::FolderView::CompactMode, QSize(settings.smallIconSize(), settings.smallIconSize())); setIconSize(Fm::FolderView::ThumbnailMode, QSize(settings.thumbnailIconSize(), settings.thumbnailIconSize())); setIconSize(Fm::FolderView::DetailedListMode, QSize(settings.smallIconSize(), settings.smallIconSize())); setAutoSelectionDelay(settings.autoSelectionDelay()); Fm::ProxyFolderModel* proxyModel = model(); if(proxyModel) { proxyModel->setShowThumbnails(settings.showThumbnails()); } } } // namespace PCManFM pcmanfm-qt-0.10.1/pcmanfm/view.h000066400000000000000000000030671263124606600164140ustar00rootroot00000000000000/* Copyright (C) 2013 Hong Jen Yee (PCMan) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PCMANFM_FOLDERVIEW_H #define PCMANFM_FOLDERVIEW_H #include namespace Fm { class FileMenu; class FolderMenu; } namespace PCManFM { class Settings; class View : public Fm::FolderView { Q_OBJECT public: explicit View(Fm::FolderView::ViewMode _mode = IconMode, QWidget* parent = 0); virtual ~View(); void updateFromSettings(Settings& settings); Q_SIGNALS: void openDirRequested(FmPath* path, int target); protected Q_SLOTS: void onNewWindow(); void onNewTab(); void onOpenInTerminal(); void onSearch(); protected: virtual void onFileClicked(int type, FmFileInfo* fileInfo); virtual void prepareFileMenu(Fm::FileMenu* menu); virtual void prepareFolderMenu(Fm::FolderMenu* menu); private: }; }; #endif // PCMANFM_FOLDERVIEW_H pcmanfm-qt-0.10.1/pcmanfm/xdgdir.cpp000066400000000000000000000052431263124606600172540ustar00rootroot00000000000000/* * Copyright (C) 2013 Hong Jen Yee (PCMan) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "xdgdir.h" #include #include #include #include QString XdgDir::readUserDirsFile() { QFile file(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/user-dirs.dirs")); if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { QByteArray data = file.readAll(); file.close(); return QString::fromLocal8Bit(data); } return QString(); } QString XdgDir::readDesktopDir() { QString str = readUserDirsFile(); if(str.isEmpty()) return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + QStringLiteral("/Desktop"); QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\"")); if(reg.lastIndexIn(str) != -1) { str = reg.cap(1); if(str.startsWith(QStringLiteral("$HOME"))) str = QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + str.mid(5); return str; } return QString(); } void XdgDir::setDesktopDir(QString path) { QString home = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); if(path.startsWith(home)) path = QStringLiteral("$HOME") + path.mid(home.length()); QString str = readUserDirsFile(); QRegExp reg(QStringLiteral("XDG_DESKTOP_DIR=\"([^\n]*)\"")); QString line = QStringLiteral("XDG_DESKTOP_DIR=\"") + path + '\"'; if(reg.indexIn(str) != -1) str.replace(reg, line); else { if(!str.endsWith('\n')) str += '\n'; str += line + '\n'; } QString dir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); if(QDir().mkpath(dir)) { // write the file QSaveFile file(dir + QStringLiteral("/user-dirs.dirs")); if(file.open(QIODevice::WriteOnly | QIODevice::Text)) { file.write(str.toLocal8Bit()); file.commit(); } } } pcmanfm-qt-0.10.1/pcmanfm/xdgdir.h000066400000000000000000000020411263124606600167120ustar00rootroot00000000000000/* * Copyright (C) 2013 Hong Jen Yee (PCMan) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include class XdgDir : public QObject { Q_OBJECT public: static QString readDesktopDir(); static void setDesktopDir(QString path); private: static QString readUserDirsFile(); };