├── .gitignore ├── COPYING ├── ChangeLog ├── INSTALL ├── README ├── configure.bat ├── installer ├── build.bat ├── images │ ├── header.bmp │ └── wizard.bmp ├── include │ └── multiuser64.nsh ├── languages │ └── saladin_en.nsh ├── qt.conf └── saladin.nsi ├── saladin.pro ├── src ├── aboutbox.cpp ├── aboutbox.h ├── application.cpp ├── application.h ├── bookmark.cpp ├── bookmark.h ├── bookmark_p.h ├── bookmarksdialog.cpp ├── bookmarksdialog.h ├── drivestripmanager.cpp ├── drivestripmanager.h ├── findbar.cpp ├── findbar.h ├── folderitemdelegate.cpp ├── folderitemdelegate.h ├── folderitemmodel.cpp ├── folderitemmodel.h ├── folderitemview.cpp ├── folderitemview.h ├── guide │ ├── en │ │ ├── functions.html │ │ ├── index.html │ │ ├── lists.html │ │ ├── masks.html │ │ ├── regexps.html │ │ ├── shortcuts.html │ │ ├── tools.html │ │ ├── viewer.html │ │ └── wildcards.html │ ├── es │ │ ├── functions.html │ │ ├── index.html │ │ ├── lists.html │ │ ├── masks.html │ │ ├── regexps.html │ │ ├── shortcuts.html │ │ ├── tools.html │ │ ├── viewer.html │ │ └── wildcards.html │ ├── guide.qrc │ └── style.css ├── guidedialog.cpp ├── guidedialog.h ├── icons │ ├── about-16.png │ ├── arrow-down-16.png │ ├── arrow-hide-16.png │ ├── arrow-left-16.png │ ├── arrow-right-16.png │ ├── arrow-top-16.png │ ├── arrow-up-16.png │ ├── black-background-16.png │ ├── bookmark-16.png │ ├── bookmark-22.png │ ├── browse-16.png │ ├── browse-22.png │ ├── calculate-16.png │ ├── calculate-22.png │ ├── clone-16.png │ ├── clone-22.png │ ├── close-16.png │ ├── compare-16.png │ ├── compare-22.png │ ├── configure-16.png │ ├── configure-22.png │ ├── copy-16.png │ ├── copy-22.png │ ├── copy-names-16.png │ ├── dark │ │ ├── about-16.png │ │ ├── arrow-down-16.png │ │ ├── arrow-hide-16.png │ │ ├── arrow-left-16.png │ │ ├── arrow-right-16.png │ │ ├── arrow-top-16.png │ │ ├── arrow-up-16.png │ │ ├── black-background-16.png │ │ ├── bookmark-16.png │ │ ├── bookmark-22.png │ │ ├── browse-16.png │ │ ├── browse-22.png │ │ ├── calculate-16.png │ │ ├── calculate-22.png │ │ ├── clone-16.png │ │ ├── clone-22.png │ │ ├── close-16.png │ │ ├── compare-16.png │ │ ├── compare-22.png │ │ ├── configure-16.png │ │ ├── configure-22.png │ │ ├── copy-16.png │ │ ├── copy-22.png │ │ ├── copy-names-16.png │ │ ├── dark.qrc │ │ ├── delete-16.png │ │ ├── delete-22.png │ │ ├── edit-16.png │ │ ├── edit-22.png │ │ ├── edit-copy-16.png │ │ ├── edit-copy-22.png │ │ ├── edit-cut-16.png │ │ ├── edit-cut-22.png │ │ ├── edit-paste-16.png │ │ ├── edit-paste-22.png │ │ ├── encoding-16.png │ │ ├── explore-16.png │ │ ├── explore-22.png │ │ ├── file-new-16.png │ │ ├── file-new-22.png │ │ ├── find-16.png │ │ ├── find-22.png │ │ ├── find-next-16.png │ │ ├── find-previous-16.png │ │ ├── find-text-16.png │ │ ├── folder-compare-16.png │ │ ├── folder-new-16.png │ │ ├── folder-new-22.png │ │ ├── ftp-16.png │ │ ├── ftp-22.png │ │ ├── fullscreen-16.png │ │ ├── fullscreen-22.png │ │ ├── gear-16.png │ │ ├── goto-16.png │ │ ├── goto-22.png │ │ ├── help-16.png │ │ ├── help-22.png │ │ ├── hex-mode-16.png │ │ ├── history-16.png │ │ ├── home-16.png │ │ ├── info-16.png │ │ ├── info-22.png │ │ ├── license-16.png │ │ ├── line-numbers-16.png │ │ ├── move-16.png │ │ ├── move-22.png │ │ ├── multi-rename-16.png │ │ ├── multi-rename-22.png │ │ ├── open-16.png │ │ ├── pack-16.png │ │ ├── pack-22.png │ │ ├── pane-same-16.png │ │ ├── pane-swap-16.png │ │ ├── refresh-16.png │ │ ├── refresh-22.png │ │ ├── rename-16.png │ │ ├── rename-22.png │ │ ├── rotate-left-16.png │ │ ├── rotate-right-16.png │ │ ├── saladin-16.png │ │ ├── saladin-22.png │ │ ├── saladin-32.png │ │ ├── saladin-48.png │ │ ├── select-16.png │ │ ├── select-22.png │ │ ├── select-all-16.png │ │ ├── select-invert-16.png │ │ ├── terminal-16.png │ │ ├── terminal-22.png │ │ ├── trashcan-16.png │ │ ├── trashcan-22.png │ │ ├── type-binary-16.png │ │ ├── type-image-16.png │ │ ├── type-text-16.png │ │ ├── unselect-16.png │ │ ├── unselect-22.png │ │ ├── unselect-all-16.png │ │ ├── view-16.png │ │ ├── view-22.png │ │ ├── view-hidden-16.png │ │ ├── view-hidden-22.png │ │ ├── view-selected-16.png │ │ ├── warning-16.png │ │ ├── web-16.png │ │ ├── word-wrap-16.png │ │ ├── zoom-fit-16.png │ │ ├── zoom-in-16.png │ │ ├── zoom-orig-16.png │ │ └── zoom-out-16.png │ ├── delete-16.png │ ├── delete-22.png │ ├── edit-16.png │ ├── edit-22.png │ ├── edit-copy-16.png │ ├── edit-copy-22.png │ ├── edit-cut-16.png │ ├── edit-cut-22.png │ ├── edit-paste-16.png │ ├── edit-paste-22.png │ ├── encoding-16.png │ ├── explore-16.png │ ├── explore-22.png │ ├── file-new-16.png │ ├── file-new-22.png │ ├── find-16.png │ ├── find-22.png │ ├── find-next-16.png │ ├── find-previous-16.png │ ├── find-text-16.png │ ├── folder-compare-16.png │ ├── folder-new-16.png │ ├── folder-new-22.png │ ├── ftp-16.png │ ├── ftp-22.png │ ├── fullscreen-16.png │ ├── fullscreen-22.png │ ├── gear-16.png │ ├── goto-16.png │ ├── goto-22.png │ ├── help-16.png │ ├── help-22.png │ ├── hex-mode-16.png │ ├── history-16.png │ ├── home-16.png │ ├── icons.qrc │ ├── info-16.png │ ├── license-16.png │ ├── line-numbers-16.png │ ├── move-16.png │ ├── move-22.png │ ├── multi-rename-16.png │ ├── multi-rename-22.png │ ├── open-16.png │ ├── pack-16.png │ ├── pack-22.png │ ├── pane-same-16.png │ ├── pane-swap-16.png │ ├── refresh-16.png │ ├── refresh-22.png │ ├── rename-16.png │ ├── rename-22.png │ ├── rotate-left-16.png │ ├── rotate-right-16.png │ ├── saladin-16.png │ ├── saladin-22.png │ ├── saladin-32.png │ ├── saladin-48.png │ ├── select-16.png │ ├── select-22.png │ ├── select-all-16.png │ ├── select-invert-16.png │ ├── terminal-16.png │ ├── terminal-22.png │ ├── trashcan-16.png │ ├── trashcan-22.png │ ├── type-binary-16.png │ ├── type-image-16.png │ ├── type-text-16.png │ ├── unselect-16.png │ ├── unselect-22.png │ ├── unselect-all-16.png │ ├── view-16.png │ ├── view-22.png │ ├── view-hidden-16.png │ ├── view-hidden-22.png │ ├── view-selected-16.png │ ├── warning-16.png │ ├── web-16.png │ ├── word-wrap-16.png │ ├── zoom-fit-16.png │ ├── zoom-in-16.png │ ├── zoom-orig-16.png │ └── zoom-out-16.png ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── multirenamewidget.cpp ├── multirenamewidget.h ├── openftpdialog.cpp ├── openftpdialog.h ├── operationdialog.cpp ├── operationdialog.h ├── panewidget.cpp ├── panewidget.h ├── precompiled.h ├── resources │ ├── binaryview.xml │ ├── bookmarksdialog.xml │ ├── guidedialog.xml │ ├── imageview.xml │ ├── mainwindow.xml │ ├── resources.qrc │ ├── searchdialog.xml │ ├── textview.xml │ └── viewerwindow.xml ├── saladin.ico ├── saladin.rc ├── searchdialog.cpp ├── searchdialog.h ├── searchhelper.cpp ├── searchhelper.h ├── searchitemmodel.cpp ├── searchitemmodel.h ├── settingsdialog.cpp ├── settingsdialog.h ├── shell │ ├── changenotifywatcher.cpp │ ├── changenotifywatcher_p.h │ ├── iconcache.cpp │ ├── iconcache_p.h │ ├── shell.pri │ ├── shellbase.cpp │ ├── shellbase_p.h │ ├── shellcomputer.cpp │ ├── shellcomputer.h │ ├── shellcomputer_p.h │ ├── shelldrive.cpp │ ├── shelldrive.h │ ├── shelldrive_p.h │ ├── shelldropdata.cpp │ ├── shelldropdata.h │ ├── shelldropdata_p.h │ ├── shellfolder.cpp │ ├── shellfolder.h │ ├── shellfolder_p.h │ ├── shellitem.cpp │ ├── shellitem.h │ ├── shellitem_p.h │ ├── shellpidl.cpp │ ├── shellpidl.h │ ├── shellpidl_p.h │ ├── shellselection.cpp │ ├── shellselection.h │ ├── shellselection_p.h │ ├── streamdevice.cpp │ ├── streamdevice.h │ └── streamdevice_p.h ├── src.pro ├── utils │ ├── dataserializer.cpp │ ├── dataserializer.h │ ├── elidedlabel.cpp │ ├── elidedlabel.h │ ├── formathelper.cpp │ ├── formathelper.h │ ├── iconloader.cpp │ ├── iconloader.h │ ├── localsettings.cpp │ ├── localsettings.h │ ├── separatorcombobox.cpp │ ├── separatorcombobox.h │ ├── updateclient.cpp │ ├── updateclient.h │ └── utils.pri ├── viewer │ ├── binaryloader.cpp │ ├── binaryloader.h │ ├── binaryview.cpp │ ├── binaryview.h │ ├── gotodialog.cpp │ ├── gotodialog.h │ ├── imagelabel.cpp │ ├── imagelabel.h │ ├── imageloader.cpp │ ├── imageloader.h │ ├── imageview.cpp │ ├── imageview.h │ ├── textedit.cpp │ ├── textedit.h │ ├── textloader.cpp │ ├── textloader.h │ ├── textview.cpp │ ├── textview.h │ ├── view.cpp │ ├── view.h │ ├── viewer.pri │ ├── viewerwindow.cpp │ ├── viewerwindow.h │ ├── viewmanager.cpp │ └── viewmanager.h └── xmlui │ ├── README │ ├── builder.cpp │ ├── builder.h │ ├── client.cpp │ ├── client.h │ ├── gradientwidget.cpp │ ├── gradientwidget.h │ ├── node_p.h │ ├── toolstrip.cpp │ ├── toolstrip.h │ ├── toolstrip_p.h │ ├── windowsstyle.cpp │ ├── windowsstyle.h │ └── xmlui.pri └── translations ├── locale.ini ├── saladin_de.qm ├── saladin_de.ts ├── saladin_es.qm ├── saladin_es.ts ├── saladin_hu.qm ├── saladin_hu.ts ├── saladin_pl.qm ├── saladin_pl.ts ├── saladin_pt_BR.qm ├── saladin_pt_BR.ts ├── saladin_ru.qm ├── saladin_ru.ts └── saladin_untranslated.ts /.gitignore: -------------------------------------------------------------------------------- 1 | debug 2 | release 3 | src/precompiled.h.cpp 4 | src/saladin.vcxproj 5 | src/saladin.vcxproj.filters 6 | src/saladin.vcxproj.user 7 | tmp 8 | translations/call-lrelease.bat 9 | translations/call-lupdate.bat 10 | .qmake.stash 11 | config.pri 12 | configure-msvc.bat 13 | release-x64.bat 14 | saladin.sln 15 | saladin.v12.suo 16 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 1.0 (2017-05-02) 2 | * ported to Qt5 3 | * compact toolbar layout and new icons 4 | * collapsing the toolbar into a menu bar 5 | * white and dark user interface themes 6 | * viewing mutliple selected files in the internal viewer 7 | * remembering last used search text and patterns 8 | * quickly navigate to the configured home directories 9 | * open the text editor directly from the internal viewer 10 | * automatically rotate images in the internal viewer 11 | * display line numbers in the internal viewer 12 | * detailed image information in the internal viewer 13 | * fixed opening fileds locked for writing in the internal viewer 14 | * fixed a crash in the search results window when the list is empty 15 | * added German and Russian translations 16 | 17 | 0.6 (2014-11-25) 18 | * changing background for transparent areas in image viewer 19 | * fixed a problem with changing panel width 20 | * added Spanish translation 21 | 22 | 0.5 (2014-05-07) 23 | * full screen mode in the internal viewer 24 | * displaying files from zipped folders in the internal viewer 25 | * go to line command in the internal text viewer 26 | * added "overwrite" option in pack to zip command instead of silently overwriting 27 | * do not show media libraries and shared folders in the drives bar 28 | * fixed copying file names from search results 29 | 30 | 0.4 (2013-01-09) 31 | * display confirmation when dragging files 32 | * zoom and rotate images in the internal viewer 33 | * search files by name and content 34 | * select/unselect multiple patterns; remember last pattern 35 | * refresh drives bar using contextual menu 36 | 37 | 0.3 (2012-04-05) 38 | * asynchronous loading in the file viewer 39 | * configuring font for binary and text view 40 | * compatibility method for creating directories 41 | * added Portuguese translation 42 | 43 | 0.2 (2011-08-22) 44 | * first version of the internal file viewer 45 | * fixed a crash when "show hidden files" is enabled at startup 46 | * improved look and feel with the windows classic theme 47 | * use natural order for sorting file names 48 | 49 | 0.1 (2011-01-26) 50 | * initial version 51 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Requirements 2 | ============ 3 | 4 | * Microsoft Visual Studio 2008 or newer 5 | 6 | * Qt framework, version 5.4 or newer (http://www.qt.io/) 7 | 8 | The program can be built using the standard 'qmake' tool from Qt. Simple configure 9 | script is available which creates a configuration file and runs qmake with 10 | appropriate parameters. 11 | 12 | Open the Visual Studio Command Prompt. Make sure that QTDIR is set to the path where 13 | Qt was installed. Go to the directory where you have unpacked Saladin and run: 14 | 15 | > set QTDIR=C:\path\to\qt5 16 | > configure.bat 17 | > nmake 18 | 19 | Additional options that can be passed to the configure script: 20 | 21 | -prefix DIR 22 | 23 | The location where the package will be installed (default is 24 | 'C:\Program Files\Saladin'). 25 | 26 | -debug 27 | 28 | Build with debugging symbols. 29 | 30 | -msvc 31 | 32 | Generate a solution for Microsoft Visual Studio instead of Makefiles. 33 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Saladin 2 | Version 1.0 (2017-05-02) 3 | 4 | Dual-pane file manager for Windows. 5 | 6 | Saladin is an open source dual-pane file manager which merges 7 | the capabilities of Windows Explorer with the well known 8 | and easy to use orthodox user interface. It supports both 9 | 32-bit and 64-bit versions of Windows. 10 | 11 | NOTE: This program does not support Windows XP or older. 12 | 13 | 14 | Copyrights 15 | ========== 16 | 17 | Copyright (C) 2011-2017 Michał Męciński 18 | 19 | Icons copyright (C) 2017 Łukasz Grabowski 20 | 21 | 22 | License 23 | ======= 24 | 25 | This program is free software: you can redistribute it and/or modify 26 | it under the terms of the GNU General Public License as published by 27 | the Free Software Foundation, either version 3 of the License, or 28 | (at your option) any later version. 29 | 30 | This program is distributed in the hope that it will be useful, 31 | but WITHOUT ANY WARRANTY; without even the implied warranty of 32 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 33 | GNU General Public License for more details. 34 | 35 | You should have received a copy of the GNU General Public License 36 | along with this program. If not, see . 37 | 38 | 39 | Credits 40 | ======= 41 | 42 | Authors: 43 | 44 | * Michał Męciński (mimec at mimec org; Twitter: @MichalMecinski) 45 | 46 | Icons: 47 | 48 | * Łukasz Grabowski (lgrabowski at bulletcode com; Twitter: @LukaszGx) 49 | 50 | Translators: 51 | 52 | * Flávio Veras (flaviove at gmail com) 53 | - Portuguese (Brazil) translation 54 | 55 | * Patricia Martín Chozas, Gonzalo Mena Morales (menamoralesgonzalo at gmail com) 56 | - Spanish translation 57 | 58 | * Oliver Osranek (oos at mail.de) 59 | - German translation 60 | 61 | * Алексей Черемных (КонтинентСвободы.рф) 62 | - Russian translation 63 | 64 | * ZityiSoft Team (zityisoft at gmail.com) 65 | - Hungarian translation 66 | 67 | 68 | Resources 69 | ========= 70 | 71 | Website 72 | http://saladin.mimec.org/ 73 | 74 | Forum 75 | http://saladin.mimec.org/forum/general 76 | 77 | Bugs & Requests 78 | http://saladin.mimec.org/forum/tracker 79 | 80 | Development 81 | http://wiki.mimec.org/wiki/Saladin 82 | -------------------------------------------------------------------------------- /configure.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set prefix="C:\Program Files\Saladin" 4 | set config=release 5 | set msvc=no 6 | 7 | if exist .\saladin.pro goto arg_loop 8 | 9 | echo *** ERROR: cannot find project file in current directory. 10 | goto end 11 | 12 | :arg_loop 13 | if "%1" == "" goto arg_done 14 | if "%1" == "-prefix" goto arg_prefix 15 | if "%1" == "-debug" goto arg_debug 16 | if "%1" == "-msvc" goto arg_msvc 17 | if "%1" == "-help" goto show_usage 18 | if "%1" == "--help" goto show_usage 19 | if "%1" == "/?" goto show_usage 20 | 21 | echo *** ERROR: Unrecognized option '%1' 22 | goto show_usage 23 | 24 | :arg_prefix 25 | set prefix=%2 26 | shift 27 | goto arg_next 28 | 29 | :arg_debug 30 | set config=debug 31 | goto arg_next 32 | 33 | :arg_msvc 34 | set msvc=yes 35 | goto arg_next 36 | 37 | :arg_next 38 | shift 39 | goto arg_loop 40 | 41 | :show_usage 42 | echo Usage: configure [-prefix DIR] [-debug] [-msvc] 43 | echo. 44 | echo Options: 45 | echo. 46 | echo -prefix DIR Set the instalation directory to DIR 47 | echo (default: C:\Program Files\Saladin) 48 | echo -debug Build with debugging symbols 49 | echo -msvc Generate Visual Studio solution 50 | goto end 51 | 52 | :arg_done 53 | 54 | echo Testing for qmake... 55 | 56 | set QMAKE= 57 | 58 | qmake -v >nul 2>nul 59 | if errorlevel 1 goto test_qtdir 60 | set QMAKE=qmake 61 | goto qmake_found 62 | 63 | :test_qtdir 64 | if "%QTDIR%" == "" goto no_qmake 65 | "%QTDIR%\bin\qmake" -v >nul 2>nul 66 | if errorlevel 1 goto no_qmake 67 | set QMAKE=%QTDIR%\bin\qmake 68 | goto qmake_found 69 | 70 | :no_qmake 71 | echo *** ERROR: Cannot find 'qmake' in your PATH. 72 | goto end 73 | 74 | :qmake_found 75 | 76 | echo Writing configuration file... 77 | 78 | echo # this file was generated by configure.bat >config.pri 79 | echo CONFIG += %config% >>config.pri 80 | echo PREFIX = %prefix:\=\\% >>config.pri 81 | 82 | if "%msvc%" == "yes" goto gen_msvc 83 | 84 | echo Generating Makefiles... 85 | 86 | "%QMAKE%" -recursive 87 | if errorlevel 1 goto qmake_failed 88 | echo. 89 | echo Configure finished. Run 'make' or 'nmake' now. 90 | goto end 91 | 92 | :gen_msvc 93 | 94 | echo Generating Visual Studio solution... 95 | 96 | "%QMAKE%" -tp vc -recursive 97 | if errorlevel 1 goto qmake_failed 98 | echo. 99 | echo Configure finished. 100 | goto end 101 | 102 | :qmake_failed 103 | echo *** ERROR: Running 'qmake' failed. 104 | 105 | :end 106 | -------------------------------------------------------------------------------- /installer/build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | if "%1" == "" goto usage 4 | 5 | set VERSION=1.0 6 | set BUILDVERSION=1.0.0.6332 7 | 8 | set NSISDIR=C:\Program Files (x86)\NSIS 9 | 10 | if not %1 == x86 goto elsex64 11 | 12 | set BUILDDIR=D:\Release\saladin-x86 13 | 14 | set QTDIR=D:\Qt5\x86-widgets 15 | set OPENSSLDIR=D:\OpenSSL\x86 16 | set VCRTDIR=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC120.CRT 17 | 18 | set ARCHITECTURE=win_x86 19 | set SUFFIX= 20 | 21 | goto endopt 22 | :elsex64 23 | 24 | if not %1 == x64 goto usage 25 | 26 | set BUILDDIR=D:\Release\saladin-x64 27 | 28 | set QTDIR=D:\Qt5\x64-widgets 29 | set OPENSSLDIR=D:\OpenSSL\x64 30 | set VCRTDIR=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x64\Microsoft.VC120.CRT 31 | 32 | set ARCHITECTURE=win_x64 33 | set SUFFIX= (64-bit) 34 | 35 | goto endopt 36 | :usage 37 | 38 | echo usage: build-bat x86^|x64 39 | 40 | goto :eof 41 | :endopt 42 | 43 | call "%QTDIR%\bin\qtvars.bat" vsvars 44 | 45 | if not exist "%BUILDDIR%" mkdir "%BUILDDIR%" 46 | 47 | echo. 48 | echo Exporting... 49 | echo. 50 | 51 | svn export --quiet --force .. "%BUILDDIR%" 52 | 53 | pushd "%BUILDDIR%" 54 | 55 | call configure.bat 56 | 57 | nmake release 58 | 59 | if errorlevel 1 goto cleanup 60 | 61 | call ..\sign.bat release\saladin.exe 62 | 63 | echo. 64 | echo Creating uninstaller... 65 | echo. 66 | 67 | "%NSISDIR%\makensis.exe" /DINNER "/DQTDIR=%QTDIR%" "/DOPENSSLDIR=%OPENSSLDIR%" "/DVCRTDIR=%VCRTDIR%" "/DVERSION=%VERSION%" "/DBUILDVERSION=%BUILDVERSION%" "/DARCHITECTURE=%ARCHITECTURE%" "/DSUFFIX=%SUFFIX%" /V2 installer\saladin.nsi 68 | 69 | if errorlevel 1 goto cleanup 70 | 71 | "%TEMP%\innerinst.exe" 72 | 73 | call ..\sign.bat "%TEMP%\uninstall.exe" 74 | 75 | echo. 76 | echo Creating installer... 77 | echo. 78 | 79 | "%NSISDIR%\makensis.exe" "/DQTDIR=%QTDIR%" "/DOPENSSLDIR=%OPENSSLDIR%" "/DVCRTDIR=%VCRTDIR%" "/DVERSION=%VERSION%" "/DBUILDVERSION=%BUILDVERSION%" "/DARCHITECTURE=%ARCHITECTURE%" "/DSUFFIX=%SUFFIX%" /V2 installer\saladin.nsi 80 | 81 | if errorlevel 1 goto cleanup 82 | 83 | call ..\sign.bat "installer\saladin-%VERSION%-%ARCHITECTURE%.exe" 84 | 85 | :cleanup 86 | 87 | del /q /f "%TEMP%\innerinst.exe" 88 | del /q /f "%TEMP%\uninstall.exe" 89 | 90 | popd 91 | -------------------------------------------------------------------------------- /installer/images/header.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/installer/images/header.bmp -------------------------------------------------------------------------------- /installer/images/wizard.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/installer/images/wizard.bmp -------------------------------------------------------------------------------- /installer/languages/saladin_en.nsh: -------------------------------------------------------------------------------- 1 | LangString NAME ${LANG_ENGLISH} "Saladin" 2 | LangString TITLE ${LANG_ENGLISH} "$(NAME) ${VERSION}" 3 | LangString WELCOME_TEXT ${LANG_ENGLISH} "This wizard will guide you through the installation of $(NAME).$\r$\n$\r$\nIf you are upgrading an existing installation of $(NAME), make sure it is not running.$\r$\n$\r$\nClick Next to continue." 4 | LangString FINISH_TEXT ${LANG_ENGLISH} "$(NAME) has been installed on your computer.$\r$\n$\r$\nClick Finish to close this wizard." 5 | LangString WINVER_TEXT ${LANG_ENGLISH} "$(NAME) requires Windows Vista or newer." 6 | -------------------------------------------------------------------------------- /installer/qt.conf: -------------------------------------------------------------------------------- 1 | [Paths] 2 | Plugins=../plugins 3 | -------------------------------------------------------------------------------- /saladin.pro: -------------------------------------------------------------------------------- 1 | include( config.pri ) 2 | 3 | TEMPLATE = subdirs 4 | SUBDIRS = src 5 | 6 | translations.files = translations/*.qm translations/locale.ini 7 | translations.path = $$PREFIX/translations 8 | INSTALLS += translations 9 | -------------------------------------------------------------------------------- /src/aboutbox.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef ABOUTBOX_H 20 | #define ABOUTBOX_H 21 | 22 | class AboutBoxSection; 23 | 24 | class AboutBox : public QDialog 25 | { 26 | Q_OBJECT 27 | public: 28 | AboutBox( const QString& title, const QString& message, QWidget* parent ); 29 | ~AboutBox(); 30 | 31 | public: 32 | AboutBoxSection* addSection( const QPixmap& pixmap, const QString& message ); 33 | 34 | private: 35 | QWidget* m_sectionsWidget; 36 | QBoxLayout* m_sectionsLayout; 37 | }; 38 | 39 | class AboutBoxSection : public QFrame 40 | { 41 | Q_OBJECT 42 | public: 43 | AboutBoxSection( const QPixmap& pixmap, const QString& message, QWidget* parent ); 44 | ~AboutBoxSection(); 45 | 46 | protected: 47 | AboutBoxSection( Qt::WindowFlags flags ); 48 | 49 | public: 50 | void setPixmap( const QPixmap& pixmap ); 51 | void setMessage( const QString& message ); 52 | 53 | QPushButton* addButton( const QString& text ); 54 | 55 | void clearButtons(); 56 | 57 | private: 58 | void initialize(); 59 | 60 | private: 61 | QBoxLayout* m_mainLayout; 62 | QBoxLayout* m_buttonsLayout; 63 | 64 | QLabel* m_pixmapLabel; 65 | QLabel* m_messageLabel; 66 | }; 67 | 68 | class AboutBoxToolSection : public AboutBoxSection 69 | { 70 | Q_OBJECT 71 | public: 72 | AboutBoxToolSection(); 73 | ~AboutBoxToolSection(); 74 | 75 | public: // overrides 76 | bool event( QEvent* e ); 77 | 78 | private slots: 79 | void updatePosition(); 80 | 81 | private: 82 | QToolButton* m_closeButton; 83 | }; 84 | 85 | class AboutBoxScrollArea : public QScrollArea 86 | { 87 | Q_OBJECT 88 | public: 89 | AboutBoxScrollArea( QWidget* parent ); 90 | ~AboutBoxScrollArea(); 91 | 92 | public: // overrides 93 | QSize sizeHint() const; 94 | }; 95 | 96 | #endif 97 | -------------------------------------------------------------------------------- /src/bookmark.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef BOOKMARK_H 20 | #define BOOKMARK_H 21 | 22 | #include 23 | 24 | class BookmarkPrivate; 25 | class ShellFolder; 26 | 27 | class Bookmark 28 | { 29 | public: 30 | Bookmark(); 31 | Bookmark( const QString& name, ShellFolder* folder, bool withPassword ); 32 | ~Bookmark(); 33 | 34 | Bookmark( const Bookmark& other ); 35 | Bookmark& operator =( const Bookmark& other ); 36 | 37 | public: 38 | bool isValid() const; 39 | 40 | QString name() const; 41 | void setName( const QString& name ); 42 | 43 | QString path() const; 44 | QString user() const; 45 | QString password() const; 46 | 47 | ShellFolder* createFolder( QWidget* parent ) const; 48 | 49 | public: 50 | friend bool operator <( const Bookmark& lhs, const Bookmark& rhs ); 51 | 52 | friend QDataStream& operator <<( QDataStream& stream, const Bookmark& bookmark ); 53 | friend QDataStream& operator >>( QDataStream& stream, Bookmark& bookmark ); 54 | 55 | private: 56 | QSharedDataPointer d; 57 | }; 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /src/bookmark_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef BOOKMARK_P_H 20 | #define BOOKMARK_P_H 21 | 22 | #include "bookmark.h" 23 | 24 | #include "shell/shellpidl.h" 25 | 26 | class BookmarkPrivate : public QSharedData 27 | { 28 | public: 29 | enum BookmarkType 30 | { 31 | NullBookmark, 32 | PidlBookmark, 33 | FtpBookmark 34 | }; 35 | 36 | public: 37 | BookmarkPrivate(); 38 | BookmarkPrivate( const BookmarkPrivate& other ); 39 | ~BookmarkPrivate(); 40 | 41 | public: 42 | QString m_name; 43 | 44 | BookmarkType m_type; 45 | 46 | ShellPidl m_pidl; 47 | 48 | QString m_path; 49 | QString m_user; 50 | QString m_password; 51 | }; 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /src/bookmarksdialog.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef BOOKMARKSDIALOG_H 20 | #define BOOKMARKSDIALOG_H 21 | 22 | #include "bookmark.h" 23 | 24 | #include "xmlui/client.h" 25 | 26 | #include 27 | 28 | class QTreeWidget; 29 | 30 | class BookmarksDialog : public QDialog, public XmlUi::Client 31 | { 32 | Q_OBJECT 33 | public: 34 | BookmarksDialog( QWidget* parent ); 35 | ~BookmarksDialog(); 36 | 37 | public: // overrides 38 | void accept(); 39 | 40 | private slots: 41 | void editRename(); 42 | void editDelete(); 43 | 44 | void updateActions(); 45 | 46 | void doubleClicked( const QModelIndex& index ); 47 | void listContextMenu( const QPoint& pos ); 48 | 49 | private: 50 | void populateList(); 51 | 52 | private: 53 | QTreeWidget* m_list; 54 | 55 | QList m_bookmarks; 56 | }; 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /src/drivestripmanager.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef DRIVESTRIPMANAGER_H 20 | #define DRIVESTRIPMANAGER_H 21 | 22 | #include "shell/shelldrive.h" 23 | #include "shell/shellcomputer.h" 24 | #include "xmlui/toolstrip.h" 25 | 26 | #include 27 | 28 | class DriveStripManager : public QObject 29 | { 30 | Q_OBJECT 31 | public: 32 | explicit DriveStripManager( QWidget* parent ); 33 | ~DriveStripManager(); 34 | 35 | public: 36 | ShellComputer* computer() const { return m_computer; } 37 | 38 | ShellDrive driveAt( int index ) const; 39 | ShellDrive driveAt( XmlUi::ToolStrip* strip, const QPoint& pos ) const; 40 | 41 | ShellDrive driveFromFolder( ShellFolder* folder ) const; 42 | 43 | void registerToolStrip( XmlUi::ToolStrip* strip, QObject* receiver, const char* member ); 44 | 45 | void showDrivesMenu( XmlUi::ToolStrip* strip ); 46 | 47 | public slots: 48 | void refresh(); 49 | 50 | public: // overrides 51 | bool eventFilter( QObject* watched, QEvent* e ); 52 | 53 | private slots: 54 | void driveChanged( const ShellDrive& drive ); 55 | 56 | private: 57 | struct StripInfo 58 | { 59 | XmlUi::ToolStrip* m_strip; 60 | QSignalMapper* m_mapper; 61 | QList m_actions; 62 | }; 63 | 64 | private: 65 | void populateToolStrip( StripInfo& info ); 66 | 67 | bool stripDragEnterEvent( XmlUi::ToolStrip* strip, QDragEnterEvent* e ); 68 | bool stripDragMoveEvent( XmlUi::ToolStrip* strip, QDragMoveEvent* e ); 69 | bool stripDragLeaveEvent( XmlUi::ToolStrip* strip, QDragLeaveEvent* e ); 70 | bool stripDropEvent( XmlUi::ToolStrip* strip, QDropEvent* e ); 71 | 72 | bool dragDropHelper( XmlUi::ToolStrip* strip, QDropEvent* e, bool doDrop ); 73 | 74 | private: 75 | ShellComputer* m_computer; 76 | QList m_drives; 77 | 78 | QList m_strips; 79 | 80 | ShellDropData* m_dropData; 81 | 82 | friend class ShellDriveLessThan; 83 | }; 84 | 85 | #endif 86 | -------------------------------------------------------------------------------- /src/folderitemdelegate.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "folderitemdelegate.h" 20 | #include "application.h" 21 | 22 | FolderItemDelegate::FolderItemDelegate( QObject* parent ) : QStyledItemDelegate( parent ) 23 | { 24 | } 25 | 26 | FolderItemDelegate::~FolderItemDelegate() 27 | { 28 | } 29 | 30 | void FolderItemDelegate::updateEditorGeometry( QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& /*index*/ ) const 31 | { 32 | QPalette palette = Application::palette(); 33 | palette.setColor( QPalette::Text, palette.color( QPalette::WindowText ) ); 34 | editor->setPalette( palette ); 35 | 36 | editor->setGeometry( option.rect.adjusted( 21, 0, 0, 0 ) ); 37 | } 38 | 39 | bool FolderItemDelegate::eventFilter( QObject* object, QEvent* e ) 40 | { 41 | if ( e->type() == QEvent::KeyPress ) { 42 | QKeyEvent* keyEvent = static_cast( e ); 43 | switch ( keyEvent->key() ) { 44 | case Qt::Key_Tab: 45 | case Qt::Key_Backtab: 46 | return false; 47 | } 48 | } 49 | 50 | return QStyledItemDelegate::eventFilter( object, e ); 51 | } 52 | -------------------------------------------------------------------------------- /src/folderitemdelegate.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef FOLDERITEMDELEGATE_H 20 | #define FOLDERITEMDELEGATE_H 21 | 22 | #include "shell/shellitem.h" 23 | #include "shell/shellfolder.h" 24 | 25 | #include 26 | 27 | class FolderItemDelegate : public QStyledItemDelegate 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit FolderItemDelegate( QObject* parent ); 32 | ~FolderItemDelegate(); 33 | 34 | public: // overrides 35 | void updateEditorGeometry( QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index ) const; 36 | 37 | bool eventFilter( QObject* object, QEvent* e ); 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/folderitemview.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef FOLDERITEMVIEW_H 20 | #define FOLDERITEMVIEW_H 21 | 22 | #include 23 | 24 | class FolderItemView : public QTreeView 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit FolderItemView( QWidget* parent ); 29 | ~FolderItemView(); 30 | 31 | public: 32 | bool isEditing() const; 33 | 34 | QModelIndex movePageUp(); 35 | QModelIndex movePageDown(); 36 | 37 | void setAnchor( const QModelIndex& index ); 38 | QModelIndex anchor() const; 39 | 40 | bool isDragging() const; 41 | void setDragging( bool dragging ); 42 | 43 | void highlightDropItem( const QModelIndex& index ); 44 | 45 | void checkAutoScroll( const QPoint& pos ); 46 | 47 | protected: // overrides 48 | void drawRow( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; 49 | 50 | void currentChanged( const QModelIndex& current, const QModelIndex& previous ); 51 | 52 | private: 53 | QPersistentModelIndex m_anchor; 54 | }; 55 | 56 | #endif 57 | -------------------------------------------------------------------------------- /src/guide/en/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Quick Guide to Saladin 4 | 5 | 6 | 7 | 8 |

Quick Guide to Saladin

9 | 10 |

The main window of Saladin consists of a toolbar for accessing commonly used functions and tools. The toolbar can be hidden using the Collapse Toolbar command in the upper right corner of the window. When the toolbar is collapsed, a menu bar is displayed containing all functions and tools. To display the toolbar again, use the Expand Toolbar command.

11 | 12 |

Below the toolbar there are two panels for working with directories. Each panel consists of a drive bar, location bar, list of files and status bar. One of the panels is active and acts as the source panel for copy/move operations; the other panel is the target panel. You can clicking anywhere on a panel to activate it or press Tab to switch the active panel. The source and target panels can be distinguished by the color of the location bar.

13 | 14 |

The drive bar displays buttons representing all available hard disks and other drives connected to the computer. You can click on the drive button to open the root directory of the drive in the panel beneath it. You can also press Alt+F1 or Alt+F2 to select a drive using a drop down list in the right or left panel, respectively. Right click on the drive bar and select Refresh Drives in case the bar doesn't refresh automatically when adding or removing a drive.

15 | 16 |

The location bar displays the path of the current directory or the name if it has no physical path. You can type the location of the directory in the location bar and press Enter to open it. Click on the location bar or press Ctrl+O to activate it. You can also select Open (Ctrl+Shift+O) to browse for a directory.

17 | 18 |

The file list displays the contents of the current directory.

19 | 20 |

The status bar displays the number and total size of selected items and all items in the current directory. It also displays the name, capacity and amount of free space on the current drive.

21 | 22 | 28 | 29 |

References

30 | 31 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/guide/en/masks.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Rename Masks 4 | 5 | 6 | 7 | 8 |

Rename Masks

9 | 10 |

The following commans can be used in the name and extension masks when renaming or cloning multiple files:

11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 45 | 46 |
CommandDescription
[n:from:to] 20 | Insert part of the original file name (without extension). Optional start and end position can be entered (positive value means offset from the start, negative value means offset from the start). For example: 21 |
    22 |
  • [n] - entire file name
  • 23 |
  • [n:3] - 3rd character of the file name
  • 24 |
  • [n:3:] - file name from 3rd character to the end
  • 25 |
  • [n:3:6] - file name from 3rd character to 6th character
  • 26 |
  • [n:3:-2] - file name from 3rd character to 2nd character from the end
  • 27 |
28 |
[e:from:to]Insert part of the original extension. Optional start and end position can be entered (analogous to the [n] pattern).
[c:width:from:step] 37 | Insert the value of a counter. Optional width, start number and step can be entered. For example: 38 |
    39 |
  • [c] - 1, 2, 3...
  • 40 |
  • [c:3] - 001, 002, 003...
  • 41 |
  • [c:3:100] - 100, 101, 102...
  • 42 |
  • [c:3:100:10] - 100, 110, 120...
  • 43 |
44 |
47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /src/guide/en/wildcards.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Wildcards 4 | 5 | 6 | 7 | 8 |

Wildcards

9 | 10 |

The following wildcards can be used when selecting or unselecting files using a mask and when searching for files:

11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
WildcardDescription
?Matches any single character.
*Matches zero or more of any characters.
[...]Matches any character listed in the set. Within the set a dash can be used to indicate a range of characters, e.g. [0-9] matches any digit.
[^...]Matches any character not listed in the set.
;Can be used to separate two or more patterns.
38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/guide/es/masks.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Máscaras de cambio de nombre 4 | 5 | 6 | 7 | 8 | 9 |

Máscaras de cambio de nombre

10 | 11 |

Los siguientes comandos se pueden utilizar en los campos de nombre y extensión al cambiar de nombre o clonar varios archivos:

12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 36 | 37 |
ComandoDescripción
[n:de:a]Introduce parte del nombre original del archivo (sin extensión). Puede añadir opcionalmente la posición de inicio y final (los valores positivos comienzan desde el principio; los negativos, desde el final). Por ejemplo:
  • [n] - nombre del archivo completo
  • 21 |
  • [n:3] - tercer carácter del nombre del archivo
  • 22 |
  • [n:3:] - nombre del archivo desde el tercer carácter hasta el final
  • 23 |
  • [n:3:6] - nombre del archivo desde el tercer carácter hasta el sexto
  • 24 |
  • [n:3:-2] - nombre del archivo desde el tercer carácter hasta el segundo empezando por el final
[e:de:a]Introduce parte de la extensión original. Puede añadir opcionalmente la posición de inicio y final (de igual manera que con el patrón [n])
[c:ancho:desde:incremento]Añade el valor de un medidor. Se pueden añadir opcionalmente el ancho, el número de comienzo y el incremento. Por ejemplo:
  • [c] - 1, 2, 3...
  • 33 |
  • [c:3] - 001, 002, 003...
  • 34 |
  • [c:3:100] - 100, 101, 102...
  • 35 |
  • [c:3:100:10] - 100, 110, 120...
38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/guide/es/wildcards.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Carácter comodín 4 | 5 | 6 | 7 | 8 | 9 |

Carácter comodín

10 | 11 |

Se pueden usar los siguientes caracteres comodín cuando seleccione o deseleccione archivos mediante una máscara o cuando busque archivos.

12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
Carácter comodínDescripción
?Representa cualquier carácter.
*Representa cero o más elementos de cualquier carácter.
[...]Representa cualquier carácter presente en la lista. Dentro de la lista se puede utilizar un guion para indicar un rango de caracteres, por ejemplo, [0-9] representa cualquier dígito.
[^...]Representa cualquier carácter que no aparezca en la lista.
;Puede utilizarse para separar dos o más patrones.
39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/guide/guide.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | style.css 4 | en/functions.html 5 | en/index.html 6 | en/lists.html 7 | en/masks.html 8 | en/regexps.html 9 | en/shortcuts.html 10 | en/tools.html 11 | en/viewer.html 12 | en/wildcards.html 13 | es/functions.html 14 | es/index.html 15 | es/lists.html 16 | es/masks.html 17 | es/regexps.html 18 | es/shortcuts.html 19 | es/tools.html 20 | es/viewer.html 21 | es/wildcards.html 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/guide/style.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | font-size: large; 4 | } 5 | h1 6 | { 7 | font-size: x-large; 8 | font-weight: bold; 9 | color: #358; 10 | margin: 0 0 1em 0; 11 | } 12 | h2 13 | { 14 | font-size: large; 15 | font-weight: bold; 16 | color: #358; 17 | margin: 0 0 1em 0; 18 | } 19 | p 20 | { 21 | margin: 0 0 0.8em 0; 22 | } 23 | table 24 | { 25 | margin: 0.8em 0 0.8em 0; 26 | } 27 | th 28 | { 29 | background-color: #ccf; 30 | padding: 0.2em; 31 | } 32 | td 33 | { 34 | background-color: #eee; 35 | padding: 0.2em; 36 | } 37 | -------------------------------------------------------------------------------- /src/guidedialog.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef GUIDEDIALOG_H 20 | #define GUIDEDIALOG_H 21 | 22 | #include "bookmark.h" 23 | 24 | #include "xmlui/client.h" 25 | 26 | #include 27 | 28 | class QTreeWidget; 29 | 30 | class GuideDialog : public QDialog, public XmlUi::Client 31 | { 32 | Q_OBJECT 33 | public: 34 | GuideDialog( QWidget* parent ); 35 | ~GuideDialog(); 36 | 37 | private slots: 38 | void goBack(); 39 | void goForward(); 40 | void goHome(); 41 | 42 | void updateActions(); 43 | 44 | void loadIcons(); 45 | 46 | private: 47 | QLabel* m_promptPixmap; 48 | 49 | QTextBrowser* m_browser; 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /src/icons/about-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/about-16.png -------------------------------------------------------------------------------- /src/icons/arrow-down-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-down-16.png -------------------------------------------------------------------------------- /src/icons/arrow-hide-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-hide-16.png -------------------------------------------------------------------------------- /src/icons/arrow-left-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-left-16.png -------------------------------------------------------------------------------- /src/icons/arrow-right-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-right-16.png -------------------------------------------------------------------------------- /src/icons/arrow-top-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-top-16.png -------------------------------------------------------------------------------- /src/icons/arrow-up-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/arrow-up-16.png -------------------------------------------------------------------------------- /src/icons/black-background-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/black-background-16.png -------------------------------------------------------------------------------- /src/icons/bookmark-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/bookmark-16.png -------------------------------------------------------------------------------- /src/icons/bookmark-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/bookmark-22.png -------------------------------------------------------------------------------- /src/icons/browse-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/browse-16.png -------------------------------------------------------------------------------- /src/icons/browse-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/browse-22.png -------------------------------------------------------------------------------- /src/icons/calculate-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/calculate-16.png -------------------------------------------------------------------------------- /src/icons/calculate-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/calculate-22.png -------------------------------------------------------------------------------- /src/icons/clone-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/clone-16.png -------------------------------------------------------------------------------- /src/icons/clone-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/clone-22.png -------------------------------------------------------------------------------- /src/icons/close-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/close-16.png -------------------------------------------------------------------------------- /src/icons/compare-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/compare-16.png -------------------------------------------------------------------------------- /src/icons/compare-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/compare-22.png -------------------------------------------------------------------------------- /src/icons/configure-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/configure-16.png -------------------------------------------------------------------------------- /src/icons/configure-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/configure-22.png -------------------------------------------------------------------------------- /src/icons/copy-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/copy-16.png -------------------------------------------------------------------------------- /src/icons/copy-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/copy-22.png -------------------------------------------------------------------------------- /src/icons/copy-names-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/copy-names-16.png -------------------------------------------------------------------------------- /src/icons/dark/about-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/about-16.png -------------------------------------------------------------------------------- /src/icons/dark/arrow-down-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-down-16.png -------------------------------------------------------------------------------- /src/icons/dark/arrow-hide-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-hide-16.png -------------------------------------------------------------------------------- /src/icons/dark/arrow-left-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-left-16.png -------------------------------------------------------------------------------- /src/icons/dark/arrow-right-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-right-16.png -------------------------------------------------------------------------------- /src/icons/dark/arrow-top-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-top-16.png -------------------------------------------------------------------------------- /src/icons/dark/arrow-up-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/arrow-up-16.png -------------------------------------------------------------------------------- /src/icons/dark/black-background-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/black-background-16.png -------------------------------------------------------------------------------- /src/icons/dark/bookmark-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/bookmark-16.png -------------------------------------------------------------------------------- /src/icons/dark/bookmark-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/bookmark-22.png -------------------------------------------------------------------------------- /src/icons/dark/browse-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/browse-16.png -------------------------------------------------------------------------------- /src/icons/dark/browse-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/browse-22.png -------------------------------------------------------------------------------- /src/icons/dark/calculate-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/calculate-16.png -------------------------------------------------------------------------------- /src/icons/dark/calculate-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/calculate-22.png -------------------------------------------------------------------------------- /src/icons/dark/clone-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/clone-16.png -------------------------------------------------------------------------------- /src/icons/dark/clone-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/clone-22.png -------------------------------------------------------------------------------- /src/icons/dark/close-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/close-16.png -------------------------------------------------------------------------------- /src/icons/dark/compare-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/compare-16.png -------------------------------------------------------------------------------- /src/icons/dark/compare-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/compare-22.png -------------------------------------------------------------------------------- /src/icons/dark/configure-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/configure-16.png -------------------------------------------------------------------------------- /src/icons/dark/configure-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/configure-22.png -------------------------------------------------------------------------------- /src/icons/dark/copy-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/copy-16.png -------------------------------------------------------------------------------- /src/icons/dark/copy-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/copy-22.png -------------------------------------------------------------------------------- /src/icons/dark/copy-names-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/copy-names-16.png -------------------------------------------------------------------------------- /src/icons/dark/delete-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/delete-16.png -------------------------------------------------------------------------------- /src/icons/dark/delete-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/delete-22.png -------------------------------------------------------------------------------- /src/icons/dark/edit-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-16.png -------------------------------------------------------------------------------- /src/icons/dark/edit-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-22.png -------------------------------------------------------------------------------- /src/icons/dark/edit-copy-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-copy-16.png -------------------------------------------------------------------------------- /src/icons/dark/edit-copy-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-copy-22.png -------------------------------------------------------------------------------- /src/icons/dark/edit-cut-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-cut-16.png -------------------------------------------------------------------------------- /src/icons/dark/edit-cut-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-cut-22.png -------------------------------------------------------------------------------- /src/icons/dark/edit-paste-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-paste-16.png -------------------------------------------------------------------------------- /src/icons/dark/edit-paste-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/edit-paste-22.png -------------------------------------------------------------------------------- /src/icons/dark/encoding-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/encoding-16.png -------------------------------------------------------------------------------- /src/icons/dark/explore-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/explore-16.png -------------------------------------------------------------------------------- /src/icons/dark/explore-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/explore-22.png -------------------------------------------------------------------------------- /src/icons/dark/file-new-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/file-new-16.png -------------------------------------------------------------------------------- /src/icons/dark/file-new-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/file-new-22.png -------------------------------------------------------------------------------- /src/icons/dark/find-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-16.png -------------------------------------------------------------------------------- /src/icons/dark/find-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-22.png -------------------------------------------------------------------------------- /src/icons/dark/find-next-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-next-16.png -------------------------------------------------------------------------------- /src/icons/dark/find-previous-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-previous-16.png -------------------------------------------------------------------------------- /src/icons/dark/find-text-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/find-text-16.png -------------------------------------------------------------------------------- /src/icons/dark/folder-compare-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/folder-compare-16.png -------------------------------------------------------------------------------- /src/icons/dark/folder-new-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/folder-new-16.png -------------------------------------------------------------------------------- /src/icons/dark/folder-new-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/folder-new-22.png -------------------------------------------------------------------------------- /src/icons/dark/ftp-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/ftp-16.png -------------------------------------------------------------------------------- /src/icons/dark/ftp-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/ftp-22.png -------------------------------------------------------------------------------- /src/icons/dark/fullscreen-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/fullscreen-16.png -------------------------------------------------------------------------------- /src/icons/dark/fullscreen-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/fullscreen-22.png -------------------------------------------------------------------------------- /src/icons/dark/gear-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/gear-16.png -------------------------------------------------------------------------------- /src/icons/dark/goto-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/goto-16.png -------------------------------------------------------------------------------- /src/icons/dark/goto-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/goto-22.png -------------------------------------------------------------------------------- /src/icons/dark/help-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/help-16.png -------------------------------------------------------------------------------- /src/icons/dark/help-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/help-22.png -------------------------------------------------------------------------------- /src/icons/dark/hex-mode-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/hex-mode-16.png -------------------------------------------------------------------------------- /src/icons/dark/history-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/history-16.png -------------------------------------------------------------------------------- /src/icons/dark/home-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/home-16.png -------------------------------------------------------------------------------- /src/icons/dark/info-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/info-16.png -------------------------------------------------------------------------------- /src/icons/dark/info-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/info-22.png -------------------------------------------------------------------------------- /src/icons/dark/license-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/license-16.png -------------------------------------------------------------------------------- /src/icons/dark/line-numbers-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/line-numbers-16.png -------------------------------------------------------------------------------- /src/icons/dark/move-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/move-16.png -------------------------------------------------------------------------------- /src/icons/dark/move-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/move-22.png -------------------------------------------------------------------------------- /src/icons/dark/multi-rename-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/multi-rename-16.png -------------------------------------------------------------------------------- /src/icons/dark/multi-rename-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/multi-rename-22.png -------------------------------------------------------------------------------- /src/icons/dark/open-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/open-16.png -------------------------------------------------------------------------------- /src/icons/dark/pack-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pack-16.png -------------------------------------------------------------------------------- /src/icons/dark/pack-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pack-22.png -------------------------------------------------------------------------------- /src/icons/dark/pane-same-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pane-same-16.png -------------------------------------------------------------------------------- /src/icons/dark/pane-swap-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/pane-swap-16.png -------------------------------------------------------------------------------- /src/icons/dark/refresh-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/refresh-16.png -------------------------------------------------------------------------------- /src/icons/dark/refresh-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/refresh-22.png -------------------------------------------------------------------------------- /src/icons/dark/rename-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rename-16.png -------------------------------------------------------------------------------- /src/icons/dark/rename-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rename-22.png -------------------------------------------------------------------------------- /src/icons/dark/rotate-left-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rotate-left-16.png -------------------------------------------------------------------------------- /src/icons/dark/rotate-right-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/rotate-right-16.png -------------------------------------------------------------------------------- /src/icons/dark/saladin-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-16.png -------------------------------------------------------------------------------- /src/icons/dark/saladin-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-22.png -------------------------------------------------------------------------------- /src/icons/dark/saladin-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-32.png -------------------------------------------------------------------------------- /src/icons/dark/saladin-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/saladin-48.png -------------------------------------------------------------------------------- /src/icons/dark/select-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-16.png -------------------------------------------------------------------------------- /src/icons/dark/select-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-22.png -------------------------------------------------------------------------------- /src/icons/dark/select-all-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-all-16.png -------------------------------------------------------------------------------- /src/icons/dark/select-invert-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/select-invert-16.png -------------------------------------------------------------------------------- /src/icons/dark/terminal-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/terminal-16.png -------------------------------------------------------------------------------- /src/icons/dark/terminal-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/terminal-22.png -------------------------------------------------------------------------------- /src/icons/dark/trashcan-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/trashcan-16.png -------------------------------------------------------------------------------- /src/icons/dark/trashcan-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/trashcan-22.png -------------------------------------------------------------------------------- /src/icons/dark/type-binary-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/type-binary-16.png -------------------------------------------------------------------------------- /src/icons/dark/type-image-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/type-image-16.png -------------------------------------------------------------------------------- /src/icons/dark/type-text-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/type-text-16.png -------------------------------------------------------------------------------- /src/icons/dark/unselect-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/unselect-16.png -------------------------------------------------------------------------------- /src/icons/dark/unselect-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/unselect-22.png -------------------------------------------------------------------------------- /src/icons/dark/unselect-all-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/unselect-all-16.png -------------------------------------------------------------------------------- /src/icons/dark/view-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-16.png -------------------------------------------------------------------------------- /src/icons/dark/view-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-22.png -------------------------------------------------------------------------------- /src/icons/dark/view-hidden-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-hidden-16.png -------------------------------------------------------------------------------- /src/icons/dark/view-hidden-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-hidden-22.png -------------------------------------------------------------------------------- /src/icons/dark/view-selected-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/view-selected-16.png -------------------------------------------------------------------------------- /src/icons/dark/warning-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/warning-16.png -------------------------------------------------------------------------------- /src/icons/dark/web-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/web-16.png -------------------------------------------------------------------------------- /src/icons/dark/word-wrap-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/word-wrap-16.png -------------------------------------------------------------------------------- /src/icons/dark/zoom-fit-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-fit-16.png -------------------------------------------------------------------------------- /src/icons/dark/zoom-in-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-in-16.png -------------------------------------------------------------------------------- /src/icons/dark/zoom-orig-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-orig-16.png -------------------------------------------------------------------------------- /src/icons/dark/zoom-out-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/dark/zoom-out-16.png -------------------------------------------------------------------------------- /src/icons/delete-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/delete-16.png -------------------------------------------------------------------------------- /src/icons/delete-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/delete-22.png -------------------------------------------------------------------------------- /src/icons/edit-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-16.png -------------------------------------------------------------------------------- /src/icons/edit-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-22.png -------------------------------------------------------------------------------- /src/icons/edit-copy-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-copy-16.png -------------------------------------------------------------------------------- /src/icons/edit-copy-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-copy-22.png -------------------------------------------------------------------------------- /src/icons/edit-cut-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-cut-16.png -------------------------------------------------------------------------------- /src/icons/edit-cut-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-cut-22.png -------------------------------------------------------------------------------- /src/icons/edit-paste-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-paste-16.png -------------------------------------------------------------------------------- /src/icons/edit-paste-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/edit-paste-22.png -------------------------------------------------------------------------------- /src/icons/encoding-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/encoding-16.png -------------------------------------------------------------------------------- /src/icons/explore-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/explore-16.png -------------------------------------------------------------------------------- /src/icons/explore-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/explore-22.png -------------------------------------------------------------------------------- /src/icons/file-new-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/file-new-16.png -------------------------------------------------------------------------------- /src/icons/file-new-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/file-new-22.png -------------------------------------------------------------------------------- /src/icons/find-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-16.png -------------------------------------------------------------------------------- /src/icons/find-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-22.png -------------------------------------------------------------------------------- /src/icons/find-next-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-next-16.png -------------------------------------------------------------------------------- /src/icons/find-previous-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-previous-16.png -------------------------------------------------------------------------------- /src/icons/find-text-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/find-text-16.png -------------------------------------------------------------------------------- /src/icons/folder-compare-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/folder-compare-16.png -------------------------------------------------------------------------------- /src/icons/folder-new-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/folder-new-16.png -------------------------------------------------------------------------------- /src/icons/folder-new-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/folder-new-22.png -------------------------------------------------------------------------------- /src/icons/ftp-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/ftp-16.png -------------------------------------------------------------------------------- /src/icons/ftp-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/ftp-22.png -------------------------------------------------------------------------------- /src/icons/fullscreen-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/fullscreen-16.png -------------------------------------------------------------------------------- /src/icons/fullscreen-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/fullscreen-22.png -------------------------------------------------------------------------------- /src/icons/gear-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/gear-16.png -------------------------------------------------------------------------------- /src/icons/goto-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/goto-16.png -------------------------------------------------------------------------------- /src/icons/goto-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/goto-22.png -------------------------------------------------------------------------------- /src/icons/help-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/help-16.png -------------------------------------------------------------------------------- /src/icons/help-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/help-22.png -------------------------------------------------------------------------------- /src/icons/hex-mode-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/hex-mode-16.png -------------------------------------------------------------------------------- /src/icons/history-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/history-16.png -------------------------------------------------------------------------------- /src/icons/home-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/home-16.png -------------------------------------------------------------------------------- /src/icons/info-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/info-16.png -------------------------------------------------------------------------------- /src/icons/license-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/license-16.png -------------------------------------------------------------------------------- /src/icons/line-numbers-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/line-numbers-16.png -------------------------------------------------------------------------------- /src/icons/move-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/move-16.png -------------------------------------------------------------------------------- /src/icons/move-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/move-22.png -------------------------------------------------------------------------------- /src/icons/multi-rename-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/multi-rename-16.png -------------------------------------------------------------------------------- /src/icons/multi-rename-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/multi-rename-22.png -------------------------------------------------------------------------------- /src/icons/open-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/open-16.png -------------------------------------------------------------------------------- /src/icons/pack-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pack-16.png -------------------------------------------------------------------------------- /src/icons/pack-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pack-22.png -------------------------------------------------------------------------------- /src/icons/pane-same-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pane-same-16.png -------------------------------------------------------------------------------- /src/icons/pane-swap-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/pane-swap-16.png -------------------------------------------------------------------------------- /src/icons/refresh-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/refresh-16.png -------------------------------------------------------------------------------- /src/icons/refresh-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/refresh-22.png -------------------------------------------------------------------------------- /src/icons/rename-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rename-16.png -------------------------------------------------------------------------------- /src/icons/rename-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rename-22.png -------------------------------------------------------------------------------- /src/icons/rotate-left-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rotate-left-16.png -------------------------------------------------------------------------------- /src/icons/rotate-right-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/rotate-right-16.png -------------------------------------------------------------------------------- /src/icons/saladin-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-16.png -------------------------------------------------------------------------------- /src/icons/saladin-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-22.png -------------------------------------------------------------------------------- /src/icons/saladin-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-32.png -------------------------------------------------------------------------------- /src/icons/saladin-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/saladin-48.png -------------------------------------------------------------------------------- /src/icons/select-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-16.png -------------------------------------------------------------------------------- /src/icons/select-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-22.png -------------------------------------------------------------------------------- /src/icons/select-all-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-all-16.png -------------------------------------------------------------------------------- /src/icons/select-invert-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/select-invert-16.png -------------------------------------------------------------------------------- /src/icons/terminal-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/terminal-16.png -------------------------------------------------------------------------------- /src/icons/terminal-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/terminal-22.png -------------------------------------------------------------------------------- /src/icons/trashcan-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/trashcan-16.png -------------------------------------------------------------------------------- /src/icons/trashcan-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/trashcan-22.png -------------------------------------------------------------------------------- /src/icons/type-binary-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/type-binary-16.png -------------------------------------------------------------------------------- /src/icons/type-image-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/type-image-16.png -------------------------------------------------------------------------------- /src/icons/type-text-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/type-text-16.png -------------------------------------------------------------------------------- /src/icons/unselect-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/unselect-16.png -------------------------------------------------------------------------------- /src/icons/unselect-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/unselect-22.png -------------------------------------------------------------------------------- /src/icons/unselect-all-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/unselect-all-16.png -------------------------------------------------------------------------------- /src/icons/view-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-16.png -------------------------------------------------------------------------------- /src/icons/view-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-22.png -------------------------------------------------------------------------------- /src/icons/view-hidden-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-hidden-16.png -------------------------------------------------------------------------------- /src/icons/view-hidden-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-hidden-22.png -------------------------------------------------------------------------------- /src/icons/view-selected-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/view-selected-16.png -------------------------------------------------------------------------------- /src/icons/warning-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/warning-16.png -------------------------------------------------------------------------------- /src/icons/web-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/web-16.png -------------------------------------------------------------------------------- /src/icons/word-wrap-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/word-wrap-16.png -------------------------------------------------------------------------------- /src/icons/zoom-fit-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-fit-16.png -------------------------------------------------------------------------------- /src/icons/zoom-in-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-in-16.png -------------------------------------------------------------------------------- /src/icons/zoom-orig-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-orig-16.png -------------------------------------------------------------------------------- /src/icons/zoom-out-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/icons/zoom-out-16.png -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "application.h" 20 | 21 | int main( int argc, char** argv ) 22 | { 23 | Application application( argc, argv ); 24 | 25 | return application.exec(); 26 | } 27 | -------------------------------------------------------------------------------- /src/multirenamewidget.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef MULTIRENAMEWIDGET_H 20 | #define MULTIRENAMEWIDGET_H 21 | 22 | #include 23 | 24 | class MultiRenameWidget : public QWidget 25 | { 26 | Q_OBJECT 27 | public: 28 | explicit MultiRenameWidget( QWidget* parent ); 29 | ~MultiRenameWidget(); 30 | 31 | public: 32 | void setInputNames( const QStringList& names ); 33 | 34 | const QStringList& outputNames() const { return m_outputNames; } 35 | 36 | private slots: 37 | void transformNames(); 38 | 39 | private: 40 | QStringList m_inputNames; 41 | QStringList m_outputNames; 42 | 43 | QLineEdit* m_nameEdit; 44 | QLineEdit* m_extensionEdit; 45 | QLineEdit* m_searchEdit; 46 | QLineEdit* m_replaceEdit; 47 | 48 | QCheckBox* m_regExpCheckBox; 49 | QCheckBox* m_caseCheckBox; 50 | QComboBox* m_caseComboBox; 51 | 52 | QTreeWidget* m_list; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /src/openftpdialog.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef OPENFTPDIALOG_H 20 | #define OPENFTPDIALOG_H 21 | 22 | #include 23 | 24 | class OpenFtpDialog : public QDialog 25 | { 26 | Q_OBJECT 27 | public: 28 | OpenFtpDialog( QWidget* parent ); 29 | ~OpenFtpDialog(); 30 | 31 | public: 32 | void setPath( const QString& path ); 33 | void setUser( const QString& user ); 34 | void setPassword( const QString& password ); 35 | 36 | QString path(); 37 | 38 | public: // overrides 39 | void accept(); 40 | 41 | private: 42 | QLineEdit* m_hostEdit; 43 | QSpinBox* m_portSpinBox; 44 | QLineEdit* m_pathEdit; 45 | QCheckBox* m_anonymousCheckBox; 46 | QLineEdit* m_userEdit; 47 | QLineEdit* m_passwordEdit; 48 | }; 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /src/precompiled.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef PRECOMPILED_H 20 | #define PRECOMPILED_H 21 | 22 | #include 23 | #include 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/resources/binaryview.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/resources/bookmarksdialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/resources/guidedialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/resources/imageview.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/resources/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | binaryview.xml 4 | bookmarksdialog.xml 5 | guidedialog.xml 6 | imageview.xml 7 | mainwindow.xml 8 | searchdialog.xml 9 | textview.xml 10 | viewerwindow.xml 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/resources/searchdialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/resources/textview.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/resources/viewerwindow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/saladin.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/saladin.ico -------------------------------------------------------------------------------- /src/saladin.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/src/saladin.rc -------------------------------------------------------------------------------- /src/searchdialog.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SEARCHDIALOG_H 20 | #define SEARCHDIALOG_H 21 | 22 | #include "xmlui/client.h" 23 | 24 | #include 25 | 26 | class ShellFolder; 27 | class FolderItemView; 28 | class SearchItemModel; 29 | class SearchProxyModel; 30 | class ElidedLabel; 31 | 32 | class SearchDialog : public QDialog, public XmlUi::Client 33 | { 34 | Q_OBJECT 35 | public: 36 | SearchDialog( ShellFolder* folder, QWidget* parent ); 37 | ~SearchDialog(); 38 | 39 | public: // overrides 40 | void accept(); 41 | void reject(); 42 | 43 | private slots: 44 | void textToggled( bool on ); 45 | 46 | void folderEntered( const QString& path ); 47 | void updateResults(); 48 | 49 | void searchCompleted(); 50 | 51 | void contextMenuRequested( const QPoint& pos ); 52 | 53 | void itemDoubleClicked( const QModelIndex& index ); 54 | 55 | void viewCurrent(); 56 | void viewAll(); 57 | void editCurrent(); 58 | void gotoFile(); 59 | 60 | void copyNames(); 61 | 62 | private: 63 | ShellFolder* m_folder; 64 | 65 | QLineEdit* m_locationEdit; 66 | QComboBox* m_patternComboBox; 67 | 68 | QCheckBox* m_textCheckBox; 69 | QComboBox* m_textComboBox; 70 | QCheckBox* m_caseCheckBox; 71 | 72 | QDialogButtonBox* m_buttonBox; 73 | 74 | FolderItemView* m_view; 75 | 76 | SearchItemModel* m_model; 77 | SearchProxyModel* m_proxyModel; 78 | 79 | ElidedLabel* m_searchStatus; 80 | ElidedLabel* m_itemsStatus; 81 | }; 82 | 83 | #endif 84 | -------------------------------------------------------------------------------- /src/searchhelper.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SEARCHHELPER_H 20 | #define SEARCHHELPER_H 21 | 22 | #include 23 | 24 | class SearchHelper : public QThread 25 | { 26 | Q_OBJECT 27 | public: 28 | SearchHelper( const QString& pattern, Qt::CaseSensitivity cs ); 29 | ~SearchHelper(); 30 | 31 | public: 32 | void search( const QStringList& files ); 33 | 34 | QList results(); 35 | 36 | void abort(); 37 | 38 | signals: 39 | void completed(); 40 | 41 | protected: // overrides 42 | void run(); 43 | 44 | private: 45 | QStringMatcher m_matcher; 46 | 47 | QMutex m_mutex; 48 | 49 | QWaitCondition m_condition; 50 | 51 | QStringList m_files; 52 | 53 | int m_index; 54 | QList m_results; 55 | 56 | bool m_aborted; 57 | }; 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /src/shell/changenotifywatcher_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef CHANGENOTIFYWATCHER_P_H 20 | #define CHANGENOTIFYWATCHER_P_H 21 | 22 | #include 23 | 24 | #include 25 | 26 | class ChangeNotifyWatcher : public QObject 27 | { 28 | Q_OBJECT 29 | public: 30 | ChangeNotifyWatcher( LPITEMIDLIST pidl, int eventTypes, QObject* parent ); 31 | ~ChangeNotifyWatcher(); 32 | 33 | public: 34 | bool isValid() const; 35 | 36 | signals: 37 | void changeNotify( int eventType, void* arg1, void* arg2 ); 38 | 39 | private: 40 | friend LRESULT CALLBACK ChangeNotifyWatcherProc( HWND window, UINT message, WPARAM wparam, LPARAM lparam ); 41 | 42 | private: 43 | HWND m_window; 44 | 45 | ULONG m_registerId; 46 | }; 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /src/shell/iconcache.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "iconcache_p.h" 20 | 21 | #include 22 | 23 | static QPixmap loadIcon( LPCWSTR pattern, int attributes ) 24 | { 25 | SHFILEINFO info; 26 | DWORD_PTR list = SHGetFileInfo( pattern, attributes, &info, sizeof( info ), 27 | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES ); 28 | 29 | QPixmap icon; 30 | 31 | if ( list != 0 ) { 32 | icon = QtWin::fromHICON( info.hIcon ); 33 | DestroyIcon( info.hIcon ); 34 | } 35 | 36 | return icon; 37 | } 38 | 39 | class IconCacheGlobal 40 | { 41 | public: 42 | IconCacheGlobal(); 43 | ~IconCacheGlobal(); 44 | 45 | public: 46 | QPixmap m_fileIcon; 47 | QPixmap m_directoryIcon; 48 | 49 | QMap m_fileIcons; 50 | }; 51 | 52 | Q_GLOBAL_STATIC( IconCacheGlobal, iconCacheGlobal ) 53 | 54 | IconCacheGlobal::IconCacheGlobal() 55 | { 56 | m_fileIcon = loadIcon( L"*.*", FILE_ATTRIBUTE_NORMAL ); 57 | m_directoryIcon = loadIcon( L"*.*", FILE_ATTRIBUTE_DIRECTORY ); 58 | } 59 | 60 | IconCacheGlobal::~IconCacheGlobal() 61 | { 62 | } 63 | 64 | QPixmap IconCache::fileIcon() 65 | { 66 | return iconCacheGlobal()->m_fileIcon; 67 | } 68 | 69 | QPixmap IconCache::directoryIcon() 70 | { 71 | return iconCacheGlobal()->m_directoryIcon; 72 | } 73 | 74 | QPixmap IconCache::loadFileIcon( const QString& extension ) 75 | { 76 | IconCacheGlobal* g = iconCacheGlobal(); 77 | 78 | QMap::const_iterator it = g->m_fileIcons.find( extension ); 79 | if ( it != g->m_fileIcons.end() ) 80 | return it.value(); 81 | 82 | QString pattern = "*." + extension; 83 | 84 | QPixmap icon = loadIcon( (LPCWSTR)pattern.utf16(), FILE_ATTRIBUTE_NORMAL ); 85 | 86 | g->m_fileIcons.insert( extension, icon ); 87 | 88 | return icon; 89 | } 90 | -------------------------------------------------------------------------------- /src/shell/iconcache_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef ICONCACHE_P_H 20 | #define ICONCACHE_P_H 21 | 22 | #include 23 | 24 | class QPixmap; 25 | class QString; 26 | 27 | class IconCache 28 | { 29 | public: 30 | static QPixmap fileIcon(); 31 | static QPixmap directoryIcon(); 32 | 33 | static QPixmap loadFileIcon( const QString& extension ); 34 | }; 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/shell/shell.pri: -------------------------------------------------------------------------------- 1 | HEADERS += shell/changenotifywatcher_p.h \ 2 | shell/iconcache_p.h \ 3 | shell/shellbase_p.h \ 4 | shell/shellcomputer.h \ 5 | shell/shellcomputer_p.h \ 6 | shell/shelldrive.h \ 7 | shell/shelldrive_p.h \ 8 | shell/shelldropdata.h \ 9 | shell/shelldropdata_p.h \ 10 | shell/shellfolder.h \ 11 | shell/shellfolder_p.h \ 12 | shell/shellitem.h \ 13 | shell/shellitem_p.h \ 14 | shell/shellpidl.h \ 15 | shell/shellpidl_p.h \ 16 | shell/shellselection.h \ 17 | shell/shellselection_p.h \ 18 | shell/streamdevice.h \ 19 | shell/streamdevice_p.h 20 | 21 | SOURCES += shell/changenotifywatcher.cpp \ 22 | shell/iconcache.cpp \ 23 | shell/shellbase.cpp \ 24 | shell/shellcomputer.cpp \ 25 | shell/shelldrive.cpp \ 26 | shell/shelldropdata.cpp \ 27 | shell/shellfolder.cpp \ 28 | shell/shellitem.cpp \ 29 | shell/shellpidl.cpp \ 30 | shell/shellselection.cpp \ 31 | shell/streamdevice.cpp 32 | -------------------------------------------------------------------------------- /src/shell/shellbase.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "shellbase_p.h" 20 | 21 | #include 22 | 23 | ShellBasePrivate::ShellBasePrivate() : 24 | m_pidl( NULL ), 25 | m_folder( NULL ) 26 | { 27 | } 28 | 29 | ShellBasePrivate::~ShellBasePrivate() 30 | { 31 | if ( m_pidl ) { 32 | CoTaskMemFree( m_pidl ); 33 | m_pidl = NULL; 34 | } 35 | 36 | if ( m_folder ) { 37 | m_folder->Release(); 38 | m_folder = NULL; 39 | } 40 | } 41 | 42 | QString ShellBasePrivate::displayName( LPITEMIDLIST pidl, int flags ) 43 | { 44 | QString result; 45 | 46 | STRRET strret; 47 | HRESULT hr = m_folder->GetDisplayNameOf( pidl, flags, &strret ); 48 | 49 | if ( SUCCEEDED( hr ) ) { 50 | wchar_t buffer[ MAX_PATH ]; 51 | hr = StrRetToBuf( &strret, pidl, buffer, MAX_PATH ); 52 | 53 | if SUCCEEDED( hr ) 54 | result = QString::fromUtf16( (const ushort*)buffer ); 55 | } 56 | 57 | return result; 58 | } 59 | 60 | QPixmap ShellBasePrivate::extractIcon( LPITEMIDLIST pidl ) 61 | { 62 | QPixmap result; 63 | 64 | LPITEMIDLIST absolutePidl = ILCombine( m_pidl, pidl ); 65 | 66 | SHFILEINFO info; 67 | DWORD_PTR status = SHGetFileInfo( (LPCWSTR)absolutePidl, 0, &info, sizeof( info ), 68 | SHGFI_PIDL | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_ADDOVERLAYS ); 69 | 70 | CoTaskMemFree( absolutePidl ); 71 | 72 | if ( status ) { 73 | result = QtWin::fromHICON( info.hIcon ); 74 | DestroyIcon( info.hIcon ); 75 | } 76 | 77 | return result; 78 | } 79 | -------------------------------------------------------------------------------- /src/shell/shellbase_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLBASE_P_H 20 | #define SHELLBASE_P_H 21 | 22 | #include 23 | 24 | class ShellBasePrivate 25 | { 26 | public: 27 | ShellBasePrivate(); 28 | ~ShellBasePrivate(); 29 | 30 | public: 31 | QString displayName( LPITEMIDLIST pidl, int flags ); 32 | QPixmap extractIcon( LPITEMIDLIST pidl ); 33 | 34 | public: 35 | LPITEMIDLIST m_pidl; 36 | IShellFolder* m_folder; 37 | }; 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/shell/shellcomputer.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLCOMPUTER_H 20 | #define SHELLCOMPUTER_H 21 | 22 | #include "shelldrive.h" 23 | #include "shellselection.h" 24 | 25 | #include 26 | 27 | class ShellFolder; 28 | class ShellComputerPrivate; 29 | 30 | class ShellComputer : public QObject 31 | { 32 | Q_OBJECT 33 | public: 34 | explicit ShellComputer( QWidget* parent ); 35 | ~ShellComputer(); 36 | 37 | public: 38 | QList listDrives(); 39 | 40 | ShellFolder* openRootFolder( const ShellDrive& drive ); 41 | 42 | ShellSelection::MenuCommand showContextMenu( const ShellDrive& drive, const QPoint& pos, ShellSelection::Flags flags ); 43 | 44 | bool startWatching(); 45 | 46 | public: // overrides 47 | QWidget* parent() const { return qobject_cast( QObject::parent() ); } 48 | 49 | signals: 50 | void driveChanged( const ShellDrive& drive ); 51 | void computerUpdated(); 52 | 53 | private slots: 54 | void changeNotify( int eventType, void* arg1, void* arg2 ); 55 | 56 | private: 57 | ShellComputerPrivate* d; 58 | 59 | friend class ShellDropData; 60 | }; 61 | 62 | #endif 63 | -------------------------------------------------------------------------------- /src/shell/shellcomputer_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLCOMPUTER_P_H 20 | #define SHELLCOMPUTER_P_H 21 | 22 | #include "shellbase_p.h" 23 | 24 | #include 25 | 26 | class ShellComputer; 27 | class ShellDrive; 28 | 29 | class ShellComputerPrivate : public ShellBasePrivate 30 | { 31 | public: 32 | ShellComputerPrivate(); 33 | ~ShellComputerPrivate(); 34 | 35 | public: 36 | ShellDrive makeDrive( LPITEMIDLIST pidl ); 37 | ShellDrive makeRealNotifyDrive( LPITEMIDLIST pidl ); 38 | 39 | bool readDriveProperties( ShellDrive& drive ); 40 | 41 | public: 42 | ShellComputer* q; 43 | }; 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/shell/shelldrive.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "shelldrive.h" 20 | #include "shelldrive_p.h" 21 | 22 | ShellDrivePrivate::ShellDrivePrivate() : 23 | m_pidl( NULL ) 24 | { 25 | } 26 | 27 | ShellDrivePrivate::ShellDrivePrivate( const ShellDrivePrivate& other ) : QSharedData( other ), 28 | m_pidl( ILClone( other.m_pidl ) ) 29 | { 30 | } 31 | 32 | ShellDrivePrivate::~ShellDrivePrivate() 33 | { 34 | if ( m_pidl ) { 35 | CoTaskMemFree( m_pidl ); 36 | m_pidl = NULL; 37 | } 38 | } 39 | 40 | ShellDrive::ShellDrive() : 41 | d( new ShellDrivePrivate() ) 42 | { 43 | } 44 | 45 | ShellDrive::~ShellDrive() 46 | { 47 | } 48 | 49 | ShellDrive::ShellDrive( const ShellDrive& other ) : 50 | d( other.d ) 51 | { 52 | } 53 | 54 | ShellDrive& ShellDrive::operator =( const ShellDrive& other ) 55 | { 56 | d = other.d; 57 | return *this; 58 | } 59 | 60 | bool ShellDrive::isValid() const 61 | { 62 | return d->m_pidl != NULL; 63 | } 64 | 65 | char ShellDrive::letter() const 66 | { 67 | return d->m_letter; 68 | } 69 | 70 | QString ShellDrive::name() const 71 | { 72 | return d->m_name; 73 | } 74 | 75 | QPixmap ShellDrive::icon() const 76 | { 77 | return d->m_icon; 78 | } 79 | 80 | bool ShellDrive::getFreeSpace( qint64* free, qint64* total ) const 81 | { 82 | QString path = QLatin1Char( d->m_letter ) + QLatin1String( ":\\" ); 83 | 84 | ULARGE_INTEGER freeBytes; 85 | ULARGE_INTEGER totalBytes; 86 | 87 | if ( GetDiskFreeSpaceEx( (LPCWSTR)path.utf16(), &freeBytes, &totalBytes, NULL ) ) 88 | { 89 | *free = freeBytes.QuadPart; 90 | *total = totalBytes.QuadPart; 91 | return true; 92 | } 93 | 94 | return false; 95 | } 96 | 97 | bool operator ==( const ShellDrive& lhs, const ShellDrive& rhs ) 98 | { 99 | return ILIsEqual( lhs.d->m_pidl, rhs.d->m_pidl ); 100 | } 101 | 102 | bool operator !=( const ShellDrive& lhs, const ShellDrive& rhs ) 103 | { 104 | return !( lhs == rhs ); 105 | } 106 | -------------------------------------------------------------------------------- /src/shell/shelldrive.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLDRIVE_H 20 | #define SHELLDRIVE_H 21 | 22 | #include 23 | 24 | class ShellDrivePrivate; 25 | 26 | class ShellDrive 27 | { 28 | public: 29 | ShellDrive(); 30 | ~ShellDrive(); 31 | 32 | ShellDrive( const ShellDrive& other ); 33 | ShellDrive& operator =( const ShellDrive& other ); 34 | 35 | public: 36 | bool isValid() const; 37 | 38 | char letter() const; 39 | QString name() const; 40 | QPixmap icon() const; 41 | 42 | bool getFreeSpace( qint64* free, qint64* total ) const; 43 | 44 | public: 45 | friend bool operator ==( const ShellDrive& lhs, const ShellDrive& rhs ); 46 | friend bool operator !=( const ShellDrive& lhs, const ShellDrive& rhs ); 47 | 48 | private: 49 | QSharedDataPointer d; 50 | 51 | friend class ShellComputer; 52 | friend class ShellComputerPrivate; 53 | friend class ShellDropData; 54 | }; 55 | 56 | Q_DECLARE_TYPEINFO( ShellDrive, Q_MOVABLE_TYPE ); 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /src/shell/shelldrive_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLDRIVE_P_H 20 | #define SHELLDRIVE_P_H 21 | 22 | #include "shelldrive.h" 23 | 24 | #include 25 | 26 | class ShellDrivePrivate : public QSharedData 27 | { 28 | public: 29 | ShellDrivePrivate(); 30 | ShellDrivePrivate( const ShellDrivePrivate& other ); 31 | ~ShellDrivePrivate(); 32 | 33 | public: 34 | LPITEMIDLIST m_pidl; 35 | 36 | char m_letter; 37 | QString m_name; 38 | QPixmap m_icon; 39 | }; 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/shell/shelldropdata.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLDROPDATA_H 20 | #define SHELLDROPDATA_H 21 | 22 | #include 23 | 24 | class ShellDropDataPrivate; 25 | class ShellFolder; 26 | class ShellComputer; 27 | class ShellItem; 28 | class ShellDrive; 29 | 30 | class ShellDropData : public QObject 31 | { 32 | Q_OBJECT 33 | public: 34 | ShellDropData( QDropEvent* e, ShellFolder* folder, QWidget* parent ); 35 | ShellDropData( QDropEvent* e, ShellComputer* computer, QWidget* parent ); 36 | ~ShellDropData(); 37 | 38 | public: 39 | bool isValid() const; 40 | 41 | Qt::DropAction dropAction() const; 42 | 43 | bool dragToFolder( QDropEvent* e ); 44 | bool dragToParent( QDropEvent* e ); 45 | bool dragToItem( QDropEvent* e, const ShellItem& item ); 46 | bool dragToDrive( QDropEvent* e, const ShellDrive& drive ); 47 | 48 | bool drop(); 49 | 50 | public: 51 | static void registerDropTarget( QWindow* window ); 52 | static void unregisterDropTarget( QWindow* window ); 53 | 54 | public: // overrides 55 | QWidget* parent() const { return qobject_cast( QObject::parent() ); } 56 | 57 | private: 58 | ShellDropDataPrivate* d; 59 | 60 | friend class ShellSelection; 61 | }; 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /src/shell/shelldropdata_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLDROPDATA_P_H 20 | #define SHELLDROPDATA_P_H 21 | 22 | #include "shelldropdata.h" 23 | #include "shellitem.h" 24 | #include "shelldrive.h" 25 | 26 | class WindowDropTarget; 27 | 28 | class ShellDropDataPrivate 29 | { 30 | public: 31 | enum Target 32 | { 33 | NoTarget, 34 | FolderTarget, 35 | ParentTarget, 36 | ItemTarget, 37 | DriveTarget 38 | }; 39 | 40 | public: 41 | ShellDropDataPrivate(); 42 | ~ShellDropDataPrivate(); 43 | 44 | public: 45 | bool dragOver( QDropEvent* e ); 46 | 47 | void dragLeave(); 48 | 49 | public: 50 | ShellDropData* q; 51 | 52 | IDataObject* m_dataObject; 53 | 54 | Target m_target; 55 | 56 | ShellFolder* m_folder; 57 | ShellComputer* m_computer; 58 | 59 | ShellItem m_item; 60 | ShellDrive m_drive; 61 | 62 | bool m_ignoreItem; 63 | 64 | IDropTarget* m_dropTarget; 65 | LPITEMIDLIST m_targetPidl; 66 | 67 | POINTL m_point; 68 | DWORD m_keyState; 69 | DWORD m_possibleEffect; 70 | 71 | bool m_dragEntered; 72 | Qt::DropAction m_dropAction; 73 | 74 | static WindowDropTarget* m_windowDropTarget; 75 | 76 | static IDataObject* m_dropDataObject; 77 | static QMimeData* m_dropMimeData; 78 | }; 79 | 80 | #endif 81 | -------------------------------------------------------------------------------- /src/shell/shellfolder_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLFOLDER_P_H 20 | #define SHELLFOLDER_P_H 21 | 22 | #include "shellbase_p.h" 23 | 24 | #include 25 | 26 | class ShellFolder; 27 | 28 | class ShellFolderPrivate : public ShellBasePrivate 29 | { 30 | public: 31 | ShellFolderPrivate(); 32 | ~ShellFolderPrivate(); 33 | 34 | public: 35 | void readProperties(); 36 | 37 | ShellItem makeItem( LPITEMIDLIST pidl ); 38 | ShellItem makeNotifyItem( LPITEMIDLIST pidl ); 39 | ShellItem makeRealNotifyItem( LPITEMIDLIST pidl ); 40 | 41 | void readItemProperties( ShellItem& item ); 42 | 43 | ShellFolder* createParentFolder( ShellItem& item ); 44 | 45 | qint64 calculateSize( IShellFolder* parentFolder, LPITEMIDLIST pidl ); 46 | 47 | public: 48 | ShellFolder* q; 49 | 50 | QString m_path; 51 | 52 | QString m_user; 53 | QString m_password; 54 | 55 | bool m_hasParent; 56 | }; 57 | 58 | #endif 59 | -------------------------------------------------------------------------------- /src/shell/shellitem.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLITEM_H 20 | #define SHELLITEM_H 21 | 22 | #include 23 | 24 | class ShellItemPrivate; 25 | 26 | class ShellItem 27 | { 28 | public: 29 | enum Attribute 30 | { 31 | // shell attributes 32 | Folder = 1, 33 | Stream = 2, 34 | FileSystem = 4, 35 | CanRename = 8, 36 | // file system attributes 37 | ReadOnly = 0x100, 38 | Hidden = 0x200, 39 | System = 0x400, 40 | Directory = 0x800, 41 | Archive = 0x1000, 42 | Compressed = 0x2000, 43 | Encrypted = 0x4000, 44 | ReparsePoint = 0x8000, 45 | }; 46 | Q_DECLARE_FLAGS( Attributes, Attribute ); 47 | 48 | enum StateFlag 49 | { 50 | HasProperties = 1, 51 | HasExtractedIcon = 2, 52 | HasCalculatedSize = 4, 53 | IsSelected = 8 54 | }; 55 | Q_DECLARE_FLAGS( State, StateFlag ); 56 | 57 | public: 58 | ShellItem(); 59 | ~ShellItem(); 60 | 61 | ShellItem( const ShellItem& other ); 62 | ShellItem& operator =( const ShellItem& other ); 63 | 64 | public: 65 | bool isValid() const; 66 | 67 | QString name() const; 68 | qint64 size() const; 69 | QDateTime lastModified() const; 70 | QPixmap icon() const; 71 | 72 | Attributes attributes() const; 73 | State state() const; 74 | 75 | void setSelected( bool selected ); 76 | bool isSelected() const; 77 | 78 | public: 79 | friend bool operator ==( const ShellItem& lhs, const ShellItem& rhs ); 80 | friend bool operator !=( const ShellItem& lhs, const ShellItem& rhs ); 81 | 82 | private: 83 | QSharedDataPointer d; 84 | 85 | friend class ShellFolder; 86 | friend class ShellFolderPrivate; 87 | friend class ShellSelection; 88 | friend class ShellSelectionPrivate; 89 | friend class ShellComputer; 90 | friend class ShellDropData; 91 | }; 92 | 93 | Q_DECLARE_OPERATORS_FOR_FLAGS( ShellItem::Attributes ) 94 | Q_DECLARE_OPERATORS_FOR_FLAGS( ShellItem::State ) 95 | 96 | Q_DECLARE_TYPEINFO( ShellItem, Q_MOVABLE_TYPE ); 97 | 98 | #endif 99 | -------------------------------------------------------------------------------- /src/shell/shellitem_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLITEM_P_H 20 | #define SHELLITEM_P_H 21 | 22 | #include "shellitem.h" 23 | 24 | #include 25 | 26 | class ShellItemPrivate : public QSharedData 27 | { 28 | public: 29 | ShellItemPrivate(); 30 | ShellItemPrivate( const ShellItemPrivate& other ); 31 | ~ShellItemPrivate(); 32 | 33 | public: 34 | LPITEMIDLIST m_pidl; 35 | 36 | QString m_name; 37 | qint64 m_size; 38 | QDateTime m_modified; 39 | QPixmap m_icon; 40 | 41 | ShellItem::Attributes m_attributes; 42 | ShellItem::State m_state; 43 | }; 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/shell/shellpidl.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "shellpidl.h" 20 | #include "shellpidl_p.h" 21 | 22 | ShellPidlPrivate::ShellPidlPrivate() : 23 | m_attributes( 0 ) 24 | { 25 | } 26 | 27 | ShellPidlPrivate::ShellPidlPrivate( const ShellPidlPrivate& other ) : QSharedData( other ), 28 | m_data( other.m_data ), 29 | m_path( other.m_path ), 30 | m_attributes( other.m_attributes ) 31 | { 32 | } 33 | 34 | ShellPidlPrivate::~ShellPidlPrivate() 35 | { 36 | } 37 | 38 | ShellPidl::ShellPidl() : 39 | d( new ShellPidlPrivate() ) 40 | { 41 | } 42 | 43 | ShellPidl::~ShellPidl() 44 | { 45 | } 46 | 47 | ShellPidl::ShellPidl( const ShellPidl& other ) : 48 | d( other.d ) 49 | { 50 | } 51 | 52 | ShellPidl& ShellPidl::operator =( const ShellPidl& other ) 53 | { 54 | d = other.d; 55 | return *this; 56 | } 57 | 58 | bool ShellPidl::isValid() const 59 | { 60 | return !d->m_data.isEmpty(); 61 | } 62 | 63 | QString ShellPidl::path() const 64 | { 65 | return d->m_path; 66 | } 67 | 68 | ShellItem::Attributes ShellPidl::attributes() const 69 | { 70 | return d->m_attributes; 71 | } 72 | 73 | bool operator ==( const ShellPidl& lhs, const ShellPidl& rhs ) 74 | { 75 | return ILIsEqual( lhs.d->pidl(), rhs.d->pidl() ); 76 | } 77 | 78 | bool operator !=( const ShellPidl& lhs, const ShellPidl& rhs ) 79 | { 80 | return !( lhs == rhs ); 81 | } 82 | 83 | QDataStream& operator <<( QDataStream& stream, const ShellPidl& pidl ) 84 | { 85 | return stream << pidl.d->m_data << pidl.d->m_path; 86 | } 87 | 88 | QDataStream& operator >>( QDataStream& stream, ShellPidl& pidl ) 89 | { 90 | return stream >> pidl.d->m_data >> pidl.d->m_path; 91 | } 92 | 93 | void ShellPidl::registerMetaType() 94 | { 95 | qRegisterMetaTypeStreamOperators( "ShellPidl" ); 96 | } 97 | -------------------------------------------------------------------------------- /src/shell/shellpidl.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLPIDL_H 20 | #define SHELLPIDL_H 21 | 22 | #include 23 | 24 | #include "shellitem.h" 25 | 26 | class ShellPidlPrivate; 27 | 28 | class ShellPidl 29 | { 30 | public: 31 | ShellPidl(); 32 | ~ShellPidl(); 33 | 34 | ShellPidl( const ShellPidl& other ); 35 | ShellPidl& operator =( const ShellPidl& other ); 36 | 37 | public: 38 | bool isValid() const; 39 | 40 | QString path() const; 41 | 42 | ShellItem::Attributes attributes() const; 43 | 44 | public: 45 | static void registerMetaType(); 46 | 47 | public: 48 | friend bool operator ==( const ShellPidl& lhs, const ShellPidl& rhs ); 49 | friend bool operator !=( const ShellPidl& lhs, const ShellPidl& rhs ); 50 | 51 | friend QDataStream& operator <<( QDataStream& stream, const ShellPidl& pidl ); 52 | friend QDataStream& operator >>( QDataStream& stream, ShellPidl& pidl ); 53 | 54 | private: 55 | QSharedDataPointer d; 56 | 57 | friend class ShellFolder; 58 | friend class StreamDevice; 59 | }; 60 | 61 | Q_DECLARE_METATYPE( ShellPidl ) 62 | 63 | Q_DECLARE_TYPEINFO( ShellPidl, Q_MOVABLE_TYPE ); 64 | 65 | #endif 66 | -------------------------------------------------------------------------------- /src/shell/shellpidl_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLPIDL_P_H 20 | #define SHELLPIDL_P_H 21 | 22 | #include "shellpidl.h" 23 | 24 | #include 25 | 26 | class ShellPidlPrivate : public QSharedData 27 | { 28 | public: 29 | ShellPidlPrivate(); 30 | ShellPidlPrivate( const ShellPidlPrivate& other ); 31 | ~ShellPidlPrivate(); 32 | 33 | public: 34 | LPCITEMIDLIST pidl() const { return (LPCITEMIDLIST)m_data.data(); } 35 | 36 | public: 37 | QByteArray m_data; 38 | QString m_path; 39 | ShellItem::Attributes m_attributes; 40 | }; 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/shell/shellselection.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLSELECTION_H 20 | #define SHELLSELECTION_H 21 | 22 | #include 23 | 24 | class ShellFolder; 25 | class ShellItem; 26 | class ShellDropData; 27 | class ShellSelectionPrivate; 28 | 29 | class ShellSelection : public QObject 30 | { 31 | Q_OBJECT 32 | public: 33 | enum TransferType 34 | { 35 | Copy, 36 | Move 37 | }; 38 | 39 | enum Flag 40 | { 41 | ForceOverwrite = 1, 42 | ForceDelete = 2, 43 | DeletePermanently = 4, 44 | CanOpen = 8, 45 | CanRename = 16, 46 | }; 47 | Q_DECLARE_FLAGS( Flags, Flag ); 48 | 49 | enum MenuCommand 50 | { 51 | NoCommand, 52 | InternalCommand, 53 | Open, 54 | Rename 55 | }; 56 | 57 | public: 58 | ShellSelection( ShellFolder* folder, const QList& items, QWidget* parent ); 59 | ~ShellSelection(); 60 | 61 | public: 62 | ShellFolder* folder() const; 63 | QList items() const; 64 | 65 | bool canTransferTo( ShellFolder* targetFolder, TransferType type ); 66 | bool transferTo( ShellFolder* targetFolder, TransferType type, Flags flags, QStringList newNames ); 67 | 68 | bool canDragDropTo( ShellFolder* targetFolder, TransferType type ); 69 | bool dragDropTo( ShellFolder* targetFolder, TransferType type ); 70 | 71 | bool canDelete(); 72 | bool deleteSelection( Flags flags ); 73 | 74 | MenuCommand showContextMenu( const QPoint& pos, Flags flags ); 75 | 76 | bool invokeCommand( const char* verb ); 77 | 78 | bool doDragDrop(); 79 | 80 | static ShellSelection* draggedSelection( ShellDropData* data ); 81 | 82 | public: // overrides 83 | QWidget* parent() const { return qobject_cast( QObject::parent() ); } 84 | 85 | private: 86 | ShellSelectionPrivate* d; 87 | }; 88 | 89 | Q_DECLARE_OPERATORS_FOR_FLAGS( ShellSelection::Flags ) 90 | 91 | #endif 92 | -------------------------------------------------------------------------------- /src/shell/shellselection_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SHELLSELECTION_P_H 20 | #define SHELLSELECTION_P_H 21 | 22 | #include 23 | 24 | class ShellSelectionPrivate 25 | { 26 | public: 27 | ShellSelectionPrivate(); 28 | ~ShellSelectionPrivate(); 29 | 30 | public: 31 | bool dragDropHelper( ShellFolder* targetFolder, ShellSelection::TransferType type, bool doDrop ); 32 | 33 | public: 34 | ShellSelection* q; 35 | 36 | ShellFolder* m_sourceFolder; 37 | QList m_sourceItems; 38 | 39 | static ShellSelection* m_dragSelection; 40 | static IDataObject* m_dragObject; 41 | }; 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /src/shell/streamdevice.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef STREAMDEVICE_H 20 | #define STREAMDEVICE_H 21 | 22 | #include 23 | 24 | class StreamDevicePrivate; 25 | class ShellPidl; 26 | 27 | class StreamDevice : public QIODevice 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit StreamDevice( const ShellPidl& pidl ); 32 | ~StreamDevice(); 33 | 34 | public: 35 | QString name() const; 36 | 37 | public: // overrides 38 | bool open( OpenMode mode ); 39 | 40 | qint64 size() const; 41 | bool seek( qint64 pos ); 42 | 43 | QDateTime lastModified() const; 44 | 45 | protected: // overrides 46 | qint64 readData( char* data, qint64 maxSize ); 47 | qint64 writeData( const char* data, qint64 maxSize ); 48 | 49 | private: 50 | StreamDevicePrivate* d; 51 | }; 52 | 53 | #endif 54 | -------------------------------------------------------------------------------- /src/shell/streamdevice_p.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef STREAMDEVICE_P_H 20 | #define STREAMDEVICE_P_H 21 | 22 | #include "streamdevice.h" 23 | #include "shellpidl.h" 24 | 25 | class StreamDevicePrivate 26 | { 27 | public: 28 | StreamDevicePrivate(); 29 | ~StreamDevicePrivate(); 30 | 31 | public: 32 | StreamDevice* q; 33 | 34 | ShellPidl m_pidl; 35 | 36 | IStream* m_stream; 37 | }; 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/src.pro: -------------------------------------------------------------------------------- 1 | include( ../config.pri ) 2 | 3 | TEMPLATE = app 4 | TARGET = saladin 5 | 6 | CONFIG += qt 7 | QT = core-private gui-private widgets-private network xml winextras 8 | 9 | HEADERS += aboutbox.h \ 10 | application.h \ 11 | bookmark.h \ 12 | bookmark_p.h \ 13 | bookmarksdialog.h \ 14 | drivestripmanager.h \ 15 | findbar.h \ 16 | folderitemdelegate.h \ 17 | folderitemmodel.h \ 18 | folderitemview.h \ 19 | guidedialog.h \ 20 | mainwindow.h \ 21 | multirenamewidget.h \ 22 | openftpdialog.h \ 23 | operationdialog.h \ 24 | panewidget.h \ 25 | searchdialog.h \ 26 | searchhelper.h \ 27 | searchitemmodel.h \ 28 | settingsdialog.h 29 | 30 | SOURCES += aboutbox.cpp \ 31 | application.cpp \ 32 | bookmark.cpp \ 33 | bookmarksdialog.cpp \ 34 | drivestripmanager.cpp \ 35 | findbar.cpp \ 36 | folderitemdelegate.cpp \ 37 | folderitemmodel.cpp \ 38 | folderitemview.cpp \ 39 | guidedialog.cpp \ 40 | main.cpp \ 41 | mainwindow.cpp \ 42 | multirenamewidget.cpp \ 43 | openftpdialog.cpp \ 44 | operationdialog.cpp \ 45 | panewidget.cpp \ 46 | searchdialog.cpp \ 47 | searchhelper.cpp \ 48 | searchitemmodel.cpp \ 49 | settingsdialog.cpp 50 | 51 | RESOURCES += \ 52 | guide/guide.qrc \ 53 | icons/icons.qrc \ 54 | icons/dark/dark.qrc \ 55 | resources/resources.qrc 56 | 57 | include( shell/shell.pri ) 58 | include( utils/utils.pri ) 59 | include( viewer/viewer.pri ) 60 | include( xmlui/xmlui.pri ) 61 | 62 | INCLUDEPATH += . 63 | 64 | PRECOMPILED_HEADER = precompiled.h 65 | 66 | TRANSLATIONS += \ 67 | ../translations/saladin_untranslated.ts \ 68 | ../translations/saladin_de.ts \ 69 | ../translations/saladin_es.ts \ 70 | ../translations/saladin_pl.ts \ 71 | ../translations/saladin_pt_BR.ts 72 | 73 | RC_FILE = saladin.rc 74 | LIBS += -lshell32 -lshlwapi -lcrypt32 -lole32 -loleaut32 75 | 76 | win32-msvc* { 77 | QMAKE_CXXFLAGS += -Fd\$(IntDir) 78 | CONFIG -= flat 79 | } 80 | 81 | build_pass { 82 | MOC_DIR = ../tmp 83 | RCC_DIR = ../tmp 84 | UI_DIR = ../tmp 85 | CONFIG( debug, debug|release ) { 86 | OBJECTS_DIR = ../tmp/debug 87 | DESTDIR = ../debug 88 | } else { 89 | OBJECTS_DIR = ../tmp/release 90 | DESTDIR = ../release 91 | } 92 | } 93 | 94 | target.path = $${DESTINATION}$$PREFIX/bin 95 | INSTALLS += target 96 | -------------------------------------------------------------------------------- /src/utils/dataserializer.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "dataserializer.h" 20 | 21 | int DataSerializer::m_dataVersion = 0; 22 | 23 | static const int MagicHeader = 0x534CC4D3; 24 | 25 | // increment this value every time data format is changed 26 | static const int CurrentVersion = 1; 27 | 28 | // minimum supported version 29 | static const int MinimumVersion = 1; 30 | 31 | DataSerializer::DataSerializer( const QString& path ) : 32 | m_file( path ) 33 | { 34 | } 35 | 36 | DataSerializer::~DataSerializer() 37 | { 38 | } 39 | 40 | bool DataSerializer::openForReading() 41 | { 42 | if ( !m_file.open( QIODevice::ReadOnly ) ) 43 | return false; 44 | 45 | m_stream.setDevice( &m_file ); 46 | m_stream.setVersion( QDataStream::Qt_4_4 ); 47 | 48 | qint32 header; 49 | m_stream >> header; 50 | 51 | if ( header != MagicHeader ) 52 | return false; 53 | 54 | qint32 version; 55 | m_stream >> version; 56 | 57 | if ( version < MinimumVersion || version > CurrentVersion ) 58 | return false; 59 | 60 | m_dataVersion = version; 61 | 62 | return true; 63 | } 64 | 65 | bool DataSerializer::openForWriting() 66 | { 67 | if ( !m_file.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) 68 | return false; 69 | 70 | m_stream.setDevice( &m_file ); 71 | m_stream.setVersion( QDataStream::Qt_4_4 ); 72 | 73 | m_stream << (qint32)MagicHeader; 74 | m_stream << (qint32)CurrentVersion; 75 | 76 | m_dataVersion = CurrentVersion; 77 | 78 | return true; 79 | } 80 | -------------------------------------------------------------------------------- /src/utils/dataserializer.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef DATASERIALIZER_H 20 | #define DATASERIALIZER_H 21 | 22 | #include 23 | #include 24 | 25 | class DataSerializer 26 | { 27 | public: 28 | DataSerializer( const QString& path ); 29 | ~DataSerializer(); 30 | 31 | public: 32 | bool openForReading(); 33 | bool openForWriting(); 34 | 35 | QDataStream& stream() { return m_stream; } 36 | 37 | static int dataVersion() { return m_dataVersion; } 38 | 39 | private: 40 | QFile m_file; 41 | QDataStream m_stream; 42 | 43 | static int m_dataVersion; 44 | }; 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/utils/elidedlabel.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "elidedlabel.h" 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | ElidedLabel::ElidedLabel( QWidget* parent ) : QLabel( parent ), 27 | m_lastWidth( 0 ) 28 | { 29 | setMinimumWidth( fontMetrics().width( "..." ) ); 30 | } 31 | 32 | ElidedLabel::~ElidedLabel() 33 | { 34 | } 35 | 36 | void ElidedLabel::paintEvent( QPaintEvent* /*e*/ ) 37 | { 38 | QPainter painter( this ); 39 | drawFrame( &painter ); 40 | 41 | QRect cr = contentsRect(); 42 | cr.adjust( margin(), margin(), -margin(), -margin() ); 43 | 44 | QString fullText = text(); 45 | 46 | if ( fullText != m_lastText || cr.width() != m_lastWidth ) { 47 | m_elidedText = fontMetrics().elidedText( fullText, Qt::ElideRight, cr.width() ); 48 | m_lastText = fullText; 49 | m_lastWidth = cr.width(); 50 | } 51 | 52 | QStyleOption opt; 53 | opt.initFrom( this ); 54 | 55 | style()->drawItemText( &painter, cr, alignment(), opt.palette, isEnabled(), m_elidedText, foregroundRole() ); 56 | } 57 | -------------------------------------------------------------------------------- /src/utils/elidedlabel.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef ELIDEDLABEL_H 20 | #define ELIDEDLABEL_H 21 | 22 | #include 23 | 24 | class ElidedLabel : public QLabel 25 | { 26 | Q_OBJECT 27 | public: 28 | ElidedLabel( QWidget* parent ); 29 | ~ElidedLabel(); 30 | 31 | protected: // overrides 32 | void paintEvent( QPaintEvent* e ); 33 | 34 | private: 35 | QString m_elidedText; 36 | QString m_lastText; 37 | int m_lastWidth; 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/utils/formathelper.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef FORMATHELPER_H 20 | #define FORMATHELPER_H 21 | 22 | class StreamDevice; 23 | 24 | class FormatHelper 25 | { 26 | public: 27 | static bool checkImage( StreamDevice& file, bool force, QByteArray& format ); 28 | 29 | static bool checkText( QIODevice& file, bool force, QByteArray& format ); 30 | }; 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/utils/iconloader.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef ICONLOADER_H 20 | #define ICONLOADER_H 21 | 22 | #include 23 | #include 24 | 25 | class IconLoader 26 | { 27 | public: 28 | static QPixmap pixmap( const QString& name, int size = 16 ); 29 | 30 | static QPixmap overlayedPixmap( const QString& name, const QString& overlay, int size = 16 ); 31 | static QPixmap overlayedPixmap( const QString& name, const QString& overlay1, const QString& overlay2, int size = 16 ); 32 | 33 | static QIcon icon( const QString& name ); 34 | 35 | static QIcon overlayedIcon( const QString& name, const QString& overlay ); 36 | }; 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/utils/localsettings.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "localsettings.h" 20 | #include "dataserializer.h" 21 | 22 | LocalSettings::LocalSettings( const QString& path, QObject* parent ) : QObject( parent ), 23 | m_path( path ) 24 | { 25 | load(); 26 | } 27 | 28 | LocalSettings::~LocalSettings() 29 | { 30 | save(); 31 | } 32 | 33 | bool LocalSettings::contains( const QString& key ) const 34 | { 35 | return m_data.contains( key ); 36 | } 37 | 38 | void LocalSettings::setValue( const QString& key, const QVariant& value ) 39 | { 40 | m_data.insert( key, value ); 41 | } 42 | 43 | QVariant LocalSettings::value( const QString& key, const QVariant& defaultValue /*= QVariant()*/ ) const 44 | { 45 | return m_data.value( key, defaultValue ); 46 | } 47 | 48 | void LocalSettings::load() 49 | { 50 | DataSerializer serializer( m_path ); 51 | 52 | if ( !serializer.openForReading() ) 53 | return; 54 | 55 | serializer.stream() >> m_data; 56 | } 57 | 58 | void LocalSettings::save() 59 | { 60 | DataSerializer serializer( m_path ); 61 | 62 | if ( !serializer.openForWriting() ) 63 | return; 64 | 65 | serializer.stream() << m_data; 66 | 67 | emit settingsChanged(); 68 | } 69 | -------------------------------------------------------------------------------- /src/utils/localsettings.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef LOCALSETTINGS_H 20 | #define LOCALSETTINGS_H 21 | 22 | #include 23 | 24 | class LocalSettings : public QObject 25 | { 26 | Q_OBJECT 27 | public: 28 | LocalSettings( const QString& path, QObject* parent ); 29 | ~LocalSettings(); 30 | 31 | public: 32 | bool contains( const QString& key ) const; 33 | 34 | void setValue( const QString& key, const QVariant& value ); 35 | QVariant value( const QString& key, const QVariant& defaultValue = QVariant() ) const; 36 | 37 | void load(); 38 | void save(); 39 | 40 | signals: 41 | void settingsChanged(); 42 | 43 | private: 44 | QString m_path; 45 | 46 | QVariantMap m_data; 47 | }; 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /src/utils/separatorcombobox.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef SEPARATORCOMBOBOX_H 20 | #define SEPARATORCOMBOBOX_H 21 | 22 | #include 23 | 24 | class SeparatorComboBox : public QComboBox 25 | { 26 | Q_OBJECT 27 | public: 28 | SeparatorComboBox( QWidget* parent ); 29 | ~SeparatorComboBox(); 30 | 31 | public: 32 | void addSeparator(); 33 | 34 | void addParentItem( const QString& text ); 35 | void addChildItem( const QString& text, const QVariant& data = QVariant() ); 36 | }; 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/utils/updateclient.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef UPDATECLIENT_H 20 | #define UPDATECLIENT_H 21 | 22 | #include 23 | 24 | class UpdateClient : public QObject 25 | { 26 | Q_OBJECT 27 | public: 28 | enum State { 29 | ErrorState, 30 | CheckingState, 31 | CurrentVersionState, 32 | UpdateAvailableState 33 | }; 34 | 35 | public: 36 | UpdateClient( const QString& application, const QString& version, QNetworkAccessManager* manager ); 37 | ~UpdateClient(); 38 | 39 | public: 40 | void setAutoUpdate( bool enabled ); 41 | bool autoUpdate() const { return m_timer != NULL; } 42 | 43 | State state() const { return m_state; } 44 | 45 | const QString& updateVersion() const { return m_updateVersion; } 46 | 47 | const QUrl& notesUrl() const { return m_notesUrl; } 48 | const QUrl& downloadUrl() const { return m_downloadUrl; } 49 | 50 | public slots: 51 | void checkUpdate(); 52 | 53 | signals: 54 | void stateChanged(); 55 | 56 | private slots: 57 | void finished( QNetworkReply* reply ); 58 | 59 | private: 60 | QNetworkAccessManager* m_manager; 61 | QNetworkReply* m_currentReply; 62 | 63 | QTimer* m_timer; 64 | 65 | QString m_application; 66 | QString m_version; 67 | 68 | State m_state; 69 | 70 | QString m_updateVersion; 71 | QUrl m_notesUrl; 72 | QUrl m_downloadUrl; 73 | }; 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /src/utils/utils.pri: -------------------------------------------------------------------------------- 1 | HEADERS += utils/dataserializer.h \ 2 | utils/elidedlabel.h \ 3 | utils/formathelper.h \ 4 | utils/iconloader.h \ 5 | utils/localsettings.h \ 6 | utils/separatorcombobox.h \ 7 | utils/updateclient.h 8 | 9 | SOURCES += utils/dataserializer.cpp \ 10 | utils/elidedlabel.cpp \ 11 | utils/formathelper.cpp \ 12 | utils/iconloader.cpp \ 13 | utils/localsettings.cpp \ 14 | utils/separatorcombobox.cpp \ 15 | utils/updateclient.cpp 16 | -------------------------------------------------------------------------------- /src/viewer/binaryloader.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef BINARYLOADER_H 20 | #define BINARYLOADER_H 21 | 22 | #include "shell/shellpidl.h" 23 | 24 | #include 25 | 26 | class BinaryLoader : public QThread 27 | { 28 | Q_OBJECT 29 | public: 30 | BinaryLoader( const ShellPidl& pidl, bool hexMode ); 31 | ~BinaryLoader(); 32 | 33 | public: 34 | QString nextBlock(); 35 | 36 | bool atEnd() const { return m_atEnd; } 37 | 38 | qint64 size() const { return m_size; } 39 | 40 | qint64 estimatedLength() const { return m_estimatedLength; } 41 | 42 | void abort(); 43 | 44 | signals: 45 | void nextBlockAvailable(); 46 | 47 | protected: // overrides 48 | void run(); 49 | 50 | private: 51 | ShellPidl m_pidl; 52 | bool m_hexMode; 53 | 54 | QMutex m_mutex; 55 | 56 | QQueue m_queue; 57 | 58 | bool m_aborted; 59 | bool m_signal; 60 | 61 | bool m_atEnd; 62 | qint64 m_size; 63 | qint64 m_estimatedLength; 64 | }; 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /src/viewer/binaryview.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef BINARYVIEW_H 20 | #define BINARYVIEW_H 21 | 22 | #include "viewer/view.h" 23 | 24 | class TextEdit; 25 | class BinaryLoader; 26 | 27 | class BinaryView : public View 28 | { 29 | Q_OBJECT 30 | public: 31 | BinaryView( QObject* parent, QWidget* parentWidget ); 32 | ~BinaryView(); 33 | 34 | public: // overrides 35 | Type type() const; 36 | 37 | void load(); 38 | 39 | void storeSettings(); 40 | 41 | private slots: 42 | void updateActions(); 43 | 44 | void copy(); 45 | void selectAll(); 46 | 47 | void toggleHexMode(); 48 | 49 | void contextMenuRequested( const QPoint& pos ); 50 | 51 | void loadNextBlock(); 52 | 53 | void settingsChanged(); 54 | 55 | void loadIcons(); 56 | 57 | private: 58 | void initializeSettings(); 59 | 60 | private: 61 | TextEdit* m_edit; 62 | 63 | BinaryLoader* m_loader; 64 | 65 | qint64 m_length; 66 | 67 | bool m_hexMode; 68 | }; 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /src/viewer/gotodialog.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef GOTODIALOG_H 20 | #define GOTODIALOG_H 21 | 22 | #include 23 | 24 | 25 | class GoToDialog : public QDialog 26 | { 27 | Q_OBJECT 28 | public: 29 | GoToDialog( int lines, int current, QWidget* parent ); 30 | ~GoToDialog(); 31 | 32 | public: 33 | int line() const; 34 | 35 | private: 36 | QSpinBox* m_spinBox; 37 | }; 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/viewer/imagelabel.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef IMAGELABEL_H 20 | #define IMAGELABEL_H 21 | 22 | class ImageLabel : public QWidget 23 | { 24 | Q_OBJECT 25 | public: 26 | ImageLabel( QWidget* parent ); 27 | ~ImageLabel(); 28 | 29 | public: 30 | void setImage( const QImage& image ); 31 | const QImage& image() const { return m_image; } 32 | 33 | void setZoom( double zoom ); 34 | double zoom() const { return m_zoom; } 35 | 36 | void setBlackBackground( bool black ); 37 | bool isBlackBackground() const { return m_black; } 38 | 39 | double actualZoom() const; 40 | 41 | public: // overrides 42 | QSize sizeHint() const; 43 | 44 | protected: // overrides 45 | void paintEvent( QPaintEvent* e ); 46 | 47 | void wheelEvent( QWheelEvent* e ); 48 | 49 | void resizeEvent( QResizeEvent* e ); 50 | 51 | signals: 52 | void zoomIn(); 53 | void zoomOut(); 54 | 55 | void zoomChanged(); 56 | 57 | private: 58 | QImage m_image; 59 | 60 | double m_zoom; 61 | 62 | bool m_black; 63 | }; 64 | 65 | #endif 66 | -------------------------------------------------------------------------------- /src/viewer/imageloader.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "imageloader.h" 20 | #include "shell/streamdevice.h" 21 | 22 | ImageLoader::ImageLoader( const ShellPidl& pidl ) : 23 | m_pidl( pidl ), 24 | m_aborted( false ) 25 | { 26 | } 27 | 28 | ImageLoader::~ImageLoader() 29 | { 30 | } 31 | 32 | void ImageLoader::run() 33 | { 34 | StreamDevice file( m_pidl ); 35 | 36 | if ( file.open( QIODevice::ReadOnly ) ) { 37 | QImageReader reader( &file ); 38 | 39 | reader.setAutoTransform( true ); 40 | 41 | m_format = reader.format(); 42 | 43 | if ( reader.read( &m_image ) && !m_aborted ) 44 | emit imageAvailable(); 45 | } 46 | } 47 | 48 | void ImageLoader::abort() 49 | { 50 | m_aborted = true; 51 | 52 | connect( this, SIGNAL( finished() ), this, SLOT( deleteLater() ) ); 53 | 54 | if ( isFinished() ) 55 | deleteLater(); 56 | } 57 | -------------------------------------------------------------------------------- /src/viewer/imageloader.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef IMAGELOADER_H 20 | #define IMAGELOADER_H 21 | 22 | #include "shell/shellpidl.h" 23 | 24 | #include 25 | 26 | class ImageLoader : public QThread 27 | { 28 | Q_OBJECT 29 | public: 30 | ImageLoader( const ShellPidl& pidl ); 31 | ~ImageLoader(); 32 | 33 | public: 34 | QByteArray format() const { return m_format; } 35 | 36 | QImage image() const { return m_image; } 37 | 38 | void abort(); 39 | 40 | signals: 41 | void imageAvailable(); 42 | 43 | protected: // overrides 44 | void run(); 45 | 46 | private: 47 | ShellPidl m_pidl; 48 | QByteArray m_format; 49 | 50 | QImage m_image; 51 | 52 | bool m_aborted; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /src/viewer/imageview.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef IMAGEVIEW_H 20 | #define IMAGEVIEW_H 21 | 22 | #include "viewer/view.h" 23 | 24 | class ImageLabel; 25 | class ImageLoader; 26 | 27 | class ImageView : public View 28 | { 29 | Q_OBJECT 30 | public: 31 | ImageView( QObject* parent, QWidget* parentWidget ); 32 | ~ImageView(); 33 | 34 | public: // overrides 35 | Type type() const; 36 | 37 | void load(); 38 | 39 | void storeSettings(); 40 | 41 | private slots: 42 | void updateActions(); 43 | 44 | void copy(); 45 | 46 | void zoomFit(); 47 | 48 | void zoomIn(); 49 | void zoomOut(); 50 | void zoomOriginal(); 51 | 52 | void rotateLeft(); 53 | void rotateRight(); 54 | 55 | void blackBackground(); 56 | 57 | void viewInformation(); 58 | 59 | void contextMenuRequested( const QPoint& pos ); 60 | 61 | void loadImage(); 62 | 63 | void updateStatus(); 64 | 65 | void loadIcons(); 66 | 67 | private: 68 | void initializeSettings(); 69 | 70 | void zoom( double factor ); 71 | void adjustScrollBar( QScrollBar* scrollBar, double factor ); 72 | 73 | private: 74 | QScrollArea* m_scroll; 75 | 76 | ImageLabel* m_label; 77 | 78 | ImageLoader* m_loader; 79 | }; 80 | 81 | #endif 82 | -------------------------------------------------------------------------------- /src/viewer/textedit.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef TEXTEDIT_H 20 | #define TEXTEDIT_H 21 | 22 | class LineNumberArea; 23 | 24 | class TextEdit : public QPlainTextEdit 25 | { 26 | Q_OBJECT 27 | public: 28 | TextEdit( QWidget* parent ); 29 | ~TextEdit(); 30 | 31 | public: 32 | void setLineNumbers( bool numbers ); 33 | bool lineNumbers() const { return m_lineNumbers; } 34 | 35 | protected: 36 | void resizeEvent( QResizeEvent* e ); 37 | 38 | private slots: 39 | void updateLineNumberAreaWidth(); 40 | void updateLineNumberArea( const QRect& rect, int dy ); 41 | 42 | void themeChanged(); 43 | 44 | private: 45 | void lineNumberAreaPaintEvent( QPaintEvent* e ); 46 | int lineNumberAreaWidth(); 47 | 48 | private: 49 | bool m_lineNumbers; 50 | 51 | LineNumberArea* m_lineNumberArea; 52 | 53 | friend class LineNumberArea; 54 | }; 55 | 56 | #endif 57 | -------------------------------------------------------------------------------- /src/viewer/textloader.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef TEXTLOADER_H 20 | #define TEXTLOADER_H 21 | 22 | #include "shell/shellpidl.h" 23 | 24 | #include 25 | 26 | class TextLoader : public QThread 27 | { 28 | Q_OBJECT 29 | public: 30 | TextLoader( const ShellPidl& pidl, const QByteArray& format ); 31 | ~TextLoader(); 32 | 33 | public: 34 | QString nextBlock(); 35 | 36 | bool atEnd() const { return m_atEnd; } 37 | 38 | qint64 estimatedLength() const { return m_estimatedLength; } 39 | 40 | void abort(); 41 | 42 | signals: 43 | void nextBlockAvailable(); 44 | 45 | protected: // overrides 46 | void run(); 47 | 48 | private: 49 | ShellPidl m_pidl; 50 | QByteArray m_format; 51 | 52 | QMutex m_mutex; 53 | 54 | QQueue m_queue; 55 | 56 | bool m_aborted; 57 | bool m_signal; 58 | 59 | bool m_atEnd; 60 | qint64 m_estimatedLength; 61 | }; 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /src/viewer/textview.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef TEXTVIEW_H 20 | #define TEXTVIEW_H 21 | 22 | #include "viewer/view.h" 23 | 24 | class TextEdit; 25 | class FindBar; 26 | class TextLoader; 27 | 28 | class TextView : public View 29 | { 30 | Q_OBJECT 31 | public: 32 | TextView( QObject* parent, QWidget* parentWidget ); 33 | ~TextView(); 34 | 35 | public: // overrides 36 | Type type() const; 37 | 38 | void load(); 39 | 40 | void storeSettings(); 41 | 42 | void setFullScreen( bool on ); 43 | 44 | bool eventFilter( QObject* obj, QEvent* e ); 45 | 46 | private slots: 47 | void updateActions(); 48 | 49 | void copy(); 50 | void selectAll(); 51 | 52 | void find(); 53 | void findNext(); 54 | void findPrevious(); 55 | 56 | void findText( const QString& text ); 57 | 58 | void toggleLineNumbers(); 59 | void goToLine(); 60 | 61 | void toggleWordWrap(); 62 | void setEncoding( const QString& format ); 63 | 64 | void selectEncoding(); 65 | 66 | void editFile(); 67 | 68 | void contextMenuRequested( const QPoint& pos ); 69 | 70 | void loadNextBlock(); 71 | 72 | void settingsChanged(); 73 | 74 | void loadIcons(); 75 | 76 | private: 77 | void initializeSettings(); 78 | 79 | QMenu* createEncodingMenu(); 80 | 81 | void findText( const QString& text, int from, QTextDocument::FindFlags flags ); 82 | 83 | private: 84 | TextEdit* m_edit; 85 | 86 | TextLoader* m_loader; 87 | 88 | qint64 m_length; 89 | 90 | QString m_encoding; 91 | 92 | QSignalMapper* m_encodingMapper; 93 | 94 | FindBar* m_findBar; 95 | 96 | bool m_isFindEnabled; 97 | 98 | int m_currentLine; 99 | }; 100 | 101 | #endif 102 | -------------------------------------------------------------------------------- /src/viewer/view.cpp: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #include "view.h" 20 | 21 | #include "viewer/textview.h" 22 | #include "viewer/binaryview.h" 23 | #include "viewer/imageview.h" 24 | 25 | View::View( QObject* parent ) : QObject( parent ), 26 | m_mainWidget( NULL ) 27 | { 28 | } 29 | 30 | View::~View() 31 | { 32 | delete m_mainWidget; 33 | } 34 | 35 | void View::setMainWidget( QWidget* widget ) 36 | { 37 | m_mainWidget = widget; 38 | } 39 | 40 | void View::setPidl( const ShellPidl& pidl ) 41 | { 42 | m_pidl = pidl; 43 | } 44 | 45 | void View::setFormat( const QByteArray& format ) 46 | { 47 | m_format = format; 48 | } 49 | 50 | void View::setStatus( const QString& status ) 51 | { 52 | if ( m_status != status ) { 53 | m_status = status; 54 | emit statusChanged( status ); 55 | } 56 | } 57 | 58 | View* View::createView( Type type, QObject* parent, QWidget* parentWidget ) 59 | { 60 | switch ( type ) { 61 | case Text: 62 | return new TextView( parent, parentWidget ); 63 | case Binary: 64 | return new BinaryView( parent, parentWidget ); 65 | case Image: 66 | return new ImageView( parent, parentWidget ); 67 | default: 68 | return NULL; 69 | } 70 | } 71 | 72 | void View::setFullScreen( bool on ) 73 | { 74 | QLayout* layout = mainWidget()->layout(); 75 | if ( on ) { 76 | layout->setContentsMargins( 0, 0, 0, 0 ); 77 | if ( QFrame* frame = qobject_cast( layout->itemAt( 0 )->widget() ) ) 78 | frame->setFrameStyle( 0 ); 79 | } else { 80 | layout->setContentsMargins( 3, 0, 3, 0 ); 81 | if ( QFrame* frame = qobject_cast( layout->itemAt( 0 )->widget() ) ) 82 | frame->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/viewer/view.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef VIEW_H 20 | #define VIEW_H 21 | 22 | #include "shell/shellpidl.h" 23 | #include "xmlui/client.h" 24 | 25 | #include 26 | 27 | class View : public QObject, public XmlUi::Client 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit View( QObject* parent ); 32 | ~View(); 33 | 34 | public: 35 | enum Type 36 | { 37 | Auto, 38 | Text, 39 | Binary, 40 | Image 41 | }; 42 | 43 | public: 44 | QWidget* mainWidget() const { return m_mainWidget; } 45 | 46 | void setPidl( const ShellPidl& pidl ); 47 | const ShellPidl& pidl() const { return m_pidl; } 48 | 49 | void setFormat( const QByteArray& format ); 50 | const QByteArray& format() const { return m_format; } 51 | 52 | const QString& status() const { return m_status; } 53 | 54 | static View* createView( Type type, QObject* parent, QWidget* parentWidget ); 55 | 56 | public: 57 | virtual Type type() const = 0; 58 | 59 | virtual void load() = 0; 60 | 61 | virtual void storeSettings() = 0; 62 | 63 | virtual void setFullScreen( bool on ); 64 | 65 | signals: 66 | void statusChanged( const QString& status ); 67 | 68 | protected: 69 | void setMainWidget( QWidget* widget ); 70 | 71 | void setStatus( const QString& status ); 72 | 73 | private: 74 | QWidget* m_mainWidget; 75 | 76 | ShellPidl m_pidl; 77 | QByteArray m_format; 78 | 79 | QString m_status; 80 | }; 81 | 82 | #endif 83 | -------------------------------------------------------------------------------- /src/viewer/viewer.pri: -------------------------------------------------------------------------------- 1 | HEADERS += viewer/binaryloader.h \ 2 | viewer/binaryview.h \ 3 | viewer/gotodialog.h \ 4 | viewer/imagelabel.h \ 5 | viewer/imageloader.h \ 6 | viewer/imageview.h \ 7 | viewer/textedit.h \ 8 | viewer/textloader.h \ 9 | viewer/textview.h \ 10 | viewer/view.h \ 11 | viewer/viewerwindow.h \ 12 | viewer/viewmanager.h 13 | 14 | SOURCES += viewer/binaryloader.cpp \ 15 | viewer/binaryview.cpp \ 16 | viewer/gotodialog.cpp \ 17 | viewer/imagelabel.cpp \ 18 | viewer/imageloader.cpp \ 19 | viewer/imageview.cpp \ 20 | viewer/textedit.cpp \ 21 | viewer/textloader.cpp \ 22 | viewer/textview.cpp \ 23 | viewer/view.cpp \ 24 | viewer/viewerwindow.cpp \ 25 | viewer/viewmanager.cpp 26 | -------------------------------------------------------------------------------- /src/viewer/viewerwindow.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef VIEWERWINDOW_H 20 | #define VIEWERWINDOW_H 21 | 22 | #include "viewer/view.h" 23 | #include "xmlui/client.h" 24 | 25 | #include 26 | 27 | class ViewerWindow : public QMainWindow, public XmlUi::Client 28 | { 29 | Q_OBJECT 30 | public: 31 | ViewerWindow(); 32 | ~ViewerWindow(); 33 | 34 | public: 35 | void setView( View* view ); 36 | 37 | void enableNavigation( bool isFirst, bool isLast ); 38 | 39 | protected: // overrides 40 | void showEvent( QShowEvent* e ); 41 | 42 | private slots: 43 | void previous(); 44 | void next(); 45 | 46 | void reload(); 47 | 48 | void switchToText(); 49 | void switchToBinary(); 50 | void switchToImage(); 51 | 52 | void fullScreen(); 53 | 54 | void statusChanged( const QString& status ); 55 | 56 | void loadIcons(); 57 | 58 | private: 59 | void initializeGeometry(); 60 | void storeGeometry( bool offset ); 61 | 62 | private: 63 | View* m_view; 64 | 65 | QLabel* m_statusLabel; 66 | 67 | bool m_restoreMaximized; 68 | }; 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /src/viewer/viewmanager.h: -------------------------------------------------------------------------------- 1 | /************************************************************************** 2 | * This file is part of the Saladin program 3 | * Copyright (C) 2011-2017 Michał Męciński 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | **************************************************************************/ 18 | 19 | #ifndef VIEWMANAGER_H 20 | #define VIEWMANAGER_H 21 | 22 | #include "viewer/view.h" 23 | 24 | #include 25 | 26 | class ShellPidl; 27 | class ViewManagerPrivate; 28 | class ViewerWindow; 29 | class ViewItem; 30 | 31 | class ViewManager : public QObject 32 | { 33 | Q_OBJECT 34 | public: 35 | ViewManager(); 36 | ~ViewManager(); 37 | 38 | public: 39 | void openView( const ShellPidl& pidl ); 40 | void openView( const QList& pidls ); 41 | 42 | void loadPrevious( ViewerWindow* window ); 43 | void loadNext( ViewerWindow* window ); 44 | 45 | void switchViewType( ViewerWindow* window, View::Type type ); 46 | 47 | private slots: 48 | void windowDestroyed( QObject* window ); 49 | 50 | private: 51 | void loadView( ViewItem& item, View::Type type ); 52 | 53 | void updateTitle( ViewItem& item, const QString& name ); 54 | 55 | bool checkType( const ShellPidl& pidl, View::Type inType, View::Type& outType, QByteArray& format, QString& name ); 56 | 57 | private: 58 | ViewManagerPrivate* d; 59 | }; 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /src/xmlui/README: -------------------------------------------------------------------------------- 1 | Simple XML-based UI builder for Qt 2 | Version 3.0 3 | 4 | This library provides a tool strip widget, replacing classic menu bar and 5 | toolbars, and facilities for defining and merging the layout of actions 6 | from multiple components, using simple XML files. 7 | 8 | Website: http://www.mimec.org/components/xmlui 9 | 10 | Copyright 11 | ========= 12 | 13 | Copyright (C) 2007-2017 Michał Męciński 14 | 15 | Special thanks for Filipe Azevedo for the MacStyle contribution. 16 | 17 | License 18 | ======= 19 | 20 | Redistribution and use in source and binary forms, with or without 21 | modification, are permitted provided that the following conditions are met: 22 | 1. Redistributions of source code must retain the above copyright notice, 23 | this list of conditions and the following disclaimer. 24 | 2. Redistributions in binary form must reproduce the above copyright 25 | notice, this list of conditions and the following disclaimer in the 26 | documentation and/or other materials provided with the distribution. 27 | 3. Neither the name of the copyright holder nor the names of the 28 | contributors may be used to endorse or promote products derived from 29 | this software without specific prior written permission. 30 | 31 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 32 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 33 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 34 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 35 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 36 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 37 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 38 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 39 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 40 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 | POSSIBILITY OF SUCH DAMAGE. 42 | -------------------------------------------------------------------------------- /src/xmlui/gradientwidget.cpp: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * Simple XML-based UI builder for Qt 3 | * Copyright (C) 2007-2017 Michał Męciński 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 1. Redistributions of source code must retain the above copyright notice, 8 | * this list of conditions and the following disclaimer. 9 | * 2. Redistributions in binary form must reproduce the above copyright 10 | * notice, this list of conditions and the following disclaimer in the 11 | * documentation and/or other materials provided with the distribution. 12 | * 3. Neither the name of the copyright holder nor the names of the 13 | * contributors may be used to endorse or promote products derived from 14 | * this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 | * POSSIBILITY OF SUCH DAMAGE. 27 | ****************************************************************************/ 28 | 29 | #include "gradientwidget.h" 30 | 31 | using namespace XmlUi; 32 | 33 | GradientWidget::GradientWidget( QWidget* parent ) : QWidget( parent ) 34 | { 35 | } 36 | 37 | GradientWidget::~GradientWidget() 38 | { 39 | } 40 | -------------------------------------------------------------------------------- /src/xmlui/gradientwidget.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | * Simple XML-based UI builder for Qt 3 | * Copyright (C) 2007-2017 Michał Męciński 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 1. Redistributions of source code must retain the above copyright notice, 8 | * this list of conditions and the following disclaimer. 9 | * 2. Redistributions in binary form must reproduce the above copyright 10 | * notice, this list of conditions and the following disclaimer in the 11 | * documentation and/or other materials provided with the distribution. 12 | * 3. Neither the name of the copyright holder nor the names of the 13 | * contributors may be used to endorse or promote products derived from 14 | * this software without specific prior written permission. 15 | * 16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 | * POSSIBILITY OF SUCH DAMAGE. 27 | ****************************************************************************/ 28 | 29 | #ifndef XMLUI_GRADIENTWIDGET_H 30 | #define XMLUI_GRADIENTWIDGET_H 31 | 32 | #include 33 | 34 | namespace XmlUi 35 | { 36 | 37 | /** 38 | * Widget with styled gradient background. 39 | * 40 | * It uses the XmlUi::WindowsStyle if available to draw the gradient. 41 | * Otherwise it falls back to plain white background. 42 | */ 43 | class GradientWidget : public QWidget 44 | { 45 | Q_OBJECT 46 | public: 47 | /** 48 | * Constructor. 49 | * @param parent The parent widget. 50 | */ 51 | GradientWidget( QWidget* parent ); 52 | 53 | /** 54 | * Destructor. 55 | */ 56 | ~GradientWidget(); 57 | }; 58 | 59 | } 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /src/xmlui/xmlui.pri: -------------------------------------------------------------------------------- 1 | HEADERS += $$PWD/builder.h \ 2 | $$PWD/client.h \ 3 | $$PWD/gradientwidget.h \ 4 | $$PWD/node_p.h \ 5 | $$PWD/toolstrip.h \ 6 | $$PWD/toolstrip_p.h 7 | 8 | SOURCES += $$PWD/builder.cpp \ 9 | $$PWD/client.cpp \ 10 | $$PWD/gradientwidget.cpp \ 11 | $$PWD/toolstrip.cpp 12 | 13 | win32 { 14 | HEADERS += $$PWD/windowsstyle.h 15 | SOURCES += $$PWD/windowsstyle.cpp 16 | } 17 | -------------------------------------------------------------------------------- /translations/locale.ini: -------------------------------------------------------------------------------- 1 | ; Locale information for Saladin 2 | 3 | [languages] 4 | de = Deutsch 5 | en_US = English / United States 6 | es = Español 7 | hu = Magyar 8 | pl = Polski 9 | pt_BR = Português / Brasil 10 | ru = Русский 11 | -------------------------------------------------------------------------------- /translations/saladin_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_de.qm -------------------------------------------------------------------------------- /translations/saladin_es.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_es.qm -------------------------------------------------------------------------------- /translations/saladin_hu.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_hu.qm -------------------------------------------------------------------------------- /translations/saladin_pl.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_pl.qm -------------------------------------------------------------------------------- /translations/saladin_pt_BR.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_pt_BR.qm -------------------------------------------------------------------------------- /translations/saladin_ru.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mimecorg/saladin/4a824eb2735772b05ab7cc7f3b9829538d378b31/translations/saladin_ru.qm --------------------------------------------------------------------------------