Ver código fonte

【左边栏】缩略图列表菜单补充

tangchao 1 ano atrás
pai
commit
e3f1450dc7

+ 384 - 3
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift

@@ -91,10 +91,7 @@ class KMLeftSideViewController: KMSideViewController {
         self.annotationViewController.listView = self.listView
         self.view.addSubview(self.annotationViewController.view)
         self.annotationViewController.reloadData()
-//        self.annotationViewController.view.isHidden = true
         self.annotationViewController.view.frame = NSMakeRect(0, 0, 1, 1)
-//        self.annotationViewController.annotationOutlineView.outlineView.delegate = nil
-//        self.annotationViewController.annotationOutlineView.outlineView.dataSource = nil
     }
     
     func showPanelView(show: Bool) {
@@ -458,6 +455,8 @@ class KMLeftSideViewController: KMSideViewController {
         return view
     }()
     
+    private var _copysPages: [CPDFPage] = []
+    
     override func loadView() {
         super.loadView()
         
@@ -827,6 +826,7 @@ class KMLeftSideViewController: KMSideViewController {
         self.findTableView.dataSource = self
         self.groupedFindTableView.delegate = self
         self.groupedFindTableView.dataSource = self
+        self.thumbnailTableView.menu?.delegate = self
 //        [[thumbnailTableView menu] setDelegate:mainController];
 //        [[findTableView menu] setDelegate:mainController];
 //        [[groupedFindTableView menu] setDelegate:mainController];
@@ -4353,3 +4353,384 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
      */
 }
 
+extension KMLeftSideViewController: NSMenuDelegate {
+    func menuNeedsUpdate(_ menu: NSMenu) {
+        if menu.isEqual(to: self.tocOutlineView.menu) {
+            return
+        }
+        var item: NSMenuItem?
+        menu.removeAllItems()
+        if menu.isEqual(to: self.thumbnailTableView.menu) {
+            let row = self.thumbnailTableView.clickedRow
+            if self.listView.document.documentURL == nil || self.thumbnailTableView.selectedRowIndexes.contains(row) == false{
+                return
+            }
+            if (row != -1 && self.listView.document.isLocked == false) {
+                if(self.thumbnailTableView.selectedRowIndexes.count == self.listView.document.pageCount) {
+                    item = menu.addItem(title: KMLocalizedString("Cut", "Menu item title"), action: nil, target: self)
+                } else {
+                    item = menu.addItem(title: KMLocalizedString("Cut", "Menu item title"), action: #selector(cutPage), target: self)
+                }
+                item?.representedObject = IndexSet(integer: row)
+                
+                
+                item = menu.addItem(title: KMLocalizedString("Copy", "Menu item title"), action: #selector(copyPage), target: self)
+                item?.representedObject = IndexSet(integer: row)
+                
+                if (self._copysPages.count > 0) {
+                    item = menu.addItem(title: KMLocalizedString("Paste", "Menu item title"), action: #selector(pastePage), target: self)
+                }else{
+                    item = menu.addItem(title: KMLocalizedString("Paste", "Menu item title"), action: nil, target: self)
+                }
+                item?.representedObject = IndexSet(integer: row)
+
+                menu.addItem(.separator())
+
+                if(self.thumbnailTableView.selectedRowIndexes.count == self.listView.document.pageCount) {
+                    item = menu.addItem(title: KMLocalizedString("Delete", "Menu item title"), action: nil, target: self)
+                } else {
+                    item = menu.addItem(title: KMLocalizedString("Delete", "Menu item title"), action: #selector(deletePage), target: self)
+                }
+                item?.representedObject = IndexSet(integer: row)
+
+                menu.addItem(.separator())
+
+                item = menu.addItem(title: KMLocalizedString("Rotate", "Menu item title"), action: #selector(rotatePage), target: self)
+                item?.representedObject = IndexSet(integer: row)
+
+                item = menu.addItem(title: KMLocalizedString("Insert", "Menu item title"), action: nil, target: self)
+                let subMenu = NSMenu()
+                subMenu.addItem(title: KMLocalizedString("Blank Page", "Menu item title"), action: #selector(quickInsert), target: self)
+                subMenu.addItem(title: KMLocalizedString("Blank Page - Custom...", "Menu item title"), action: #selector(insert), target: self)
+                subMenu.addItem(title: KMLocalizedString("From PDF", "Menu item title"), action: #selector(insertPDF), target: self)
+                item?.submenu = subMenu
+                item?.representedObject = IndexSet(integer: row)
+
+                item = menu.addItem(title: KMLocalizedString("Extract", "Menu item title"), action: #selector(extractPage), target: self)
+                item?.representedObject = IndexSet(integer: row)
+
+                item = menu.addItem(title: KMLocalizedString("Page Edit", "Menu item title"), action: #selector(pageEdit), target: self)
+
+                menu.addItem(.separator())
+
+                var displayStr = ""
+                if (self.isDisplayPageSize) {
+                    displayStr = KMLocalizedString("Hide Page Size", "Menu item title")
+                } else {
+                    displayStr = KMLocalizedString("Display Page Size", "Menu item title")
+                }
+                item = menu.addItem(title: displayStr, action: #selector(displayPageSize), target: self)
+                item?.representedObject = IndexSet(integer: row)
+                
+                item = menu.addItem(title: KMLocalizedString("Share", "Menu item title"), action: nil, target: self)
+
+//                NSString * tName = [self fileNameWithSelectedPages:leftSideController.thumbnailTableView.selectedRowIndexes];
+//                if (tName.length > 50) {
+//                   tName = [tName substringWithRange:NSMakeRange(0, 50)];
+//                }
+                var tName = self.listView.document.documentURL.lastPathComponent
+                item?.submenu = NSSharingServicePicker.menu(forSharingItems: [self.listView.document.documentURL], subjectContext: tName, withTarget: self, selector: #selector(sharePage), serviceDelegate: nil)
+            }
+        }
+//        else if ([menu isEqual:[leftSideController.findTableView menu]]) {
+//            NSIndexSet *rowIndexes = [leftSideController.findTableView selectedRowIndexes];
+//            NSInteger row = [leftSideController.findTableView clickedRow];
+//            if (row != -1) {
+//                if ([rowIndexes containsIndex:row] == NO)
+//                    rowIndexes = [NSIndexSet indexSetWithIndex:row];
+//                NSArray *selections = [[leftSideController.findArrayController arrangedObjects] objectsAtIndexes:rowIndexes];
+//                if ([pdfView hideNotes] == NO && [[self pdfDocument] allowsNotes]) {
+//                    item = [menu addItemWithTitle:NSLocalizedString(@"Add New Circle", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKCircleNote];
+//                    [item setRepresentedObject:selections];
+//                    item = [menu addItemWithTitle:NSLocalizedString(@"Add New Rectangle", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKSquareNote];
+//                    [item setRepresentedObject:selections];
+//                    item = [menu addItemWithTitle:NSLocalizedString(@"Add New Highlight", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKHighlightNote];
+//                    [item setRepresentedObject:selections];
+//                    item = [menu addItemWithTitle:NSLocalizedString(@"Add New Underline", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKUnderlineNote];
+//                    [item setRepresentedObject:selections];
+//                    item = [menu addItemWithTitle:NSLocalizedString(@"Add New Strikethrough", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKStrikeOutNote];
+//                    [item setRepresentedObject:selections];
+//                }
+//            }
+//    //    }
+//    //    else if ([menu isEqual:[leftSideController.groupedFindTableView menu]]) {
+//    //        NSIndexSet *rowIndexes = [leftSideController.groupedFindTableView selectedRowIndexes];
+//    //        NSInteger row = [leftSideController.groupedFindTableView clickedRow];
+//    //        if (row != -1) {
+//    //            if ([rowIndexes containsIndex:row] == NO)
+//    //                rowIndexes = [NSIndexSet indexSetWithIndex:row];
+//    //            NSArray *selections = [[[leftSideController.groupedFindArrayController arrangedObjects] objectsAtIndexes:rowIndexes] valueForKeyPath:@"@unionOfArrays.matches"];
+//    //            item = [menu addItemWithTitle:NSLocalizedString(@"Select", @"Menu item title") action:@selector(selectSelections:) target:self];
+//    //            [item setRepresentedObject:selections];
+//    //            [menu addItem:[NSMenuItem separatorItem]];
+//    //            if ([pdfView hideNotes] == NO && [[self pdfDocument] allowsNotes]) {
+//    //                item = [menu addItemWithTitle:NSLocalizedString(@"Add New Circle", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKCircleNote];
+//    //                [item setRepresentedObject:selections];
+//    //                item = [menu addItemWithTitle:NSLocalizedString(@"Add New Rectangle", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKSquareNote];
+//    //                [item setRepresentedObject:selections];
+//    //                item = [menu addItemWithTitle:NSLocalizedString(@"Add New Highlight", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKHighlightNote];
+//    //                [item setRepresentedObject:selections];
+//    //                item = [menu addItemWithTitle:NSLocalizedString(@"Add New Underline", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKUnderlineNote];
+//    //                [item setRepresentedObject:selections];
+//    //                item = [menu addItemWithTitle:NSLocalizedString(@"Add New Strikethrough", @"Menu item title") action:@selector(addAnnotationsForSelections:) target:self tag:SKStrikeOutNote];
+//    //                [item setRepresentedObject:selections];
+//    //            }
+//    //        }
+//        } else if ([menu isEqual:[rightSideController.snapshotTableView menu]]) {
+//            NSInteger row = [rightSideController.snapshotTableView clickedRow];
+//            if (row != -1) {
+//                SKSnapshotWindowController *controller = [[rightSideController.snapshotArrayController arrangedObjects] objectAtIndex:row];
+//
+//                if ([[controller window] isVisible]) {
+//                    item = [menu addItemWithTitle:NSLocalizedString(@"Hide", @"Menu item title") action:@selector(hideSnapshot:) target:self];
+//                    [item setRepresentedObject:controller];
+//                } else {
+//                    item = [menu addItemWithTitle:NSLocalizedString(@"Show", @"Menu item title") action:@selector(showSnapshot:) target:self];
+//                    [item setRepresentedObject:controller];
+//                }
+//                [menu addItem:[NSMenuItem separatorItem]];
+//
+//                item = [menu addItemWithTitle:NSLocalizedString(@"Export", @"Menu item title") action:nil target:self];
+//                NSMenu *subMenu = [NSMenu menu];
+//
+//                NSMenuItem *t = [subMenu addItemWithTitle:NSLocalizedString(@"PNG", @"Menu item title") action:@selector(menuItemClick_ExportPNG:) target:self];
+//                [t setRepresentedObject:controller];
+//
+//                t = [subMenu addItemWithTitle:NSLocalizedString(@"JPG", @"Menu item title") action:@selector(menuItemClick_ExportJPG:) target:self];
+//                [t setRepresentedObject:controller];
+//
+//                t = [subMenu addItemWithTitle:NSLocalizedString(@"PDF", @"Menu item title") action:@selector(menuItemClick_ExportPDF:) target:self];
+//                [t setRepresentedObject:controller];
+//                item.submenu = subMenu;
+//
+//                item = [menu addItemWithTitle:NSLocalizedString(@"Print", @"Menu item title") action:@selector(menuItemClick_Print:) target:self];
+//                [item setRepresentedObject:controller];
+//                [menu addItem:[NSMenuItem separatorItem]];
+//
+//                item = [menu addItemWithTitle:NSLocalizedString(@"Copy", @"Menu item title") action:@selector(menuItemClick_Copy:) target:self];
+//                [item setRepresentedObject:controller];
+//                [menu addItem:[NSMenuItem separatorItem]];
+//
+//                item = [menu addItemWithTitle:NSLocalizedString(@"Delete", @"Menu item title") action:@selector(deleteSnapshot:) target:self];
+//                [item setRepresentedObject:controller];
+//                item = [menu addItemWithTitle:NSLocalizedString(@"Delete All Snapshots", @"Menu item title") action:@selector(deleteAllSnapshot:) target:self];
+//                [item setRepresentedObject:controller];
+//            }
+//        } else if ([menu isEqual:[rightSideController.noteOutlineView menu]]) {
+//            NSArray *items;
+//            NSIndexSet *rowIndexes = [rightSideController.noteOutlineView selectedRowIndexes];
+//            NSInteger row = [rightSideController.noteOutlineView clickedRow];
+//            if (row != -1) {
+//                if ([rowIndexes containsIndex:row] == NO)
+//                    rowIndexes = [NSIndexSet indexSetWithIndex:row];
+//                items = [rightSideController.noteOutlineView itemsAtRowIndexes:rowIndexes];
+//
+//                PDFAnnotation *foldNote = (PDFAnnotation *)notes[row];
+//                BOOL isFold = YES;
+//                if ([rightSideController.allFoldNotes containsObject:foldNote]) {
+//                    isFold = NO;
+//                }
+//                item = [menu addItemWithTitle:NSLocalizedString(@"Expand", nil) action:@selector(unfoldNoteAction:) target:self];
+//                if (isFold)
+//                    [item setState:NSControlStateValueOff];
+//                else
+//                    [item setState:NSControlStateValueOn];
+//                [item setRepresentedObject:items];
+//                item = [menu addItemWithTitle:NSLocalizedString(@"Collapse", nil) action:@selector(foldNoteAction:) target:self];
+//                if (isFold)
+//                    [item setState:NSControlStateValueOn];
+//                else
+//                    [item setState:NSControlStateValueOff];
+//                [item setRepresentedObject:items];
+//
+//                //UX改版删除
+//    //            if ([self outlineView:rightSideController.noteOutlineView canCopyItems:items]) {
+//    //                item = [menu addItemWithTitle:NSLocalizedString(@"Copy", @"Menu item title") action:@selector(copyNotes:) target:self];
+//    //                [item setRepresentedObject:items];
+//    //            }
+//                [menu addItem:[NSMenuItem separatorItem]];
+//                if ([pdfView hideNotes] == NO && [items count] == 1) {
+//                    PDFAnnotation *annotation = [[self noteItems:items] lastObject];
+//                    if ([annotation isEditable]) {
+//                        if ([(PDFAnnotation *)[items lastObject] type] == nil) {
+//                            if ([[(SKNoteText *)[items lastObject] note] isNote]) {
+//                                item = [menu addItemWithTitle:[NSLocalizedString(@"Edit", @"Menu item title") stringByAppendingEllipsis] action:@selector(editNoteTextFromTable:) target:self];
+//                                [item setRepresentedObject:annotation];
+//                            }
+//                        } else if ([[rightSideController.noteOutlineView tableColumnWithIdentifier:NOTE_COLUMNID] isHidden]) {
+//                            item = [menu addItemWithTitle:[NSLocalizedString(@"Edit", @"Menu item title") stringByAppendingEllipsis] action:@selector(editThisAnnotation:) target:pdfView];
+//                            [item setRepresentedObject:annotation];
+//                        } else {
+//                            item = [menu addItemWithTitle:NSLocalizedString(@"Edit", @"Menu item title") action:@selector(editNoteFromTable:) target:self];
+//                            [item setRepresentedObject:annotation];
+//                            item = [menu addItemWithTitle:[NSLocalizedString(@"Edit", @"Menu item title") stringByAppendingEllipsis] action:@selector(editThisAnnotation:) target:pdfView];
+//                            [item setRepresentedObject:annotation];
+//                            [item setKeyEquivalentModifierMask:NSEventModifierFlagOption];
+//                            [item setAlternate:YES];
+//                        }
+//                    }
+//    //                if ([pdfView hideNotes] == NO && [[self pdfDocument] allowsNotes]) {
+//    //                    if ([pdfView activeAnnotation] == annotation) {
+//    //                        item = [menu addItemWithTitle:NSLocalizedString(@"Deselect", @"Menu item title") action:@selector(deselectNote:) target:self];
+//    //                        [item setRepresentedObject:annotation];
+//    //                    } else {
+//    //                        item = [menu addItemWithTitle:NSLocalizedString(@"Select", @"Menu item title") action:@selector(selectNote:) target:self];
+//    //                        [item setRepresentedObject:annotation];
+//    //                    }
+//    //                    item = [menu addItemWithTitle:NSLocalizedString(@"Show", @"Menu item title") action:@selector(revealNote:) target:self];
+//    //                    [item setRepresentedObject:annotation];
+//    //                }
+//                }
+//    //            if ([menu numberOfItems] > 0)
+//    //                [menu addItem:[NSMenuItem separatorItem]];
+//    //            item = [menu addItemWithTitle:[items count] == 1 ? NSLocalizedString(@"Auto Size Row", @"Menu item title") : NSLocalizedString(@"Auto Size Rows", @"Menu item title") action:@selector(autoSizeNoteRows:) target:self];
+//    //            [item setRepresentedObject:items];
+//    //            item = [menu addItemWithTitle:[items count] == 1 ? NSLocalizedString(@"Undo Auto Size Row", @"Menu item title") : NSLocalizedString(@"Undo Auto Size Rows", @"Menu item title") action:@selector(resetHeightOfNoteRows:) target:self];
+//    //            [item setRepresentedObject:items];
+//    //            [item setKeyEquivalentModifierMask:NSAlternateKeyMask];
+//    //            [item setAlternate:YES];
+//    //            [menu addItemWithTitle:NSLocalizedString(@"Auto Size All", @"Menu item title") action:@selector(autoSizeNoteRows:) target:self];
+//    //            item = [menu addItemWithTitle:NSLocalizedString(@"Undo Auto Size All", @"Menu item title") action:@selector(resetHeightOfNoteRows:) target:self];
+//    //            [item setKeyEquivalentModifierMask:NSAlternateKeyMask];
+//    //            [item setAlternate:YES];
+//    //            [menu addItemWithTitle:NSLocalizedString(@"Automatically Resize", @"Menu item title") action:@selector(toggleAutoResizeNoteRows:) target:self];
+//
+//                if ([menu numberOfItems] > 0) {
+//    //                [menu addItem:[NSMenuItem separatorItem]];
+//                    item = [menu addItemWithTitle:NSLocalizedStringFromTable(@"Export Annotations…", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//
+//                    NSMenu *subMenu = [NSMenu menu];
+//                    item.submenu = subMenu;
+//                    item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"PDF", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                    item.tag = 0;
+//                    item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"PDF Bundle", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                    item.tag = 1;
+//                    item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"PDF Reader Pro Edition Notes", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                    item.tag = 2;
+//                    item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as Text", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                    item.tag = 3;
+//                    item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as RTF", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                    item.tag = 4;
+//                    item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as RTFD", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                    item.tag = 5;
+//                    item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as FDF", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                    item.tag = 6;
+//
+//                    [menu addItem:[NSMenuItem separatorItem]];
+//                    if ([self outlineView:rightSideController.noteOutlineView canDeleteItems:items]) {
+//                        item = [menu addItemWithTitle:NSLocalizedString(@"Delete", @"Menu item title") action:@selector(deleteNotes:) target:self];
+//                        [item setRepresentedObject:items];
+//                    }
+//                    item = [menu addItemWithTitle:NSLocalizedStringFromTable(@"Remove All Annotations", @"MainMenu", @"Menu item title") action:@selector(removeAllAnnotations:) target:self];
+//                }
+//
+//
+//            } else {
+//                item = [menu addItemWithTitle:NSLocalizedStringFromTable(@"Export Annotations…", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//
+//                NSMenu *subMenu = [NSMenu menu];
+//                item.submenu = subMenu;
+//                item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"PDF", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                item.tag = 0;
+//                item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"PDF Bundle", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                item.tag = 1;
+//                item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"PDF Reader Pro Edition Notes", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                item.tag = 2;
+//                item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as Text", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                item.tag = 3;
+//                item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as RTF", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                item.tag = 4;
+//                item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as RTFD", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                item.tag = 5;
+//                item = [subMenu addItemWithTitle:NSLocalizedStringFromTable(@"Notes as FDF", @"MainMenu", @"Menu item title") action:@selector(exportAnnotationNotes:) target:self];
+//                item.tag = 6;
+//
+//                item = [menu addItemWithTitle:NSLocalizedStringFromTable(@"Remove All Annotations", @"MainMenu", @"Menu item title") action:@selector(removeAllAnnotations:) target:self];
+//            }
+//        }
+    }
+}
+
+// MARK: - Menu Item Actions
+
+extension KMLeftSideViewController {
+    @objc func cutPage(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-cutPage...")
+//        if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
+//            [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+//            return;
+//        }
+//        [self tableView:leftSideController.thumbnailTableView cutRowsWithIndexes:leftSideController.thumbnailTableView.selectedRowIndexes];
+    }
+    
+    @objc func copyPage(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-copyPage...")
+//        [self tableView:leftSideController.thumbnailTableView copyRowsWithIndexes:leftSideController.thumbnailTableView.selectedRowIndexes];
+    }
+    
+    @objc func pastePage(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-pastePage...")
+//        [self tableView:leftSideController.thumbnailTableView pasteFromPasteboard:nil];
+    }
+    
+    @objc func deletePage(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-deletePage...")
+//        if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
+//            [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+//            return;
+//        }
+//        [self tableView:leftSideController.thumbnailTableView deleteRowsWithIndexes:leftSideController.thumbnailTableView.selectedRowIndexes];
+    }
+    
+    @objc func rotatePage(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-rotatePage...")
+//        if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
+//            [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+//            return;
+//        }
+//
+//        [self tableView:leftSideController.thumbnailTableView rotateRowsWithIndexes:leftSideController.thumbnailTableView.selectedRowIndexes];
+    }
+    
+    @objc func quickInsert(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-quickInsert...")
+    }
+    
+    @objc func insert(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-insert...")
+    }
+    
+    @objc func insertPDF(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-insertPDF...")
+    }
+    
+    @objc func extractPage(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-extractPage...")
+    }
+    
+    @objc func pageEdit(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-pageEdit...")
+    }
+    
+    @objc func displayPageSize(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-displayPageSize...")
+    }
+    
+    @objc func sharePage(_ sender: AnyObject?) {
+        KMPrint("KMLeftSideViewController-sharePage...")
+    }
+    
+    private func _tableView(_ tv: NSTableView, cutRowsWithIndexes rowIndexes: IndexSet) {
+//        if tv.isEqual(to: self.thumbnailTableView) {
+//            self._copysPages.removeAll()
+//            for i in rowIndexes {
+//                if (idx != NSNotFound) {
+//                    let page = self.listView.document.page(at: idx)
+//                    self._copysPages.append(page)
+//                }
+//            }
+//            [self tableView:tv deleteRowsWithIndexes:rowIndexes];
+//        }
+    }
+}
+