1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-22 06:37:17 +00:00

Update site to include help

- Add sphinx documentation generated from build to help
- Add link to help (in english) in header
- Add link to github in header
This commit is contained in:
2018-04-08 11:25:34 -05:00
parent 10f06999ed
commit bacba3f0a5
431 changed files with 117335 additions and 0 deletions

4
help/fr/.buildinfo Normal file
View File

@@ -0,0 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: ec529003170552bde5bf104aba0f5826
tags: 645f666f9bcd5a90fca523b33c5a78b7

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,705 @@
:tocdepth: 1
Changelog
=========
**About the word "crash":** When reading this changelog, you might be alarmed at the number of fixes
for "crashes". Be aware that when the word "crash" is used here, it refers to "soft crashes" which
don't cause the application to quit. You simply get an error window that asks you if you want to
send the crash report to Hardcoded Software. Crashes that cause the application to quit are called
"hard crashes" in this changelog.
4.0.3 (2016-11-24)
----------------------
* Add new picture cache backend: shelve
* Make shelve picture cache backend the active one on MacOS to fix `#394 <https://github.com/hsoft/dupeguru/issues/394>`__ more
elegantly. [cocoa]
* Remove Sparkle (auto-updates) due to technical limitations. [cocoa]
4.0.2 (2016-10-09)
----------------------
* Fix systematic crash in Picture Mode under MacOS Sierra. (`#394 <https://github.com/hsoft/dupeguru/issues/394>`__)
* No change for Linux. Just keeping version in sync.
4.0.1 (2016-08-24)
----------------------
* Add Greek localization, by Gabriel Koutilellis. (`#382 <https://github.com/hsoft/dupeguru/issues/382>`__)
* Fix localization base path. [qt] (`#378 <https://github.com/hsoft/dupeguru/issues/378>`__)
* Fix broken load results dialog. [qt]
* Fix crash on load results. [cocoa] (`#380 <https://github.com/hsoft/dupeguru/issues/380>`__)
* Save preferences more predictably. [qt] (`#379 <https://github.com/hsoft/dupeguru/issues/379>`__)
* Fix picture mode's fuzzy block scanner threshold. (`#387 <https://github.com/hsoft/dupeguru/issues/387>`__)
4.0.0 (2016-07-01)
----------------------
* Merge Standard, Music and Picture editions in the same application!
* Improve documentation. (`#294 <https://github.com/hsoft/dupeguru/issues/294>`__)
* Add Polish, Korean, Spanish and Dutch localizations.
* qt: Fix wrong use_regexp option propagation to core. (`#295 <https://github.com/hsoft/dupeguru/issues/295>`__)
* qt: Fix progress window mistakenly showing up on startup. (`#357 <https://github.com/hsoft/dupeguru/issues/357>`__)
* Bump Python requirement to v3.4.
* Bump OS X requirement to 10.8
* Drop Windows support, maybe temporarily.
`Details <https://www.hardcoded.net/archive2015`#2015 <https://github.com/hsoft/dupeguru/issues/2015>`__-11-01>`_
* cocoa: Drop iPhoto, Aperture and iTunes support. Was unmaintained and obsolete.
* Drop "Audio Contents" scan type. Was confusing and seldom useful.
* Change license to GPLv3
3.9.1 (2014-10-17)
----------------------
* Fixed ``AttributeError: 'ComboboxModel' object has no attribute 'reset'``. [Linux, Windows] (`#254 <https://github.com/hsoft/dupeguru/issues/254>`__)
* Fixed ``PermissionError`` on saving results. (`#266 <https://github.com/hsoft/dupeguru/issues/266>`__)
* Fixed a build problem introduced by Sphinx 1.2.3.
* Updated German localisation, by Frank Weber.
3.9.0 (2014-04-19)
----------------------
* This is mostly a dependencies upgrade.
* Upgraded to Python 3.3.
* Upgraded to Qt 5.
* Minimum Windows version is now Windows 7 64bit.
* Minimum Ubuntu version is now 14.04.
* Minimum OS X version is now 10.7 (Lion).
* ... But with a couple of little improvements.
* Improved documentation.
* Overwrite subfolders' state when setting states in folder dialog (`#248 <https://github.com/hsoft/dupeguru/issues/248>`__)
* The error report dialog now brings the user to Github issues.
3.8.0 (2013-12-07)
----------------------
* Disable symlink/hardlink deletion option when not relevant. (`#247 <https://github.com/hsoft/dupeguru/issues/247>`__)
* Make Cmd+A select all folders in the Folder Selection dialog. [Mac] (`#228 <https://github.com/hsoft/dupeguru/issues/228>`__)
* Make non-numeric delta comparison case insensitive. (`#239 <https://github.com/hsoft/dupeguru/issues/239>`__)
* Fix surrogate-related UnicodeEncodeError on CSV export. (`#210 <https://github.com/hsoft/dupeguru/issues/210>`__)
* Fixed crash on Dupe Count sorting with Delta + Dupes Only. (`#238 <https://github.com/hsoft/dupeguru/issues/238>`__)
* Improved documentation.
* Important internal refactorings.
* Dropped Ubuntu 12.04 and 12.10 support.
* Removed the fairware dialog (`More Info <http://www.hardcoded.net/articles/phasing-out-fairware>`__).
3.7.1 (2013-08-19)
----------------------
* Fixed folder scan type, which was broken in v3.7.0.
3.7.0 (2013-08-17)
----------------------
* Improved delta values to support non-numerical values. (`#213 <https://github.com/hsoft/dupeguru/issues/213>`__)
* Improved the Re-Prioritize dialog's UI. (`#224 <https://github.com/hsoft/dupeguru/issues/224>`__)
* Added hardlink/symlink support on Windows Vista+. (`#220 <https://github.com/hsoft/dupeguru/issues/220>`__)
* Dropped 32bit support on Mac OS X.
* Added Vietnamese localization by Phan Anh.
3.6.1 (2013-04-28)
----------------------
* Improved "Make Selection Reference" to make it clearer. (`#222 <https://github.com/hsoft/dupeguru/issues/222>`__)
* Improved "Open Selected" to allow opening more than one file at once. (`#142 <https://github.com/hsoft/dupeguru/issues/142>`__)
* Fixed a few typos here and there. (`#216 <https://github.com/hsoft/dupeguru/issues/216>`__ `#225 <https://github.com/hsoft/dupeguru/issues/225>`__)
* Tweaked the fairware dialog (`More Info <http://www.hardcoded.net/articles/phasing-out-fairware>`__).
* Added Arch Linux packaging
* Added a 64-bit build for Windows.
* Improved Russian localization by Kyrill Detinov.
* Improved Brazilian localization by Victor Figueiredo.
3.6.0 (2012-08-08)
----------------------
* Added "Export to CSV". (`#189 <https://github.com/hsoft/dupeguru/issues/189>`__)
* Added "Replace with symlinks" to complement "Replace with hardlinks". [Mac, Linux] (`#194 <https://github.com/hsoft/dupeguru/issues/194>`__)
* dupeGuru now tells how many duplicates were affected after each re-prioritization operation. (`#204 <https://github.com/hsoft/dupeguru/issues/204>`__)
* Added Longest/Shortest filename criteria in the re-prioritize dialog. (`#198 <https://github.com/hsoft/dupeguru/issues/198>`__)
* Fixed result table cells which mistakenly became writable in v3.5.0. [Mac] (`#203 <https://github.com/hsoft/dupeguru/issues/203>`__)
* Fixed "Rename Selected" which was broken since v3.5.0. [Mac] (`#202 <https://github.com/hsoft/dupeguru/issues/202>`__)
* Fixed a bug where "Reset to Defaults" in the Columns menu wouldn't refresh menu items' marked state.
* Added Brazilian localization by Victor Figueiredo.
3.5.0 (2012-06-01)
----------------------
* Added a Deletion Options panel.
* Greatly improved memory usage for big scans.
* Added a keybinding for the filter field. (`#182 <https://github.com/hsoft/dupeguru/issues/182>`__) [Mac]
* Upgraded minimum requirements for Ubuntu to 12.04.
3.4.1 (2012-04-14)
----------------------
* Fixed the "Folders" scan type. [Mac]
* Fixed localization issues. [Windows, Linux]
3.4.0 (2012-03-29)
----------------------
* Improved results window UI. [Windows, Linux]
* Added a dialog to edit the Ignore List.
* Added the ability to sort results by "marked" status.
* Fixed "Open with default application". (`#190 <https://github.com/hsoft/dupeguru/issues/190>`__)
* Fixed a bug where there would be a false reporting of discarded matches. (`#195 <https://github.com/hsoft/dupeguru/issues/195>`__)
* Fixed various localization glitches.
* Fixed hard crashes on crash reporting. (`#196 <https://github.com/hsoft/dupeguru/issues/196>`__)
* Fixed bug where the details panel would show up at inconvenient places in the screen. [Windows, Linux]
3.3.3 (2012-02-01)
----------------------
* Fixed crash on adding some folders. [Mac OS X]
* Added Ukrainian localization by Yuri Petrashko.
3.3.2 (2012-01-16)
----------------------
* Fixed random hard crashes (yeah, again). [Mac OS X]
* Fixed crash on Export to HTML. [Windows, Linux]
* Added Armenian localization by Hrant Ohanyan.
* Added Russian localization by Igor Pavlov.
3.3.1 (2011-12-02)
----------------------
* Fixed a couple of nasty crashes.
3.3.0 (2011-11-30)
----------------------
* Added multiple-selection in folder selection dialog for a more efficient folder removal. (`#179 <https://github.com/hsoft/dupeguru/issues/179>`__)
* Fixed a crash in the prioritize dialog. (`#178 <https://github.com/hsoft/dupeguru/issues/178>`__)
* Fixed a bug where mass marking with a filter would mark more than filtered duplicates. (`#181 <https://github.com/hsoft/dupeguru/issues/181>`__)
* Fixed random hard crashes. [Mac OS X] (`#183 <https://github.com/hsoft/dupeguru/issues/183>`__ `#184 <https://github.com/hsoft/dupeguru/issues/184>`__)
* Added Czech localization by Aleš Nehyba.
* Added Italian localization by Paolo Rossi.
3.2.1 (2011-10-02)
----------------------
* Fixed a couple of broken action bindings from v3.2.0.
3.2.0 (2011-09-27)
----------------------
* Added duplicate re-prioritization dialog. (`#138 <https://github.com/hsoft/dupeguru/issues/138>`__)
* Added font size preference for duplicate table. (`#82 <https://github.com/hsoft/dupeguru/issues/82>`__)
* Added Quicklook support. [Mac OS X] (`#21 <https://github.com/hsoft/dupeguru/issues/21>`__)
* Improved behavior of Mark Selected. (`#139 <https://github.com/hsoft/dupeguru/issues/139>`__)
* Improved filename sorting. (`#169 <https://github.com/hsoft/dupeguru/issues/169>`__)
* Added Chinese (Simplified) localization by Eric Dee.
* Tweaked the fairware system.
* Upgraded minimum requirements to OS X 10.6 and Ubuntu 11.04.
3.1.2 (2011-08-25)
----------------------
* Fixed a bug preventing the Folders scan from working. (`#172 <https://github.com/hsoft/dupeguru/issues/172>`__)
3.1.1 (2011-08-24)
----------------------
* Added German localization by Gregor Tätzner.
* Improved OS X Lion compatibility. [Mac OS X]
* Made the file collection phase cancellable. (`#168 <https://github.com/hsoft/dupeguru/issues/168>`__)
* Fixed glitch in folder window upon selecting a folder state. [Windows, Linux] (`#165 <https://github.com/hsoft/dupeguru/issues/165>`__)
* Fixed a text coloring glitch in the results. (`#156 <https://github.com/hsoft/dupeguru/issues/156>`__)
* Fixed glitch in the sorting feature of the Folder column. (`#161 <https://github.com/hsoft/dupeguru/issues/161>`__)
* Make sure that saved results have the ".dupeguru" extension. [Linux] (`#157 <https://github.com/hsoft/dupeguru/issues/157>`__)
3.1.0 (2011-04-16)
----------------------
* Added the "Folders" scan type. (`#89 <https://github.com/hsoft/dupeguru/issues/89>`__)
* Fixed a couple of crashes. (`#140 <https://github.com/hsoft/dupeguru/issues/140>`__ `#149 <https://github.com/hsoft/dupeguru/issues/149>`__)
3.0.2 (2011-03-16)
----------------------
* Fixed crash after removing marked dupes. (`#140 <https://github.com/hsoft/dupeguru/issues/140>`__)
* Fixed crash on error handling. [Windows] (`#144 <https://github.com/hsoft/dupeguru/issues/144>`__)
* Fixed crash on copy/move. [Windows] (`#148 <https://github.com/hsoft/dupeguru/issues/148>`__)
* Fixed crash when launching dupeGuru from a very long folder name. [Mac OS X] (`#119 <https://github.com/hsoft/dupeguru/issues/119>`__)
* Fixed a refresh bug in directory panel. (`#153 <https://github.com/hsoft/dupeguru/issues/153>`__)
* Improved reliability of the "Send to Trash" operation. [Linux]
* Tweaked Fairware reminders.
3.0.1 (2011-01-27)
----------------------
* Restored the context menu which had been broken in 3.0.0. [Mac OS X] (`#133 <https://github.com/hsoft/dupeguru/issues/133>`__)
* Fixed a bug where an "unsaved results" warning would be issued on quit even with empty results. (`#134 <https://github.com/hsoft/dupeguru/issues/134>`__)
* Removed focus from the cancel button in the progress dialog to avoid accidental cancellations. [Mac OS X] (`#135 <https://github.com/hsoft/dupeguru/issues/135>`__)
* Folders added through drag and drop are added to the recent folders list. (`#136 <https://github.com/hsoft/dupeguru/issues/136>`__)
* Added a debugging mode. (`#132 <https://github.com/hsoft/dupeguru/issues/132>`__)
* Fixed french localization glitches.
3.0.0 (2011-01-24)
----------------------
* Re-designed the UI. (`#129 <https://github.com/hsoft/dupeguru/issues/129>`__)
* Internationalized dupeGuru and localized it to french. (`#32 <https://github.com/hsoft/dupeguru/issues/32>`__)
* Changed the format of the help file. (`#130 <https://github.com/hsoft/dupeguru/issues/130>`__)
2.12.3 (2011-01-01)
----------------------
* Fixed bug causing results to be corrupted after a scan cancellation. (`#120 <https://github.com/hsoft/dupeguru/issues/120>`__)
* Fixed crash when fetching Fairware unpaid hours. (`#121 <https://github.com/hsoft/dupeguru/issues/121>`__)
* Fixed crash when replacing files with hardlinks. (`#122 <https://github.com/hsoft/dupeguru/issues/122>`__)
2.12.2 (2010-10-05)
----------------------
* Fixed delta column colors which were broken since 2.12.0.
* Fixed column sorting crash. (`#108 <https://github.com/hsoft/dupeguru/issues/108>`__)
* Fixed occasional crash during scan. (`#106 <https://github.com/hsoft/dupeguru/issues/106>`__)
2.12.1 (2010-09-30)
----------------------
* Re-licensed dupeGuru to BSD and made it `Fairware <http://open.hardcoded.net/about/>`__.
2.12.0 (2010-09-26)
----------------------
* Improved UI with a little revamp.
* Added the possibility to place hardlinks to references after having deleted duplicates. [Mac OS X, Linux] (`#91 <https://github.com/hsoft/dupeguru/issues/91>`__)
* Added an option to ignore duplicates hardlinking to the same file. [Mac OS X, Linux] (`#92 <https://github.com/hsoft/dupeguru/issues/92>`__)
* Added multiple selection in the "Add Directory" dialog. [Mac OS X] (`#105 <https://github.com/hsoft/dupeguru/issues/105>`__)
* Fixed a bug preventing drag & drop from working in the Directories panel. [Windows, Linux]
2.11.1 (2010-08-26)
----------------------
* Fixed HTML exporting which was broken in 2.11.0.
2.11.0 (2010-08-18)
----------------------
* Added the ability to save results (and reload them) at arbitrary locations.
* Improved the way reference files in dupe groups are chosen. (`#15 <https://github.com/hsoft/dupeguru/issues/15>`__)
* Remember size/position of all windows between launches. (`#102 <https://github.com/hsoft/dupeguru/issues/102>`__)
* Fixed a bug sometimes preventing dupeGuru from reloading previous results.
* Fixed a bug sometimes causing the progress dialog to be stuck there. [Mac OS X] (`#103 <https://github.com/hsoft/dupeguru/issues/103>`__)
* Removed the Creation Date column, which wasn't displaying the correct value anyway. (`#101 <https://github.com/hsoft/dupeguru/issues/101>`__)
2.10.1 (2010-07-15)
----------------------
* Fixed a couple of crashes. (`#95 <https://github.com/hsoft/dupeguru/issues/95>`__, `#97 <https://github.com/hsoft/dupeguru/issues/97>`__, `#100 <https://github.com/hsoft/dupeguru/issues/100>`__)
2.10.0 (2010-04-13)
----------------------
* Improved error messages when files can't be sent to trash, moved or copied.
* Added a custom command invocation action. (`#12 <https://github.com/hsoft/dupeguru/issues/12>`__)
* Filters are now applied on whole paths. (`#4 <https://github.com/hsoft/dupeguru/issues/4>`__)
2.9.2 (2010-02-10)
----------------------
* dupeGuru is now 64-bit on Mac OS X!
* Fixed a crash upon quitting when support folder is not present. (`#83 <https://github.com/hsoft/dupeguru/issues/83>`__)
* Fixed a crash during sorting. (`#85 <https://github.com/hsoft/dupeguru/issues/85>`__)
* Fixed selection glitches, especially while renaming. (`#93 <https://github.com/hsoft/dupeguru/issues/93>`__)
2.9.1 (2010-01-13)
----------------------
* Improved memory usage for Contents scans. (`#75 <https://github.com/hsoft/dupeguru/issues/75>`__)
* Improved scanning speed when ref directories are involved. (`#77 <https://github.com/hsoft/dupeguru/issues/77>`__)
* Show a message dialog at the end of the scan if no duplicates are found. (`#81 <https://github.com/hsoft/dupeguru/issues/81>`__)
* Fixed a bug sometimes causing the small files threshold pref to be ignored. [Mac OS X] (`#75 <https://github.com/hsoft/dupeguru/issues/75>`__)
2.9.0 (2009-11-03)
----------------------
* Significantly improved speed and memory usage of big contents-based scans.
* Added drag & drop support in the Directories panel. (`#9 <https://github.com/hsoft/dupeguru/issues/9>`__)
* Fixed a bug causing dupeGuru to be confused if a scanned file was moved during the scan. (`#72 <https://github.com/hsoft/dupeguru/issues/72>`__)
* Dropped support for Mac OS X 10.4 (Tiger)
2.8.2 (2009-10-14)
----------------------
* Improved directory selection in the Directories panel (Windows). (`#56 <https://github.com/hsoft/dupeguru/issues/56>`__)
* Fixed a bug preventing dupeGuru from starting on certain machines (Windows). (`#68 <https://github.com/hsoft/dupeguru/issues/68>`__)
* Fixed a crash during very big scans. (`#70 <https://github.com/hsoft/dupeguru/issues/70>`__)
2.8.1 (2009-10-02)
----------------------
* Fixed crash with filtering when regular expressions were enabled. (`#60 <https://github.com/hsoft/dupeguru/issues/60>`__)
* Fixed crash when setting directories' state. (Mac OS X) (`#66 <https://github.com/hsoft/dupeguru/issues/66>`__)
* Fixed crash with Make Reference when certain filters are applied. (Mac OS X) (`#55 <https://github.com/hsoft/dupeguru/issues/55>`__)
* Improved error handling during delete/move/copy actions. (`#62 <https://github.com/hsoft/dupeguru/issues/62>`__ `#65 <https://github.com/hsoft/dupeguru/issues/65>`__)
2.8.0 (2009-09-07)
----------------------
* Added support for all kinds of bundle (not just applications) (Mac OS X) (`#11 <https://github.com/hsoft/dupeguru/issues/11>`__)
* Re-introduced the Export to XHTML feature to Windows. (`#14 <https://github.com/hsoft/dupeguru/issues/14>`__)
* Improved Export to XHTML speed. (`#14 <https://github.com/hsoft/dupeguru/issues/14>`__)
* Improved Contents scanning speed for large files. (`#33 <https://github.com/hsoft/dupeguru/issues/33>`__)
* Improved the grouping algorithm to reduce the number of discarded files in non-exact scans. (`#51 <https://github.com/hsoft/dupeguru/issues/51>`__)
* Stopped showing the same file on the 2 sides of the details panel when a ref file is selected. (`#50 <https://github.com/hsoft/dupeguru/issues/50>`__)
* Fixed crashes in the Directories panel. (`#46 <https://github.com/hsoft/dupeguru/issues/46>`__)
2.7.3 (2009-06-20)
----------------------
* Fixed bugs with selection being jumpy during "Make Reference" actions and Power Marker
switches. (`#3 <https://github.com/hsoft/dupeguru/issues/3>`__)
* Fixed crash happening when a file with non-roman characters couldn't be analyzed. (`#30 <https://github.com/hsoft/dupeguru/issues/30>`__)
* Fixed crash sometimes happening during the file collection phase in scanning. (`#38 <https://github.com/hsoft/dupeguru/issues/38>`__)
* Restored double-click and right-click behavior lost in the PyQt move (Windows). (`#34 <https://github.com/hsoft/dupeguru/issues/34>`__ `#35 <https://github.com/hsoft/dupeguru/issues/35>`__)
2.7.2 (2009-06-10)
----------------------
* Fixed an occasional crash on Copy/Move operations. (`#16 <https://github.com/hsoft/dupeguru/issues/16>`__)
* Added automatic exclusion for sensible folders (like system folders). (`#20 <https://github.com/hsoft/dupeguru/issues/20>`__)
* Fixed an occasional crash when application files were part of the results (Mac OS X). (`#25 <https://github.com/hsoft/dupeguru/issues/25>`__)
2.7.1 (2009-05-29)
----------------------
* 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.
2.7.0 (2009-05-25)
----------------------
* Converted the Windows GUI to Qt.
* Improved the reliability of the scanning process.
2.6.1 (2009-03-27)
----------------------
* **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.
2.6.0 (2008-09-10)
----------------------
* **Added** a small file threshold preference.
* **Added** a notice in the status bar when matches were discarded during the scan.
* **Improved** duplicate prioritization (smartly chooses which file you will keep).
* **Improved** scan progress feedback.
* **Improved** responsiveness of the user interface for certain actions.
2.5.4 (2008-08-10)
----------------------
* **Improved** the speed of results loading and saving.
* **Fixed** a crash sometimes occurring during duplicate deletion.
2.5.3 (2008-07-08)
----------------------
* **Improved** unicode handling for filenames. dupeGuru will now find a lot more duplicates if your files have non-ascii characters in it.
* **Fixed** "Clear Ignore List" crash in Windows.
2.5.2 (2008-01-10)
----------------------
* **Improved** the handling of low memory situations.
* **Improved** the directory panel. The "Remove" button changes to "Put Back" when an excluded directory is selected.
* **Improved** scan, delete and move speed in situations where there were a lot of duplicates.
* **Fixed** occasional crashes when moving bundles (such as .app files).
* **Fixed** occasional crashes when moving a lot of files at once.
2.5.1 (2007-11-22)
----------------------
* **Added** the "Remove empty folders" option.
* **Fixed** results load/save issues.
* **Fixed** occasional status bar inaccuracies when the results are filtered.
2.5.0 (2007-09-15)
----------------------
* **Added** post scan filtering.
* **Fixed** issues with the rename feature under Windows
* **Fixed** some user interface annoyances under Windows
2.4.8 (2007-04-14)
----------------------
* **Improved** UI responsiveness (using threads) under Mac OS X.
* **Improved** result load/save speed and memory usage.
2.4.7 (2007-03-10)
----------------------
* **Fixed** a "bad file descriptor" error occasionally popping up.
* **Fixed** a bug with non-latin directory names.
2.4.6 (2007-02-10)
----------------------
* **Added** Re-orderable columns. In fact, I re-added the feature which was lost in the C# conversion in 2.4.0 (Windows).
* **Changed** 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.
* **Fixed** a bug with all the Delete/Move/Copy actions with certain kinds of files.
2.4.5 (2007-01-11)
----------------------
* **Fixed** a bug with the Move action.
2.4.4 (2007-01-07)
----------------------
* **Fixed** a "ghosting" bug. Dupes deleted by dupeGuru would sometimes come back in subsequent scans (Windows).
* **Fixed** bugs sometimes making dupeGuru crash when marking a dupe (Windows).
* **Fixed** some minor visual glitches (Windows).
2.4.3 (2006-12-08)
----------------------
* **Fixed** a mishandling of ".app" files (OS X).
* **Fixed** a bug preventing files from "reference" directories to be displayed in blue in the results (Windows).
* **Fixed** a bug preventing some files to be sent to the recycle bin (Windows).
* **Fixed** a bug in the packaging preventing certain Windows configurations to start dupeGuru at all.
2.4.2 (2006-11-18)
----------------------
* **Fixed** a bug with directory states.
2.4.1 (2006-11-15)
----------------------
* **Fixed** a bug causing the ignore list not to be saved.
* **Fixed** a bug sometimes making delete and move operations stall.
2.4.0 (2006-11-10)
----------------------
* **Changed** the Windows interface. It is now .NET based.
* **Added** an auto-update feature to the windows version.
* **Changed** the way power marking works. It is now a mode instead of a separate window.
* **Changed** 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.
* **Removed** 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.
2.3.4 (2006-11-07)
----------------------
* **Improved** speed and memory usage of the scanning engine, again. Does it mean there was a lot of improvements to be made? Nah...
2.3.3 (2006-11-02)
----------------------
* **Improved** speed and memory usage of the scanning engine, especially when the scan results in a lot of duplicates.
* Now I wonder if Sparkle is going to work well...
2.3.2 (2006-10-16)
----------------------
* **Added** an auto-update feature in the Mac OS X version (with Sparkle).
* **Fixed** a bug preventing some duplicate reports to be created correctly under Windows.
2.3.1 (2006-10-02)
----------------------
* **Fixed** a bug preventing some duplicates to be found, especially when scanning lots of files.
2.3.0 (2006-09-22)
----------------------
* **Added** XHTML export feature.
2.2.10 (2006-08-31)
----------------------
* **Added** sticky columns.
* **Fixed** an issue with file caching between scans.
* **Fixed** an issue preventing some duplicates from being deleted/moved/copied.
2.2.9 (2006-08-27)
----------------------
* **Fixed** an issue with ignore list and unicode.
* **Fixed** an issue with file attribute fetching sometimes causing dupeGuru to crash.
* **Fixed** an issue in the directories panel under Windows.
2.2.8 (2006-08-17)
----------------------
* **Fixed** an issue in the duplicate seeking engine preventing some duplicates to be found.
2.2.7 (2006-08-12)
----------------------
* **Improved** unicode support.
* **Improved** the "Reveal in Finder" ("Open Containing Folder" in Windows) feature so it selects the file in the folder it opens.
2.2.6 (2006-08-07)
----------------------
* **Improved** the ignore list system.
* dupeGuru is now a Universal application on Mac OS X.
2.2.5 (2006-07-26)
----------------------
* **Improved** application (.app) dupe detection on Mac OS X.
* **Fixed** an issue that occasionally made dupeGuru crash on startup.
2.2.4 (2006-06-27)
----------------------
* **Fixed** an issue with Move and Copy features.
2.2.3 (2006-06-15)
----------------------
* **Improved** duplicate scanning speed.
* **Added** a warning that a file couldn't be renamed if a file with the same name already exists.
2.2.2 (2006-06-07)
----------------------
* **Added** "Rename Selected" feature.
* **Fixed** some minor issues with "Reload Last Results" feature.
* **Fixed** ignore list issues.
2.2.1 (2006-05-22)
----------------------
* **Fixed** occasional progress bar woes under Windows.
* **Fixed** a bug in the registration system under Windows.
* Nothing has been changed in the Mac OS X version, but I want to keep version in sync.
2.2.0 (2006-05-10)
----------------------
* **Added** destination path re-creation options.
* **Added** an ignore list.
* **Changed** the main icon.
* **Improved** dramatically the delta values feature.
2.1.2 (2006-04-18)
----------------------
* **Added** the "Match similar words" option.
* **Fixed** Power marking issues under Mac.
2.1.1 (2006-04-14)
----------------------
* **Added** the "Display delta values" option.
* **Improved** Power marking sorting speed under Mac.
* **Fixed** Power marking sorting issues.
2.1.0 (2006-04-03)
----------------------
* **Added** the Power Marker feature.
* **Fixed** a column sorting bug. The results would sometimes lose their sort order.
* **Fixed** a bug with the Make Reference feature. The results sometimes wasn't correctly refreshed after the reference switch.
2.0.1 (2006-03-23)
----------------------
* **Fixed** an issue occasionally occurring when trying to reload results from removable media that is no longer present.
2.0.0 (2006-03-17)
----------------------
* Complete rewrite.
* Now runs on Mac OS X.
1.0.0 (2004-09-24)
----------------------
* Initial release.

