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/hy/.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: a874776587ce2da814c4810262a52987
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,115 @@
Հաճախ Տրվող Հարցեր
==========================
.. topic:: Ի՞նչ է dupeGuru-ը:
.. only:: edition_se
dupeGuru-ն ծրագիր է, որ գտնում է համակարգչի ֆայլերի կրկնօրինակները: Այն կարող է ստուգել ըստ ֆայլի անվան կամ բովանդակության: Ֆայլի անվամբ փնտրման հնարավորությունը ոչ ճշգրիտ համընկնումներ է տալիս երբեմն: Շատ ժամանակ անունները նույնն են, բայց ֆայլերը տարբեր են:
.. only:: edition_me
dupeGuru Music Edition-ը ծրագիր է, որ գտնում է համակարգչի երաժշտական ֆայլերի կրկնօրինակները: Այն կարող է հիմնվել ֆայլի անունները ստուգելու վրա՝ ըստ կցապիտակների և բովանդակության: Ֆայլի անունների և կցապիտակների ստուգումը ոչ ճշգրիտ ալգորիթմ է, քանզի այն կարող է գտնել համընկնումներ, որոնք իրականում նույնը չեն:
.. only:: edition_pe
dupeGuru Picture Edition (PE՝ կարճ)-ը ծրագիր է, որ գտնում է համակարգչի նկարների ֆայլերի կրկնօրինակները: Այն կարող է գտնել ոչ միայն ճշգրիտ համընկնումները, այլև այն կարող է գտնել տարբեր որակի և տեսակի նկարների (PNG, JPG, GIF և այլն...) համընկնումներ:
.. topic:: Ի՞նչն է այս ծրագիրը առանձնացնում մյուս նմանատիպ ծրագրերից:
Ստուգելու համակարգը չափազանց նուրբ է: Կարող եք ինքներդ հարմարեցնել այն՝ ստանալու համար այն արդյունքը, ինչը որ Ձեզ պետք է: Կարող եք լրացուցիչ կարդալ այս մասին dupeGuru-ի կարգավորման ընտրանքներում՝ :doc:`Կարգավորումների էջում <preferences>`:
.. topic:: Ո՞րքանով է անվտանգ օգտագործելու dupeGuru-ը:
Շատ անվտանգ է: dupeGuru-ը նախագծվել է՝ համոզված լինելու համար, որ Դուք չջնջեք այն ֆայլերը, որոնք չպետք է ջնջեք: Նախ, կա հղմամբ համակարգային թղթապանակ, որը հնարավորություն է տալիս Ձեզ որոշելու թղթապանակներ, որտեղ Դուք բացարձակ **չեք** ցանկանում, որ dupeGuru-ն հնարավորություն տա Ձեզ ջնջելու ֆայլերը այստեղից, և ապա կա խմբի հղմամբ համակարգային համակարգ, որը համոզմունք է ստեղծում, որ Դուք **միշտ** պետք է պահեք գոնե մեկ անդամ կրկնօրինակվող խմբի:
.. topic:: Ո՞րոն եք dupeGuru-ի լիցենզիայի սահմանափակումները:
Փորձնական եղանակում, Դուք կարող եք միայն կատարել գործողություններ 10 կրկնօրինակների հետ միաժամանակ: Ծրագրի
`Անվճար տարբերակում <http://open.hardcoded.net/about/>`_ mode, այնուհանդերձ չկան էական սահմանափակումներ:
.. topic::Ջնջելու համար նշելու դաշտի պատուհանը ակտիվ չէ: Ի՞նչ անել:
Չեք կարող նշել հղումը (Առաջին ֆայլը) կրկնօրինակվող խմբի: Այնուհանդերձ, ինչ կարող եք Դուք անել առաջ մղելու համար կրկնօրինակվող ֆայլը հղմանը: Այսպիսով, եթե ֆայլը ցանկանում եք նշել որպես հղում, ընտրեք կրկնօրինակվող ֆայլը խմբից, որը ցանկանում եք տանել հղման մեջ, և սեղմեք **Գործողություններ-->Դարձնել ընտրվածը հղում**: Եթե հղվող ֆայլը հղման թղթապանակից է (ֆայլի անունը գրված է կապույտ տառերով), Դուք չեք կարող ջնջել այն հղման դիրքից:
.. topic:: Ես ունեմ թղթապանակ, որտեղից ես իրապես չեմ ցանկանում ջնջել ֆայլեր:
Եթե Դուք ցանկանում եք համոզված լինել, որ dupeGuru-ն երբեք չի ջնջի ֆայլ կոնկրետ թղթապանակից, համոզված եղեք, որ տվել եք կարգը **Հղման** :doc:`folders`:
.. topic:: Ի՞նչ է սա '(X վնասված)'՝ նշված դրության տողում:
Որոշ դեպքերում, որոշ համընկնումներ ներառված չեն վերջնական արդյունքում երկրորդական պատճառներով: Եկեք նայենք կոնկրետ օրինակի վրա: Մենք ունենք 3 ֆայլ. A, B և C: Մենք ստուգում ենք այն՝ օգտագործելով ֆիլտրի ցածր մակարդակով: Ստուգիչը արդեն որոշել է, որ A համընկնումները B-ի, A-ի համընկնումները C-ին, բայց B-ն **չի** համընկնում C-ին: Այստեղ dupeGuru-ն ունի մի շարք խնդիրներ: Այն չի կարող ստեղծել կրկնօրինակվող խումբ A, B և C իրենում, որովհետև ոչ բոլոր ֆայլերն են խմբում համընկնում միմյանց: Այն կարող է ստեղծել 2 խումբ. մեկ A-B խումբ և ապա մեկ A-C խումբ, բայց այն չի լինի՝ անվտանգության նկատառումներից ելնելով: Եկեք մտածենք սրա մասին. Եթե B-ն չի համընկնում C-ին, հնարավոր է դա նշանակում է, որ անգամ B, C կամ երկուսն էլ իրականում կրկնօրինակներ չեն: Եթե այնտեղ լինեն 2 խմբեր (A-B և A-C), ապա Դուք պետք է ջնջեք B-ն և C-ն: Եթե դրանցից մեկը կրկնօրինակ չէ, ապա դա այն չէ, ինչը որ Ձեզ պետք է, այնպես չէ՞: Այսպիսով, ինչ dupeGuru չի մի դեպքում նման սրան՝ բացառելով A-C համընկնումը (և ավելացնում է տեղեկացում դրության տողում): Այսպիսով, եթե Դուք ջնջեք B-ն և վերսկսեք ստուգումը, ապա կունենք A-C համընկնում հաջորդ արդյունքներում:
.. topic:: Ես ցանկանում եմ նշել բոլոր ֆայլերը որոշված թղթապանակից: Ի՞նչ կարող եմ ես անել:
Միացնել :doc:`Միայն Սխալները <results>` եղանակը և սեղմեք թղթապանակի սյանը՝ դասավորելու համար կրկնօրինակները ըստ թղթապանակների: Հետագայում հեշտ կլինի ընտրելու բոլոր կրկնօրինակները նույն թղթապանակից և ապա սեղմեք Space՝ ընտրելու ահմար բոլոր կրկնօրինակները:
.. only:: edition_se or edition_pe
.. topic:: Ես ցանկանում եմ հեռացնել բոլոր ֆայլերը, որոնք 300 ԿԲ-ից ավելի են հղվող ֆայլից: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Չափը" սյանը՝ դասավորելու համար արդյունները ըստ չափի;
* Ընտրեք բոլոր կրկնօրինակները՝ -300-ից ցածր:
* Սեղմեք **Ջնջել ընտրվածը Արդյունքներից**:
* Ընտրեք բոլոր կրկնօրինակերը, որոնք մեծ են 300-ից:
* Սեղմեք **Ջնջել ընտրվածները Արդյունքներից**:
.. topic:: Ես ցանկանում եմ դարձնել վերջին փոփոխված ֆայլերը հղման ֆայլեր: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Ըստ փոփոխության" սյանը՝ արդյունքները ըստ փոփոխման դասավորելու համար:
* Սեղմեք "Ըստ փոփոխության" սյանը՝ կրկնելու համար դասավորման կարգը:
* Ընտրել բոլոր կրկնօրինակները 0-ից բարձր:
* Սեղմեք **Դարձնել ընտրվածը հղում**:
.. topic:: Ես ցանկանում եմ նշել բոլոր այն կրկնօրինակները, որոնք պարունակում են "պատճենել" բառը: Ինչպե՞ս դա անել:
* **Windows**. Սեղմեք **Գործողություններ --> կիրառել ֆիլտրը**, ապա նշեք "պատճենել", հետո սեղմեք ԼԱՎ:
* **Mac OS X**. Նշեք "պատճենել" "Ֆիլտրում" դաշտում՝ գործիքների վահանակում:
* Սեղմեք **Նշել --> Նշել բոլորը**:
.. only:: edition_me
.. topic:: Ես ցանկանում եմ հեռացնել բոլոր երգերը, որոնք 3 վայրկյանից հեռու են իրենց հղման ֆայլից: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Ժամանակը" սյանը՝ դասավորելու համար արդյունքները ըստ ժամանակի:
* Ընտրեք բոլոր կրկնօրինակները՝ -00:03-ից ցածր:
* Սեղմեք **Ջնջել ընտրվածը արդյունքներից**:
* Ընտրել բոլոր կրկնօրինակները 00:03-ից բարձր:
* Սեղմեք **Ջնջել ընտրվածը արդյունքներից**:
.. topic:: Ես ցանկանում եմ դարձնել իմ բարձրագույն բիթրեյթ ունեցող երգերը հղման ֆայլեր: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Բիթրեյթը" սյանը՝ դասավորելու համար արդյունքները ըստ բիթրեյթի:
* Սեղմեք "Բիթրեյթը" սյանը՝ կրկնելու համար դասավորման կարգը:
* Ընտրել բոլոր կրկնօրինակները 0-ց բարձր;
* Սեղմեք **Դարձնել ընտրվածը հղում**:
.. topic:: Ես չեմ ցանկանում [live] և [remix] տարբերակները իմ երգերի՝ հաշված որպես կրկնօրինակ: Ինչպե՞ս դա անել:
Եթե Ձեր համեմատության սահմանը բավականին ցածր է, հնարավոր է Դուք ավարտվեք կենդանի և ռեմիքս տարբերակներով Ձեր երգերի արդյունեքներում: Դուք ոչինչ չեք կարող անել դրա համար, բայց կա ինչ-որ եղանակ՝ դրանք ստուգման արդյունքներից ջնջելու համար: Եթե օրինակի համար, Դուք ցանկանում եք ջնջել ամեն մի երգ, որը գտնվում է գծիկների միջև []:.
* **Windows**. Սեղմեք **Գործողություններ --> Կիրառել ֆիլտրը**, ապա տեսակը "[*]", ապա սեղմեք ԼԱՎ:
* **Mac OS X**. Տեսակը "[*]" "Ֆիլտր" դաշտում՝ գործիքաշերտի:
* Սեղմեք **Նշել --> Նշել բոլորը**:
* Սեղմեք **Գործողություններ --> Ջնջել ընտրվածը արդյունքներից**.
.. topic:: Ես փորձում եմ կրկնօրինակները ուղարկել Աղբարկղ, բայց dupeGuru-ն ինձ ասում է, որ չես կարող: Ինչու՞: Ի՞նչ կարող եմ ես անել:
Շատ ժամանակ, պատճառը, թե ինչու dupeGuru-ն չի կարողանում տեղափոխել ֆայլերը Աղբարկղ, կայանում է ֆայլի լիազորությունների մեջ: Դուք պետք է *գրեք* լիազորությունները ֆայլերում, որոնք որ ցանկանում եք ուղարկել Աղբարկղ: Եթե Ձեզ անծանոթ է Հրամանի տողը, ապա Դուք կարող եք օգտագործել լրացուցիչ գործիքներ, ինչպես օրինակ `BatChmod <http://macchampion.com/arbysoft/BatchMod>`_ լիազորումները նշելու համար:
Եթե dupeGuru-ն դեռ շարունակում է խնդիրներ առաջ բերել կապված լիազորությունների հետ, ապա կան խնդիրներ կապված՝ "Տեղափոխել նշվածը..." որպես շրջանցիկ խորամանկություն: Ուստի ֆայլերը Աղբարկ տեղափոխելիս Դուք ուղարկում եք այն ժամանակավոր թղթապանակ "Տեղափոխել նշվածը..." գործողությամբ և ապա Դուք կջնջեք այդ թղթապանակը ձեռադիր;
.. only:: edition_pe
Եթե Դուք փորձում եք ջնջել *iPhoto* նկարները, ապա ձախողման պատճառը տարբեր է: Ջնջելը ձախողվել է, որովհետև dupeGuru-ը չի կարողանում համագործակցել iPhoto: Լինել տեղեկացված, որ ջնջումը նորմալ է աշխատում, Դուք չեք նախատեսում խաղարկել ձայն iPhoto-ին, քանսզի dupeGuru-ն աշխատում է: Նաև, երբեմն, Applescript համակարգը չի կողմնորոշվում որտեղ փնտրել iPhoto՝ բացելու համար: Հավանական է, այս դեպքերում պետք է բացել iPhoto-ն *մինչև* Դուք ուղարկեք Ձեր կրկնօրինակները Աղբարկղ:
Եթե այս ամենը ձախողվի, `կապնվեք HS աջակցության թիմի հետ <http://www.hardcoded.net/support>`_, մենք կփորձեք օգնել Ձեզ:
.. todo:: This FAQ qestion is outdated, see english version.

View File

