|
@@ -271,6 +271,7 @@ class KMLeftSideViewController: KMSideViewController {
|
|
|
}()
|
|
|
var dragIn = false
|
|
|
var dragedIndexPaths: [Int] = []
|
|
|
+ var updatingThumbnailSelection = false
|
|
|
|
|
|
override func loadView() {
|
|
|
super.loadView()
|
|
@@ -366,11 +367,6 @@ class KMLeftSideViewController: KMSideViewController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// self.button.setHelp(KMLocalizedString("View Thumbnails", "Tool tip message"), for: KMLeftSidePaneState.thumbnail.rawValue)
|
|
|
-// self.button.setHelp(KMLocalizedString("View Outline", "Tool tip message"), for: KMLeftSidePaneState.outline.rawValue)
|
|
|
-// self.alternateButton.setHelp(KMLocalizedString("Separate search results", "Tool tip message"), for: KMFindPaneState.singular.rawValue)
|
|
|
-// self.alternateButton.setHelp(KMLocalizedString("Group search results by page", "Tool tip message"), for: KMFindPaneState.grouped.rawValue)
|
|
|
-
|
|
|
let menu = NSMenu()
|
|
|
_ = menu.addItem(title: KMLocalizedString("Whole Words Only", "Menu item title"), action: #selector(toggleWholeWordSearch), target: self)
|
|
|
_ = menu.addItem(title: KMLocalizedString("Ignore Case", "Menu item title"), action: #selector(toggleCaseInsensitiveSearch), target: self)
|
|
@@ -454,7 +450,7 @@ class KMLeftSideViewController: KMSideViewController {
|
|
|
frame.size.height = self.snapshotTableView.enclosingScrollView?.superview?.frame.size.height ?? 0
|
|
|
self.snapshotTableView.enclosingScrollView?.frame = frame
|
|
|
|
|
|
-// [self updateThumbnailSelection];
|
|
|
+ self.updateThumbnailSelection()
|
|
|
}
|
|
|
|
|
|
func displayFindViewAnimating(_ animate: Bool) {
|
|
@@ -693,47 +689,15 @@ class KMLeftSideViewController: KMSideViewController {
|
|
|
}
|
|
|
|
|
|
func resetThumbnails() {
|
|
|
-// [self willChangeValueForKey:THUMBNAILS_KEY];
|
|
|
-// self.thumbnailCacheSize = 160
|
|
|
self.thumbnails.removeAll()
|
|
|
- let pageLabels = self.listView.document.pageLabels()
|
|
|
+ let pageLabels = self.listView?.document?.pageLabels() ?? []
|
|
|
if (pageLabels.isEmpty == false) {
|
|
|
- let isLocked = self.listView.document.isLocked
|
|
|
- let firstPage = self.listView.document.page(at: 0)
|
|
|
- let emptyPage = CPDFPage()
|
|
|
- let firstFrame = firstPage?.bounds(for: .cropBox) ?? .zero
|
|
|
- let firstFrame2 = firstPage?.bounds(for: .mediaBox) ?? .zero
|
|
|
- emptyPage.setBounds(firstFrame, for: .cropBox)
|
|
|
- emptyPage.setBounds(firstFrame2, for: .mediaBox)
|
|
|
- emptyPage.rotation = firstPage?.rotation ?? 0
|
|
|
-
|
|
|
- let pageImage = firstPage?.thumbnail(of: NSMakeSize(self.thumbnailCacheSize, self.thumbnailCacheSize))
|
|
|
-// NSImage * = [emptyPage thumbnailWithSize:thumbnailCacheSize forBox:[pdfView displayBox]];
|
|
|
- var rect: NSRect = .zero
|
|
|
- rect.size = pageImage?.size ?? .zero
|
|
|
- let width = 1.2 * fmin(NSWidth(rect), NSHeight(rect))
|
|
|
- rect = NSInsetRect(rect, 0.5 * (NSWidth(rect) - width), 0.5 * (NSHeight(rect) - width));
|
|
|
-
|
|
|
- pageImage?.lockFocus()
|
|
|
-// NSImage(named: NSImage.applicationIconName)?.draw(in: rect, from: .zero, operation: .sourceOver, fraction: 0.5)
|
|
|
- if (isLocked) {
|
|
|
- NSWorkspace.shared.icon(forFileType: NSFileTypeForHFSTypeCode(OSType(kLockedBadgeIcon))).draw(in: rect, from: .zero, operation: .sourceOver, fraction: 0.5)
|
|
|
- // [[[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kLockedBadgeIcon)] drawInRect:rect fromRect:NSZeroRect operation:NSCompositingOperationSourceOver fraction:0.5];
|
|
|
- }
|
|
|
- pageImage?.unlockFocus()
|
|
|
-
|
|
|
for (i, label) in pageLabels.enumerated() {
|
|
|
- let firstPage = self.listView.document.page(at: UInt(i))
|
|
|
- let size = NSMakeSize(self.thumbnailCacheSize, self.thumbnailCacheSize)
|
|
|
-// let pageImage = firstPage!.thumbnail(of: size)
|
|
|
let thumbnail = KMThumbnail(image: nil, label: label, pageIndex: i)
|
|
|
- // thumbnail.delegate = self
|
|
|
thumbnail.dirty = true
|
|
|
self.thumbnails.append(thumbnail)
|
|
|
}
|
|
|
}
|
|
|
-// [self didChangeValueForKey:THUMBNAILS_KEY];
|
|
|
-// [self allThumbnailsNeedUpdate];
|
|
|
|
|
|
DispatchQueue.main.async {
|
|
|
let ris = self.thumbnailTableView.selectedRowIndexes
|
|
@@ -874,11 +838,8 @@ extension KMLeftSideViewController: KMBotaTableViewDelegate {
|
|
|
return
|
|
|
}
|
|
|
for page in self._copysPages.reversed() {
|
|
|
-// if let newPage = page.copy() as? CPDFPage {
|
|
|
- self.listView.document.insertPageObject(page, at: index)
|
|
|
-// }
|
|
|
+ self.listView.document.insertPageObject(page, at: index)
|
|
|
self.listView.layoutDocumentView()
|
|
|
-// [pageLabels setArray:[[pdfView document] pageLabels]];
|
|
|
self.resetThumbnails()
|
|
|
let pageIndex = min(index, self.listView.document.pageCount-1)
|
|
|
self.listView.go(toPageIndex: Int(pageIndex), animated: true)
|
|
@@ -1178,7 +1139,7 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
cell.sizeLabel.isHidden = true
|
|
|
}
|
|
|
cell.sizeTopConstant.constant = cell.sizeLabel.isHidden ? -cell.sizeLabel.frame.size.height : 0
|
|
|
- if(self.thumbnailTableView.selectedRowIndexes.contains(row)) {
|
|
|
+ if (self.thumbnailTableView.selectedRowIndexes.contains(row)) {
|
|
|
cell.isSelectCell = true
|
|
|
} else {
|
|
|
cell.isSelectCell = false
|
|
@@ -1225,7 +1186,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
|
|
|
if tableView.isEqual(to: self.thumbnailTableView) {
|
|
|
let scaling = KMDataManager.ud_float(forKey: Self.Key.thumbSizeScaling)
|
|
|
-// let thumbnailSize = self.thumbnails[row].size
|
|
|
let thumbnailSize = NSMakeSize(self.thumbnailCacheSize, self.thumbnailCacheSize)
|
|
|
|
|
|
let newScaling: CGFloat = scaling.cgFloat + 0.1
|
|
@@ -1319,7 +1279,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
} else if self.groupedFindTableView.isEqual(to: notification.object) {
|
|
|
// [self updateFindResultHighlightsForDirection:NSDirectSelection];
|
|
|
} else if self.thumbnailTableView.isEqual(to: notification.object) {
|
|
|
-// if (mwcFlags.updatingThumbnailSelection == 0) {
|
|
|
let row = self.thumbnailTableView.selectedRow
|
|
|
let curPage = self.listView.document.index(for: self.listView.currentPage())
|
|
|
|
|
@@ -1396,8 +1355,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
let url = NSKeyedUnarchiver.unarchiveObject(with: urlData) as? String
|
|
|
if url != nil && url != self.listView.document.documentURL.absoluteString {
|
|
|
if (pasteboard.availableType(from: [.fileURL]) != nil) {
|
|
|
- // if ([pasteboard availableTypeFromArray:[NSArray arrayWithObject:NSFilenamesPboardType]]){
|
|
|
- // NSArray *fileNames = [pasteboard propertyListForType:NSFilenamesPboardType];
|
|
|
var fileNames = pasteboard.propertyList(forType: .fileURL) as? [String] ?? []
|
|
|
if (fileNames.count == 1) {
|
|
|
let path = fileNames.first ?? ""
|
|
@@ -1421,7 +1378,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
}
|
|
|
} else {
|
|
|
for i in 0 ..< (pdf?.pageCount ?? 0) {
|
|
|
- // PDFPage *page = [[pdf pageAtIndex:i] copy];
|
|
|
var page = pdf?.page(at: i)
|
|
|
self.listView.document.insertPageObject(page, at: UInt(index))
|
|
|
insertIndexSet.insert(index)
|
|
@@ -1452,7 +1408,7 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
toPageIndex = Int(self.listView.document.pageCount)
|
|
|
}
|
|
|
for i in 0 ..< pages.count {
|
|
|
- var page = pages[i]
|
|
|
+ let page = pages[i]
|
|
|
self.listView.document.insertPageObject(page, at: UInt(toPageIndex+i))
|
|
|
pageIndex += 1
|
|
|
self.listView.go(toPageIndex: toPageIndex+i, animated: false)
|
|
@@ -1476,8 +1432,6 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- // [[[[self document] undoManager] prepareWithInvocationTarget:self] undoClick];
|
|
|
- // [self.pageLabels setArray:[[self.pdfView document] pageLabels]];
|
|
|
self.listView.layoutDocumentView()
|
|
|
self.resetThumbnails()
|
|
|
} else if pasteboard.availableType(from: [.fileURL]) != nil && tableView.isEqual(to: self.thumbnailTableView) {
|
|
@@ -1736,12 +1690,13 @@ extension KMLeftSideViewController: NSTableViewDelegate, NSTableViewDataSource {
|
|
|
self.listView.document.removePage(at: IndexSet(integer: idx))
|
|
|
}
|
|
|
}
|
|
|
- self.listView.layoutDocumentView()
|
|
|
-// [pageLabels setArray:[[pdfView document] pageLabels]];
|
|
|
- self.resetThumbnails()
|
|
|
- let idx = rowIndexes.first ?? -1
|
|
|
- let index = min(idx, Int(self.listView.document.pageCount)-1)
|
|
|
- self.listView.go(toPageIndex: index, animated: false)
|
|
|
+ if rowIndexes.isEmpty == false {
|
|
|
+ self.listView.layoutDocumentView()
|
|
|
+ self.resetThumbnails()
|
|
|
+ let idx = rowIndexes.first ?? -1
|
|
|
+ let index = min(idx, Int(self.listView.document.pageCount)-1)
|
|
|
+ self.listView.go(toPageIndex: index, animated: false)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|