View File

@@ -0,0 +1,192 @@
Foire aux questions
===================
.. contents::
Qu'est-ce que dupeGuru?
------------------------
.. only:: edition_se
dupeGuru est un outil pour trouver des doublons parmi vos fichiers. Il peut comparer soit les
noms de fichiers, soit le contenu. Le comparateur de nom de fichier peut trouver des doublons
même si les noms ne sont pas exactement pareils.
.. only:: edition_me
dupeGuru Music Editon est un outil pour trouver des doublons parmi vos chansons. Il peut
comparer les noms de fichiers, les tags ou bien le contenu. Les comparaisons de nom de fichier
ou de tags peuvent trouver des doublons même si les noms de sont pas exactement pareils.
.. only:: edition_pe
dupeGuru Picture Edition est un outil pour trouver des doublons parmi vos images. Non seulement
il permet de trouver les doublons exactes, mais il est aussi capable de trouver les images ayant
de légères différences, étant de format différent ou bien ayant une qualité différente.
En quoi est-il mieux que les autres applications?
-------------------------------------------------
dupeGuru est hautement configurable. Vous pouvez changer les options de comparaison afin de trouver
exactement le type de doublons recherché. Plus de détails sur la
:doc:`page de préférences <preferences>`.
dupeGuru est-il sécuritaire?
----------------------------
Oui. dupeGuru a été conçu afin d'être certain que vous conserviez toujours au moins une copie des
doublons que vous trouvez. Il est aussi possible de configurer dupeGuru afin de déterminer certains
dossier à partir desquels aucun fichier ne sera effacé.
Quelles sont les limitation démo de dupeGuru?
---------------------------------------------
En mode de démonstration, les actions sont limitées à 10 doublons par session. En mode `Fairware`_,
il n'y a pas de limitation.
Je ne peux pas marquer le doublons que je veux effacer, pourquoi?
-----------------------------------------------------------------
Tour groupe de doublons contient au moins un fichier dit "référence" et ce fichier ne peut pas être
effacé. Par contre, ce que vous pouvez faire c'est de le remplacer par un autre fichier du groupe.
Pour ce faire, sélectionnez un fichier du groupe et cliquez sur l'action **Transformer sélectionnés
en références**.
Notez que si le fichier référence du groupe vient d'un dossier qui a été défini comme dossier
référence, ce fichier ne peut pas être déplacé de sa position de référence du groupe.
J'ai un dossier duquel je ne veut jamais effacer de fichier.
------------------------------------------------------------
Si vous faites un scan avec un dossier qui ne doit servir que de référence pour effacer des doublons
dans un autre dossier, changez le type de dossier à "Référence" dans la fenêtre de
:doc:`sélection de dossiers <folders>`.
Que veut dire '(X hors-groupe)' dans la barre de statut?
--------------------------------------------------------
Lors de certaines comparaisons, il est impossible de correctement grouper les paires de doublons et
certaines paires doivent être retirées des résultats pour être certain de ne pas effacer de faux
doublons. Example: Nous avons 3 fichiers, A, B et C. Nous les comparons en utilisant un petit seuil
de filtre. La comparaison détermine que A est un double de B, A est un double C, mais que B n'est
**pas** un double de C. dupeGuru a ici un problème. Il ne peut pas créer un groupe avec A, B et C.
Il décide donc de jeter C hors du groupe. C'est de là que vient la notice '(X hors-groupe)'.
Cette notice veut dire que si jamais vous effacez tout les doubles contenus dans vos résultats et
que vous faites un nouveau scan, vous pourriez avoir de nouveaux résultats.
Je veux marquer tous les fichiers provenant d'un certain dossier. Quoi faire?
-----------------------------------------------------------------------------
Activez l'option :doc:`Ne pas montrer les références <results>` et cliquez sur la colonne Dossier
afin de trier par dossier. Il sera alors facile de sélectionner tous les fichiers de ce dossier
(avec Shift+selection) puis ensuite d'appuyer sur Espace pour marquer les fichiers sélectionnés.
.. only:: edition_se or edition_pe
Je veux enlever tous les doublons qui ont une différence de plus de 300KB avec leur référence.
----------------------------------------------------------------------------------------------
* Activez l'option :doc:`Ne pas montrer les références <results>`.
* Activez l'option **Montrer les valeurs en tant que delta**.
* Cliquez sur la colonne Taille pour changer le tri.
* Sélectionnez tous les fichiers en dessous de -300.
* Cliquez sur l'action **Retirer sélectionnés des résultats**.
* Sélectionnez tous les fichiers au dessus de 300.
* Cliquez sur l'action **Retirer sélectionnés des résultats**.
Je veux que le fichier avec la plus grande date de dernière modification soit la référence.
-------------------------------------------------------------------------------------------
* Activez l'option :doc:`Ne pas montrer les références <results>`.
* Activez l'option **Montrer les valeurs en tant que delta**.
* Cliquez sur la colonne Modification (deux fois, afin d'avoir un ordre descendant) pour changer le tri.
* Sélectionnez tous les fichiers au dessus de 0.
* Cliquez sur l'action **Transformer sélectionnés en références**.
Je veux marquer tous les fichiers contenant le mot "copie".
-----------------------------------------------------------
* Entrez le mot "copie" dans le champ "Filtre" dans la fenêtre de résultats puis appuyez sur
Entrée.
* Cliquez sur **Tout Marquer** dans le menu Marquer.
.. only:: edition_me
Je veux enlever les doublons qui ont une différence de plus de 3 secondes avec leur référence.
----------------------------------------------------------------------------------------------
* Activez l'option :doc:`Ne pas montrer les références <results>`.
* Activez l'option **Montrer les valeurs en tant que delta**.
* Cliquez sur la colonne Temps pour changer le tri.
* Sélectionnez tous les fichiers en dessous de -00:03.
* Cliquez sur l'action **Retirer sélectionnés des résultats**.
* Sélectionnez tous les fichiers au dessus de 00:03.
* Cliquez sur l'action **Retirer sélectionnés des résultats**.
Je veux que mes chansons aux bitrate le plus élevé soient mes références.
-------------------------------------------------------------------------
* Activez l'option :doc:`Ne pas montrer les références <results>`.
* Activez l'option **Montrer les valeurs en tant que delta**.
* Cliquez sur la colonne Bitrate (deux fois, afin d'avoir un ordre descendant) pour changer le tri.
* Sélectionnez tous les fichiers au dessus de 0.
* Cliquez sur l'action **Transformer sélectionnés en références**.
Je veux enlever les chansons contenant "[live]" ou "[remix]" de mes résultat.
-----------------------------------------------------------------------------
Si votre seuil de filtre est assez bas, il se pourrait que vos chansons live ou vos remix soient
détectés comme des doublons. Vous n'y pouvez rien, mais ce que vous pouvez faire est d'enlever
ces fichiers de vous résultats après le scan. Si, par exemple, vous voulez enlever tous les
doublons contenant quelque mot que ce soit entre des caractères "[]", faites:
* Entrez "[*]" dans le champ "Filtre" dans la fenêtre de résultats puis appuyez sur Entrée.
* Cliquez sur **Tout Marquer** dans le menu Marquer.
* Cliquez sur l'action **Retirer marqués des résultats**.
J'essaie d'envoyer mes doublons à la corbeille, mais dupeGuru me dit que je ne peux pas. Pourquoi?
--------------------------------------------------------------------------------------------------
La plupart du temps, la raison pour laquelle dupeGuru ne peut pas envoyer des fichiers à la
corbeille est un problème de permissions. Vous devez avoir une permission d'écrire dans les fichiers
que vous voulez effacer. Si vous n'êtes pas familiers avec la ligne de commande, vous pouvez
utiliser des outils comme `BatChmod`_ pour modifier vos permissions.
Si malgré cela vous ne pouvez toujours pas envoyer vos fichiers à la corbeille, essayez l'option
"Supprimer les fichiers directement" qui vous est offerte lorsque vous procédez à l'effacement des
doublons. Cette option fera en sorte de supprimer directement les fichiers sans les faire passer par
la corbeille. Dans certains cas, ça règle le problème.
.. only:: edition_pe
Si vous essayez d'effacer des photos dans iPhoto, alors la raison du problème est différente.
L'opération rate parce que dupeGuru ne peut pas communiquer avec iPhoto. Il faut garder à
l'esprit qu'il ne faut pas toucher à iPhoto pendant l'opération parce que ça peut déranger la
communication entre dupeGuru et iPhoto. Aussi, quelque fois, dupeGuru ne peut pas trouver
l'application iPhoto. Il faut mieux alors démarrer iPhoto avant l'opération.
Dans le pire des cas, `contactez le support HS`_, on trouvera bien.
Où sont les fichiers de configuration de dupeGuru?
--------------------------------------------------
Si, pour une raison ou une autre, vous voulez effacer ou modifier les fichiers générés par dupeGuru,
voici où ils sont:
* Linux: ``~/.local/share/data/Hardcoded Software/dupeGuru``
* Mac OS X: ``~/Library/Application Support/dupeGuru``
* Windows: ``\Users\<username>\AppData\Local\Hardcoded Software\dupeGuru``
Les fichiers de préférences sont ailleurs:
* Linux: ``~/.config/Hardcoded Software/dupeGuru.conf``
* Mac OS X: Dans le système ``defaults`` sous ``com.hardcoded-software.dupeguru``
* Windows: Dans le Registre, sous ``HKEY_CURRENT_USER\Software\Hardcoded Software\dupeGuru``
Pour la Music Edition et Picture Edition, remplacer "dupeGuru" par "dupeGuru Music Edition" et
"dupeGuru Picture Edition", respectivement.
.. _Fairware: http://open.hardcoded.net/about/
.. _BatChmod: http://www.lagentesoft.com/batchmod/index.html
.. _contactez le support HS: http://www.hardcoded.net/support

View File

@@ -0,0 +1,57 @@
Sélection de dossiers
=====================
La première fenêtre qui apparaît lorsque dupeGuru démarre est la fenêtre de sélection de dossiers à scanner. Elle détermine la liste des dossiers qui seront scannés lorsque vous cliquerez sur **Scan**.
Pour ajouter un dossier, cliquez sur le bouton **+**. Si vous avez ajouté des dossiers dans le passé, un menu vous permettra de rapidement choisir un de ceux ci. Autrement, il vous sera demandé d'indiquer le dossier à ajouter.
Vous pouvez aussi utiliser le drag & drop pour ajouter des dossiers à la liste.
Pour retirer un dossier, sélectionnez le et cliquez sur **-**. Si le dossier sélectionné est un sous-dossier, son type changera pour **exclus** (voyez plus bas) au lieu d'être retiré.
Types de dossiers
-----------------
Tout dossier ajouté à la liste est d'un type parmis ces trois:
* **Normal:** Les doublons trouvés dans ce dossier peuvent être effacés.
* **Reference:** Les doublons trouvés dans ce dossier ne peuvent **pas** être effacés. Les fichiers provenant de ce dossier ne peuvent qu'être en position "Référence" dans le groupes de doublons.
* **Excluded:** Les fichiers provenant de ce dossier ne sont pas scannés.
Le type par défaut pour un dossier est, bien entendu, **Normal**. Vous pouvez utiliser le type **Référence** pour les dossiers desquels vous ne voulez pas effacer de fichiers.
Le type d'un dossier s'applique à ses sous-dossiers, excepté si un sous-dossier a un autre type explicitement défini.
.. only:: edition_pe
Bibliothèques iPhoto et Aperture
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
dupeGuru PE supporte iPhoto et Aperture, ce qui veut dire qu'il sait comment lire le contenu de
ces bibliothèques et comment communiquer avec ces applications pour correctement supprimer des
photos de celles-ci. Pour utiliser cette fonctionnalité, vous devez ajouter iPhoto et/ou
Aperture avec les boutons spéciaux "Ajouter librairie iPhoto" et "Ajouter librairie Aperture",
qui apparaissent quand on clique sur le petit "+". Les dossiers ajoutés seront alors
correctement interprétés par dupeGuru.
Quand une photo est supprimée d'iPhoto, elle est envoyée dans la corbeille d'iPhoto.
Quand une photo est supprimée d'Aperture, il n'est malheureusement pas possible de l'envoyer
dans sa corbeille. Ce que dupeGuru fait à la place, c'est de créer un projet "dupeGuru Trash"
et d'envoyer les photos dans ce projet. Vous pouvez alors supprimer toutes les photos de ce
projet manuellement.
.. only:: edition_me
Bibliothèques iTunes
^^^^^^^^^^^^^^^^^^^^
dupeGuru ME supporte iTunes, ce qui veut dire qu'il sait comment lire le contenu de sa
bibliothèque et comment communiquer avec iTunes pour correctement supprimer des chansons de sa
bibliothèque. Pour utiliser cette fonctionnalité, vous devez ajouter iTunes avec le bouton
spécial "Ajouter librairie iTunes", qui apparait quand on clique sur le petit "+". Le dossier
ajouté sera alors correctement interprété par dupeGuru.
Quand une chanson est supprimée d'iTunes, elle est envoyée à la corebeille du système, comme un
fichier normal. La différence ici, c'est qu'après la suppression, iTunes est correctement mis au
fait de cette suppression et retire sa référence à cette chanson de sa bibliothèque.

View File

@@ -0,0 +1,47 @@
Aide dupeGuru
===============
.. only:: edition_se
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru/help/en/>`__, en `allemand <http://www.hardcoded.net/dupeguru/help/de/>`__ et en `arménien <http://www.hardcoded.net/dupeguru/help/hy/>`__.
.. only:: edition_me
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru_me/help/en/>`__, en `allemand <http://www.hardcoded.net/dupeguru_me/help/de/>`__ et en `arménien <http://www.hardcoded.net/dupeguru_me/help/hy/>`__.
.. only:: edition_pe
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru_pe/help/en/>`__, en `allemand <http://www.hardcoded.net/dupeguru_pe/help/de/>`__ et en `arménien <http://www.hardcoded.net/dupeguru_pe/help/hy/>`__.
.. only:: edition_se or edition_me
dupeGuru est un outil pour trouver des doublons parmi vos fichiers. Il peut comparer soit les noms de fichiers, soit le contenu. Le comparateur de nom de fichier peut trouver des doublons même si les noms ne sont pas exactement pareils.
.. only:: edition_pe
dupeGuru Picture Edition est un outil pour trouver des doublons parmi vos images. Non seulement il permet de trouver les doublons exactes, mais il est aussi capable de trouver les images ayant de légères différences, étant de format différent ou bien ayant une qualité différente.
Bien que dupeGuru puisse être utilisé sans lire l'aide, une telle lecture vous permettra de bien comprendre comment l'application fonctionne. Pour un guide rapide pour une première utilisation, référez vous à la section :doc:`Démarrage Rapide <quick_start>`.
C'est toujours une bonne idée de garder dupeGuru à jour. Vous pouvez télécharger la dernière version sur sa `homepage`_.
Contents:
.. toctree::
:maxdepth: 2
quick_start
folders
preferences
results
reprioritize
faq
changelog
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`
.. _homepage: https://www.hardcoded.net/dupeguru

View File

@@ -0,0 +1,63 @@
Préférences
===========
.. only:: edition_se
**Type de scan:** Cette option détermine quels aspects du fichier doit être comparé. Un scan par **Nom de fichier** compare les noms de fichiers mot-à-mot et, dépendant des autres préférences ci-dessous, déterminera si les noms se ressemblent assez pour être considérés comme doublons. Un scan par **Contenu** trouvera les doublons qui ont exactement le même contenu.
Le scan **Dossiers** est spécial. Si vous le sélectionnez, dupeGuru cherchera des doublons de *dossiers* plutôt que des doublons de fichiers. Pour déterminer si deux dossiers sont des doublons, dupeGuru regarde le contenu de tous les fichiers dans les dossiers, et si **tous** sont les mêmes, les dossiers sont considérés comme des doublons.
**Seuil du filtre:** Pour les scan de type **Nom de fichier**, cette option détermine le degré de similtude nécessaire afin de considérer deux noms comme doublons. Avec un seuil de 80, 80% des mots doivent être égaux. Pour déterminer ce pourcentage, dupeGuru compte le nombre de mots total des deux noms, puis compte le nombre de mots égaux, puis fait la division des deux. Un résultat égalisant ou dépassant le seuil sera considéré comme un doublon. Exemple: "a b c d" et "c d e" ont un pourcentage de 57 (4 mots égaux, 7 au total).
.. only:: edition_me
**Type de scan:** Cette option détermine quels aspects du fichier doit être comparé. La nature de la comparaison varie grandement, dépendant de l'option choisie ici.
* **Nom de fichier:** Le nom de fichier des chansons est comparé, mot-à-mot.
* **Nom de fichier (Champs):** Les noms de fichiers sont séparés en plusieurs champs séparés par le caractère "-". Le pourcentage de comparaison final est le plus petit parmi les champs. Ce type de scan est utile pour comparer les noms de fichier au format "Artiste - Titre" pour lequel le nom de l'artist contient beaucoup de mots (et donc augmente faussement le pourcentage de comparaison).
* **Nom de fichier (Champs sans ordre):** Comme **Nom de fichier (Champs)**, excepté que l'ordre des champs n'a pas d'importance. Par exemple, "Artiste - Titre" et "Titre - Artiste" auraient un pourcentage de 100% au lieu de 0%.
* **Tags:** Méthode de loin la plus utile, elle lit les métadonnées des chansons et le compare mot-à-mot. Comme pour **Nom de fichier (Champs)**, le pourcentage final est le plus bas des champs comparés.
* **Contenu:** Compare le contenu des chansons. Seul un contenu exactement pareil sera considéré comme un doublon.
* **Contenu audio:** Comme **Contenu**, excepté que les métadonnée no sont pas comparées, seulement le contenu audio lui même. Encore une fois, le contenu doit être exactement le même.
**Seuil du filtre:** Pour les scans basés sur le nom de fichier ou les tags, cette option détermine le degré de similtude nécessaire afin de considérer deux noms comme doublons. Avec un seuil de 80, 80% des mots doivent être égaux. Pour déterminer ce pourcentage, dupeGuru compte le nombre de mots total des deux noms, puis compte le nombre de mots égaux, puis fait la division des deux. Un résultat égalisant ou dépassant le seuil sera considéré comme un doublon. Exemple: "a b c d" et "c d e" ont un pourcentage de 57 (4 mots égaux, 7 au total).
**Tags à scanner:** Pour les scans de type **Tags**, cette option détermine les tags qui seront comparés.
.. only:: edition_se or edition_me
**Proportionalité des mots:** Pour les scans basés sur les mots, cette option change la méthode de calcul afin que les mots plus long pèsent plus dans la balance. Avec cette option, les mots ont une valeur égale à leur longeur. Par exemple, "ab cde fghi" et "ab cde fghij" ont un pourcentage de 53% (19 caractères au total, 10 caractères de mots égaux (4 pour "ab" et 6 pour "cde")).
**Comparer les mots similaires:** Avec cette options, les mots similaires sont comptés comme égaux. Par exemple, "The White Stripes" et "The White Stripe" ont un pourcentage de 100% au lieu de 66%. **Attention:** Cette option a la potentialité de créer beaucoup de faux doublons. Soyez certains de manuellement vérifier vos résultats avant de les effacer.
.. only:: edition_pe
**Type de scan:** Détermine le type de scan qui sera fait sur vos images. Le type **Contenu** compare le contenu des images de façon "fuzzy", rendant possible de trouver non seulement les doublons exactes, mais aussi les similaires. Le type **EXIF Timestamp** compare les métadonnées EXIF des images (si existantes) et détermine si le "timestamp" (moment de prise de la photo) est pareille. C'est beaucoup plus rapide que le scan par Contenu. **Attention:** Les photos modifiées gardent souvent le même timestamp, donc faites attention aux faux doublons si vous utilisez cette méthode.
**Seuil du filtre:** *Scan par Contenu seulement.* Plus il est élevé, plus les images doivent être similaires pour être considérées comme des doublons. Le défaut de 95% permet quelques petites différence, comme par exemple une différence de qualité ou bien une légère modification des couleurs.
**Comparer les images de tailles différentes:** Le nom dit tout. Sans cette option, les images de tailles différentes ne sont pas comparées.
**Comparer les fichiers de différents types:** Sans cette option, seulement les fichiers du même type seront comparés.
**Ignorer doublons avec hardlink vers le même fichier:** Avec cette option, dupeGuru vérifiera si les doublons pointent vers le même `inode <http://en.wikipedia.org/wiki/Inode>`_. Si oui, ils ne seront pas considérés comme doublons. (Seulement pour OS X et Linux)
**Utiliser les expressions régulières pour les filtres:** Avec cette option, les filtres appliqués aux résultats seront lus comme des `expressions régulières <http://www.regular-expressions.info>`_.
**Effacer les dossiers vides après un déplacement:** Avec cette option, les dossiers se retrouvant vides après avoir effacé ou déplacé des fichiers seront effacés aussi.
**Déplacements de fichiers:** Détermine comment les opérations de copie et de déplacement s'organiseront pour déterminer la destination finale des fichiers:
* **Directement à la destination:** Les fichiers sont envoyés directement dans le dossier cible, sans essayer de recréer leur ancienne hierarchie.
* **Re-créer chemins relatifs:** Le chemin du fichier relatif au dossier sélectionné dans la :doc:`sélection de dossier <folders>` sera re-créé. Par exemple, si vous ajoutez ``/Users/foobar/MonDossier`` lors de la sélection de dossier et que vous déplacez ``/Users/foobar/MonDossier/SousDossier/MonFichier.ext`` vers la destination ``/Users/foobar/MaDestination``, la destination finale du fichier sera ``/Users/foobar/MaDestination/SousDossier``.
* **Re-créer chemins absolus:** Le chemin du fichier est re-créé dans son entièreté. Par exemple, si vous déplacez ``/Users/foobar/MonDossier/SousDossier/MonFichier.ext`` vers la destination ``/Users/foobar/MaDestination``, la destination finale du fichier sera ``/Users/foobar/MaDestination/Users/foobar/MonDossier/SousDossier``.
Dans tous les cas, dupeGuru résout les conflits de noms de fichier en ajoutant un numéro en face du nom.
**Commande personelle:** Cette option vous permet de définir une ligne de commande à appeler avec le fichier sélectionné (ainsi que sa référence) comme argument. Cette commande sera invoquée quand vous cliquerez sur **Invoquer commande personnalisée**. Cette command est utile si, par exemple, vous avez une application de comparaison visuelle de fichiers que vous aimez bien.
Le format de la ligne de commande est la même que celle que vous écrireriez manuellement, excepté pour les arguments, **%d** et **%r**. L'endroit où vous placez ces deux arguments sera remplacé par le chemin du fichier sélectionné (%d) et le chemin de son fichier référence dans le groupe (%r).
Si le chemin de votre executable contient un espace, vous devez le placer entre guillemets "". Vous devriez aussi placer vos arguments %d et %r entre guillemets parce qu'il est très possible d'avoir des chemins de fichier contenant des espaces. Voici un exemple de commande personnelle::
"C:\Program Files\SuperDiffProg\SuperDiffProg.exe" "%d" "%r"

View File

@@ -0,0 +1,14 @@
Démarrage rapide
=================
Voici les étapes à suivre pour faire un simple scan par défaut:
* Démarrer dupeGuru.
* Ajouter les dossiers à scanner soit avec le drag & drop, soit avec le boutton "+".
* Cliquez sur **Scan**.
* Attendez que le scan soit completé.
* Vérifiez que les doublons (les fichiers légèrement indentés) soient vraiment le doublon de la référence du groupe (le fichier au haut du groupe qui ne peut pas être marqué).
* Si vous voyer un faux doublon, sélectionnez le puis cliquez sur l'action **Retirer sélectionnés des résultats**.
* Quand vous êtes certains de ne pas avoir de faux doublons dans vos résultats, cliquez sur **Tout marquer** dans le menu Marquer et cliquez sur l'action **Envoyer marqués à la corbeille**.
Ceci est seulement un scan de base. Il est possible de configurer dupeGuru afin d'obtenir exactement le type de résultat recherché. Pour en savoir plus, il lisez le reste du fichier d'aide.

View File

@@ -0,0 +1,25 @@
Re-Prioritizing duplicates
==========================
dupeGuru tries to automatically determine which duplicate should go in each group's reference
position, but sometimes it gets it wrong. In many cases, clever dupe sorting with "Delta Values"
and "Dupes Only" options in addition to the "Make Selected into Reference" action does the trick,
but sometimes, a more powerful option is needed. This is where the Re-Prioritization dialog comes
into play. You can summon it through the "Re-Prioritize Results" item in the "Actions" menu.
This dialog allows you to select criteria according to which a reference dupe will be selected in
each dupe group. The list of available criteria is on the left and the list of criteria you've
selected is on the right.
A criteria is a category followed by an argument. For example, "Size (Highest)" means that the dupe
with the biggest size will win. "Folder (/foo/bar)" means that dupes in this folder will win. To add
a criterion to the rightmost list, first select a category in the combobox, then select a
subargument in the list below, and then click on the right pointing arrow button.
The order of the list on the right is important (you can re-order items through drag & drop). When
picking a dupe for reference position, the first criterion is used. If there's a tie, the second
criterion is used and so on and so on. For example, if your arguments are "Size (Highest)" and then
"Filename (Doesn't end with a number)", the reference file that will be picked in a group will be
the biggest file, and if two or more files have the same size, the one that has a filename that
doesn't end with a number will be used. When all criteria result in ties, the order in which dupes
previously were in the group will be used.

View File

@@ -0,0 +1,145 @@
Résultats
==========
Quand dupeGuru a terminé de scanner, la fenêtre de résultat apparaît avec la liste de groupes de doublons trouvés.
À propos des groupes de doublons
---------------------------------
Un groupe de doublons est un groupe de fichier dans lequel tous les fichiers sont le doublon de tous les autres fichiers. Chaque groupe a son **fichier de référence** (le premier fichier du groupe). Ce fichier est celui qui n'est jamais effacé, et il est donc impossible de le marquer.
Les critères utilisés pour décider de quel fichier d'un groupe devient la référence sont multiples. Il y a d'abord les dossiers référence. Tout fichier provenant d'un dossier de type "Référence" ne peut être autre chose qu'une référence dans un groupe. Si il n'y a pas de fichiers provenant d'un dossier référence, alors le plus gros fichier est placé comme référence.
Bien entendu, dans certains cas, il est possible que dupeGuru ne choisisse pas le bon fichier. Dans ce cas, sélectionnez un doublon à placer en position de référence, puis cliquez sur l'action **Transformer sélectionnés en références**.
Vérifier les résultats
------------------------
Bien que vous pouvez tout simplement faire **Tout marquer** puis tous envoyer à la corbeille, il est recommandé de vérifier les résultats avant, surtout si votre seuil de filtre est bas.
Pour vous aider dans cette tâche, vous pouvez utiliser le panneau de détails. Ce panneau montre les détails du fichier sélectionné côte-à-côte avec sa référence. Vous pouvez aussi double-cliquer sur un fichier pour l'ouvrir avec son application associée.
Si vous avez plus de faux doublons que de vrais (si votre seuil de filtre est très bas), la meilleure façon de procéder, au lieu de retirer les faux doublons des résultat, serait de marquer seulement les vrais doublons.
Marquer et sélectionner
-----------------------
Dans le vocabulaire de dupeGuru, il y a une nette différence entre sélectionner et marquer. Les fichiers **sélectionnés** sont ceux qui sont surlignés dans la liste. On peut sélectionner plusieurs fichiers à la fois en tenant Shift, Control ou Command lorsqu'on clique sur un fichier.
Les fichiers **marqués** sont ceux avec la petite boite cochée. Il est possible de marquer les fichiers sélectionnés en appuyant sur **espace**.
Ne pas montrer les références
-------------------------------
Quand ce mode est activé, les groupes de doublons sont (momentanément) brisés et les doublons sont montrés individuellement, sans leurs références. On peut agir sur les fichiers sous ce mode de la même façon que sous le mode normal.
L'attrait principal de ce mode est le tri. En mode normal, les groupes ne peuvent pas être brisés, et donc les résultats sont triés en fonction de leur référence. Sous ce mode spécial, le tri est fait au niveau des fichiers individuels. Il est alors possible, par exemple, de facilement marquer tous les fichiers de type "exe":
* Activer le mode **Ne pas montrer les références**.
* Ajouter la colonne "Type" par le menu "Colonnes".
* Cliquez sur la colonne Type pour changer le tri.
* Trouvez le premier fichier avec un type "exe".
* Sélectionnez-le.
* Trouvez le dernier fichier avec un type "exe".
* Tenez Shift et sélectionnez-le.
* Appuyez sur espace pour marquer les fichiers sélectionnés.
Montrer les valeurs en tant que delta
-------------------------------------
Sous ce mode, certaines colonnes montreront leur valeurs relativement à la valeur de la référence du
groupe (de couleur orange, pour bien les différencier des autres valeurs). Par exemple, si un
fichier a une taille de 1.2 MB alors que la référence a une taille de 1.4 MB, la valeur affichée
sous ce mode sera -0.2 MB.
Les valeurs non numériques sont aussi affectées par le mode delta. Par contre, plutôt que montrer la
différence avec la valeur de référence (ce qui est impossible), elles indiquent si elles sont
pareilles en adoptant la couleur orange dans le cas ou la valeur est différent. Il est ainsi
possible de facilement identifier, par exemple, tous le doublons qui ont un nom de fichier différent
de leur référence.
Les deux modes ensemble
-----------------------
Quand on active ces deux modes ensemble, il est alors possible de faire de la sélection de ficher
assez avancée parce que le tri de fichier se fait alors en fonction des valeurs delta. Il devient
alors possible de, par exemple, sélectionner tous les fichiers qui ont une différence de plus de 300
KB par rapport à leur référence, ou d'autres trucs comme ça.
Même chose pour les valeurs non numériques: quand les deux modes sont activés, les règles de tri
pour les valeurs non-numériques change. On commence par grouper les doublon selon si leur valeur est
orange ou non, pour ensuite procéder aux règles de tri normales. Avec ce système, il est alors
facile de, par exemple, marquer toues les doublons qui ont un nom de fichier différent de leur
référence: il suffit de trier par nom de fichier.
Filtrer les résultats
---------------------
Il est possible de filtrer les résultats pour agir sur un sous-ensemble de ceux-ci, par exemple tous
les fichiers qui contiennent le mot "copie".
Pour filtrer les résultats, entrer le filtrer dans le champ de la barre d'outils, puis appuyer sur
Entrée. Pour annuler le filtre, appuyez sur le X dans le champ.
En mode simple (le mode par défaut), ce que vous tapez est ce qui est filtré. Il n'y a qu'un
caractère spécial: **\***. Ainsi, si vous entrez "[*]", le filtre cherchera pour tout nom contenant
les "[" et "]" avec quelquechose au milieu.
Pour un filtrage avancé, activez **Utiliser les expressions régulières pour les filtres** dans les
:doc:`preferences`. Votre filtre sera alors appliqué comme une `expression régulière`_.
Les filtres sont dans tous les cas insensibles aux majuscules et minuscules.
Les expression régulière pour s'appliquer à un fichier n'ont pas besoin de correspondre au nom
entier. Une correspondance partielle suffit.
Vous remarquerez peut-être que ce ne sont pas tous les fichiers de vos résultats filtrés qui
s'appliquent au filtre. C'est parce que les groupes ne sont pas brisés par les filtres afin de
permettre une meilleure mise en context. Par contre, ces fichier seront en mode "Lecture seule" et
ne pourront être marqués.
Actions
-------
Voici la liste des actions qu'il est possible d'appliquer aux résultats.
* **Vider la liste de fichiers ignorés:** Ré-initialise la liste des paires de doublons que vous avez ignorés dans le passé.
* **Exporter vers HTML:** Exporte les résultats vers un fichier HTML et l'ouvre dans votre browser.
* **Envoyer marqués à la corbeille:** Le nom le dit.
* **Déplacer marqués vers...:** Déplace les fichiers marqués vers une destination de votre choix. La destination finale du fichier dépend de l'option "Déplacements de fichiers" dans les :doc:`preferences`.
* **Copier marqués vers...:** Même chose que le déplacement, sauf que c'est une copie à la place.
* **Retirer marqués des résultats:** Retire les fichiers marqués des résultats. Ils ne seront donc ni effacés, ni déplacés.
* **Retirer sélectionnés des résultats:** Retire les fichiers sélectionnés des résultats. Notez que si il y a des fichiers références parmi la sélection, ceux-ci sont ignorés par l'action.
* **Transformer sélectionnés en références:** Prend les fichiers sélectionnés et les place à la position de référence de leur groupe respectif. Si l'action est impossible (si la référence provient d'un dossier référence), rien n'est fait.
* **Ajouter sélectionnés à la liste de fichiers ignorés:** Retire les fichiers sélctionnés des résultats, puis les place dans une liste afin que les prochains scans ignorent les paires de doublons qui composaient le groupe dans lequel ces fichiers étaient membres.
* **Ouvrir sélectionné avec l'application par défaut:** Ouvre le fichier sélectionné avec son application associée.
* **Ouvrir le dossier contenant le fichier sélectionné:** Le nom dit tout.
* **Invoquer commande personnalisée:** Invoque la commande personnalisé que vous avez définie dans les :doc:`preferences`.
* **Renommer sélectionné:** Renomme le fichier sélectionné après vous avoir demandé d'entrer un nouveau nom.
**Déplacer des fichiers dans iPhoto/iTunes:** Attention, quand vous déplacez des fichiers des
bibliothèques iPhoto ou iTunes, elles ne sont pas vraiment déplacées, mais copiée. Il n'y a pas
d'action de déplacement possible dans ces bibliothèques.
Options de suppression
----------------------
Ces options, présentées lors de l'action de suppression de doublons, déterminent comment celle-ci
s'exécute. La plupart du temps, ces options n'ont pas a être activées.
* **Remplacer les fichiers effacés par des liens:** les fichiers supprimés seront replacés par des
liens (`symlink`_ ou `hardlink`_) vers leur fichiers de référence respectifs. Un symlink est un
lien symbolique (qui devient caduque si l'original est supprimé) et un hardlink est un lien direct
au contenu du fichier (même si l'original est supprimé, le lien reste valide).
Sur OS X et Linux, cette fonction est supportée pleinement, mais sur Windows, c'est un peu
compliqué. Windows XP ne le supporte pas, mais Vista oui. De plus, cette fonction ne peut être
utilisée que si dupeGuru roule avec les privilèges administratifs. Ouaip, Windows c'est la joie.
* **Supprimer les fichiers directement:** Plutôt que d'envoyer les doublons à la corbeille,
directement les supprimer. Utiliser cette option si vous avez de la difficulté à supprimer des
fichiers (ce qui arrive quelquefois quand on travaille avec des partages réseau).
.. _expression régulière: http://www.regular-expressions.info
.. _hardlink: http://en.wikipedia.org/wiki/Hard_link
.. _symlink: http://en.wikipedia.org/wiki/Symbolic_link

3667
help/fr/_static/_stemmer.js Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 B

665
help/fr/_static/basic.css Normal file
View File

@@ -0,0 +1,665 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
word-wrap: break-word;
overflow-wrap : break-word;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar #searchbox input[type="text"] {
float: left;
width: 80%;
padding: 0.25em;
box-sizing: border-box;
}
div.sphinxsidebar #searchbox input[type="submit"] {
float: left;
width: 20%;
border-left: none;
padding: 0.25em;
box-sizing: border-box;
}
img {
border: 0;
max-width: 100%;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
margin-left: auto;
margin-right: auto;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable ul {
margin-top: 0;
margin-bottom: 0;
list-style-type: none;
}
table.indextable > tbody > tr > td > ul {
padding-left: 0em;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- domain module index --------------------------------------------------- */
table.modindextable td {
padding: 2px;
border-collapse: collapse;
}
/* -- general body styles --------------------------------------------------- */
div.body {
min-width: 59em;
max-width: 70em;
}
div.body p, div.body dd, div.body li, div.body blockquote {
-moz-hyphens: auto;
-ms-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
a.headerlink {
visibility: hidden;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
background-color: #ffe;
width: 40%;
float: right;
}
p.sidebar-title {
font-weight: bold;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
border: 0;
border-collapse: collapse;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
table caption span.caption-number {
font-style: italic;
}
table caption span.caption-text {
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
/* -- figures --------------------------------------------------------------- */
div.figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption {
padding: 0.3em;
}
div.figure p.caption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
table.field-list td, table.field-list th {
border: 0 !important;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
list-style: decimal;
}
ol.loweralpha {
list-style: lower-alpha;
}
ol.upperalpha {
list-style: upper-alpha;
}
ol.lowerroman {
list-style: lower-roman;
}
ol.upperroman {
list-style: upper-roman;
}
dl {
margin-bottom: 15px;
}
dd p {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dt:target, span.highlighted {
background-color: #fbe54e;
}
rect.highlighted {
fill: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
span.pre {
-moz-hyphens: none;
-ms-hyphens: none;
-webkit-hyphens: none;
hyphens: none;
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
div.code-block-caption {
padding: 2px 5px;
font-size: small;
}
div.code-block-caption code {
background-color: transparent;
}
div.code-block-caption + div > div.highlight > pre {
margin-top: 0;
}
div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}
div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
padding: 1em 1em 0;
}
div.literal-block-wrapper div.highlight {
margin: 0;
}
code.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
code.descclassname {
background-color: transparent;
}
code.xref, a code {
background-color: transparent;
font-weight: bold;
}
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
span.eqno a.headerlink {
position: relative;
left: 0px;
z-index: 1;
}
div.math:hover a.headerlink {
visibility: visible;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

BIN
help/fr/_static/bg-page.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B

BIN
help/fr/_static/comment.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

311
help/fr/_static/doctools.js Normal file
View File

@@ -0,0 +1,311 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* select a different prefix for underscore
*/
$u = _.noConflict();
/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/
/**
* small helper function to urldecode strings
*/
jQuery.urldecode = function(x) {
return decodeURIComponent(x).replace(/\+/g, ' ');
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var bbox = span.getBBox();
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
var parentOfText = node.parentNode.parentNode;
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
/**
* Small JavaScript module for the documentation.
*/
var Documentation = {
init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
},
/**
* i18n support
*/
TRANSLATIONS : {},
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
LOCALE : 'unknown',
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext : function(string) {
var translated = Documentation.TRANSLATIONS[string];
if (typeof translated === 'undefined')
return string;
return (typeof translated === 'string') ? translated : translated[0];
},
ngettext : function(singular, plural, n) {
var translated = Documentation.TRANSLATIONS[singular];
if (typeof translated === 'undefined')
return (n == 1) ? singular : plural;
return translated[Documentation.PLURALEXPR(n)];
},
addTranslations : function(catalog) {
for (var key in catalog.messages)
this.TRANSLATIONS[key] = catalog.messages[key];
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
this.LOCALE = catalog.locale;
},
/**
* add context elements like header anchor links
*/
addContextElements : function() {
$('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
},
/**
* workaround a firefox stupidity
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
*/
fixFirefoxAnchorBug : function() {
if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() {
document.location.href += '';
}, 10);
},
/**
* highlight the search words provided in the url in the text
*/
highlightSearchWords : function() {
var params = $.getQueryParameters();
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
if (!body.length) {
body = $('body');
}
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.appendTo($('#searchbox'));
}
},
/**
* init the domain index toggle buttons
*/
initIndexTable : function() {
var togglers = $('img.toggler').click(function() {
var src = $(this).attr('src');
var idnum = $(this).attr('id').substr(7);
$('tr.cg-' + idnum).toggle();
if (src.substr(-9) === 'minus.png')
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
else
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
}).css('display', '');
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
togglers.click();
}
},
/**
* helper function to hide the search marks again
*/
hideSearchWords : function() {
$('#searchbox .highlight-link').fadeOut(300);
$('span.highlighted').removeClass('highlighted');
},
/**
* make the url absolute
*/
makeURL : function(relativeURL) {
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
},
/**
* get the current relative url
*/
getCurrentURL : function() {
var path = document.location.pathname;
var parts = path.split(/\//);
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
if (this === '..')
parts.pop();
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
},
initOnKeyListeners: function() {
$(document).keyup(function(event) {
var activeElementType = document.activeElement.tagName;
// don't navigate when in search box or textarea
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
switch (event.keyCode) {
case 37: // left
var prevHref = $('link[rel="prev"]').prop('href');
if (prevHref) {
window.location.href = prevHref;
return false;
}
case 39: // right
var nextHref = $('link[rel="next"]').prop('href');
if (nextHref) {
window.location.href = nextHref;
return false;
}
}
}
});
}
};
// quick alias for translations
_ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
});

View File

@@ -0,0 +1,9 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '4.0.3',
LANGUAGE: 'fr',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

BIN
help/fr/_static/down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

BIN
help/fr/_static/file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

376
help/fr/_static/haiku.css Normal file
View File

@@ -0,0 +1,376 @@
/*
* haiku.css_t
* ~~~~~~~~~~~
*
* Sphinx stylesheet -- haiku theme.
*
* Adapted from http://haiku-os.org/docs/Haiku-doc.css.
* Original copyright message:
*
* Copyright 2008-2009, Haiku. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Francois Revol <revol@free.fr>
* Stephan Assmus <superstippi@gmx.de>
* Braden Ewing <brewin@gmail.com>
* Humdinger <humdingerb@gmail.com>
*
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@import url("basic.css");
html {
margin: 0px;
padding: 0px;
background: #FFF url(bg-page.png) top left repeat-x;
}
body {
line-height: 1.5;
margin: auto;
padding: 0px;
font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
min-width: 59em;
max-width: 70em;
color: #333333;
}
div.footer {
padding: 8px;
font-size: 11px;
text-align: center;
letter-spacing: 0.5px;
}
/* link colors and text decoration */
a:link {
font-weight: bold;
text-decoration: none;
color: #dc3c01;
}
a:visited {
font-weight: bold;
text-decoration: none;
color: #892601;
}
a:hover, a:active {
text-decoration: underline;
color: #ff4500;
}
/* Some headers act as anchors, don't give them a hover effect */
h1 a:hover, a:active {
text-decoration: none;
color: #0c3762;
}
h2 a:hover, a:active {
text-decoration: none;
color: #0c3762;
}
h3 a:hover, a:active {
text-decoration: none;
color: #0c3762;
}
h4 a:hover, a:active {
text-decoration: none;
color: #0c3762;
}
a.headerlink {
color: #a7ce38;
padding-left: 5px;
}
a.headerlink:hover {
color: #a7ce38;
}
/* basic text elements */
div.content {
margin-top: 20px;
margin-left: 40px;
margin-right: 40px;
margin-bottom: 50px;
font-size: 0.9em;
}
/* heading and navigation */
div.header {
position: relative;
left: 0px;
top: 0px;
height: 85px;
/* background: #eeeeee; */
padding: 0 40px;
}
div.header h1 {
font-size: 1.6em;
font-weight: normal;
letter-spacing: 1px;
color: #0c3762;
border: 0;
margin: 0;
padding-top: 15px;
}
div.header h1 a {
font-weight: normal;
color: #0c3762;
}
div.header h2 {
font-size: 1.3em;
font-weight: normal;
letter-spacing: 1px;
text-transform: uppercase;
color: #aaa;
border: 0;
margin-top: -3px;
padding: 0;
}
div.header img.rightlogo {
float: right;
}
div.title {
font-size: 1.3em;
font-weight: bold;
color: #0c3762;
border-bottom: dotted thin #e0e0e0;
margin-bottom: 25px;
}
div.topnav {
/* background: #e0e0e0; */
}
div.topnav p {
margin-top: 0;
margin-left: 40px;
margin-right: 40px;
margin-bottom: 0px;
text-align: right;
font-size: 0.8em;
}
div.bottomnav {
background: #eeeeee;
}
div.bottomnav p {
margin-right: 40px;
text-align: right;
font-size: 0.8em;
}
a.uplink {
font-weight: normal;
}
/* contents box */
table.index {
margin: 0px 0px 30px 30px;
padding: 1px;
border-width: 1px;
border-style: dotted;
border-color: #e0e0e0;
}
table.index tr.heading {
background-color: #e0e0e0;
text-align: center;
font-weight: bold;
font-size: 1.1em;
}
table.index tr.index {
background-color: #eeeeee;
}
table.index td {
padding: 5px 20px;
}
table.index a:link, table.index a:visited {
font-weight: normal;
text-decoration: none;
color: #dc3c01;
}
table.index a:hover, table.index a:active {
text-decoration: underline;
color: #ff4500;
}
/* Haiku User Guide styles and layout */
/* Rounded corner boxes */
/* Common declarations */
div.admonition {
-webkit-border-radius: 10px;
-khtml-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
border-style: dotted;
border-width: thin;
border-color: #dcdcdc;
padding: 10px 15px 10px 15px;
margin-bottom: 15px;
margin-top: 15px;
}
div.note {
padding: 10px 15px 10px 80px;
background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;
min-height: 42px;
}
div.warning {
padding: 10px 15px 10px 80px;
background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;
min-height: 42px;
}
div.seealso {
background: #e4ffde;
}
/* More layout and styles */
h1 {
font-size: 1.3em;
font-weight: bold;
color: #0c3762;
border-bottom: dotted thin #e0e0e0;
margin-top: 30px;
}
h2 {
font-size: 1.2em;
font-weight: normal;
color: #0c3762;
border-bottom: dotted thin #e0e0e0;
margin-top: 30px;
}
h3 {
font-size: 1.1em;
font-weight: normal;
color: #0c3762;
margin-top: 30px;
}
h4 {
font-size: 1.0em;
font-weight: normal;
color: #0c3762;
margin-top: 30px;
}
p {
text-align: justify;
}
p.last {
margin-bottom: 0;
}
ol {
padding-left: 20px;
}
ul {
padding-left: 5px;
margin-top: 3px;
}
li {
line-height: 1.3;
}
div.content ul > li {
-moz-background-clip:border;
-moz-background-inline-policy:continuous;
-moz-background-origin:padding;
background: transparent url(bullet_orange.png) no-repeat scroll left 0.45em;
list-style-image: none;
list-style-type: none;
padding: 0 0 0 1.666em;
margin-bottom: 3px;
}
td {
vertical-align: top;
}
code {
background-color: #e2e2e2;
font-size: 1.0em;
font-family: monospace;
}
pre {
border-color: #0c3762;
border-style: dotted;
border-width: thin;
margin: 0 0 12px 0;
padding: 0.8em;
background-color: #f0f0f0;
}
hr {
border-top: 1px solid #ccc;
border-bottom: 0;
border-right: 0;
border-left: 0;
margin-bottom: 10px;
margin-top: 20px;
}
/* printer only pretty stuff */
@media print {
.noprint {
display: none;
}
/* for acronyms we want their definitions inlined at print time */
acronym[title]:after {
font-size: small;
content: " (" attr(title) ")";
font-style: italic;
}
/* and not have mozilla dotted underline */
acronym {
border: none;
}
div.topnav, div.bottomnav, div.header, table.index {
display: none;
}
div.content {
margin: 0px;
padding: 0px;
}
html {
background: #FFF;
}
}
.viewcode-back {
font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
}
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
margin: -1px -10px;
padding: 0 12px;
}
/* math display */
div.math p {
text-align: center;
}

10253
help/fr/_static/jquery-3.2.1.js vendored Normal file

File diff suppressed because it is too large Load Diff

4
help/fr/_static/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

BIN
help/fr/_static/minus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

BIN
help/fr/_static/plus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

View File

@@ -0,0 +1,69 @@
.highlight .hll { background-color: #ffffcc }
.highlight { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #333333 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #bb60d5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #208050 } /* Literal.Number.Bin */
.highlight .mf { color: #208050 } /* Literal.Number.Float */
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06287e } /* Name.Function.Magic */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
Documentation.addTranslations({"locale": "fr", "messages": {"%(filename)s &#8212; %(docstitle)s": "%(filename)s &#8212; %(docstitle)s", "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "&#169; Copyright %(copyright)s.": "&#169; Copyright %(copyright)s.", ", in ": ", dans", "About these documents": "\u00c0 propos de ces documents", "Automatically generated list of changes in version %(version)s": "Liste auto-g\u00e9n\u00e9r\u00e9e des modifications dans la version %(version)s", "C API changes": "Modifications de l'API C", "Changes in Version %(version)s &#8212; %(docstitle)s": "Changements dans la version %(version)s &#8212; %(docstitle)s", "Collapse sidebar": "R\u00e9duire la barre lat\u00e9rale", "Complete Table of Contents": "Table des mati\u00e8res compl\u00e8te", "Contents": "Contenu", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u00e9\u00e9 avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Agrandir la barre lat\u00e9rale", "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list.": "Vous pouvez effectuer une recherche au sein des documents. Saisissez les termes\nde votre recherche dans le champs ci-dessous et cliquez sur \"rechercher\". Notez que la fonctionnalit\u00e9 de recherche\nva automatiquement chercher l'ensemble des mots. Les pages\ncontenant moins de mots n'appara\u00eetront pas dans la liste des r\u00e9sultats.", "Full index on one page": "Index complet sur une seule page", "General Index": "Index g\u00e9n\u00e9ral", "Global Module Index": "Index g\u00e9n\u00e9ral des modules", "Go": "Go", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", "Index": "Index", "Index &ndash; %(key)s": "Index &ndash; %(key)s", "Index pages by letter": "Indexer les pages par lettre", "Indices and tables:": "Indices et Tables :", "Last updated on %(last_updated)s.": "Mis \u00e0 jour le %(last_updated)s.", "Library changes": "Modifications de la biblioth\u00e8que", "Navigation": "Navigation", "Next topic": "Sujet suivant", "Other changes": "Autres modifications", "Overview": "R\u00e9sum\u00e9", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Permalink to this headline": "Lien permanent vers ce titre", "Please activate JavaScript to enable the search\n functionality.": "Veuillez activer le JavaScript pour que la recherche fonctionne.", "Preparing search...": "Pr\u00e9paration de la recherche...", "Previous topic": "Sujet pr\u00e9c\u00e9dent", "Quick search": "Recherche rapide", "Search": "Recherche", "Search Page": "Page de recherche", "Search Results": "R\u00e9sultats de la recherche", "Search finished, found %s page(s) matching the search query.": "La recherche est finie, %s page(s) trouv\u00e9e(s) qui corresponde(nt) \u00e0 la recherche.", "Search within %(docstitle)s": "Recherchez dans %(docstitle)s", "Searching": "Recherche en cours", "Show Source": "Montrer le code source", "Table Of Contents": "Table des Mati\u00e8res", "This Page": "Cette page", "Welcome! This is": "Bienvenue ! Ceci est", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. Veuillez v\u00e9rifier que les mots sont correctement orthographi\u00e9s et que vous avez s\u00e9lectionn\u00e9 assez de cat\u00e9gories.", "all functions, classes, terms": "toutes les fonctions, classes, termes", "can be huge": "peut \u00eatre \u00e9norme", "last updated": "derni\u00e8re modification", "lists all sections and subsections": "lister l'ensemble des sections et sous-sections", "next chapter": "Chapitre suivant", "previous chapter": "Chapitre pr\u00e9c\u00e9dent", "quick access to all modules": "acc\u00e8s rapide \u00e0 l'ensemble des modules", "search": "rechercher", "search this documentation": "rechercher dans cette documentation", "the documentation for": "la documentation pour"}, "plural_expr": "(n > 1)"});

View File

@@ -0,0 +1,999 @@
// Underscore.js 1.3.1
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
// Underscore is freely distributable under the MIT license.
// Portions of Underscore are inspired or borrowed from Prototype,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
// http://documentcloud.github.com/underscore
(function() {
// Baseline setup
// --------------
// Establish the root object, `window` in the browser, or `global` on the server.
var root = this;
// Save the previous value of the `_` variable.
var previousUnderscore = root._;
// Establish the object that gets returned to break out of a loop iteration.
var breaker = {};
// Save bytes in the minified (but not gzipped) version:
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
// Create quick reference variables for speed access to core prototypes.
var slice = ArrayProto.slice,
unshift = ArrayProto.unshift,
toString = ObjProto.toString,
hasOwnProperty = ObjProto.hasOwnProperty;
// All **ECMAScript 5** native function implementations that we hope to use
// are declared here.
var
nativeForEach = ArrayProto.forEach,
nativeMap = ArrayProto.map,
nativeReduce = ArrayProto.reduce,
nativeReduceRight = ArrayProto.reduceRight,
nativeFilter = ArrayProto.filter,
nativeEvery = ArrayProto.every,
nativeSome = ArrayProto.some,
nativeIndexOf = ArrayProto.indexOf,
nativeLastIndexOf = ArrayProto.lastIndexOf,
nativeIsArray = Array.isArray,
nativeKeys = Object.keys,
nativeBind = FuncProto.bind;
// Create a safe reference to the Underscore object for use below.
var _ = function(obj) { return new wrapper(obj); };
// Export the Underscore object for **Node.js**, with
// backwards-compatibility for the old `require()` API. If we're in
// the browser, add `_` as a global object via a string identifier,
// for Closure Compiler "advanced" mode.
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} else {
root['_'] = _;
}
// Current version.
_.VERSION = '1.3.1';
// Collection Functions
// --------------------
// The cornerstone, an `each` implementation, aka `forEach`.
// Handles objects with the built-in `forEach`, arrays, and raw objects.
// Delegates to **ECMAScript 5**'s native `forEach` if available.
var each = _.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return;
if (nativeForEach && obj.forEach === nativeForEach) {
obj.forEach(iterator, context);
} else if (obj.length === +obj.length) {
for (var i = 0, l = obj.length; i < l; i++) {
if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
for (var key in obj) {
if (_.has(obj, key)) {
if (iterator.call(context, obj[key], key, obj) === breaker) return;
}
}
}
};
// Return the results of applying the iterator to each element.
// Delegates to **ECMAScript 5**'s native `map` if available.
_.map = _.collect = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
each(obj, function(value, index, list) {
results[results.length] = iterator.call(context, value, index, list);
});
if (obj.length === +obj.length) results.length = obj.length;
return results;
};
// **Reduce** builds up a single result from a list of values, aka `inject`,
// or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
_.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
var initial = arguments.length > 2;
if (obj == null) obj = [];
if (nativeReduce && obj.reduce === nativeReduce) {
if (context) iterator = _.bind(iterator, context);
return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
}
each(obj, function(value, index, list) {
if (!initial) {
memo = value;
initial = true;
} else {
memo = iterator.call(context, memo, value, index, list);
}
});
if (!initial) throw new TypeError('Reduce of empty array with no initial value');
return memo;
};
// The right-associative version of reduce, also known as `foldr`.
// Delegates to **ECMAScript 5**'s native `reduceRight` if available.
_.reduceRight = _.foldr = function(obj, iterator, memo, context) {
var initial = arguments.length > 2;
if (obj == null) obj = [];
if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
if (context) iterator = _.bind(iterator, context);
return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
}
var reversed = _.toArray(obj).reverse();
if (context && !initial) iterator = _.bind(iterator, context);
return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
};
// Return the first value which passes a truth test. Aliased as `detect`.
_.find = _.detect = function(obj, iterator, context) {
var result;
any(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) {
result = value;
return true;
}
});
return result;
};
// Return all the elements that pass a truth test.
// Delegates to **ECMAScript 5**'s native `filter` if available.
// Aliased as `select`.
_.filter = _.select = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
each(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) results[results.length] = value;
});
return results;
};
// Return all the elements for which a truth test fails.
_.reject = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
each(obj, function(value, index, list) {
if (!iterator.call(context, value, index, list)) results[results.length] = value;
});
return results;
};
// Determine whether all of the elements match a truth test.
// Delegates to **ECMAScript 5**'s native `every` if available.
// Aliased as `all`.
_.every = _.all = function(obj, iterator, context) {
var result = true;
if (obj == null) return result;
if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
each(obj, function(value, index, list) {
if (!(result = result && iterator.call(context, value, index, list))) return breaker;
});
return result;
};
// Determine if at least one element in the object matches a truth test.
// Delegates to **ECMAScript 5**'s native `some` if available.
// Aliased as `any`.
var any = _.some = _.any = function(obj, iterator, context) {
iterator || (iterator = _.identity);
var result = false;
if (obj == null) return result;
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
each(obj, function(value, index, list) {
if (result || (result = iterator.call(context, value, index, list))) return breaker;
});
return !!result;
};
// Determine if a given value is included in the array or object using `===`.
// Aliased as `contains`.
_.include = _.contains = function(obj, target) {
var found = false;
if (obj == null) return found;
if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
found = any(obj, function(value) {
return value === target;
});
return found;
};
// Invoke a method (with arguments) on every item in a collection.
_.invoke = function(obj, method) {
var args = slice.call(arguments, 2);
return _.map(obj, function(value) {
return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
});
};
// Convenience version of a common use case of `map`: fetching a property.
_.pluck = function(obj, key) {
return _.map(obj, function(value){ return value[key]; });
};
// Return the maximum element or (element-based computation).
_.max = function(obj, iterator, context) {
if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
if (!iterator && _.isEmpty(obj)) return -Infinity;
var result = {computed : -Infinity};
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
computed >= result.computed && (result = {value : value, computed : computed});
});
return result.value;
};
// Return the minimum element (or element-based computation).
_.min = function(obj, iterator, context) {
if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
if (!iterator && _.isEmpty(obj)) return Infinity;
var result = {computed : Infinity};
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
computed < result.computed && (result = {value : value, computed : computed});
});
return result.value;
};
// Shuffle an array.
_.shuffle = function(obj) {
var shuffled = [], rand;
each(obj, function(value, index, list) {
if (index == 0) {
shuffled[0] = value;
} else {
rand = Math.floor(Math.random() * (index + 1));
shuffled[index] = shuffled[rand];
shuffled[rand] = value;
}
});
return shuffled;
};
// Sort the object's values by a criterion produced by an iterator.
_.sortBy = function(obj, iterator, context) {
return _.pluck(_.map(obj, function(value, index, list) {
return {
value : value,
criteria : iterator.call(context, value, index, list)
};
}).sort(function(left, right) {
var a = left.criteria, b = right.criteria;
return a < b ? -1 : a > b ? 1 : 0;
}), 'value');
};
// Groups the object's values by a criterion. Pass either a string attribute
// to group by, or a function that returns the criterion.
_.groupBy = function(obj, val) {
var result = {};
var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
each(obj, function(value, index) {
var key = iterator(value, index);
(result[key] || (result[key] = [])).push(value);
});
return result;
};
// Use a comparator function to figure out at what index an object should
// be inserted so as to maintain order. Uses binary search.
_.sortedIndex = function(array, obj, iterator) {
iterator || (iterator = _.identity);
var low = 0, high = array.length;
while (low < high) {
var mid = (low + high) >> 1;
iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
}
return low;
};
// Safely convert anything iterable into a real, live array.
_.toArray = function(iterable) {
if (!iterable) return [];
if (iterable.toArray) return iterable.toArray();
if (_.isArray(iterable)) return slice.call(iterable);
if (_.isArguments(iterable)) return slice.call(iterable);
return _.values(iterable);
};
// Return the number of elements in an object.
_.size = function(obj) {
return _.toArray(obj).length;
};
// Array Functions
// ---------------
// Get the first element of an array. Passing **n** will return the first N
// values in the array. Aliased as `head`. The **guard** check allows it to work
// with `_.map`.
_.first = _.head = function(array, n, guard) {
return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
};
// Returns everything but the last entry of the array. Especcialy useful on
// the arguments object. Passing **n** will return all the values in
// the array, excluding the last N. The **guard** check allows it to work with
// `_.map`.
_.initial = function(array, n, guard) {
return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
};
// Get the last element of an array. Passing **n** will return the last N
// values in the array. The **guard** check allows it to work with `_.map`.
_.last = function(array, n, guard) {
if ((n != null) && !guard) {
return slice.call(array, Math.max(array.length - n, 0));
} else {
return array[array.length - 1];
}
};
// Returns everything but the first entry of the array. Aliased as `tail`.
// Especially useful on the arguments object. Passing an **index** will return
// the rest of the values in the array from that index onward. The **guard**
// check allows it to work with `_.map`.
_.rest = _.tail = function(array, index, guard) {
return slice.call(array, (index == null) || guard ? 1 : index);
};
// Trim out all falsy values from an array.
_.compact = function(array) {
return _.filter(array, function(value){ return !!value; });
};
// Return a completely flattened version of an array.
_.flatten = function(array, shallow) {
return _.reduce(array, function(memo, value) {
if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
memo[memo.length] = value;
return memo;
}, []);
};
// Return a version of the array that does not contain the specified value(s).
_.without = function(array) {
return _.difference(array, slice.call(arguments, 1));
};
// Produce a duplicate-free version of the array. If the array has already
// been sorted, you have the option of using a faster algorithm.
// Aliased as `unique`.
_.uniq = _.unique = function(array, isSorted, iterator) {
var initial = iterator ? _.map(array, iterator) : array;
var result = [];
_.reduce(initial, function(memo, el, i) {
if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
memo[memo.length] = el;
result[result.length] = array[i];
}
return memo;
}, []);
return result;
};
// Produce an array that contains the union: each distinct element from all of
// the passed-in arrays.
_.union = function() {
return _.uniq(_.flatten(arguments, true));
};
// Produce an array that contains every item shared between all the
// passed-in arrays. (Aliased as "intersect" for back-compat.)
_.intersection = _.intersect = function(array) {
var rest = slice.call(arguments, 1);
return _.filter(_.uniq(array), function(item) {
return _.every(rest, function(other) {
return _.indexOf(other, item) >= 0;
});
});
};
// Take the difference between one array and a number of other arrays.
// Only the elements present in just the first array will remain.
_.difference = function(array) {
var rest = _.flatten(slice.call(arguments, 1));
return _.filter(array, function(value){ return !_.include(rest, value); });
};
// Zip together multiple lists into a single array -- elements that share
// an index go together.
_.zip = function() {
var args = slice.call(arguments);
var length = _.max(_.pluck(args, 'length'));
var results = new Array(length);
for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
return results;
};
// If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
// we need this function. Return the position of the first occurrence of an
// item in an array, or -1 if the item is not included in the array.
// Delegates to **ECMAScript 5**'s native `indexOf` if available.
// If the array is large and already in sort order, pass `true`
// for **isSorted** to use binary search.
_.indexOf = function(array, item, isSorted) {
if (array == null) return -1;
var i, l;
if (isSorted) {
i = _.sortedIndex(array, item);
return array[i] === item ? i : -1;
}
if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
return -1;
};
// Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
_.lastIndexOf = function(array, item) {
if (array == null) return -1;
if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
var i = array.length;
while (i--) if (i in array && array[i] === item) return i;
return -1;
};
// Generate an integer Array containing an arithmetic progression. A port of
// the native Python `range()` function. See
// [the Python documentation](http://docs.python.org/library/functions.html#range).
_.range = function(start, stop, step) {
if (arguments.length <= 1) {
stop = start || 0;
start = 0;
}
step = arguments[2] || 1;
var len = Math.max(Math.ceil((stop - start) / step), 0);
var idx = 0;
var range = new Array(len);
while(idx < len) {
range[idx++] = start;
start += step;
}
return range;
};
// Function (ahem) Functions
// ------------------
// Reusable constructor function for prototype setting.
var ctor = function(){};
// Create a function bound to a given object (assigning `this`, and arguments,
// optionally). Binding with arguments is also known as `curry`.
// Delegates to **ECMAScript 5**'s native `Function.bind` if available.
// We check for `func.bind` first, to fail fast when `func` is undefined.
_.bind = function bind(func, context) {
var bound, args;
if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
if (!_.isFunction(func)) throw new TypeError;
args = slice.call(arguments, 2);
return bound = function() {
if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
ctor.prototype = func.prototype;
var self = new ctor;
var result = func.apply(self, args.concat(slice.call(arguments)));
if (Object(result) === result) return result;
return self;
};
};
// Bind all of an object's methods to that object. Useful for ensuring that
// all callbacks defined on an object belong to it.
_.bindAll = function(obj) {
var funcs = slice.call(arguments, 1);
if (funcs.length == 0) funcs = _.functions(obj);
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
return obj;
};
// Memoize an expensive function by storing its results.
_.memoize = function(func, hasher) {
var memo = {};
hasher || (hasher = _.identity);
return function() {
var key = hasher.apply(this, arguments);
return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
};
};
// Delays a function for the given number of milliseconds, and then calls
// it with the arguments supplied.
_.delay = function(func, wait) {
var args = slice.call(arguments, 2);
return setTimeout(function(){ return func.apply(func, args); }, wait);
};
// Defers a function, scheduling it to run after the current call stack has
// cleared.
_.defer = function(func) {
return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
};
// Returns a function, that, when invoked, will only be triggered at most once
// during a given window of time.
_.throttle = function(func, wait) {
var context, args, timeout, throttling, more;
var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
return function() {
context = this; args = arguments;
var later = function() {
timeout = null;
if (more) func.apply(context, args);
whenDone();
};
if (!timeout) timeout = setTimeout(later, wait);
if (throttling) {
more = true;
} else {
func.apply(context, args);
}
whenDone();
throttling = true;
};
};
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds.
_.debounce = function(func, wait) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
func.apply(context, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
};
// Returns a function that will be executed at most one time, no matter how
// often you call it. Useful for lazy initialization.
_.once = function(func) {
var ran = false, memo;
return function() {
if (ran) return memo;
ran = true;
return memo = func.apply(this, arguments);
};
};
// Returns the first function passed as an argument to the second,
// allowing you to adjust arguments, run code before and after, and
// conditionally execute the original function.
_.wrap = function(func, wrapper) {
return function() {
var args = [func].concat(slice.call(arguments, 0));
return wrapper.apply(this, args);
};
};
// Returns a function that is the composition of a list of functions, each
// consuming the return value of the function that follows.
_.compose = function() {
var funcs = arguments;
return function() {
var args = arguments;
for (var i = funcs.length - 1; i >= 0; i--) {
args = [funcs[i].apply(this, args)];
}
return args[0];
};
};
// Returns a function that will only be executed after being called N times.
_.after = function(times, func) {
if (times <= 0) return func();
return function() {
if (--times < 1) { return func.apply(this, arguments); }
};
};
// Object Functions
// ----------------
// Retrieve the names of an object's properties.
// Delegates to **ECMAScript 5**'s native `Object.keys`
_.keys = nativeKeys || function(obj) {
if (obj !== Object(obj)) throw new TypeError('Invalid object');
var keys = [];
for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
return keys;
};
// Retrieve the values of an object's properties.
_.values = function(obj) {
return _.map(obj, _.identity);
};
// Return a sorted list of the function names available on the object.
// Aliased as `methods`
_.functions = _.methods = function(obj) {
var names = [];
for (var key in obj) {
if (_.isFunction(obj[key])) names.push(key);
}
return names.sort();
};
// Extend a given object with all the properties in passed-in object(s).
_.extend = function(obj) {
each(slice.call(arguments, 1), function(source) {
for (var prop in source) {
obj[prop] = source[prop];
}
});
return obj;
};
// Fill in a given object with default properties.
_.defaults = function(obj) {
each(slice.call(arguments, 1), function(source) {
for (var prop in source) {
if (obj[prop] == null) obj[prop] = source[prop];
}
});
return obj;
};
// Create a (shallow-cloned) duplicate of an object.
_.clone = function(obj) {
if (!_.isObject(obj)) return obj;
return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
};
// Invokes interceptor with the obj, and then returns obj.
// The primary purpose of this method is to "tap into" a method chain, in
// order to perform operations on intermediate results within the chain.
_.tap = function(obj, interceptor) {
interceptor(obj);
return obj;
};
// Internal recursive comparison function.
function eq(a, b, stack) {
// Identical objects are equal. `0 === -0`, but they aren't identical.
// See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
if (a === b) return a !== 0 || 1 / a == 1 / b;
// A strict comparison is necessary because `null == undefined`.
if (a == null || b == null) return a === b;
// Unwrap any wrapped objects.
if (a._chain) a = a._wrapped;
if (b._chain) b = b._wrapped;
// Invoke a custom `isEqual` method if one is provided.
if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
// Compare `[[Class]]` names.
var className = toString.call(a);
if (className != toString.call(b)) return false;
switch (className) {
// Strings, numbers, dates, and booleans are compared by value.
case '[object String]':
// Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
// equivalent to `new String("5")`.
return a == String(b);
case '[object Number]':
// `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
// other numeric values.
return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
case '[object Date]':
case '[object Boolean]':
// Coerce dates and booleans to numeric primitive values. Dates are compared by their
// millisecond representations. Note that invalid dates with millisecond representations
// of `NaN` are not equivalent.
return +a == +b;
// RegExps are compared by their source patterns and flags.
case '[object RegExp]':
return a.source == b.source &&
a.global == b.global &&
a.multiline == b.multiline &&
a.ignoreCase == b.ignoreCase;
}
if (typeof a != 'object' || typeof b != 'object') return false;
// Assume equality for cyclic structures. The algorithm for detecting cyclic
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
var length = stack.length;
while (length--) {
// Linear search. Performance is inversely proportional to the number of
// unique nested structures.
if (stack[length] == a) return true;
}
// Add the first object to the stack of traversed objects.
stack.push(a);
var size = 0, result = true;
// Recursively compare objects and arrays.
if (className == '[object Array]') {
// Compare array lengths to determine if a deep comparison is necessary.
size = a.length;
result = size == b.length;
if (result) {
// Deep compare the contents, ignoring non-numeric properties.
while (size--) {
// Ensure commutative equality for sparse arrays.
if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
}
}
} else {
// Objects with different constructors are not equivalent.
if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
// Deep compare objects.
for (var key in a) {
if (_.has(a, key)) {
// Count the expected number of properties.
size++;
// Deep compare each member.
if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
}
}
// Ensure that both objects contain the same number of properties.
if (result) {
for (key in b) {
if (_.has(b, key) && !(size--)) break;
}
result = !size;
}
}
// Remove the first object from the stack of traversed objects.
stack.pop();
return result;
}
// Perform a deep comparison to check if two objects are equal.
_.isEqual = function(a, b) {
return eq(a, b, []);
};
// Is a given array, string, or object empty?
// An "empty" object has no enumerable own-properties.
_.isEmpty = function(obj) {
if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
for (var key in obj) if (_.has(obj, key)) return false;
return true;
};
// Is a given value a DOM element?
_.isElement = function(obj) {
return !!(obj && obj.nodeType == 1);
};
// Is a given value an array?
// Delegates to ECMA5's native Array.isArray
_.isArray = nativeIsArray || function(obj) {
return toString.call(obj) == '[object Array]';
};
// Is a given variable an object?
_.isObject = function(obj) {
return obj === Object(obj);
};
// Is a given variable an arguments object?
_.isArguments = function(obj) {
return toString.call(obj) == '[object Arguments]';
};
if (!_.isArguments(arguments)) {
_.isArguments = function(obj) {
return !!(obj && _.has(obj, 'callee'));
};
}
// Is a given value a function?
_.isFunction = function(obj) {
return toString.call(obj) == '[object Function]';
};
// Is a given value a string?
_.isString = function(obj) {
return toString.call(obj) == '[object String]';
};
// Is a given value a number?
_.isNumber = function(obj) {
return toString.call(obj) == '[object Number]';
};
// Is the given value `NaN`?
_.isNaN = function(obj) {
// `NaN` is the only value for which `===` is not reflexive.
return obj !== obj;
};
// Is a given value a boolean?
_.isBoolean = function(obj) {
return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
};
// Is a given value a date?
_.isDate = function(obj) {
return toString.call(obj) == '[object Date]';
};
// Is the given value a regular expression?
_.isRegExp = function(obj) {
return toString.call(obj) == '[object RegExp]';
};
// Is a given value equal to null?
_.isNull = function(obj) {
return obj === null;
};
// Is a given variable undefined?
_.isUndefined = function(obj) {
return obj === void 0;
};
// Has own property?
_.has = function(obj, key) {
return hasOwnProperty.call(obj, key);
};
// Utility Functions
// -----------------
// Run Underscore.js in *noConflict* mode, returning the `_` variable to its
// previous owner. Returns a reference to the Underscore object.
_.noConflict = function() {
root._ = previousUnderscore;
return this;
};
// Keep the identity function around for default iterators.
_.identity = function(value) {
return value;
};
// Run a function **n** times.
_.times = function (n, iterator, context) {
for (var i = 0; i < n; i++) iterator.call(context, i);
};
// Escape a string for HTML interpolation.
_.escape = function(string) {
return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
};
// Add your own custom functions to the Underscore object, ensuring that
// they're correctly added to the OOP wrapper as well.
_.mixin = function(obj) {
each(_.functions(obj), function(name){
addToWrapper(name, _[name] = obj[name]);
});
};
// Generate a unique integer id (unique within the entire client session).
// Useful for temporary DOM ids.
var idCounter = 0;
_.uniqueId = function(prefix) {
var id = idCounter++;
return prefix ? prefix + id : id;
};
// By default, Underscore uses ERB-style template delimiters, change the
// following template settings to use alternative delimiters.
_.templateSettings = {
evaluate : /<%([\s\S]+?)%>/g,
interpolate : /<%=([\s\S]+?)%>/g,
escape : /<%-([\s\S]+?)%>/g
};
// When customizing `templateSettings`, if you don't want to define an
// interpolation, evaluation or escaping regex, we need one that is
// guaranteed not to match.
var noMatch = /.^/;
// Within an interpolation, evaluation, or escaping, remove HTML escaping
// that had been previously added.
var unescape = function(code) {
return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
};
// JavaScript micro-templating, similar to John Resig's implementation.
// Underscore templating handles arbitrary delimiters, preserves whitespace,
// and correctly escapes quotes within interpolated code.
_.template = function(str, data) {
var c = _.templateSettings;
var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
'with(obj||{}){__p.push(\'' +
str.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(c.escape || noMatch, function(match, code) {
return "',_.escape(" + unescape(code) + "),'";
})
.replace(c.interpolate || noMatch, function(match, code) {
return "'," + unescape(code) + ",'";
})
.replace(c.evaluate || noMatch, function(match, code) {
return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
})
.replace(/\r/g, '\\r')
.replace(/\n/g, '\\n')
.replace(/\t/g, '\\t')
+ "');}return __p.join('');";
var func = new Function('obj', '_', tmpl);
if (data) return func(data, _);
return function(data) {
return func.call(this, data, _);
};
};
// Add a "chain" function, which will delegate to the wrapper.
_.chain = function(obj) {
return _(obj).chain();
};
// The OOP Wrapper
// ---------------
// If Underscore is called as a function, it returns a wrapped object that
// can be used OO-style. This wrapper holds altered versions of all the
// underscore functions. Wrapped objects may be chained.
var wrapper = function(obj) { this._wrapped = obj; };
// Expose `wrapper.prototype` as `_.prototype`
_.prototype = wrapper.prototype;
// Helper function to continue chaining intermediate results.
var result = function(obj, chain) {
return chain ? _(obj).chain() : obj;
};
// A method to easily add functions to the OOP wrapper.
var addToWrapper = function(name, func) {
wrapper.prototype[name] = function() {
var args = slice.call(arguments);
unshift.call(args, this._wrapped);
return result(func.apply(_, args), this._chain);
};
};
// Add all of the Underscore functions to the wrapper object.
_.mixin(_);
// Add all mutator Array functions to the wrapper.
each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
var method = ArrayProto[name];
wrapper.prototype[name] = function() {
var wrapped = this._wrapped;
method.apply(wrapped, arguments);
var length = wrapped.length;
if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
return result(wrapped, this._chain);
};
});
// Add all accessor Array functions to the wrapper.
each(['concat', 'join', 'slice'], function(name) {
var method = ArrayProto[name];
wrapper.prototype[name] = function() {
return result(method.apply(this._wrapped, arguments), this._chain);
};
});
// Start chaining a wrapped Underscore object.
wrapper.prototype.chain = function() {
this._chain = true;
return this;
};
// Extracts the result from a wrapped and chained object.
wrapper.prototype.value = function() {
return this._wrapped;
};
}).call(this);