@@ -0,0 +1,25 @@
Թղթապանակի ընտրություն
=======================
Առաջին թղթապանակը, որ Դուք տեսնում եք dupeGuru-ն բացելիս դա թղթապանակի ընտրությունն է: Այս պատուհանը պարունակում է թղթապանակների ցանկը, որոնք կստուգվեն **Ստուգել** սեղմելիս:
Այս պատուհանը շատ հեշտ է օգտագործել: Եթե ցանկանում եք ավելացնել թղթապանակ, ապա սեղմեք **+** կոճակը: Եթե մինչ այդ ավելացնեք թղթապանակը, ապա կերևա ավելացված վերջին թղթապանակների ցանկը: Կարող եք սեղմել նրանցից մեկի վրա՝ ավելացնելու համար ուղղակի Ձեր ցանկում: Եթե սեղմեք հայտնվող պատուհանի առաջին ֆայլին՝ **Ավելացնել նոր թղթապանակ...**, ապա Ձեզ հարցում կկատարվի թղթապանակ ավելացնելու մասին: Եթե երբեք չեք ավելացրել թղթապանակ, ապա ոչ մի ընտրացանկ չի երևա և Ձեզ ուղղակի հարցում կարվի նոր թղթապանակ ավելացնելու մասին:
Այլընտրանքյին ճանապարհով թղթապանակներ կարող եք ավելացնել պարզապես դրանք գցելով ցանկում:
Թղթապանակը հեռացնելու համար ընտրեք թղթապանակը, սեղմեք **-**: Եթե ընտրված է ենթաթղթպանակը, երբ Դուք սեղմում եք կոճակին, ընտրված թղթապանակը կնշվի որպես **բացառված** (նայեք այստեղ)՝ ջնջվելու փոխարեն:
Թղթապանակի վիճակը
------------------
Յուրաքանչյուր թղթապանակ կարող է լինել հետևյալ 3 եղանակներից մեկում.
* **Նորմալ.** Այս թղթապանակում գտնված կրկնօրինակները կարող են ջնջվել:
* **Հղված.** Կրկնօրինակներ են գտնվել այս թղթապանակում, որոնք **չեն կարող** ջնջվել: Ֆայլերը այս թղթապանակից կարող են միայն ավարտվել **հղում** դիրքով խմբում: Եթե մեկ ֆայլից ավելի են հղման թղթապանակների հղումները, ապա միայն մեկը կպահվի: Մնացածը կջնջվեմ խմբից:
* **Բացառված.** Ֆայլերը այս թղթապանակում կներառվեն ստուգման մեջ:
Թղթապանակի հիմնական վիճակը, իհարկե՛ **Նորմալ է**: Կարող եք օգտագործել **Հղված** վիճակը թղթապանակի համար, եթե ցանկանում եք համոզված լինել, որ ոչ մի ֆայլ չի ջնջվի:
Եթե նշել եք թղթապանակի վիճակը, բոլոր ենթաթղթապանակները միանգամից կժառանգեն այս վիճակը, եթե վիճակը պարզորոշ տրված է թղթապանակի կարգում:
.. todo:: Add iPhoto/Aperture/iTunes libraries notes

View File

@@ -0,0 +1,47 @@
dupeGuru help
===============
.. only:: edition_se
Այս փաստաթուղթը հասանելի է նաև՝ `Ֆրանսերեն <http://www.hardcoded.net/dupeguru/help/fr/>`__ և `Գերմաներեն <http://www.hardcoded.net/dupeguru/help/de/>`__.
.. only:: edition_me
Այս փաստաթուղթը հասանելի է նաև՝ `Ֆրանսերեն <http://www.hardcoded.net/dupeguru_me/help/fr/>`__ և `Գերմաներեն <http://www.hardcoded.net/dupeguru_me/help/de/>`__.
.. only:: edition_pe
Այս փաստաթուղթը հասանելի է նաև՝ `Ֆրանսերեն <http://www.hardcoded.net/dupeguru_pe/help/fr/>`__ և `Գերմաներեն <http://www.hardcoded.net/dupeguru_pe/help/de/>`__.
.. only:: edition_se or edition_me
dupeGuru ծրագիր է՝ գտնելու կրկնօրինակ ունեցող ֆայլեր Ձեր համակարգչում: Այն կարող է անգամ ստուգել ֆայլի անունները կան բովանդակությունը: Ֆայլի անվան ստուգման հնարավորությունները ոչ ճշգրիտ համընկման ալգորիթմով, որը կարող է գտնել ֆայլի անվան կրկնօրինակներ, անգամ եթե դրանք նույնը չեն:
.. only:: edition_pe
dupeGuru Picture Edition-ը (PE՝ կարճ) գործիք է, որը գտնում է նկարների կրկնօրինակները Ձեր համակարգչում: Գտնում է ոչ միայն նույնանման կրկնօրինակները, այլ նաև կարող է գտնել տարբեր տեսակի և որակի նկարներ (PNG, JPG, GIF և այլն...):
Չնայած dupeGuru-ն կարող է հեշտությամբ օգտագործվել առանց օգնության, այնուհանդերձ եթե կարդաք այս ֆայլը, այն մեծապես կօգնի Ձեզ ընկալելու ծրագրի աշխատանքը: Եթե Դուք նայում եք ձեռնարկը կրկնօրինակների առաջին ստուգման համար, ապա կարող եք ընտրել :doc:`Արագ Սկիզբ <quick_start>` հատվածը:
Շատ լավ միտք է պահելու dupeGuru թարմացված: Կարող եք բեռնել վեբ կայքի համապատասխան էջից `homepage`_:
Պարունակությունը.
.. 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 @@
Կարգավորումներ
================
.. only:: edition_se
**Ստուգելու տեսակը.** Այս ընտրանքը որոշում է, թե ֆայլերի որ ասպեկտը կհամեմատվի կրկնօրինակված ստուգման հետ: Եթե Դուք ընտրեք **Ֆայլի անունը**, ապա dupeGuru-ն կհամեմատի յուրաքանչյուրը բառ-առ-բառ և կախված է հետևյալ այլ ընտրանքներից, այն կորոշի արդյոք բավական են համընկնող բառերը դիտելու համար 2 ֆայլերի կրկնօրինակները: Եթե ընտրեք միայն **Բովանդակությունը**, ապա նույնատիպ ֆայլերը նույն բովանդակությամբ կհամընկնեն:
**Թղթապանակներ.** ստուգելու հատուկ տեսակ է: Երբ ընտրեք սա, dupeGuru-ն կստուգի կրկնօրինակ *թղթապանակները*՝ կրկնօրինակ ֆայլերի փոխարեն: Որոշելու համար արդյոք անկախ երկու թղթապանակները կրկնօրինակ են, կստուգվեն թղթապանակների ամբողջ պարունակությունը և եթե **բոլոր** ֆայլերի բովանդակությունը համընկնի, ապա թղթապանակները կորոշվեն որպես կրկնօրինակներ:
**Ֆիլտրի խստությունը.** Եթե Դուք ընտրեք **Ֆայլի անունը** ստուգելու տեսակը, այս ընտրանքը կորոշի, թե ինչքանով նման պետք է լինեն ֆայլերի անունները, որ dupeGuru-ն ճանաչի դրանք որպես կրկնօրինակներ: Եթե ֆիլտրը առավել խիստ է, օրինակ՝ 80, ապա դա նշանակում է, որ երկու ֆայլերի անունների բառերի 80%-ը պետք է համընկնի: Որոշելու համար համընկնման տոկոսը, dupeGuru-ն նախ հաշվում է բառերի ընդհանուր քիանակը **երկու** ֆայլերի անուններում, ապա հաշվում է համընկնումների քանակը (ամեն բառ համընկնում է 2-ի հաշվին) և բաժանում ընդհանուր գտնված բառերի համընկնումների միջև: Եթե արդյունքը բարձր է կամ հավասար ֆիլտրի խստությանը, ապա մենք ունեք կրկնօրինակի համընկնում: Օրինակ՝ "a b c d" և "c d e" ունեն համընկնման տոկոս, որը հավասար է 57-ի (4 բառ են համընկնում, 7 ընդհանուր բառից):
.. only:: edition_me
**Ստուգելու եղանակը.** Այս ընտրանքը որոշում է, թե որ ասպեկտն է ֆայլերի՝ համեմատելի կրկնօրինակման ստուգմանը: Կրկնօրինակների ստուգման բնույթը փոխվում է մեծապես կախված, թե ինչի եք ընտրում այս ընտրանքը:
* **Ֆայլի անունը.** Ցանկացած երգ ունի իր ֆայլի անվան մասնատումը բառերի և ապա ամեն բառ կհամեմատվի՝ հաշվելու համար համընկնման տոկոսը: Եթե այս տոկոսը ավելի բարձր է կամ հավասար **Ֆիլտրի խստությանը** (նայել՝ մանրամասների համար), dupeGuru-ն կդիտարկի երկու երգերը որպես կրկնօրինակներ:
* **Ֆայլի անունը - Դաշտերը.** Ինչպես օրինակ **Ֆայլի անունը**, բացառում է, որ մեկ ֆայլի անունը բաժանվի բառերի, այս բառերը ապա կխմբավորվեն դաշտերում: Դաշտերի բաժանիչը " - " է: Համընկնման վերջնական տոկոսը կլինի համընկնման ցածրագույն տոկոսը դաշտերի միջև: Այսպիսով, "Կատարողը - Վերնագիրը" և "Կատարողը - Այլ վերնագիրը" կունենա համընկման տոկոս՝ 50 (**Ֆայլի անունը** ստուգմամբ, կլինի 75).
* **Ֆայլի անունը - Դաշտերը (անկարգ).** Ինչպես օրինակ **Ֆայլի անունը - Դաշտերը** բացառությամբ, որ դաշտի կարգը չի համընկնում: Օրինակ՝ "Կատարողը - Վերնագիրը" և "Վերնագիրը - Կատարողը" կունենան համընկնման 100 տոկոս՝ 0-ի փոխարեն:
* **Կցապիտակներ.** Այս եղանակը կարդում է յուրաքանչյուր երգի կցապիտակները (մետատվյալները) և համեմատում է նրանց դաշտերը: Այս եղանակը, ինչպես օրինակ **Ֆայլի անունը - Դաշտերը** դիտարկում են համընկնման ցածրագույն դաշտը՝ համեմատման վերջնական տոկոսից:
* **Պարունակությունը.** Ստուգման այս եղանակը օգտագործում են երգերի բովանդակությունը՝ որոշելու համար, թե որն են կրկնօրինակները: 2 երգերը համընկնեցնելու համար այս եղանակով, դրանք պետք է ունենան **բացառապես նույն բովանդակությունը**:
* **Ձայնի բովանդակությունը.** Նույնն են բովանդակությամբ, բայց միայն ձայնի պարունակությունն է համեմատելի (առանց մետատվյալների):
**Ֆիլտրի խստությունը.** Եթե ընտրում եք ֆայլի անունը կամ կցապիտակը՝ հիմնված ստուգման եղանակի վրա, ապա այս ընտրանքը որոշում է, թե ինչքան են նման երկու ֆայլի անունները/կցապիտակները պետք է լինեն dupeGuru-ի կողմից դիտարկվող կրկնօրինակներ: Եթե ֆիլտրի խստությունը օրինակի համար 80 է, դա նշանակում է, որ երկու ֆայլի անունների բառերի համընկնումը 80% է: Որոշելու համար համընկնման տոկոսը, dupeGuru-ն առաջին հաշվով որոշում է **երկու** ֆայլի անունների առաջին հաշվարկի ընդհանուր քանակը, ապա համընկնող բառերի համընկնման քանակը (բոլոր բառերը համընկնում են 2-ի) և ապա բաժանել համընկնող բառերի թիվը ընդհանուր բառերի թվին: Եթե արդյունքը բարձր է կամ հավասար ֆիլտրի խստությանը, ապա մենք ունենք կրկնօրինակի համընկնում: Օրինակ՝ "a b c d" և "c d e" ունի համընկնման 57 տոկոս (4 բառերի համընկնում, 7 ընդամենը բառեր):
**Ստուգվող կցապիտակները.** Երբ օգտագործվում է **Կցապիտակներ** ստուգելու եղանակը, կարող եք ընտրել կցապիտակներ, որոնք կօգտագործվեն համեմատման համար:
.. only:: edition_se or edition_me
**Բառի կշիռը.** Եթե ընտրում եք **Ֆայլի անունը** ստուգելու եղանակը, ապա այս ընտրանքը որոշակիորեն փոխում է համընկնման տոկոսը հաշվելու եղանակը: Բառի կշռմամբ կրկնօրինակի քանակի փոխարենը 1 նշանակությունը ունենալու համար, ամեն բառը ունի հավասարազոր նշանակություն՝ առկա գրանշանների թվին: Բառի կշռմամբ, "ab cde fghi" և "ab cde fghij" կունենա համընկնման տոկոս՝ 53% (19 ընդամենը գրանշաններ, 10 գրանշանների համընկնում (4-ը "ab"-ի և 6-ը "cde"-ի համար)):
**Նմանատիպ բառերի համընկնում.** Եթե միացնեք այս ընտրանքը, նմանատիպ բառերը կհաշվեն որպես համընկնումներ: Օրինակ՝ "Սպիտակ շրջանակ" և "Սպիտակ շրջանակ" ունի համընկնման % հավասարազոր 100-ի՝ 66-ի փոխարեն, եթե ընտրանքը միացված է: **Զգուշացում.** Այս ընտրանքը զգուշությամբ օգտագործեք: Հավանական է ստացված տվյալների մեծ մասը կեղծ լինեն: Այնուհանդերձ, այն կօգնի Ձեզ գտնելու կրկնօրինակներ, որոնք այլ ճանապարհով հնարավոր չի եղել գտնել: Ստուգելու ընթացքը նաև նշանակալի դանդաղ է, եթե այս ընտրանքը միացված է:
.. only:: edition_pe
**Ստուգելու եղանակը.** Այս ընտրանքը որոշում է ստուգելու եղանակը, որը կկիրառվի նկարների նկատմամբ: **Պարունակությունը** ստուգելու եղանակը համեմատում է ակտուալ նկարների բովանդակությունը ոչ ճշգրիտ եղանակով (հնարավորություն տալով գտնելու ոչ միայն անմիջապես կրկնօրինակները, այլ նաև նմանատիպ այլ ֆայլերը): **EXIF Timestamp** ստուգելու եղանակը նայում է նկարի EXIF մետատվյալը (եթե այն կա) և համընկնող նկարները, որոնք որ նույնն են: Սա ավելի արագ է, քան բովանդակությամբ ստուգելը: **Զգուշացում.** Փոփոխված նկարները սովորաբար պահում են նույն EXIF timestamp-ը, ուստի նախ նայեք արդյունքները, ապա գործեք:
**Ֆիլտրի խստությունը.** *Ստուգում է միայն բովանդակությունը:* Այս ընտարնքի բարձրագույն նիշը, բնորոշում է ֆիլտրի "խստությունը" (Այլ կերպ ասաց, արդյունքը ավելի քիչ է լինում): Նույն որակի նկարներից շատերը երբեմն համընկնում են 100%-ով՝ անգամ եթե տեսակը ուրիշ է (PNG և JPG օրինակի համար): Այնուհանդերձ, եթե ցանկանում եք, որ PNG-ն համապատասխանի ցածր որակի JPG-ին, պետք է նշեք ֆիլտրի խստությունը 100-ից ցածր: Ծրագրայինը 95 է:
**Տարբեր չափերով նկարների համապատասխանեցում.** Եթե ընտրեք սա, տարբեր չափերի նկարները կթույլատրվեն կրկնօրինակվող նույն խմբում:
**Կարող է ուղղել ֆայլի տեսակը.** Եթե ընտրում եք այս վանդակը, ապա կրկնօրինակվող խմբերը կթույլատրվեն ունենալու տարբեր ընդլայնումներ: Եթե չընտրեք, ապա դրանք չեն լինի!
**Անտեսել կրկնօրինակների հղումը նույն ֆայլին file:** Եթե այս ընտրանքը միացված է, dupeGuru-ն կստուգի կրկնօրինակները՝ տեսնելու համար արդյոք դրանք հղվում են նույնին `inode <http://en.wikipedia.org/wiki/Inode>`_: Եթե այո, ապա դրանք չեն որոշվի որպես կրկնօրինակ: (Միայն OS X և Linux-ում)
**Ֆիլտրելիս օգտագործել կանոնավոր սահմանումներ.** Եթե ընտրեք սա, ապա ֆիլտրման հնարավորությունը կդիմի ֆիլտրման հերթին, ինչպես որ **կանոնավոր սահմանում**: Դրա բացատրությունը դուրս կգա այս փաստաթղթի շրջանակից: Ավելին կարող եք կարդալ այստեղ՝ `regular-expressions.info <http://www.regular-expressions.info>`_:
**Ջնջել դատարկ թղթապանակները ջնջելուց կամ տեղափոխելուց.** Երբ այս ընտրանքը միացված է, թղթապանակները կջնջվեն, երբ որ ֆայլը ջնջվի կամ տեղափոխվի և թղթապանակը դատարկ լինի:
**Պատճենել և տեղափոխել.** Որոշում է, թե Պատճենելու և Տեղափոխելու գործողությունները (գործողություն ընտրացանկից):
* **Տեղադրությունից աջ.** Բոլոր ֆայլերը կուղարկվեն ընտրված տեղ՝ առանց փորձելու վերստեղծելու աղբյուրի ճանապարհը բոլորի համար:
* **Վերստեղծել հարաբերական ճանապարհը.** Աղբյուր ֆայլի ճանապարհը կվերստեղծվի նշանակված թղթապանակում՝ խորքայինից մեկ աստիճան վեր՝ Թղթապանակներ վահանակից: Օրինակ՝ եթե ավելացնեք``/Users/foobar/SomeFolder`` Թղթապանակներ վահանակ և տեղափոխեք ``/Users/foobar/SomeFolder/SubFolder/SomeFile.ext`` նշանակության թղթապանակ ``/Users/foobar/MyDestination``, ֆայլի վերջնական տեղավորությունը կլինի ``/Users/foobar/MyDestination/SubFolder`` (``SomeFolder`` բաժանվել է աղբյուր ճանապարհից վերջնական տեղադրությունում):
* **Վերստեղծել հարաբերական ճանապարհը.** Աղբյուր ֆայլի ճանապարհը կվերստեղծվի նշանակված թղթապանակում՝ իր հարթությունում: Օրինակ՝ եթե տեղափոխեք ``/Users/foobar/SomeFolder/SubFolder/SomeFile.ext`` նշանակության թղթապանակ ``/Users/foobar/MyDestination``, ֆայլի վերջնական տեղավորությունը կլինի ``/Users/foobar/MyDestination/Users/foobar/SomeFolder/SubFolder``:
Ամեն դեպքում, dupeGuru լավ է հարթում անունների կոնֆլիկտը՝ նախապատրաստելով նշանակության ֆայլի անվան թիվը՝ եթե ֆայլը արդեն առկա է նշված տեղում:
**Ընտրված հրամանը.** Այս կարգավորումը որոշում է հրամանը, որը կկանչվի "Կանչել Ընտրված հրամանը" գործողությամբ: Կարող եք կանչել ցանկացած արտաքին ծրագիր՝ այս գործողությամբ: Սա կարող է օգտակար լինել եթե օրինակ փոխարենը ունեք տվյալների փոխանցման լավ ծրագիր:
Հրամանի տեսակը նույնն է, ինչ Դուք կգրեք Հրամանի տողում, բացառությամբ որտեղ կան 2 լրացումներ. **%d** և **%r**: Այս լրացումները կվերագրվեն ընտրված զոհի (%d) ճանապարհով և ընտրված զոհի հղման ֆայլով (%r):
Եթե կատարելի ֆայլի ճանապարհը պարունակում է բացատներ, ապա պետք է փակեք այն "" չակերտներով: Նաև պետք է փակեք լրացումները չակերտներով, որովհետև շատ հնարավոր է, որ զոհի ճանապարհները և հղումները կպարունակեն բացատներ: Ահա ընտրված հրամանի օրինակ՝ ::
"C:\Program Files\SuperDiffProg\SuperDiffProg.exe" "%d" "%r"

