mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-05-08 09:49:51 +00:00
Made marking changes much faster and also made data fetching lazy in dupe nodes.
This commit is contained in:
parent
9b82e1478f
commit
a4bf1c8be6
@ -29,13 +29,6 @@ http://www.hardcoded.net/licenses/hs_license
|
|||||||
return (PyResultTree *)py;
|
return (PyResultTree *)py;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Override */
|
|
||||||
- (void)refresh
|
|
||||||
{
|
|
||||||
[super refresh];
|
|
||||||
[outlineView expandItem:nil expandChildren:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Public */
|
/* Public */
|
||||||
- (BOOL)powerMarkerMode
|
- (BOOL)powerMarkerMode
|
||||||
{
|
{
|
||||||
@ -128,4 +121,19 @@ http://www.hardcoded.net/licenses/hs_license
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Python --> Cocoa */
|
||||||
|
- (void)refresh /* Override */
|
||||||
|
{
|
||||||
|
[super refresh];
|
||||||
|
[outlineView expandItem:nil expandChildren:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)invalidateMarkings
|
||||||
|
{
|
||||||
|
for (NSMutableDictionary *props in [itemData objectEnumerator]) {
|
||||||
|
[props removeObjectForKey:@"marked"];
|
||||||
|
}
|
||||||
|
[outlineView setNeedsDisplay:YES];
|
||||||
|
}
|
||||||
@end
|
@end
|
@ -243,15 +243,15 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
|
|
||||||
def mark_all(self):
|
def mark_all(self):
|
||||||
self.results.mark_all()
|
self.results.mark_all()
|
||||||
self.notify('results_changed')
|
self.notify('marking_changed')
|
||||||
|
|
||||||
def mark_none(self):
|
def mark_none(self):
|
||||||
self.results.mark_none()
|
self.results.mark_none()
|
||||||
self.notify('results_changed')
|
self.notify('marking_changed')
|
||||||
|
|
||||||
def mark_invert(self):
|
def mark_invert(self):
|
||||||
self.results.mark_invert()
|
self.results.mark_invert()
|
||||||
self.notify('results_changed')
|
self.notify('marking_changed')
|
||||||
|
|
||||||
def open_selected(self):
|
def open_selected(self):
|
||||||
if self.selected_dupes:
|
if self.selected_dupes:
|
||||||
@ -306,7 +306,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
def toggle_selected_mark_state(self):
|
def toggle_selected_mark_state(self):
|
||||||
for dupe in self.selected_dupes:
|
for dupe in self.selected_dupes:
|
||||||
self.results.mark_toggle(dupe)
|
self.results.mark_toggle(dupe)
|
||||||
self.notify('results_changed')
|
self.notify('marking_changed')
|
||||||
|
|
||||||
def without_ref(self, dupes):
|
def without_ref(self, dupes):
|
||||||
return [dupe for dupe in dupes if self.results.get_group_of_duplicate(dupe).ref is not dupe]
|
return [dupe for dupe in dupes if self.results.get_group_of_duplicate(dupe).ref is not dupe]
|
||||||
|
@ -194,6 +194,10 @@ class PyResultOutline(PyOutline):
|
|||||||
def markSelected(self):
|
def markSelected(self):
|
||||||
self.py.app.toggle_selected_mark_state()
|
self.py.app.toggle_selected_mark_state()
|
||||||
|
|
||||||
|
# python --> cocoa
|
||||||
|
def invalidate_markings(self):
|
||||||
|
self.cocoa.invalidateMarkings()
|
||||||
|
|
||||||
|
|
||||||
class PyStatsLabel(PyGUIObject):
|
class PyStatsLabel(PyGUIObject):
|
||||||
py_class = StatsLabel
|
py_class = StatsLabel
|
||||||
|
@ -21,6 +21,9 @@ class GUIObject(Listener):
|
|||||||
def dupes_selected(self):
|
def dupes_selected(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def marking_changed(self):
|
||||||
|
pass
|
||||||
|
|
||||||
def results_changed(self):
|
def results_changed(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -19,8 +19,20 @@ class DupeNode(Node):
|
|||||||
self._app = app
|
self._app = app
|
||||||
self._group = group
|
self._group = group
|
||||||
self._dupe = dupe
|
self._dupe = dupe
|
||||||
self.data = app._get_display_info(dupe, group, False)
|
self._data = None
|
||||||
self.data_delta = app._get_display_info(dupe, group, True)
|
self._data_delta = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def data(self):
|
||||||
|
if self._data is None:
|
||||||
|
self._data = self._app._get_display_info(self._dupe, self._group, False)
|
||||||
|
return self._data
|
||||||
|
|
||||||
|
@property
|
||||||
|
def data_delta(self):
|
||||||
|
if self._data_delta is None:
|
||||||
|
self._data_delta = self._app._get_display_info(self._dupe, self._group, True)
|
||||||
|
return self._data_delta
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def markable(self):
|
def markable(self):
|
||||||
@ -113,6 +125,9 @@ class ResultTree(GUIObject, Tree):
|
|||||||
self.view.refresh()
|
self.view.refresh()
|
||||||
|
|
||||||
#--- Event Handlers
|
#--- Event Handlers
|
||||||
|
def marking_changed(self):
|
||||||
|
self.view.invalidate_markings()
|
||||||
|
|
||||||
def results_changed(self):
|
def results_changed(self):
|
||||||
self._refresh()
|
self._refresh()
|
||||||
self.view.refresh()
|
self.view.refresh()
|
||||||
|
@ -21,4 +21,4 @@ class StatsLabel(GUIObject):
|
|||||||
|
|
||||||
def results_changed(self):
|
def results_changed(self):
|
||||||
self.view.refresh()
|
self.view.refresh()
|
||||||
|
marking_changed = results_changed
|
||||||
|
Loading…
x
Reference in New Issue
Block a user