mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-25 08:01:39 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1f2e1c191 | ||
|
|
33f372f6c6 | ||
|
|
8e5c2a8875 | ||
|
|
36f3638ae4 | ||
|
|
d10210011f | ||
|
|
e867840d81 | ||
|
|
fb7e3189a8 | ||
|
|
5733c0143b | ||
|
|
ac4881f231 | ||
|
|
939efd7dab | ||
|
|
a93d96d742 |
2
.hgtags
2
.hgtags
@@ -24,3 +24,5 @@ f71d405e62badcfdc1b037facaac043cece40ee5 se2.10.1
|
||||
3742e83edd9eadf44e1a501859f5e2462b1ef6fd me5.8.1
|
||||
724ff565dd785fb739774588c6ee652cfc0612d5 pe1.9.1
|
||||
634b66415c6529f46ae4f837318027cc9d70c3b5 before-py3k
|
||||
2b67955db2b0580a8b0854dc918b6ab0d1fa3b88 se2.11.0
|
||||
b56fe4dd8c95bca270b078a09e86848df77e2b2d me5.9.0
|
||||
|
||||
7
README
7
README
@@ -45,7 +45,7 @@ Windows prerequisites
|
||||
---
|
||||
|
||||
- Visual Studio 2008 (Express is enough) is needed to build C extensions. (http://www.microsoft.com/Express/)
|
||||
- PyQt 4.7 (http://www.riverbankcomputing.co.uk/news)
|
||||
- PyQt 4.7.5 (http://www.riverbankcomputing.co.uk/news)
|
||||
- cx_Freeze, if you want to build a exe. You don't need it if you just want to run dupeGuru. (http://cx-freeze.sourceforge.net/)
|
||||
- Advanced Installer, if you want to build the installer file. (http://www.advancedinstaller.com/)
|
||||
|
||||
@@ -66,8 +66,3 @@ Then, just build the thing and then run it with:
|
||||
If you want to create ready-to-upload package, run:
|
||||
|
||||
python package.py
|
||||
|
||||
64-bit on OS X
|
||||
---
|
||||
|
||||
The "release" configuration of dupeGuru's XCode project build with archs "i386 x86_64 ppc". However there are currently problems with py2app and 64 bit. If you want to correctly build 64-bit apps, refer to http://www.hardcoded.net/articles/building-64-bit-pyobjc-applications-with-py2app.htm .
|
||||
4
build.py
4
build.py
@@ -105,8 +105,8 @@ def build_pe_modules(ui):
|
||||
move('_block_osx.so', op.join('core_pe', '_block_osx.so'))
|
||||
move('_cache.so', op.join('core_pe', '_cache.so'))
|
||||
move('_cache.pyd', op.join('core_pe', '_cache.pyd'))
|
||||
move('_block_qt.so', op.join('qt', 'pe', '_block.so'))
|
||||
move('_block_qt.pyd', op.join('qt', 'pe', '_block.pyd'))
|
||||
move('_block_qt.so', op.join('qt', 'pe', '_block_qt.so'))
|
||||
move('_block_qt.pyd', op.join('qt', 'pe', '_block_qt.pyd'))
|
||||
|
||||
def main():
|
||||
conf = yaml.load(open('conf.yaml'))
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>hsft</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>5.8.1</string>
|
||||
<string>5.9.0</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
||||
@@ -11,10 +11,16 @@ from core_me.app_cocoa import DupeGuruME
|
||||
from core.scanner import ScanType
|
||||
|
||||
# Fix py2app imports which chokes on relative imports and other stuff
|
||||
from core_me import app_cocoa, data, fs, scanner
|
||||
import core_me.app_cocoa, core_me.data, core_me.fs, core_me.scanner
|
||||
import hsaudiotag.aiff, hsaudiotag.flac, hsaudiotag.genres, hsaudiotag.id3v1,\
|
||||
hsaudiotag.id3v2, hsaudiotag.mp4, hsaudiotag.mpeg, hsaudiotag.ogg, hsaudiotag.wma
|
||||
from hsaudiotag import aiff, flac, genres, id3v1, id3v2, mp4, mpeg, ogg, wma
|
||||
import hsutil.conflict
|
||||
import core.engine, core.fs, core.app
|
||||
import xml.etree.ElementPath
|
||||
import gzip
|
||||
import aem.kae
|
||||
import appscript.defaultterminology
|
||||
|
||||
class PyDupeGuru(PyDupeGuruBase):
|
||||
def init(self):
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<key>CFBundleSignature</key>
|
||||
<string>hsft</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.9.1</string>
|
||||
<string>1.10.0</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/hs_license
|
||||
|
||||
import tempfile
|
||||
import os.path as op
|
||||
from tempfile import mkdtemp
|
||||
|
||||
@@ -131,7 +130,7 @@ def export_to_xhtml(colnames, rows):
|
||||
content = MAIN_TEMPLATE.replace('$colheaders', colheaders).replace('$rows', rendered_rows)
|
||||
folder = mkdtemp()
|
||||
destpath = op.join(folder, 'export.htm')
|
||||
fp = open(destpath, 'w')
|
||||
fp.write(content.encode('utf-8'))
|
||||
fp = open(destpath, 'wt', encoding='utf-8')
|
||||
fp.write(content)
|
||||
fp.close()
|
||||
return destpath
|
||||
|
||||
1
debian_me/compat
Normal file
1
debian_me/compat
Normal file
@@ -0,0 +1 @@
|
||||
7
|
||||
@@ -8,5 +8,5 @@ Homepage: http://www.hardcoded.net
|
||||
|
||||
Package: dupeguru-me
|
||||
Architecture: any
|
||||
Depends: python (>= 2.6), python-qt4 (>= 4.6)
|
||||
Depends: python3 (>= 3.1)
|
||||
Description: dupeGuru Music Edition
|
||||
|
||||
@@ -42,9 +42,9 @@ install: build
|
||||
dh_installdirs
|
||||
|
||||
chmod +x src/start.py
|
||||
cp -R src/ $(CURDIR)/debian/tmp/usr/local/share/dupeguru_me
|
||||
cp $(CURDIR)/debian/dupeguru_me.desktop $(CURDIR)/debian/tmp/usr/share/applications
|
||||
ln -s /usr/local/share/dupeguru_me/start.py $(CURDIR)/debian/tmp/usr/local/bin/dupeguru_me
|
||||
cp -R src/ $(CURDIR)/debian/dupeguru-me/usr/local/share/dupeguru_me
|
||||
cp $(CURDIR)/debian/dupeguru_me.desktop $(CURDIR)/debian/dupeguru-me/usr/share/applications
|
||||
ln -s /usr/local/share/dupeguru_me/start.py $(CURDIR)/debian/dupeguru-me/usr/local/bin/dupeguru_me
|
||||
|
||||
|
||||
# Build architecture-independent files here.
|
||||
|
||||
1
debian_pe/compat
Normal file
1
debian_pe/compat
Normal file
@@ -0,0 +1 @@
|
||||
7
|
||||
@@ -8,5 +8,5 @@ Homepage: http://www.hardcoded.net
|
||||
|
||||
Package: dupeguru-pe
|
||||
Architecture: any
|
||||
Depends: python (>= 2.6), python-qt4 (>= 4.6), python-imaging (>= 1.1.6)
|
||||
Depends: python3 (>= 3.1)
|
||||
Description: dupeGuru Picture Edition
|
||||
|
||||
@@ -42,9 +42,9 @@ install: build
|
||||
dh_installdirs
|
||||
|
||||
chmod +x src/start.py
|
||||
cp -R src/ $(CURDIR)/debian/tmp/usr/local/share/dupeguru_pe
|
||||
cp $(CURDIR)/debian/dupeguru_pe.desktop $(CURDIR)/debian/tmp/usr/share/applications
|
||||
ln -s /usr/local/share/dupeguru_pe/start.py $(CURDIR)/debian/tmp/usr/local/bin/dupeguru_pe
|
||||
cp -R src/ $(CURDIR)/debian/dupeguru-pe/usr/local/share/dupeguru_pe
|
||||
cp $(CURDIR)/debian/dupeguru_pe.desktop $(CURDIR)/debian/dupeguru-pe/usr/share/applications
|
||||
ln -s /usr/local/share/dupeguru_pe/start.py $(CURDIR)/debian/dupeguru-pe/usr/local/bin/dupeguru_pe
|
||||
|
||||
|
||||
# Build architecture-independent files here.
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
- date: 2010-08-20
|
||||
version: 5.9.0
|
||||
description: |
|
||||
* Added the ability to save results (and reload them) at arbitrary locations.
|
||||
* Improved the way reference files in dupe groups are chosen. (#15)
|
||||
* Remember size/position of all windows between launches. (#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)
|
||||
* Removed the Creation Date column, which wasn't displaying the correct value anyway. (#101)
|
||||
- date: 2010-07-16
|
||||
version: 5.8.1
|
||||
description: |
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
- date: 2010-08-21
|
||||
version: 1.10.0
|
||||
description: |
|
||||
* Added the ability to save results (and reload them) at arbitrary locations.
|
||||
* Improved the way reference files in dupe groups are chosen. (#15)
|
||||
* Remember size/position of all windows between launches. (#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)
|
||||
* Removed the Creation Date column, which wasn't displaying the correct value anyway. (#101)
|
||||
- date: 2010-07-17
|
||||
version: 1.9.1
|
||||
description: |
|
||||
|
||||
@@ -34,7 +34,6 @@ def package_windows(edition, dev):
|
||||
return
|
||||
add_to_pythonpath('.')
|
||||
add_to_pythonpath('qt')
|
||||
add_to_pythonpath(op.join('qt', 'base'))
|
||||
add_to_pythonpath(op.join('qt', edition))
|
||||
os.chdir(op.join('qt', edition))
|
||||
from app import DupeGuru
|
||||
@@ -74,7 +73,6 @@ def package_windows(edition, dev):
|
||||
|
||||
def package_debian(edition):
|
||||
add_to_pythonpath('qt')
|
||||
add_to_pythonpath(op.join('qt', 'base'))
|
||||
add_to_pythonpath(op.join('qt', edition))
|
||||
from app import DupeGuru
|
||||
|
||||
|
||||
@@ -463,7 +463,7 @@
|
||||
<customwidget>
|
||||
<class>ResultsView</class>
|
||||
<extends>QTreeView</extends>
|
||||
<header>results_model</header>
|
||||
<header>.results_model</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
|
||||
@@ -17,7 +17,7 @@ class DupeGuru(DupeGuruBase):
|
||||
EDITION = 'me'
|
||||
LOGO_NAME = 'logo_me'
|
||||
NAME = 'dupeGuru Music Edition'
|
||||
VERSION = '5.8.1'
|
||||
VERSION = '5.9.0'
|
||||
DELTA_COLUMNS = frozenset([2, 3, 4, 5, 7])
|
||||
|
||||
def __init__(self):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
||||
#
|
||||
# This software is licensed under the "HS" License as described in the "LICENSE" file,
|
||||
@@ -26,4 +26,4 @@ if __name__ == "__main__":
|
||||
QCoreApplication.setApplicationName(DupeGuru.NAME)
|
||||
QCoreApplication.setApplicationVersion(DupeGuru.VERSION)
|
||||
dgapp = DupeGuru()
|
||||
sys.exit(app.exec_())
|
||||
sys.exit(app.exec_())
|
||||
|
||||
@@ -60,7 +60,7 @@ class DupeGuru(DupeGuruBase):
|
||||
EDITION = 'pe'
|
||||
LOGO_NAME = 'logo_pe'
|
||||
NAME = 'dupeGuru Picture Edition'
|
||||
VERSION = '1.9.1'
|
||||
VERSION = '1.10.0'
|
||||
DELTA_COLUMNS = frozenset([2, 5])
|
||||
|
||||
def __init__(self):
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/hs_license
|
||||
|
||||
from _block import getblocks
|
||||
from _block_qt import getblocks
|
||||
|
||||
# Converted to C
|
||||
# def getblock(image):
|
||||
|
||||
@@ -159,7 +159,7 @@ static PyMethodDef BlockMethods[] = {
|
||||
|
||||
static struct PyModuleDef BlockDef = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"_block",
|
||||
"_block_qt",
|
||||
NULL,
|
||||
-1,
|
||||
BlockMethods,
|
||||
@@ -170,7 +170,7 @@ static struct PyModuleDef BlockDef = {
|
||||
};
|
||||
|
||||
PyObject *
|
||||
PyInit__block(void)
|
||||
PyInit__block_qt(void)
|
||||
{
|
||||
PyObject *m = PyModule_Create(&BlockDef);
|
||||
if (m == NULL) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
||||
#
|
||||
# This software is licensed under the "HS" License as described in the "LICENSE" file,
|
||||
|
||||
@@ -15,11 +15,6 @@ from PyQt4.QtGui import QApplication, QIcon, QPixmap
|
||||
|
||||
import base.dg_rc
|
||||
|
||||
if sys.platform == 'linux2':
|
||||
# Under Python3, we have to add 'base' to pythonpath because UI files don't use
|
||||
# relative imports.
|
||||
sys.path.append(os.path.dirname(base.dg_rc.__file__))
|
||||
|
||||
from app import DupeGuru
|
||||
|
||||
if sys.platform == 'win32':
|
||||
|
||||
Reference in New Issue
Block a user