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/uk/.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: a874776587ce2da814c4810262a52987
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
BIN
help/uk/.doctrees/changelog.doctree
Normal file
BIN
help/uk/.doctrees/environment.pickle
Normal file
BIN
help/uk/.doctrees/faq.doctree
Normal file
BIN
help/uk/.doctrees/folders.doctree
Normal file
BIN
help/uk/.doctrees/index.doctree
Normal file
BIN
help/uk/.doctrees/preferences.doctree
Normal file
BIN
help/uk/.doctrees/quick_start.doctree
Normal file
BIN
help/uk/.doctrees/reprioritize.doctree
Normal file
BIN
help/uk/.doctrees/results.doctree
Normal file
705
help/uk/_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.
|
||||
|
||||
117
help/uk/_sources/faq.rst.txt
Normal file
@@ -0,0 +1,117 @@
|
||||
Часті питання
|
||||
==========================
|
||||
|
||||
.. 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/>`_ mode, однак, Є ніяких обмежень.
|
||||
|
||||
.. topic:: Знак коробку файл я хочу видалити відключена. Що я повинен зробити?
|
||||
|
||||
Ви не можете помітити посилання (перший файл) дублікат групи. Однак те, що ви можете зробити, полягає в сприянні дублювати файл довідки. Таким чином, якщо файл, який Ви хочете, щоб відзначити цю посилання, виділіть дублікатів файлів в групу, яку ви хочете просувати на посилання, і натисніть на кнопку **Дії -> Додати вибраної посилання**. Якщо посилання файл з папки посилання (назва файлу написані на синіми літерами), ви не можете видалити його з вихідного положення.
|
||||
|
||||
.. topic:: У мене є папка, з якої я справді не хочу, щоб видалити файли.
|
||||
|
||||
Якщо ви хочете бути впевнені, що dupeGuru ніколи не буде видаляти файл з певної папки, переконайтеся, що встановили в стан **Посилання на:** документ: :doc:`folders`.
|
||||
|
||||
.. topic:: Що це за '(X відкидається) "повідомлення в рядку стану?
|
||||
|
||||
У деяких випадках, кілька матчів не включені в остаточні результати з міркувань безпеки. Дозвольте мені навести приклад. У нас є 3 файли: A, B і C. Ми скануємо їх за допомогою фільтра низьких твердості. Сканер визначає, що матчі з B, матчі з С, але робить B ** не ** матч з С. При цьому, dupeGuru має вигляд проблеми. Вона не може створити дублікат групи А, В і С в це, тому що не всі файли в групі буде відповідати разом. Це може створити 2 групи: одна група AB, а потім одна група AC, але це не буде, з міркувань безпеки. Давайте думати про це: якщо Б не співпадає з С, вона, ймовірно, означає, що або B, C або обидва на самому ділі не дублікати. Якщо не було б 2 групи (АВ і АС), ви б у кінцевому підсумку видалити обидва B і C. І якщо один з них не дублювати, що насправді не те, що ви хочете робити, правильно? Так що dupeGuru робить у такому випадку є, щоб відмінити матч AC (і додає повідомлення в рядку стану). Таким чином, якщо ви вилучили B і повторно запустити сканування, вам доведеться відповідати змінного струму в наступний результат.
|
||||
|
||||
.. topic:: Я хочу, щоб відзначити всі файли з визначеної папки. Що я можу зробити?
|
||||
|
||||
Включити :doc:`ошукані Тільки <results>` режим і натиснути на папку колонки для сортування дублікатів по папках. Потім він буде легким для вас, щоб вибрати всі дублікати з тієї ж папці, а потім натиснути клавішу пробіл, щоб відзначити всі вибрані дублікатів.
|
||||
|
||||
.. only:: edition_se or edition_pe
|
||||
|
||||
.. topic:: Я хочу, щоб видалити всі файли, які більше 300 Кб від їх посиланням на файл. Що я можу зробити?
|
||||
|
||||
* Включити :doc:`ошукані Тільки <results>` режимі.
|
||||
* Включити **Значення Delta** режимі.
|
||||
* Натисніть на "Розмір" стовпця для сортування результатів за розміром.
|
||||
* Вибрати всі дублікати нижче -300.
|
||||
* Натисніть на **Видалити вибрані з результатів**.
|
||||
* Вибрати всі дублікати більше 300 осіб.
|
||||
* Натисніть на **Видалити вибрані з результатів**.
|
||||
|
||||
.. topic:: Я хочу, щоб мої останні змінені файли файли довідки. Що я можу зробити?
|
||||
|
||||
* Включити :doc:`ошукані Тільки <results>` режимі.
|
||||
* Включити **Значення Delta** режимі.
|
||||
* Натисніть на "Модифікація" колонку для сортування результатів за датою зміни.
|
||||
* Натисніть на "Модифікація" колона знову змінити порядок сортування.
|
||||
* Вибрати всі дублікати за 0.
|
||||
* Натисніть на **Зробити вибраної посилання**.
|
||||
|
||||
.. topic:: Я хочу, щоб відзначити все дублікати, що містять слово "копія". Як мені це зробити?
|
||||
|
||||
* **Windows**: Натисніть на **Дії -> Застосувати фільтр**, потім введіть "копія", натисніть кнопку ОК.
|
||||
* **Mac OS X**: Типу "копія" в "Фільтр" поле на панелі інструментів.
|
||||
* Натисніть на Марка **-> Позначити всі**.
|
||||
|
||||
.. only:: edition_me
|
||||
|
||||
.. topic:: Я хочу, щоб видалити всі пісні, які більш ніж на 3 секунди від своєї посиланням на файл. Що я можу зробити?
|
||||
|
||||
* Включити :doc:`ошукані Тільки <results>` режимі.
|
||||
* Включити **Значення Delta** режимі.
|
||||
* Натисніть на "Час" колонку для сортування результатів за часом.
|
||||
* Вибрати всі дублікати нижче -00:03.
|
||||
* Натисніть на **Видалити вибрані з результатів**.
|
||||
* Вибрати всі дублікати за 00:03.
|
||||
* Натисніть на **Видалити вибрані з результатів**.
|
||||
|
||||
.. topic:: Я хочу, щоб мій високий бітрейт файлів пісні посилання. Що я можу зробити?
|
||||
|
||||
* Включити :doc:`ошукані Тільки <results>` режимі.
|
||||
* Включити **Значення Delta** режимі.
|
||||
* Натисніть на "Бітрейт" колонку для сортування результатів по бітрейт.
|
||||
* Натисніть на "Бітрейт" колона знову змінити порядок сортування.
|
||||
* Вибрати всі дублікати за 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 * до * ви посилаєте дублікатів в корзину.
|
||||
|
||||
Якщо все це не так, `контакт УГ підтримки <http://www.hardcoded.net/support>`_, ми зрозуміти це.
|
||||
|
||||
.. todo:: This FAQ qestion is outdated, see english version.
|
||||
|
||||
23
help/uk/_sources/folders.rst.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
Вибір папки
|
||||
================
|
||||
|
||||
Перше вікно, ви бачите, коли ви запускаєте dupeGuru це вікно вибору папки. Це вікно містить список папок, які будуть скануватися при натисканні на **Сканування**.Це вікно досить проста у використанні. Якщо ви хочете додати папку, натисніть на кнопку **+**. Якщо ви додали папки перш, спливаюче меню зі списком останніх папки додав з'явиться. Ви можете натиснути на одну з них, щоб додати його прямо в свій список. Якщо натиснути на перший пункт меню, **Додати новий папку ...**, вам буде запропоновано ввести папку додати. Якщо ви ніколи не додається папка, не з'явиться меню, і ви будете безпосередньо буде запропоновано ввести нову папку додати.
|
||||
|
||||
Альтернативний спосіб для додавання папок в список, щоб перетягнути їх в списку.
|
||||
|
||||
Щоб видалити папку, виберіть папку, видалити, і натисніть на **-**. Якщо папці вибирається при натисканні кнопки, обраної папки буде встановлений в **виключені** стану (див. нижче), а не видалений.
|
||||
|
||||
Папка держав
|
||||
-------------
|
||||
|
||||
Кожна папка може знаходитися в одному з цих 3-х держав:
|
||||
|
||||
* ** Нормальний: ** дублікати знайдені в цю папку можна видалити.
|
||||
* ** Довідка: ** Дублікати знайти в цій папці **не може** бути видалені. Файли з цієї папки можна тільки в кінцевому підсумку в **посилання** позиція в групі обдурити. Якщо більш ніж один файл з папки посилання в кінцевому підсумку в тій же групі обдурити, тільки один, будуть збережені. Інші будуть видалені з групи.
|
||||
* ** Не включено: ** Файли в цьому каталозі не буде включений у перевірку.
|
||||
|
||||
Стан за замовчуванням до папки, звичайно, **Нормальний**. Ви можете використовувати **Посилання** стан для папки, якщо ви хочете бути впевнені, що ви не будете видаляти будь-які файли з нього.
|
||||
|
||||
Коли ви встановлюєте стан каталог, все підпапки цієї папки автоматично успадковує цей стан, якщо явно не включений стан підпапку в.
|
||||
|
||||
.. todo:: Add iPhoto/Aperture/iTunes libraries notes
|
||||
47
help/uk/_sources/index.rst.txt
Normal file
@@ -0,0 +1,47 @@
|
||||
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 <quick_start>`
|
||||
|
||||
Це гарна ідея, щоб зберегти dupeGuru оновлено. Ви можете завантажити останню версію на своєму `homepage`_.
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
quick_start
|
||||
folders
|
||||
preferences
|
||||
results
|
||||
reprioritize
|
||||
faq
|
||||
changelog
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
||||
|
||||
.. _homepage: https://www.hardcoded.net/dupeguru
|
||||
64
help/uk/_sources/preferences.rst.txt
Normal file
@@ -0,0 +1,64 @@
|
||||
Уподобання
|
||||
===========
|
||||
|
||||
.. 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")).
|
||||
|
||||
**Матч Схожі слова:** ЯКЩО ви дозволите Цю опцію, подібні слова будуть зараховані Як сірники. Наприклад, "White Stripes" і "Біла смуга" буде збігатіся% з 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)
|
||||
|
||||
**Використання регулярних виразів при фільтрації:** Якщо ви відзначите цей прапорець, фільтрація розглядатиме ваш запит фільтра, як **регулярний вираз**. Пояснюючи їх виходить за рамки цього документа. Гарне місце для початку навчання він `регулярного expressions.info <http://www.regular-expressions.info>`__.
|
||||
|
||||
**Видалення порожніх папок після видалення або переміщення:** Коли ця опція включена, папки будуть видалені через файл видалений або переміщений і папка порожня.
|
||||
|
||||
**Копіювання і переміщення:** Визначає, як операції копіювання та переміщення (в меню Дії) буде себе вести.
|
||||
|
||||
* **Право на призначення:** Всі файли будуть відправлені безпосередньо в пункт призначення, не намагаючись відтворити початковий шлях взагалі.
|
||||
* **Повторно відносний шлях:** шлях вихідний файл буде відтворений в папці призначення, аж до кореневого виділення в панелі Directories. Наприклад, якщо ви додали ``/Users/foobar/SomeFolder`` на панель Каталоги і переміщенні ``/Users/foobar/SomeFolder/SubFolder/SomeFile.ext`` до місця призначення ``/Users/foobar/MyDestination/SubFolder``, кінцевим пунктом призначення для файлу буде ``/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**. Ці наповнювачі будуть замінені на шлях вибраний обдурити (% г) і шлях до заслання на файл вибраного обдурити (%r).
|
||||
|
||||
Якщо шлях до виконуваного містить прогалини, необхідно укласти його в "" лапки. Ви також повинні докласти заповнювачів в лапки, бо це дуже можливо, що шлях до обдурених і посилання будуть містити пробіли. Ось приклад користувальницької команди::
|
||||
|
||||
"C:\Program Files\SuperDiffProg\SuperDiffProg.exe" "%d" "%r"
|
||||
14
help/uk/_sources/quick_start.rst.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
Швидкий старт
|
||||
==============
|
||||
|
||||
Щоб ви швидко почали з dupeGuru, давайте просто робити сканування за допомогою стандартних параметрів за замовчуванням.
|
||||
|
||||
* Запуск dupeGuru.
|
||||
* Додавання папок для сканування або перетягнути & краплі або кнопку "+".
|
||||
* Натисніть на сканування.
|
||||
* Почекайте, поки процес сканування завершено.
|
||||
* Подивіться на кожен дублікат (файли, які відступом) і переконайтеся, що це дійсно дублікат посиланням групи (файл вище дублювати без відступу та інвалідів вікна знак).
|
||||
* Якщо файл помилкових дублікатів, виділіть її та натисніть **Дії -> Видалити вибрані з результатів**.
|
||||
* Якщо ви впевнені, що немає помилкових дублікатів в результатах, натисніть на **Редагувати -> Позначити Всі**, а потім **Дії -> Отправить Позначено до кошику**.
|
||||
|
||||
Це тільки основні сканування. Є багато налаштування ви можете зробити, щоб отримати різні результати і кілька методів вивчення та зміни ваших результатів. Щоб дізнатися про них, щойно прочитав решту цього файлу довідки.
|
||||
25
help/uk/_sources/reprioritize.rst.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
Повторне пріоритетів дублікатів
|
||||
================================
|
||||
|
||||
dupeGuru намагається автоматично визначити, які дублікат повинен відправитися в заслання кожної групи
|
||||
позиції, але іноді це робиться неправильно. У багатьох випадках, розумний обдурити сортування з "Цінності Дельта"
|
||||
і "ошукані Тільки" варіанти на додаток до "Зробити вибраної посилання" дія робить трюк, але
|
||||
іноді, більш потужний варіант не потрібно. Тут зміни пріоритетів в діалог вступає в
|
||||
грати. Ви можете викликати його через "змінити пріоритети Результати" пункт в меню "Дії".
|
||||
|
||||
Цей діалог дозволяє вам вибрати критерії, за якими посилання обдурити будуть відібрані в
|
||||
кожній групі обдурити. Список доступних критеріїв зліва і перелік критеріїв ви
|
||||
Обрана справа.
|
||||
|
||||
Критеріїв категорії слідують аргумент. Наприклад, "Розмір (Вищий)" означає, що обдурити
|
||||
з великим розміром переможе. "Властивості папки (/Foo/Bar)" означає, що ошукані в цій папці буде перемогти. для додавання
|
||||
критерій правом списку, спочатку виберіть категорію в спадному списку і виберіть
|
||||
subargument в наведеному нижче списку, а потім натисніть на праву стрілку кнопки.
|
||||
|
||||
Порядок списку праворуч важливо (ви можете змінити порядок елементів через перетягнути і відпустити). коли
|
||||
збір обдурити для довідки позицію, перший критерій використовується. Якщо є краватка, другий
|
||||
критерій використовується і так далі і так далі. Наприклад, якщо ваші аргументи "Розмір (вищий)", а потім
|
||||
"Файл (Не закінчується на номер)", заслання на файл, який буде обраний у групі буде
|
||||
найбільших файл, а якщо два або декілька файлів мають однаковий розмір, який має ім'я файлу з
|
||||
не закінчується номер буде використовуватися. Коли всі критерії привести до зв'язку, порядок, в якому ошукані
|
||||
раніше були в групі буде використовуватися.
|
||||
101
help/uk/_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 Мб.
|
||||
|
||||
Тільки ошукані і Дельта значення
|
||||
--------------------------------
|
||||
|
||||
Тільки ошукані режимі розкрити свою дійсну силу, коли ви використовуєте його з Delta Значення перемикач включений. Коли ви дозволите його, відносні значення буде відображатися замість абсолютних. Так що якщо, наприклад, ви хочете видалити з результатів всі дублікати, які є більш 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".
|
||||
|
||||
У простому режимі (режим), що ви вводите в якості фільтра рядок, що використовується для виконання фактичної фільтрації, за винятком однієї маски: **\***. Таким чином, якщо ви введете "[*]" як ваш фільтр, він буде відповідати що-небудь з [] дужках в ньому, все, що між цими дужками.
|
||||
|
||||
Для більш просунутих фільтрів, ви можете включити «Використання регулярних виразів при фільтрації" на. Функція фільтрації буде використовувати регулярні вирази. Регулярний вираз мови для узгодження тексту. Пояснюючи їх виходить за рамки цього документа. Гарне місце для початку навчання він `регулярного 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.
|
||||
BIN
help/uk/_static/ajax-loader.gif
Normal file
|
After Width: | Height: | Size: 673 B |
BIN
help/uk/_static/alert_info_32.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
help/uk/_static/alert_warning_32.png
Normal file
|
After Width: | Height: | Size: 944 B |
665
help/uk/_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/uk/_static/bg-page.png
Normal file
|
After Width: | Height: | Size: 82 B |
BIN
help/uk/_static/bullet_orange.png
Normal file
|
After Width: | Height: | Size: 165 B |
BIN
help/uk/_static/comment-bright.png
Normal file
|
After Width: | Height: | Size: 756 B |
BIN
help/uk/_static/comment-close.png
Normal file
|
After Width: | Height: | Size: 829 B |
BIN
help/uk/_static/comment.png
Normal file
|
After Width: | Height: | Size: 641 B |
311
help/uk/_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/uk/_static/documentation_options.js
Normal file
@@ -0,0 +1,9 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: '',
|
||||
VERSION: '4.0.3',
|
||||
LANGUAGE: 'uk',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
};
|
||||
BIN
help/uk/_static/down-pressed.png
Normal file
|
After Width: | Height: | Size: 222 B |
BIN
help/uk/_static/down.png
Normal file
|
After Width: | Height: | Size: 202 B |
BIN
help/uk/_static/file.png
Normal file
|
After Width: | Height: | Size: 286 B |
376
help/uk/_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/uk/_static/jquery-3.2.1.js
vendored
Normal file
4
help/uk/_static/jquery.js
vendored
Normal file
BIN
help/uk/_static/minus.png
Normal file
|
After Width: | Height: | Size: 90 B |
BIN
help/uk/_static/plus.png
Normal file
|
After Width: | Height: | Size: 90 B |
69
help/uk/_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 */
|
||||
761
help/uk/_static/searchtools.js
Normal file
@@ -0,0 +1,761 @@
|
||||
/*
|
||||
* searchtools.js_t
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*
|
||||
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* Non-minified version JS is _stemmer.js if file is provided */
|
||||
/**
|
||||
* Porter Stemmer
|
||||
*/
|
||||
var Stemmer = function() {
|
||||
|
||||
var step2list = {
|
||||
ational: 'ate',
|
||||
tional: 'tion',
|
||||
enci: 'ence',
|
||||
anci: 'ance',
|
||||
izer: 'ize',
|
||||
bli: 'ble',
|
||||
alli: 'al',
|
||||
entli: 'ent',
|
||||
eli: 'e',
|
||||
ousli: 'ous',
|
||||
ization: 'ize',
|
||||
ation: 'ate',
|
||||
ator: 'ate',
|
||||
alism: 'al',
|
||||
iveness: 'ive',
|
||||
fulness: 'ful',
|
||||
ousness: 'ous',
|
||||
aliti: 'al',
|
||||
iviti: 'ive',
|
||||
biliti: 'ble',
|
||||
logi: 'log'
|
||||
};
|
||||
|
||||
var step3list = {
|
||||
icate: 'ic',
|
||||
ative: '',
|
||||
alize: 'al',
|
||||
iciti: 'ic',
|
||||
ical: 'ic',
|
||||
ful: '',
|
||||
ness: ''
|
||||
};
|
||||
|
||||
var c = "[^aeiou]"; // consonant
|
||||
var v = "[aeiouy]"; // vowel
|
||||
var C = c + "[^aeiouy]*"; // consonant sequence
|
||||
var V = v + "[aeiou]*"; // vowel sequence
|
||||
|
||||
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
||||
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
||||
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
||||
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
||||
|
||||
this.stemWord = function (w) {
|
||||
var stem;
|
||||
var suffix;
|
||||
var firstch;
|
||||
var origword = w;
|
||||
|
||||
if (w.length < 3)
|
||||
return w;
|
||||
|
||||
var re;
|
||||
var re2;
|
||||
var re3;
|
||||
var re4;
|
||||
|
||||
firstch = w.substr(0,1);
|
||||
if (firstch == "y")
|
||||
w = firstch.toUpperCase() + w.substr(1);
|
||||
|
||||
// Step 1a
|
||||
re = /^(.+?)(ss|i)es$/;
|
||||
re2 = /^(.+?)([^s])s$/;
|
||||
|
||||
if (re.test(w))
|
||||
w = w.replace(re,"$1$2");
|
||||
else if (re2.test(w))
|
||||
w = w.replace(re2,"$1$2");
|
||||
|
||||
// Step 1b
|
||||
re = /^(.+?)eed$/;
|
||||
re2 = /^(.+?)(ed|ing)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(fp[1])) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1];
|
||||
re2 = new RegExp(s_v);
|
||||
if (re2.test(stem)) {
|
||||
w = stem;
|
||||
re2 = /(at|bl|iz)$/;
|
||||
re3 = new RegExp("([^aeiouylsz])\\1$");
|
||||
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re2.test(w))
|
||||
w = w + "e";
|
||||
else if (re3.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
else if (re4.test(w))
|
||||
w = w + "e";
|
||||
}
|
||||
}
|
||||
|
||||
// Step 1c
|
||||
re = /^(.+?)y$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(s_v);
|
||||
if (re.test(stem))
|
||||
w = stem + "i";
|
||||
}
|
||||
|
||||
// Step 2
|
||||
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step2list[suffix];
|
||||
}
|
||||
|
||||
// Step 3
|
||||
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step3list[suffix];
|
||||
}
|
||||
|
||||
// Step 4
|
||||
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
||||
re2 = /^(.+?)(s|t)(ion)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
if (re.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1] + fp[2];
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re2.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
|
||||
// Step 5
|
||||
re = /^(.+?)e$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
re2 = new RegExp(meq1);
|
||||
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
||||
w = stem;
|
||||
}
|
||||
re = /ll$/;
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re.test(w) && re2.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
|
||||
// and turn initial Y back to y
|
||||
if (firstch == "y")
|
||||
w = firstch.toLowerCase() + w.substr(1);
|
||||
return w;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [filename, title, anchor, descr, score]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: function(result) {
|
||||
return result[4];
|
||||
},
|
||||
*/
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5}, // used to be unimportantResults
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
// query found in terms
|
||||
term: 5
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var splitChars = (function() {
|
||||
var result = {};
|
||||
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
|
||||
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
|
||||
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
|
||||
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
|
||||
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
|
||||
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
|
||||
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
|
||||
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
|
||||
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
|
||||
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
|
||||
var i, j, start, end;
|
||||
for (i = 0; i < singles.length; i++) {
|
||||
result[singles[i]] = true;
|
||||
}
|
||||
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
|
||||
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
|
||||
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
|
||||
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
|
||||
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
|
||||
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
|
||||
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
|
||||
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
|
||||
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
|
||||
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
|
||||
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
|
||||
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
|
||||
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
|
||||
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
|
||||
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
|
||||
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
|
||||
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
|
||||
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
|
||||
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
|
||||
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
|
||||
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
|
||||
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
|
||||
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
|
||||
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
|
||||
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
|
||||
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
|
||||
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
|
||||
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
|
||||
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
|
||||
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
|
||||
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
|
||||
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
|
||||
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
|
||||
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
|
||||
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
|
||||
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
|
||||
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
|
||||
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
|
||||
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
|
||||
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
|
||||
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
|
||||
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
|
||||
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
|
||||
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
|
||||
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
|
||||
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
|
||||
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
|
||||
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
|
||||
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
|
||||
for (i = 0; i < ranges.length; i++) {
|
||||
start = ranges[i][0];
|
||||
end = ranges[i][1];
|
||||
for (j = start; j <= end; j++) {
|
||||
result[j] = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
})();
|
||||
|
||||
function splitQuery(query) {
|
||||
var result = [];
|
||||
var start = -1;
|
||||
for (var i = 0; i < query.length; i++) {
|
||||
if (splitChars[query.charCodeAt(i)]) {
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start, i));
|
||||
start = -1;
|
||||
}
|
||||
} else if (start === -1) {
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
var Search = {
|
||||
|
||||
_index : null,
|
||||
_queued_query : null,
|
||||
_pulse_status : -1,
|
||||
|
||||
init : function() {
|
||||
var params = $.getQueryParameters();
|
||||
if (params.q) {
|
||||
var query = params.q[0];
|
||||
$('input[name="q"]')[0].value = query;
|
||||
this.performSearch(query);
|
||||
}
|
||||
},
|
||||
|
||||
loadIndex : function(url) {
|
||||
$.ajax({type: "GET", url: url, data: null,
|
||||
dataType: "script", cache: true,
|
||||
complete: function(jqxhr, textstatus) {
|
||||
if (textstatus != "success") {
|
||||
document.getElementById("searchindexloader").src = url;
|
||||
}
|
||||
}});
|
||||
},
|
||||
|
||||
setIndex : function(index) {
|
||||
var q;
|
||||
this._index = index;
|
||||
if ((q = this._queued_query) !== null) {
|
||||
this._queued_query = null;
|
||||
Search.query(q);
|
||||
}
|
||||
},
|
||||
|
||||
hasIndex : function() {
|
||||
return this._index !== null;
|
||||
},
|
||||
|
||||
deferQuery : function(query) {
|
||||
this._queued_query = query;
|
||||
},
|
||||
|
||||
stopPulse : function() {
|
||||
this._pulse_status = 0;
|
||||
},
|
||||
|
||||
startPulse : function() {
|
||||
if (this._pulse_status >= 0)
|
||||
return;
|
||||
function pulse() {
|
||||
var i;
|
||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||
var dotString = '';
|
||||
for (i = 0; i < Search._pulse_status; i++)
|
||||
dotString += '.';
|
||||
Search.dots.text(dotString);
|
||||
if (Search._pulse_status > -1)
|
||||
window.setTimeout(pulse, 500);
|
||||
}
|
||||
pulse();
|
||||
},
|
||||
|
||||
/**
|
||||
* perform a search for something (or wait until index is loaded)
|
||||
*/
|
||||
performSearch : function(query) {
|
||||
// create the required interface elements
|
||||
this.out = $('#search-results');
|
||||
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
|
||||
this.dots = $('<span></span>').appendTo(this.title);
|
||||
this.status = $('<p style="display: none"></p>').appendTo(this.out);
|
||||
this.output = $('<ul class="search"/>').appendTo(this.out);
|
||||
|
||||
$('#search-progress').text(_('Preparing search...'));
|
||||
this.startPulse();
|
||||
|
||||
// index already loaded, the browser was quick!
|
||||
if (this.hasIndex())
|
||||
this.query(query);
|
||||
else
|
||||
this.deferQuery(query);
|
||||
},
|
||||
|
||||
/**
|
||||
* execute search (requires search index to be loaded)
|
||||
*/
|
||||
query : function(query) {
|
||||
var i;
|
||||
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||
|
||||
// stem the searchterms and add them to the correct list
|
||||
var stemmer = new Stemmer();
|
||||
var searchterms = [];
|
||||
var excluded = [];
|
||||
var hlterms = [];
|
||||
var tmp = splitQuery(query);
|
||||
var objectterms = [];
|
||||
for (i = 0; i < tmp.length; i++) {
|
||||
if (tmp[i] !== "") {
|
||||
objectterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
|
||||
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
|
||||
tmp[i] === "") {
|
||||
// skip this "word"
|
||||
continue;
|
||||
}
|
||||
// stem the word
|
||||
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
||||
// prevent stemmer from cutting word smaller than two chars
|
||||
if(word.length < 3 && tmp[i].length >= 3) {
|
||||
word = tmp[i];
|
||||
}
|
||||
var toAppend;
|
||||
// select the correct list
|
||||
if (word[0] == '-') {
|
||||
toAppend = excluded;
|
||||
word = word.substr(1);
|
||||
}
|
||||
else {
|
||||
toAppend = searchterms;
|
||||
hlterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
// only add if not already in the list
|
||||
if (!$u.contains(toAppend, word))
|
||||
toAppend.push(word);
|
||||
}
|
||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||
|
||||
// console.debug('SEARCH: searching for:');
|
||||
// console.info('required: ', searchterms);
|
||||
// console.info('excluded: ', excluded);
|
||||
|
||||
// prepare search
|
||||
var terms = this._index.terms;
|
||||
var titleterms = this._index.titleterms;
|
||||
|
||||
// array of [filename, title, anchor, descr, score]
|
||||
var results = [];
|
||||
$('#search-progress').empty();
|
||||
|
||||
// lookup as object
|
||||
for (i = 0; i < objectterms.length; i++) {
|
||||
var others = [].concat(objectterms.slice(0, i),
|
||||
objectterms.slice(i+1, objectterms.length));
|
||||
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
||||
}
|
||||
|
||||
// lookup as search terms in fulltext
|
||||
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
|
||||
|
||||
// let the scorer override scores with a custom scoring function
|
||||
if (Scorer.score) {
|
||||
for (i = 0; i < results.length; i++)
|
||||
results[i][4] = Scorer.score(results[i]);
|
||||
}
|
||||
|
||||
// now sort the results by score (in opposite order of appearance, since the
|
||||
// display function below uses pop() to retrieve items) and then
|
||||
// alphabetically
|
||||
results.sort(function(a, b) {
|
||||
var left = a[4];
|
||||
var right = b[4];
|
||||
if (left > right) {
|
||||
return 1;
|
||||
} else if (left < right) {
|
||||
return -1;
|
||||
} else {
|
||||
// same score: sort alphabetically
|
||||
left = a[1].toLowerCase();
|
||||
right = b[1].toLowerCase();
|
||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||
}
|
||||
});
|
||||
|
||||
// for debugging
|
||||
//Search.lastresults = results.slice(); // a copy
|
||||
//console.info('search results:', Search.lastresults);
|
||||
|
||||
// print the results
|
||||
var resultCount = results.length;
|
||||
function displayNextItem() {
|
||||
// results left, load the summary and display it
|
||||
if (results.length) {
|
||||
var item = results.pop();
|
||||
var listItem = $('<li style="display:none"></li>');
|
||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
|
||||
// dirhtml builder
|
||||
var dirname = item[0] + '/';
|
||||
if (dirname.match(/\/index\/$/)) {
|
||||
dirname = dirname.substring(0, dirname.length-6);
|
||||
} else if (dirname == 'index/') {
|
||||
dirname = '';
|
||||
}
|
||||
listItem.append($('<a/>').attr('href',
|
||||
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
|
||||
highlightstring + item[2]).html(item[1]));
|
||||
} else {
|
||||
// normal html builders
|
||||
listItem.append($('<a/>').attr('href',
|
||||
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
|
||||
highlightstring + item[2]).html(item[1]));
|
||||
}
|
||||
if (item[3]) {
|
||||
listItem.append($('<span> (' + item[3] + ')</span>'));
|
||||
Search.output.append(listItem);
|
||||
listItem.slideDown(5, function() {
|
||||
displayNextItem();
|
||||
});
|
||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||
var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
|
||||
if (suffix === undefined) {
|
||||
suffix = '.txt';
|
||||
}
|
||||
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
|
||||
dataType: "text",
|
||||
complete: function(jqxhr, textstatus) {
|
||||
var data = jqxhr.responseText;
|
||||
if (data !== '' && data !== undefined) {
|
||||
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||
}
|
||||
Search.output.append(listItem);
|
||||
listItem.slideDown(5, function() {
|
||||
displayNextItem();
|
||||
});
|
||||
}});
|
||||
} else {
|
||||
// no source available, just display title
|
||||
Search.output.append(listItem);
|
||||
listItem.slideDown(5, function() {
|
||||
displayNextItem();
|
||||
});
|
||||
}
|
||||
}
|
||||
// search finished, update title and status message
|
||||
else {
|
||||
Search.stopPulse();
|
||||
Search.title.text(_('Search Results'));
|
||||
if (!resultCount)
|
||||
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
|
||||
else
|
||||
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
|
||||
Search.status.fadeIn(500);
|
||||
}
|
||||
}
|
||||
displayNextItem();
|
||||
},
|
||||
|
||||
/**
|
||||
* search for object names
|
||||
*/
|
||||
performObjectSearch : function(object, otherterms) {
|
||||
var filenames = this._index.filenames;
|
||||
var docnames = this._index.docnames;
|
||||
var objects = this._index.objects;
|
||||
var objnames = this._index.objnames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var i;
|
||||
var results = [];
|
||||
|
||||
for (var prefix in objects) {
|
||||
for (var name in objects[prefix]) {
|
||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||
var score = 0;
|
||||
var parts = fullname.split('.');
|
||||
// check for different match types: exact matches of full name or
|
||||
// "last name" (i.e. last dotted part)
|
||||
if (fullname == object || parts[parts.length - 1] == object) {
|
||||
score += Scorer.objNameMatch;
|
||||
// matches in last name
|
||||
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
||||
score += Scorer.objPartialMatch;
|
||||
}
|
||||
var match = objects[prefix][name];
|
||||
var objname = objnames[match[1]][2];
|
||||
var title = titles[match[0]];
|
||||
// If more than one term searched for, we require other words to be
|
||||
// found in the name/title/description
|
||||
if (otherterms.length > 0) {
|
||||
var haystack = (prefix + ' ' + name + ' ' +
|
||||
objname + ' ' + title).toLowerCase();
|
||||
var allfound = true;
|
||||
for (i = 0; i < otherterms.length; i++) {
|
||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||
allfound = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!allfound) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
var descr = objname + _(', in ') + title;
|
||||
|
||||
var anchor = match[3];
|
||||
if (anchor === '')
|
||||
anchor = fullname;
|
||||
else if (anchor == '-')
|
||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||
// add custom score for some objects according to scorer
|
||||
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
||||
score += Scorer.objPrio[match[2]];
|
||||
} else {
|
||||
score += Scorer.objPrioDefault;
|
||||
}
|
||||
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* search for full-text terms in the index
|
||||
*/
|
||||
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
|
||||
var docnames = this._index.docnames;
|
||||
var filenames = this._index.filenames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var i, j, file;
|
||||
var fileMap = {};
|
||||
var scoreMap = {};
|
||||
var results = [];
|
||||
|
||||
// perform the search on the required terms
|
||||
for (i = 0; i < searchterms.length; i++) {
|
||||
var word = searchterms[i];
|
||||
var files = [];
|
||||
var _o = [
|
||||
{files: terms[word], score: Scorer.term},
|
||||
{files: titleterms[word], score: Scorer.title}
|
||||
];
|
||||
|
||||
// no match but word was a required one
|
||||
if ($u.every(_o, function(o){return o.files === undefined;})) {
|
||||
break;
|
||||
}
|
||||
// found search word in contents
|
||||
$u.each(_o, function(o) {
|
||||
var _files = o.files;
|
||||
if (_files === undefined)
|
||||
return
|
||||
|
||||
if (_files.length === undefined)
|
||||
_files = [_files];
|
||||
files = files.concat(_files);
|
||||
|
||||
// set score for the word in each file to Scorer.term
|
||||
for (j = 0; j < _files.length; j++) {
|
||||
file = _files[j];
|
||||
if (!(file in scoreMap))
|
||||
scoreMap[file] = {}
|
||||
scoreMap[file][word] = o.score;
|
||||
}
|
||||
});
|
||||
|
||||
// create the mapping
|
||||
for (j = 0; j < files.length; j++) {
|
||||
file = files[j];
|
||||
if (file in fileMap)
|
||||
fileMap[file].push(word);
|
||||
else
|
||||
fileMap[file] = [word];
|
||||
}
|
||||
}
|
||||
|
||||
// now check if the files don't contain excluded terms
|
||||
for (file in fileMap) {
|
||||
var valid = true;
|
||||
|
||||
// check if all requirements are matched
|
||||
if (fileMap[file].length != searchterms.length)
|
||||
continue;
|
||||
|
||||
// ensure that none of the excluded terms is in the search result
|
||||
for (i = 0; i < excluded.length; i++) {
|
||||
if (terms[excluded[i]] == file ||
|
||||
titleterms[excluded[i]] == file ||
|
||||
$u.contains(terms[excluded[i]] || [], file) ||
|
||||
$u.contains(titleterms[excluded[i]] || [], file)) {
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if we have still a valid result we can add it to the result list
|
||||
if (valid) {
|
||||
// select one (max) score for the file.
|
||||
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
|
||||
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
|
||||
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||
* words. the first one is used to find the occurrence, the
|
||||
* latter for highlighting it.
|
||||
*/
|
||||
makeSearchSummary : function(text, keywords, hlwords) {
|
||||
var textLower = text.toLowerCase();
|
||||
var start = 0;
|
||||
$.each(keywords, function() {
|
||||
var i = textLower.indexOf(this.toLowerCase());
|
||||
if (i > -1)
|
||||
start = i;
|
||||
});
|
||||
start = Math.max(start - 120, 0);
|
||||
var excerpt = ((start > 0) ? '...' : '') +
|
||||
$.trim(text.substr(start, 240)) +
|
||||
((start + 240 - text.length) ? '...' : '');
|
||||
var rv = $('<div class="context"></div>').text(excerpt);
|
||||
$.each(hlwords, function() {
|
||||
rv = rv.highlightText(this, 'highlighted');
|
||||
});
|
||||
return rv;
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
Search.init();
|
||||
});
|
||||
999
help/uk/_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/uk/_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/uk/_static/up-pressed.png
Normal file
|
After Width: | Height: | Size: 214 B |
BIN
help/uk/_static/up.png
Normal file
|
After Width: | Height: | Size: 203 B |
808
help/uk/_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/uk/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="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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">Contents</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>
|
||||
107
help/uk/faq.html
Normal file
@@ -0,0 +1,107 @@
|
||||
|
||||
<!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="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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> mode, однак, Є ніяких обмежень.</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>Якщо ви хочете бути впевнені, що dupeGuru ніколи не буде видаляти файл з певної папки, переконайтеся, що встановили в стан <strong>Посилання на:</strong> документ: <a class="reference internal" href="folders.html"><span class="doc">Вибір папки</span></a>.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">Що це за „(X відкидається) «повідомлення в рядку стану?</p>
|
||||
<p>У деяких випадках, кілька матчів не включені в остаточні результати з міркувань безпеки. Дозвольте мені навести приклад. У нас є 3 файли: A, B і C. Ми скануємо їх за допомогою фільтра низьких твердості. Сканер визначає, що матчі з 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>Включити <a class="reference internal" href="results.html"><span class="doc">ошукані Тільки</span></a> режим і натиснути на папку колонки для сортування дублікатів по папках. Потім він буде легким для вас, щоб вибрати всі дублікати з тієї ж папці, а потім натиснути клавішу пробіл, щоб відзначити всі вибрані дублікатів.</p>
|
||||
</div>
|
||||
<div class="topic">
|
||||
<p class="topic-title first">Я намагався відправити свої дублікати в корзину, але dupeGuru говорить мені, він не може це зробити. Чому? Що я можу зробити?</p>
|
||||
<p>Більшу частину часу, тому dupeGuru не можете відправляти файли до кошика через права доступу до файлів. Ви повинні * написати * дозволу на файли, які ви хочете відправити у кошик. Якщо ви не знайомі з командним рядком, ви можете використовувати утиліти, такі як <a class="reference external" href="http://macchampion.com/arbysoft/BatchMod">BatChmod</a> виправити Ваші права.</p>
|
||||
<p>Якщо dupeGuru ще дає вам неприємності після фіксації ваших прав, було кілька випадків, коли за допомогою «Переміщення Позначено до …» як обхідного шляху зробили свою справу. Таким чином, замість відправки файлів в корзину, ви посилаєте їх в тимчасову папку з «Переміщати Позначено до …» дії, а потім видалити цю тимчасову папку вручну.</p>
|
||||
<p>Якщо все це не так, <a class="reference external" href="http://www.hardcoded.net/support">контакт УГ підтримки</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">Contents</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>
|
||||
83
help/uk/folders.html
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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>Сканування</strong>.Це вікно досить проста у використанні. Якщо ви хочете додати папку, натисніть на кнопку <strong>+</strong>. Якщо ви додали папки перш, спливаюче меню зі списком останніх папки додав з’явиться. Ви можете натиснути на одну з них, щоб додати його прямо в свій список. Якщо натиснути на перший пункт меню, <strong>Додати новий папку …</strong>, вам буде запропоновано ввести папку додати. Якщо ви ніколи не додається папка, не з’явиться меню, і ви будете безпосередньо буде запропоновано ввести нову папку додати.</p>
|
||||
<p>Альтернативний спосіб для додавання папок в список, щоб перетягнути їх в списку.</p>
|
||||
<p>Щоб видалити папку, виберіть папку, видалити, і натисніть на <strong>-</strong>. Якщо папці вибирається при натисканні кнопки, обраної папки буде встановлений в <strong>виключені</strong> стану (див. нижче), а не видалений.</p>
|
||||
<div class="section" id="id2">
|
||||
<h2>Папка держав<a class="headerlink" href="#id2" title="Постійне посилання на цей заголовок">¶</a></h2>
|
||||
<p>Кожна папка може знаходитися в одному з цих 3-х держав:</p>
|
||||
<ul class="simple">
|
||||
<li>** Нормальний: ** дублікати знайдені в цю папку можна видалити.</li>
|
||||
<li>** Довідка: ** Дублікати знайти в цій папці <strong>не може</strong> бути видалені. Файли з цієї папки можна тільки в кінцевому підсумку в <strong>посилання</strong> позиція в групі обдурити. Якщо більш ніж один файл з папки посилання в кінцевому підсумку в тій же групі обдурити, тільки один, будуть збережені. Інші будуть видалені з групи.</li>
|
||||
<li>** Не включено: ** Файли в цьому каталозі не буде включений у перевірку.</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">Contents</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/uk/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="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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">Contents</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/uk/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="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</span></a></h1>
|
||||
<h2 class="heading"><span>dupeGuru help</span></h2>
|
||||
</div>
|
||||
<div class="topnav" role="navigation" aria-label="top navigation">
|
||||
|
||||
<p>
|
||||
<a class="uplink" href="#">Contents</a>
|
||||
  ::  
|
||||
<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">Quick Start</span></a></p>
|
||||
<p>Це гарна ідея, щоб зберегти dupeGuru оновлено. Ви можете завантажити останню версію на своєму <a class="reference external" href="https://www.hardcoded.net/dupeguru">homepage</a>.</p>
|
||||
<p>Contents:</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="quick_start.html">Швидкий старт</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="#">Contents</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>
|
||||
9
help/uk/objects.inv
Normal file
@@ -0,0 +1,9 @@
|
||||
# Sphinx inventory version 2
|
||||
# Project: dupeGuru
|
||||
# Version: 4.0.3
|
||||
# The remainder of this file is compressed using zlib.
|
||||
xÚmQ±NÃ0Ýýþ<>"±²2ð($ná&©“HÀ”¦b@BbÈ
|
||||
ˆÆ6jE ´üÂÝqvpƒ‡{¾÷ÞÝ;?ôâ‰<C3A2>É„gyp$>r¿Â|*ùq_²±7sû¨ì:à–8Ç
|
||||
k_°Å
|
||||
–°ƒÞ±q"¡²«ƒ,ó¶°ÂKÍ\ÒkaË&"Žâ@\šô΄ÔĵÌk²XÃZœ³ßnkâ4E*N
|
||||
UðPÈ”M“àéôrÔüUçð {Xã>°††¥JŒ…±/{9°Õx¦uˆHoõȬˆüóÓ,÷Tî’Ø’_¡¡hÖ:xç:]ʸĊ)‘ª(QQ] WÂÅÆY7DÜcIöŠ˜jSê#môÅ áf·•Ù®%’MVÈ<:ÈŠ?R:o&”[3[E‡Ë„§üp˜m‡YÒS7
|
||||
83
help/uk/preferences.html
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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">регулярного expressions.info</a>.</p>
|
||||
<p><strong>Видалення порожніх папок після видалення або переміщення:</strong> Коли ця опція включена, папки будуть видалені через файл видалений або переміщений і папка порожня.</p>
|
||||
<p><strong>Копіювання і переміщення:</strong> Визначає, як операції копіювання та переміщення (в меню Дії) буде себе вести.</p>
|
||||
<ul class="simple">
|
||||
<li><strong>Право на призначення:</strong> Всі файли будуть відправлені безпосередньо в пункт призначення, не намагаючись відтворити початковий шлях взагалі.</li>
|
||||
<li><strong>Повторно відносний шлях:</strong> шлях вихідний файл буде відтворений в папці призначення, аж до кореневого виділення в панелі Directories. Наприклад, якщо ви додали <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/SubFolder</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>** Повторно абсолютний шлях: ** шлях вихідний файл буде відтворений в папці призначення в повному комплекті. Наприклад, якщо ви переміщаєте <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>. Ці наповнювачі будуть замінені на шлях вибраний обдурити (% г) і шлях до заслання на файл вибраного обдурити (%r).</p>
|
||||
<p>Якщо шлях до виконуваного містить прогалини, необхідно укласти його в «» лапки. Ви також повинні докласти заповнювачів в лапки, бо це дуже можливо, що шлях до обдурених і посилання будуть містити пробіли. Ось приклад користувальницької команди:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s2">"C:\Program Files\SuperDiffProg\SuperDiffProg.exe"</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span> <span class="s2">"</span><span class="si">%r</span><span class="s2">"</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="bottomnav" role="navigation" aria-label="bottom navigation">
|
||||
|
||||
<p>
|
||||
«  <a href="folders.html">Вибір папки</a>
|
||||
  ::  
|
||||
<a class="uplink" href="index.html">Contents</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/uk/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="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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>Натисніть на сканування.</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">Contents</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/uk/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="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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">Contents</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/uk/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="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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>Тільки ошукані режимі розкрити свою дійсну силу, коли ви використовуєте його з Delta Значення перемикач включений. Коли ви дозволите його, відносні значення буде відображатися замість абсолютних. Так що якщо, наприклад, ви хочете видалити з результатів всі дублікати, які є більш 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>Для більш просунутих фільтрів, ви можете включити «Використання регулярних виразів при фільтрації» на. Функція фільтрації буде використовувати регулярні вирази. Регулярний вираз мови для узгодження тексту. Пояснюючи їх виходить за рамки цього документа. Гарне місце для початку навчання він <a class="reference external" href="http://www.regular-expressions.info">регулярного 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">Contents</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>
|
||||
83
help/uk/search.html
Normal file
@@ -0,0 +1,83 @@
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="uk">
|
||||
<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 documentation</title>
|
||||
<link rel="stylesheet" href="_static/haiku.css" type="text/css" />
|
||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||
<script type="text/javascript" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/translations.js"></script>
|
||||
<script type="text/javascript" src="_static/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 documentation</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">Contents</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">Contents</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>
|
||||