diff --git a/build.py b/build.py
index 085f1712..9d83d2aa 100644
--- a/build.py
+++ b/build.py
@@ -146,7 +146,7 @@ def build_pe_modules(ui):
def build_normal(edition, ui, dev):
print("Building dupeGuru {0} with UI {1}".format(edition.upper(), ui))
add_to_pythonpath('.')
- build_help(edition, ui, dev)
+ build_help(edition)
print("Building dupeGuru")
if edition == 'pe':
build_pe_modules(ui)
diff --git a/cocoa/base/AppDelegate.h b/cocoa/base/AppDelegate.h
index b9739a98..7012c077 100644
--- a/cocoa/base/AppDelegate.h
+++ b/cocoa/base/AppDelegate.h
@@ -18,6 +18,7 @@ http://www.hardcoded.net/licenses/bsd_license
{
IBOutlet PyDupeGuruBase *py;
IBOutlet NSMenu *recentResultsMenu;
+ IBOutlet NSMenu *actionsMenu;
IBOutlet NSMenu *columnsMenu;
ResultWindowBase *_resultWindow;
diff --git a/cocoa/base/en.lproj/MainMenu.xib b/cocoa/base/en.lproj/MainMenu.xib
index 05e8726d..e5aa02f9 100644
--- a/cocoa/base/en.lproj/MainMenu.xib
+++ b/cocoa/base/en.lproj/MainMenu.xib
@@ -12,7 +12,7 @@
1274
+
@@ -1907,7 +1915,7 @@
- 1274
+ 1275
@@ -2001,6 +2009,7 @@
YES
YES
+ actionsMenu
columnsMenu
py
recentResultsMenu
@@ -2008,6 +2017,7 @@
YES
NSMenu
+ NSMenu
PyDupeGuruBase
NSMenu
@@ -2016,12 +2026,17 @@
YES
YES
+ actionsMenu
columnsMenu
py
recentResultsMenu
YES
+
+ actionsMenu
+ NSMenu
+
columnsMenu
NSMenu
diff --git a/cocoa/base/fr.lproj/MainMenu.xib b/cocoa/base/fr.lproj/MainMenu.xib
index ddc514f4..d455f4f7 100644
--- a/cocoa/base/fr.lproj/MainMenu.xib
+++ b/cocoa/base/fr.lproj/MainMenu.xib
@@ -1058,6 +1058,14 @@
1274
+
+
+ actionsMenu
+
+
+
+ 1275
+
@@ -1904,7 +1912,7 @@
- 1274
+ 1275
@@ -1998,6 +2006,7 @@
YES
YES
+ actionsMenu
columnsMenu
py
recentResultsMenu
@@ -2005,6 +2014,7 @@
YES
NSMenu
+ NSMenu
PyDupeGuruBase
NSMenu
@@ -2013,12 +2023,17 @@
YES
YES
+ actionsMenu
columnsMenu
py
recentResultsMenu
YES
+
+ actionsMenu
+ NSMenu
+
columnsMenu
NSMenu
diff --git a/cocoa/me/AppDelegate.m b/cocoa/me/AppDelegate.m
index 6eee2e77..6dc51f77 100644
--- a/cocoa/me/AppDelegate.m
+++ b/cocoa/me/AppDelegate.m
@@ -77,7 +77,6 @@ http://www.hardcoded.net/licenses/bsd_license
//Delegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
- NSMenu *actionsMenu = [[[NSApp mainMenu] itemWithTitle:@"Actions"] submenu];
// index 3 is just after "Export Results to XHTML"
NSMenuItem *mi = [actionsMenu insertItemWithTitle:TR(@"Remove Dead Tracks in iTunes")
action:@selector(removeDeadTracks:) keyEquivalent:@"" atIndex:3];
diff --git a/cocoa/me/fr.lproj/Preferences.xib b/cocoa/me/fr.lproj/Preferences.xib
index bda8db4f..8b1c02e6 100644
--- a/cocoa/me/fr.lproj/Preferences.xib
+++ b/cocoa/me/fr.lproj/Preferences.xib
@@ -335,7 +335,7 @@
1211912703
2
-
+
NSImage
NSSwitch
@@ -362,7 +362,7 @@
1211912703
2
-
+
@@ -465,7 +465,7 @@
1211912703
2
-
+
@@ -487,7 +487,7 @@
1211912703
2
-
+
@@ -509,7 +509,7 @@
1211912703
2
-
+
@@ -547,7 +547,7 @@
1211912703
2
-
+
@@ -569,7 +569,7 @@
1211912703
2
-
+
@@ -591,7 +591,7 @@
1211912703
2
-
+
@@ -613,7 +613,7 @@
1211912703
2
-
+
@@ -635,7 +635,7 @@
1211912703
2
-
+
@@ -657,7 +657,7 @@
1211912703
2
-
+
@@ -694,7 +694,7 @@
1211912703
2
-
+
@@ -848,7 +848,7 @@
1211912703
2
-
+
diff --git a/cocoa/pe/AppDelegate.m b/cocoa/pe/AppDelegate.m
index e86306ea..2cc0e6fd 100644
--- a/cocoa/pe/AppDelegate.m
+++ b/cocoa/pe/AppDelegate.m
@@ -60,8 +60,6 @@ http://www.hardcoded.net/licenses/bsd_license
//Delegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
- // XXX The line below could be broken by a localization...
- NSMenu *actionsMenu = [[[NSApp mainMenu] itemWithTitle:@"Actions"] submenu];
// index 2 is just after "Clear Ingore List"
NSMenuItem *mi = [actionsMenu insertItemWithTitle:TR(@"Clear Picture Cache")
action:@selector(clearPictureCache:) keyEquivalent:@"P" atIndex:2];
diff --git a/cocoa/pe/fr.lproj/Preferences.xib b/cocoa/pe/fr.lproj/Preferences.xib
index 2d0c87c6..66527f51 100644
--- a/cocoa/pe/fr.lproj/Preferences.xib
+++ b/cocoa/pe/fr.lproj/Preferences.xib
@@ -209,7 +209,7 @@
1211912703
2
-
+
NSImage
NSSwitch
@@ -236,7 +236,7 @@
1211912703
2
-
+
@@ -258,7 +258,7 @@
1211912703
2
-
+
@@ -280,7 +280,7 @@
1211912703
2
-
+
@@ -398,7 +398,7 @@
1211912703
2
-
+
@@ -420,7 +420,7 @@
1211912703
2
-
+
diff --git a/cocoa/se/fr.lproj/Preferences.xib b/cocoa/se/fr.lproj/Preferences.xib
index 1642b928..38457029 100644
--- a/cocoa/se/fr.lproj/Preferences.xib
+++ b/cocoa/se/fr.lproj/Preferences.xib
@@ -290,7 +290,7 @@
1211912703
2
-
+
NSImage
NSSwitch
@@ -317,7 +317,7 @@
1211912703
2
-
+
@@ -339,7 +339,7 @@
1211912703
2
-
+
@@ -361,7 +361,7 @@
1211912703
2
-
+
@@ -383,7 +383,7 @@
1211912703
2
-
+
@@ -405,7 +405,7 @@
1211912703
2
-
+
@@ -621,7 +621,7 @@
1211912703
2
-
+
@@ -643,7 +643,7 @@
1211912703
2
-
+
diff --git a/core/engine.py b/core/engine.py
index 8e3cca05..80d50c1e 100644
--- a/core/engine.py
+++ b/core/engine.py
@@ -24,9 +24,8 @@ NO_FIELD_ORDER) = range(3)
JOB_REFRESH_RATE = 100
def getwords(s):
- if isinstance(s, str):
- # XXX is this really needed?
- s = normalize('NFD', s)
+ # We decompose the string so that ascii letters with accents can be part of the word.
+ s = normalize('NFD', s)
s = multi_replace(s, "-_&+():;\\[]{}.,<>/?~!@#$*", ' ').lower()
s = ''.join(c for c in s if c in string.ascii_letters + string.digits + string.whitespace)
return [_f for _f in s.split(' ') if _f] # remove empty elements
diff --git a/qt/base/directories_dialog.py b/qt/base/directories_dialog.py
index d1f09f15..e9bcc03f 100644
--- a/qt/base/directories_dialog.py
+++ b/qt/base/directories_dialog.py
@@ -154,9 +154,6 @@ class DirectoriesDialog(QMainWindow):
self.removeFolderButton.setEnabled(False)
return
self.removeFolderButton.setEnabled(True)
- index = indexes[0]
- node = index.internalPointer()
- # label = 'Remove' if node.parent is None else 'Exclude'
def _updateLoadResultsButton(self):
if self.app.recentResults.isEmpty():
@@ -209,8 +206,7 @@ class DirectoriesDialog(QMainWindow):
def scanButtonClicked(self):
title = tr("Start a new scan")
- # XXX must be triggered on unsaved results
- if len(self.app.results.groups) > 0:
+ if self.app.results.is_modified:
msg = trmsg("ReallyWantToContinueMsg")
if not self.app.confirm(title, msg):
return