1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-22 14:41:39 +00:00

[#21 state:fixed] Added quicklook support (Cocoa).

This commit is contained in:
Virgil Dupras
2011-09-22 15:59:11 -04:00
parent 8102c89802
commit ae21ff988a
11 changed files with 311 additions and 8 deletions

View File

@@ -21,4 +21,5 @@ http://www.hardcoded.net/licenses/bsd_license
- (void)markSelected;
- (void)removeSelected;
- (NSInteger)selectedDupeCount;
- (NSString *)pathAtIndex:(NSInteger)index;
@end

View File

@@ -7,10 +7,11 @@ http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
#import "HSTable.h"
#import "PyResultTable.h"
@interface ResultTable : HSTable
@interface ResultTable : HSTable <QLPreviewPanelDataSource, QLPreviewPanelDelegate>
{
NSIndexSet *_deltaColumns;
}

View File

@@ -10,6 +10,12 @@ http://www.hardcoded.net/licenses/bsd_license
#import "Dialogs.h"
#import "Utils.h"
#import "Consts.h"
#import "HSQuicklook.h"
@interface HSTable (private)
- (void)setPySelection;
- (void)setViewSelection;
@end
@implementation ResultTable
- (id)initWithPyParent:(id)aPyParent view:(NSTableView *)aTableView
@@ -31,6 +37,26 @@ http://www.hardcoded.net/licenses/bsd_license
return (PyResultTable *)py;
}
/* Private */
- (void)updateQuicklookIfNeeded
{
if ([[QLPreviewPanel sharedPreviewPanel] dataSource] == self) {
[[QLPreviewPanel sharedPreviewPanel] reloadData];
}
}
- (void)setPySelection
{
[super setPySelection];
[self updateQuicklookIfNeeded];
}
- (void)setViewSelection
{
[super setViewSelection];
[self updateQuicklookIfNeeded];
}
/* Public */
- (BOOL)powerMarkerMode
{
@@ -158,6 +184,30 @@ http://www.hardcoded.net/licenses/bsd_license
return YES;
}
/* Quicklook */
- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel
{
return [[[self py] selectedRows] count];
}
- (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index
{
NSArray *selectedRows = [[self py] selectedRows];
NSInteger absIndex = n2i([selectedRows objectAtIndex:index]);
NSString *path = [[self py] pathAtIndex:absIndex];
return [[HSQLPreviewItem alloc] initWithUrl:[NSURL fileURLWithPath:path] title:path];
}
- (BOOL)previewPanel:(QLPreviewPanel *)panel handleEvent:(NSEvent *)event
{
// redirect all key down events to the table view
if ([event type] == NSKeyDown) {
[[self view] keyDown:event];
return YES;
}
return NO;
}
/* Python --> Cocoa */
- (void)invalidateMarkings
{

View File

@@ -7,6 +7,7 @@ http://www.hardcoded.net/licenses/bsd_license
*/
#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
#import "StatsLabel.h"
#import "ResultTable.h"
#import "ProblemDialog.h"
@@ -30,6 +31,7 @@ http://www.hardcoded.net/licenses/bsd_license
ResultTable *table;
StatsLabel *statsLabel;
ProblemDialog *problemDialog;
QLPreviewPanel* previewPanel;
}
- (id)initWithParentApp:(AppDelegateBase *)app;
@@ -76,6 +78,7 @@ http://www.hardcoded.net/licenses/bsd_license
- (IBAction)toggleDelta:(id)sender;
- (IBAction)toggleDetailsPanel:(id)sender;
- (IBAction)togglePowerMarker:(id)sender;
- (IBAction)toggleQuicklookPanel:(id)sender;
/* Notifications */
- (void)jobCompleted:(NSNotification *)aNotification;

View File

@@ -412,6 +412,40 @@ http://www.hardcoded.net/licenses/bsd_license
[self updateOptionSegments];
}
- (IBAction)toggleQuicklookPanel:(id)sender
{
if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) {
[[QLPreviewPanel sharedPreviewPanel] orderOut:nil];
}
else {
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil];
}
}
/* Quicklook */
- (BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel;
{
return YES;
}
- (void)beginPreviewPanelControl:(QLPreviewPanel *)panel
{
// This document is now responsible of the preview panel
// It is allowed to set the delegate, data source and refresh panel.
previewPanel = [panel retain];
panel.delegate = table;
panel.dataSource = table;
}
- (void)endPreviewPanelControl:(QLPreviewPanel *)panel
{
// This document loses its responsisibility on the preview panel
// Until the next call to -beginPreviewPanelControl: it must not
// change the panel's delegate, data source or refresh it.
[previewPanel release];
previewPanel = nil;
}
/* Notifications */
- (void)jobCompleted:(NSNotification *)aNotification
{

View File

@@ -559,6 +559,15 @@
<reference key="NSOnImage" ref="34697260"/>
<reference key="NSMixedImage" ref="201180191"/>
</object>
<object class="NSMenuItem" id="343354529">
<reference key="NSMenu" ref="472719764"/>
<string key="NSTitle">Quicklook</string>
<string key="NSKeyEquiv">l</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="34697260"/>
<reference key="NSMixedImage" ref="201180191"/>
</object>
<object class="NSMenuItem" id="424012835">
<reference key="NSMenu" ref="472719764"/>
<bool key="NSIsDisabled">YES</bool>
@@ -1068,6 +1077,14 @@
</object>
<int key="connectionID">1279</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleQuicklookPanel:</string>
<reference key="source" ref="83466988"/>
<reference key="destination" ref="343354529"/>
</object>
<int key="connectionID">1282</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -1132,6 +1149,7 @@
<reference ref="571301982"/>
<reference ref="762484626"/>
<reference ref="937862901"/>
<reference ref="343354529"/>
</array>
<reference key="parent" ref="751320875"/>
</object>
@@ -1575,6 +1593,11 @@
<reference key="object" ref="200019883"/>
<reference key="parent" ref="600111647"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1280</int>
<reference key="object" ref="343354529"/>
<reference key="parent" ref="472719764"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -1600,6 +1623,7 @@
<string key="1240.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1272.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1276.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1280.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1660,7 +1684,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">1279</int>
<int key="maxID">1282</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1764,6 +1788,57 @@
<string key="minorKey">./Classes/HSWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">PrioritizeDialog</string>
<string key="superclassName">HSWindowController</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="addSelected:">id</string>
<string key="cancel:">id</string>
<string key="ok:">id</string>
<string key="removeSelected:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="addSelected:">
<string key="name">addSelected:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="cancel:">
<string key="name">cancel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="ok:">
<string key="name">ok:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="removeSelected:">
<string key="name">removeSelected:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="categoryPopUpView">NSPopUpButton</string>
<string key="criteriaTableView">NSTableView</string>
<string key="prioritizationTableView">NSTableView</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="categoryPopUpView">
<string key="name">categoryPopUpView</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo" key="criteriaTableView">
<string key="name">criteriaTableView</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo" key="prioritizationTableView">
<string key="name">prioritizationTableView</string>
<string key="candidateClassName">NSTableView</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/PrioritizeDialog.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">ProblemDialog</string>
<string key="superclassName">HSWindowController</string>
@@ -1859,6 +1934,7 @@
<string key="toggleDelta:">id</string>
<string key="toggleDetailsPanel:">id</string>
<string key="togglePowerMarker:">id</string>
<string key="toggleQuicklookPanel:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="changeOptions:">
@@ -1977,6 +2053,10 @@
<string key="name">togglePowerMarker:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="toggleQuicklookPanel:">
<string key="name">toggleQuicklookPanel:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="filterField">NSSearchField</string>

View File

@@ -14,6 +14,7 @@
<string>NSPopUpButton</string>
<string>NSMenu</string>
<string>NSToolbarItem</string>
<string>NSButton</string>
<string>NSToolbarFlexibleSpaceItem</string>
<string>NSCustomObject</string>
<string>NSTableView</string>
@@ -153,9 +154,11 @@
<string key="NSToolbarItemPaletteLabel">Options</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSSegmentedControl" key="NSToolbarItemView" id="452019408">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{-11, 14}, {195, 23}}</string>
<string key="NSFrame">{{0, 14}, {195, 23}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSegmentedCell" key="NSCell" id="993391476">
<int key="NSCellFlags">67239424</int>
@@ -208,9 +211,11 @@
<string key="NSToolbarItemPaletteLabel">Filter</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSSearchField" key="NSToolbarItemView" id="363479146">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">258</int>
<string key="NSFrame">{{0, 14}, {81, 22}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSearchFieldCell" key="NSCell" id="830851754">
<int key="NSCellFlags">343014976</int>
@@ -290,6 +295,51 @@
<bool key="NSToolbarIsUserRemovable">YES</bool>
<int key="NSToolbarItemVisibilityPriority">0</int>
</object>
<object class="NSToolbarItem" key="A85CDEA8-333B-47CF-960E-DDC65B0C56BC" id="831294603">
<object class="NSMutableString" key="NSToolbarItemIdentifier">
<characters key="NS.bytes">A85CDEA8-333B-47CF-960E-DDC65B0C56BC</characters>
</object>
<string key="NSToolbarItemLabel">Quick Look</string>
<string key="NSToolbarItemPaletteLabel">Quick Look</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSButton" key="NSToolbarItemView" id="796071131">
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{12, 14}, {44, 25}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:161</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="560045192">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="930425043"/>
<string key="NSCellIdentifier">_NS:161</string>
<reference key="NSControlView" ref="796071131"/>
<int key="NSButtonFlags">-2033958657</int>
<int key="NSButtonFlags2">163</int>
<object class="NSCustomResource" key="NSNormalImage" id="771141707">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSQuickLookTemplate</string>
</object>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
<reference key="NSToolbarItemImage" ref="771141707"/>
<nil key="NSToolbarItemTarget"/>
<nil key="NSToolbarItemAction"/>
<string key="NSToolbarItemMinSize">{30, 25}</string>
<string key="NSToolbarItemMaxSize">{44, 32}</string>
<bool key="NSToolbarItemEnabled">YES</bool>
<bool key="NSToolbarItemAutovalidates">YES</bool>
<int key="NSToolbarItemTag">0</int>
<bool key="NSToolbarIsUserRemovable">YES</bool>
<int key="NSToolbarItemVisibilityPriority">0</int>
</object>
<object class="NSToolbarItem" key="BA65FFF2-9E56-4E88-AB2E-8FBE2B3D030F" id="272445295">
<object class="NSMutableString" key="NSToolbarItemIdentifier">
<characters key="NS.bytes">BA65FFF2-9E56-4E88-AB2E-8FBE2B3D030F</characters>
@@ -320,9 +370,11 @@
<string key="NSToolbarItemPaletteLabel">Action</string>
<nil key="NSToolbarItemToolTip"/>
<object class="NSPopUpButton" key="NSToolbarItemView" id="1050768959">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{1, 14}, {40, 25}}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="302095930">
<int key="NSCellFlags">-2076049856</int>
@@ -501,6 +553,7 @@
</object>
</array>
</object>
<int key="NSSelectedIndex">-1</int>
<bool key="NSPullDown">YES</bool>
<int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool>
@@ -574,17 +627,19 @@
</object>
</object>
</dictionary>
<array key="NSToolbarIBAllowedItems">
<array class="NSMutableArray" key="NSToolbarIBAllowedItems">
<reference ref="613476052"/>
<reference ref="501140424"/>
<reference ref="272445295"/>
<reference ref="77112286"/>
<reference ref="695856706"/>
<reference ref="234109357"/>
<reference ref="831294603"/>
</array>
<array key="NSToolbarIBDefaultItems">
<reference ref="77112286"/>
<reference ref="234109357"/>
<reference ref="831294603"/>
<reference ref="272445295"/>
<reference ref="501140424"/>
<reference ref="695856706"/>
@@ -1060,6 +1115,14 @@
</object>
<int key="connectionID">83</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleQuicklookPanel:</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="831294603"/>
</object>
<int key="connectionID">87</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -1240,6 +1303,7 @@
<reference ref="272445295"/>
<reference ref="501140424"/>
<reference ref="613476052"/>
<reference ref="831294603"/>
</array>
<reference key="parent" ref="866620243"/>
</object>
@@ -1415,6 +1479,27 @@
<reference key="object" ref="993391476"/>
<reference key="parent" ref="452019408"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">86</int>
<reference key="object" ref="831294603"/>
<array class="NSMutableArray" key="children">
<reference ref="796071131"/>
</array>
<reference key="parent" ref="983262794"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">84</int>
<reference key="object" ref="796071131"/>
<array class="NSMutableArray" key="children">
<reference ref="560045192"/>
</array>
<reference key="parent" ref="831294603"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">85</int>
<reference key="object" ref="560045192"/>
<reference key="parent" ref="796071131"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -1474,13 +1559,16 @@
<string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="8.CustomClassName">HSTableView</string>
<string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="84.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="85.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="86.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">83</int>
<int key="maxID">87</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1623,6 +1711,7 @@
<string key="removeMarked:">id</string>
<string key="removeSelected:">id</string>
<string key="renameSelected:">id</string>
<string key="reprioritizeResults:">id</string>
<string key="resetColumnsToDefault:">id</string>
<string key="revealSelected:">id</string>
<string key="saveResults:">id</string>
@@ -1632,6 +1721,7 @@
<string key="toggleDelta:">id</string>
<string key="toggleDetailsPanel:">id</string>
<string key="togglePowerMarker:">id</string>
<string key="toggleQuicklookPanel:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="changeOptions:">
@@ -1710,6 +1800,10 @@
<string key="name">renameSelected:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="reprioritizeResults:">
<string key="name">reprioritizeResults:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="resetColumnsToDefault:">
<string key="name">resetColumnsToDefault:</string>
<string key="candidateClassName">id</string>
@@ -1746,6 +1840,10 @@
<string key="name">togglePowerMarker:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="toggleQuicklookPanel:">
<string key="name">toggleQuicklookPanel:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="filterField">NSSearchField</string>
@@ -1798,6 +1896,7 @@
<string key="NSActionTemplate">{15, 15}</string>
<string key="NSMenuCheckmark">{9, 8}</string>
<string key="NSMenuMixedState">{7, 2}</string>
<string key="NSQuickLookTemplate">{21, 16}</string>
<string key="NSSwitch">{15, 15}</string>
<string key="folder32">{32, 32}</string>
</dictionary>