View File

@@ -0,0 +1,15 @@
Արագ Սկիզբ
===========
Արագ սկսելու համար dupeGuru-ն, պարզապես կատարեք ստանդարտ ստուգում՝ օգտագործելով ծրագրային կարգավորումները:
* Բացել dupeGuru-ն:
* Ավելացնել թղթապանակներ՝ ստուգելու համար նաև վերցնել & գցելը կամ "+" կոճակը:
* Սեղմեք **Ստուգել**:
* Սպասեք, մինչ ստուգումը կավարտվի:
* Նայեք ցանկացած կրկնօրինակին (Ֆայլեր, որոնք նշվել են) և ստուգվել, իրականում կրկնօրինակել խմբի հղմանը (Ֆայլը կրկնօրինակելուց առաջ չի նշվում և ընտրված չէ):
* Եթե ֆայլը սխալ կրկնօրինակ է, ապա ընտրեք այն և սեղմեք **Գործողություններ-->Հեռացնել ընտրվածը Արդյունքներից**:
* Եթե համոզված եք, որ կրկնօրինակը արդյունքներում կա, ապա սեղմեք **Խմբագրել-->Նշել բոլորը**, և ապա **Գործողություններ-->Ուղարկել Նշվածը Աղբարկղ**:
Սա միայն բազային ստուգում է: Կան բազմաթիվ կարգավորումներ, որոնք հնարավորություն են տալիս նշելու տարբեր արդյունքներ և մի քանի եղանակներ արդյունքների փոփոխման: Մանրամասների համար կարդացեք Օգնության ֆայլը:

View File

@@ -0,0 +1,26 @@
Վերաառաջնայնության կրկնօրինակներ
================================
dupeGuru-ը փորձում է որոշել, թե որ կրկնօրինակները պետք է գնան յուրաքանչյուր խմբի դիրքում,
բայց երբեմն սխալ է ստանում: Շատ դեպքերում, խելամիտ դասավորումը "Դելտա նշանակության"
և "Միայն սխալները" ընտրանքների ավելացնելով "Դարձնել ընտրվածը հղում" գործողության խորամանկություն է, բայց
երբեմն, պահանջվում են ավելի լավ ընտրանքներ: Ահա այստեղ է, որ վերաառաջնայնավորման պատուհանը բացվում է:
Կարող եք կանչել այն "Վերաառաջնայնավորման արդյունքները" կետից՝ "Գործողություններ" ընտրացանկից:
Այս պատուհանը հնարավորություն է տալիս Ձեզ ընտրելու չափանիշներ՝ հղման սխալին համապատասխան և կընտրվի
յուրաքանչյուր սխալի խումբը: Հասանելի չափանիշների ցանկը ձախում է և Ձեր ընտրած չափանիշների ցանկը գտնվում է
աջում:
Չափանիշն դա բաժինն է, որը հետևում է փաստարկին: Օրինակ՝ "Չափը (Բարձրագույն)" նշանակում է, որ սխալը
հետևում է մեծագույն չափի հաղթողին: "Թղթապանակը (/foo/bar)" նշանակում է, որ սխալները թղթապանակում կհաղթեն: Ավելացնելու համար
փաստարկ ամենաաջ մասում, նախ ընտրեք բաժինը, ապա ընտրեք
ենթափաստարկ հետևյալ ցանկում և ապա սեղմեք կոճակի սլաքի աջ մասում:
Ցանկի կարգը աջից շատ կարևոր է (կարող եք վերակարգավորել ֆայլերը վերցնել և գցելու միջոցով): Երբ
սխալի տեղորոշումը հղման դիրքում է, ապա օգտագործվում է առաջին փաստարկը: Եթե դա կապված է, ապա երկրորդ
փաստարկն է օգտագործվում և այլն և այլն: Օրինակ, եթե Ձեր փաստարկները "Չափը (բարձրագույն)" են և ապա
"Ֆայլի անունը (Չի ավարտվում թվով)", ապա հղման ֆայլը, որը կընտրվի խմբում, ապա կլինի
մեծագույն ֆայլը և եթե երկու կամ ավելի ֆայլեր ունեն նույն չափը, ապա մեկը ունի ֆայլի անուն, որը
չի ավարտվում թվով, կօգտագործվի: Երբ փաստարկի արդյունքը կապված է, կարգը, որի սխալները
նախկինում էին, խումբը պետք է օգտագործվի:

View File

