Go to file
glubsy 6213d50670 Squashed commit of the following:
commit ac941037ff
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Thu Jul 16 22:21:24 2020 +0200

    Fix resize of top frame not updating scaled pixmap

    * Also limit viewing features such as zoom levels when files have different dimensions
    * GraphicsViewImageViewer is still a bit buggy: the scrollbars are toggled on when the pixmap is null in the reference viewer (we do not use that class right anyway)

commit 733b3b0ed4
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Thu Jul 16 01:31:24 2020 +0200

    Prevent zoom for images of differing dimensions

    * If images are not the same size, prevent zooming features from being used by disabling the normal size button, only enable swap

commit 9168d72f38
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Wed Jul 15 22:47:32 2020 +0200

    Update preferences on show(), not in constructor

    * If the dialog window shouldn't have a titlebar during construction, update accordingly only when showing to fix Windows displaying a window without titlebar on first show
    * Only save geometry if the window is floating. Otherwise geometry while docked is saved whih gives weird results on subsequent starts, since it may be floating by default anyway (at least on Linux where titlebar being disabled is allowed while floating)
    * Vertical title bar doesn't seem to work on Windows, add note in preferences dialog

commit 75621cc816
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Wed Jul 15 22:04:19 2020 +0200

    Prevent Windows from floating if no decoration

    * Windows users cannot move a window which has no native decorations. Toggling a dock widget's titlebar off also removes native decorations on a floating window. Until we implement a replacement titlebar by overriding paintEvents, simply force the floating window to go back to docked state after we toggled the titlebar off.

commit 3c816b2f11
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Wed Jul 15 21:43:01 2020 +0200

    Fix computing and setting offset to 0 for tableview

commit 85d6e05cd4
Merge: 66127d02 3eddeb6a
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Wed Jul 15 21:25:44 2020 +0200

    Merge branch 'dockable_windows' into details_dialog_improvements_dev

