mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-09 21:24:36 +00:00
Tweaked Make Selected into Reference.
Having dupes from ref folders (which makes ref switching impossible) would make the new feature glitchy (selection would be emptied). Now, in cases where the action results in nothing being changed, the selection stays intact. [#222]
This commit is contained in:
parent
aa3cf9700d
commit
70e505ad92
10
core/app.py
10
core/app.py
@ -442,14 +442,16 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
for dupe in dupes:
|
||||
g = self.results.get_group_of_duplicate(dupe)
|
||||
if g not in changed_groups:
|
||||
self.results.make_ref(dupe)
|
||||
changed_groups.add(g)
|
||||
if self.results.make_ref(dupe):
|
||||
changed_groups.add(g)
|
||||
# It's not always obvious to users what this action does, so to make it a bit clearer,
|
||||
# we change our selection to the ref of all changed groups. However, we also want to keep
|
||||
# the files that were ref before and weren't changed by the action. In effect, what this
|
||||
# does is that we keep our old selection, but remove all non-ref dupes from it.
|
||||
self.selected_dupes = [d for d in self.selected_dupes
|
||||
if self.results.get_group_of_duplicate(d).ref is d]
|
||||
# If no group was changed, however, we don't touch the selection.
|
||||
if changed_groups:
|
||||
self.selected_dupes = [d for d in self.selected_dupes
|
||||
if self.results.get_group_of_duplicate(d).ref is d]
|
||||
self.notify('results_changed')
|
||||
|
||||
def mark_all(self):
|
||||
|
@ -325,14 +325,15 @@ class Group:
|
||||
|
||||
def switch_ref(self, with_dupe):
|
||||
if self.ref.is_ref:
|
||||
return
|
||||
return False
|
||||
try:
|
||||
self.ordered.remove(with_dupe)
|
||||
self.ordered.insert(0, with_dupe)
|
||||
self._percentage = None
|
||||
self._matches_for_ref = None
|
||||
return True
|
||||
except ValueError:
|
||||
pass
|
||||
return False
|
||||
|
||||
dupes = property(lambda self: self[1:])
|
||||
|
||||
|
@ -244,8 +244,9 @@ class Results(Markable):
|
||||
def make_ref(self, dupe):
|
||||
g = self.get_group_of_duplicate(dupe)
|
||||
r = g.ref
|
||||
if not g.switch_ref(dupe):
|
||||
return False
|
||||
self._remove_mark_flag(dupe)
|
||||
g.switch_ref(dupe);
|
||||
if not r.is_ref:
|
||||
self.__total_count += 1
|
||||
self.__total_size += r.size
|
||||
@ -254,6 +255,7 @@ class Results(Markable):
|
||||
self.__total_size -= dupe.size
|
||||
self.__dupes = None
|
||||
self.is_modified = True
|
||||
return True
|
||||
|
||||
def perform_on_marked(self, func, remove_from_results):
|
||||
# Performs `func` on all marked dupes. If an EnvironmentError is raised during the call,
|
||||
|
Loading…
x
Reference in New Issue
Block a user