1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-22 14:41:39 +00:00

Changed the build system (that commit is *huge*)

--HG--
rename : base/cocoa/AppDelegate.h => cocoa/base/AppDelegate.h
rename : base/cocoa/AppDelegate.m => cocoa/base/AppDelegate.m
rename : base/cocoa/Consts.h => cocoa/base/Consts.h
rename : base/cocoa/DetailsPanel.h => cocoa/base/DetailsPanel.h
rename : base/cocoa/DetailsPanel.m => cocoa/base/DetailsPanel.m
rename : base/cocoa/DirectoryPanel.h => cocoa/base/DirectoryPanel.h
rename : base/cocoa/DirectoryPanel.m => cocoa/base/DirectoryPanel.m
rename : base/cocoa/PyDupeGuru.h => cocoa/base/PyDupeGuru.h
rename : base/cocoa/ResultWindow.h => cocoa/base/ResultWindow.h
rename : base/cocoa/ResultWindow.m => cocoa/base/ResultWindow.m
rename : base/cocoa/dsa_pub.pem => cocoa/base/dsa_pub.pem
rename : base/cocoa/xib/DetailsPanel.xib => cocoa/base/xib/DetailsPanel.xib
rename : base/cocoa/xib/DirectoryPanel.xib => cocoa/base/xib/DirectoryPanel.xib
rename : base/cocoa/xib/MainMenu.xib => cocoa/base/xib/MainMenu.xib
rename : me/cocoa/AppDelegate.h => cocoa/me/AppDelegate.h
rename : me/cocoa/AppDelegate.m => cocoa/me/AppDelegate.m
rename : me/cocoa/Consts.h => cocoa/me/Consts.h
rename : me/cocoa/DetailsPanel.h => cocoa/me/DetailsPanel.h
rename : me/cocoa/DetailsPanel.m => cocoa/me/DetailsPanel.m
rename : me/cocoa/DirectoryPanel.h => cocoa/me/DirectoryPanel.h
rename : me/cocoa/DirectoryPanel.m => cocoa/me/DirectoryPanel.m
rename : me/cocoa/Info.plist => cocoa/me/Info.plist
rename : me/cocoa/PyDupeGuru.h => cocoa/me/PyDupeGuru.h
rename : me/cocoa/ResultWindow.h => cocoa/me/ResultWindow.h
rename : me/cocoa/ResultWindow.m => cocoa/me/ResultWindow.m
rename : me/cocoa/dupeguru.icns => cocoa/me/dupeguru.icns
rename : me/cocoa/dupeguru.xcodeproj/project.pbxproj => cocoa/me/dupeguru.xcodeproj/project.pbxproj
rename : me/cocoa/gen.py => cocoa/me/gen.py
rename : me/cocoa/main.m => cocoa/me/main.m
rename : me/cocoa/py/dg_cocoa.py => cocoa/me/py/dg_cocoa.py
rename : me/cocoa/py/setup.py => cocoa/me/py/setup.py
rename : me/cocoa/xib/Preferences.xib => cocoa/me/xib/Preferences.xib
rename : pe/cocoa/AppDelegate.h => cocoa/pe/AppDelegate.h
rename : pe/cocoa/AppDelegate.m => cocoa/pe/AppDelegate.m
rename : pe/cocoa/Consts.h => cocoa/pe/Consts.h
rename : pe/cocoa/DetailsPanel.h => cocoa/pe/DetailsPanel.h
rename : pe/cocoa/DetailsPanel.m => cocoa/pe/DetailsPanel.m
rename : pe/cocoa/DirectoryPanel.h => cocoa/pe/DirectoryPanel.h
rename : pe/cocoa/DirectoryPanel.m => cocoa/pe/DirectoryPanel.m
rename : pe/cocoa/Info.plist => cocoa/pe/Info.plist
rename : pe/cocoa/PictureBlocks.h => cocoa/pe/PictureBlocks.h
rename : pe/cocoa/PictureBlocks.m => cocoa/pe/PictureBlocks.m
rename : pe/cocoa/PyDupeGuru.h => cocoa/pe/PyDupeGuru.h
rename : pe/cocoa/ResultWindow.h => cocoa/pe/ResultWindow.h
rename : pe/cocoa/ResultWindow.m => cocoa/pe/ResultWindow.m
rename : pe/cocoa/dupeguru.icns => cocoa/pe/dupeguru.icns
rename : pe/cocoa/dupeguru.xcodeproj/project.pbxproj => cocoa/pe/dupeguru.xcodeproj/project.pbxproj
rename : pe/cocoa/gen.py => cocoa/pe/gen.py
rename : pe/cocoa/main.m => cocoa/pe/main.m
rename : pe/cocoa/py/dg_cocoa.py => cocoa/pe/py/dg_cocoa.py
rename : pe/cocoa/py/setup.py => cocoa/pe/py/setup.py
rename : pe/cocoa/xib/DetailsPanel.xib => cocoa/pe/xib/DetailsPanel.xib
rename : pe/cocoa/xib/Preferences.xib => cocoa/pe/xib/Preferences.xib
rename : se/cocoa/AppDelegate.h => cocoa/se/AppDelegate.h
rename : se/cocoa/AppDelegate.m => cocoa/se/AppDelegate.m
rename : se/cocoa/Consts.h => cocoa/se/Consts.h
rename : se/cocoa/DetailsPanel.h => cocoa/se/DetailsPanel.h
rename : se/cocoa/DetailsPanel.m => cocoa/se/DetailsPanel.m
rename : se/cocoa/DirectoryPanel.h => cocoa/se/DirectoryPanel.h
rename : se/cocoa/DirectoryPanel.m => cocoa/se/DirectoryPanel.m
rename : se/cocoa/Info.plist => cocoa/se/Info.plist
rename : se/cocoa/PyDupeGuru.h => cocoa/se/PyDupeGuru.h
rename : se/cocoa/ResultWindow.h => cocoa/se/ResultWindow.h
rename : se/cocoa/ResultWindow.m => cocoa/se/ResultWindow.m
rename : se/cocoa/dupeguru.icns => cocoa/se/dupeguru.icns
rename : se/cocoa/dupeguru.xcodeproj/project.pbxproj => cocoa/se/dupeguru.xcodeproj/project.pbxproj
rename : se/cocoa/gen.py => cocoa/se/gen.py
rename : se/cocoa/main.m => cocoa/se/main.m
rename : se/cocoa/py/dg_cocoa.py => cocoa/se/py/dg_cocoa.py
rename : se/cocoa/py/setup.py => cocoa/se/py/setup.py
rename : se/cocoa/xib/Preferences.xib => cocoa/se/xib/Preferences.xib
rename : base/core/LICENSE => core/LICENSE
rename : base/core/__init__.py => core/__init__.py
rename : base/core/app.py => core/app.py
rename : base/core/app_cocoa.py => core/app_cocoa.py
rename : base/core/data.py => core/data.py
rename : base/core/directories.py => core/directories.py
rename : base/core/engine.py => core/engine.py
rename : base/core/export.py => core/export.py
rename : base/core/fs.py => core/fs.py
rename : base/core/ignore.py => core/ignore.py
rename : base/core/results.py => core/results.py
rename : base/core/scanner.py => core/scanner.py
rename : base/core/tests/__init__.py => core/tests/__init__.py
rename : base/core/tests/app_cocoa_test.py => core/tests/app_cocoa_test.py
rename : base/core/tests/app_test.py => core/tests/app_test.py
rename : base/core/tests/data.py => core/tests/data.py
rename : base/core/tests/directories_test.py => core/tests/directories_test.py
rename : base/core/tests/engine_test.py => core/tests/engine_test.py
rename : base/core/tests/ignore_test.py => core/tests/ignore_test.py
rename : base/core/tests/results_test.py => core/tests/results_test.py
rename : base/core/tests/scanner_test.py => core/tests/scanner_test.py
rename : me/core/__init__.py => core_me/__init__.py
rename : me/core/app_cocoa.py => core_me/app_cocoa.py
rename : me/core/data.py => core_me/data.py
rename : me/core/fs.py => core_me/fs.py
rename : me/core/scanner.py => core_me/scanner.py
rename : me/core/tests/__init__.py => core_me/tests/__init__.py
rename : me/core/tests/scanner_test.py => core_me/tests/scanner_test.py
rename : pe/core/LICENSE => core_pe/LICENSE
rename : pe/core/__init__.py => core_pe/__init__.py
rename : pe/core/app_cocoa.py => core_pe/app_cocoa.py
rename : pe/core/block.py => core_pe/block.py
rename : pe/core/cache.py => core_pe/cache.py
rename : pe/core/data.py => core_pe/data.py
rename : pe/core/gen.py => core_pe/gen.py
rename : pe/core/matchbase.py => core_pe/matchbase.py
rename : pe/core/modules/block/block.pyx => core_pe/modules/block/block.pyx
rename : pe/core/modules/block/setup.py => core_pe/modules/block/setup.py
rename : pe/core/modules/cache/cache.pyx => core_pe/modules/cache/cache.pyx
rename : pe/core/modules/cache/setup.py => core_pe/modules/cache/setup.py
rename : pe/core/scanner.py => core_pe/scanner.py
rename : pe/core/tests/__init__.py => core_pe/tests/__init__.py
rename : pe/core/tests/block_test.py => core_pe/tests/block_test.py
rename : pe/core/tests/cache_test.py => core_pe/tests/cache_test.py
rename : se/core/LICENSE => core_se/LICENSE
rename : se/core/__init__.py => core_se/__init__.py
rename : se/core/app_cocoa.py => core_se/app_cocoa.py
rename : se/core/data.py => core_se/data.py
rename : se/core/fs.py => core_se/fs.py
rename : se/core/tests/__init__.py => core_se/tests/__init__.py
rename : se/core/tests/fs_test.py => core_se/tests/fs_test.py
rename : me/help/LICENSE => help_me/LICENSE
rename : me/help/__init__.py => help_me/__init__.py
rename : me/help/changelog.yaml => help_me/changelog.yaml
rename : me/help/gen.py => help_me/gen.py
rename : me/help/skeleton/hardcoded.css => help_me/skeleton/hardcoded.css
rename : me/help/skeleton/images/hs_title.png => help_me/skeleton/images/hs_title.png
rename : me/help/templates/base_dg.mako => help_me/templates/base_dg.mako
rename : me/help/templates/credits.mako => help_me/templates/credits.mako
rename : me/help/templates/directories.mako => help_me/templates/directories.mako
rename : me/help/templates/faq.mako => help_me/templates/faq.mako
rename : me/help/templates/intro.mako => help_me/templates/intro.mako
rename : me/help/templates/power_marker.mako => help_me/templates/power_marker.mako
rename : me/help/templates/preferences.mako => help_me/templates/preferences.mako
rename : me/help/templates/quick_start.mako => help_me/templates/quick_start.mako
rename : me/help/templates/results.mako => help_me/templates/results.mako
rename : me/help/templates/versions.mako => help_me/templates/versions.mako
rename : pe/help/LICENSE => help_pe/LICENSE
rename : pe/help/__init__.py => help_pe/__init__.py
rename : pe/help/changelog.yaml => help_pe/changelog.yaml
rename : pe/help/gen.py => help_pe/gen.py
rename : pe/help/skeleton/hardcoded.css => help_pe/skeleton/hardcoded.css
rename : pe/help/skeleton/images/hs_title.png => help_pe/skeleton/images/hs_title.png
rename : pe/help/templates/base_dg.mako => help_pe/templates/base_dg.mako
rename : pe/help/templates/credits.mako => help_pe/templates/credits.mako
rename : pe/help/templates/directories.mako => help_pe/templates/directories.mako
rename : pe/help/templates/faq.mako => help_pe/templates/faq.mako
rename : pe/help/templates/intro.mako => help_pe/templates/intro.mako
rename : pe/help/templates/power_marker.mako => help_pe/templates/power_marker.mako
rename : pe/help/templates/preferences.mako => help_pe/templates/preferences.mako
rename : pe/help/templates/quick_start.mako => help_pe/templates/quick_start.mako
rename : pe/help/templates/results.mako => help_pe/templates/results.mako
rename : pe/help/templates/versions.mako => help_pe/templates/versions.mako
rename : se/help/LICENSE => help_se/LICENSE
rename : se/help/changelog.yaml => help_se/changelog.yaml
rename : se/help/gen.py => help_se/gen.py
rename : se/help/skeleton/hardcoded.css => help_se/skeleton/hardcoded.css
rename : se/help/skeleton/images/hs_title.png => help_se/skeleton/images/hs_title.png
rename : se/help/templates/base_dg.mako => help_se/templates/base_dg.mako
rename : se/help/templates/credits.mako => help_se/templates/credits.mako
rename : se/help/templates/directories.mako => help_se/templates/directories.mako
rename : se/help/templates/faq.mako => help_se/templates/faq.mako
rename : se/help/templates/intro.mako => help_se/templates/intro.mako
rename : se/help/templates/power_marker.mako => help_se/templates/power_marker.mako
rename : se/help/templates/preferences.mako => help_se/templates/preferences.mako
rename : se/help/templates/quick_start.mako => help_se/templates/quick_start.mako
rename : se/help/templates/results.mako => help_se/templates/results.mako
rename : se/help/templates/versions.mako => help_se/templates/versions.mako
rename : base/qt/WARNING => qt/WARNING
rename : base/qt/__init__.py => qt/base/__init__.py
rename : base/qt/app.py => qt/base/app.py
rename : base/qt/details_table.py => qt/base/details_table.py
rename : base/qt/dg.qrc => qt/base/dg.qrc
rename : base/qt/directories_dialog.py => qt/base/directories_dialog.py
rename : base/qt/directories_dialog.ui => qt/base/directories_dialog.ui
rename : base/qt/directories_model.py => qt/base/directories_model.py
rename : base/qt/main_window.py => qt/base/main_window.py
rename : base/qt/main_window.ui => qt/base/main_window.ui
rename : base/qt/platform.py => qt/base/platform.py
rename : base/qt/platform_osx.py => qt/base/platform_osx.py
rename : base/qt/platform_win.py => qt/base/platform_win.py
rename : base/qt/preferences.py => qt/base/preferences.py
rename : base/qt/results_model.py => qt/base/results_model.py
rename : me/qt/app.py => qt/me/app.py
rename : me/qt/build.py => qt/me/build.py
rename : me/qt/details_dialog.py => qt/me/details_dialog.py
rename : me/qt/details_dialog.ui => qt/me/details_dialog.ui
rename : me/qt/dgme.spec => qt/me/dgme.spec
rename : me/qt/gen.py => qt/me/gen.py
rename : me/qt/installer.aip => qt/me/installer.aip
rename : me/qt/preferences.py => qt/me/preferences.py
rename : me/qt/preferences_dialog.py => qt/me/preferences_dialog.py
rename : me/qt/preferences_dialog.ui => qt/me/preferences_dialog.ui
rename : me/qt/profile.py => qt/me/profile.py
rename : me/qt/start.py => qt/me/start.py
rename : me/qt/verinfo => qt/me/verinfo
rename : pe/qt/app.py => qt/pe/app.py
rename : pe/qt/block.py => qt/pe/block.py
rename : pe/qt/build.py => qt/pe/build.py
rename : pe/qt/details_dialog.py => qt/pe/details_dialog.py
rename : pe/qt/details_dialog.ui => qt/pe/details_dialog.ui
rename : pe/qt/dgpe.spec => qt/pe/dgpe.spec
rename : pe/qt/gen.py => qt/pe/gen.py
rename : pe/qt/installer.aip => qt/pe/installer.aip
rename : pe/qt/main_window.py => qt/pe/main_window.py
rename : pe/qt/modules/block/block.pyx => qt/pe/modules/block/block.pyx
rename : pe/qt/modules/block/setup.py => qt/pe/modules/block/setup.py
rename : pe/qt/preferences.py => qt/pe/preferences.py
rename : pe/qt/preferences_dialog.py => qt/pe/preferences_dialog.py
rename : pe/qt/preferences_dialog.ui => qt/pe/preferences_dialog.ui
rename : pe/qt/profile.py => qt/pe/profile.py
rename : pe/qt/start.py => qt/pe/start.py
rename : pe/qt/verinfo => qt/pe/verinfo
rename : se/qt/app.py => qt/se/app.py
rename : se/qt/build.py => qt/se/build.py
rename : se/qt/details_dialog.py => qt/se/details_dialog.py
rename : se/qt/details_dialog.ui => qt/se/details_dialog.ui
rename : se/qt/dgse.spec => qt/se/dgse.spec
rename : se/qt/gen.py => qt/se/gen.py
rename : se/qt/installer.aip => qt/se/installer.aip
rename : se/qt/preferences.py => qt/se/preferences.py
rename : se/qt/preferences_dialog.py => qt/se/preferences_dialog.py
rename : se/qt/preferences_dialog.ui => qt/se/preferences_dialog.ui
rename : se/qt/profile.py => qt/se/profile.py
rename : se/qt/start.py => qt/se/start.py
rename : se/qt/verinfo => qt/se/verinfo
extra : convert_revision : svn%3Ac306627e-7827-47d3-bdf0-9a457c9553a1/trunk%40285
This commit is contained in:
hsoft
2009-12-30 16:34:41 +00:00
parent 5645515d90
commit 838f8ae352
251 changed files with 602 additions and 500 deletions