@@ -0,0 +1,101 @@
Արդյունքները
=============
Երբ dupeGuru-ն ավարտի կրկնօրինակների ստուգումը, կցուցադրի արդյունքները կրկնօրինակ խմբերի ցանկում:
Կրկնօրինակ խմբերի մասին
-------------------------
Կրկնօրինակման խումբը դա ֆայլերի խումբ է, որոնք բոլորը համընկնում են միմյանց: Ամեն խումբ ունի իր **հղվող ֆայլը** և մեկ կամ մի քանի **կրկնօրինակ ֆայլեր**: Հղվող ֆայլը դա խմբի առաջին ֆայլն է: Այն ընտրված չէ, նրանից ցածր և փոխարեն կրկնօրինակ ֆայլերի:
Կարող եք նշել կրկնօրինակ ֆայլերը, բայց երբեք չեք կարող նշել հղվող ֆայլը խմբում: Սա երկրորդ պատճառն է՝ կանխելու dupeGuru-ին ջնջելու ոչ միայն կրկնօրինակ ֆայլերը, այլև դրանց հղումները: Համոզվա՞ծ եք, չէ, որ պետք չէ անել դա:
Ինչն է որոշում, թե որ ֆայլերը հղմամբ են և որ ֆայլերը կրկնօրինակ են՝ թղթապանակի նախնական վիճակում: Ֆայլը հղվող թղթապանակից միշտ հղվում է կրկնօրինակի խմբում: Եթե բոլոր ֆայլերը նորմալ թղթապանակից են, ապա չափն է որոշում, թե որ ֆայլը կլինի կրկնօրինակ խմբի հղումը: dupeGuru-ն ընդունում է, որ Դուք կցանկանաք պահել մեծ ֆայլերը, ուստի դրանք կտեղադրվեն հղման խմբում:
Կարող եք փոխել հղման ֆայլը խմբում ձեռադիր: Դա անելու համար ընտրեք կրկնօրինակ ֆայլը և սեղմեք **Գործողություններ-->Դարձնել ընտրվածը հղմամբ**:
Նայել արդյունքները
--------------------
Չնայած պարզապես կարող եք սեղմել **Խմբագրել-->Նշել բոլորը** և ապա **Գործողություններ-->Ուղարկել նշվածը Աղբարկղ** արագորեն ջնջելու համար բոլոր կրկնօրինակ ֆայլերը արդյունքներից, միշտ խորհուրդ է տրվում նախ նայել կրկնօրինակները և հետո միայն ջնջել:
Օգնելու համար Ձեզ նայելու արդյունքները, կարող եք օգտագործել **Մանրամասների վահանակը**: Այս վահանակը ցուցադրում է բոլոր մանրամասները ընտրված ընթացիկ ֆայլի, ինչպես նաև հղման մանրամասները: Սա շատ հարմար է արագորեն որոշելու, թե արդյոք կրկնօրինակը իրոքից կրկնօրինակ է, թե ոչ: Կարող եք նաև կրկնակի սեղմեք ֆայլի վրա՝ բացելու համար այն նրա հետ ասոցիացված ծրագրով:
Եթե ունեք շատ սխալ կրկնօրինակներ, ապա ճիշտ կրկնօրինակները (Եթե Ձեր ֆիլտրի խստությունը շատ է ցածր) որոշելու լավագույն եղանակը դրանք նայելն է, ընտրեք ճիշտ կրկնօրինակները և ապա սեղմեք **Գործողություններ-->Ուղարկել նշվածները Աղբարկղ**: Եթե իսկական կրկնօրինակները ավելի շատ են, քան սխալները, ապա կարող եք օգտագործել **Գործողություններ-->Ջնջել նշվածները արդյունքներից**:
Նշում և Ընտրում
---------------------
**նշվածը** կրկնօրինակ է՝ նշված նշանով, որը ընտրվում է: **ընտրվածը** կրկնօրինակ է, որը ընդգծվում է կամ առանձնացվում է: Ընտրելու բազմակի եղանակները կարող են կատարվել dupeGuru-ում ստանդարտ ճանապարհով (Shift/Command/Control սեղմամբ): կարող եք փոփոխել բոլոր ընտրված կրկնօրինակների վիճակը՝ սեղմելով **space**:
Ցուցադրել Միայն Սխալները
-------------------------
Եթե այս ընտրանքը միացված է, ապա կրկնօրինակները ցուցադրվում են առանց իրենց համապատասխան հղվող ֆայլի։ Կարող եք ընտրել, նծել կամ դասավորել այս ցանկը, ինչպես օոր նորմալ եղանակում։
dupeGuru-ի արդյունքները, երբ այն նորմալ եղանակում է, դասավորվում են համաձայն կրկնօրինակվող խմբերի' **հղվող ֆայլի** ։ Սա նշանակում է, որ եթե Դուք ցանկանաք, օրինակի համար, նշել բոլոր կրկնօրինակները "exe" ընդլայնմամբ, ապա չեք կարող պարզապես դասավորել արդյունքները ըստ "Տեսակի"՝ ունենալու համար բոլոր exe կրկնօրինակները միասին, որովհետև խումբը կարող է կազմված լինի մեկից ավելի ֆայլերից։ Ահա այստեղ է, որ աշխատում է Միայն Սխալները եղանակը։ Նշելու համար բոլոր "exe" կրկնօրինակները, Դուք պարզապես պետք է՝
* Միացնեք Միայն Սխալները եղանակը։
* Ավելացնեք "Տեսակը" սյունը՝ "Սյուներ" ընտրացանկին։
* Սեղմեք "Տեսակը" սյանը՝ դասավորելու համար ցանկը ըստ տեսակի։
* Տեղադրել "exe" տեսակի առաջին կրկնօրինակը։
* Ընտրեք այն։
* Պտտեք ներքև ցանկում՝ տեղադրելու համար "exe" տեսակի վերջին կրկնօրինակը։
* Սեղմած պահեք Shift-ը և սեղմեք նրա վրա։
* Սեղմեք Space՝ նշելու համար բոլոր կրկնօրինակները։
Դելտա նշանակությունները
--------------------------
Եթե միացնեք սա, որոշ սյուներ կցուցադրվեն նշանակություն՝ հարաբերական կրկնօրինակների հղմանը՝ բացարձակ նշանակությունների փոխարեն։ Այս դելտա նշանակությունները նաև կցուցադրվեն տարբեր գույներով, ուստի կարող եք դրանք հեշտությամբ տեսնել։ Օրինակ՝ եթե կրկնօրինակը 1.2 ՄԲ է և եթե նրա հղումը 1.4 ՄԲ է, ապա Չափը սյունում կցուցադրվի -0.2 ՄԲ։
Միայն Սխալները և Դելտա նշանակությունները
------------------------------------------
Միայն Սխալները եղանակը բացում է իր իսկական ուժը, երբ Դուք օգտագործում եք այն Դելտա նշանակությունների հետ։ Երբ միացնեք այն, բացարձակ նշանակությունների փոխարեն կցուցադրվեն հարաբերական նշանակությունները։ Այսպիսով օրինակ, եթե ցանկանում եք արդյունքներից հեռացնել բոլոր կրկնօրինակները, որոնք 300 Կբ-ից մեծ են իրենց հղումներից, ապա չեք կարող դասավորել միայն սխալները արդյունքները ըստ չափի, այդ դեպքում ընտրեք բոլոր կրկնօրինակները, որոնք -300 են Չափը սյունից, ջնջեք դրանք և ապա արեք նույն գործողությունը նաև 300-ից բարձր կրկնօրինակների համար՝ ցանկի ներքևում։
Կարող եք նաև օգտագործել սա՝ փոխելու համար կրկնօրինակման ցանկի հղման առաջնայնությունը։ Նոր ստուգումը կատարելուց հետո, եթե չլինեն հղվող թղթապանակներ, հղվող ֆայլը ամեն խմբի կլինի ամենամեծ ֆայլը։ Եթե ցանկանում եք փոխել այն, օրինակի համար, ըստ վերջին փոփոխման ժամանակի, կարող եք դասավորել միայն սխալները արդյունքները ըստ փոփոխման ժամանակի **նվազման** կարգով, ընտրեք բոլոր կրկնօրինակները, որոնց փոփոխման դելտա ժամանակը բարձր է 0-ից և սեղմեք **Դարձնել ընտրվածը հղում**։ Պատճառը,որ դասավորում եք ըստ նվազման կարգի այն է, որ եթե 2 ֆայլերից, որոնք կընտրվեն նույն կրկնօրինակ խմբում, երբ սեղմեք **Դարձնել ընտրվածը հղում**, ապա ցանկի միայն առաջինը կդառնա հղում, մյուսները կանտեսվեն։ Եվ մինչև Դուք ցանկանաք վերջին փոփոխված ֆայլը դարձնել փոփոխված՝ ունենալով դասավորման նվազման կարգը, ապա ցանկի առաջին ֆայլը կլինի վերջին փոփոխված ֆայլը։
.. todo:: Add "Non-numerical delta" information.
Ֆիլտրում
---------
dupeGuru-ն աջակցում է հետստուգման ֆիլտրում։ Սրանով Դուք կարող եք սեղմել ներքև արդյունքները, որպեսզի կարողանաք կատարեք գործողություններ դրա հետ։ Օրինակ՝ կարող եք հեշտությամբ նշել բոլոր կրկնօրինակերը նրանց անվան մեջ պարունակող "պատճեն" հատկությամբ՝ ֆիլտրի կողմից օգտագործված արդյունքներից։
.. todo:: Qt has a toolbar search field now, not a menu item.
**Windows.** Ֆիլտրելու հնարավորությունը օգտագործելու համար սեղմեք Գործողություններ --> Կիրառել ֆիլտրը, գրեք կիրառվող ֆիլտրը և սեղմեք Կիրառել։ Չֆիլտրված արդյունքներին վերադառնալու համար սեղմեք Գործողություններ --> Չեղարկել ֆիլտրը։
**Mac OS X.** Ֆիլտրելու հնարավորությունը օգտագործելու համար նշեք Ձեր ֆիլտրը "Ֆիլտր" որոնման դաշտում գործիքաշերտի։ Չֆիլտրված արդյունքներին վերադառնալու համար սեղմեք դատարկ թողեք դաշտը կամ սեղմեք "X"։
Պարզ եղանակում (ծրագրային եղանակն է), ինչ տեսակի ֆիլտր է տողում օգտագործվել փաստացի ֆիլտրման համար, խմբային նիշի բացառությամբ **\***. Այսպիսով, եթե նշում եք "[*]" որպես ֆիլտր, այն կհամընկնի [] փակագծերի հետ, այնուհանդերձ կլինի այդ փակագծերի միջև։
Լրացուցիչ ընդլայնված ֆիլտրման համար, կարող եք միացնել "Ֆիլտրելիս օգտագործել կանոնավոր սահմանումները"։ Ապա ֆիլտրման հնարավորությունը կօգտագործվի **կանոնավոր սահմանմամբ** ։ Կանոնավոր սահմանումը դա համապատասխանացման տեքստի լեզուն է։ Առավել մանրամասն կարող եք կարդալ `regular-expressions.info <http://www.regular-expressions.info>`_ կայքում։
Համապատասխանեցումները զգայուն չեն ո՛չ պարզ, ո՛չ էլ regexp եղանակում։
Համապատասխանեցման ֆիլտրի դեպքում, Ձեր կանոնավոր սահմանումը չի ունենա ամբողջական ֆայլի անունը, այն միայն կպարունակի սահմանմանը համապատասխան տողին։
Կարող եք տեղեկացնել, որ ոչ բոլոր կրկնօրինակներն են ֆիլտրված արդյունքներում համապատասխանում ֆիլտրին։ Ահա թե ինչու ինչքան շուտ որ պարզ կրկնօրինակը խմբում համապատասխանի ֆիլտրին ամբողջ խումբը կմնա արդյունքներում, ուստի ավելի հեշտ կլինի նայելու կրկնօրինակների կազմը։ Այնուհանդերձ, չհամապատասխանող կրկնօրինակերը "հղման եղանակում են"։ Չնայած որ Դուք կարող եք կատարել գործողություններ, ինչպես օրինակ նշել բոլորը և համոզված լինեք, որ միայն նշված են ֆիլտրված կրկնօրինակերը։
Գործողություններ Ընտրացանկը
----------------------------
* **Մաքրել անտեսման ցանկը.** Հեռացնում է Ձեր ավելացրած բոլոր անտեսված համընկնումները։ Դուք պետք է սկսեք նոր ստուգում, որպեսզի նոր մաքրված անտեսումների ցանկը էֆֆեկտիվ լինի։
* **Արտածել արդյունքները XHTML-ով.** Վերցնում է ընթացիկ արդյունքները և ստեղծում XHTML ֆայլը։ Սյուննրը, որոնք տեսանելի են այս կոճակը սեղմելիս կլինեն նաև XHTML ֆայլում։ Ֆայլը միանգամից կբացվի հիմնական դիտարկիչում։
* **Ուղարկել նշվածները Աղբարկղ.** Բոլոր նշված կրկնօրինակերը հեռացնում է Աղբարկղ։
* **Ջնջել նշվածը և Վերագրել հղմամբ.** Բոլոր նշված կրկնօրինակերը հեռացնում է Աղբարկղ, բայց դա անելուց հետո ջնջված ֆայլերը վերագրվում են ըստ `հղման <http://en.wikipedia.org/wiki/Hard_link>`_ հղվող ֆայլում (Միայն OS X և Linux-ում)
* **Տեղափոխել նշվածը՝...:** Հարցնում է Ձեզ թղթապանակի մասին և ապա տեղափոխում է բոլոր նշված ֆայլերը այդ թղթապանակ։ Աղբյուր ֆայլերի ճանապարհը կարող է վերստեղծվել նշանակության թղթապանակում՝ կախված "Պատճենելու և Տեղափոխելու" կարգավորումներից։
* **Պատճենել նշվածը՝...:** Հարցնում է Ձեզ թղթապանակի մասին և ապա պատճենում է բոլոր նշված ֆայլերը այդ թղթապանակ։ Աղբյուր ֆայլերի ճանապարհը կարող է վերստեղծվել նշանակության թղթապանակում՝ կախված "Պատճենելու և Տեղափոխելու" կարգավորումներից։
* **Հեռացնել նշվածները արդյունքներից.** Հեռացնում է բոլոր նշված կրկնօրինակները արդյունքներից։ Ակտուալ ֆայլերին դա չի վերաբերվի և դրանք կմնան։
* **Հեռացնել ընտրվածները արդյունքներից.** Հեռացնում է բոլոր ընտրված կրկնօրինակները արդյունքներից։ Հիշեք, որ ընտրված բոլոր հղվող ֆայլերը կանտեսվեն,այս գործողությամբ կջնջվեն միայն կրկնօրինակերը։
* **Դարձնել ընտրվածը հղում.** Առաջ է մղում բոլոր ընտրված կրկնօրինակները որպես հղումներ։ Եթե կրկնօրինակը խմբի մասն է, որը ունի հղման թղթապանակ (կապույտ գույնով), ապա ոչ մի գործողություն չի կատարվի դրա համար։ Իսկ եթե միևնույն խմբում կան մեկից ավելի ընտրված կրկնօրինակներ, ապա առաջ կմղվի ամեն խմբից միայն առաջինը։
* **Ավելացնել ընտրվածը անտեսումների ցանկին.** Նախ բոլոր կրկնօրինակները հեռացվում են արդյունքների ցանկից, ապա ավելացվում է կրկնօրինակի համընկումը և ընթացիկ հղումը անտեսումների ցանկին։ Այս համընկնումը այլևս առաջ չի գա հետագա ստուգումների ժամանակ։ Կրկնօրինակը կարող է հետ բերվել, բայց այն կհամապատասխանի հղման այլ ֆայլի։ Կարող եք մաքրել անտեսումների ցանկը Մաքրել անտեսումների ցանկը հրամանով։
* **Բացել ընտրվածը հիմական ծրագրով.** Բացում է ֆայլը իր հետ ասոցիացված ծրագրով։
* **Ցուցադրել ընտրվածը որոնման մեջ.** Բացում է ֆայլը պարունակող թղթապանակը։
* **Կանչել Ընտրված հրամանը.** Բացում է կարգավորումներոմ Ձեր կողմից նշված արտաքին ծրագիրը։
* **Անվանափոխել ընտրվածը.** Ձեզ հարցում կկատարվի նոր անվան համար, ապա ընտրված ֆայլը կանվանափոխվի։
.. todo:: Add Move and iPhoto/iTunes warning
.. todo:: Add "Deletion Options" section.

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/hy/_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/hy/_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/hy/_static/comment.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

311
help/hy/_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: 'hy',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

376
help/hy/_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/hy/_static/jquery-3.2.1.js vendored Normal file

File diff suppressed because it is too large Load Diff

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

File diff suppressed because one or more lines are too long

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

BIN
help/hy/_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 */

View File