View File

@@ -0,0 +1,31 @@
// Underscore.js 1.3.1
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
// Underscore is freely distributable under the MIT license.
// Portions of Underscore are inspired or borrowed from Prototype,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
// http://documentcloud.github.com/underscore
(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

BIN
help/fr/_static/up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

View File

@@ -0,0 +1,808 @@
/*
* websupport.js
* ~~~~~~~~~~~~~
*
* sphinx.websupport utilities for all documentation.
*
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
(function($) {
$.fn.autogrow = function() {
return this.each(function() {
var textarea = this;
$.fn.autogrow.resize(textarea);
$(textarea)
.focus(function() {
textarea.interval = setInterval(function() {
$.fn.autogrow.resize(textarea);
}, 500);
})
.blur(function() {
clearInterval(textarea.interval);
});
});
};
$.fn.autogrow.resize = function(textarea) {
var lineHeight = parseInt($(textarea).css('line-height'), 10);
var lines = textarea.value.split('\n');
var columns = textarea.cols;
var lineCount = 0;
$.each(lines, function() {
lineCount += Math.ceil(this.length / columns) || 1;
});
var height = lineHeight * (lineCount + 1);
$(textarea).css('height', height);
};
})(jQuery);
(function($) {
var comp, by;
function init() {
initEvents();
initComparator();
}
function initEvents() {
$(document).on("click", 'a.comment-close', function(event) {
event.preventDefault();
hide($(this).attr('id').substring(2));
});
$(document).on("click", 'a.vote', function(event) {
event.preventDefault();
handleVote($(this));
});
$(document).on("click", 'a.reply', function(event) {
event.preventDefault();
openReply($(this).attr('id').substring(2));
});
$(document).on("click", 'a.close-reply', function(event) {
event.preventDefault();
closeReply($(this).attr('id').substring(2));
});
$(document).on("click", 'a.sort-option', function(event) {
event.preventDefault();
handleReSort($(this));
});
$(document).on("click", 'a.show-proposal', function(event) {
event.preventDefault();
showProposal($(this).attr('id').substring(2));
});
$(document).on("click", 'a.hide-proposal', function(event) {
event.preventDefault();
hideProposal($(this).attr('id').substring(2));
});
$(document).on("click", 'a.show-propose-change', function(event) {
event.preventDefault();
showProposeChange($(this).attr('id').substring(2));
});
$(document).on("click", 'a.hide-propose-change', function(event) {
event.preventDefault();
hideProposeChange($(this).attr('id').substring(2));
});
$(document).on("click", 'a.accept-comment', function(event) {
event.preventDefault();
acceptComment($(this).attr('id').substring(2));
});
$(document).on("click", 'a.delete-comment', function(event) {
event.preventDefault();
deleteComment($(this).attr('id').substring(2));
});
$(document).on("click", 'a.comment-markup', function(event) {
event.preventDefault();
toggleCommentMarkupBox($(this).attr('id').substring(2));
});
}
/**
* Set comp, which is a comparator function used for sorting and
* inserting comments into the list.
*/
function setComparator() {
// If the first three letters are "asc", sort in ascending order
// and remove the prefix.
if (by.substring(0,3) == 'asc') {
var i = by.substring(3);
comp = function(a, b) { return a[i] - b[i]; };
} else {
// Otherwise sort in descending order.
comp = function(a, b) { return b[by] - a[by]; };
}
// Reset link styles and format the selected sort option.
$('a.sel').attr('href', '#').removeClass('sel');
$('a.by' + by).removeAttr('href').addClass('sel');
}
/**
* Create a comp function. If the user has preferences stored in
* the sortBy cookie, use those, otherwise use the default.
*/
function initComparator() {
by = 'rating'; // Default to sort by rating.
// If the sortBy cookie is set, use that instead.
if (document.cookie.length > 0) {
var start = document.cookie.indexOf('sortBy=');
if (start != -1) {
start = start + 7;
var end = document.cookie.indexOf(";", start);
if (end == -1) {
end = document.cookie.length;
by = unescape(document.cookie.substring(start, end));
}
}
}
setComparator();
}
/**
* Show a comment div.
*/
function show(id) {
$('#ao' + id).hide();
$('#ah' + id).show();
var context = $.extend({id: id}, opts);
var popup = $(renderTemplate(popupTemplate, context)).hide();
popup.find('textarea[name="proposal"]').hide();
popup.find('a.by' + by).addClass('sel');
var form = popup.find('#cf' + id);
form.submit(function(event) {
event.preventDefault();
addComment(form);
});
$('#s' + id).after(popup);
popup.slideDown('fast', function() {
getComments(id);
});
}
/**
* Hide a comment div.
*/
function hide(id) {
$('#ah' + id).hide();
$('#ao' + id).show();
var div = $('#sc' + id);
div.slideUp('fast', function() {
div.remove();
});
}
/**
* Perform an ajax request to get comments for a node
* and insert the comments into the comments tree.
*/
function getComments(id) {
$.ajax({
type: 'GET',
url: opts.getCommentsURL,
data: {node: id},
success: function(data, textStatus, request) {
var ul = $('#cl' + id);
var speed = 100;
$('#cf' + id)
.find('textarea[name="proposal"]')
.data('source', data.source);
if (data.comments.length === 0) {
ul.html('<li>No comments yet.</li>');
ul.data('empty', true);
} else {
// If there are comments, sort them and put them in the list.
var comments = sortComments(data.comments);
speed = data.comments.length * 100;
appendComments(comments, ul);
ul.data('empty', false);
}
$('#cn' + id).slideUp(speed + 200);
ul.slideDown(speed);
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem retrieving the comments.');
},
dataType: 'json'
});
}
/**
* Add a comment via ajax and insert the comment into the comment tree.
*/
function addComment(form) {
var node_id = form.find('input[name="node"]').val();
var parent_id = form.find('input[name="parent"]').val();
var text = form.find('textarea[name="comment"]').val();
var proposal = form.find('textarea[name="proposal"]').val();
if (text == '') {
showError('Please enter a comment.');
return;
}
// Disable the form that is being submitted.
form.find('textarea,input').attr('disabled', 'disabled');
// Send the comment to the server.
$.ajax({
type: "POST",
url: opts.addCommentURL,
dataType: 'json',
data: {
node: node_id,
parent: parent_id,
text: text,
proposal: proposal
},
success: function(data, textStatus, error) {
// Reset the form.
if (node_id) {
hideProposeChange(node_id);
}
form.find('textarea')
.val('')
.add(form.find('input'))
.removeAttr('disabled');
var ul = $('#cl' + (node_id || parent_id));
if (ul.data('empty')) {
$(ul).empty();
ul.data('empty', false);
}
insertComment(data.comment);
var ao = $('#ao' + node_id);
ao.find('img').attr({'src': opts.commentBrightImage});
if (node_id) {
// if this was a "root" comment, remove the commenting box
// (the user can get it back by reopening the comment popup)
$('#ca' + node_id).slideUp();
}
},
error: function(request, textStatus, error) {
form.find('textarea,input').removeAttr('disabled');
showError('Oops, there was a problem adding the comment.');
}
});
}
/**
* Recursively append comments to the main comment list and children
* lists, creating the comment tree.
*/
function appendComments(comments, ul) {
$.each(comments, function() {
var div = createCommentDiv(this);
ul.append($(document.createElement('li')).html(div));
appendComments(this.children, div.find('ul.comment-children'));
// To avoid stagnating data, don't store the comments children in data.
this.children = null;
div.data('comment', this);
});
}
/**
* After adding a new comment, it must be inserted in the correct
* location in the comment tree.
*/
function insertComment(comment) {
var div = createCommentDiv(comment);
// To avoid stagnating data, don't store the comments children in data.
comment.children = null;
div.data('comment', comment);
var ul = $('#cl' + (comment.node || comment.parent));
var siblings = getChildren(ul);
var li = $(document.createElement('li'));
li.hide();
// Determine where in the parents children list to insert this comment.
for(var i=0; i < siblings.length; i++) {
if (comp(comment, siblings[i]) <= 0) {
$('#cd' + siblings[i].id)
.parent()
.before(li.html(div));
li.slideDown('fast');
return;
}
}
// If we get here, this comment rates lower than all the others,
// or it is the only comment in the list.
ul.append(li.html(div));
li.slideDown('fast');
}
function acceptComment(id) {
$.ajax({
type: 'POST',
url: opts.acceptCommentURL,
data: {id: id},
success: function(data, textStatus, request) {
$('#cm' + id).fadeOut('fast');
$('#cd' + id).removeClass('moderate');
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem accepting the comment.');
}
});
}
function deleteComment(id) {
$.ajax({
type: 'POST',
url: opts.deleteCommentURL,
data: {id: id},
success: function(data, textStatus, request) {
var div = $('#cd' + id);
if (data == 'delete') {
// Moderator mode: remove the comment and all children immediately
div.slideUp('fast', function() {
div.remove();
});
return;
}
// User mode: only mark the comment as deleted
div
.find('span.user-id:first')
.text('[deleted]').end()
.find('div.comment-text:first')
.text('[deleted]').end()
.find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
.remove();
var comment = div.data('comment');
comment.username = '[deleted]';
comment.text = '[deleted]';
div.data('comment', comment);
},
error: function(request, textStatus, error) {
showError('Oops, there was a problem deleting the comment.');
}
});
}
function showProposal(id) {
$('#sp' + id).hide();
$('#hp' + id).show();
$('#pr' + id).slideDown('fast');
}
function hideProposal(id) {
$('#hp' + id).hide();
$('#sp' + id).show();
$('#pr' + id).slideUp('fast');
}
function showProposeChange(id) {
$('#pc' + id).hide();
$('#hc' + id).show();
var textarea = $('#pt' + id);
textarea.val(textarea.data('source'));
$.fn.autogrow.resize(textarea[0]);
textarea.slideDown('fast');
}
function hideProposeChange(id) {
$('#hc' + id).hide();
$('#pc' + id).show();
var textarea = $('#pt' + id);
textarea.val('').removeAttr('disabled');
textarea.slideUp('fast');
}
function toggleCommentMarkupBox(id) {
$('#mb' + id).toggle();
}
/** Handle when the user clicks on a sort by link. */
function handleReSort(link) {
var classes = link.attr('class').split(/\s+/);
for (var i=0; i<classes.length; i++) {
if (classes[i] != 'sort-option') {
by = classes[i].substring(2);
}
}
setComparator();
// Save/update the sortBy cookie.
var expiration = new Date();
expiration.setDate(expiration.getDate() + 365);
document.cookie= 'sortBy=' + escape(by) +
';expires=' + expiration.toUTCString();
$('ul.comment-ul').each(function(index, ul) {
var comments = getChildren($(ul), true);
comments = sortComments(comments);
appendComments(comments, $(ul).empty());
});
}
/**
* Function to process a vote when a user clicks an arrow.
*/
function handleVote(link) {
if (!opts.voting) {
showError("You'll need to login to vote.");
return;
}
var id = link.attr('id');
if (!id) {
// Didn't click on one of the voting arrows.
return;
}
// If it is an unvote, the new vote value is 0,
// Otherwise it's 1 for an upvote, or -1 for a downvote.
var value = 0;
if (id.charAt(1) != 'u') {
value = id.charAt(0) == 'u' ? 1 : -1;
}
// The data to be sent to the server.
var d = {
comment_id: id.substring(2),
value: value
};
// Swap the vote and unvote links.
link.hide();
$('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
.show();
// The div the comment is displayed in.
var div = $('div#cd' + d.comment_id);
var data = div.data('comment');
// If this is not an unvote, and the other vote arrow has
// already been pressed, unpress it.
if ((d.value !== 0) && (data.vote === d.value * -1)) {
$('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
$('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
}
// Update the comments rating in the local data.
data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
data.vote = d.value;
div.data('comment', data);
// Change the rating text.
div.find('.rating:first')
.text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
// Send the vote information to the server.
$.ajax({
type: "POST",
url: opts.processVoteURL,
data: d,
error: function(request, textStatus, error) {
showError('Oops, there was a problem casting that vote.');
}
});
}
/**
* Open a reply form used to reply to an existing comment.
*/
function openReply(id) {
// Swap out the reply link for the hide link
$('#rl' + id).hide();
$('#cr' + id).show();
// Add the reply li to the children ul.
var div = $(renderTemplate(replyTemplate, {id: id})).hide();
$('#cl' + id)
.prepend(div)
// Setup the submit handler for the reply form.
.find('#rf' + id)
.submit(function(event) {
event.preventDefault();
addComment($('#rf' + id));
closeReply(id);
})
.find('input[type=button]')
.click(function() {
closeReply(id);
});
div.slideDown('fast', function() {
$('#rf' + id).find('textarea').focus();
});
}
/**
* Close the reply form opened with openReply.
*/
function closeReply(id) {
// Remove the reply div from the DOM.
$('#rd' + id).slideUp('fast', function() {
$(this).remove();
});
// Swap out the hide link for the reply link
$('#cr' + id).hide();
$('#rl' + id).show();
}
/**
* Recursively sort a tree of comments using the comp comparator.
*/
function sortComments(comments) {
comments.sort(comp);
$.each(comments, function() {
this.children = sortComments(this.children);
});
return comments;
}
/**
* Get the children comments from a ul. If recursive is true,
* recursively include childrens' children.
*/
function getChildren(ul, recursive) {
var children = [];
ul.children().children("[id^='cd']")
.each(function() {
var comment = $(this).data('comment');
if (recursive)
comment.children = getChildren($(this).find('#cl' + comment.id), true);
children.push(comment);
});
return children;
}
/** Create a div to display a comment in. */
function createCommentDiv(comment) {
if (!comment.displayed && !opts.moderator) {
return $('<div class="moderate">Thank you! Your comment will show up '
+ 'once it is has been approved by a moderator.</div>');
}
// Prettify the comment rating.
comment.pretty_rating = comment.rating + ' point' +
(comment.rating == 1 ? '' : 's');
// Make a class (for displaying not yet moderated comments differently)
comment.css_class = comment.displayed ? '' : ' moderate';
// Create a div for this comment.
var context = $.extend({}, opts, comment);
var div = $(renderTemplate(commentTemplate, context));
// If the user has voted on this comment, highlight the correct arrow.
if (comment.vote) {
var direction = (comment.vote == 1) ? 'u' : 'd';
div.find('#' + direction + 'v' + comment.id).hide();
div.find('#' + direction + 'u' + comment.id).show();
}
if (opts.moderator || comment.text != '[deleted]') {
div.find('a.reply').show();
if (comment.proposal_diff)
div.find('#sp' + comment.id).show();
if (opts.moderator && !comment.displayed)
div.find('#cm' + comment.id).show();
if (opts.moderator || (opts.username == comment.username))
div.find('#dc' + comment.id).show();
}
return div;
}
/**
* A simple template renderer. Placeholders such as <%id%> are replaced
* by context['id'] with items being escaped. Placeholders such as <#id#>
* are not escaped.
*/
function renderTemplate(template, context) {
var esc = $(document.createElement('div'));
function handle(ph, escape) {
var cur = context;
$.each(ph.split('.'), function() {
cur = cur[this];
});
return escape ? esc.text(cur || "").html() : cur;
}
return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
return handle(arguments[2], arguments[1] == '%' ? true : false);
});
}
/** Flash an error message briefly. */
function showError(message) {
$(document.createElement('div')).attr({'class': 'popup-error'})
.append($(document.createElement('div'))
.attr({'class': 'error-message'}).text(message))
.appendTo('body')
.fadeIn("slow")
.delay(2000)
.fadeOut("slow");
}
/** Add a link the user uses to open the comments popup. */
$.fn.comment = function() {
return this.each(function() {
var id = $(this).attr('id').substring(1);
var count = COMMENT_METADATA[id];
var title = count + ' comment' + (count == 1 ? '' : 's');
var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
var addcls = count == 0 ? ' nocomment' : '';
$(this)
.append(
$(document.createElement('a')).attr({
href: '#',
'class': 'sphinx-comment-open' + addcls,
id: 'ao' + id
})
.append($(document.createElement('img')).attr({
src: image,
alt: 'comment',
title: title
}))
.click(function(event) {
event.preventDefault();
show($(this).attr('id').substring(2));
})
)
.append(
$(document.createElement('a')).attr({
href: '#',
'class': 'sphinx-comment-close hidden',
id: 'ah' + id
})
.append($(document.createElement('img')).attr({
src: opts.closeCommentImage,
alt: 'close',
title: 'close'
}))
.click(function(event) {
event.preventDefault();
hide($(this).attr('id').substring(2));
})
);
});
};
var opts = {
processVoteURL: '/_process_vote',
addCommentURL: '/_add_comment',
getCommentsURL: '/_get_comments',
acceptCommentURL: '/_accept_comment',
deleteCommentURL: '/_delete_comment',
commentImage: '/static/_static/comment.png',
closeCommentImage: '/static/_static/comment-close.png',
loadingImage: '/static/_static/ajax-loader.gif',
commentBrightImage: '/static/_static/comment-bright.png',
upArrow: '/static/_static/up.png',
downArrow: '/static/_static/down.png',
upArrowPressed: '/static/_static/up-pressed.png',
downArrowPressed: '/static/_static/down-pressed.png',
voting: false,
moderator: false
};
if (typeof COMMENT_OPTIONS != "undefined") {
opts = jQuery.extend(opts, COMMENT_OPTIONS);
}
var popupTemplate = '\
<div class="sphinx-comments" id="sc<%id%>">\
<p class="sort-options">\
Sort by:\
<a href="#" class="sort-option byrating">best rated</a>\
<a href="#" class="sort-option byascage">newest</a>\
<a href="#" class="sort-option byage">oldest</a>\
</p>\
<div class="comment-header">Comments</div>\
<div class="comment-loading" id="cn<%id%>">\
loading comments... <img src="<%loadingImage%>" alt="" /></div>\
<ul id="cl<%id%>" class="comment-ul"></ul>\
<div id="ca<%id%>">\
<p class="add-a-comment">Add a comment\
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
<div class="comment-markup-box" id="mb<%id%>">\
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
<code>``code``</code>, \
code blocks: <code>::</code> and an indented block after blank line</div>\
<form method="post" id="cf<%id%>" class="comment-form" action="">\
<textarea name="comment" cols="80"></textarea>\
<p class="propose-button">\
<a href="#" id="pc<%id%>" class="show-propose-change">\
Propose a change &#9657;\
</a>\
<a href="#" id="hc<%id%>" class="hide-propose-change">\
Propose a change &#9663;\
</a>\
</p>\
<textarea name="proposal" id="pt<%id%>" cols="80"\
spellcheck="false"></textarea>\
<input type="submit" value="Add comment" />\
<input type="hidden" name="node" value="<%id%>" />\
<input type="hidden" name="parent" value="" />\
</form>\
</div>\
</div>';
var commentTemplate = '\
<div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
<div class="vote">\
<div class="arrow">\
<a href="#" id="uv<%id%>" class="vote" title="vote up">\
<img src="<%upArrow%>" />\
</a>\
<a href="#" id="uu<%id%>" class="un vote" title="vote up">\
<img src="<%upArrowPressed%>" />\
</a>\
</div>\
<div class="arrow">\
<a href="#" id="dv<%id%>" class="vote" title="vote down">\
<img src="<%downArrow%>" id="da<%id%>" />\
</a>\
<a href="#" id="du<%id%>" class="un vote" title="vote down">\
<img src="<%downArrowPressed%>" />\
</a>\
</div>\
</div>\
<div class="comment-content">\
<p class="tagline comment">\
<span class="user-id"><%username%></span>\
<span class="rating"><%pretty_rating%></span>\
<span class="delta"><%time.delta%></span>\
</p>\
<div class="comment-text comment"><#text#></div>\
<p class="comment-opts comment">\
<a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
<a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
<a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
<a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
<a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
<span id="cm<%id%>" class="moderation hidden">\
<a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
</span>\
</p>\
<pre class="proposal" id="pr<%id%>">\
<#proposal_diff#>\
</pre>\
<ul class="comment-children" id="cl<%id%>"></ul>\
</div>\
<div class="clearleft"></div>\
</div>\
</div>';
var replyTemplate = '\
<li>\
<div class="reply-div" id="rd<%id%>">\
<form id="rf<%id%>">\
<textarea name="comment" cols="80"></textarea>\
<input type="submit" value="Add reply" />\
<input type="button" value="Cancel" />\
<input type="hidden" name="parent" value="<%id%>" />\
<input type="hidden" name="node" value="" />\
</form>\
</div>\
</li>';
$(document).ready(function() {
init();
});
})(jQuery);
$(document).ready(function() {
// add comment anchors for all paragraphs that are commentable
$('.sphinx-has-comment').comment();
// highlight search words in search results
$("div.context").each(function() {
var params = $.getQueryParameters();
var terms = (params.q) ? params.q[0].split(/\s+/) : [];
var result = $(this);
$.each(terms, function() {
result.highlightText(this.toLowerCase(), 'highlighted');
});
});
// directly open comment window if requested
var anchor = document.location.hash;
if (anchor.substring(0, 9) == '#comment-') {
$('#ao' + anchor.substring(9)).click();
document.location.hash = '#s' + anchor.substring(9);
}
});