11
help_se/LICENSE Normal file
View File

@@ -0,0 +1,11 @@
Copyright 2009 Hardcoded Software Inc. (http://www.hardcoded.net)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Hardcoded Software Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
* If the source code has been published less than two years ago, any redistribution, in whole or in part, must retain full licensing functionality, without any attempt to change, obscure or in other ways circumvent its intent.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

0
help_se/__init__.py Normal file
View File

274
help_se/changelog.yaml Normal file
View File

@@ -0,0 +1,274 @@
- date: 2009-11-03
version: 2.9.0
description: |
* Significantly improved speed and memory usage of big contents-based scans.
* Added drag & drop support in the Directories panel. (#9)
* Fixed a bug causing dupeGuru to be confused if a scanned file was moved during the scan. (#72)
* Dropped support for Mac OS X 10.4 (Tiger)
- date: 2009-10-14
version: 2.8.2
description: |
* Improved directory selection in the Directories panel (Windows). (#56)
* Fixed a bug preventing dupeGuru from starting on certain machines (Windows). (#68)
* Fixed a crash during very big scans. (#70)
- date: 2009-10-02
version: 2.8.1
description: |
* Fixed crash with filtering when regular expressions were enabled. (#60)
* Fixed crash when setting directories' state. (Mac OS X) (#66)
* Fixed crash with Make Reference when certain filters are applied. (Mac OS X) (#55)
* Improved error handling during delete/move/copy actions. (#62 #65)
- date: 2009-09-07
version: 2.8.0
description: |
* Added support for all kinds of bundle (not just applications) (Mac OS X) (#11)
* Re-introduced the Export to XHTML feature to Windows. (#14)
* Improved Export to XHTML speed. (#14)
* Improved Contents scanning speed for large files. (#33)
* Improved the grouping algorithm to reduce the number of discarded files in non-exact scans. (#51)
* Stopped showing the same file on the 2 sides of the details panel when a ref file is selected. (#50)
* Fixed crashes in the Directories panel. (#46)
- date: 2009-06-20
version: 2.7.3
description: |
* Fixed bugs with selection being jumpy during "Make Reference" actions and Power Marker
switches. (#3)
* Fixed crash happening when a file with non-roman characters couldn't be analyzed. (#30)
* Fixed crash sometimes happening during the file collection phase in scanning. (#38)
* Restored double-click and right-click behavior lost in the PyQt move (Windows). (#34 #35)
- date: 2009-06-10
version: 2.7.2
description: |
* Fixed an occasional crash on Copy/Move operations. (#16)
* Added automatic exclusion for sensible folders (like system folders). (#20)
* Fixed an occasional crash when application files were part of the results (Mac OS X). (#25)
- date: 2009-05-29
version: 2.7.1
description: |
* Fixed a bug causing crashes when having application files in the results.
* Fixed a bug causing a GUI freeze at the beginning of a scan with a lot of files.
* Fixed a bug that sometimes caused a crash when an action was cancelled, and then started again.
- date: 2009-05-25
version: 2.7.0
description: |
* Converted the Windows GUI to Qt.
* Improved the reliability of the scanning process.
- date: 2009-03-27
version: 2.6.1
description: |
* **Fixed** an occasional crash caused by permission issues.
* **Fixed** a bug where the "X discarded" notice would show a too large number of discarded
duplicates.
- date: 2008-09-10
description: "* **Added** a small file threshold preference.\r\n* **Added** a notice\
\ in the status bar when matches were discarded during the scan.\r\n* **Improved**\
\ duplicate prioritization (smartly chooses which file you will keep).\r\n* **Improved**\
\ scan progress feedback.\r\n* **Improved** responsiveness of the user interface\
\ for certain actions."
version: 2.6.0
- date: 2008-08-10
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> the speed of results loading\
\ and saving.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a crash sometimes occurring during\
\ duplicate deletion.</li>\n\t\t </ul>"
version: 2.5.4
- date: 2008-07-08
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> unicode handling for filenames.\
\ dupeGuru will now find a lot more duplicates if your files have non-ascii characters\
\ in it.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> \"Clear Ignore List\" crash in Windows.</li>\n\
\t\t </ul>"
version: 2.5.3
- date: 2008-01-10
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> the handling of low memory situations.</li>\n\
\t\t\t\t\t\t<li><b>Improved</b> the directory panel. The \"Remove\" button changes\
\ to \"Put Back\" when an excluded directory is selected.</li>\n\t\t\t\t\t\t<li><b>Improved</b>\
\ scan, delete and move speed in situations where there were a lot of duplicates.</li>\n\
\t\t\t\t\t\t<li><b>Fixed</b> occasional crashes when moving bundles (such as .app\
\ files).</li>\n\t\t\t\t\t\t<li><b>Fixed</b> occasional crashes when moving a\
\ lot of files at once.</li>\n\t\t </ul>"
version: 2.5.2
- date: 2007-11-22
description: "<ul>\n\t\t\t\t\t\t<li><b>Added</b> the \"Remove empty folders\" option.</li>\n\
\t\t\t\t\t\t<li><b>Fixed</b> results load/save issues.</li>\n\t\t\t\t\t\t<li><b>Fixed</b>\
\ occasional status bar inaccuracies when the results are filtered.</li>\n\t\t\
\ </ul>"
version: 2.5.1
- date: 2007-09-15
description: "<ul>\n\t\t\t\t\t\t<li><b>Added</b> post scan filtering.</li>\n\t\t\
\t\t\t\t<li><b>Fixed</b> issues with the rename feature under Windows</li>\n\t\
\t\t\t\t\t<li><b>Fixed</b> some user interface annoyances under Windows</li>\n\
\t\t </ul>"
version: 2.5.0
- date: 2007-04-14
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> UI responsiveness (using threads)\
\ under Mac OS X.</li>\n\t\t\t\t\t\t<li><b>Improved</b> result load/save speed\
\ and memory usage.</li>\n\t\t </ul>"
version: 2.4.8
- date: 2007-03-10
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> a \"bad file descriptor\" error\
\ occasionally popping up.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug with non-latin\
\ directory names.</li>\n\t\t </ul>"
version: 2.4.7
- date: 2007-02-10
description: "<ul>\n\t\t\t\t\t\t<li><b>Added</b> Re-orderable columns. In fact,\
\ I re-added the feature which was lost in the C# conversion in 2.4.0 (Windows).</li>\n\
\t\t\t\t\t\t<li><b>Changed</b> the behavior of the scanning engine when setting\
\ the hardness to 100. It will now only match files that have their words in the\
\ same order.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug with all the Delete/Move/Copy\
\ actions with certain kinds of files.</li>\n\t\t </ul>"
version: 2.4.6
- date: 2007-01-11
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug with the Move action.</li>\n\
\t\t </ul>"
version: 2.4.5
- date: 2007-01-07
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> a \"ghosting\" bug. Dupes deleted\
\ by dupeGuru would sometimes come back in subsequent scans (Windows).</li>\n\t\
\t\t\t\t\t<li><b>Fixed</b> bugs sometimes making dupeGuru crash when marking a\
\ dupe (Windows).</li>\n\t\t\t\t\t\t<li><b>Fixed</b> some minor visual glitches\
\ (Windows).</li>\n\t\t </ul>"
version: 2.4.4
- date: 2006-12-08
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> a mishandling of \".app\" files\
\ (OS X).</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug preventing files from \"reference\"\
\ directories to be displayed in blue in the results (Windows).</li>\n\t\t\t\t\
\t\t<li><b>Fixed</b> a bug preventing some files to be sent to the recycle bin\
\ (Windows).</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug in the packaging preventing\
\ certain Windows configurations to start dupeGuru at all.</li>\n\t\t \
\ </ul>"
version: 2.4.3
- date: 2006-11-18
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug with directory states.</li>\n\
\t\t </ul>"
version: 2.4.2
- date: 2006-11-15
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug causing the ignore list not\
\ to be saved.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug sometimes making delete\
\ and move operations stall.</li>\n\t\t </ul>"
version: 2.4.1
- date: 2006-11-10
description: "<ul>\n\t\t\t\t\t\t<li><b>Changed</b> the Windows interface. It is\
\ now .NET based.</li>\n\t\t\t\t\t\t<li><b>Added</b> an auto-update feature to\
\ the windows version.</li>\n\t\t\t\t\t\t<li><b>Changed</b> the way power marking\
\ works. It is now a mode instead of a separate window.</li>\n\t\t\t\t\t\t<li><b>Changed</b>\
\ the \"Size (MB)\" column for a \"Size (KB)\" column. The values are now \"ceiled\"\
\ instead of rounded. Therefore, a size \"0\" is now really 0 bytes, not just\
\ a value too small to be rounded up. It is also the case for delta values.</li>\n\
\t\t\t\t\t\t<li><b>Removed</b> the min word length/count options. These came from\
\ Mp3 Filter, and just aren't used anymore. Word weighting does pretty much the\
\ same job.</li>\n\t\t </ul>"
version: 2.4.0
- date: 2006-11-07
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> speed and memory usage of the\
\ scanning engine, again. Does it mean there was a lot of improvements to be made?\
\ Nah...</li>\n\t\t </ul>"
version: 2.3.4
- date: 2006-11-02
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> speed and memory usage of the\
\ scanning engine, especially when the scan results in a lot of duplicates.</li>\n\
\t\t\t\t\t\t<li>Now I wonder if Sparkle is going to work well...</li>\n\t\t \
\ </ul>"
version: 2.3.3
- date: 2006-10-16
description: "<ul>\n\t\t\t\t\t\t<li><b>Added</b> an auto-update feature in the Mac\
\ OS X version (with Sparkle).</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug preventing\
\ some duplicate reports to be created correctly under Windows.</li>\n\t\t \
\ </ul>"
version: 2.3.2
- date: 2006-10-02
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug preventing some duplicates\
\ to be found, especially when scanning lots of files.</li>\n\t\t </ul>"
version: 2.3.1
- date: 2006-09-22
description: "<ul>\n\t\t\t\t\t\t<li><b>Added</b> XHTML export feature.</li>\n\t\t\
\ </ul>"
version: 2.3.0
- date: 2006-08-31
description: "<ul>\n\t\t\t\t\t\t<li><b>Added</b> sticky columns.</li>\n\t\t\t\t\t\
\t<li><b>Fixed</b> an issue with file caching between scans.</li>\n\t\t\t\t\t\t\
<li><b>Fixed</b> an issue preventing some duplicates from being deleted/moved/copied.</li>\n\
\t\t </ul>"
version: 2.2.10
- date: 2006-08-27
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> an issue with ignore list and unicode.</li>\n\
\t\t\t\t\t\t<li><b>Fixed</b> an issue with file attribute fetching sometimes causing\
\ dupeGuru to crash.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> an issue in the directories\
\ panel under Windows.</li>\n\t\t </ul>"
version: 2.2.9
- date: 2006-08-17
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> an issue in the duplicate seeking\
\ engine preventing some duplicates to be found.</li>\n\t\t </ul>"
version: 2.2.8
- date: 2006-08-12
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> unicode support.</li>\n\t\t\t\
\t\t\t<li><b>Improved</b> the \"Reveal in Finder\" (\"Open Containing Folder\"\
\ in Windows) feature so it selects the file in the folder it opens.</li>\n\t\t\
\ </ul>"
version: 2.2.7
- date: 2006-08-07
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> the ignore list system.</li>\n\
\t\t\t\t\t\t<li>dupeGuru is now a Universal application on Mac OS X.</li>\n\t\t\
\ </ul>"
version: 2.2.6
- date: 2006-07-26
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> application (.app) dupe detection\
\ on Mac OS X.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> an issue that occasionally made\
\ dupeGuru crash on startup.</li>\n\t\t </ul>"
version: 2.2.5
- date: 2006-06-27
description: "<ul>\n\t\t\t\t\t\t<li><b>Fixed</b> an issue with Move and Copy features.</li>\n\
\t\t </ul>"
version: 2.2.4
- date: 2006-06-15
description: "<ul>\n\t\t\t\t\t\t<li><b>Improved</b> duplicate scanning speed.</li>\n\
\t\t\t\t\t\t<li><b>Added</b> a warning that a file couldn't be renamed if a file\
\ with the same name already exists.</li>\n\t\t </ul>"
version: 2.2.3
- date: 2006-06-07
description: "<ul>\n\t\t\t\t\t\t<li><b>Added</b> \"Rename Selected\" feature.</li>\n\
\t\t\t\t\t\t<li><b>Fixed</b> some minor issues with \"Reload Last Results\" feature.</li>\n\
\t\t\t\t\t\t<li><b>Fixed</b> ignore list issues.</li>\n\t\t </ul>"
version: 2.2.2
- date: 2006-05-22
description: "<ul>\n\t\t \t<li><b>Fixed</b> occasional progress bar woes\
\ under Windows.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug in the registration\
\ system under Windows.</li>\n\t\t\t\t\t\t<li>Nothing has been changed in the\
\ Mac OS X version, but I want to keep version in sync.</li>\n\t\t \
\ </ul>"
version: 2.2.1
- date: 2006-05-10
description: "<ul>\n\t\t \t<li><b>Added</b> destination path re-creation\
\ options.</li>\n\t\t\t\t\t\t<li><b>Added</b> an ignore list.</li>\n\t\t\t\t\t\
\t<li><b>Changed</b> the main icon.</li>\n\t\t\t\t\t\t<li><b>Improved</b> dramatically\
\ the delta values feature.</li>\n\t\t </ul>"
version: 2.2.0
- date: 2006-04-18
description: "<ul>\n\t\t \t<li><b>Added</b> the \"Match similar words\"\
\ option.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> Power marking issues under Mac.</li>\n\
\t\t </ul>"
version: 2.1.2
- date: 2006-04-14
description: "<ul>\n\t\t \t<li><b>Added</b> the \"Display delta values\"\
\ option.</li>\n\t\t\t\t\t\t<li><b>Improved</b> Power marking sorting speed under\
\ Mac.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> Power marking sorting issues.</li>\n\
\t\t </ul>"
version: 2.1.1
- date: 2006-04-03
description: "<ul>\n\t\t \t<li><b>Added</b> the Power Marker feature.</li>\n\
\t\t\t\t\t\t<li><b>Fixed</b> a column sorting bug. The results would sometimes\
\ lose their sort order.</li>\n\t\t\t\t\t\t<li><b>Fixed</b> a bug with the Make\
\ Reference feature. The results sometimes wasn't correctly refreshed after the\
\ reference switch.</li>\n\t\t </ul>"
version: 2.1.0
- date: 2006-03-23
description: "<ul>\n\t\t \t<li><b>Fixed</b> an issue occasionally occurring\
\ when trying to reload results from removable media that is no longer present.</li>\n\
\t\t </ul>"
version: 2.0.1
- date: 2006-03-17
description: "<ul>\n\t\t \t<li>Complete rewrite.</li>\n\t\t \
\ \t<li>Now runs on Mac OS X.</li>\n\t\t </ul>"
version: 2.0.0
- date: 2004-09-24
description: "<ul>\n\t\t \t<li>Initial release.</li>\n\t\t \
\ </ul>"
version: 1.0.0

15
help_se/gen.py Normal file
View File

@@ -0,0 +1,15 @@
#!/usr/bin/env python
# Copyright 2009 Hardcoded Software (http://www.hardcoded.net)
#
# This software is licensed under the "HS" License as described in the "LICENSE" file,
# which should be included with this package. The terms are also available at
# http://www.hardcoded.net/licenses/hs_license
import os.path as op
from hsdocgen import generate_help, filters
def generate(windows=False, force_render=True):
tix = filters.tixgen("https://hardcoded.lighthouseapp.com/projects/31699-dupeguru/tickets/{0}")
basepath = op.dirname(__file__)
generate_help.main(basepath, op.join(basepath, 'dupeguru_help'), force_render=force_render, tix=tix, windows=windows)

View File

@@ -0,0 +1,407 @@
/*****************************************************
General settings
*****************************************************/
BODY
{
background-color:white;
}
BODY,A,P,UL,TABLE,TR,TD
{
font-family: "Helvetica Neue", "Lucida Grande", Arial, sans-serif;
font-size:10pt;
color: #336699;/*darker than 5588bb for the sake of the eyes*/
}
/*****************************************************
"A" settings
*****************************************************/
A
{
color: #ae322b;
text-decoration:underline;
font-weight:bold;
}
A.glossaryword {color:#A0A0A0;}
A.noline
{
text-decoration: none;
}
/*****************************************************
Menu and mainframe settings
*****************************************************/
.maincontainer
{
display:block;
margin-left:7%;
margin-right:7%;
padding-left:5px;
padding-right:0px;
border-color:#CCCCCC;
border-style:solid;
border-width:2px;
border-right-width:0px;
border-bottom-width:0px;
border-top-color:#ae322b;
vertical-align:top;
}
TD.menuframe
{
width:30%;
}
.menu
{
margin:4px 4px 4px 4px;
margin-top: 16pt;
border-color:gray;
border-width:1px;
border-style:dotted;
padding-top:10pt;
padding-bottom:10pt;
padding-right:6pt;
}
.submenu
{
list-style-type: none;
margin-left:26pt;
margin-top:0pt;
margin-bottom:0pt;
padding-left:0pt;
}
A.menuitem,A.menuitem_selected
{
font-size:14pt;
font-weight:normal;
padding-left:10pt;
color:#5588bb;
margin-right:2pt;
margin-left:4pt;
text-decoration:none;
}
A.menuitem_selected
{
font-weight:bold;
}
A.submenuitem
{
font-weight:normal;
color:#5588bb;
text-decoration:none;
}
.titleline
{
border-width:3px;
border-style:solid;
border-left-width:0px;
border-right-width:0px;
border-top-width:0px;
border-color:#CCCCCC;
margin-left:28pt;
margin-right:2pt;
line-height:1px;
padding-top:0px;
margin-top:0px;
display:block;
}
.titledescrip
{
text-align:left;
display:block;
margin-left:26pt;
color:#ae322b;
}
.mainlogo
{
display:block;
margin-left:8%;
margin-top:4pt;
margin-bottom:4pt;
}
/*****************************************************
IMG settings
*****************************************************/
IMG
{
border-style:none;
}
IMG.smallbutton
{
margin-right: 20px;
float:none;
}
IMG.floating
{
float:left;
margin-right: 4pt;
margin-bottom: 4pt;
}
IMG.lefticon
{
vertical-align: middle;
padding-right: 2pt;
}
IMG.righticon
{
vertical-align: middle;
padding-left: 2pt;
}
/*****************************************************
TABLE settings
*****************************************************/
TABLE
{
border-style:none;
}
TABLE.box
{
width: 90%;
margin-left:5%;
}
TABLE.centered
{
margin-left: auto;
margin-right: auto;
}
TABLE.hardcoded
{
background-color: #225588;
margin-left: auto;
margin-right: auto;
width: 90%;
}
TR { background-color: transparent; }
TABLE.hardcoded TR { background-color: white }
TABLE.hardcoded TR.header
{
font-weight: bold;
color: black;
background-color: #C8D6E5;
}
TABLE.hardcoded TR.header TD {color:black;}
TABLE.hardcoded TD { padding-left: 2pt; }
TD.minimelem {
padding-right:0px;
padding-left:0px;
text-align:center;
}
TD.rightelem
{
text-align:right;
/*padding-left:0pt;*/
padding-right: 2pt;
width: 17%;
}
/*****************************************************
P settings
*****************************************************/
p,.sub{text-align:justify;}
.centered{text-align:center;}
.sub
{
padding-left: 16pt;
padding-right:16pt;
}
.Note, .ContactInfo
{
border-color: #ae322b;
border-width: 1pt;
border-style: dashed;
text-align:justify;
padding: 2pt 2pt 2pt 2pt;
margin-bottom:4pt;
margin-top:8pt;
list-style-position:inside;
}
.ContactInfo
{
width:60%;
margin-left:5%;
}
.NewsItem
{
border-color:#ae322b;
border-style: solid;
border-right:none;
border-top:none;
border-left:none;
border-bottom-width:1px;
text-align:justify;
padding-left:4pt;
padding-right:4pt;
padding-bottom:8pt;
}
/*****************************************************
Lists settings
*****************************************************/
UL.plain
{
list-style-type: none;
padding-left:0px;
margin-left:0px;
}
LI.plain
{
list-style-type: none;
}
LI.section
{
padding-top: 6pt;
}
UL.longtext LI
{
border-color: #ae322b;
border-width:0px;
border-top-width:1px;
border-style:solid;
margin-top:12px;
}
/*
with UL.longtext LI, there can be anything between
the UL and the LI, and it will still make the
lontext thing, I must break it with this hack
*/
UL.longtext UL LI
{
border-style:none;
margin-top:2px;
}
/*****************************************************
Titles settings
*****************************************************/
H1,H2,H3
{
font-family:"Courier New",monospace;
color:#5588bb;
}
H1
{
font-size:18pt;
color: #ae322b;
border-color: #70A0CF;
border-width: 1pt;
border-style: solid;
margin-top: 16pt;
margin-left: 5%;
margin-right: 5%;
padding-top: 2pt;
padding-bottom:2pt;
text-align: center;
}
H2
{
border-color: #ae322b;
border-bottom-width: 2px;
border-top-width: 0pt;
border-left-width: 2px;
border-right-width: 0pt;
border-bottom-color: #cccccc;
border-style: solid;
margin-top: 16pt;
margin-left: 0pt;
margin-right: 0pt;
padding-bottom:3pt;
padding-left:5pt;
text-align: left;
font-size:16pt;
}
H3
{
display:block;
color:#ae322b;
border-color: #70A0CF;
border-bottom-width: 2px;
border-top-width: 0pt;
border-left-width: 0pt;
border-right-width: 0pt;
border-style: dashed;
margin-top: 12pt;
margin-left: 0pt;
margin-bottom: 4pt;
width:auto;
padding-bottom:3pt;
padding-right:2pt;
padding-left:2pt;
text-align: left;
font-weight:bold;
}
/*****************************************************
Misc. classes
*****************************************************/
.longtext:first-letter {font-size: 150%}
.price, .loweredprice, .specialprice {font-weight:bold;}
.loweredprice {text-decoration:line-through}
.specialprice {color:red}
form
{
margin:0px;
}
.program_summary
{
float:right;
margin: 32pt;
margin-top:0pt;
margin-bottom:0pt;
}
.screenshot
{
float:left;
margin: 8pt;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,14 @@
<%inherit file="/base_help.mako"/>
${next.body()}
<%def name="menu()"><%
self.menuitem('intro.htm', 'Introduction', 'Introduction to dupeGuru')
self.menuitem('quick_start.htm', 'Quick Start', 'Quickly get into the action')
self.menuitem('directories.htm', 'Directories', 'Managing dupeGuru directories')
self.menuitem('preferences.htm', 'Preferences', 'Setting dupeGuru preferences')
self.menuitem('results.htm', 'Results', 'Time to delete these duplicates!')
self.menuitem('power_marker.htm', 'Power Marker', 'Take control of your duplicates')
self.menuitem('faq.htm', 'F.A.Q.', 'Frequently Asked Questions')
self.menuitem('versions.htm', 'Version History', 'Changes dupeGuru went through')
self.menuitem('credits.htm', 'Credits', 'People who contributed to dupeGuru')
%></%def>

View File

@@ -0,0 +1,20 @@
<%!
title = 'Credits'
selected_menu_item = 'Credits'
%>
<%inherit file="/base_dg.mako"/>
Below is the list of people who contributed, directly or indirectly to dupeGuru.
${self.credit('Virgil Dupras', 'Developer', "That's me, Hardcoded Software founder", 'www.hardcoded.net', 'hsoft@hardcoded.net')}
${self.credit('Jerome', 'Icon designer', "Icons in dupeGuru are from him")}
${self.credit('Python', 'Programming language', "The bestest of the bests", 'www.python.org')}
${self.credit('PyObjC', 'Python-to-Cocoa bridge', "Used for the Mac OS X version", 'pyobjc.sourceforge.net')}
${self.credit('Python for .NET', 'Python-to-.NET bridge', "Used for the Windows version", 'sourceforge.net/projects/pythonnet/')}
${self.credit('Sparkle', 'Auto-update library', "Used for the Mac OS X version", 'andymatuschak.org/pages/sparkle')}
${self.credit('You', 'dupeGuru user', "What would I do without you?")}

View File

@@ -0,0 +1,24 @@
<%!
title = 'Directories'
selected_menu_item = 'Directories'
%>
<%inherit file="/base_dg.mako"/>
There is a panel in dupeGuru called **Directories**. You can open it by clicking on the **Directories** button. This directory contains the list of the directories that will be scanned when you click on **Start Scanning**.
This panel is quite straightforward to use. If you want to add a directory, click on **Add**. If you added directories before, a popup menu with a list of recent directories you added will pop. You can click on one of them to add it directly to your list. If you click on the first item of the popup menu, **Add New Directory...**, you will be prompted for a directory to add. If you never added a directory, no menu will pop and you will directly be prompted for a new directory to add.
To remove a directory, select the directory to remove and click on **Remove**. If a subdirectory is selected when you click remove, the selected directory will be set to **excluded** state (see below) instead of being removed.
Directory states
-----
Every directory can be in one of these 3 states:
* **Normal:** Duplicates found in these directories can be deleted.
* **Reference:** Duplicates found in this directory **cannot** be deleted. Files in reference directories will be in a blue color in the results.
* **Excluded:** Files in this directory will not be included in the scan.
The default state of a directory is, of course, **Normal**. You can use **Reference** state for a directory if you want to be sure that you won't delete any file from it.
When you set the state of a directory, all subdirectories of this directory automatically inherit this state unless you explicitly set a subdirectory's state.

View File

@@ -0,0 +1,72 @@
<%!
title = 'dupeGuru F.A.Q.'
selected_menu_item = 'F.A.Q.'
%>
<%inherit file="/base_dg.mako"/>
<%text filter="md">
### What is dupeGuru?
dupeGuru is a tool to find duplicate files on your computer. It can scan either filenames or content. The filename scan features a fuzzy matching algorithm that can find duplicate filenames even when they are not exactly the same.
### What makes it better than other duplicate scanners?
The scanning engine is extremely flexible. You can tweak it to really get the kind of results you want. You can read more about dupeGuru tweaking option at the [Preferences page](preferences.htm).
### How safe is it to use dupeGuru?
Very safe. dupeGuru has been designed to make sure you don't delete files you didn't mean to delete. First, there is the reference directory system that lets you define directories where you absolutely **don't** want dupeGuru to let you delete files there, and then there is the group reference system that makes sure that you will **always** keep at least one member of the duplicate group.
### What are the demo limitations of dupeGuru?
In demo mode, you can only perform actions (delete/copy/move) on 10 duplicates per session.
### The mark box of a file I want to delete is disabled. What must I do?
You cannot mark the reference (The first file) of a duplicate group. However, what you can do is to promote a duplicate file to reference. Thus, if a file you want to mark is reference, select a duplicate file in the group that you want to promote to reference, and click on **Actions-->Make Selected Reference**. If the reference file is from a reference directory (filename written in blue letters), you cannot remove it from the reference position.
### I have a directory from which I really don't want to delete files.
If you want to be sure that dupeGuru will never delete file from a particular directory, just open the **Directories panel**, select that directory, and set its state to **Reference**.
### What is this '(X discarded)' notice in the status bar?
In some cases, some matches are not included in the final results for security reasons. Let me use an example. We have 3 file: A, B and C. We scan them using a low filter hardness. The scanner determines that A matches with B, A matches with C, but B does **not** match with C. Here, dupeGuru has kind of a problem. It cannot create a duplicate group with A, B and C in it because not all files in the group would match together. It could create 2 groups: one A-B group and then one A-C group, but it will not, for security reasons. Lets think about it: If B doesn't match with C, it probably means that either B, C or both are not actually duplicates. If there would be 2 groups (A-B and A-C), you would end up delete both B and C. And if one of them is not a duplicate, that is really not what you want to do, right? So what dupeGuru does in a case like this is to discard the A-C match (and adds a notice in the status bar). Thus, if you delete B and re-run a scan, you will have a A-C match in your next results.
### I want to mark all files from a specific directory. What can I do?
Enable the [Power Marker](power_marker.htm) mode and click on the Directory column to sort your duplicates by Directory. It will then be easy for you to select all duplicates from the same directory, and then press Space to mark all selected duplicates.
### I want to remove all files that are more than 300 KB away from their reference file. What can I do?
* Enable the [Power Marker](power_marker.htm) mode.
* Enable the **Delta Values** mode.
* Click on the "Size" column to sort the results by size.
* Select all duplicates below -300.
* Click on **Remove Selected from Results**.
* Select all duplicates over 300.
* Click on **Remove Selected from Results**.
### I want to make my latest modified files reference files. What can I do?
* Enable the [Power Marker](power_marker.htm) mode.
* Enable the **Delta Values** mode.
* Click on the "Modification" column to sort the results by modification date.
* Click on the "Modification" column again to reverse the sort order (see Power Marker page to know why).
* Select all duplicates over 0.
* Click on **Make Selected Reference**.
### I want to mark all duplicates containing the word &quot;copy&quot;. How do I do that?
* **Windows**: Click on **Actions --> Apply Filter**, then type "copy", then click OK.
* **Mac OS X**: Type "copy" in the "Filter" field in the toolbar.
* Click on **Mark --> Mark All**.
### I tried to send my duplicates to Trash, but dupeGuru is telling me it can't do it. Why? What can I do?
Most of the time, the reason why dupeGuru can't send files to Trash is because of file permissions. You need *write* permissions on files you want to send to Trash. If you're not familiar with the command line, you can use utilities such as [BatChmod](http://macchampion.com/arbysoft/BatchMod) to fix your permissions.
If dupeGuru still gives you troubles after fixing your permissions, there have been some cases where using "Move Marked to..." as a workaround did the trick. So instead of sending your files to Trash, you send them to a temporary folder with the "Move Marked to..." action, and then you delete that temporary folder manually.
If all of this fail, [contact HS support](http://www.hardcoded.net/support), we'll figure it out.
</%text>

View File

@@ -0,0 +1,13 @@
<%!
title = 'Introduction to dupeGuru'
selected_menu_item = 'introduction'
%>
<%inherit file="/base_dg.mako"/>
dupeGuru is a tool to find duplicate files on your computer. It can scan either filenames or contents. The filename scan features a fuzzy matching algorithm that can find duplicate filenames even when they are not exactly the same.
Although dupeGuru can easily be used without documentation, reading this file will help you to master it. If you are looking for guidance for your first duplicate scan, you can take a look at the [Quick Start](quick_start.htm) section.
It is a good idea to keep dupeGuru updated. You can download the latest version on the [dupeGuru homepage](http://www.hardcoded.net/dupeguru/).
<%def name="meta()"><meta name="AppleTitle" content="dupeGuru Help"></meta></%def>

View File

@@ -0,0 +1,33 @@
<%!
title = 'Power Marker'
selected_menu_item = 'Power Marker'
%>
<%inherit file="/base_dg.mako"/>
You will probably not use the Power Marker feature very often, but if you get into a situation where you need it, you will be pretty happy that this feature exists.
What is it?
-----
When the Power Marker mode is enabled, the duplicates are shown without their respective reference file. You can select, mark and sort this list, just like in normal mode.
So, what is it for?
-----
The dupeGuru results, when in normal mode, are sorted according to duplicate groups' **reference file**. This means that if you want, for example, to mark all duplicates with the "exe" extension, you cannot just sort the results by "Kind" to have all exe duplicates together because a group can be composed of more than one kind of files. That is where Power Marker comes into play. To mark all your "exe" duplicates, you just have to:
* Enable the Power marker mode.
* Add the "Kind" column with the "Columns" menu.
* Click on that "Kind" column to sort the list by kind.
* Locate the first duplicate with a "exe" kind.
* Select it.
* Scroll down the list to locate the last duplicate with a "exe" kind.
* Hold Shift and click on it.
* Press Space to mark all selected duplicates.
Power Marker and delta values
-----
The Power Marker unveil its true power when you use it with the **Delta Values** switch turned on. When you turn it on, relative values will be displayed instead of absolute ones. So if, for example, you want to remove from your results all duplicates that are more than 300 KB away from their reference, you could sort the Power Marker by Size, select all duplicates under -300 in the Size column, delete them, and then do the same for duplicates over 300 at the bottom of the list.
You could also use it to change the reference priority of your duplicate list. When you make a fresh scan, if there are no reference directories, the reference file of every group is the biggest file. If you want to change that, for example, to the latest modification time, you can sort the Power Marker by modification time in **descending** order, select all duplicates with a modification time delta value higher than 0 and click on **Make Selected Reference**. The reason why you must make the sort order descending is because if 2 files among the same duplicate group are selected when you click on **Make Selected Reference**, only the first of the list will be made reference, the other will be ignored. And since you want the last modified file to be reference, having the sort order descending assures you that the first item of the list will be the last modified.

View File

@@ -0,0 +1,27 @@
<%!
title = 'Preferences'
selected_menu_item = 'Preferences'
%>
<%inherit file="/base_dg.mako"/>
**Scan Type:** This option determines what aspect of the files will be compared in the duplicate scan. If you select **Filename**, dupeGuru will compare every filenames word-by-word and, depending on the other settings below, it will determine if enough words are matching to consider 2 files duplicates. If you select **Content**, only files with the exact same content will match.
**Filter Hardness:** If you chose the **Filename** scan type, this option determines how similar two filenames must be for dupeGuru to consider them duplicates. If the filter hardness is, for example 80, it means that 80% of the words of two filenames must match. To determine the matching percentage, dupeGuru first counts the total number of words in **both** filenames, then count the number of words matching (every word matching count as 2), and then divide the number of words matching by the total number of words. If the result is higher or equal to the filter hardness, we have a duplicate match. For example, "a b c d" and "c d e" have a matching percentage of 57 (4 words matching, 7 total words).
**Word weighting:** If you chose the **Filename** scan type, this option slightly changes how matching percentage is calculated. With word weighting, instead of having a value of 1 in the duplicate count and total word count, every word have a value equal to the number of characters they have. With word weighting, "ab cde fghi" and "ab cde fghij" would have a matching percentage of 53% (19 total characters, 10 characters matching (4 for "ab" and 6 for "cde")).
**Match similar words:** If you turn this option on, similar words will be counted as matches. For example "The White Stripes" and "The White Stripe" would have a match % of 100 instead of 66 with that option turned on. **Warning:** Use this option with caution. It is likely that you will get a lot of false positives in your results when turning it on. However, it will help you to find duplicates that you wouldn't have found otherwise. The scan process also is significantly slower with this option turned on.
**Can mix file kind:** If you check this box, duplicate groups are allowed to have files with different extensions. If you don't check it, well, they aren't!
**Use regular expressions when filtering:** If you check this box, the filtering feature will treat your filter query as a **regular expression**. Explaining them is beyond the scope of this document. A good place to start learning it is <http://www.regular-expressions.info>.
**Remove empty folders after delete or move:** When this option is enabled, folders are deleted after a file is deleted or moved and the folder is empty.
**Copy and Move:** Determines how the Copy and Move operations (in the Action menu) will behave.
* **Right in destination:** All files will be sent directly in the selected destination, without trying to recreate the source path at all.
* **Recreate relative path:** The source file's path will be re-created in the destination directory up to the root selection in the Directories panel. For example, if you added "/Users/foobar/Music" to your Directories panel and you move "/Users/foobar/Music/Artist/Album/the_song.mp3" to the destination "/Users/foobar/MyDestination", the final destination for the file will be "/Users/foobar/MyDestination/Artist/Album" ("/Users/foobar/Music" has been trimmed from source's path in the final destination.).
* **Recreate absolute path:** The source file's path will be re-created in the destination directory in it's entirety. For example, if you move "/Users/foobar/Music/Artist/Album/the_song.mp3" to the destination "/Users/foobar/MyDestination", the final destination for the file will be "/Users/foobar/MyDestination/Users/foobar/Music/Artist/Album".</li>
In all cases, dupeGuru nicely handles naming conflicts by prepending a number to the destination filename if the filename already exists in the destination.

View File

@@ -0,0 +1,18 @@
<%!
title = 'Quick Start'
selected_menu_item = 'Quick Start'
%>
<%inherit file="/base_dg.mako"/>
To get you quickly started with dupeGuru, let's just make a standard scan using default preferences.
* Click on **Directories**.
* Click on **Add**.
* Choose a directory you want to scan for duplicates.
* Click on **Start Scanning**.
* Wait until the scan process is over.
* Look at every duplicate (The files that are indented) and verify that it is indeed a duplicate to the group's reference (The file above the duplicate that is not indented and have a disabled mark box).
* If a file is a false duplicate, select it and click on **Actions-->Remove Selected from Results**.
* Once you are sure that there is no false duplicate in your results, click on **Edit-->Mark All**, and then **Actions-->Send Marked to Recycle bin**.
That is only a basic scan. There are a lot of tweaking you can do to get different results and several methods of examining and modifying your results. To know about them, just read the rest of this help file.

View File

@@ -0,0 +1,73 @@
<%!
title = 'Results'
selected_menu_item = 'Results'
%>
<%inherit file="/base_dg.mako"/>
When dupeGuru is finished scanning for duplicates, it will show its results in the form of duplicate group list.
About duplicate groups
-----
A duplicate group is a group of files that all match together. Every group has a **reference file** and one or more **duplicate files**. The reference file is the first file of the group. Its mark box is disabled. Below it, and indented, are the duplicate files.
You can mark duplicate files, but you can never mark the reference file of a group. This is a security measure to prevent dupeGuru from deleting not only duplicate files, but their reference. You sure don't want that, do you?
What determines which files are reference and which files are duplicates is first their directory state. A files from a reference directory will always be reference in a duplicate group. If all files are from a normal directory, the size determine which file will be the reference of a duplicate group. dupeGuru assumes that you always want to keep the biggest file, so the biggest files will take the reference position.
You can change the reference file of a group manually. To do so, select the duplicate file you want to promote to reference, and click on **Actions-->Make Selected Reference**.
Reviewing results
-----
Although you can just click on **Edit-->Mark All** and then **Actions-->Send Marked to Recycle bin** to quickly delete all duplicate files in your results, it is always recommended to review all duplicates before deleting them.
To help you reviewing the results, you can bring up the **Details panel**. This panel shows all the details of the currently selected file as well as its reference's details. This is very handy to quickly determine if a duplicate really is a duplicate. You can also double-click on a file to open it with its associated application.
If you have more false duplicates than true duplicates (If your filter hardness is very low), the best way to proceed would be to review duplicates, mark true duplicates and then click on **Actions-->Send Marked to Recycle bin**. If you have more true duplicates than false duplicates, you can instead mark all files that are false duplicates, and use **Actions-->Remove Marked from Results**.
Marking and Selecting
-----
A **marked** duplicate is a duplicate with the little box next to it having a check-mark. A **selected** duplicate is a duplicate being highlighted. The multiple selection actions can be performed in dupeGuru in the standard way (Shift/Command/Control click). You can toggle all selected duplicates' mark state by pressing **space**.
Delta Values
-----
If you turn this switch on, some columns will display the value relative to the duplicate's reference instead of the absolute values. These delta values will also be displayed in a different color so you can spot them easily. For example, if a duplicate is 1.2 MB and its reference is 1.4 MB, the Size column will display -0.2 MB. This option is a killer feature when combined with the [Power Marker](power_marker.htm).
Filtering
-----
dupeGuru supports post-scan filtering. With it, you can narrow down your results so you can perform actions on a subset of it. For example, you could easily mark all duplicates with their filename containing "copy" from your results using the filter.
**Windows:** To use the filtering feature, click on Actions --> Apply Filter, write down the filter you want to apply and click OK. To go back to unfiltered results, click on Actions --> Cancel Filter.
**Mac OS X:** To use the filtering feature, type your filter in the "Filter" search field in the toolbar. To go back to unfiltered result, blank out the field, or click on the "X".
In simple mode (the default mode), whatever you type as the filter is the string used to perform the actual filtering, with the exception of one wildcard: **\***. Thus, if you type "[*]" as your filter, it will match anything with [] brackets in it, whatever is in between those brackets.
For more advanced filtering, you can turn "Use regular expressions when filtering" on. The filtering feature will then use **regular expressions**. A regular expression is a language for matching text. Explaining them is beyond the scope of this document. A good place to start learning it is <http://www.regular-expressions.info>.
Matches are case insensitive in both simple and regexp mode.
For the filter to match, your regular expression don't have to match the whole filename, it just have to contain a string matching the expression.
You might notice that not all duplicates in the filtered results will match your filter. That is because as soon as one single duplicate in a group matches the filter, the whole group stays in the results so you can have a better view of the duplicate's context. However, non-matching duplicates are in "reference mode". Therefore, you can perform actions like Mark All and be sure to only mark filtered duplicates.
Action Menu
-----
* **Start Duplicate Scan:** Starts a new duplicate scan.
* **Clear Ignore List:** Remove all ignored matches you added. You have to start a new scan for the newly cleared ignore list to be effective.
* **Export Results to XHTML:** Take the current results, and create an XHTML file out of it. The columns that are visible when you click on this button will be the columns present in the XHTML file. The file will automatically be opened in your default browser.
* **Send Marked to Trash:** Send all marked duplicates to trash, obviously.
* **Move Marked to...:** Prompt you for a destination, and then move all marked files to that destination. Source file's path might be re-created in destination, depending on the "Copy and Move" preference.
* **Copy Marked to...:** Prompt you for a destination, and then copy all marked files to that destination. Source file's path might be re-created in destination, depending on the "Copy and Move" preference.
* **Remove Marked from Results:** Remove all marked duplicates from results. The actual files will not be touched and will stay where they are.
* **Remove Selected from Results:** Remove all selected duplicates from results. Note that all selected reference files will be ignored, only duplicates can be removed with this action.
* **Make Selected Reference:** Promote all selected duplicates to reference. If a duplicate is a part of a group having a reference file coming from a reference directory (in blue color), no action will be taken for this duplicate. If more than one duplicate among the same group are selected, only the first of each group will be promoted.
* **Add Selected to Ignore List:** This first removes all selected duplicates from results, and then add the match of that duplicate and the current reference in the ignore list. This match will not come up again in further scan. The duplicate itself might come back, but it will be matched with another reference file. You can clear the ignore list with the Clear Ignore List command.
* **Open Selected with Default Application:** Open the file with the application associated with selected file's type.
* **Reveal Selected in Finder:** Open the folder containing selected file.
* **Rename Selected:** Prompts you for a new name, and then rename the selected file.

View File

@@ -0,0 +1,6 @@
<%!
title = 'dupeGuru version history'
selected_menu_item = 'Version History'
%>
<%inherit file="/base_dg.mako"/>
${self.output_changelogs(changelog)}