@@ -0,0 +1,761 @@
/*
* searchtools.js_t
* ~~~~~~~~~~~~~~~~
*
* Sphinx JavaScript utilities for the full-text search.
*
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* Non-minified version JS is _stemmer.js if file is provided */
/**
* Porter Stemmer
*/
var Stemmer = function() {
var step2list = {
ational: 'ate',
tional: 'tion',
enci: 'ence',
anci: 'ance',
izer: 'ize',
bli: 'ble',
alli: 'al',
entli: 'ent',
eli: 'e',
ousli: 'ous',
ization: 'ize',
ation: 'ate',
ator: 'ate',
alism: 'al',
iveness: 'ive',
fulness: 'ful',
ousness: 'ous',
aliti: 'al',
iviti: 'ive',
biliti: 'ble',
logi: 'log'
};
var step3list = {
icate: 'ic',
ative: '',
alize: 'al',
iciti: 'ic',
ical: 'ic',
ful: '',
ness: ''
};
var c = "[^aeiou]"; // consonant
var v = "[aeiouy]"; // vowel
var C = c + "[^aeiouy]*"; // consonant sequence
var V = v + "[aeiou]*"; // vowel sequence
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
var s_v = "^(" + C + ")?" + v; // vowel in stem
this.stemWord = function (w) {
var stem;
var suffix;
var firstch;
var origword = w;
if (w.length < 3)
return w;
var re;
var re2;
var re3;
var re4;
firstch = w.substr(0,1);
if (firstch == "y")
w = firstch.toUpperCase() + w.substr(1);
// Step 1a
re = /^(.+?)(ss|i)es$/;
re2 = /^(.+?)([^s])s$/;
if (re.test(w))
w = w.replace(re,"$1$2");
else if (re2.test(w))
w = w.replace(re2,"$1$2");
// Step 1b
re = /^(.+?)eed$/;
re2 = /^(.+?)(ed|ing)$/;
if (re.test(w)) {
var fp = re.exec(w);
re = new RegExp(mgr0);
if (re.test(fp[1])) {
re = /.$/;
w = w.replace(re,"");
}
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1];
re2 = new RegExp(s_v);
if (re2.test(stem)) {
w = stem;
re2 = /(at|bl|iz)$/;
re3 = new RegExp("([^aeiouylsz])\\1$");
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re2.test(w))
w = w + "e";
else if (re3.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
else if (re4.test(w))
w = w + "e";
}
}
// Step 1c
re = /^(.+?)y$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(s_v);
if (re.test(stem))
w = stem + "i";
}
// Step 2
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step2list[suffix];
}
// Step 3
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step3list[suffix];
}
// Step 4
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
re2 = /^(.+?)(s|t)(ion)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
if (re.test(stem))
w = stem;
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1] + fp[2];
re2 = new RegExp(mgr1);
if (re2.test(stem))
w = stem;
}
// Step 5
re = /^(.+?)e$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
re2 = new RegExp(meq1);
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
w = stem;
}
re = /ll$/;
re2 = new RegExp(mgr1);
if (re.test(w) && re2.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
// and turn initial Y back to y
if (firstch == "y")
w = firstch.toLowerCase() + w.substr(1);
return w;
}
}
/**
* Simple result scoring code.
*/
var Scorer = {
// Implement the following function to further tweak the score for each result
// The function takes a result array [filename, title, anchor, descr, score]
// and returns the new score.
/*
score: function(result) {
return result[4];
},
*/
// query matches the full name of an object
objNameMatch: 11,
// or matches in the last dotted part of the object name
objPartialMatch: 6,
// Additive scores depending on the priority of the object
objPrio: {0: 15, // used to be importantResults
1: 5, // used to be objectResults
2: -5}, // used to be unimportantResults
// Used when the priority is not in the mapping.
objPrioDefault: 0,
// query found in title
title: 15,
// query found in terms
term: 5
};
var splitChars = (function() {
var result = {};
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
var i, j, start, end;
for (i = 0; i < singles.length; i++) {
result[singles[i]] = true;
}
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
for (i = 0; i < ranges.length; i++) {
start = ranges[i][0];
end = ranges[i][1];
for (j = start; j <= end; j++) {
result[j] = true;
}
}
return result;
})();
function splitQuery(query) {
var result = [];
var start = -1;
for (var i = 0; i < query.length; i++) {
if (splitChars[query.charCodeAt(i)]) {
if (start !== -1) {
result.push(query.slice(start, i));
start = -1;
}
} else if (start === -1) {
start = i;
}
}
if (start !== -1) {
result.push(query.slice(start));
}
return result;
}
/**
* Search Module
*/
var Search = {
_index : null,
_queued_query : null,
_pulse_status : -1,
init : function() {
var params = $.getQueryParameters();
if (params.q) {
var query = params.q[0];
$('input[name="q"]')[0].value = query;
this.performSearch(query);
}
},
loadIndex : function(url) {
$.ajax({type: "GET", url: url, data: null,
dataType: "script", cache: true,
complete: function(jqxhr, textstatus) {
if (textstatus != "success") {
document.getElementById("searchindexloader").src = url;
}
}});
},
setIndex : function(index) {
var q;
this._index = index;
if ((q = this._queued_query) !== null) {
this._queued_query = null;
Search.query(q);
}
},
hasIndex : function() {
return this._index !== null;
},
deferQuery : function(query) {
this._queued_query = query;
},
stopPulse : function() {
this._pulse_status = 0;
},
startPulse : function() {
if (this._pulse_status >= 0)
return;
function pulse() {
var i;
Search._pulse_status = (Search._pulse_status + 1) % 4;
var dotString = '';
for (i = 0; i < Search._pulse_status; i++)
dotString += '.';
Search.dots.text(dotString);
if (Search._pulse_status > -1)
window.setTimeout(pulse, 500);
}
pulse();
},
/**
* perform a search for something (or wait until index is loaded)
*/
performSearch : function(query) {
// create the required interface elements
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
this.status = $('<p style="display: none"></p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);
$('#search-progress').text(_('Preparing search...'));
this.startPulse();
// index already loaded, the browser was quick!
if (this.hasIndex())
this.query(query);
else
this.deferQuery(query);
},
/**
* execute search (requires search index to be loaded)
*/
query : function(query) {
var i;
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
// stem the searchterms and add them to the correct list
var stemmer = new Stemmer();
var searchterms = [];
var excluded = [];
var hlterms = [];
var tmp = splitQuery(query);
var objectterms = [];
for (i = 0; i < tmp.length; i++) {
if (tmp[i] !== "") {
objectterms.push(tmp[i].toLowerCase());
}
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
tmp[i] === "") {
// skip this "word"
continue;
}
// stem the word
var word = stemmer.stemWord(tmp[i].toLowerCase());
// prevent stemmer from cutting word smaller than two chars
if(word.length < 3 && tmp[i].length >= 3) {
word = tmp[i];
}
var toAppend;
// select the correct list
if (word[0] == '-') {
toAppend = excluded;
word = word.substr(1);
}
else {
toAppend = searchterms;
hlterms.push(tmp[i].toLowerCase());
}
// only add if not already in the list
if (!$u.contains(toAppend, word))
toAppend.push(word);
}
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
// console.debug('SEARCH: searching for:');
// console.info('required: ', searchterms);
// console.info('excluded: ', excluded);
// prepare search
var terms = this._index.terms;
var titleterms = this._index.titleterms;
// array of [filename, title, anchor, descr, score]
var results = [];
$('#search-progress').empty();
// lookup as object
for (i = 0; i < objectterms.length; i++) {
var others = [].concat(objectterms.slice(0, i),
objectterms.slice(i+1, objectterms.length));
results = results.concat(this.performObjectSearch(objectterms[i], others));
}
// lookup as search terms in fulltext
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
// let the scorer override scores with a custom scoring function
if (Scorer.score) {
for (i = 0; i < results.length; i++)
results[i][4] = Scorer.score(results[i]);
}
// now sort the results by score (in opposite order of appearance, since the
// display function below uses pop() to retrieve items) and then
// alphabetically
results.sort(function(a, b) {
var left = a[4];
var right = b[4];
if (left > right) {
return 1;
} else if (left < right) {
return -1;
} else {
// same score: sort alphabetically
left = a[1].toLowerCase();
right = b[1].toLowerCase();
return (left > right) ? -1 : ((left < right) ? 1 : 0);
}
});
// for debugging
//Search.lastresults = results.slice(); // a copy
//console.info('search results:', Search.lastresults);
// print the results
var resultCount = results.length;
function displayNextItem() {
// results left, load the summary and display it
if (results.length) {
var item = results.pop();
var listItem = $('<li style="display:none"></li>');
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
// dirhtml builder
var dirname = item[0] + '/';
if (dirname.match(/\/index\/$/)) {
dirname = dirname.substring(0, dirname.length-6);
} else if (dirname == 'index/') {
dirname = '';
}
listItem.append($('<a/>').attr('href',
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
highlightstring + item[2]).html(item[1]));
} else {
// normal html builders
listItem.append($('<a/>').attr('href',
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
highlightstring + item[2]).html(item[1]));
}
if (item[3]) {
listItem.append($('<span> (' + item[3] + ')</span>'));
Search.output.append(listItem);
listItem.slideDown(5, function() {
displayNextItem();
});
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
if (suffix === undefined) {
suffix = '.txt';
}
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
dataType: "text",
complete: function(jqxhr, textstatus) {
var data = jqxhr.responseText;
if (data !== '' && data !== undefined) {
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
}
Search.output.append(listItem);
listItem.slideDown(5, function() {
displayNextItem();
});
}});
} else {
// no source available, just display title
Search.output.append(listItem);
listItem.slideDown(5, function() {
displayNextItem();
});
}
}
// search finished, update title and status message
else {
Search.stopPulse();
Search.title.text(_('Search Results'));
if (!resultCount)
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
else
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
Search.status.fadeIn(500);
}
}
displayNextItem();
},
/**
* search for object names
*/
performObjectSearch : function(object, otherterms) {
var filenames = this._index.filenames;
var docnames = this._index.docnames;
var objects = this._index.objects;
var objnames = this._index.objnames;
var titles = this._index.titles;
var i;
var results = [];
for (var prefix in objects) {
for (var name in objects[prefix]) {
var fullname = (prefix ? prefix + '.' : '') + name;
if (fullname.toLowerCase().indexOf(object) > -1) {
var score = 0;
var parts = fullname.split('.');
// check for different match types: exact matches of full name or
// "last name" (i.e. last dotted part)
if (fullname == object || parts[parts.length - 1] == object) {
score += Scorer.objNameMatch;
// matches in last name
} else if (parts[parts.length - 1].indexOf(object) > -1) {
score += Scorer.objPartialMatch;
}
var match = objects[prefix][name];
var objname = objnames[match[1]][2];
var title = titles[match[0]];
// If more than one term searched for, we require other words to be
// found in the name/title/description
if (otherterms.length > 0) {
var haystack = (prefix + ' ' + name + ' ' +
objname + ' ' + title).toLowerCase();
var allfound = true;
for (i = 0; i < otherterms.length; i++) {
if (haystack.indexOf(otherterms[i]) == -1) {
allfound = false;
break;
}
}
if (!allfound) {
continue;
}
}
var descr = objname + _(', in ') + title;
var anchor = match[3];
if (anchor === '')
anchor = fullname;
else if (anchor == '-')
anchor = objnames[match[1]][1] + '-' + fullname;
// add custom score for some objects according to scorer
if (Scorer.objPrio.hasOwnProperty(match[2])) {
score += Scorer.objPrio[match[2]];
} else {
score += Scorer.objPrioDefault;
}
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
}
}
}
return results;
},
/**
* search for full-text terms in the index
*/
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
var docnames = this._index.docnames;
var filenames = this._index.filenames;
var titles = this._index.titles;
var i, j, file;
var fileMap = {};
var scoreMap = {};
var results = [];
// perform the search on the required terms
for (i = 0; i < searchterms.length; i++) {
var word = searchterms[i];
var files = [];
var _o = [
{files: terms[word], score: Scorer.term},
{files: titleterms[word], score: Scorer.title}
];
// no match but word was a required one
if ($u.every(_o, function(o){return o.files === undefined;})) {
break;
}
// found search word in contents
$u.each(_o, function(o) {
var _files = o.files;
if (_files === undefined)
return
if (_files.length === undefined)
_files = [_files];
files = files.concat(_files);
// set score for the word in each file to Scorer.term
for (j = 0; j < _files.length; j++) {
file = _files[j];
if (!(file in scoreMap))
scoreMap[file] = {}
scoreMap[file][word] = o.score;
}
});
// create the mapping
for (j = 0; j < files.length; j++) {
file = files[j];
if (file in fileMap)
fileMap[file].push(word);
else
fileMap[file] = [word];
}
}
// now check if the files don't contain excluded terms
for (file in fileMap) {
var valid = true;
// check if all requirements are matched
if (fileMap[file].length != searchterms.length)
continue;
// ensure that none of the excluded terms is in the search result
for (i = 0; i < excluded.length; i++) {
if (terms[excluded[i]] == file ||
titleterms[excluded[i]] == file ||
$u.contains(terms[excluded[i]] || [], file) ||
$u.contains(titleterms[excluded[i]] || [], file)) {
valid = false;
break;
}
}
// if we have still a valid result we can add it to the result list
if (valid) {
// select one (max) score for the file.
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
}
}
return results;
},
/**
* helper function to return a node containing the
* search summary for a given text. keywords is a list
* of stemmed words, hlwords is the list of normal, unstemmed
* words. the first one is used to find the occurrence, the
* latter for highlighting it.
*/
makeSearchSummary : function(text, keywords, hlwords) {
var textLower = text.toLowerCase();
var start = 0;
$.each(keywords, function() {
var i = textLower.indexOf(this.toLowerCase());
if (i > -1)
start = i;
});
start = Math.max(start - 120, 0);
var excerpt = ((start > 0) ? '...' : '') +
$.trim(text.substr(start, 240)) +
((start + 240 - text.length) ? '...' : '');
var rv = $('<div class="context"></div>').text(excerpt);
$.each(hlwords, function() {
rv = rv.highlightText(this, 'highlighted');
});
return rv;
}
};
$(document).ready(function() {
Search.init();
});

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/hy/_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/hy/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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Changelog &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="prev" title="Հաճախ Տրվող Հարցեր" href="faq.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</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">Հաճախ Տրվող Հարցեր</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
</p>
</div>
<div class="content">
<div class="section" id="changelog">
<h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline"></a></h1>
<p><strong>About the word &quot;crash&quot;:</strong> When reading this changelog, you might be alarmed at the number of fixes
for &quot;crashes&quot;. Be aware that when the word &quot;crash&quot; is used here, it refers to &quot;soft crashes&quot; 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
&quot;hard crashes&quot; in this changelog.</p>
<div class="section" id="id1">
<h2>4.0.3 (2016-11-24)<a class="headerlink" href="#id1" title="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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 mode's 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="Permalink to this headline"></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 &quot;Audio Contents&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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 dialog's 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="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Improved &quot;Make Selection Reference&quot; to make it clearer. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/222">#222</a>)</li>
<li>Improved &quot;Open Selected&quot; 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="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Added &quot;Export to CSV&quot;. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/189">#189</a>)</li>
<li>Added &quot;Replace with symlinks&quot; to complement &quot;Replace with hardlinks&quot;. [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 &quot;Rename Selected&quot; 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 &quot;Reset to Defaults&quot; in the Columns menu wouldn't 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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Fixed the &quot;Folders&quot; 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="Permalink to this headline"></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 &quot;marked&quot; status.</li>
<li>Fixed &quot;Open with default application&quot;. (<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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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 &quot;.dupeguru&quot; 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="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Added the &quot;Folders&quot; 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="Permalink to this headline"></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 &quot;Send to Trash&quot; 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="Permalink to this headline"></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 &quot;unsaved results&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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 &quot;Add Directory&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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 wasn't 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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li>Improved error messages when files can't 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><dl class="first docutils">
<dt>Fixed bugs with selection being jumpy during &quot;Make Reference&quot; 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 couldn't 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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 &quot;X discarded&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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> &quot;Clear Ignore List&quot; crash in Windows.</li>
</ul>
</div>
<div class="section" id="id49">
<h2>2.5.2 (2008-01-10)<a class="headerlink" href="#id49" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> the handling of low memory situations.</li>
<li><strong>Improved</strong> the directory panel. The &quot;Remove&quot; button changes to &quot;Put Back&quot; 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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Added</strong> the &quot;Remove empty folders&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a &quot;bad file descriptor&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a &quot;ghosting&quot; 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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Fixed</strong> a mishandling of &quot;.app&quot; files (OS X).</li>
<li><strong>Fixed</strong> a bug preventing files from &quot;reference&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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 &quot;Size (MB)&quot; column for a &quot;Size (KB)&quot; column. The values are now &quot;ceiled&quot; instead of rounded. Therefore, a size &quot;0&quot; 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 aren't 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> unicode support.</li>
<li><strong>Improved</strong> the &quot;Reveal in Finder&quot; (&quot;Open Containing Folder&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Improved</strong> duplicate scanning speed.</li>
<li><strong>Added</strong> a warning that a file couldn't 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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Added</strong> &quot;Rename Selected&quot; feature.</li>
<li><strong>Fixed</strong> some minor issues with &quot;Reload Last Results&quot; 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Added</strong> the &quot;Match similar words&quot; 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="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Added</strong> the &quot;Display delta values&quot; 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="Permalink to this headline"></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 wasn't 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="Permalink to this headline"></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="Permalink to this headline"></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="Permalink to this headline"></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">Հաճախ Տրվող Հարցեր</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

102
help/hy/faq.html Normal file
View File

@@ -0,0 +1,102 @@
<!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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Հաճախ Տրվող Հարցեր &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="next" title="Changelog" href="changelog.html" />
<link rel="prev" title="Վերաառաջնայնության կրկնօրինակներ" href="reprioritize.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>Հաճախ Տրվող Հարցեր</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="reprioritize.html">Վերաառաջնայնության կրկնօրինակներ</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="changelog.html">Changelog</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="id1">
<h1>Հաճախ Տրվող Հարցեր<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h1>
<div class="topic">
<p class="topic-title first">Ի՞նչ է dupeGuru-ը:</p>
</div>
<div class="topic">
<p class="topic-title first">Ի՞նչն է այս ծրագիրը առանձնացնում մյուս նմանատիպ ծրագրերից:</p>
<p>Ստուգելու համակարգը չափազանց նուրբ է: Կարող եք ինքներդ հարմարեցնել այն՝ ստանալու համար այն արդյունքը, ինչը որ Ձեզ պետք է: Կարող եք լրացուցիչ կարդալ այս մասին dupeGuru-ի կարգավորման ընտրանքներում՝ <a class="reference internal" href="preferences.html"><span class="doc">Կարգավորումների էջում</span></a>:</p>
</div>
<div class="topic">
<p class="topic-title first">Ո՞րքանով է անվտանգ օգտագործելու dupeGuru-ը:</p>
<p>Շատ անվտանգ է: dupeGuru-ը նախագծվել է՝ համոզված լինելու համար, որ Դուք չջնջեք այն ֆայլերը, որոնք չպետք է ջնջեք: Նախ, կա հղմամբ համակարգային թղթապանակ, որը հնարավորություն է տալիս Ձեզ որոշելու թղթապանակներ, որտեղ Դուք բացարձակ <strong>չեք</strong> ցանկանում, որ dupeGuru-ն հնարավորություն տա Ձեզ ջնջելու ֆայլերը այստեղից, և ապա կա խմբի հղմամբ համակարգային համակարգ, որը համոզմունք է ստեղծում, որ Դուք <strong>միշտ</strong> պետք է պահեք գոնե մեկ անդամ կրկնօրինակվող խմբի:</p>
</div>
<div class="topic">
<p class="topic-title first">Ո՞րոն եք dupeGuru-ի լիցենզիայի սահմանափակումները:</p>
<p>Փորձնական եղանակում, Դուք կարող եք միայն կատարել գործողություններ 10 կրկնօրինակների հետ միաժամանակ: Ծրագրի
<a class="reference external" href="http://open.hardcoded.net/about/">Անվճար տարբերակում</a> mode, այնուհանդերձ չկան էական սահմանափակումներ:</p>
</div>
<div class="topic">
<p class="topic-title first">Ես ունեմ թղթապանակ, որտեղից ես իրապես չեմ ցանկանում ջնջել ֆայլեր:</p>
<p>Եթե Դուք ցանկանում եք համոզված լինել, որ dupeGuru-ն երբեք չի ջնջի ֆայլ կոնկրետ թղթապանակից, համոզված եղեք, որ տվել եք կարգը <strong>Հղման</strong> <a class="reference internal" href="folders.html"><span class="doc">Թղթապանակի ընտրություն</span></a>:</p>
</div>
<div class="topic">
<p class="topic-title first">Ի՞նչ է սա '(X վնասված)'՝ նշված դրության տողում:</p>
<p>Որոշ դեպքերում, որոշ համընկնումներ ներառված չեն վերջնական արդյունքում երկրորդական պատճառներով: Եկեք նայենք կոնկրետ օրինակի վրա: Մենք ունենք 3 ֆայլ. A, B և C: Մենք ստուգում ենք այն՝ օգտագործելով ֆիլտրի ցածր մակարդակով: Ստուգիչը արդեն որոշել է, որ A համընկնումները B-ի, A-ի համընկնումները C-ին, բայց B-ն <strong>չի</strong> համընկնում C-ին: Այստեղ dupeGuru-ն ունի մի շարք խնդիրներ: Այն չի կարող ստեղծել կրկնօրինակվող խումբ A, B և C իրենում, որովհետև ոչ բոլոր ֆայլերն են խմբում համընկնում միմյանց: Այն կարող է ստեղծել 2 խումբ. մեկ A-B խումբ և ապա մեկ A-C խումբ, բայց այն չի լինի՝ անվտանգության նկատառումներից ելնելով: Եկեք մտածենք սրա մասին. Եթե B-ն չի համընկնում C-ին, հնարավոր է դա նշանակում է, որ անգամ B, C կամ երկուսն էլ իրականում կրկնօրինակներ չեն: Եթե այնտեղ լինեն 2 խմբեր (A-B և A-C), ապա Դուք պետք է ջնջեք B-ն և C-ն: Եթե դրանցից մեկը կրկնօրինակ չէ, ապա դա այն չէ, ինչը որ Ձեզ պետք է, այնպես չէ՞: Այսպիսով, ինչ dupeGuru չի մի դեպքում նման սրան՝ բացառելով A-C համընկնումը (և ավելացնում է տեղեկացում դրության տողում): Այսպիսով, եթե Դուք ջնջեք B-ն և վերսկսեք ստուգումը, ապա կունենք A-C համընկնում հաջորդ արդյունքներում:</p>
</div>
<div class="topic">
<p class="topic-title first">Ես ցանկանում եմ նշել բոլոր ֆայլերը որոշված թղթապանակից: Ի՞նչ կարող եմ ես անել:</p>
<p>Միացնել <a class="reference internal" href="results.html"><span class="doc">Միայն Սխալները</span></a> եղանակը և սեղմեք թղթապանակի սյանը՝ դասավորելու համար կրկնօրինակները ըստ թղթապանակների: Հետագայում հեշտ կլինի ընտրելու բոլոր կրկնօրինակները նույն թղթապանակից և ապա սեղմեք Space՝ ընտրելու ահմար բոլոր կրկնօրինակները:</p>
</div>
<div class="topic">
<p class="topic-title first">Ես փորձում եմ կրկնօրինակները ուղարկել Աղբարկղ, բայց dupeGuru-ն ինձ ասում է, որ չես կարող: Ինչու՞: Ի՞նչ կարող եմ ես անել:</p>
<p>Շատ ժամանակ, պատճառը, թե ինչու dupeGuru-ն չի կարողանում տեղափոխել ֆայլերը Աղբարկղ, կայանում է ֆայլի լիազորությունների մեջ: Դուք պետք է <em>գրեք</em> լիազորությունները ֆայլերում, որոնք որ ցանկանում եք ուղարկել Աղբարկղ: Եթե Ձեզ անծանոթ է Հրամանի տողը, ապա Դուք կարող եք օգտագործել լրացուցիչ գործիքներ, ինչպես օրինակ <a class="reference external" href="http://macchampion.com/arbysoft/BatchMod">BatChmod</a> լիազորումները նշելու համար:</p>
<p>Եթե dupeGuru-ն դեռ շարունակում է խնդիրներ առաջ բերել կապված լիազորությունների հետ, ապա կան խնդիրներ կապված՝ &quot;Տեղափոխել նշվածը...&quot; որպես շրջանցիկ խորամանկություն: Ուստի ֆայլերը Աղբարկ տեղափոխելիս Դուք ուղարկում եք այն ժամանակավոր թղթապանակ &quot;Տեղափոխել նշվածը...&quot; գործողությամբ և ապա Դուք կջնջեք այդ թղթապանակը ձեռադիր;</p>
<p>Եթե այս ամենը ձախողվի, <a class="reference external" href="http://www.hardcoded.net/support">կապնվեք HS աջակցության թիմի հետ</a>, մենք կփորձեք օգնել Ձեզ:</p>
</div>
<div class="admonition-todo admonition" id="index-0">
<p class="first admonition-title">Todo</p>
<p class="last">This FAQ qestion is outdated, see english version.</p>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="reprioritize.html">Վերաառաջնայնության կրկնօրինակներ</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</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.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

83
help/hy/folders.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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Թղթապանակի ընտրություն &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="next" title="Կարգավորումներ" href="preferences.html" />
<link rel="prev" title="Արագ Սկիզբ" href="quick_start.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>Թղթապանակի ընտրություն</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="quick_start.html">Արագ Սկիզբ</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="preferences.html">Կարգավորումներ</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="id1">
<h1>Թղթապանակի ընտրություն<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h1>
<p>Առաջին թղթապանակը, որ Դուք տեսնում եք dupeGuru-ն բացելիս դա թղթապանակի ընտրությունն է: Այս պատուհանը պարունակում է թղթապանակների ցանկը, որոնք կստուգվեն <strong>Ստուգել</strong> սեղմելիս:</p>
<p>Այս պատուհանը շատ հեշտ է օգտագործել: Եթե ցանկանում եք ավելացնել թղթապանակ, ապա սեղմեք <strong>+</strong> կոճակը: Եթե մինչ այդ ավելացնեք թղթապանակը, ապա կերևա ավելացված վերջին թղթապանակների ցանկը: Կարող եք սեղմել նրանցից մեկի վրա՝ ավելացնելու համար ուղղակի Ձեր ցանկում: Եթե սեղմեք հայտնվող պատուհանի առաջին ֆայլին՝ <strong>Ավելացնել նոր թղթապանակ...</strong>, ապա Ձեզ հարցում կկատարվի թղթապանակ ավելացնելու մասին: Եթե երբեք չեք ավելացրել թղթապանակ, ապա ոչ մի ընտրացանկ չի երևա և Ձեզ ուղղակի հարցում կարվի նոր թղթապանակ ավելացնելու մասին:</p>
<p>Այլընտրանքյին ճանապարհով թղթապանակներ կարող եք ավելացնել պարզապես դրանք գցելով ցանկում:</p>
<p>Թղթապանակը հեռացնելու համար ընտրեք թղթապանակը, սեղմեք <strong>-</strong>: Եթե ընտրված է ենթաթղթպանակը, երբ Դուք սեղմում եք կոճակին, ընտրված թղթապանակը կնշվի որպես <strong>բացառված</strong> (նայեք այստեղ)՝ ջնջվելու փոխարեն:</p>
<div class="section" id="id2">
<h2>Թղթապանակի վիճակը<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h2>
<p>Յուրաքանչյուր թղթապանակ կարող է լինել հետևյալ 3 եղանակներից մեկում.</p>
<ul class="simple">
<li><strong>Նորմալ.</strong> Այս թղթապանակում գտնված կրկնօրինակները կարող են ջնջվել:</li>
<li><strong>Հղված.</strong> Կրկնօրինակներ են գտնվել այս թղթապանակում, որոնք <strong>չեն կարող</strong> ջնջվել: Ֆայլերը այս թղթապանակից կարող են միայն ավարտվել <strong>հղում</strong> դիրքով խմբում: Եթե մեկ ֆայլից ավելի են հղման թղթապանակների հղումները, ապա միայն մեկը կպահվի: Մնացածը կջնջվեմ խմբից:</li>
<li><strong>Բացառված.</strong> Ֆայլերը այս թղթապանակում կներառվեն ստուգման մեջ:</li>
</ul>
<p>Թղթապանակի հիմնական վիճակը, իհարկե՛ <strong>Նորմալ է</strong>: Կարող եք օգտագործել <strong>Հղված</strong> վիճակը թղթապանակի համար, եթե ցանկանում եք համոզված լինել, որ ոչ մի ֆայլ չի ջնջվի:</p>
<p>Եթե նշել եք թղթապանակի վիճակը, բոլոր ենթաթղթապանակները միանգամից կժառանգեն այս վիճակը, եթե վիճակը պարզորոշ տրված է թղթապանակի կարգում:</p>
<div class="admonition-todo admonition" id="index-0">
<p class="first admonition-title">Todo</p>
<p class="last">Add iPhoto/Aperture/iTunes libraries notes</p>
</div>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="quick_start.html">Արագ Սկիզբ</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="preferences.html">Կարգավորումներ</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

58
help/hy/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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</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">Contents</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">Contents</a>
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

93
help/hy/index.html Normal file
View File

@@ -0,0 +1,93 @@
<!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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>dupeGuru help &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="next" title="Արագ Սկիզբ" href="quick_start.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="#">
<span>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>dupeGuru help</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
<a class="uplink" href="#">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="quick_start.html">Արագ Սկիզբ</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="dupeguru-help">
<h1>dupeGuru help<a class="headerlink" href="#dupeguru-help" title="Permalink to this headline"></a></h1>
<p>Չնայած dupeGuru-ն կարող է հեշտությամբ օգտագործվել առանց օգնության, այնուհանդերձ եթե կարդաք այս ֆայլը, այն մեծապես կօգնի Ձեզ ընկալելու ծրագրի աշխատանքը: Եթե Դուք նայում եք ձեռնարկը կրկնօրինակների առաջին ստուգման համար, ապա կարող եք ընտրել <a class="reference internal" href="quick_start.html"><span class="doc">Արագ Սկիզբ</span></a> հատվածը:</p>
<p>Շատ լավ միտք է պահելու dupeGuru թարմացված: Կարող եք բեռնել վեբ կայքի համապատասխան էջից <a class="reference external" href="https://www.hardcoded.net/dupeguru">homepage</a>:</p>
<p>Պարունակությունը.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="quick_start.html">Արագ Սկիզբ</a></li>
<li class="toctree-l1"><a class="reference internal" href="folders.html">Թղթապանակի ընտրություն</a><ul>
<li class="toctree-l2"><a class="reference internal" href="folders.html#id2">Թղթապանակի վիճակը</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="preferences.html">Կարգավորումներ</a></li>
<li class="toctree-l1"><a class="reference internal" href="results.html">Արդյունքները</a><ul>
<li class="toctree-l2"><a class="reference internal" href="results.html#id2">Կրկնօրինակ խմբերի մասին</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#id3">Նայել արդյունքները</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#id4">Նշում և Ընտրում</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#id5">Ցուցադրել Միայն Սխալները</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#id6">Դելտա նշանակությունները</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#id7">Միայն Սխալները և Դելտա նշանակությունները</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#id8">Ֆիլտրում</a></li>
<li class="toctree-l2"><a class="reference internal" href="results.html#id9">Գործողություններ Ընտրացանկը</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="reprioritize.html">Վերաառաջնայնության կրկնօրինակներ</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">Հաճախ Տրվող Հարցեր</a></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="Permalink to this headline"></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">Search Page</span></a></li>
</ul>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
<a class="uplink" href="#">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="quick_start.html">Արագ Սկիզբ</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

BIN
help/hy/objects.inv Normal file

Binary file not shown.

81
help/hy/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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Կարգավորումներ &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="next" title="Արդյունքները" href="results.html" />
<link rel="prev" title="Թղթապանակի ընտրություն" href="folders.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>Կարգավորումներ</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="folders.html">Թղթապանակի ընտրություն</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="results.html">Արդյունքները</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="id1">
<h1>Կարգավորումներ<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h1>
<p><strong>Կարող է ուղղել ֆայլի տեսակը.</strong> Եթե ընտրում եք այս վանդակը, ապա կրկնօրինակվող խմբերը կթույլատրվեն ունենալու տարբեր ընդլայնումներ: Եթե չընտրեք, ապա դրանք չեն լինի!</p>
<p><strong>Անտեսել կրկնօրինակների հղումը նույն ֆայլին file:</strong> Եթե այս ընտրանքը միացված է, dupeGuru-ն կստուգի կրկնօրինակները՝ տեսնելու համար արդյոք դրանք հղվում են նույնին <a class="reference external" href="http://en.wikipedia.org/wiki/Inode">inode</a>: Եթե այո, ապա դրանք չեն որոշվի որպես կրկնօրինակ: (Միայն OS X և Linux-ում)</p>
<p><strong>Ֆիլտրելիս օգտագործել կանոնավոր սահմանումներ.</strong> Եթե ընտրեք սա, ապա ֆիլտրման հնարավորությունը կդիմի ֆիլտրման հերթին, ինչպես որ <strong>կանոնավոր սահմանում</strong>: Դրա բացատրությունը դուրս կգա այս փաստաթղթի շրջանակից: Ավելին կարող եք կարդալ այստեղ՝ <a class="reference external" href="http://www.regular-expressions.info">regular-expressions.info</a>:</p>
<p><strong>Ջնջել դատարկ թղթապանակները ջնջելուց կամ տեղափոխելուց.</strong> Երբ այս ընտրանքը միացված է, թղթապանակները կջնջվեն, երբ որ ֆայլը ջնջվի կամ տեղափոխվի և թղթապանակը դատարկ լինի:</p>
<p><strong>Պատճենել և տեղափոխել.</strong> Որոշում է, թե Պատճենելու և Տեղափոխելու գործողությունները (գործողություն ընտրացանկից):</p>
<ul class="simple">
<li><strong>Տեղադրությունից աջ.</strong> Բոլոր ֆայլերը կուղարկվեն ընտրված տեղ՝ առանց փորձելու վերստեղծելու աղբյուրի ճանապարհը բոլորի համար:</li>
<li><strong>Վերստեղծել հարաբերական ճանապարհը.</strong> Աղբյուր ֆայլի ճանապարհը կվերստեղծվի նշանակված թղթապանակում՝ խորքայինից մեկ աստիճան վեր՝ Թղթապանակներ վահանակից: Օրինակ՝ եթե ավելացնեք``/Users/foobar/SomeFolder`` Թղթապանակներ վահանակ և տեղափոխեք <code class="docutils literal notranslate"><span class="pre">/Users/foobar/SomeFolder/SubFolder/SomeFile.ext</span></code> նշանակության թղթապանակ <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MyDestination</span></code>, ֆայլի վերջնական տեղավորությունը կլինի <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MyDestination/SubFolder</span></code> (<code class="docutils literal notranslate"><span class="pre">SomeFolder</span></code> բաժանվել է աղբյուր ճանապարհից վերջնական տեղադրությունում):</li>
<li><strong>Վերստեղծել հարաբերական ճանապարհը.</strong> Աղբյուր ֆայլի ճանապարհը կվերստեղծվի նշանակված թղթապանակում՝ իր հարթությունում: Օրինակ՝ եթե տեղափոխեք <code class="docutils literal notranslate"><span class="pre">/Users/foobar/SomeFolder/SubFolder/SomeFile.ext</span></code> նշանակության թղթապանակ <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MyDestination</span></code>, ֆայլի վերջնական տեղավորությունը կլինի <code class="docutils literal notranslate"><span class="pre">/Users/foobar/MyDestination/Users/foobar/SomeFolder/SubFolder</span></code>:</li>
</ul>
<p>Ամեն դեպքում, dupeGuru լավ է հարթում անունների կոնֆլիկտը՝ նախապատրաստելով նշանակության ֆայլի անվան թիվը՝ եթե ֆայլը արդեն առկա է նշված տեղում:</p>
<p><strong>Ընտրված հրամանը.</strong> Այս կարգավորումը որոշում է հրամանը, որը կկանչվի &quot;Կանչել Ընտրված հրամանը&quot; գործողությամբ: Կարող եք կանչել ցանկացած արտաքին ծրագիր՝ այս գործողությամբ: Սա կարող է օգտակար լինել եթե օրինակ փոխարենը ունեք տվյալների փոխանցման լավ ծրագիր:</p>
<p>Հրամանի տեսակը նույնն է, ինչ Դուք կգրեք Հրամանի տողում, բացառությամբ որտեղ կան 2 լրացումներ. <strong>%d</strong> և <strong>%r</strong>: Այս լրացումները կվերագրվեն ընտրված զոհի (%d) ճանապարհով և ընտրված զոհի հղման ֆայլով (%r):</p>
<p>Եթե կատարելի ֆայլի ճանապարհը պարունակում է բացատներ, ապա պետք է փակեք այն &quot;&quot; չակերտներով: Նաև պետք է փակեք լրացումները չակերտներով, որովհետև շատ հնարավոր է, որ զոհի ճանապարհները և հղումները կպարունակեն բացատներ: Ահա ընտրված հրամանի օրինակ՝</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">Թղթապանակի ընտրություն</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="results.html">Արդյունքները</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

75
help/hy/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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Արագ Սկիզբ &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="next" title="Թղթապանակի ընտրություն" href="folders.html" />
<link rel="prev" title="|appname| help" href="index.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>Արագ Սկիզբ</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="index.html">|appname| help</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="folders.html">Թղթապանակի ընտրություն</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="id1">
<h1>Արագ Սկիզբ<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h1>
<p>Արագ սկսելու համար dupeGuru-ն, պարզապես կատարեք ստանդարտ ստուգում՝ օգտագործելով ծրագրային կարգավորումները:</p>
<ul class="simple">
<li>Բացել dupeGuru-ն:</li>
<li>Ավելացնել թղթապանակներ՝ ստուգելու համար նաև վերցնել &amp; գցելը կամ &quot;+&quot; կոճակը:</li>
<li>Սեղմեք <strong>Ստուգել</strong>:</li>
<li>Սպասեք, մինչ ստուգումը կավարտվի:</li>
<li>Նայեք ցանկացած կրկնօրինակին (Ֆայլեր, որոնք նշվել են) և ստուգվել, իրականում կրկնօրինակել խմբի հղմանը (Ֆայլը կրկնօրինակելուց առաջ չի նշվում և ընտրված չէ):</li>
<li>Եթե ֆայլը սխալ կրկնօրինակ է, ապա ընտրեք այն և սեղմեք <strong>Գործողություններ--&gt;Հեռացնել ընտրվածը Արդյունքներից</strong>:</li>
<li>Եթե համոզված եք, որ կրկնօրինակը արդյունքներում կա, ապա սեղմեք <strong>Խմբագրել--&gt;Նշել բոլորը</strong>, և ապա <strong>Գործողություններ--&gt;Ուղարկել Նշվածը Աղբարկղ</strong>:</li>
</ul>
<p>Սա միայն բազային ստուգում է: Կան բազմաթիվ կարգավորումներ, որոնք հնարավորություն են տալիս նշելու տարբեր արդյունքներ և մի քանի եղանակներ արդյունքների փոփոխման: Մանրամասների համար կարդացեք Օգնության ֆայլը:</p>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="index.html">|appname| help</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="folders.html">Թղթապանակի ընտրություն</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

83
help/hy/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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Վերաառաջնայնության կրկնօրինակներ &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="next" title="Հաճախ Տրվող Հարցեր" href="faq.html" />
<link rel="prev" title="Արդյունքները" href="results.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>Վերաառաջնայնության կրկնօրինակներ</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="results.html">Արդյունքները</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="faq.html">Հաճախ Տրվող Հարցեր</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="id1">
<h1>Վերաառաջնայնության կրկնօրինակներ<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h1>
<p>dupeGuru-ը փորձում է որոշել, թե որ կրկնօրինակները պետք է գնան յուրաքանչյուր խմբի դիրքում,
բայց երբեմն սխալ է ստանում: Շատ դեպքերում, խելամիտ դասավորումը &quot;Դելտա նշանակության&quot;
և &quot;Միայն սխալները&quot; ընտրանքների ավելացնելով &quot;Դարձնել ընտրվածը հղում&quot; գործողության խորամանկություն է, բայց
երբեմն, պահանջվում են ավելի լավ ընտրանքներ: Ահա այստեղ է, որ վերաառաջնայնավորման պատուհանը բացվում է:
Կարող եք կանչել այն &quot;Վերաառաջնայնավորման արդյունքները&quot; կետից՝ &quot;Գործողություններ&quot; ընտրացանկից:</p>
<p>Այս պատուհանը հնարավորություն է տալիս Ձեզ ընտրելու չափանիշներ՝ հղման սխալին համապատասխան և կընտրվի
յուրաքանչյուր սխալի խումբը: Հասանելի չափանիշների ցանկը ձախում է և Ձեր ընտրած չափանիշների ցանկը գտնվում է
աջում:</p>
<p>Չափանիշն դա բաժինն է, որը հետևում է փաստարկին: Օրինակ՝ &quot;Չափը (Բարձրագույն)&quot; նշանակում է, որ սխալը
հետևում է մեծագույն չափի հաղթողին: &quot;Թղթապանակը (/foo/bar)&quot; նշանակում է, որ սխալները թղթապանակում կհաղթեն: Ավելացնելու համար
փաստարկ ամենաաջ մասում, նախ ընտրեք բաժինը, ապա ընտրեք
ենթափաստարկ հետևյալ ցանկում և ապա սեղմեք կոճակի սլաքի աջ մասում:</p>
<p>Ցանկի կարգը աջից շատ կարևոր է (կարող եք վերակարգավորել ֆայլերը վերցնել և գցելու միջոցով): Երբ
սխալի տեղորոշումը հղման դիրքում է, ապա օգտագործվում է առաջին փաստարկը: Եթե դա կապված է, ապա երկրորդ
փաստարկն է օգտագործվում և այլն և այլն: Օրինակ, եթե Ձեր փաստարկները &quot;Չափը (բարձրագույն)&quot; են և ապա
&quot;Ֆայլի անունը (Չի ավարտվում թվով)&quot;, ապա հղման ֆայլը, որը կընտրվի խմբում, ապա կլինի
մեծագույն ֆայլը և եթե երկու կամ ավելի ֆայլեր ունեն նույն չափը, ապա մեկը ունի ֆայլի անուն, որը
չի ավարտվում թվով, կօգտագործվի: Երբ փաստարկի արդյունքը կապված է, կարգը, որի սխալները
նախկինում էին, խումբը պետք է օգտագործվի:</p>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="results.html">Արդյունքները</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="faq.html">Հաճախ Տրվող Հարցեր</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

152
help/hy/results.html Normal file
View File

@@ -0,0 +1,152 @@
<!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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Արդյունքները &#8212; dupeGuru 4.0.3 documentation</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="Search" href="search.html" />
<link rel="next" title="Վերաառաջնայնության կրկնօրինակներ" href="reprioritize.html" />
<link rel="prev" title="Կարգավորումներ" href="preferences.html" />
</head><body>
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
<span>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>Արդյունքները</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
«&#160;&#160;<a href="preferences.html">Կարգավորումներ</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="reprioritize.html">Վերաառաջնայնության կրկնօրինակներ</a>&#160;&#160;»
</p>
</div>
<div class="content">
<div class="section" id="id1">
<h1>Արդյունքները<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h1>
<p>Երբ dupeGuru-ն ավարտի կրկնօրինակների ստուգումը, կցուցադրի արդյունքները կրկնօրինակ խմբերի ցանկում:</p>
<div class="section" id="id2">
<h2>Կրկնօրինակ խմբերի մասին<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h2>
<p>Կրկնօրինակման խումբը դա ֆայլերի խումբ է, որոնք բոլորը համընկնում են միմյանց: Ամեն խումբ ունի իր <strong>հղվող ֆայլը</strong> և մեկ կամ մի քանի <strong>կրկնօրինակ ֆայլեր</strong>: Հղվող ֆայլը դա խմբի առաջին ֆայլն է: Այն ընտրված չէ, նրանից ցածր և փոխարեն կրկնօրինակ ֆայլերի:</p>
<p>Կարող եք նշել կրկնօրինակ ֆայլերը, բայց երբեք չեք կարող նշել հղվող ֆայլը խմբում: Սա երկրորդ պատճառն է՝ կանխելու dupeGuru-ին ջնջելու ոչ միայն կրկնօրինակ ֆայլերը, այլև դրանց հղումները: Համոզվա՞ծ եք, չէ, որ պետք չէ անել դա:</p>
<p>Ինչն է որոշում, թե որ ֆայլերը հղմամբ են և որ ֆայլերը կրկնօրինակ են՝ թղթապանակի նախնական վիճակում: Ֆայլը հղվող թղթապանակից միշտ հղվում է կրկնօրինակի խմբում: Եթե բոլոր ֆայլերը նորմալ թղթապանակից են, ապա չափն է որոշում, թե որ ֆայլը կլինի կրկնօրինակ խմբի հղումը: dupeGuru-ն ընդունում է, որ Դուք կցանկանաք պահել մեծ ֆայլերը, ուստի դրանք կտեղադրվեն հղման խմբում:</p>
<p>Կարող եք փոխել հղման ֆայլը խմբում ձեռադիր: Դա անելու համար ընտրեք կրկնօրինակ ֆայլը և սեղմեք <strong>Գործողություններ--&gt;Դարձնել ընտրվածը հղմամբ</strong>:</p>
</div>
<div class="section" id="id3">
<h2>Նայել արդյունքները<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h2>
<p>Չնայած պարզապես կարող եք սեղմել <strong>Խմբագրել--&gt;Նշել բոլորը</strong> և ապա <strong>Գործողություններ--&gt;Ուղարկել նշվածը Աղբարկղ</strong> արագորեն ջնջելու համար բոլոր կրկնօրինակ ֆայլերը արդյունքներից, միշտ խորհուրդ է տրվում նախ նայել կրկնօրինակները և հետո միայն ջնջել:</p>
<p>Օգնելու համար Ձեզ նայելու արդյունքները, կարող եք օգտագործել <strong>Մանրամասների վահանակը</strong>: Այս վահանակը ցուցադրում է բոլոր մանրամասները ընտրված ընթացիկ ֆայլի, ինչպես նաև հղման մանրամասները: Սա շատ հարմար է արագորեն որոշելու, թե արդյոք կրկնօրինակը իրոքից կրկնօրինակ է, թե ոչ: Կարող եք նաև կրկնակի սեղմեք ֆայլի վրա՝ բացելու համար այն նրա հետ ասոցիացված ծրագրով:</p>
<p>Եթե ունեք շատ սխալ կրկնօրինակներ, ապա ճիշտ կրկնօրինակները (Եթե Ձեր ֆիլտրի խստությունը շատ է ցածր) որոշելու լավագույն եղանակը դրանք նայելն է, ընտրեք ճիշտ կրկնօրինակները և ապա սեղմեք <strong>Գործողություններ--&gt;Ուղարկել նշվածները Աղբարկղ</strong>: Եթե իսկական կրկնօրինակները ավելի շատ են, քան սխալները, ապա կարող եք օգտագործել <strong>Գործողություններ--&gt;Ջնջել նշվածները արդյունքներից</strong>:</p>
</div>
<div class="section" id="id4">
<h2>Նշում և Ընտրում<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h2>
<p><strong>նշվածը</strong> կրկնօրինակ է՝ նշված նշանով, որը ընտրվում է: <strong>ընտրվածը</strong> կրկնօրինակ է, որը ընդգծվում է կամ առանձնացվում է: Ընտրելու բազմակի եղանակները կարող են կատարվել dupeGuru-ում ստանդարտ ճանապարհով (Shift/Command/Control սեղմամբ): կարող եք փոփոխել բոլոր ընտրված կրկնօրինակների վիճակը՝ սեղմելով <strong>space</strong>:</p>
</div>
<div class="section" id="id5">
<h2>Ցուցադրել Միայն Սխալները<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h2>
<p>Եթե այս ընտրանքը միացված է, ապա կրկնօրինակները ցուցադրվում են առանց իրենց համապատասխան հղվող ֆայլի։ Կարող եք ընտրել, նծել կամ դասավորել այս ցանկը, ինչպես օոր նորմալ եղանակում։</p>
<p>dupeGuru-ի արդյունքները, երբ այն նորմալ եղանակում է, դասավորվում են համաձայն կրկնօրինակվող խմբերի' <strong>հղվող ֆայլի</strong> ։ Սա նշանակում է, որ եթե Դուք ցանկանաք, օրինակի համար, նշել բոլոր կրկնօրինակները &quot;exe&quot; ընդլայնմամբ, ապա չեք կարող պարզապես դասավորել արդյունքները ըստ &quot;Տեսակի&quot;՝ ունենալու համար բոլոր exe կրկնօրինակները միասին, որովհետև խումբը կարող է կազմված լինի մեկից ավելի ֆայլերից։ Ահա այստեղ է, որ աշխատում է Միայն Սխալները եղանակը։ Նշելու համար բոլոր &quot;exe&quot; կրկնօրինակները, Դուք պարզապես պետք է՝</p>
<ul class="simple">
<li>Միացնեք Միայն Սխալները եղանակը։</li>
<li>Ավելացնեք &quot;Տեսակը&quot; սյունը՝ &quot;Սյուներ&quot; ընտրացանկին։</li>
<li>Սեղմեք &quot;Տեսակը&quot; սյանը՝ դասավորելու համար ցանկը ըստ տեսակի։</li>
<li>Տեղադրել &quot;exe&quot; տեսակի առաջին կրկնօրինակը։</li>
<li>Ընտրեք այն։</li>
<li>Պտտեք ներքև ցանկում՝ տեղադրելու համար &quot;exe&quot; տեսակի վերջին կրկնօրինակը։</li>
<li>Սեղմած պահեք Shift-ը և սեղմեք նրա վրա։</li>
<li>Սեղմեք Space՝ նշելու համար բոլոր կրկնօրինակները։</li>
</ul>
</div>
<div class="section" id="id6">
<h2>Դելտա նշանակությունները<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h2>
<p>Եթե միացնեք սա, որոշ սյուներ կցուցադրվեն նշանակություն՝ հարաբերական կրկնօրինակների հղմանը՝ բացարձակ նշանակությունների փոխարեն։ Այս դելտա նշանակությունները նաև կցուցադրվեն տարբեր գույներով, ուստի կարող եք դրանք հեշտությամբ տեսնել։ Օրինակ՝ եթե կրկնօրինակը 1.2 ՄԲ է և եթե նրա հղումը 1.4 ՄԲ է, ապա Չափը սյունում կցուցադրվի -0.2 ՄԲ։</p>
</div>
<div class="section" id="id7">
<h2>Միայն Սխալները և Դելտա նշանակությունները<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h2>
<p>Միայն Սխալները եղանակը բացում է իր իսկական ուժը, երբ Դուք օգտագործում եք այն Դելտա նշանակությունների հետ։ Երբ միացնեք այն, բացարձակ նշանակությունների փոխարեն կցուցադրվեն հարաբերական նշանակությունները։ Այսպիսով օրինակ, եթե ցանկանում եք արդյունքներից հեռացնել բոլոր կրկնօրինակները, որոնք 300 Կբ-ից մեծ են իրենց հղումներից, ապա չեք կարող դասավորել միայն սխալները արդյունքները ըստ չափի, այդ դեպքում ընտրեք բոլոր կրկնօրինակները, որոնք -300 են Չափը սյունից, ջնջեք դրանք և ապա արեք նույն գործողությունը նաև 300-ից բարձր կրկնօրինակների համար՝ ցանկի ներքևում։</p>
<p>Կարող եք նաև օգտագործել սա՝ փոխելու համար կրկնօրինակման ցանկի հղման առաջնայնությունը։ Նոր ստուգումը կատարելուց հետո, եթե չլինեն հղվող թղթապանակներ, հղվող ֆայլը ամեն խմբի կլինի ամենամեծ ֆայլը։ Եթե ցանկանում եք փոխել այն, օրինակի համար, ըստ վերջին փոփոխման ժամանակի, կարող եք դասավորել միայն սխալները արդյունքները ըստ փոփոխման ժամանակի <strong>նվազման</strong> կարգով, ընտրեք բոլոր կրկնօրինակները, որոնց փոփոխման դելտա ժամանակը բարձր է 0-ից և սեղմեք <strong>Դարձնել ընտրվածը հղում</strong>։ Պատճառը,որ դասավորում եք ըստ նվազման կարգի այն է, որ եթե 2 ֆայլերից, որոնք կընտրվեն նույն կրկնօրինակ խմբում, երբ սեղմեք <strong>Դարձնել ընտրվածը հղում</strong>, ապա ցանկի միայն առաջինը կդառնա հղում, մյուսները կանտեսվեն։ Եվ մինչև Դուք ցանկանաք վերջին փոփոխված ֆայլը դարձնել փոփոխված՝ ունենալով դասավորման նվազման կարգը, ապա ցանկի առաջին ֆայլը կլինի վերջին փոփոխված ֆայլը։</p>
<div class="admonition-todo admonition" id="index-0">
<p class="first admonition-title">Todo</p>
<p class="last">Add &quot;Non-numerical delta&quot; information.</p>
</div>
</div>
<div class="section" id="id8">
<h2>Ֆիլտրում<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h2>
<p>dupeGuru-ն աջակցում է հետստուգման ֆիլտրում։ Սրանով Դուք կարող եք սեղմել ներքև արդյունքները, որպեսզի կարողանաք կատարեք գործողություններ դրա հետ։ Օրինակ՝ կարող եք հեշտությամբ նշել բոլոր կրկնօրինակերը նրանց անվան մեջ պարունակող &quot;պատճեն&quot; հատկությամբ՝ ֆիլտրի կողմից օգտագործված արդյունքներից։</p>
<div class="admonition-todo admonition" id="index-1">
<p class="first admonition-title">Todo</p>
<p class="last">Qt has a toolbar search field now, not a menu item.</p>
</div>
<p><strong>Windows.</strong> Ֆիլտրելու հնարավորությունը օգտագործելու համար սեղմեք Գործողություններ --&gt; Կիրառել ֆիլտրը, գրեք կիրառվող ֆիլտրը և սեղմեք Կիրառել։ Չֆիլտրված արդյունքներին վերադառնալու համար սեղմեք Գործողություններ --&gt; Չեղարկել ֆիլտրը։</p>
<p><strong>Mac OS X.</strong> Ֆիլտրելու հնարավորությունը օգտագործելու համար նշեք Ձեր ֆիլտրը &quot;Ֆիլտր&quot; որոնման դաշտում գործիքաշերտի։ Չֆիլտրված արդյունքներին վերադառնալու համար սեղմեք դատարկ թողեք դաշտը կամ սեղմեք &quot;X&quot;։</p>
<p>Պարզ եղանակում (ծրագրային եղանակն է), ինչ տեսակի ֆիլտր է տողում օգտագործվել փաստացի ֆիլտրման համար, խմբային նիշի բացառությամբ <strong>*</strong>. Այսպիսով, եթե նշում եք &quot;[*]&quot; որպես ֆիլտր, այն կհամընկնի [] փակագծերի հետ, այնուհանդերձ կլինի այդ փակագծերի միջև։</p>
<p>Լրացուցիչ ընդլայնված ֆիլտրման համար, կարող եք միացնել &quot;Ֆիլտրելիս օգտագործել կանոնավոր սահմանումները&quot;։ Ապա ֆիլտրման հնարավորությունը կօգտագործվի <strong>կանոնավոր սահմանմամբ</strong> ։ Կանոնավոր սահմանումը դա համապատասխանացման տեքստի լեզուն է։ Առավել մանրամասն կարող եք կարդալ <a class="reference external" href="http://www.regular-expressions.info">regular-expressions.info</a> կայքում։</p>
<p>Համապատասխանեցումները զգայուն չեն ո՛չ պարզ, ո՛չ էլ regexp եղանակում։</p>
<p>Համապատասխանեցման ֆիլտրի դեպքում, Ձեր կանոնավոր սահմանումը չի ունենա ամբողջական ֆայլի անունը, այն միայն կպարունակի սահմանմանը համապատասխան տողին։</p>
<p>Կարող եք տեղեկացնել, որ ոչ բոլոր կրկնօրինակներն են ֆիլտրված արդյունքներում համապատասխանում ֆիլտրին։ Ահա թե ինչու ինչքան շուտ որ պարզ կրկնօրինակը խմբում համապատասխանի ֆիլտրին ամբողջ խումբը կմնա արդյունքներում, ուստի ավելի հեշտ կլինի նայելու կրկնօրինակների կազմը։ Այնուհանդերձ, չհամապատասխանող կրկնօրինակերը &quot;հղման եղանակում են&quot;։ Չնայած որ Դուք կարող եք կատարել գործողություններ, ինչպես օրինակ նշել բոլորը և համոզված լինեք, որ միայն նշված են ֆիլտրված կրկնօրինակերը։</p>
</div>
<div class="section" id="id9">
<h2>Գործողություններ Ընտրացանկը<a class="headerlink" href="#id9" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><strong>Մաքրել անտեսման ցանկը.</strong> Հեռացնում է Ձեր ավելացրած բոլոր անտեսված համընկնումները։ Դուք պետք է սկսեք նոր ստուգում, որպեսզի նոր մաքրված անտեսումների ցանկը էֆֆեկտիվ լինի։</li>
<li><strong>Արտածել արդյունքները XHTML-ով.</strong> Վերցնում է ընթացիկ արդյունքները և ստեղծում XHTML ֆայլը։ Սյուննրը, որոնք տեսանելի են այս կոճակը սեղմելիս կլինեն նաև XHTML ֆայլում։ Ֆայլը միանգամից կբացվի հիմնական դիտարկիչում։</li>
<li><strong>Ուղարկել նշվածները Աղբարկղ.</strong> Բոլոր նշված կրկնօրինակերը հեռացնում է Աղբարկղ։</li>
<li><strong>Ջնջել նշվածը և Վերագրել հղմամբ.</strong> Բոլոր նշված կրկնօրինակերը հեռացնում է Աղբարկղ, բայց դա անելուց հետո ջնջված ֆայլերը վերագրվում են ըստ <a class="reference external" href="http://en.wikipedia.org/wiki/Hard_link">հղման</a> հղվող ֆայլում (Միայն OS X և Linux-ում)</li>
<li><strong>Տեղափոխել նշվածը՝...:</strong> Հարցնում է Ձեզ թղթապանակի մասին և ապա տեղափոխում է բոլոր նշված ֆայլերը այդ թղթապանակ։ Աղբյուր ֆայլերի ճանապարհը կարող է վերստեղծվել նշանակության թղթապանակում՝ կախված &quot;Պատճենելու և Տեղափոխելու&quot; կարգավորումներից։</li>
<li><strong>Պատճենել նշվածը՝...:</strong> Հարցնում է Ձեզ թղթապանակի մասին և ապա պատճենում է բոլոր նշված ֆայլերը այդ թղթապանակ։ Աղբյուր ֆայլերի ճանապարհը կարող է վերստեղծվել նշանակության թղթապանակում՝ կախված &quot;Պատճենելու և Տեղափոխելու&quot; կարգավորումներից։</li>
<li><strong>Հեռացնել նշվածները արդյունքներից.</strong> Հեռացնում է բոլոր նշված կրկնօրինակները արդյունքներից։ Ակտուալ ֆայլերին դա չի վերաբերվի և դրանք կմնան։</li>
<li><strong>Հեռացնել ընտրվածները արդյունքներից.</strong> Հեռացնում է բոլոր ընտրված կրկնօրինակները արդյունքներից։ Հիշեք, որ ընտրված բոլոր հղվող ֆայլերը կանտեսվեն,այս գործողությամբ կջնջվեն միայն կրկնօրինակերը։</li>
<li><strong>Դարձնել ընտրվածը հղում.</strong> Առաջ է մղում բոլոր ընտրված կրկնօրինակները որպես հղումներ։ Եթե կրկնօրինակը խմբի մասն է, որը ունի հղման թղթապանակ (կապույտ գույնով), ապա ոչ մի գործողություն չի կատարվի դրա համար։ Իսկ եթե միևնույն խմբում կան մեկից ավելի ընտրված կրկնօրինակներ, ապա առաջ կմղվի ամեն խմբից միայն առաջինը։</li>
<li><strong>Ավելացնել ընտրվածը անտեսումների ցանկին.</strong> Նախ բոլոր կրկնօրինակները հեռացվում են արդյունքների ցանկից, ապա ավելացվում է կրկնօրինակի համընկումը և ընթացիկ հղումը անտեսումների ցանկին։ Այս համընկնումը այլևս առաջ չի գա հետագա ստուգումների ժամանակ։ Կրկնօրինակը կարող է հետ բերվել, բայց այն կհամապատասխանի հղման այլ ֆայլի։ Կարող եք մաքրել անտեսումների ցանկը Մաքրել անտեսումների ցանկը հրամանով։</li>
<li><strong>Բացել ընտրվածը հիմական ծրագրով.</strong> Բացում է ֆայլը իր հետ ասոցիացված ծրագրով։</li>
<li><strong>Ցուցադրել ընտրվածը որոնման մեջ.</strong> Բացում է ֆայլը պարունակող թղթապանակը։</li>
<li><strong>Կանչել Ընտրված հրամանը.</strong> Բացում է կարգավորումներոմ Ձեր կողմից նշված արտաքին ծրագիրը։</li>
<li><strong>Անվանափոխել ընտրվածը.</strong> Ձեզ հարցում կկատարվի նոր անվան համար, ապա ընտրված ֆայլը կանվանափոխվի։</li>
</ul>
<div class="admonition-todo admonition" id="index-2">
<p class="first admonition-title">Todo</p>
<p class="last">Add Move and iPhoto/iTunes warning</p>
</div>
<div class="admonition-todo admonition" id="index-3">
<p class="first admonition-title">Todo</p>
<p class="last">Add &quot;Deletion Options&quot; section.</p>
</div>
</div>
</div>
</div>
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
<p>
«&#160;&#160;<a href="preferences.html">Կարգավորումներ</a>
&#160;&#160;::&#160;&#160;
<a class="uplink" href="index.html">Contents</a>
&#160;&#160;::&#160;&#160;
<a href="reprioritize.html">Վերաառաջնայնության կրկնօրինակներ</a>&#160;&#160;»
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

81
help/hy/search.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="hy">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search &#8212; dupeGuru 4.0.3 documentation</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="Search" 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>dupeGuru 4.0.3 documentation</span></a></h1>
<h2 class="heading"><span>Search</span></h2>
</div>
<div class="topnav" role="navigation" aria-label="top navigation">
<p>
<a class="uplink" href="index.html">Contents</a>
</p>
</div>
<div class="content">
<h1 id="search-documentation">Search</h1>
<div id="fallback" class="admonition warning">
<script type="text/javascript">$('#fallback').hide();</script>
<p>
Please activate JavaScript to enable the search
functionality.
</p>
</div>
<p>
From here you can search these documents. Enter your search
words into the box below and click "search". Note that the search
function will automatically search for all of the words. Pages
containing fewer words won't appear in the result list.
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="submit" value="search" />
<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">Contents</a>
</p>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Hardcoded Software.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
</div>
</body>
</html>

1
help/hy/searchindex.js Normal file

File diff suppressed because one or more lines are too long