Add Copy Value command
This commit is contained in:
parent
5ae526934c
commit
e40e8d662f
|
@ -230,4 +230,13 @@ extension Node {
|
||||||
return "MaxKey"
|
return "MaxKey"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var isValueCopyable: Bool {
|
||||||
|
switch value {
|
||||||
|
case .document(_), .array(_), .binary(_), .minKey, .maxKey:
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,14 @@ class QueryViewController: NSViewController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func nodeForCopying() -> Node? {
|
||||||
|
if outlineView.clickedRow >= 0 {
|
||||||
|
return outlineView.item(atRow: outlineView.clickedRow) as? Node
|
||||||
|
} else {
|
||||||
|
return outlineView.item(atRow: outlineView.selectedRow) as? Node
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@objc func outlineCellDoubleClicked() {
|
@objc func outlineCellDoubleClicked() {
|
||||||
if let item = outlineView.item(atRow: outlineView.clickedRow) {
|
if let item = outlineView.item(atRow: outlineView.clickedRow) {
|
||||||
if outlineView.isItemExpanded(item) {
|
if outlineView.isItemExpanded(item) {
|
||||||
|
@ -171,6 +179,13 @@ class QueryViewController: NSViewController {
|
||||||
}
|
}
|
||||||
wc.showWindow(nil)
|
wc.showWindow(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@IBAction func copy(_ sender: Any) {
|
||||||
|
guard let node = nodeForCopying() else { return }
|
||||||
|
NSPasteboard.general.clearContents()
|
||||||
|
NSPasteboard.general.setString(node.valueString, forType: .string)
|
||||||
|
// todo: support copying more specific types?
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension QueryViewController: NSMenuItemValidation {
|
extension QueryViewController: NSMenuItemValidation {
|
||||||
|
@ -181,6 +196,9 @@ extension QueryViewController: NSMenuItemValidation {
|
||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
} else if menuItem.action == #selector(copy(_:)) {
|
||||||
|
let node = nodeForCopying()
|
||||||
|
return node != nil && node!.isValueCopyable
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16096" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16097" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16096"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16097"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
|
@ -1139,18 +1139,25 @@
|
||||||
</customView>
|
</customView>
|
||||||
<menu id="nL5-kg-dty">
|
<menu id="nL5-kg-dty">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Edit Document" id="0gS-XH-YDt">
|
<menuItem title="Edit Document…" id="0gS-XH-YDt">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="editDocument:" target="-2" id="DP4-Tq-o5M"/>
|
<action selector="editDocument:" target="-2" id="DP4-Tq-o5M"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Delete" id="nn0-ZF-eDZ">
|
<menuItem isSeparatorItem="YES" id="xG5-Uo-1aO"/>
|
||||||
|
<menuItem title="Delete…" id="nn0-ZF-eDZ">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="deleteNode:" target="-2" id="dgm-SC-hn5"/>
|
<action selector="deleteNode:" target="-2" id="dgm-SC-hn5"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
|
<menuItem isSeparatorItem="YES" id="giL-0Q-HTl"/>
|
||||||
|
<menuItem title="Copy Value" keyEquivalent="c" id="UuQ-79-VL3">
|
||||||
|
<connections>
|
||||||
|
<action selector="copy:" target="-2" id="HsR-MZ-ayB"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
<point key="canvasLocation" x="887" y="210"/>
|
<point key="canvasLocation" x="887" y="210"/>
|
||||||
</menu>
|
</menu>
|
||||||
|
|
Loading…
Reference in New Issue