commit 66127d025e
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Wed Jul 15 20:22:13 2020 +0200

    Add credit for icons used, upscale exchange icon

    * Jason Cho gave his express permission to use the icon (it was made 10 years ago and he doesn't have the source files anymore)
    * Used waifu2x to upscale the icon
    * Used GIMP to draw dark outline around the icon
    * Source files are included

commit 58c675d1fa
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Wed Jul 15 05:25:47 2020 +0200

    Add custom icons

    * Use custom icons on platforms which do not provide theme
    * Old zoom icons credits to "schollidesign" from icon pack Office and Entertainment (GPL licence).
    * Exchange icon credit to Jason Cho (Unknown license).
    * Use hack to resize viewers on first show() as well

commit 95b8406c7b
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Wed Jul 15 04:14:24 2020 +0200

    Fix scrollbar displayed while splitter maxed out

    * For some reason the table's height is a few pixel longer on Windows so we work around the issue by adding a small offset to the maximum height hint.
    * No idea about MacOS yet but this might need the same treatment.

commit 3eddeb6aeb
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Tue Jul 14 17:37:48 2020 +0200

    Fix ME/SE details dialogs, add preferences

    * Fix ME and SE versions of details dialog not displaying their content properly after change to QDockWidget
    * Add option to toggle titlebar and orientation of titlebar in preferences dialog
    * Fix setting layout on PE details dialog window while layout already set, by removing the self (parent) reference in constructing the QSplitter

commit 56912a7108
Author: glubsy <glubsy@users.noreply.github.com>
Date:   Mon Jul 13 05:06:04 2020 +0200

    Make details dialog dockable
2020-07-16 22:31:54 +02:00
.github/ISSUE_TEMPLATE Remove Old Issue Template 2020-06-15 23:28:31 -05:00
.tx Pulled all locs from Transifex 2013-08-03 17:34:02 -04:00
core Clean up rest of DeprecationWarnings 2020-06-30 00:51:06 -05:00
help Remove RC from changelog version 2019-05-13 20:43:47 -05:00
hscommon Add details to commented out tests. 2020-06-30 12:25:23 -05:00
images Squashed commit of the following: 2020-07-16 22:31:54 +02:00
locale Updated wrongly translated wording 2018-07-11 14:26:27 +08:00
pkg Add changelog to pkg/debian 2020-06-16 20:45:48 -05:00
qt Squashed commit of the following: 2020-07-16 22:31:54 +02:00
qtlib Squashed commit of the following: 2020-07-16 22:31:54 +02:00
scripts Update Packaging 2019-12-31 21:36:52 -06:00
.ctags Add ctags config 2016-06-07 21:36:25 -04:00
.gitignore Add image comparison features to details dialog 2020-07-02 22:52:47 +02:00
.travis.yml Call style-checker tox environment 2020-05-30 09:40:23 -04:00
CREDITS Moved credits to the root folder 2016-08-16 20:18:49 -04:00
LICENSE Change license from BSD to GPLv3 2015-01-04 09:59:08 -05:00
Makefile remove 'm' from SO var on Linux and OSX 2020-02-26 15:39:39 -06:00
README.md Update documentation & CI 2019-12-31 17:33:17 -06:00
Windows.md Update documentation & CI 2019-12-31 17:33:17 -06:00
build.py Format files with black 2019-12-31 20:16:27 -06:00
package.py Add distro to requirements and use for packaging 2020-06-24 18:39:06 -05:00
requirements-extra.txt Upgrade to latest pytest 2020-06-25 23:26:48 -05:00
requirements-windows.txt Fix pywin32 dependency 2020-06-30 00:52:04 -05:00
requirements.txt Add distro to requirements and use for packaging 2020-06-24 18:39:06 -05:00
run.py More Test and Flake8 Cleanup 2020-06-27 01:08:12 -05:00
setup.nsi Update Windows Build 2019-03-24 21:35:34 -05:00
tox.ini More Test and Flake8 Cleanup 2020-06-27 01:08:12 -05:00
win_version_info.temp Update Windows Build 2019-03-24 21:35:34 -05:00

README.md

dupeGuru

dupeGuru is a cross-platform (Linux, OS X, Windows) GUI tool to find duplicate files in a system. It's written mostly in Python 3 and has the peculiarity of using multiple GUI toolkits, all using the same core Python code. On OS X, the UI layer is written in Objective-C and uses Cocoa. On Linux, it's written in Python and uses Qt5.

The Cocoa UI of dupeGuru is hosted in a separate repo: https://github.com/hsoft/dupeguru-cocoa

Current status

Development has been slow this past year, however very close to getting all the different 4.0.4 releases posted. Most of the work this past year (2019) has been towards packaging the application and issues related to that.

Still looking for additional help especially with regards to:

  • OSX maintenance (reproducing bugs & cocoa version)
  • Linux maintenance (reproducing bugs)

Contents of this folder

This folder contains the source for dupeGuru. Its documentation is in help, but is also available online in its built form. Here's how this source tree is organized:

  • core: Contains the core logic code for dupeGuru. It's Python code.
  • qt: UI code for the Qt toolkit. It's written in Python and uses PyQt.
  • images: Images used by the different UI codebases.
  • pkg: Skeleton files required to create different packages
  • help: Help document, written for Sphinx.
  • locale: .po files for localization.
  • hscommon: A collection of helpers used across HS applications.
  • qtlib: A collection of helpers used across Qt UI codebases of HS applications.

How to build dupeGuru from source

Windows

For windows instructions see the Windows Instructions.

Prerequisites

make

dupeGuru is built with "make":

$ make
$ make run

Generate Debian/Ubuntu package

$ bash -c "python3 -m venv --system-site-packages env && source env/bin/activate && pip install -r requirements.txt && python3 build.py --clean && python3 package.py"

Running tests

The complete test suite is run with Tox 1.7+. If you have it installed system-wide, you don't even need to set up a virtualenv. Just cd into the root project folder and run tox.

If you don't have Tox system-wide, install it in your virtualenv with pip install tox and then run tox.

You can also run automated tests without Tox. Extra requirements for running tests are in requirements-extra.txt. So, you can do pip install -r requirements-extra.txt inside your virtualenv and then py.test core hscommon