KMConvertWordSettingView.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. //
  2. // KMConvertWordSettingView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. //typealias KMConvertSettingViewLanugageDidSelectedCallback = (_ index: Int) -> ()
  8. class KMConvertWordSettingView: KMConvertSettingView {
  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. // 流排 0 框排 1
  15. var pageSettingSelectedIndex: Int = 0
  16. // var lanugageDidSelected: KMConvertSettingViewLanugageDidSelectedCallback?
  17. override init(frame frameRect: NSRect) {
  18. super.init(frame: frameRect)
  19. }
  20. required init?(coder: NSCoder) {
  21. super.init(coder: coder)
  22. }
  23. override func awakeFromNib() {
  24. super.awakeFromNib()
  25. pageSettingTitleLabel.stringValue = NSLocalizedString("Layout Settings", comment: "")
  26. pageSettingTitleLabel.textColor = NSColor(hex: "#616469")
  27. pageSettingTitleLabel.font = .SFProTextRegular(12)
  28. saveFlowTextRadio.title = NSLocalizedString("Retain Flowing Text", comment: "")
  29. saveFlowTextRadio.imageName = "btn_radio_unsel_on"
  30. saveFlowTextRadio.action = { [unowned self] view, button in
  31. self.saveFlowTextRadioAction(sender: view)
  32. }
  33. savePageLayoutRadio.title = NSLocalizedString("Retain Page Layout", comment: "")
  34. savePageLayoutRadio.titleLabel.textColor = NSColor.buttonTitleColor()
  35. savePageLayoutRadio.titleLabel.font = .SFProTextRegular(14)
  36. savePageLayoutRadio.imageName = "btn_radio_unsel_on"
  37. savePageLayoutRadio.action = { [unowned self] view, button in
  38. self.savePageLayoutRadioAction(sender: view)
  39. }
  40. saveFlowTextRadio.state = .on
  41. saveFlowTextRadio.imageName = "btn_radio_sel_on"
  42. }
  43. override func viewDidMoveToWindow() {
  44. super.viewDidMoveToWindow()
  45. if (self.ocrItemView == nil) {
  46. let view = KMConvertOCRSettingItemView.createFromNib()
  47. self.textOCRBox.contentView = view
  48. // self.ocrItemView = view
  49. view?.lanugageDidSelected = { [unowned self] value, change in
  50. guard let callback = self.lanugageDidSelected else {
  51. return
  52. }
  53. callback(value, change)
  54. }
  55. }
  56. self.ocrItemView?.languageIndex = self.ocrLanuguageIndex
  57. if (self.pageRangeItemView == nil) {
  58. let view = KMConvertPageRangeSettingItemView.createFromNib()
  59. self.pageRangeBox.contentView = view
  60. // self.pageRangeItemView = view
  61. view?.itemClick = { [unowned self] index, _ in
  62. self.pageRangeSelectedIndex = index
  63. guard let callback = self.pageRangeDidChange else {
  64. return
  65. }
  66. callback(KMPageRange(rawValue: index)!)
  67. }
  68. view?.textDidEndEditingCallback = { [unowned self] textString in
  69. let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
  70. if (pageRange != .custom) {
  71. return
  72. }
  73. guard let callback = pageRangeDidInputFinishCallback else {
  74. return
  75. }
  76. callback(textString)
  77. }
  78. }
  79. self.pageRangeItemView?.pageCount = self.pageCount
  80. self.pageRangeItemView?.isTextDidEndCallback = true
  81. }
  82. @objc func saveFlowTextRadioAction(sender: AnyObject) {
  83. for radio in [saveFlowTextRadio, savePageLayoutRadio] {
  84. if ((radio?.isEqual(to: sender))!) {
  85. radio?.state = .on
  86. radio!.imageName = "btn_radio_sel_on"
  87. } else {
  88. radio?.state = .off
  89. radio!.imageName = "btn_radio_unsel_on"
  90. }
  91. }
  92. pageSettingSelectedIndex = 0
  93. }
  94. @objc func savePageLayoutRadioAction(sender: AnyObject) {
  95. for radio in [saveFlowTextRadio, savePageLayoutRadio] {
  96. if (radio?.isEqual(to: sender))! {
  97. radio?.state = .on
  98. radio!.imageName = "btn_radio_sel_on"
  99. } else {
  100. radio?.state = .off
  101. radio!.imageName = "btn_radio_unsel_on"
  102. }
  103. }
  104. pageSettingSelectedIndex = 1
  105. }
  106. override func getPageRangeString() -> String {
  107. if let view = self.pageRangeItemView {
  108. return view.pageRangeValue
  109. }
  110. return ""
  111. }
  112. }