KMConvertWordSettingView.swift 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. //
  2. // KMConvertWordSettingView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. import Cocoa
  8. class KMConvertWordSettingView: KMConvertSettingView, NibLoadable {
  9. @IBOutlet weak var pageSettingTitleLabel: NSTextField!
  10. @IBOutlet weak var saveFlowTextRadio: KMImageTitleButton!
  11. @IBOutlet weak var savePageLayoutRadio: KMImageTitleButton!
  12. @IBOutlet weak var textOCRBox: NSBox!
  13. @IBOutlet weak var pageRangeBox: NSBox!
  14. var ocrEnabled: Bool {
  15. get {
  16. return ocrItemView.checkBox.state == .on
  17. }
  18. }
  19. var ocrString: String {
  20. get {
  21. return ocrItemView.languageComboBox.stringValue
  22. }
  23. }
  24. // 流排 0 框排 1
  25. var pageSettingSelectedIndex: Int = 0
  26. static var nibName: String? {
  27. return "KMConvertBaseWindowController"
  28. }
  29. static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
  30. guard let nibName = nibName else { return nil }
  31. var topLevelArray: NSArray? = nil
  32. bundle.loadNibNamed(NSNib.Name(nibName), owner: nil, topLevelObjects: &topLevelArray)
  33. guard let results = topLevelArray else { return nil }
  34. let views = Array<Any>(results).filter { $0 is Self }
  35. return views.last as? Self
  36. }
  37. override init(frame frameRect: NSRect) {
  38. super.init(frame: frameRect)
  39. }
  40. required init?(coder: NSCoder) {
  41. super.init(coder: coder)
  42. }
  43. override func awakeFromNib() {
  44. super.awakeFromNib()
  45. pageSettingTitleLabel.stringValue = NSLocalizedString("Layout Settings", comment: "")
  46. pageSettingTitleLabel.textColor = NSColor(hex: "#616469")
  47. pageSettingTitleLabel.font = .SFProTextRegular(12)
  48. saveFlowTextRadio.title = NSLocalizedString("Retain Flowing Text", comment: "")
  49. saveFlowTextRadio.imageName = "btn_radio_unsel_on"
  50. saveFlowTextRadio.action = { [unowned self] view, button in
  51. self.saveFlowTextRadioAction(sender: view)
  52. }
  53. savePageLayoutRadio.title = NSLocalizedString("Retain Page Layout", comment: "")
  54. savePageLayoutRadio.titleLabel.textColor = NSColor.buttonTitleColor()
  55. savePageLayoutRadio.titleLabel.font = .SFProTextRegular(14)
  56. savePageLayoutRadio.imageName = "btn_radio_unsel_on"
  57. savePageLayoutRadio.action = { [unowned self] view, button in
  58. self.savePageLayoutRadioAction(sender: view)
  59. }
  60. saveFlowTextRadio.state = .on
  61. saveFlowTextRadio.imageName = "btn_radio_sel_on"
  62. }
  63. override func viewDidMoveToWindow() {
  64. super.viewDidMoveToWindow()
  65. let ocrItemView = KMConvertOCRSettingItemView.createFromNib()
  66. ocrItemView?.frame = textOCRBox.contentView!.bounds
  67. ocrItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
  68. // textOCRBox.contentView = ocrItemView
  69. ocrItemView?.languageIndex = ocrLanuguageIndex
  70. self.ocrItemView = ocrItemView
  71. ocrItemView?.lanugageDidSelected = {
  72. [unowned self] (index: Int) -> () in
  73. guard let callback = lanugageDidSelected else {
  74. return
  75. }
  76. callback(index)
  77. }
  78. let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
  79. pageRangeItemView?.frame = pageRangeBox.contentView!.bounds
  80. pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
  81. pageRangeBox.contentView = pageRangeItemView
  82. pageRangeItemView?.pageCount = self.pageCount
  83. self.pageRangeItemView = pageRangeItemView
  84. pageRangeItemView?.isTextDidEndCallback = true
  85. pageRangeItemView?.itemClick = { [unowned self] index, _ in
  86. pageRangeSelectedIndex = index
  87. guard let callback = self.pageRangeDidChange else {
  88. return
  89. }
  90. callback(KMPageRange(rawValue: index)!)
  91. }
  92. pageRangeItemView?.textDidEndEditingCallback = { [unowned self] textString in
  93. let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
  94. if (pageRange != .custom) {
  95. return
  96. }
  97. guard let callback = pageRangeDidInputFinishCallback else {
  98. return
  99. }
  100. callback(textString)
  101. }
  102. }
  103. @objc func saveFlowTextRadioAction(sender: AnyObject) {
  104. for radio in [saveFlowTextRadio, savePageLayoutRadio] {
  105. if ((radio?.isEqual(to: sender))!) {
  106. radio?.state = .on
  107. radio!.imageName = "btn_radio_sel_on"
  108. } else {
  109. radio?.state = .off
  110. radio!.imageName = "btn_radio_unsel_on"
  111. }
  112. }
  113. pageSettingSelectedIndex = 0
  114. }
  115. @objc func savePageLayoutRadioAction(sender: AnyObject) {
  116. for radio in [saveFlowTextRadio, savePageLayoutRadio] {
  117. if (radio?.isEqual(to: sender))! {
  118. radio?.state = .on
  119. radio!.imageName = "btn_radio_sel_on"
  120. } else {
  121. radio?.state = .off
  122. radio!.imageName = "btn_radio_unsel_on"
  123. }
  124. }
  125. pageSettingSelectedIndex = 1
  126. }
  127. override func getPageRangeString() -> String {
  128. if let view = self.pageRangeItemView {
  129. return view.pageRangeValue
  130. }
  131. return ""
  132. }
  133. }