764
help/fr/changelog.html Normal file
View File

@@ -0,0 +1,764 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Changelog &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="prev" title="Foire aux questions" href="faq.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Changelog</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="faq.html">Foire aux questions</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
</p>
</div>
<div class="content">
<div class="section" id="changelog">
<h1>Changelog<a class="headerlink" href="#changelog" title="Lien permanent vers ce titre"></a></h1>
<p><strong>About the word «&nbsp;crash&nbsp;»:</strong> When reading this changelog, you might be alarmed at the number of fixes
for «&nbsp;crashes&nbsp;». Be aware that when the word «&nbsp;crash&nbsp;» is used here, it refers to «&nbsp;soft crashes&nbsp;» which
dont cause the application to quit. You simply get an error window that asks you if you want to
send the crash report to Hardcoded Software. Crashes that cause the application to quit are called
«&nbsp;hard crashes&nbsp;» in this changelog.</p>
<div class="section" id="id1">
<h2>4.0.3 (2016-11-24)<a class="headerlink" href="#id1" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Add new picture cache backend: shelve</li>
<li>Make shelve picture cache backend the active one on MacOS to fix <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/394">#394</a> more
elegantly. [cocoa]</li>
<li>Remove Sparkle (auto-updates) due to technical limitations. [cocoa]</li>
</ul>
</div>
<div class="section" id="id2">
<h2>4.0.2 (2016-10-09)<a class="headerlink" href="#id2" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fix systematic crash in Picture Mode under MacOS Sierra. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/394">#394</a>)</li>
<li>No change for Linux. Just keeping version in sync.</li>
</ul>
</div>
<div class="section" id="id3">
<h2>4.0.1 (2016-08-24)<a class="headerlink" href="#id3" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Add Greek localization, by Gabriel Koutilellis. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/382">#382</a>)</li>
<li>Fix localization base path. [qt] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/378">#378</a>)</li>
<li>Fix broken load results dialog. [qt]</li>
<li>Fix crash on load results. [cocoa] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/380">#380</a>)</li>
<li>Save preferences more predictably. [qt] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/379">#379</a>)</li>
<li>Fix picture modes fuzzy block scanner threshold. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/387">#387</a>)</li>
</ul>
</div>
<div class="section" id="id4">
<h2>4.0.0 (2016-07-01)<a class="headerlink" href="#id4" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Merge Standard, Music and Picture editions in the same application!</li>
<li>Improve documentation. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/294">#294</a>)</li>
<li>Add Polish, Korean, Spanish and Dutch localizations.</li>
<li>qt: Fix wrong use_regexp option propagation to core. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/295">#295</a>)</li>
<li>qt: Fix progress window mistakenly showing up on startup. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/357">#357</a>)</li>
<li>Bump Python requirement to v3.4.</li>
<li>Bump OS X requirement to 10.8</li>
<li>Drop Windows support, maybe temporarily.
<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/2015">Details &lt;https://www.hardcoded.net/archive2015`#2015</a>-11-01&gt;`_</li>
<li>cocoa: Drop iPhoto, Aperture and iTunes support. Was unmaintained and obsolete.</li>
<li>Drop «&nbsp;Audio Contents&nbsp;» scan type. Was confusing and seldom useful.</li>
<li>Change license to GPLv3</li>
</ul>
</div>
<div class="section" id="id5">
<h2>3.9.1 (2014-10-17)<a class="headerlink" href="#id5" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed <code class="docutils literal notranslate"><span class="pre">AttributeError:</span> <span class="pre">'ComboboxModel'</span> <span class="pre">object</span> <span class="pre">has</span> <span class="pre">no</span> <span class="pre">attribute</span> <span class="pre">'reset'</span></code>. [Linux, Windows] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/254">#254</a>)</li>
<li>Fixed <code class="docutils literal notranslate"><span class="pre">PermissionError</span></code> on saving results. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/266">#266</a>)</li>
<li>Fixed a build problem introduced by Sphinx 1.2.3.</li>
<li>Updated German localisation, by Frank Weber.</li>
</ul>
</div>
<div class="section" id="id6">
<h2>3.9.0 (2014-04-19)<a class="headerlink" href="#id6" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>This is mostly a dependencies upgrade.</li>
<li>Upgraded to Python 3.3.</li>
<li>Upgraded to Qt 5.</li>
<li>Minimum Windows version is now Windows 7 64bit.</li>
<li>Minimum Ubuntu version is now 14.04.</li>
<li>Minimum OS X version is now 10.7 (Lion).</li>
<li>… But with a couple of little improvements.</li>
<li>Improved documentation.</li>
<li>Overwrite subfolders” state when setting states in folder dialog (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/248">#248</a>)</li>
<li>The error report dialog now brings the user to Github issues.</li>
</ul>
</div>
<div class="section" id="id7">
<h2>3.8.0 (2013-12-07)<a class="headerlink" href="#id7" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Disable symlink/hardlink deletion option when not relevant. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/247">#247</a>)</li>
<li>Make Cmd+A select all folders in the Folder Selection dialog. [Mac] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/228">#228</a>)</li>
<li>Make non-numeric delta comparison case insensitive. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/239">#239</a>)</li>
<li>Fix surrogate-related UnicodeEncodeError on CSV export. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/210">#210</a>)</li>
<li>Fixed crash on Dupe Count sorting with Delta + Dupes Only. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/238">#238</a>)</li>
<li>Improved documentation.</li>
<li>Important internal refactorings.</li>
<li>Dropped Ubuntu 12.04 and 12.10 support.</li>
<li>Removed the fairware dialog (<a class="reference external" href="http://www.hardcoded.net/articles/phasing-out-fairware">More Info</a>).</li>
</ul>
</div>
<div class="section" id="id8">
<h2>3.7.1 (2013-08-19)<a class="headerlink" href="#id8" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed folder scan type, which was broken in v3.7.0.</li>
</ul>
</div>
<div class="section" id="id9">
<h2>3.7.0 (2013-08-17)<a class="headerlink" href="#id9" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Improved delta values to support non-numerical values. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/213">#213</a>)</li>
<li>Improved the Re-Prioritize dialogs UI. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/224">#224</a>)</li>
<li>Added hardlink/symlink support on Windows Vista+. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/220">#220</a>)</li>
<li>Dropped 32bit support on Mac OS X.</li>
<li>Added Vietnamese localization by Phan Anh.</li>
</ul>
</div>
<div class="section" id="id10">
<h2>3.6.1 (2013-04-28)<a class="headerlink" href="#id10" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Improved «&nbsp;Make Selection Reference&nbsp;» to make it clearer. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/222">#222</a>)</li>
<li>Improved «&nbsp;Open Selected&nbsp;» to allow opening more than one file at once. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/142">#142</a>)</li>
<li>Fixed a few typos here and there. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/216">#216</a> <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/225">#225</a>)</li>
<li>Tweaked the fairware dialog (<a class="reference external" href="http://www.hardcoded.net/articles/phasing-out-fairware">More Info</a>).</li>
<li>Added Arch Linux packaging</li>
<li>Added a 64-bit build for Windows.</li>
<li>Improved Russian localization by Kyrill Detinov.</li>
<li>Improved Brazilian localization by Victor Figueiredo.</li>
</ul>
</div>
<div class="section" id="id11">
<h2>3.6.0 (2012-08-08)<a class="headerlink" href="#id11" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added «&nbsp;Export to CSV&nbsp;». (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/189">#189</a>)</li>
<li>Added «&nbsp;Replace with symlinks&nbsp;» to complement «&nbsp;Replace with hardlinks&nbsp;». [Mac, Linux] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/194">#194</a>)</li>
<li>dupeGuru now tells how many duplicates were affected after each re-prioritization operation. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/204">#204</a>)</li>
<li>Added Longest/Shortest filename criteria in the re-prioritize dialog. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/198">#198</a>)</li>
<li>Fixed result table cells which mistakenly became writable in v3.5.0. [Mac] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/203">#203</a>)</li>
<li>Fixed «&nbsp;Rename Selected&nbsp;» which was broken since v3.5.0. [Mac] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/202">#202</a>)</li>
<li>Fixed a bug where «&nbsp;Reset to Defaults&nbsp;» in the Columns menu wouldnt refresh menu items” marked state.</li>
<li>Added Brazilian localization by Victor Figueiredo.</li>
</ul>
</div>
<div class="section" id="id12">
<h2>3.5.0 (2012-06-01)<a class="headerlink" href="#id12" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added a Deletion Options panel.</li>
<li>Greatly improved memory usage for big scans.</li>
<li>Added a keybinding for the filter field. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/182">#182</a>) [Mac]</li>
<li>Upgraded minimum requirements for Ubuntu to 12.04.</li>
</ul>
</div>
<div class="section" id="id13">
<h2>3.4.1 (2012-04-14)<a class="headerlink" href="#id13" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed the «&nbsp;Folders&nbsp;» scan type. [Mac]</li>
<li>Fixed localization issues. [Windows, Linux]</li>
</ul>
</div>
<div class="section" id="id14">
<h2>3.4.0 (2012-03-29)<a class="headerlink" href="#id14" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Improved results window UI. [Windows, Linux]</li>
<li>Added a dialog to edit the Ignore List.</li>
<li>Added the ability to sort results by «&nbsp;marked&nbsp;» status.</li>
<li>Fixed «&nbsp;Open with default application&nbsp;». (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/190">#190</a>)</li>
<li>Fixed a bug where there would be a false reporting of discarded matches. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/195">#195</a>)</li>
<li>Fixed various localization glitches.</li>
<li>Fixed hard crashes on crash reporting. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/196">#196</a>)</li>
<li>Fixed bug where the details panel would show up at inconvenient places in the screen. [Windows, Linux]</li>
</ul>
</div>
<div class="section" id="id15">
<h2>3.3.3 (2012-02-01)<a class="headerlink" href="#id15" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed crash on adding some folders. [Mac OS X]</li>
<li>Added Ukrainian localization by Yuri Petrashko.</li>
</ul>
</div>
<div class="section" id="id16">
<h2>3.3.2 (2012-01-16)<a class="headerlink" href="#id16" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed random hard crashes (yeah, again). [Mac OS X]</li>
<li>Fixed crash on Export to HTML. [Windows, Linux]</li>
<li>Added Armenian localization by Hrant Ohanyan.</li>
<li>Added Russian localization by Igor Pavlov.</li>
</ul>
</div>
<div class="section" id="id17">
<h2>3.3.1 (2011-12-02)<a class="headerlink" href="#id17" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed a couple of nasty crashes.</li>
</ul>
</div>
<div class="section" id="id18">
<h2>3.3.0 (2011-11-30)<a class="headerlink" href="#id18" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added multiple-selection in folder selection dialog for a more efficient folder removal. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/179">#179</a>)</li>
<li>Fixed a crash in the prioritize dialog. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/178">#178</a>)</li>
<li>Fixed a bug where mass marking with a filter would mark more than filtered duplicates. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/181">#181</a>)</li>
<li>Fixed random hard crashes. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/183">#183</a> <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/184">#184</a>)</li>
<li>Added Czech localization by Aleš Nehyba.</li>
<li>Added Italian localization by Paolo Rossi.</li>
</ul>
</div>
<div class="section" id="id19">
<h2>3.2.1 (2011-10-02)<a class="headerlink" href="#id19" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed a couple of broken action bindings from v3.2.0.</li>
</ul>
</div>
<div class="section" id="id20">
<h2>3.2.0 (2011-09-27)<a class="headerlink" href="#id20" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added duplicate re-prioritization dialog. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/138">#138</a>)</li>
<li>Added font size preference for duplicate table. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/82">#82</a>)</li>
<li>Added Quicklook support. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/21">#21</a>)</li>
<li>Improved behavior of Mark Selected. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/139">#139</a>)</li>
<li>Improved filename sorting. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/169">#169</a>)</li>
<li>Added Chinese (Simplified) localization by Eric Dee.</li>
<li>Tweaked the fairware system.</li>
<li>Upgraded minimum requirements to OS X 10.6 and Ubuntu 11.04.</li>
</ul>
</div>
<div class="section" id="id21">
<h2>3.1.2 (2011-08-25)<a class="headerlink" href="#id21" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed a bug preventing the Folders scan from working. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/172">#172</a>)</li>
</ul>
</div>
<div class="section" id="id22">
<h2>3.1.1 (2011-08-24)<a class="headerlink" href="#id22" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added German localization by Gregor Tätzner.</li>
<li>Improved OS X Lion compatibility. [Mac OS X]</li>
<li>Made the file collection phase cancellable. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/168">#168</a>)</li>
<li>Fixed glitch in folder window upon selecting a folder state. [Windows, Linux] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/165">#165</a>)</li>
<li>Fixed a text coloring glitch in the results. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/156">#156</a>)</li>
<li>Fixed glitch in the sorting feature of the Folder column. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/161">#161</a>)</li>
<li>Make sure that saved results have the «&nbsp;.dupeguru&nbsp;» extension. [Linux] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/157">#157</a>)</li>
</ul>
</div>
<div class="section" id="id23">
<h2>3.1.0 (2011-04-16)<a class="headerlink" href="#id23" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added the «&nbsp;Folders&nbsp;» scan type. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/89">#89</a>)</li>
<li>Fixed a couple of crashes. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/140">#140</a> <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/149">#149</a>)</li>
</ul>
</div>
<div class="section" id="id24">
<h2>3.0.2 (2011-03-16)<a class="headerlink" href="#id24" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed crash after removing marked dupes. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/140">#140</a>)</li>
<li>Fixed crash on error handling. [Windows] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/144">#144</a>)</li>
<li>Fixed crash on copy/move. [Windows] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/148">#148</a>)</li>
<li>Fixed crash when launching dupeGuru from a very long folder name. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/119">#119</a>)</li>
<li>Fixed a refresh bug in directory panel. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/153">#153</a>)</li>
<li>Improved reliability of the «&nbsp;Send to Trash&nbsp;» operation. [Linux]</li>
<li>Tweaked Fairware reminders.</li>
</ul>
</div>
<div class="section" id="id25">
<h2>3.0.1 (2011-01-27)<a class="headerlink" href="#id25" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Restored the context menu which had been broken in 3.0.0. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/133">#133</a>)</li>
<li>Fixed a bug where an «&nbsp;unsaved results&nbsp;» warning would be issued on quit even with empty results. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/134">#134</a>)</li>
<li>Removed focus from the cancel button in the progress dialog to avoid accidental cancellations. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/135">#135</a>)</li>
<li>Folders added through drag and drop are added to the recent folders list. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/136">#136</a>)</li>
<li>Added a debugging mode. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/132">#132</a>)</li>
<li>Fixed french localization glitches.</li>
</ul>
</div>
<div class="section" id="id26">
<h2>3.0.0 (2011-01-24)<a class="headerlink" href="#id26" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Re-designed the UI. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/129">#129</a>)</li>
<li>Internationalized dupeGuru and localized it to french. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/32">#32</a>)</li>
<li>Changed the format of the help file. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/130">#130</a>)</li>
</ul>
</div>
<div class="section" id="id27">
<h2>2.12.3 (2011-01-01)<a class="headerlink" href="#id27" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed bug causing results to be corrupted after a scan cancellation. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/120">#120</a>)</li>
<li>Fixed crash when fetching Fairware unpaid hours. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/121">#121</a>)</li>
<li>Fixed crash when replacing files with hardlinks. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/122">#122</a>)</li>
</ul>
</div>
<div class="section" id="id28">
<h2>2.12.2 (2010-10-05)<a class="headerlink" href="#id28" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed delta column colors which were broken since 2.12.0.</li>
<li>Fixed column sorting crash. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/108">#108</a>)</li>
<li>Fixed occasional crash during scan. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/106">#106</a>)</li>
</ul>
</div>
<div class="section" id="id29">
<h2>2.12.1 (2010-09-30)<a class="headerlink" href="#id29" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Re-licensed dupeGuru to BSD and made it <a class="reference external" href="http://open.hardcoded.net/about/">Fairware</a>.</li>
</ul>
</div>
<div class="section" id="id30">
<h2>2.12.0 (2010-09-26)<a class="headerlink" href="#id30" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Improved UI with a little revamp.</li>
<li>Added the possibility to place hardlinks to references after having deleted duplicates. [Mac OS X, Linux] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/91">#91</a>)</li>
<li>Added an option to ignore duplicates hardlinking to the same file. [Mac OS X, Linux] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/92">#92</a>)</li>
<li>Added multiple selection in the «&nbsp;Add Directory&nbsp;» dialog. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/105">#105</a>)</li>
<li>Fixed a bug preventing drag &amp; drop from working in the Directories panel. [Windows, Linux]</li>
</ul>
</div>
<div class="section" id="id31">
<h2>2.11.1 (2010-08-26)<a class="headerlink" href="#id31" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed HTML exporting which was broken in 2.11.0.</li>
</ul>
</div>
<div class="section" id="id32">
<h2>2.11.0 (2010-08-18)<a class="headerlink" href="#id32" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added the ability to save results (and reload them) at arbitrary locations.</li>
<li>Improved the way reference files in dupe groups are chosen. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/15">#15</a>)</li>
<li>Remember size/position of all windows between launches. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/102">#102</a>)</li>
<li>Fixed a bug sometimes preventing dupeGuru from reloading previous results.</li>
<li>Fixed a bug sometimes causing the progress dialog to be stuck there. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/103">#103</a>)</li>
<li>Removed the Creation Date column, which wasnt displaying the correct value anyway. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/101">#101</a>)</li>
</ul>
</div>
<div class="section" id="id33">
<h2>2.10.1 (2010-07-15)<a class="headerlink" href="#id33" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed a couple of crashes. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/95">#95</a>, <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/97">#97</a>, <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/100">#100</a>)</li>
</ul>
</div>
<div class="section" id="id34">
<h2>2.10.0 (2010-04-13)<a class="headerlink" href="#id34" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Improved error messages when files cant be sent to trash, moved or copied.</li>
<li>Added a custom command invocation action. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/12">#12</a>)</li>
<li>Filters are now applied on whole paths. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/4">#4</a>)</li>
</ul>
</div>
<div class="section" id="id35">
<h2>2.9.2 (2010-02-10)<a class="headerlink" href="#id35" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>dupeGuru is now 64-bit on Mac OS X!</li>
<li>Fixed a crash upon quitting when support folder is not present. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/83">#83</a>)</li>
<li>Fixed a crash during sorting. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/85">#85</a>)</li>
<li>Fixed selection glitches, especially while renaming. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/93">#93</a>)</li>
</ul>
</div>
<div class="section" id="id36">
<h2>2.9.1 (2010-01-13)<a class="headerlink" href="#id36" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Improved memory usage for Contents scans. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/75">#75</a>)</li>
<li>Improved scanning speed when ref directories are involved. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/77">#77</a>)</li>
<li>Show a message dialog at the end of the scan if no duplicates are found. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/81">#81</a>)</li>
<li>Fixed a bug sometimes causing the small files threshold pref to be ignored. [Mac OS X] (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/75">#75</a>)</li>
</ul>
</div>
<div class="section" id="id37">
<h2>2.9.0 (2009-11-03)<a class="headerlink" href="#id37" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Significantly improved speed and memory usage of big contents-based scans.</li>
<li>Added drag &amp; drop support in the Directories panel. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/9">#9</a>)</li>
<li>Fixed a bug causing dupeGuru to be confused if a scanned file was moved during the scan. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/72">#72</a>)</li>
<li>Dropped support for Mac OS X 10.4 (Tiger)</li>
</ul>
</div>
<div class="section" id="id38">
<h2>2.8.2 (2009-10-14)<a class="headerlink" href="#id38" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Improved directory selection in the Directories panel (Windows). (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/56">#56</a>)</li>
<li>Fixed a bug preventing dupeGuru from starting on certain machines (Windows). (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/68">#68</a>)</li>
<li>Fixed a crash during very big scans. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/70">#70</a>)</li>
</ul>
</div>
<div class="section" id="id39">
<h2>2.8.1 (2009-10-02)<a class="headerlink" href="#id39" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed crash with filtering when regular expressions were enabled. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/60">#60</a>)</li>
<li>Fixed crash when setting directories” state. (Mac OS X) (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/66">#66</a>)</li>
<li>Fixed crash with Make Reference when certain filters are applied. (Mac OS X) (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/55">#55</a>)</li>
<li>Improved error handling during delete/move/copy actions. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/62">#62</a> <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/65">#65</a>)</li>
</ul>
</div>
<div class="section" id="id40">
<h2>2.8.0 (2009-09-07)<a class="headerlink" href="#id40" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Added support for all kinds of bundle (not just applications) (Mac OS X) (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/11">#11</a>)</li>
<li>Re-introduced the Export to XHTML feature to Windows. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/14">#14</a>)</li>
<li>Improved Export to XHTML speed. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/14">#14</a>)</li>
<li>Improved Contents scanning speed for large files. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/33">#33</a>)</li>
<li>Improved the grouping algorithm to reduce the number of discarded files in non-exact scans. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/51">#51</a>)</li>
<li>Stopped showing the same file on the 2 sides of the details panel when a ref file is selected. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/50">#50</a>)</li>
<li>Fixed crashes in the Directories panel. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/46">#46</a>)</li>
</ul>
</div>
<div class="section" id="id41">
<h2>2.7.3 (2009-06-20)<a class="headerlink" href="#id41" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><dl class="first docutils">
<dt>Fixed bugs with selection being jumpy during «&nbsp;Make Reference&nbsp;» actions and Power Marker</dt>
<dd>switches. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/3">#3</a>)</dd>
</dl>
</li>
<li>Fixed crash happening when a file with non-roman characters couldnt be analyzed. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/30">#30</a>)</li>
<li>Fixed crash sometimes happening during the file collection phase in scanning. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/38">#38</a>)</li>
<li>Restored double-click and right-click behavior lost in the PyQt move (Windows). (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/34">#34</a> <a class="reference external" href="https://github.com/hsoft/dupeguru/issues/35">#35</a>)</li>
</ul>
</div>
<div class="section" id="id42">
<h2>2.7.2 (2009-06-10)<a class="headerlink" href="#id42" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed an occasional crash on Copy/Move operations. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/16">#16</a>)</li>
<li>Added automatic exclusion for sensible folders (like system folders). (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/20">#20</a>)</li>
<li>Fixed an occasional crash when application files were part of the results (Mac OS X). (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/25">#25</a>)</li>
</ul>
</div>
<div class="section" id="id43">
<h2>2.7.1 (2009-05-29)<a class="headerlink" href="#id43" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Fixed a bug causing crashes when having application files in the results.</li>
<li>Fixed a bug causing a GUI freeze at the beginning of a scan with a lot of files.</li>
<li>Fixed a bug that sometimes caused a crash when an action was cancelled, and then started again.</li>
</ul>
</div>
<div class="section" id="id44">
<h2>2.7.0 (2009-05-25)<a class="headerlink" href="#id44" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Converted the Windows GUI to Qt.</li>
<li>Improved the reliability of the scanning process.</li>
</ul>
</div>
<div class="section" id="id45">
<h2>2.6.1 (2009-03-27)<a class="headerlink" href="#id45" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> an occasional crash caused by permission issues.</li>
<li><dl class="first docutils">
<dt><strong>Fixed</strong> a bug where the «&nbsp;X discarded&nbsp;» notice would show a too large number of discarded</dt>
<dd>duplicates.</dd>
</dl>
</li>
</ul>
</div>
<div class="section" id="id46">
<h2>2.6.0 (2008-09-10)<a class="headerlink" href="#id46" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> a small file threshold preference.</li>
<li><strong>Added</strong> a notice in the status bar when matches were discarded during the scan.</li>
<li><strong>Improved</strong> duplicate prioritization (smartly chooses which file you will keep).</li>
<li><strong>Improved</strong> scan progress feedback.</li>
<li><strong>Improved</strong> responsiveness of the user interface for certain actions.</li>
</ul>
</div>
<div class="section" id="id47">
<h2>2.5.4 (2008-08-10)<a class="headerlink" href="#id47" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> the speed of results loading and saving.</li>
<li><strong>Fixed</strong> a crash sometimes occurring during duplicate deletion.</li>
</ul>
</div>
<div class="section" id="id48">
<h2>2.5.3 (2008-07-08)<a class="headerlink" href="#id48" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> unicode handling for filenames. dupeGuru will now find a lot more duplicates if your files have non-ascii characters in it.</li>
<li><strong>Fixed</strong> «&nbsp;Clear Ignore List&nbsp;» crash in Windows.</li>
</ul>
</div>
<div class="section" id="id49">
<h2>2.5.2 (2008-01-10)<a class="headerlink" href="#id49" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> the handling of low memory situations.</li>
<li><strong>Improved</strong> the directory panel. The «&nbsp;Remove&nbsp;» button changes to «&nbsp;Put Back&nbsp;» when an excluded directory is selected.</li>
<li><strong>Improved</strong> scan, delete and move speed in situations where there were a lot of duplicates.</li>
<li><strong>Fixed</strong> occasional crashes when moving bundles (such as .app files).</li>
<li><strong>Fixed</strong> occasional crashes when moving a lot of files at once.</li>
</ul>
</div>
<div class="section" id="id50">
<h2>2.5.1 (2007-11-22)<a class="headerlink" href="#id50" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> the «&nbsp;Remove empty folders&nbsp;» option.</li>
<li><strong>Fixed</strong> results load/save issues.</li>
<li><strong>Fixed</strong> occasional status bar inaccuracies when the results are filtered.</li>
</ul>
</div>
<div class="section" id="id51">
<h2>2.5.0 (2007-09-15)<a class="headerlink" href="#id51" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> post scan filtering.</li>
<li><strong>Fixed</strong> issues with the rename feature under Windows</li>
<li><strong>Fixed</strong> some user interface annoyances under Windows</li>
</ul>
</div>
<div class="section" id="id52">
<h2>2.4.8 (2007-04-14)<a class="headerlink" href="#id52" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> UI responsiveness (using threads) under Mac OS X.</li>
<li><strong>Improved</strong> result load/save speed and memory usage.</li>
</ul>
</div>
<div class="section" id="id53">
<h2>2.4.7 (2007-03-10)<a class="headerlink" href="#id53" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a «&nbsp;bad file descriptor&nbsp;» error occasionally popping up.</li>
<li><strong>Fixed</strong> a bug with non-latin directory names.</li>
</ul>
</div>
<div class="section" id="id54">
<h2>2.4.6 (2007-02-10)<a class="headerlink" href="#id54" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> Re-orderable columns. In fact, I re-added the feature which was lost in the C# conversion in 2.4.0 (Windows).</li>
<li><strong>Changed</strong> 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>
<li><strong>Fixed</strong> a bug with all the Delete/Move/Copy actions with certain kinds of files.</li>
</ul>
</div>
<div class="section" id="id55">
<h2>2.4.5 (2007-01-11)<a class="headerlink" href="#id55" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a bug with the Move action.</li>
</ul>
</div>
<div class="section" id="id56">
<h2>2.4.4 (2007-01-07)<a class="headerlink" href="#id56" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a «&nbsp;ghosting&nbsp;» bug. Dupes deleted by dupeGuru would sometimes come back in subsequent scans (Windows).</li>
<li><strong>Fixed</strong> bugs sometimes making dupeGuru crash when marking a dupe (Windows).</li>
<li><strong>Fixed</strong> some minor visual glitches (Windows).</li>
</ul>
</div>
<div class="section" id="id57">
<h2>2.4.3 (2006-12-08)<a class="headerlink" href="#id57" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a mishandling of «&nbsp;.app&nbsp;» files (OS X).</li>
<li><strong>Fixed</strong> a bug preventing files from «&nbsp;reference&nbsp;» directories to be displayed in blue in the results (Windows).</li>
<li><strong>Fixed</strong> a bug preventing some files to be sent to the recycle bin (Windows).</li>
<li><strong>Fixed</strong> a bug in the packaging preventing certain Windows configurations to start dupeGuru at all.</li>
</ul>
</div>
<div class="section" id="id58">
<h2>2.4.2 (2006-11-18)<a class="headerlink" href="#id58" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a bug with directory states.</li>
</ul>
</div>
<div class="section" id="id59">
<h2>2.4.1 (2006-11-15)<a class="headerlink" href="#id59" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a bug causing the ignore list not to be saved.</li>
<li><strong>Fixed</strong> a bug sometimes making delete and move operations stall.</li>
</ul>
</div>
<div class="section" id="id60">
<h2>2.4.0 (2006-11-10)<a class="headerlink" href="#id60" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Changed</strong> the Windows interface. It is now .NET based.</li>
<li><strong>Added</strong> an auto-update feature to the windows version.</li>
<li><strong>Changed</strong> the way power marking works. It is now a mode instead of a separate window.</li>
<li><strong>Changed</strong> the «&nbsp;Size (MB)&nbsp;» column for a «&nbsp;Size (KB)&nbsp;» column. The values are now «&nbsp;ceiled&nbsp;» instead of rounded. Therefore, a size «&nbsp;0&nbsp;» is now really 0 bytes, not just a value too small to be rounded up. It is also the case for delta values.</li>
<li><strong>Removed</strong> the min word length/count options. These came from Mp3 Filter, and just arent used anymore. Word weighting does pretty much the same job.</li>
</ul>
</div>
<div class="section" id="id61">
<h2>2.3.4 (2006-11-07)<a class="headerlink" href="#id61" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> speed and memory usage of the scanning engine, again. Does it mean there was a lot of improvements to be made? Nah…</li>
</ul>
</div>
<div class="section" id="id62">
<h2>2.3.3 (2006-11-02)<a class="headerlink" href="#id62" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> speed and memory usage of the scanning engine, especially when the scan results in a lot of duplicates.</li>
<li>Now I wonder if Sparkle is going to work well…</li>
</ul>
</div>
<div class="section" id="id63">
<h2>2.3.2 (2006-10-16)<a class="headerlink" href="#id63" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> an auto-update feature in the Mac OS X version (with Sparkle).</li>
<li><strong>Fixed</strong> a bug preventing some duplicate reports to be created correctly under Windows.</li>
</ul>
</div>
<div class="section" id="id64">
<h2>2.3.1 (2006-10-02)<a class="headerlink" href="#id64" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a bug preventing some duplicates to be found, especially when scanning lots of files.</li>
</ul>
</div>
<div class="section" id="id65">
<h2>2.3.0 (2006-09-22)<a class="headerlink" href="#id65" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> XHTML export feature.</li>
</ul>
</div>
<div class="section" id="id66">
<h2>2.2.10 (2006-08-31)<a class="headerlink" href="#id66" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> sticky columns.</li>
<li><strong>Fixed</strong> an issue with file caching between scans.</li>
<li><strong>Fixed</strong> an issue preventing some duplicates from being deleted/moved/copied.</li>
</ul>
</div>
<div class="section" id="id67">
<h2>2.2.9 (2006-08-27)<a class="headerlink" href="#id67" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> an issue with ignore list and unicode.</li>
<li><strong>Fixed</strong> an issue with file attribute fetching sometimes causing dupeGuru to crash.</li>
<li><strong>Fixed</strong> an issue in the directories panel under Windows.</li>
</ul>
</div>
<div class="section" id="id68">
<h2>2.2.8 (2006-08-17)<a class="headerlink" href="#id68" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> an issue in the duplicate seeking engine preventing some duplicates to be found.</li>
</ul>
</div>
<div class="section" id="id69">
<h2>2.2.7 (2006-08-12)<a class="headerlink" href="#id69" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> unicode support.</li>
<li><strong>Improved</strong> the «&nbsp;Reveal in Finder&nbsp;» («&nbsp;Open Containing Folder&nbsp;» in Windows) feature so it selects the file in the folder it opens.</li>
</ul>
</div>
<div class="section" id="id70">
<h2>2.2.6 (2006-08-07)<a class="headerlink" href="#id70" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> the ignore list system.</li>
<li>dupeGuru is now a Universal application on Mac OS X.</li>
</ul>
</div>
<div class="section" id="id71">
<h2>2.2.5 (2006-07-26)<a class="headerlink" href="#id71" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> application (.app) dupe detection on Mac OS X.</li>
<li><strong>Fixed</strong> an issue that occasionally made dupeGuru crash on startup.</li>
</ul>
</div>
<div class="section" id="id72">
<h2>2.2.4 (2006-06-27)<a class="headerlink" href="#id72" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> an issue with Move and Copy features.</li>
</ul>
</div>
<div class="section" id="id73">
<h2>2.2.3 (2006-06-15)<a class="headerlink" href="#id73" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> duplicate scanning speed.</li>
<li><strong>Added</strong> a warning that a file couldnt be renamed if a file with the same name already exists.</li>
</ul>
</div>
<div class="section" id="id74">
<h2>2.2.2 (2006-06-07)<a class="headerlink" href="#id74" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> «&nbsp;Rename Selected&nbsp;» feature.</li>
<li><strong>Fixed</strong> some minor issues with «&nbsp;Reload Last Results&nbsp;» feature.</li>
<li><strong>Fixed</strong> ignore list issues.</li>
</ul>
</div>
<div class="section" id="id75">
<h2>2.2.1 (2006-05-22)<a class="headerlink" href="#id75" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> occasional progress bar woes under Windows.</li>
<li><strong>Fixed</strong> a bug in the registration system under Windows.</li>
<li>Nothing has been changed in the Mac OS X version, but I want to keep version in sync.</li>
</ul>
</div>
<div class="section" id="id76">
<h2>2.2.0 (2006-05-10)<a class="headerlink" href="#id76" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> destination path re-creation options.</li>
<li><strong>Added</strong> an ignore list.</li>
<li><strong>Changed</strong> the main icon.</li>
<li><strong>Improved</strong> dramatically the delta values feature.</li>
</ul>
</div>
<div class="section" id="id77">
<h2>2.1.2 (2006-04-18)<a class="headerlink" href="#id77" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> the «&nbsp;Match similar words&nbsp;» option.</li>
<li><strong>Fixed</strong> Power marking issues under Mac.</li>
</ul>
</div>
<div class="section" id="id78">
<h2>2.1.1 (2006-04-14)<a class="headerlink" href="#id78" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> the «&nbsp;Display delta values&nbsp;» option.</li>
<li><strong>Improved</strong> Power marking sorting speed under Mac.</li>
<li><strong>Fixed</strong> Power marking sorting issues.</li>
</ul>
</div>
<div class="section" id="id79">
<h2>2.1.0 (2006-04-03)<a class="headerlink" href="#id79" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Added</strong> the Power Marker feature.</li>
<li><strong>Fixed</strong> a column sorting bug. The results would sometimes lose their sort order.</li>
<li><strong>Fixed</strong> a bug with the Make Reference feature. The results sometimes wasnt correctly refreshed after the reference switch.</li>
</ul>
</div>
<div class="section" id="id80">
<h2>2.0.1 (2006-03-23)<a class="headerlink" href="#id80" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> an issue occasionally occurring when trying to reload results from removable media that is no longer present.</li>
</ul>
</div>
<div class="section" id="id81">
<h2>2.0.0 (2006-03-17)<a class="headerlink" href="#id81" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Complete rewrite.</li>
<li>Now runs on Mac OS X.</li>
</ul>
</div>
<div class="section" id="id82">
<h2>1.0.0 (2004-09-24)<a class="headerlink" href="#id82" title="Lien permanent vers ce titre"></a></h2>
<ul class="simple">
<li>Initial release.</li>
</ul>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="faq.html">Foire aux questions</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

164
help/fr/faq.html Normal file
View File

@@ -0,0 +1,164 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Foire aux questions &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Changelog" href="changelog.html" />
<link rel="prev" title="Re-Prioritizing duplicates" href="reprioritize.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Foire aux questions</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="reprioritize.html">Re-Prioritizing duplicates</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="changelog.html">Changelog</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="foire-aux-questions">
<h1><a class="toc-backref" href="#id1">Foire aux questions</a><a class="headerlink" href="#foire-aux-questions" title="Lien permanent vers ce titre"></a></h1>
<div class="contents topic" id="sommaire">
<p class="topic-title first">Sommaire</p>
<ul class="simple">
<li><a class="reference internal" href="#foire-aux-questions" id="id1">Foire aux questions</a><ul>
<li><a class="reference internal" href="#qu-est-ce-que-dupeguru" id="id2">Quest-ce que dupeGuru?</a></li>
<li><a class="reference internal" href="#en-quoi-est-il-mieux-que-les-autres-applications" id="id3">En quoi est-il mieux que les autres applications?</a></li>
<li><a class="reference internal" href="#dupeguru-est-il-securitaire" id="id4">dupeGuru est-il sécuritaire?</a></li>
<li><a class="reference internal" href="#quelles-sont-les-limitation-demo-de-dupeguru" id="id5">Quelles sont les limitation démo de dupeGuru?</a></li>
<li><a class="reference internal" href="#je-ne-peux-pas-marquer-le-doublons-que-je-veux-effacer-pourquoi" id="id6">Je ne peux pas marquer le doublons que je veux effacer, pourquoi?</a></li>
<li><a class="reference internal" href="#j-ai-un-dossier-duquel-je-ne-veut-jamais-effacer-de-fichier" id="id7">Jai un dossier duquel je ne veut jamais effacer de fichier.</a></li>
<li><a class="reference internal" href="#que-veut-dire-x-hors-groupe-dans-la-barre-de-statut" id="id8">Que veut dire “(X hors-groupe)” dans la barre de statut?</a></li>
<li><a class="reference internal" href="#je-veux-marquer-tous-les-fichiers-provenant-d-un-certain-dossier-quoi-faire" id="id9">Je veux marquer tous les fichiers provenant dun certain dossier. Quoi faire?</a></li>
<li><a class="reference internal" href="#j-essaie-d-envoyer-mes-doublons-a-la-corbeille-mais-dupeguru-me-dit-que-je-ne-peux-pas-pourquoi" id="id10">Jessaie denvoyer mes doublons à la corbeille, mais dupeGuru me dit que je ne peux pas. Pourquoi?</a></li>
<li><a class="reference internal" href="#ou-sont-les-fichiers-de-configuration-de-dupeguru" id="id11">Où sont les fichiers de configuration de dupeGuru?</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="qu-est-ce-que-dupeguru">
<h2><a class="toc-backref" href="#id2">Quest-ce que dupeGuru?</a><a class="headerlink" href="#qu-est-ce-que-dupeguru" title="Lien permanent vers ce titre"></a></h2>
</div>
<div class="section" id="en-quoi-est-il-mieux-que-les-autres-applications">
<h2><a class="toc-backref" href="#id3">En quoi est-il mieux que les autres applications?</a><a class="headerlink" href="#en-quoi-est-il-mieux-que-les-autres-applications" title="Lien permanent vers ce titre"></a></h2>
<p>dupeGuru est hautement configurable. Vous pouvez changer les options de comparaison afin de trouver
exactement le type de doublons recherché. Plus de détails sur la
<a class="reference internal" href="preferences.html"><span class="doc">page de préférences</span></a>.</p>
</div>
<div class="section" id="dupeguru-est-il-securitaire">
<h2><a class="toc-backref" href="#id4">dupeGuru est-il sécuritaire?</a><a class="headerlink" href="#dupeguru-est-il-securitaire" title="Lien permanent vers ce titre"></a></h2>
<p>Oui. dupeGuru a été conçu afin dêtre certain que vous conserviez toujours au moins une copie des
doublons que vous trouvez. Il est aussi possible de configurer dupeGuru afin de déterminer certains
dossier à partir desquels aucun fichier ne sera effacé.</p>
</div>
<div class="section" id="quelles-sont-les-limitation-demo-de-dupeguru">
<h2><a class="toc-backref" href="#id5">Quelles sont les limitation démo de dupeGuru?</a><a class="headerlink" href="#quelles-sont-les-limitation-demo-de-dupeguru" title="Lien permanent vers ce titre"></a></h2>
<p>En mode de démonstration, les actions sont limitées à 10 doublons par session. En mode <a class="reference external" href="http://open.hardcoded.net/about/">Fairware</a>,
il ny a pas de limitation.</p>
</div>
<div class="section" id="je-ne-peux-pas-marquer-le-doublons-que-je-veux-effacer-pourquoi">
<h2><a class="toc-backref" href="#id6">Je ne peux pas marquer le doublons que je veux effacer, pourquoi?</a><a class="headerlink" href="#je-ne-peux-pas-marquer-le-doublons-que-je-veux-effacer-pourquoi" title="Lien permanent vers ce titre"></a></h2>
<p>Tour groupe de doublons contient au moins un fichier dit «&nbsp;référence&nbsp;» et ce fichier ne peut pas être
effacé. Par contre, ce que vous pouvez faire cest de le remplacer par un autre fichier du groupe.
Pour ce faire, sélectionnez un fichier du groupe et cliquez sur laction <strong>Transformer sélectionnés
en références</strong>.</p>
<p>Notez que si le fichier référence du groupe vient dun dossier qui a été défini comme dossier
référence, ce fichier ne peut pas être déplacé de sa position de référence du groupe.</p>
</div>
<div class="section" id="j-ai-un-dossier-duquel-je-ne-veut-jamais-effacer-de-fichier">
<h2><a class="toc-backref" href="#id7">Jai un dossier duquel je ne veut jamais effacer de fichier.</a><a class="headerlink" href="#j-ai-un-dossier-duquel-je-ne-veut-jamais-effacer-de-fichier" title="Lien permanent vers ce titre"></a></h2>
<p>Si vous faites un scan avec un dossier qui ne doit servir que de référence pour effacer des doublons
dans un autre dossier, changez le type de dossier à «&nbsp;Référence&nbsp;» dans la fenêtre de
<a class="reference internal" href="folders.html"><span class="doc">sélection de dossiers</span></a>.</p>
</div>
<div class="section" id="que-veut-dire-x-hors-groupe-dans-la-barre-de-statut">
<h2><a class="toc-backref" href="#id8">Que veut dire “(X hors-groupe)” dans la barre de statut?</a><a class="headerlink" href="#que-veut-dire-x-hors-groupe-dans-la-barre-de-statut" title="Lien permanent vers ce titre"></a></h2>
<p>Lors de certaines comparaisons, il est impossible de correctement grouper les paires de doublons et
certaines paires doivent être retirées des résultats pour être certain de ne pas effacer de faux
doublons. Example: Nous avons 3 fichiers, A, B et C. Nous les comparons en utilisant un petit seuil
de filtre. La comparaison détermine que A est un double de B, A est un double C, mais que B nest
<strong>pas</strong> un double de C. dupeGuru a ici un problème. Il ne peut pas créer un groupe avec A, B et C.
Il décide donc de jeter C hors du groupe. Cest de là que vient la notice “(X hors-groupe)”.</p>
<p>Cette notice veut dire que si jamais vous effacez tout les doubles contenus dans vos résultats et
que vous faites un nouveau scan, vous pourriez avoir de nouveaux résultats.</p>
</div>
<div class="section" id="je-veux-marquer-tous-les-fichiers-provenant-d-un-certain-dossier-quoi-faire">
<h2><a class="toc-backref" href="#id9">Je veux marquer tous les fichiers provenant dun certain dossier. Quoi faire?</a><a class="headerlink" href="#je-veux-marquer-tous-les-fichiers-provenant-d-un-certain-dossier-quoi-faire" title="Lien permanent vers ce titre"></a></h2>
<p>Activez loption <a class="reference internal" href="results.html"><span class="doc">Ne pas montrer les références</span></a> et cliquez sur la colonne Dossier
afin de trier par dossier. Il sera alors facile de sélectionner tous les fichiers de ce dossier
(avec Shift+selection) puis ensuite dappuyer sur Espace pour marquer les fichiers sélectionnés.</p>
</div>
<div class="section" id="j-essaie-d-envoyer-mes-doublons-a-la-corbeille-mais-dupeguru-me-dit-que-je-ne-peux-pas-pourquoi">
<h2><a class="toc-backref" href="#id10">Jessaie denvoyer mes doublons à la corbeille, mais dupeGuru me dit que je ne peux pas. Pourquoi?</a><a class="headerlink" href="#j-essaie-d-envoyer-mes-doublons-a-la-corbeille-mais-dupeguru-me-dit-que-je-ne-peux-pas-pourquoi" title="Lien permanent vers ce titre"></a></h2>
<p>La plupart du temps, la raison pour laquelle dupeGuru ne peut pas envoyer des fichiers à la
corbeille est un problème de permissions. Vous devez avoir une permission décrire dans les fichiers
que vous voulez effacer. Si vous nêtes pas familiers avec la ligne de commande, vous pouvez
utiliser des outils comme <a class="reference external" href="http://www.lagentesoft.com/batchmod/index.html">BatChmod</a> pour modifier vos permissions.</p>
<p>Si malgré cela vous ne pouvez toujours pas envoyer vos fichiers à la corbeille, essayez loption
«&nbsp;Supprimer les fichiers directement&nbsp;» qui vous est offerte lorsque vous procédez à leffacement des
doublons. Cette option fera en sorte de supprimer directement les fichiers sans les faire passer par
la corbeille. Dans certains cas, ça règle le problème.</p>
<p>Dans le pire des cas, <a class="reference external" href="http://www.hardcoded.net/support">contactez le support HS</a>, on trouvera bien.</p>
</div>
<div class="section" id="ou-sont-les-fichiers-de-configuration-de-dupeguru">
<h2><a class="toc-backref" href="#id11">Où sont les fichiers de configuration de dupeGuru?</a><a class="headerlink" href="#ou-sont-les-fichiers-de-configuration-de-dupeguru" title="Lien permanent vers ce titre"></a></h2>
<p>Si, pour une raison ou une autre, vous voulez effacer ou modifier les fichiers générés par dupeGuru,
voici où ils sont:</p>
<ul class="simple">
<li>Linux: <code class="docutils literal notranslate"><span class="pre">~/.local/share/data/Hardcoded</span> <span class="pre">Software/dupeGuru</span></code></li>
<li>Mac OS X: <code class="docutils literal notranslate"><span class="pre">~/Library/Application</span> <span class="pre">Support/dupeGuru</span></code></li>
<li>Windows: <code class="docutils literal notranslate"><span class="pre">\Users\&lt;username&gt;\AppData\Local\Hardcoded</span> <span class="pre">Software\dupeGuru</span></code></li>
</ul>
<p>Les fichiers de préférences sont ailleurs:</p>
<ul class="simple">
<li>Linux: <code class="docutils literal notranslate"><span class="pre">~/.config/Hardcoded</span> <span class="pre">Software/dupeGuru.conf</span></code></li>
<li>Mac OS X: Dans le système <code class="docutils literal notranslate"><span class="pre">defaults</span></code> sous <code class="docutils literal notranslate"><span class="pre">com.hardcoded-software.dupeguru</span></code></li>
<li>Windows: Dans le Registre, sous <code class="docutils literal notranslate"><span class="pre">HKEY_CURRENT_USER\Software\Hardcoded</span> <span class="pre">Software\dupeGuru</span></code></li>
</ul>
<p>Pour la Music Edition et Picture Edition, remplacer «&nbsp;dupeGuru&nbsp;» par «&nbsp;dupeGuru Music Edition&nbsp;» et
«&nbsp;dupeGuru Picture Edition&nbsp;», respectivement.</p>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="reprioritize.html">Re-Prioritizing duplicates</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="changelog.html">Changelog</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

79
help/fr/folders.html Normal file
View File

@@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sélection de dossiers &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Préférences" href="preferences.html" />
<link rel="prev" title="Démarrage rapide" href="quick_start.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Sélection de dossiers</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="quick_start.html">Démarrage rapide</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="preferences.html">Préférences</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="selection-de-dossiers">
<h1>Sélection de dossiers<a class="headerlink" href="#selection-de-dossiers" title="Lien permanent vers ce titre"></a></h1>
<p>La première fenêtre qui apparaît lorsque dupeGuru démarre est la fenêtre de sélection de dossiers à scanner. Elle détermine la liste des dossiers qui seront scannés lorsque vous cliquerez sur <strong>Scan</strong>.</p>
<p>Pour ajouter un dossier, cliquez sur le bouton <strong>+</strong>. Si vous avez ajouté des dossiers dans le passé, un menu vous permettra de rapidement choisir un de ceux ci. Autrement, il vous sera demandé dindiquer le dossier à ajouter.</p>
<p>Vous pouvez aussi utiliser le drag &amp; drop pour ajouter des dossiers à la liste.</p>
<p>Pour retirer un dossier, sélectionnez le et cliquez sur <strong>-</strong>. Si le dossier sélectionné est un sous-dossier, son type changera pour <strong>exclus</strong> (voyez plus bas) au lieu dêtre retiré.</p>
<div class="section" id="types-de-dossiers">
<h2>Types de dossiers<a class="headerlink" href="#types-de-dossiers" title="Lien permanent vers ce titre"></a></h2>
<p>Tout dossier ajouté à la liste est dun type parmis ces trois:</p>
<ul class="simple">
<li><strong>Normal:</strong> Les doublons trouvés dans ce dossier peuvent être effacés.</li>
<li><strong>Reference:</strong> Les doublons trouvés dans ce dossier ne peuvent <strong>pas</strong> être effacés. Les fichiers provenant de ce dossier ne peuvent quêtre en position «&nbsp;Référence&nbsp;» dans le groupes de doublons.</li>
<li><strong>Excluded:</strong> Les fichiers provenant de ce dossier ne sont pas scannés.</li>
</ul>
<p>Le type par défaut pour un dossier est, bien entendu, <strong>Normal</strong>. Vous pouvez utiliser le type <strong>Référence</strong> pour les dossiers desquels vous ne voulez pas effacer de fichiers.</p>
<p>Le type dun dossier sapplique à ses sous-dossiers, excepté si un sous-dossier a un autre type explicitement défini.</p>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="quick_start.html">Démarrage rapide</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="preferences.html">Préférences</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

58
help/fr/genindex.html Normal file
View File

@@ -0,0 +1,58 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="#" />
<link rel="search" title="Recherche" href="search.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Index</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
<a class="uplink" href="index.html">Contenu</a>
</p>
</div>
<div class="content">
<h1 id="index">Index</h1>
<div class="genindex-jumpbox">
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
<a class="uplink" href="index.html">Contenu</a>
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

106
help/fr/index.html Normal file
View File

@@ -0,0 +1,106 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Aide dupeGuru &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Démarrage rapide" href="quick_start.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="#">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Aide dupeGuru</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
<a class="uplink" href="#">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="quick_start.html">Démarrage rapide</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="aide-dupeguru">
<h1>Aide dupeGuru<a class="headerlink" href="#aide-dupeguru" title="Lien permanent vers ce titre"></a></h1>
<p>Bien que dupeGuru puisse être utilisé sans lire laide, une telle lecture vous permettra de bien comprendre comment lapplication fonctionne. Pour un guide rapide pour une première utilisation, référez vous à la section <a class="reference internal" href="quick_start.html"><span class="doc">Démarrage Rapide</span></a>.</p>
<p>Cest toujours une bonne idée de garder dupeGuru à jour. Vous pouvez télécharger la dernière version sur sa <a class="reference external" href="https://www.hardcoded.net/dupeguru">homepage</a>.</p>
<p>Contents:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="quick_start.html">Démarrage rapide</a></li>
<li class="toctree-l1"><a class="reference internal" href="folders.html">Sélection de dossiers</a><ul>
<li class="toctree-l2"><a class="reference internal" href="folders.html#types-de-dossiers">Types de dossiers</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="preferences.html">Préférences</a></li>
<li class="toctree-l1"><a class="reference internal" href="results.html">Résultats</a><ul>
<li class="toctree-l2"><a class="reference internal" href="results.html#a-propos-des-groupes-de-doublons">À propos des groupes de doublons</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#verifier-les-resultats">Vérifier les résultats</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#marquer-et-selectionner">Marquer et sélectionner</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#ne-pas-montrer-les-references">Ne pas montrer les références</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#montrer-les-valeurs-en-tant-que-delta">Montrer les valeurs en tant que delta</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#les-deux-modes-ensemble">Les deux modes ensemble</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#filtrer-les-resultats">Filtrer les résultats</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#actions">Actions</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#options-de-suppression">Options de suppression</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="reprioritize.html">Re-Prioritizing duplicates</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">Foire aux questions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="faq.html#qu-est-ce-que-dupeguru">Quest-ce que dupeGuru?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#en-quoi-est-il-mieux-que-les-autres-applications">En quoi est-il mieux que les autres applications?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#dupeguru-est-il-securitaire">dupeGuru est-il sécuritaire?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#quelles-sont-les-limitation-demo-de-dupeguru">Quelles sont les limitation démo de dupeGuru?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#je-ne-peux-pas-marquer-le-doublons-que-je-veux-effacer-pourquoi">Je ne peux pas marquer le doublons que je veux effacer, pourquoi?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#j-ai-un-dossier-duquel-je-ne-veut-jamais-effacer-de-fichier">Jai un dossier duquel je ne veut jamais effacer de fichier.</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#que-veut-dire-x-hors-groupe-dans-la-barre-de-statut">Que veut dire “(X hors-groupe)” dans la barre de statut?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#je-veux-marquer-tous-les-fichiers-provenant-d-un-certain-dossier-quoi-faire">Je veux marquer tous les fichiers provenant dun certain dossier. Quoi faire?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#j-essaie-d-envoyer-mes-doublons-a-la-corbeille-mais-dupeguru-me-dit-que-je-ne-peux-pas-pourquoi">Jessaie denvoyer mes doublons à la corbeille, mais dupeGuru me dit que je ne peux pas. Pourquoi?</a></li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#ou-sont-les-fichiers-de-configuration-de-dupeguru">Où sont les fichiers de configuration de dupeGuru?</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li>
</ul>
</div>
</div>
<div class="section" id="indices-and-tables">
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Lien permanent vers ce titre"></a></h1>
<ul class="simple">
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
<li><a class="reference internal" href="search.html"><span class="std std-ref">Page de recherche</span></a></li>
</ul>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
<a class="uplink" href="#">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="quick_start.html">Démarrage rapide</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

5
help/fr/objects.inv Normal file
View File

@@ -0,0 +1,5 @@
# Sphinx inventory version 2
# Project: dupeGuru
# Version: 4.0.3
# The remainder of this file is compressed using zlib.
xÚm<EFBFBD>ANÅ †÷œ‚ <·îŒFãîEð‚ð·%Rhg yz£ž£m¤‰;æ›ÿô |zÉÑ<˜ åé^êÞ

81
help/fr/preferences.html Normal file
View File

@@ -0,0 +1,81 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Préférences &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Résultats" href="results.html" />
<link rel="prev" title="Sélection de dossiers" href="folders.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Préférences</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="folders.html">Sélection de dossiers</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="results.html">Résultats</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="preferences">
<h1>Préférences<a class="headerlink" href="#preferences" title="Lien permanent vers ce titre"></a></h1>
<p><strong>Comparer les fichiers de différents types:</strong> Sans cette option, seulement les fichiers du même type seront comparés.</p>
<p><strong>Ignorer doublons avec hardlink vers le même fichier:</strong> Avec cette option, dupeGuru vérifiera si les doublons pointent vers le même <a class="reference external" href="http://en.wikipedia.org/wiki/Inode">inode</a>. Si oui, ils ne seront pas considérés comme doublons. (Seulement pour OS X et Linux)</p>
<p><strong>Utiliser les expressions régulières pour les filtres:</strong> Avec cette option, les filtres appliqués aux résultats seront lus comme des <a class="reference external" href="http://www.regular-expressions.info">expressions régulières</a>.</p>
<p><strong>Effacer les dossiers vides après un déplacement:</strong> Avec cette option, les dossiers se retrouvant vides après avoir effacé ou déplacé des fichiers seront effacés aussi.</p>
<p><strong>Déplacements de fichiers:</strong> Détermine comment les opérations de copie et de déplacement sorganiseront pour déterminer la destination finale des fichiers:</p>
<ul class="simple">
<li><strong>Directement à la destination:</strong> Les fichiers sont envoyés directement dans le dossier cible, sans essayer de recréer leur ancienne hierarchie.</li>
<li><strong>Re-créer chemins relatifs:</strong> Le chemin du fichier relatif au dossier sélectionné dans la <a class="reference internal" href="folders.html"><span class="doc">sélection de dossier</span></a> sera re-créé. Par exemple, si vous ajoutez <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MonDossier</span></code> lors de la sélection de dossier et que vous déplacez <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MonDossier/SousDossier/MonFichier.ext</span></code> vers la destination <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MaDestination</span></code>, la destination finale du fichier sera <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MaDestination/SousDossier</span></code>.</li>
<li><strong>Re-créer chemins absolus:</strong> Le chemin du fichier est re-créé dans son entièreté. Par exemple, si vous déplacez <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MonDossier/SousDossier/MonFichier.ext</span></code> vers la destination <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MaDestination</span></code>, la destination finale du fichier sera <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MaDestination/Users/foobar/MonDossier/SousDossier</span></code>.</li>
</ul>
<p>Dans tous les cas, dupeGuru résout les conflits de noms de fichier en ajoutant un numéro en face du nom.</p>
<p><strong>Commande personelle:</strong> Cette option vous permet de définir une ligne de commande à appeler avec le fichier sélectionné (ainsi que sa référence) comme argument. Cette commande sera invoquée quand vous cliquerez sur <strong>Invoquer commande personnalisée</strong>. Cette command est utile si, par exemple, vous avez une application de comparaison visuelle de fichiers que vous aimez bien.</p>
<p>Le format de la ligne de commande est la même que celle que vous écrireriez manuellement, excepté pour les arguments, <strong>%d</strong> et <strong>%r</strong>. Lendroit où vous placez ces deux arguments sera remplacé par le chemin du fichier sélectionné (%d) et le chemin de son fichier référence dans le groupe (%r).</p>
<p>Si le chemin de votre executable contient un espace, vous devez le placer entre guillemets «&nbsp;&nbsp;». Vous devriez aussi placer vos arguments %d et %r entre guillemets parce quil est très possible davoir des chemins de fichier contenant des espaces. Voici un exemple de commande personnelle:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;C:\Program Files\SuperDiffProg\SuperDiffProg.exe&quot;</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="s2">&quot;</span><span class="si">%r</span><span class="s2">&quot;</span>
</pre></div>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="folders.html">Sélection de dossiers</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="results.html">Résultats</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

75
help/fr/quick_start.html Normal file
View File

@@ -0,0 +1,75 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Démarrage rapide &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Sélection de dossiers" href="folders.html" />
<link rel="prev" title="Aide |appname|" href="index.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Démarrage rapide</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="index.html">Aide |appname|</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="folders.html">Sélection de dossiers</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="demarrage-rapide">
<h1>Démarrage rapide<a class="headerlink" href="#demarrage-rapide" title="Lien permanent vers ce titre"></a></h1>
<p>Voici les étapes à suivre pour faire un simple scan par défaut:</p>
<ul class="simple">
<li>Démarrer dupeGuru.</li>
<li>Ajouter les dossiers à scanner soit avec le drag &amp; drop, soit avec le boutton «&nbsp;+&nbsp;».</li>
<li>Cliquez sur <strong>Scan</strong>.</li>
<li>Attendez que le scan soit completé.</li>
<li>Vérifiez que les doublons (les fichiers légèrement indentés) soient vraiment le doublon de la référence du groupe (le fichier au haut du groupe qui ne peut pas être marqué).</li>
<li>Si vous voyer un faux doublon, sélectionnez le puis cliquez sur laction <strong>Retirer sélectionnés des résultats</strong>.</li>
<li>Quand vous êtes certains de ne pas avoir de faux doublons dans vos résultats, cliquez sur <strong>Tout marquer</strong> dans le menu Marquer et cliquez sur laction <strong>Envoyer marqués à la corbeille</strong>.</li>
</ul>
<p>Ceci est seulement un scan de base. Il est possible de configurer dupeGuru afin dobtenir exactement le type de résultat recherché. Pour en savoir plus, il lisez le reste du fichier daide.</p>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="index.html">Aide |appname|</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="folders.html">Sélection de dossiers</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

83
help/fr/reprioritize.html Normal file
View File

@@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Re-Prioritizing duplicates &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Foire aux questions" href="faq.html" />
<link rel="prev" title="Résultats" href="results.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Re-Prioritizing duplicates</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="results.html">Résultats</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="faq.html">Foire aux questions</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="re-prioritizing-duplicates">
<h1>Re-Prioritizing duplicates<a class="headerlink" href="#re-prioritizing-duplicates" title="Lien permanent vers ce titre"></a></h1>
<p>dupeGuru tries to automatically determine which duplicate should go in each groups reference
position, but sometimes it gets it wrong. In many cases, clever dupe sorting with «&nbsp;Delta Values&nbsp;»
and «&nbsp;Dupes Only&nbsp;» options in addition to the «&nbsp;Make Selected into Reference&nbsp;» action does the trick,
but sometimes, a more powerful option is needed. This is where the Re-Prioritization dialog comes
into play. You can summon it through the «&nbsp;Re-Prioritize Results&nbsp;» item in the «&nbsp;Actions&nbsp;» menu.</p>
<p>This dialog allows you to select criteria according to which a reference dupe will be selected in
each dupe group. The list of available criteria is on the left and the list of criteria youve
selected is on the right.</p>
<p>A criteria is a category followed by an argument. For example, «&nbsp;Size (Highest)&nbsp;» means that the dupe
with the biggest size will win. «&nbsp;Folder (/foo/bar)&nbsp;» means that dupes in this folder will win. To add
a criterion to the rightmost list, first select a category in the combobox, then select a
subargument in the list below, and then click on the right pointing arrow button.</p>
<p>The order of the list on the right is important (you can re-order items through drag &amp; drop). When
picking a dupe for reference position, the first criterion is used. If theres a tie, the second
criterion is used and so on and so on. For example, if your arguments are «&nbsp;Size (Highest)&nbsp;» and then
«&nbsp;Filename (Doesnt end with a number)&nbsp;», the reference file that will be picked in a group will be
the biggest file, and if two or more files have the same size, the one that has a filename that
doesnt end with a number will be used. When all criteria result in ties, the order in which dupes
previously were in the group will be used.</p>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="results.html">Résultats</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="faq.html">Foire aux questions</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

181
help/fr/results.html Normal file
View File

@@ -0,0 +1,181 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Résultats &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="search.html" />
<link rel="next" title="Re-Prioritizing duplicates" href="reprioritize.html" />
<link rel="prev" title="Préférences" href="preferences.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Résultats</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="preferences.html">Préférences</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="reprioritize.html">Re-Prioritizing duplicates</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="resultats">
<h1>Résultats<a class="headerlink" href="#resultats" title="Lien permanent vers ce titre"></a></h1>
<p>Quand dupeGuru a terminé de scanner, la fenêtre de résultat apparaît avec la liste de groupes de doublons trouvés.</p>
<div class="section" id="a-propos-des-groupes-de-doublons">
<h2>À propos des groupes de doublons<a class="headerlink" href="#a-propos-des-groupes-de-doublons" title="Lien permanent vers ce titre"></a></h2>
<p>Un groupe de doublons est un groupe de fichier dans lequel tous les fichiers sont le doublon de tous les autres fichiers. Chaque groupe a son <strong>fichier de référence</strong> (le premier fichier du groupe). Ce fichier est celui qui nest jamais effacé, et il est donc impossible de le marquer.</p>
<p>Les critères utilisés pour décider de quel fichier dun groupe devient la référence sont multiples. Il y a dabord les dossiers référence. Tout fichier provenant dun dossier de type «&nbsp;Référence&nbsp;» ne peut être autre chose quune référence dans un groupe. Si il ny a pas de fichiers provenant dun dossier référence, alors le plus gros fichier est placé comme référence.</p>
<p>Bien entendu, dans certains cas, il est possible que dupeGuru ne choisisse pas le bon fichier. Dans ce cas, sélectionnez un doublon à placer en position de référence, puis cliquez sur laction <strong>Transformer sélectionnés en références</strong>.</p>
</div>
<div class="section" id="verifier-les-resultats">
<h2>Vérifier les résultats<a class="headerlink" href="#verifier-les-resultats" title="Lien permanent vers ce titre"></a></h2>
<p>Bien que vous pouvez tout simplement faire <strong>Tout marquer</strong> puis tous envoyer à la corbeille, il est recommandé de vérifier les résultats avant, surtout si votre seuil de filtre est bas.</p>
<p>Pour vous aider dans cette tâche, vous pouvez utiliser le panneau de détails. Ce panneau montre les détails du fichier sélectionné côte-à-côte avec sa référence. Vous pouvez aussi double-cliquer sur un fichier pour louvrir avec son application associée.</p>
<p>Si vous avez plus de faux doublons que de vrais (si votre seuil de filtre est très bas), la meilleure façon de procéder, au lieu de retirer les faux doublons des résultat, serait de marquer seulement les vrais doublons.</p>
</div>
<div class="section" id="marquer-et-selectionner">
<h2>Marquer et sélectionner<a class="headerlink" href="#marquer-et-selectionner" title="Lien permanent vers ce titre"></a></h2>
<p>Dans le vocabulaire de dupeGuru, il y a une nette différence entre sélectionner et marquer. Les fichiers <strong>sélectionnés</strong> sont ceux qui sont surlignés dans la liste. On peut sélectionner plusieurs fichiers à la fois en tenant Shift, Control ou Command lorsquon clique sur un fichier.</p>
<p>Les fichiers <strong>marqués</strong> sont ceux avec la petite boite cochée. Il est possible de marquer les fichiers sélectionnés en appuyant sur <strong>espace</strong>.</p>
</div>
<div class="section" id="ne-pas-montrer-les-references">
<h2>Ne pas montrer les références<a class="headerlink" href="#ne-pas-montrer-les-references" title="Lien permanent vers ce titre"></a></h2>
<p>Quand ce mode est activé, les groupes de doublons sont (momentanément) brisés et les doublons sont montrés individuellement, sans leurs références. On peut agir sur les fichiers sous ce mode de la même façon que sous le mode normal.</p>
<p>Lattrait principal de ce mode est le tri. En mode normal, les groupes ne peuvent pas être brisés, et donc les résultats sont triés en fonction de leur référence. Sous ce mode spécial, le tri est fait au niveau des fichiers individuels. Il est alors possible, par exemple, de facilement marquer tous les fichiers de type «&nbsp;exe&nbsp;»:</p>
<ul class="simple">
<li>Activer le mode <strong>Ne pas montrer les références</strong>.</li>
<li>Ajouter la colonne «&nbsp;Type&nbsp;» par le menu «&nbsp;Colonnes&nbsp;».</li>
<li>Cliquez sur la colonne Type pour changer le tri.</li>
<li>Trouvez le premier fichier avec un type «&nbsp;exe&nbsp;».</li>
<li>Sélectionnez-le.</li>
<li>Trouvez le dernier fichier avec un type «&nbsp;exe&nbsp;».</li>
<li>Tenez Shift et sélectionnez-le.</li>
<li>Appuyez sur espace pour marquer les fichiers sélectionnés.</li>
</ul>
</div>
<div class="section" id="montrer-les-valeurs-en-tant-que-delta">
<h2>Montrer les valeurs en tant que delta<a class="headerlink" href="#montrer-les-valeurs-en-tant-que-delta" title="Lien permanent vers ce titre"></a></h2>
<p>Sous ce mode, certaines colonnes montreront leur valeurs relativement à la valeur de la référence du
groupe (de couleur orange, pour bien les différencier des autres valeurs). Par exemple, si un
fichier a une taille de 1.2 MB alors que la référence a une taille de 1.4 MB, la valeur affichée
sous ce mode sera -0.2 MB.</p>
<p>Les valeurs non numériques sont aussi affectées par le mode delta. Par contre, plutôt que montrer la
différence avec la valeur de référence (ce qui est impossible), elles indiquent si elles sont
pareilles en adoptant la couleur orange dans le cas ou la valeur est différent. Il est ainsi
possible de facilement identifier, par exemple, tous le doublons qui ont un nom de fichier différent
de leur référence.</p>
</div>
<div class="section" id="les-deux-modes-ensemble">
<h2>Les deux modes ensemble<a class="headerlink" href="#les-deux-modes-ensemble" title="Lien permanent vers ce titre"></a></h2>
<p>Quand on active ces deux modes ensemble, il est alors possible de faire de la sélection de ficher
assez avancée parce que le tri de fichier se fait alors en fonction des valeurs delta. Il devient
alors possible de, par exemple, sélectionner tous les fichiers qui ont une différence de plus de 300
KB par rapport à leur référence, ou dautres trucs comme ça.</p>
<p>Même chose pour les valeurs non numériques: quand les deux modes sont activés, les règles de tri
pour les valeurs non-numériques change. On commence par grouper les doublon selon si leur valeur est
orange ou non, pour ensuite procéder aux règles de tri normales. Avec ce système, il est alors
facile de, par exemple, marquer toues les doublons qui ont un nom de fichier différent de leur
référence: il suffit de trier par nom de fichier.</p>
</div>
<div class="section" id="filtrer-les-resultats">
<h2>Filtrer les résultats<a class="headerlink" href="#filtrer-les-resultats" title="Lien permanent vers ce titre"></a></h2>
<p>Il est possible de filtrer les résultats pour agir sur un sous-ensemble de ceux-ci, par exemple tous
les fichiers qui contiennent le mot «&nbsp;copie&nbsp;».</p>
<p>Pour filtrer les résultats, entrer le filtrer dans le champ de la barre doutils, puis appuyer sur
Entrée. Pour annuler le filtre, appuyez sur le X dans le champ.</p>
<p>En mode simple (le mode par défaut), ce que vous tapez est ce qui est filtré. Il ny a quun
caractère spécial: <strong>*</strong>. Ainsi, si vous entrez «&nbsp;[*]&nbsp;», le filtre cherchera pour tout nom contenant
les «&nbsp;[&nbsp;» et «&nbsp;]&nbsp;» avec quelquechose au milieu.</p>
<p>Pour un filtrage avancé, activez <strong>Utiliser les expressions régulières pour les filtres</strong> dans les
<a class="reference internal" href="preferences.html"><span class="doc">Préférences</span></a>. Votre filtre sera alors appliqué comme une <a class="reference external" href="http://www.regular-expressions.info">expression régulière</a>.</p>
<p>Les filtres sont dans tous les cas insensibles aux majuscules et minuscules.</p>
<p>Les expression régulière pour sappliquer à un fichier nont pas besoin de correspondre au nom
entier. Une correspondance partielle suffit.</p>
<p>Vous remarquerez peut-être que ce ne sont pas tous les fichiers de vos résultats filtrés qui
sappliquent au filtre. Cest parce que les groupes ne sont pas brisés par les filtres afin de
permettre une meilleure mise en context. Par contre, ces fichier seront en mode «&nbsp;Lecture seule&nbsp;» et
ne pourront être marqués.</p>
</div>
<div class="section" id="actions">
<h2>Actions<a class="headerlink" href="#actions" title="Lien permanent vers ce titre"></a></h2>
<p>Voici la liste des actions quil est possible dappliquer aux résultats.</p>
<ul class="simple">
<li><strong>Vider la liste de fichiers ignorés:</strong> Ré-initialise la liste des paires de doublons que vous avez ignorés dans le passé.</li>
<li><strong>Exporter vers HTML:</strong> Exporte les résultats vers un fichier HTML et louvre dans votre browser.</li>
<li><strong>Envoyer marqués à la corbeille:</strong> Le nom le dit.</li>
<li><strong>Déplacer marqués vers…:</strong> Déplace les fichiers marqués vers une destination de votre choix. La destination finale du fichier dépend de loption «&nbsp;Déplacements de fichiers&nbsp;» dans les <a class="reference internal" href="preferences.html"><span class="doc">Préférences</span></a>.</li>
<li><strong>Copier marqués vers…:</strong> Même chose que le déplacement, sauf que cest une copie à la place.</li>
<li><strong>Retirer marqués des résultats:</strong> Retire les fichiers marqués des résultats. Ils ne seront donc ni effacés, ni déplacés.</li>
<li><strong>Retirer sélectionnés des résultats:</strong> Retire les fichiers sélectionnés des résultats. Notez que si il y a des fichiers références parmi la sélection, ceux-ci sont ignorés par laction.</li>
<li><strong>Transformer sélectionnés en références:</strong> Prend les fichiers sélectionnés et les place à la position de référence de leur groupe respectif. Si laction est impossible (si la référence provient dun dossier référence), rien nest fait.</li>
<li><strong>Ajouter sélectionnés à la liste de fichiers ignorés:</strong> Retire les fichiers sélctionnés des résultats, puis les place dans une liste afin que les prochains scans ignorent les paires de doublons qui composaient le groupe dans lequel ces fichiers étaient membres.</li>
<li><strong>Ouvrir sélectionné avec lapplication par défaut:</strong> Ouvre le fichier sélectionné avec son application associée.</li>
<li><strong>Ouvrir le dossier contenant le fichier sélectionné:</strong> Le nom dit tout.</li>
<li><strong>Invoquer commande personnalisée:</strong> Invoque la commande personnalisé que vous avez définie dans les <a class="reference internal" href="preferences.html"><span class="doc">Préférences</span></a>.</li>
<li><strong>Renommer sélectionné:</strong> Renomme le fichier sélectionné après vous avoir demandé dentrer un nouveau nom.</li>
</ul>
<p><strong>Déplacer des fichiers dans iPhoto/iTunes:</strong> Attention, quand vous déplacez des fichiers des
bibliothèques iPhoto ou iTunes, elles ne sont pas vraiment déplacées, mais copiée. Il ny a pas
daction de déplacement possible dans ces bibliothèques.</p>
</div>
<div class="section" id="options-de-suppression">
<h2>Options de suppression<a class="headerlink" href="#options-de-suppression" title="Lien permanent vers ce titre"></a></h2>
<p>Ces options, présentées lors de laction de suppression de doublons, déterminent comment celle-ci
sexécute. La plupart du temps, ces options nont pas a être activées.</p>
<ul>
<li><p class="first"><strong>Remplacer les fichiers effacés par des liens:</strong> les fichiers supprimés seront replacés par des
liens (<a class="reference external" href="http://en.wikipedia.org/wiki/Symbolic_link">symlink</a> ou <a class="reference external" href="http://en.wikipedia.org/wiki/Hard_link">hardlink</a>) vers leur fichiers de référence respectifs. Un symlink est un
lien symbolique (qui devient caduque si loriginal est supprimé) et un hardlink est un lien direct
au contenu du fichier (même si loriginal est supprimé, le lien reste valide).</p>
<p>Sur OS X et Linux, cette fonction est supportée pleinement, mais sur Windows, cest un peu
compliqué. Windows XP ne le supporte pas, mais Vista oui. De plus, cette fonction ne peut être
utilisée que si dupeGuru roule avec les privilèges administratifs. Ouaip, Windows cest la joie.</p>
</li>
<li><p class="first"><strong>Supprimer les fichiers directement:</strong> Plutôt que denvoyer les doublons à la corbeille,
directement les supprimer. Utiliser cette option si vous avez de la difficulté à supprimer des
fichiers (ce qui arrive quelquefois quand on travaille avec des partages réseau).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="preferences.html">Préférences</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contenu</a>
&#160;&#160;::&#160;&#160;
<a href="reprioritize.html">Re-Prioritizing duplicates</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

80
help/fr/search.html Normal file
View File

@@ -0,0 +1,80 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Recherche &#8212; Documentation dupeGuru 4.0.3</title>
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Recherche" href="#" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
<script type="text/javascript" id="searchindexloader"></script>
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>Documentation dupeGuru 4.0.3</span></a></h1>
<h2 class="heading"><span>Recherche</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
<a class="uplink" href="index.html">Contenu</a>
</p>
</div>
<div class="content">
<h1 id="search-documentation">Recherche</h1>
<div id="fallback" class="admonition warning">
<script type="text/javascript">$('#fallback').hide();</script>
<p>
Veuillez activer le JavaScript pour que la recherche fonctionne.
</p>
</div>
<p>
Vous pouvez effectuer une recherche au sein des documents. Saisissez les termes
de votre recherche dans le champs ci-dessous et cliquez sur "rechercher". Notez que la fonctionnalité de recherche
va automatiquement chercher l'ensemble des mots. Les pages
contenant moins de mots n'apparaîtront pas dans la liste des résultats.
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="submit" value="rechercher" />
<span id="search-progress" style="padding-left: 10px"></span>
</form>
<div id="search-results">
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
<a class="uplink" href="index.html">Contenu</a>
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Créé avec <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

1
help/fr/searchindex.js Normal file

File diff suppressed because one or more lines are too long