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
4
help/ru/.buildinfo
Normal 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: 35135e2badb34a9c4bb7d40ecd0c313e
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
BIN
help/ru/.doctrees/changelog.doctree
Normal file
BIN
help/ru/.doctrees/environment.pickle
Normal file
BIN
help/ru/.doctrees/faq.doctree
Normal file
BIN
help/ru/.doctrees/folders.doctree
Normal file
BIN
help/ru/.doctrees/index.doctree
Normal file
BIN
help/ru/.doctrees/preferences.doctree
Normal file
BIN
help/ru/.doctrees/quick_start.doctree
Normal file
BIN
help/ru/.doctrees/reprioritize.doctree
Normal file
BIN
help/ru/.doctrees/results.doctree
Normal file
705
help/ru/_sources/changelog.rst.txt
Normal 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.
|
||||
|
||||
116
help/ru/_sources/faq.rst.txt
Normal file
@@ -0,0 +1,116 @@
|
||||
Часто задаваемые вопросы
|
||||
==========================
|
||||
|
||||
.. 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 дубликаты сразу. в
|
||||
`Fairware <http://open.hardcoded.net/about/>`_ режиме, однако, Есть никаких ограничений.
|
||||
|
||||
.. topic:: Знак коробку файл я хочу удалить отключена. Что я должен сделать?
|
||||
|
||||
Вы не можете пометить ссылки (первый файл) дубликат группы. Однако то, что вы можете сделать, заключается в содействии дублировать файл справки. Таким образом, если файл, который Вы хотите, чтобы отметить это ссылки, выделите дубликатов файлов в группу, которую вы хотите продвигать на ссылку, и нажмите на кнопку **Действия -> Добавить выбранной ссылки** . Если ссылка файл из папки ссылки (имя файла написаны на синими буквами), вы не можете удалить его из исходного положения.
|
||||
|
||||
.. topic:: У меня есть папка, из которой я действительно не хочу, чтобы удалить файлы.
|
||||
|
||||
IЕсли вы хотите быть уверены, что dupeGuru никогда не будет удалять файл из определенной папки, убедитесь, что установили в состояние **Ссылка** на: документ: `папки`.
|
||||
|
||||
.. topic:: Что это за '(X отбрасывается) "уведомление в строке состояния?
|
||||
|
||||
В некоторых случаях, несколько матчей не включены в окончательные результаты по соображениям безопасности. Позвольте мне привести пример. У нас есть 3 файла: A, B и C. Мы сканируем их с помощью фильтра низких твердости.Сканер определяет, что матчи с B, матчи с С, но делает B ** не ** матч с С. При этом, dupeGuru имеет вид проблемы. Она не может создать дубликат группы А, В и С в это, потому что не все файлы в группе будет соответствовать вместе. Это может создать 2 группы: одна группа AB, а затем одна группа AC, но это не будет, по соображениям безопасности. Давайте думать об этом: если Б не совпадает с С, она, вероятно, означает, что либо B, C или оба на самом деле не дубликаты. Если не было бы 2 группы (АВ и АС), вы бы в конечном итоге удалить оба B и C. И если один из них не дублировать, что на самом деле не то, что вы хотите делать, правильно? Так что dupeGuru делает в таком случае является, чтобы отменить матч AC (и добавляет уведомление в строке состояния). Таким образом, если вы удалите B и повторно запустить сканирование, вам придется соответствовать переменного тока в следующий результат.
|
||||
|
||||
.. topic:: Я хочу, чтобы отметить все файлы из определенной папки. Что я могу сделать?
|
||||
|
||||
Включить: документ: `обманутые Только <результаты>` режим и нажать на папку колонки для сортировки дубликатов по папкам. Затем он будет легким для вас, чтобы выбрать все дубликаты из той же папке, а затем нажать клавишу пробел, чтобы отметить все выбранные дубликатов.
|
||||
|
||||
.. only:: edition_se or edition_pe
|
||||
|
||||
.. topic:: Я хочу, чтобы удалить все файлы, которые более 300 Кб от их ссылке на файл. Что я могу сделать?
|
||||
|
||||
* Включить :doc:`Только обманутые <results>` режим.
|
||||
* Включить **Значения Делта** режим.
|
||||
* Нажмите на "размер" столбца для сортировки результатов по размеру.
|
||||
* Выбрать все дубликаты ниже -300.
|
||||
* Нажмите на **Удалить выбранные из результатов**.
|
||||
* Выбрать все дубликаты более 300.
|
||||
* Нажмите на **Удалить выбранные из результатов**.
|
||||
|
||||
.. topic:: Я хочу, чтобы мои последние измененные файлы файлы справки. Что я могу сделать?
|
||||
|
||||
* Включить: документ: `обманутые Только <результаты>` режим.
|
||||
* Включить **Значения делта** режим.
|
||||
* Нажмите на колонку "Модификация" для сортировки результатов по дате изменения.
|
||||
* Нажмите на колонку "Модификация" снова изменить порядок сортировки.
|
||||
* Выберите все дубликаты на 0.
|
||||
* Нажмите на **Сделать выбранной ссылки**.
|
||||
|
||||
.. topic:: Я хочу, чтобы отметить все дубликаты, содержащие слово "копия". Как мне это сделать?
|
||||
|
||||
* **Windows**: Нажмите на **Действия -> Применить фильтр**, затем введите "копия", нажмите кнопку ОК.
|
||||
* **Mac OS X**: тип "копия" в "Фильтр" поле на панели инструментов.
|
||||
* Нажмите на **Отметить -> Отметить все**.
|
||||
|
||||
.. only:: edition_me
|
||||
|
||||
.. topic:: Я хочу, чтобы удалить все песни, которые более чем на 3 секунды от своей ссылке на файл. Что я могу сделать?
|
||||
|
||||
* Включить: документ: `обманутые Только <результаты>` режим.
|
||||
* Включить **Значения делта** режим.
|
||||
* Нажмите на "Время" колонку для сортировки результатов по времени.
|
||||
* Выберите все дубликаты ниже -00:03.
|
||||
* Нажмите на **Удалить выбранные из результатов**.
|
||||
* Выберите все дубликаты на 00:03.
|
||||
* Нажмите на **Удалить выбранные из результатов**.
|
||||
|
||||
.. topic:: Я хочу, чтобы мой высокий битрейт файлов песни ссылки. Что я могу сделать?
|
||||
|
||||
* Включить: документ: `обманутые Только <результаты>` режиме
|
||||
* Включить **Значения делта** режим.
|
||||
* Нажмите на кнопку "Битрейт" колонку для сортировки результатов по битрейт.
|
||||
* Нажмите на кнопку "Битрейт" колонна снова изменить порядок сортировки.
|
||||
* Выберите все дубликаты на 0.
|
||||
* Нажмите на **Сделать выбранной ссылки**.
|
||||
|
||||
.. topic:: Я не хочу [жить] и [ремикс] версии моих песен считаться дубликатами. Как мне это сделать?
|
||||
|
||||
Если ваше сравнение порог достаточно низким, вы, вероятно, в конечном итоге с живой и ремикс версии ваших песен в своих результатах. Там вы ничего не можете сделать, чтобы предотвратить это, но есть кое-что можно сделать, чтобы легко удалить их со своего результаты после сканирования: после сканирования, фильтрации. Если, например, вы хотите удалить все песни с чем-либо в квадратных скобках []:
|
||||
|
||||
* **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.
|
||||
25
help/ru/_sources/folders.rst.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
Выбор папки
|
||||
================
|
||||
|
||||
Первое окно, вы видите, когда вы запускаете dupeGuru это окно выбора папки. Это окно содержит список папок, которые будут сканироваться при нажатии на **Scan**.
|
||||
|
||||
Это окно довольно проста в использовании. Если вы хотите добавить папку, нажмите на кнопку **+**. Если вы добавили папки прежде, всплывающее меню со списком последних папки добавил появится. Вы можете нажать на одну из них, чтобы добавить его прямо в свой список. Если нажать на первый пункт всплывающего меню, **Добавить новую папку ...**, вам будет предложено ввести папку добавить. Если вы никогда не добавляется папка, не появится меню, и вы будете непосредственно будет предложено ввести новую папку добавить.
|
||||
|
||||
Альтернативный способ для добавления папок в список, чтобы перетащить их в списке.
|
||||
|
||||
Чтобы удалить папку, выберите папку, удалить, и нажмите на **-**. Если папке выбирается при нажатии кнопки, выбранной папки будет установлен в ** ** исключены состояния (см. ниже), а не удален.
|
||||
|
||||
Папка государств
|
||||
----------------
|
||||
|
||||
Каждая папка может находиться в одном из этих 3-х государств:
|
||||
|
||||
* **Нормальный:** дубликаты найдены в эту папку можно удалить.
|
||||
* **Справка:** Дубликаты найти в этой папке не может **быть удалены** . Файлы из этой папки можно только в конечном итоге в **ссылка** позиция в группе обмануть. Если более чем один файл из папки ссылку в конечном итоге в той же группе обмануть, только один, будут сохранены.Другие будут удалены из группы.
|
||||
* **Не включено:** Файлы в этом каталоге не будет включен в проверку.
|
||||
|
||||
Состояние по умолчанию к папке, конечно, **Нормальный**. Вы можете использовать **Ссылка** состояние для папки, если вы хотите быть уверены, что вы не будете удалять любые файлы из него.
|
||||
|
||||
Когда вы устанавливаете состояние каталог, все подпапки этой папки автоматически наследует это состояние, если явно не включенное состояние подпапку в.
|
||||
|
||||
.. todo:: Add iPhoto/Aperture/iTunes libraries notes
|
||||
46
help/ru/_sources/index.rst.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
dupeGuru help
|
||||
===============
|
||||
|
||||
.. only:: edition_se
|
||||
|
||||
Этот документ также доступна на `французском <http://www.hardcoded.net/dupeguru/help/fr/>`__, `немецком <http://www.hardcoded.net/dupeguru/help/de/>`__ и `армянский <http://www.hardcoded.net/dupeguru/help/hy/>`__.
|
||||
|
||||
.. only:: edition_me
|
||||
|
||||
Этот документ также доступна на `французском <http://www.hardcoded.net/dupeguru_me/help/fr/>`__, `немецкий <http://www.hardcoded.net/dupeguru_me/help/de/>`__ и `армянский <http://www.hardcoded.net/dupeguru_me/help/hy/>`__.
|
||||
|
||||
.. only:: edition_pe
|
||||
|
||||
Этот документ также доступна на `французском <http://www.hardcoded.net/dupeguru_pe/help/fr/>`__, `немецкий <http://www.hardcoded.net/dupeguru_pe/help/de/>`__ и `армянский <http://www.hardcoded.net/dupeguru_pe/help/hy/>`__.
|
||||
|
||||
.. 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
|
||||
63
help/ru/_sources/preferences.rst.txt
Normal file
@@ -0,0 +1,63 @@
|
||||
Предпочтения
|
||||
=============
|
||||
|
||||
.. only:: edition_se
|
||||
|
||||
**Тип сканирования:** Этот параметр определяет, какой аспект файлы будут сравниваться в дубликат сканирования. Если выбрать **Имя файла**, dupeGuru будем сравнивать каждое имена файлов слово за слово, и, в зависимости от других параметров ниже, он будет определять, достаточно ли слов соответствие рассмотреть 2 файлов дубликатов. Если выбрать **Содержимое**, только файлы с точно такой же контент будет матч.
|
||||
|
||||
**Папки** типа сканирования немного особенным. Когда вы выбираете его, dupeGuru проведет поиск дубликатов *папки* вместо того, чтобы дубликатов файлов. Для определения того, две папки, дублируют друг друга, все файлы, содержащиеся в папках будут проверяться, и если содержание **все** файлы в матче папки, папки будут считаться дубликатами.
|
||||
|
||||
**Фильтра Твердость:** Если вы выбрали **Имя файла** типа сканирования, эта опция определяет, как похожи два имени должно быть для dupeGuru рассматривать их дубликатов. Если фильтр твердости, например 80, то это означает, что 80% слов из двух имен файлов должны совпадать. Для определения соответствия процент, dupeGuru первой подсчитывает общее количество слов в **обоих** файла, то подсчитать количество слов соответствия (каждое слово соответствия считаются 2), а затем разделите количество слов соответствия на общее число слов. Если результат больше или равно фильтр твердость, у нас есть дубликаты матча. Например, "ABCD" и "CDE" имеют соответствующий процент 57 (4 слова соответствия, 7 всего слов).
|
||||
|
||||
.. only:: edition_me
|
||||
|
||||
**Тип сканирования:** Этот параметр определяет, какой аспект файлы будут сравниваться в дубликат сканирования.Характер дублировать сканирования варьируется в зависимости от того, что вы выбираете для этой опции.
|
||||
|
||||
* **Имя файла:** Каждая песня будет иметь свой файл разбит на слова, а затем каждое слово будет по сравнению с вычислить соответствующие проценты. Если этот процент выше или равна **жесткость фильтра** (см. ниже подробнее), dupeGuru рассмотрит 2 песни дубликатов.
|
||||
* **Имя файла - Поля: **Как**Имя файла**, за исключением того, что как только имя файла были разделены на слова, эти слова затем группируются в поля.Разделитель полей "-".Окончательный процент соответствия будет самым низким соответствующий процент среди полей. Таким образом, "Исполнитель - Название" и "Артист - Другие Название" будет иметь соответствующий процент 50 (С **Имя файла** сканирования, это будет 75).
|
||||
* **Имя файла - Поля (нет приказа):**Как**Имя файла-Поля**, кроме того, что порядок полей не имеет значения. Например, "Исполнитель - Название" и "Название - Артист" будет иметь соответствующий процент из 100 вместо 0.
|
||||
* **Теги:** Этот метод считывает метки (метаданные) каждой песни и сравнить их полям. Этот метод, как Супер **- Поля**, считает низкий соответствующее поле в качестве окончательного соответствующий процент.
|
||||
* **Состав:** Этот метод сканирования использовать фактическое содержание песни, чтобы определить, какие являются дубликатами. За 2 песни в соответствии с этим методом, они должны иметь точно **такой же содержания**.
|
||||
* **Аудио контента:** То же содержание, но только в аудио-контент сравнивается (без метаданных).
|
||||
|
||||
**Фильтра Твердость:** Если вы выбрали имя файла или тегами типа сканирования, эта опция определяет, как похожи два имени / теги должны быть для dupeGuru рассматривать их дубликатов. Если фильтр твердости, например 80, то это означает, что 80% слов из двух имен файлов должны совпадать. Для определения соответствия процент, dupeGuru первой подсчитывает общее количество слов в **обоих** файла, то подсчитать количество слов соответствия (каждое слово соответствия считаются 2), а затем разделите количество слов соответствия на общее число слов. Если результат больше или равно фильтр твердость, у нас есть дубликаты матча. Например, "ABCD" и "CDE" имеют соответствующий процент 57 (4 слова соответствия, 7 всего слов).
|
||||
|
||||
**Теги для сканирования:** При использовании **Тега** Слова типа сканирования, вы можете выбрать теги, которые будут использоваться для сравнения.
|
||||
|
||||
.. only:: edition_se or edition_me
|
||||
|
||||
**Слово взвешивания:** Если вы выбрали **Имя файла** типа сканирования, этот вариант несколько изменений, как соответствующий процент рассчитывается. При слове взвешивания, вместо того, значение 1 в дубликат счета и общее количество слов, каждое слово имеет значение, равное количество символов, которые они имеют. При слове взвешивание, "AB CDE FGHI" и "AB CDE fghij" будет иметь соответствующий процент 53% (19 Персонажей, 10 символов, соответствующая (4 для "б" и 6 "CDE")).
|
||||
|
||||
**Совпадения похожих слов:** Если вы включите эту опцию, подобные слова будут засчитаны как спички. Например, "Белая полоса" будет совпадать% из 100 вместо 66 с, что функция включена. **Внимание:** Используйте эту опцию с осторожностью. Вполне вероятно, что вы получите много ложных срабатываний в результатах при его включении. Тем не менее, это поможет вам найти дубликаты, что вы не нашли бы в противном случае.Процесс сканирования также значительно медленнее, эта опция включена.
|
||||
|
||||
.. only:: edition_pe
|
||||
|
||||
**Тип сканирования:** Этот параметр определяет тип сканирования, которые будут сделаны на ваши картины.**Сканирования** Содержание типа сравнивает фактическое содержание фотографий нечеткие пути (что делает его можно найти не только точными копиями, но и подобные).**EXIF Timestamp** тип сканирования смотрит на метаданные EXIF с фото (если он существует) и соответствует фотографии, которые имеют такой же. Это намного быстрее, чем сканирование содержимого. **Внимание:** Измененные фотографии часто держат же метка EXIF, так что следите за ложных срабатываний, когда вы используете, что тип сканирования.
|
||||
|
||||
**Фильтра Твердость:** *Содержание тип сканирования только.* Чем больше этот параметр, "тяжелее" является фильтром (Другими словами, тем меньше результатов Вы получите). Большинство фотографий одного и того же матча качества на 100%, даже если формат отличается (PNG и JPG, например.). Однако, если вы хотите, чтобы соответствовать PNG с более низким качеством JPG, вам придется установить фильтром твердость ниже, чем 100.По умолчанию, 95, это сладкое место.
|
||||
|
||||
**Совпадения рисунки разных размеров:** Если вы установите этот флажок, фотографии разных размеров будет разрешен в том же дубликат группы.
|
||||
|
||||
**Можно смешивать файл вида:** Если вы установите этот флажок, дублировать группам разрешается есть файлы с различными расширениями. Если вы не проверить его, ну, они не являются!
|
||||
|
||||
**Игнорировать дубликаты hardlinking в тот же файл:** Если эта опция включена, dupeGuru проверит дубликаты, чтобы увидеть если они ссылаются на тот же индексный `дескриптор <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** and **%r**. Эти заполнители будут заменены на путь выбран обманут (%d) и путь к ссылке на файл выбранного обмануть (%r).
|
||||
|
||||
Если путь к исполняемому содержит пробелы, необходимо заключить его в "" кавычки. Вы также должны приложить заполнителей в кавычки, потому что это очень возможно, что путь к обманутых и ссылки будут содержать пробелы. Вот пример пользовательской команды:
|
||||
|
||||
"C:\Program Files\SuperDiffProg\SuperDiffProg.exe" "%d" "%r"
|
||||
14
help/ru/_sources/quick_start.rst.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
Быстрый старт
|
||||
=============
|
||||
|
||||
Чтобы вы быстро начали с dupeGuru, давайте просто делать сканирование с помощью стандартных настроек по умолчанию.
|
||||
|
||||
* Запуск dupeGuru.
|
||||
* Добавление папок для сканирования либо перетащить & капли или кнопку "+".
|
||||
* Нажмите на **сканирование**.
|
||||
* Подождите, пока процесс сканирования завершен.
|
||||
* Посмотрите на каждый дубликат (файлы, которые отступом) и убедитесь, что это действительно дубликат ссылкой группы (файл выше дублировать без отступа и инвалидов окна знак).
|
||||
* Если файл ложных дубликатов, выделите ее и нажмите **Действия -> Удалить выбранные из результатов**.
|
||||
* Если вы уверены, что нет ложных дубликатов в результатах, нажмите на **Изменить -> Отметить Все**, а затем **Действия -> Отправить Помечено в Корзину**.
|
||||
|
||||
Это только основные сканирования. Есть много настройки вы можете сделать, чтобы получить разные результаты и несколько методов изучения и изменения ваших результатов. Чтобы узнать о них, только что прочитал остальную часть этого файла справки.
|
||||
25
help/ru/_sources/reprioritize.rst.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
Повторное приоритетов дубликатов
|
||||
================================
|
||||
|
||||
dupeGuru пытается автоматически определить, какие дубликат должен отправиться в ссылку каждой группы
|
||||
позиции, но иногда это делается неправильно. Во многих случаях, умный обмануть сортировки с "Ценности Дельта"
|
||||
и "обманутые Только" варианты в дополнение к "Сделать выбранной ссылки" действие делает трюк, но
|
||||
иногда, более мощный вариант не требуется. Здесь изменения приоритетов в диалог вступает в
|
||||
играть. Вы можете вызвать его через "изменить приоритеты Результаты" пункт в меню "Действия".
|
||||
|
||||
Этот диалог позволяет вам выбрать критерии, по которым ссылка обмануть будут отобраны в
|
||||
каждой группе обмануть.Список доступных критериев слева и перечень критериев вы
|
||||
Выбранная справа.
|
||||
|
||||
Критериев категории следуют аргумент. Например, "Размер (Высший)" означает, что обмануть
|
||||
с крупным размером победит. "Свойства папки (/ Foo / Bar)" означает, что обманутые в этой папке будет победить. Для добавления
|
||||
критерий правом списке, сначала выберите категорию в выпадающем списке, затем выберите
|
||||
subargument в приведенном ниже списке, а затем нажмите на правую стрелку кнопки.
|
||||
|
||||
Порядок списка справа важно (вы можете изменить порядок элементов через перетащить и отпустить). когда
|
||||
сбор обмануть для справки позицию, первый критерий используется. Если есть галстук, второй
|
||||
критерий используется и так далее и так далее. Например, если ваши аргументы "Размер (высший)", а затем
|
||||
"Имя файла (Не оканчивается на номер)", ссылке на файл, который будет выбран в группе будет
|
||||
крупнейших файл, а если два или несколько файлов имеют одинаковый размер, который имеет имя файла с
|
||||
не заканчивается номер будет использоваться. Когда все критерии привести к связи, порядок, в котором обманутые
|
||||
ранее были в группе будет использоваться.
|
||||
101
help/ru/_sources/results.rst.txt
Normal file
@@ -0,0 +1,101 @@
|
||||
Результаты
|
||||
==========
|
||||
|
||||
Когда dupeGuru завершения сканирования на наличие дубликатов, он покажет его результаты в виде дубликата список группы.
|
||||
|
||||
О дубликат группы
|
||||
----------------------
|
||||
|
||||
Дубликат группа представляет собой группу файлов, которые весь матч вместе. Каждая группа имеет **ссылке** на файл и одного или более **одинаковых файлов**. Ссылки файл первый файл группы. Его марка окно отключено. Под ним, и с отступом, которые дубликатов файлов.
|
||||
|
||||
Вы можете отметить дубликатов файлов, но вы никогда не можете пометить ссылки файл группы. Это мера безопасности, чтобы предотвратить dupeGuru от удаления не только повторяющиеся файлы, но их ссылки. Ты уверен, что не хочу этого, не так ли?
|
||||
|
||||
Что определяет, какие файлы ссылки и какие файлы являются дубликатами сначала свою папку государства. Файл с ссылкой папка всегда будет ссылка в дубликат группы. Если все файлы из обычной папки, размер определить, какой файл будет ведения дубликат группы. dupeGuru предполагает, что вы всегда хотите сохранить крупнейших файл, так что крупных файлов займет исходное положение.
|
||||
|
||||
Вы можете изменить ссылку файл группы вручную. Для этого выберите дубликат файла, который вы хотите продвигать на ссылку, и нажмите на кнопку **Действия -> Добавить выбранной ссылки**.
|
||||
|
||||
Просмотр результатов
|
||||
--------------------
|
||||
|
||||
Хотя вы можете просто нажать на **Правка -> Выделить все, а затем** **Действия -> Отправить Помечено в Корзину** быстро удалить все дубликаты файлов в результатах, всегда рекомендуется пересмотреть все дубликаты перед удаляя их.
|
||||
|
||||
Чтобы помочь вам обзор результатов, вы можете вызвать панель **Подробнее**. Эта панель показывает все детали выбранного файла, а также подробности своей ссылки в. Это очень удобно, чтобы быстро определить, если дубликат действительно дубликат. Вы также можете дважды щелкнуть по файлу, чтобы открыть его и связанные с ним приложения.
|
||||
|
||||
Если у вас есть больше ложных дубликатов, чем правда дубликатов (Если Ваш фильтр жесткость очень низкая), лучший способ продолжить бы пересмотреть дубликатов, знак истинного дубликаты и нажмите **Действия -> Отправить Помечено в Корзину** . Если у вас есть более верно, чем ложных дубликатов дубликатов, вместо этого можно пометить все файлы, которые являются ложными дубликатов, а также использовать **Действия -> Удалить Помеченные от результатов**.
|
||||
|
||||
Маркировка и выбор
|
||||
---------------------
|
||||
|
||||
**Отмеченные** дубликат двух экземплярах с небольшой флажок рядом с ним, имеющие галочки. **Выбран дубликат дубликата** быть выделены. Несколько действий, выбор может быть выполнена в dupeGuru стандартным образом (Shift / Command / Control клик). Вы можете переключать знак состояние всех выбранных дубликаты ", нажав **пространстве**.
|
||||
|
||||
Показать только обманутые
|
||||
-------------------------
|
||||
|
||||
Когда этот режим включен, дубликаты отображаются без их соответствующего файла справки. Вы можете выбрать, марка и сортировать этот список, как и в обычном режиме.
|
||||
|
||||
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>_.
|
||||
|
||||
Матчи не чувствительны к регистру, в простых и регулярных выражений режиме.
|
||||
|
||||
Для фильтра, чтобы соответствовать, регулярное выражение не обязательно должно совпадать целый файл, он просто обязан содержать в цепочку, соответствующую выражению.
|
||||
|
||||
Вы могли заметить, что не все дубликаты в результате будут соответствовать вашим фильтром. Это потому, что как только одна копия в матчах группового фильтра, то вся группа останется в результатах, таким образом Вы можете иметь более четкое представление о дубликата контексте. Тем не менее, не соответствующие дубликаты в "ссылку режиме". Таким образом, можно выполнять действия, как Марк все и обязательно только знак фильтруется дубликатов.
|
||||
|
||||
Действие меню
|
||||
-------------
|
||||
|
||||
* **Открытый черный список:** Удалите все игнорируют матчи вы добавили. Вы должны начать новый поиск вновь очищается список игнорируемых чтобы быть эффективными.
|
||||
* **Экспорт результатов в XHTML:** Возьмите текущие результаты, а также создавать файл XHTML из него. Столбцов, которые видны при нажатии на эту кнопку будет столбцов в файле XHTML. Файл автоматически откроется в браузере по умолчанию.
|
||||
* **Отправить Помечено в корзину:** Отправить все отмеченные дубликаты, мусор, это очевидно.
|
||||
* **Удалить Помеченные и замена с Жесткие**: Передает все отмеченные дубликаты, мусор, но после того, как сделали это, удаленные файлы заменяются `жестких <http://en.wikipedia.org/wiki/Hard_link>`_ ссылку к ссылке на файл. (Только для OS X и Linux)
|
||||
* **Перемещение Помечено в ...:** запросит назначения, а затем переместить все отмеченные файлы в том, что назначения. Путь исходного файла может быть воссоздан в пункт назначения, в зависимости от "Копирование и перемещение" предпочтения.
|
||||
* **Скопируйте Помечено в ...:** запросит у вас место, а затем скопировать все выбранные файлы к этому пункту назначения. Путь исходного файла может быть воссоздан в пункт назначения, в зависимости от "Копирование и перемещение" предпочтения.
|
||||
* **Удалить Помеченные из результатов:** Удалить все отмеченные дубликатов из результата поиска. Сами файлы не будут затронуты и останутся, где они.
|
||||
* **Удалить выбранные из результатов:** Удалить все выбранные дубликатов из результата поиска. Обратите внимание, что все выбранные файлы ссылки будут игнорироваться, только дубликаты могут быть удалены с этим действием.
|
||||
* **Сделать Выбранный Справка:** Содействие все выбранные дубликатов ссылки. Если дубликат частью группы, имеющей ссылке на файл ближайшие из ссылки папки (в синий цвет), не будут приняты меры для этого дубликат. Если более чем один дубликат среди той же группы выбраны, только первый из каждой группы будет поощряться.
|
||||
* **Добавить выбранные в черный список:** Это сначала удаляет все выбранные дубликаты из результатов, а затем добавить матча, которые дублируют и опорный ток в черный список. Этот матч не придет снова в дальнейшей проверки. Копировать себя и, возможно, вернется, но он будет искаться в другой ссылке на файл. Вы можете очистить список игнорируемых с Открытый черный список команды.
|
||||
* **Открытое Выбранный с приложений по умолчанию:** Откройте файл с помощью приложения, связанного с типом выбранного файла.
|
||||
* **Показать Выбранный в Finder-е:** Откройте папку, содержащую выбранный файл.
|
||||
* **Вызов специальной команды:** Вызывает внешнюю программу вы установили в настройках с использованием выделенного фрагмента в качестве аргументов в вызове.
|
||||
* **Переименования выбрано:** Запрашивает новое имя, а затем переименовать выбранный файл.
|
||||
|
||||
.. todo:: Add Move and iPhoto/iTunes warning
|
||||
.. todo:: Add "Deletion Options" section.
|
||||
2232
help/ru/_static/_stemmer.js
Normal file
BIN
help/ru/_static/ajax-loader.gif
Normal file
|
After Width: | Height: | Size: 673 B |
BIN
help/ru/_static/alert_info_32.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
help/ru/_static/alert_warning_32.png
Normal file
|
After Width: | Height: | Size: 944 B |
665
help/ru/_static/basic.css
Normal 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/ru/_static/bg-page.png
Normal file
|
After Width: | Height: | Size: 82 B |
BIN
help/ru/_static/bullet_orange.png
Normal file
|
After Width: | Height: | Size: 165 B |
BIN
help/ru/_static/comment-bright.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
help/ru/_static/comment-close.png
Normal file
|
After Width: | Height: | Size: 829 B |
BIN
help/ru/_static/comment.png
Normal file
|
After Width: | Height: | Size: 641 B |
311
help/ru/_static/doctools.js
Normal 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();
|
||||
});
|
||||
9
help/ru/_static/documentation_options.js
Normal file
@@ -0,0 +1,9 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '',
|
||||
VERSION: '4.0.3',
|
||||
LANGUAGE: 'ru',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
BIN
help/ru/_static/down-pressed.png
Normal file
|
After Width: | Height: | Size: 222 B |
BIN
help/ru/_static/down.png
Normal file
|
After Width: | Height: | Size: 202 B |
BIN
help/ru/_static/file.png
Normal file
|
After Width: | Height: | Size: 286 B |
376
help/ru/_static/haiku.css
Normal 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/ru/_static/jquery-3.2.1.js
vendored
Normal file
4
help/ru/_static/jquery.js
vendored
Normal file
BIN
help/ru/_static/minus.png
Normal file
|
After Width: | Height: | Size: 90 B |
BIN
help/ru/_static/plus.png
Normal file
|
After Width: | Height: | Size: 90 B |
69
help/ru/_static/pygments.css
Normal 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 */
|
||||
582
help/ru/_static/searchtools.js
Normal file
1
help/ru/_static/translations.js
Normal file
999
help/ru/_static/underscore-1.3.1.js
Normal 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, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\//g,'/');
|
||||
};
|
||||
|
||||
// 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);
|
||||
31
help/ru/_static/underscore.js
Normal 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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};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);
|
||||
BIN
help/ru/_static/up-pressed.png
Normal file
|
After Width: | Height: | Size: 214 B |
BIN
help/ru/_static/up.png
Normal file
|
After Width: | Height: | Size: 203 B |
808
help/ru/_static/websupport.js
Normal 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 ▹\
|
||||
</a>\
|
||||
<a href="#" id="hc<%id%>" class="hide-propose-change">\
|
||||
Propose a change ▿\
|
||||
</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 ▹</a>\
|
||||
<a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\
|
||||
<a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\
|
||||
<a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</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);
|
||||
}
|
||||
});
|
||||
765
help/ru/changelog.html
Normal file
@@ -0,0 +1,765 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Changelog — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Changelog</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="faq.html">Часто задаваемые вопросы</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="changelog">
|
||||
<h1>Changelog<a class="headerlink" href="#changelog" title="Ссылка на этот заголовок">¶</a></h1>
|
||||
<p><strong>About the word «crash»:</strong> 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.</p>
|
||||
<div class="section" id="id1">
|
||||
<h2>4.0.3 (2016-11-24)<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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 <https://www.hardcoded.net/archive2015`#2015</a>-11-01>`_</li>
|
||||
<li>cocoa: Drop iPhoto, Aperture and iTunes support. Was unmaintained and obsolete.</li>
|
||||
<li>Drop «Audio Contents» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Improved «Make Selection Reference» to make it clearer. (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/222">#222</a>)</li>
|
||||
<li>Improved «Open Selected» 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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Added «Export to CSV». (<a class="reference external" href="https://github.com/hsoft/dupeguru/issues/189">#189</a>)</li>
|
||||
<li>Added «Replace with symlinks» to complement «Replace with hardlinks». [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 «Rename Selected» 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 «Reset to Defaults» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Fixed the «Folders» 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="Ссылка на этот заголовок">¶</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 «marked» status.</li>
|
||||
<li>Fixed «Open with default application». (<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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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 «.dupeguru» 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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Added the «Folders» 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="Ссылка на этот заголовок">¶</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 «Send to Trash» 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="Ссылка на этот заголовок">¶</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 «unsaved results» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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 «Add Directory» 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 & 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Significantly improved speed and memory usage of big contents-based scans.</li>
|
||||
<li>Added drag & 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><dl class="first docutils">
|
||||
<dt>Fixed bugs with selection being jumpy during «Make Reference» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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 «X discarded» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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> «Clear Ignore List» crash in Windows.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id49">
|
||||
<h2>2.5.2 (2008-01-10)<a class="headerlink" href="#id49" title="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Improved</strong> the handling of low memory situations.</li>
|
||||
<li><strong>Improved</strong> the directory panel. The «Remove» button changes to «Put Back» 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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Added</strong> the «Remove empty folders» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Fixed</strong> a «bad file descriptor» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Fixed</strong> a «ghosting» 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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Fixed</strong> a mishandling of «.app» files (OS X).</li>
|
||||
<li><strong>Fixed</strong> a bug preventing files from «reference» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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 «Size (MB)» column for a «Size (KB)» column. The values are now «ceiled» instead of rounded. Therefore, a size «0» is now really 0 bytes, not just a value too small to be rounded up. It is also the case for delta values.</li>
|
||||
<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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Improved</strong> unicode support.</li>
|
||||
<li><strong>Improved</strong> the «Reveal in Finder» («Open Containing Folder» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Added</strong> «Rename Selected» feature.</li>
|
||||
<li><strong>Fixed</strong> some minor issues with «Reload Last Results» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Added</strong> the «Match similar words» 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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><strong>Added</strong> the «Display delta values» 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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</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="Ссылка на этот заголовок">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Initial release.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="faq.html">Часто задаваемые вопросы</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
108
help/ru/faq.html
Normal file
@@ -0,0 +1,108 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Часто задаваемые вопросы — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Часто задаваемые вопросы</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="reprioritize.html">Повторное приоритетов дубликатов</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="changelog.html">Changelog</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="id1">
|
||||
<h1>Часто задаваемые вопросы<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</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 был разработан, чтобы убедиться, что вы не удаляете файлы, которые вы не хотели удалить. Во-первых, существует система отсчета папку, которая позволяет определить папки, в которых вы абсолютно не хотите dupeGuru, чтобы вы удаляете файлы там, и тогда есть система контрольной группы, что гарантирует, что вы всегда держать по крайней мере один член группы дубликатов.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">Каковы ограничения демо dupeGuru?</p>
|
||||
<p>В демо-режиме, вы можете только выполнять действия над 10 дубликаты сразу. в
|
||||
<a class="reference external" href="http://open.hardcoded.net/about/">Fairware</a> режиме, однако, Есть никаких ограничений.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">Знак коробку файл я хочу удалить отключена. Что я должен сделать?</p>
|
||||
<p>Вы не можете пометить ссылки (первый файл) дубликат группы. Однако то, что вы можете сделать, заключается в содействии дублировать файл справки. Таким образом, если файл, который Вы хотите, чтобы отметить это ссылки, выделите дубликатов файлов в группу, которую вы хотите продвигать на ссылку, и нажмите на кнопку <strong>Действия -> Добавить выбранной ссылки</strong> . Если ссылка файл из папки ссылки (имя файла написаны на синими буквами), вы не можете удалить его из исходного положения.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">У меня есть папка, из которой я действительно не хочу, чтобы удалить файлы.</p>
|
||||
<p>IЕсли вы хотите быть уверены, что dupeGuru никогда не будет удалять файл из определенной папки, убедитесь, что установили в состояние <strong>Ссылка</strong> на: документ: <cite>папки</cite>.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">Что это за „(X отбрасывается) «уведомление в строке состояния?</p>
|
||||
<p>В некоторых случаях, несколько матчей не включены в окончательные результаты по соображениям безопасности. Позвольте мне привести пример. У нас есть 3 файла: A, B и C. Мы сканируем их с помощью фильтра низких твердости.Сканер определяет, что матчи с B, матчи с С, но делает B ** не ** матч с С. При этом, dupeGuru имеет вид проблемы. Она не может создать дубликат группы А, В и С в это, потому что не все файлы в группе будет соответствовать вместе. Это может создать 2 группы: одна группа AB, а затем одна группа AC, но это не будет, по соображениям безопасности. Давайте думать об этом: если Б не совпадает с С, она, вероятно, означает, что либо B, C или оба на самом деле не дубликаты. Если не было бы 2 группы (АВ и АС), вы бы в конечном итоге удалить оба B и C. И если один из них не дублировать, что на самом деле не то, что вы хотите делать, правильно? Так что dupeGuru делает в таком случае является, чтобы отменить матч AC (и добавляет уведомление в строке состояния). Таким образом, если вы удалите B и повторно запустить сканирование, вам придется соответствовать переменного тока в следующий результат.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">Я хочу, чтобы отметить все файлы из определенной папки. Что я могу сделать?</p>
|
||||
<p>Включить: документ: <cite>обманутые Только <результаты></cite> режим и нажать на папку колонки для сортировки дубликатов по папкам. Затем он будет легким для вас, чтобы выбрать все дубликаты из той же папке, а затем нажать клавишу пробел, чтобы отметить все выбранные дубликатов.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">Я пытался отправить свои дубликаты в корзину, но dupeGuru говорит мне, он не может это сделать. Почему? Что я могу сделать?</p>
|
||||
<p>Большую часть времени, поэтому dupeGuru не можете отправлять файлы в корзину из-за права доступа к файлам. Вы должны написать * * разрешения на файлы, которые вы хотите отправить в корзину. Если вы не знакомы с командной строкой, вы можете использовать утилиты, такие как <cite>BatChmod <http://macchampion.com/arbysoft/BatchMod></cite> _ исправить Ваши права.</p>
|
||||
<blockquote>
|
||||
<div>Если dupeGuru еще дает вам неприятности после фиксации ваших прав, было несколько случаев, когда с помощью «Перемещение Помечено к …» в качестве обходного пути сделали свое дело. Таким образом, вместо отправки файлов в корзину, вы посылаете их во временную папку с «Переместить Отмеченные к …» действия, а затем вы удалите эту временную папку вручную.</div></blockquote>
|
||||
<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">План</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>
|
||||
«  <a href="reprioritize.html">Повторное приоритетов дубликатов</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="changelog.html">Changelog</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
84
help/ru/folders.html
Normal file
@@ -0,0 +1,84 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Выбор папки — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Выбор папки</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="quick_start.html">Быстрый старт</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="preferences.html">Предпочтения</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="id1">
|
||||
<h1>Выбор папки<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</a></h1>
|
||||
<p>Первое окно, вы видите, когда вы запускаете dupeGuru это окно выбора папки. Это окно содержит список папок, которые будут сканироваться при нажатии на <strong>Scan</strong>.</p>
|
||||
<p>Это окно довольно проста в использовании. Если вы хотите добавить папку, нажмите на кнопку <strong>+</strong>. Если вы добавили папки прежде, всплывающее меню со списком последних папки добавил появится. Вы можете нажать на одну из них, чтобы добавить его прямо в свой список. Если нажать на первый пункт всплывающего меню, <strong>Добавить новую папку …</strong>, вам будет предложено ввести папку добавить. Если вы никогда не добавляется папка, не появится меню, и вы будете непосредственно будет предложено ввести новую папку добавить.</p>
|
||||
<p>Альтернативный способ для добавления папок в список, чтобы перетащить их в списке.</p>
|
||||
<p>Чтобы удалить папку, выберите папку, удалить, и нажмите на <strong>-</strong>. Если папке выбирается при нажатии кнопки, выбранной папки будет установлен в ** ** исключены состояния (см. ниже), а не удален.</p>
|
||||
<div class="section" id="id2">
|
||||
<h2>Папка государств<a class="headerlink" href="#id2" title="Ссылка на этот заголовок">¶</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">План</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>
|
||||
«  <a href="quick_start.html">Быстрый старт</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="preferences.html">Предпочтения</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
59
help/ru/genindex.html
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Алфавитный указатель — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="#" />
|
||||
<link rel="search" title="Поиск" href="search.html" />
|
||||
</head><body>
|
||||
<div class="header" role="banner"><h1 class="heading"><a href="index.html">
|
||||
<span>Документация dupeGuru 4.0.3</span></a></h1>
|
||||
<h2 class="heading"><span>Алфавитный указатель</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
|
||||
<h1 id="index">Алфавитный указатель</h1>
|
||||
|
||||
<div class="genindex-jumpbox">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
94
help/ru/index.html
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>dupeGuru help — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</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="#">Содержание</a>
|
||||
  ::  
|
||||
<a href="quick_start.html">Быстрый старт</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="dupeguru-help">
|
||||
<h1>dupeGuru help<a class="headerlink" href="#dupeguru-help" title="Ссылка на этот заголовок">¶</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>
|
||||
<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="Ссылка на этот заголовок">¶</a></h1>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Алфавитный указатель</span></a></li>
|
||||
<li><a class="reference internal" href="search.html"><span class="std std-ref">Поиск</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
<a class="uplink" href="#">Содержание</a>
|
||||
  ::  
|
||||
<a href="quick_start.html">Быстрый старт</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
help/ru/objects.inv
Normal file
81
help/ru/preferences.html
Normal 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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Предпочтения — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Предпочтения</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="folders.html">Выбор папки</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="results.html">Результаты</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="id1">
|
||||
<h1>Предпочтения<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</a></h1>
|
||||
<p><strong>Можно смешивать файл вида:</strong> Если вы установите этот флажок, дублировать группам разрешается есть файлы с различными расширениями. Если вы не проверить его, ну, они не являются!</p>
|
||||
<p><strong>Игнорировать дубликаты hardlinking в тот же файл:</strong> Если эта опция включена, dupeGuru проверит дубликаты, чтобы увидеть если они ссылаются на тот же индексный <a class="reference external" href="http://en.wikipedia.org/wiki/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> путь исходный файл будет воссоздан в папке назначения, вплоть до корневого выделение в панели директорей. Например, если вы добавили <code class="docutils literal notranslate"><span class="pre">/Users/foobar/SomeFolder</span></code> на панель Каталоги и перемещении <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> Это предпочтение определяет команду, которая будет вызываться «Вызов специальной команды» действия. Вы можете ссылаться ни на какие внешние приложения через это действие. Это может быть полезно, если, например, у вас есть хорошее приложение сравниваете установлены.</p>
|
||||
<p>Формат команды такой же, как то, что вы должны написать в командной строке, за исключением того, что Есть 2 заполнителей: <strong>%d</strong> and <strong>%r</strong>. Эти заполнители будут заменены на путь выбран обманут (%d) и путь к ссылке на файл выбранного обмануть (%r).</p>
|
||||
<p>Если путь к исполняемому содержит пробелы, необходимо заключить его в «» кавычки. Вы также должны приложить заполнителей в кавычки, потому что это очень возможно, что путь к обманутых и ссылки будут содержать пробелы. Вот пример пользовательской команды:</p>
|
||||
<blockquote>
|
||||
<div>«C:Program FilesSuperDiffProgSuperDiffProg.exe» «%d» «%r»</div></blockquote>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="folders.html">Выбор папки</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="results.html">Результаты</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
76
help/ru/quick_start.html
Normal file
@@ -0,0 +1,76 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Быстрый старт — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Быстрый старт</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="index.html">|appname| help</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="folders.html">Выбор папки</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="id1">
|
||||
<h1>Быстрый старт<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</a></h1>
|
||||
<p>Чтобы вы быстро начали с dupeGuru, давайте просто делать сканирование с помощью стандартных настроек по умолчанию.</p>
|
||||
<ul class="simple">
|
||||
<li>Запуск dupeGuru.</li>
|
||||
<li>Добавление папок для сканирования либо перетащить & капли или кнопку «+».</li>
|
||||
<li>Нажмите на <strong>сканирование</strong>.</li>
|
||||
<li>Подождите, пока процесс сканирования завершен.</li>
|
||||
<li>Посмотрите на каждый дубликат (файлы, которые отступом) и убедитесь, что это действительно дубликат ссылкой группы (файл выше дублировать без отступа и инвалидов окна знак).</li>
|
||||
<li>Если файл ложных дубликатов, выделите ее и нажмите <strong>Действия -> Удалить выбранные из результатов</strong>.</li>
|
||||
<li>Если вы уверены, что нет ложных дубликатов в результатах, нажмите на <strong>Изменить -> Отметить Все</strong>, а затем <strong>Действия -> Отправить Помечено в Корзину</strong>.</li>
|
||||
</ul>
|
||||
<p>Это только основные сканирования. Есть много настройки вы можете сделать, чтобы получить разные результаты и несколько методов изучения и изменения ваших результатов. Чтобы узнать о них, только что прочитал остальную часть этого файла справки.</p>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="index.html">|appname| help</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="folders.html">Выбор папки</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
84
help/ru/reprioritize.html
Normal file
@@ -0,0 +1,84 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Повторное приоритетов дубликатов — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Повторное приоритетов дубликатов</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="results.html">Результаты</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="faq.html">Часто задаваемые вопросы</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="id1">
|
||||
<h1>Повторное приоритетов дубликатов<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</a></h1>
|
||||
<p>dupeGuru пытается автоматически определить, какие дубликат должен отправиться в ссылку каждой группы
|
||||
позиции, но иногда это делается неправильно. Во многих случаях, умный обмануть сортировки с «Ценности Дельта»
|
||||
и «обманутые Только» варианты в дополнение к «Сделать выбранной ссылки» действие делает трюк, но
|
||||
иногда, более мощный вариант не требуется. Здесь изменения приоритетов в диалог вступает в
|
||||
играть. Вы можете вызвать его через «изменить приоритеты Результаты» пункт в меню «Действия».</p>
|
||||
<p>Этот диалог позволяет вам выбрать критерии, по которым ссылка обмануть будут отобраны в
|
||||
каждой группе обмануть.Список доступных критериев слева и перечень критериев вы
|
||||
Выбранная справа.</p>
|
||||
<p>Критериев категории следуют аргумент. Например, «Размер (Высший)» означает, что обмануть
|
||||
с крупным размером победит. «Свойства папки (/ Foo / Bar)» означает, что обманутые в этой папке будет победить. Для добавления
|
||||
критерий правом списке, сначала выберите категорию в выпадающем списке, затем выберите
|
||||
subargument в приведенном ниже списке, а затем нажмите на правую стрелку кнопки.</p>
|
||||
<p>Порядок списка справа важно (вы можете изменить порядок элементов через перетащить и отпустить). когда
|
||||
сбор обмануть для справки позицию, первый критерий используется. Если есть галстук, второй
|
||||
критерий используется и так далее и так далее. Например, если ваши аргументы «Размер (высший)», а затем
|
||||
«Имя файла (Не оканчивается на номер)», ссылке на файл, который будет выбран в группе будет
|
||||
крупнейших файл, а если два или несколько файлов имеют одинаковый размер, который имеет имя файла с
|
||||
не заканчивается номер будет использоваться. Когда все критерии привести к связи, порядок, в котором обманутые
|
||||
ранее были в группе будет использоваться.</p>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="results.html">Результаты</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="faq.html">Часто задаваемые вопросы</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
153
help/ru/results.html
Normal file
@@ -0,0 +1,153 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Результаты — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Результаты</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="preferences.html">Предпочтения</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="reprioritize.html">Повторное приоритетов дубликатов</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<div class="section" id="id1">
|
||||
<h1>Результаты<a class="headerlink" href="#id1" title="Ссылка на этот заголовок">¶</a></h1>
|
||||
<p>Когда dupeGuru завершения сканирования на наличие дубликатов, он покажет его результаты в виде дубликата список группы.</p>
|
||||
<div class="section" id="id2">
|
||||
<h2>О дубликат группы<a class="headerlink" href="#id2" title="Ссылка на этот заголовок">¶</a></h2>
|
||||
<p>Дубликат группа представляет собой группу файлов, которые весь матч вместе. Каждая группа имеет <strong>ссылке</strong> на файл и одного или более <strong>одинаковых файлов</strong>. Ссылки файл первый файл группы. Его марка окно отключено. Под ним, и с отступом, которые дубликатов файлов.</p>
|
||||
<p>Вы можете отметить дубликатов файлов, но вы никогда не можете пометить ссылки файл группы. Это мера безопасности, чтобы предотвратить dupeGuru от удаления не только повторяющиеся файлы, но их ссылки. Ты уверен, что не хочу этого, не так ли?</p>
|
||||
<p>Что определяет, какие файлы ссылки и какие файлы являются дубликатами сначала свою папку государства. Файл с ссылкой папка всегда будет ссылка в дубликат группы. Если все файлы из обычной папки, размер определить, какой файл будет ведения дубликат группы. dupeGuru предполагает, что вы всегда хотите сохранить крупнейших файл, так что крупных файлов займет исходное положение.</p>
|
||||
<p>Вы можете изменить ссылку файл группы вручную. Для этого выберите дубликат файла, который вы хотите продвигать на ссылку, и нажмите на кнопку <strong>Действия -> Добавить выбранной ссылки</strong>.</p>
|
||||
</div>
|
||||
<div class="section" id="id3">
|
||||
<h2>Просмотр результатов<a class="headerlink" href="#id3" title="Ссылка на этот заголовок">¶</a></h2>
|
||||
<p>Хотя вы можете просто нажать на <strong>Правка -> Выделить все, а затем</strong> <strong>Действия -> Отправить Помечено в Корзину</strong> быстро удалить все дубликаты файлов в результатах, всегда рекомендуется пересмотреть все дубликаты перед удаляя их.</p>
|
||||
<p>Чтобы помочь вам обзор результатов, вы можете вызвать панель <strong>Подробнее</strong>. Эта панель показывает все детали выбранного файла, а также подробности своей ссылки в. Это очень удобно, чтобы быстро определить, если дубликат действительно дубликат. Вы также можете дважды щелкнуть по файлу, чтобы открыть его и связанные с ним приложения.</p>
|
||||
<p>Если у вас есть больше ложных дубликатов, чем правда дубликатов (Если Ваш фильтр жесткость очень низкая), лучший способ продолжить бы пересмотреть дубликатов, знак истинного дубликаты и нажмите <strong>Действия -> Отправить Помечено в Корзину</strong> . Если у вас есть более верно, чем ложных дубликатов дубликатов, вместо этого можно пометить все файлы, которые являются ложными дубликатов, а также использовать <strong>Действия -> Удалить Помеченные от результатов</strong>.</p>
|
||||
</div>
|
||||
<div class="section" id="id4">
|
||||
<h2>Маркировка и выбор<a class="headerlink" href="#id4" title="Ссылка на этот заголовок">¶</a></h2>
|
||||
<p><strong>Отмеченные</strong> дубликат двух экземплярах с небольшой флажок рядом с ним, имеющие галочки. <strong>Выбран дубликат дубликата</strong> быть выделены. Несколько действий, выбор может быть выполнена в dupeGuru стандартным образом (Shift / Command / Control клик). Вы можете переключать знак состояние всех выбранных дубликаты «, нажав <strong>пространстве</strong>.</p>
|
||||
</div>
|
||||
<div class="section" id="id5">
|
||||
<h2>Показать только обманутые<a class="headerlink" href="#id5" title="Ссылка на этот заголовок">¶</a></h2>
|
||||
<p>Когда этот режим включен, дубликаты отображаются без их соответствующего файла справки. Вы можете выбрать, марка и сортировать этот список, как и в обычном режиме.</p>
|
||||
<p>DupeGuru результаты, когда в нормальном режиме, сортируются в соответствии с дубликат группы „<strong>ссылке на файл</strong>. Это означает, что если вы хотите, например, чтобы отметить все дубликаты «EXE» расширением, вы не можете просто сортировать результаты по «Вид», чтобы иметь все EXE дубликатов вместе, потому что группа может состоять из более чем одного типа файлов . Вот где обманутые Только режим вступает в игру. Чтобы отметить все ваши «EXE» дубликаты, вы просто должны:</p>
|
||||
<ul class="simple">
|
||||
<li>Включить обманутые Только режим.</li>
|
||||
<li>Добавить «Вид» колонку «Столбцы» меню.</li>
|
||||
<li>Нажмите на том, что «Вид» колонки, чтобы отсортировать список по типу.</li>
|
||||
<li>Найдите первый дубликат с «EXE» рода.</li>
|
||||
<li>Выберите его.</li>
|
||||
<li>Прокрутите список, чтобы найти последнего дубликата с «EXE» рода.</li>
|
||||
<li>Удерживайте Shift и щелкните по нему.</li>
|
||||
<li>Нажмите Space, чтобы пометить все выбранные дубликатов.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="id6">
|
||||
<h2>Дельта значения<a class="headerlink" href="#id6" title="Ссылка на этот заголовок">¶</a></h2>
|
||||
<p>Если включить этот переключатель на некоторые столбцы будут отображать значение по отношению к дубликата ссылке, а не абсолютные значения. Эти дельты значения также будут отображаться в разные цвета, чтобы вы могли заметить их легко. Например, если дубликат 1,2 Мб и свою ссылку в 1,4 Мб, размер столбец отображает -0,2 Мб.</p>
|
||||
</div>
|
||||
<div class="section" id="id7">
|
||||
<h2>Только обманутые и Дельта значения<a class="headerlink" href="#id7" title="Ссылка на этот заголовок">¶</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">План</p>
|
||||
<p class="last">Add «Non-numerical delta» information.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="id8">
|
||||
<h2>Фильтрация<a class="headerlink" href="#id8" title="Ссылка на этот заголовок">¶</a></h2>
|
||||
<p>dupeGuru поддерживает после сканирования, фильтрации. С его помощью вы можете сузить результаты, чтобы вы могли выполнять действия, на подмножества. Например, вы можете легко пометить все дубликаты с их имя файла, содержащего «копировать» из результатов с помощью фильтра.</p>
|
||||
<div class="admonition-todo admonition" id="index-1">
|
||||
<p class="first admonition-title">План</p>
|
||||
<p class="last">Qt has a toolbar search field now, not a menu item.</p>
|
||||
</div>
|
||||
<p><strong>Windows:</strong> Для использования функции фильтрации, нажмите на Действия -> Применить фильтр, запишите фильтр, который вы хотите применить и нажмите ОК. Чтобы вернуться к нефильтрованное результаты, нажмите на Действия -> Отменить фильтр.</p>
|
||||
<p><strong>Mac OS X:</strong> Для использования функции фильтрации, тип фильтра в «Фильтр» поле поиска на панели инструментов. Чтобы вернуться к нефильтрованное результате, очистите поле, или нажмите на кнопку «X».</p>
|
||||
<p>В простом режиме (режим по умолчанию), что вы вводите в качестве фильтра строку, используемую для выполнения фактической фильтрации, за исключением одной маски: <strong>*</strong>. Таким образом, если вы введете «[*]» как ваш фильтр, он будет соответствовать что-нибудь с [] скобках в нем, все, что между этими скобками.</p>
|
||||
<p>Для более продвинутых фильтров, вы можете включить «Использование регулярных выражений при фильтрации» на. Функция фильтрации будет использовать регулярные выражения. Регулярное выражение языка для согласования текста. Объясняя их выходит за рамки этого документа. Хорошее место для начала обучения он <cite>regular_expressions.info</cite> <<a class="reference external" href="http://www.regular-expressions.info">http://www.regular-expressions.info</a>>_.</p>
|
||||
<p>Матчи не чувствительны к регистру, в простых и регулярных выражений режиме.</p>
|
||||
<p>Для фильтра, чтобы соответствовать, регулярное выражение не обязательно должно совпадать целый файл, он просто обязан содержать в цепочку, соответствующую выражению.</p>
|
||||
<p>Вы могли заметить, что не все дубликаты в результате будут соответствовать вашим фильтром. Это потому, что как только одна копия в матчах группового фильтра, то вся группа останется в результатах, таким образом Вы можете иметь более четкое представление о дубликата контексте. Тем не менее, не соответствующие дубликаты в «ссылку режиме». Таким образом, можно выполнять действия, как Марк все и обязательно только знак фильтруется дубликатов.</p>
|
||||
</div>
|
||||
<div class="section" id="id9">
|
||||
<h2>Действие меню<a class="headerlink" href="#id9" title="Ссылка на этот заголовок">¶</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> запросит назначения, а затем переместить все отмеченные файлы в том, что назначения. Путь исходного файла может быть воссоздан в пункт назначения, в зависимости от «Копирование и перемещение» предпочтения.</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>Показать Выбранный в Finder-е:</strong> Откройте папку, содержащую выбранный файл.</li>
|
||||
<li><strong>Вызов специальной команды:</strong> Вызывает внешнюю программу вы установили в настройках с использованием выделенного фрагмента в качестве аргументов в вызове.</li>
|
||||
<li><strong>Переименования выбрано:</strong> Запрашивает новое имя, а затем переименовать выбранный файл.</li>
|
||||
</ul>
|
||||
<div class="admonition-todo admonition" id="index-2">
|
||||
<p class="first admonition-title">План</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">План</p>
|
||||
<p class="last">Add «Deletion Options» section.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="preferences.html">Предпочтения</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
  ::  
|
||||
<a href="reprioritize.html">Повторное приоритетов дубликатов</a>  »
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
78
help/ru/search.html
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
<!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="ru">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Поиск — Документация dupeGuru 4.0.3</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||
<link rel="index" title="Алфавитный указатель" href="genindex.html" />
|
||||
<link rel="search" title="Поиск" 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</span></a></h1>
|
||||
<h2 class="heading"><span>Поиск</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
<a class="uplink" href="index.html">Содержание</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="content">
|
||||
|
||||
|
||||
<h1 id="search-documentation">Поиск</h1>
|
||||
<div id="fallback" class="admonition warning">
|
||||
<script type="text/javascript">$('#fallback').hide();</script>
|
||||
<p>
|
||||
Для работы поиска включите JavaScript в браузере.
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
Здесь можно делать поиск по всем разделам этой документации. Введите ключевые слова в текстовое поле и нажмите кнопку «искать». Внимание: будут найдены только те страницы, в которых есть все указанные слова. Страницы, где есть только часть этих слов, отобраны не будут.
|
||||
</p>
|
||||
<form action="" method="get">
|
||||
<input type="text" name="q" value="" />
|
||||
<input type="submit" value="искать" />
|
||||
<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">Содержание</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2016, Hardcoded Software.
|
||||
Создано с помощью <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||