mirror of
https://github.com/coteditor/CotEditor.git
synced 2024-09-20 15:47:57 +03:00
Use representedObject to deliver fileEncoding by menuItem
This commit is contained in:
parent
87050a7192
commit
5b5afcef2e
@ -779,7 +779,7 @@ final class Document: NSDocument, AdditionalDocumentPreparing, EncodingChanging
|
||||
|
||||
switch menuItem.action {
|
||||
case #selector(changeEncoding(_:)):
|
||||
menuItem.state = (menuItem.tag == self.fileEncoding.tag) ? .on : .off
|
||||
menuItem.state = (menuItem.representedObject as? FileEncoding == self.fileEncoding) ? .on : .off
|
||||
|
||||
case #selector(changeLineEnding(_:)):
|
||||
menuItem.state = (menuItem.tag == self.lineEnding.index) ? .on : .off
|
||||
@ -952,7 +952,7 @@ final class Document: NSDocument, AdditionalDocumentPreparing, EncodingChanging
|
||||
/// Changes the document text encoding with sender's tag.
|
||||
@IBAction func changeEncoding(_ sender: NSMenuItem) {
|
||||
|
||||
let fileEncoding = FileEncoding(tag: sender.tag)
|
||||
guard let fileEncoding = sender.representedObject as? FileEncoding else { return assertionFailure() }
|
||||
|
||||
self.askChangingEncoding(to: fileEncoding)
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ extension Array<FileEncoding?> {
|
||||
self.map { fileEncoding in
|
||||
if let fileEncoding {
|
||||
let item = NSMenuItem(title: fileEncoding.localizedName, action: #selector((any EncodingChanging).changeEncoding), keyEquivalent: "")
|
||||
item.tag = fileEncoding.tag
|
||||
item.representedObject = fileEncoding
|
||||
return item
|
||||
} else {
|
||||
return .separator()
|
||||
|
@ -43,19 +43,3 @@ struct FileEncoding: Equatable, Hashable {
|
||||
: localizedName
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extension FileEncoding {
|
||||
|
||||
init(tag: Int) {
|
||||
|
||||
self.encoding = String.Encoding(rawValue: UInt(abs(tag)))
|
||||
self.withUTF8BOM = (self.encoding == .utf8) && (tag < 0)
|
||||
}
|
||||
|
||||
|
||||
var tag: Int {
|
||||
|
||||
(self.withUTF8BOM ? -1 : 1) * Int(self.encoding.rawValue)
|
||||
}
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ import Combine
|
||||
// observe document status change
|
||||
self.document.$fileEncoding
|
||||
.receive(on: DispatchQueue.main)
|
||||
.sink { [weak self] in self?.encodingPopUpButton?.selectItem(withTag: $0.tag) },
|
||||
.sink { [weak self] in self?.encodingPopUpButton?.selectItem(withTitle: $0.localizedName) },
|
||||
self.document.$lineEnding
|
||||
.receive(on: DispatchQueue.main)
|
||||
.sink { [weak self] in self?.lineEndingPopUpButton?.selectItem(withTag: $0.index) },
|
||||
@ -220,7 +220,7 @@ import Combine
|
||||
menu.items.removeAll { !$0.isSectionHeader }
|
||||
menu.items += fileEncodings.menuItems
|
||||
|
||||
popUpButton.selectItem(withTag: self.document.fileEncoding.tag)
|
||||
popUpButton.selectItem(withTitle: self.document.fileEncoding.localizedName)
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user