Browse Source

UI - 补充【转档】页面Cancel、Convert按钮高保真样式

wanjun 1 year ago
parent
commit
05aeec344e

+ 8 - 0
PDF Office/PDF Office.xcodeproj/project.pbxproj

@@ -833,6 +833,9 @@
 		9F81ADC229B87C7F002251F4 /* KMConvertPDFManagerOC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC129B87C7F002251F4 /* KMConvertPDFManagerOC.m */; };
 		9F81ADC329B87C7F002251F4 /* KMConvertPDFManagerOC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC129B87C7F002251F4 /* KMConvertPDFManagerOC.m */; };
 		9F81ADC429B87C7F002251F4 /* KMConvertPDFManagerOC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC129B87C7F002251F4 /* KMConvertPDFManagerOC.m */; };
+		9F81ADC629B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */; };
+		9F81ADC729B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */; };
+		9F81ADC829B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */; };
 		9F8539BE2943085A00DF644E /* KMBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8539BD2943085A00DF644E /* KMBrowser.swift */; };
 		9F8539BF2943085A00DF644E /* KMBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8539BD2943085A00DF644E /* KMBrowser.swift */; };
 		9F8539C02943085A00DF644E /* KMBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8539BD2943085A00DF644E /* KMBrowser.swift */; };
@@ -3398,6 +3401,7 @@
 		9F78EFC528F7E965001E66F4 /* KMHomeViewController+UI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KMHomeViewController+UI.swift"; sourceTree = "<group>"; };
 		9F81ADC029B87C7F002251F4 /* KMConvertPDFManagerOC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KMConvertPDFManagerOC.h; sourceTree = "<group>"; };
 		9F81ADC129B87C7F002251F4 /* KMConvertPDFManagerOC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KMConvertPDFManagerOC.m; sourceTree = "<group>"; };
+		9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSButton+DesignToken.swift"; sourceTree = "<group>"; };
 		9F8539BD2943085A00DF644E /* KMBrowser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBrowser.swift; sourceTree = "<group>"; };
 		9F8539C529430AC400DF644E /* KMToolbarRightView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarRightView.swift; sourceTree = "<group>"; };
 		9F8539C929430BF300DF644E /* KMBrowserWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBrowserWindowController.swift; sourceTree = "<group>"; };
@@ -5228,6 +5232,7 @@
 				9F0CB4C3298625F400007028 /* NSColor+KMExtensions.swift */,
 				9FBC48BE299E23B100CA39D7 /* NSViewController+DesignToken.swift */,
 				9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */,
+				9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */,
 			);
 			path = Category;
 			sourceTree = "<group>";
@@ -9151,6 +9156,7 @@
 				BB146FDE299DC0D100784A6A /* GTLRDriveObjects.m in Sources */,
 				9F0CB5112986565700007028 /* KMDesignToken+BorderRadius.swift in Sources */,
 				F34BF949295310AB002C25A2 /* NSUserDefaults+PDFListView.m in Sources */,
+				9F81ADC629B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BBEC00C7295C319400A26C98 /* KMBatesManager.swift in Sources */,
 				BB147020299DC0D100784A6A /* OIDServiceDiscovery.m in Sources */,
 				BB5DF1F12959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.swift in Sources */,
@@ -9860,6 +9866,7 @@
 				BB146FDF299DC0D100784A6A /* GTLRDriveObjects.m in Sources */,
 				9F0CB5122986565700007028 /* KMDesignToken+BorderRadius.swift in Sources */,
 				BB86C1EE28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
+				9F81ADC729B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BBEC00C8295C319400A26C98 /* KMBatesManager.swift in Sources */,
 				BB147021299DC0D100784A6A /* OIDServiceDiscovery.m in Sources */,
 				BB5DF1F22959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.swift in Sources */,
@@ -10858,6 +10865,7 @@
 				BBD1F77E296F9BE000343885 /* KMPageEditSettingBaseWindowController.swift in Sources */,
 				9F080B25298FCB0D00FC27DA /* KMDesignToken+Action.swift in Sources */,
 				89E93EE02999DA6D00F10F66 /* KMNoteFilterCollevtionViewItem.m in Sources */,
+				9F81ADC829B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BB146FB9299DC0D100784A6A /* GTLRRuntimeCommon.m in Sources */,
 				BB147013299DC0D100784A6A /* OIDError.m in Sources */,
 				9F0CB4BF2977C06300007028 /* KMPropertiesPanelColorSubVC.swift in Sources */,

+ 129 - 0
PDF Office/PDF Office/Class/Home/Category/NSButton+DesignToken.swift

@@ -0,0 +1,129 @@
+//
+//  NSButton+DesignToken.swift
+//  PDF Office
+//
+//  Created by wanjun on 2023/3/9.
+//
+
+import Foundation
+
+extension NSButton {
+    func designToken(bgToken: String = "", textToken: String = "", heightConstraint: NSLayoutConstraint = NSLayoutConstraint(), state: KMDesignTokenState = .Norm) -> Void {
+        self.isBordered = false
+        self.wantsLayer = true
+
+        let designToken = KMDesignToken.shared
+        
+        var height: String?
+        var horizontalPadding: String?
+        var borderColor: NSColor?
+        var borderRadius: String?
+        var borderWidth: String?
+        var itemSpacing: String?
+        var fill: NSColor?
+        var textTypography: KMTypographyValue?
+        var textFill: NSColor?
+        
+        if bgToken != "" {
+            height = designToken.height(withToken: bgToken)
+            horizontalPadding = designToken.horizontalPadding(withToken: bgToken)
+            borderColor = designToken.border(withToken: bgToken)
+            borderRadius = designToken.borderRadius(withToken: bgToken)
+            borderWidth = designToken.borderWidth(withToken: bgToken)
+            itemSpacing = designToken.itemSpacing(withToken: bgToken)
+            fill = designToken.fill(withToken: bgToken)
+        }
+        if textToken != "" {
+            textTypography = designToken.typography(withToken: textToken)
+            textFill = designToken.fill(withToken: textToken)
+        }
+
+        if heightConstraint != nil {
+            if heightConstraint.shouldBeArchived {
+                heightConstraint.constant = height!.stringToCGFloat()
+            }
+        }
+        if itemSpacing != nil {}
+        if horizontalPadding != nil {}
+//        if textTypography != nil {
+//            var fontFamily: String = textTypography!.fontFamily
+//            let fontWeight: String = textTypography!.fontWeight
+//            if fontFamily.contains(" ") {
+//                fontFamily = fontFamily.replacingOccurrences(of: " ", with: "")
+//            }
+//            if fontWeight != "" {
+//                fontFamily = String(format: "%@-%@", fontFamily,fontWeight)
+//            }
+//            if state == .Norm {
+//                control.font = NSFont(name: fontFamily, size: textTypography!.fontSize.stringToCGFloat()) ?? NSFont.systemFont(ofSize: textTypography!.fontSize.stringToCGFloat())
+//                control.lineHeight = textTypography!.lineHeight.stringToCGFloat()
+//            } else if (state == .Hov) {
+//                control.font_hov = NSFont(name: fontFamily, size: textTypography!.fontSize.stringToCGFloat()) ?? NSFont.systemFont(ofSize: textTypography!.fontSize.stringToCGFloat())
+//                control.lineHeight_hov = textTypography!.lineHeight.stringToCGFloat()
+//            } else if (state == .Act) {
+//                control.font_act = NSFont(name: fontFamily, size: textTypography!.fontSize.stringToCGFloat()) ?? NSFont.systemFont(ofSize: textTypography!.fontSize.stringToCGFloat())
+//                control.lineHeight_act = textTypography!.lineHeight.stringToCGFloat()
+//            } else if (state == .Disabled) {
+//                control.font_disabled = NSFont(name: fontFamily, size: textTypography!.fontSize.stringToCGFloat()) ?? NSFont.systemFont(ofSize: textTypography!.fontSize.stringToCGFloat())
+//                control.lineHeight_disabled = textTypography!.lineHeight.stringToCGFloat()
+//            }
+//        }
+//        if fill != nil {
+//            if state == .Norm {
+//                control.background = fill!
+//            } else if (state == .Hov) {
+//                control.background_hov = fill!
+//            } else if (state == .Act) {
+//                control.background_act = fill!
+//            } else if (state == .Disabled) {
+//                control.background_disabled = fill!
+//            }
+//        }
+//        if textFill != nil {
+//            if state == .Norm {
+//                control.textColor = textFill!
+//            } else if (state == .Hov) {
+//                control.textColor_hov = textFill!
+//            } else if (state == .Act) {
+//                control.textColor_act = textFill!
+//            } else if (state == .Disabled) {
+//                control.textColor_disabled = textFill!
+//            }
+//        }
+//        if borderRadius != nil {
+//            if state == .Norm {
+//                control.cornerRadius =
+//                self.layer?.cornerRadius = borderRadius!.stringToCGFloat()
+//            } else if (state == .Hov) {
+//                control.cornerRadius_hov = Float(borderRadius!.stringToCGFloat())
+//            } else if (state == .Act) {
+//                control.cornerRadius_act = Float(borderRadius!.stringToCGFloat())
+//            } else if (state == .Disabled) {
+//                control.cornerRadius_disabled = Float(borderRadius!.stringToCGFloat())
+//            }
+//        }
+//        if borderWidth != nil {
+//            if state == .Norm {
+//                control.borderWidth = Float(borderWidth!.stringToCGFloat())
+//            } else if (state == .Hov) {
+//                control.borderWidth_hov = Float(borderWidth!.stringToCGFloat())
+//            } else if (state == .Act) {
+//                control.borderWidth_act = Float(borderWidth!.stringToCGFloat())
+//            } else if (state == .Disabled) {
+//                control.borderWidth_disabled = Float(borderWidth!.stringToCGFloat())
+//            }
+//        }
+//        if borderWidth != nil {
+//            if state == .Norm {
+//                control.borderColor = borderColor!
+//            } else if (state == .Hov) {
+//                control.borderColor_hov = borderColor!
+//            } else if (state == .Act) {
+//                control.borderColor_act = borderColor!
+//            } else if (state == .Disabled) {
+//                control.borderColor_disabled = borderColor!
+//            }
+//        }
+
+    }
+}

+ 0 - 1
PDF Office/PDF Office/Class/Home/ViewController/KMHomeViewController+Action.swift

@@ -412,7 +412,6 @@ extension KMHomeViewController {
             let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath())
             openOfficeFile(url: path)
         }
-
     }
     
     func openImageFile(url: URL) -> Void {

+ 61 - 55
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignBase.swift

@@ -9,66 +9,73 @@ import Cocoa
 
 class KMDesignBase: NSViewController {
     
-    var borderColor: NSColor = .clear// 边框颜色
-    var borderColor_hov: NSColor = .clear// 边框颜色
-    var borderColor_sel: NSColor = .clear// 边框颜色
-    var borderColor_focus: NSColor = .clear// 边框颜色
-    var borderColor_disabled: NSColor = .clear// 边框颜色
-    var borderColor_errordef: NSColor = .clear// 边框颜色
-    var borderColor_errorfocus: NSColor = .clear// 边框颜色
-    var cornerRadius: Float = 0.0// 边框圆角
-    var cornerRadius_hov: Float = 0.0// 边框圆角
-    var cornerRadius_sel: Float = 0.0// 边框圆角
-    var cornerRadius_focus: Float = 0.0// 边框圆角
-    var cornerRadius_disabled: Float = 0.0// 边框圆角
-    var cornerRadius_errordef: Float = 0.0// 边框圆角
-    var cornerRadius_errorfocus: Float = 0.0// 边框圆角
-    var borderWidth: Float = 1.0// 边框宽度
-    var borderWidth_hov: Float = 1.0// 边框宽度
-    var borderWidth_sel: Float = 1.0// 边框宽度
-    var borderWidth_focus: Float = 1.0// 边框宽度
-    var borderWidth_disabled: Float = 1.0// 边框宽度
-    var borderWidth_errordef: Float = 1.0// 边框宽度
-    var borderWidth_errorfocus: Float = 1.0// 边框宽度
-    var background: NSColor = .clear// 背景颜色
-    var background_hov: NSColor = .clear// 背景颜色
-    var background_sel: NSColor = .clear// 背景颜色
-    var background_focus: NSColor = .clear// 背景颜色
-    var background_disabled: NSColor = .clear// 背景颜色
-    var background_errordef: NSColor = .clear// 背景颜色
-    var background_errorfocus: NSColor = .clear// 背景颜色
-    var textColor: NSColor = .black // 内容颜色
-    var textColor_hov: NSColor = .black // 内容颜色
-    var textColor_sel: NSColor = .black // 内容颜色
-    var textColor_focus: NSColor = .black // 内容颜色
-    var textColor_disabled: NSColor = .black // 内容颜色
-    var textColor_errordef: NSColor = .black // 内容颜色
-    var textColor_errorfocus: NSColor = .black // 内容颜色
-    var lineHeight: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_hov: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_sel: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_focus: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_disabled: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_errordef: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_errorfocus: CGFloat = 20.0 // 默认 内容行高
-    var font: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_hov: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_sel: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_focus: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_disabled: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_errordef: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_errorfocus: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var borderColor             : NSColor = .clear // 边框颜色
+    var borderColor_hov         : NSColor = .clear // 边框颜色
+    var borderColor_sel         : NSColor = .clear // 边框颜色
+    var background_act          : NSColor = .clear // 背景颜色
+    var borderColor_focus       : NSColor = .clear // 边框颜色
+    var borderColor_act         : NSColor = .clear // 边框颜色
+    var borderColor_disabled    : NSColor = .clear // 边框颜色
+    var borderColor_errordef    : NSColor = .clear // 边框颜色
+    var borderColor_errorfocus  : NSColor = .clear // 边框颜色
+    var cornerRadius            : Float = 0.0 // 边框圆角
+    var cornerRadius_hov        : Float = 0.0 // 边框圆角
+    var cornerRadius_sel        : Float = 0.0 // 边框圆角
+    var cornerRadius_act        : Float = 0.0 // 边框圆角
+    var cornerRadius_focus      : Float = 0.0 // 边框圆角
+    var cornerRadius_disabled   : Float = 0.0 // 边框圆角
+    var cornerRadius_errordef   : Float = 0.0 // 边框圆角
+    var cornerRadius_errorfocus : Float = 0.0 // 边框圆角
+    var borderWidth             : Float = 1.0 // 边框宽度
+    var borderWidth_hov         : Float = 1.0 // 边框宽度
+    var borderWidth_sel         : Float = 1.0 // 边框宽度
+    var borderWidth_act         : Float = 1.0 // 边框宽度
+    var borderWidth_focus       : Float = 1.0 // 边框宽度
+    var borderWidth_disabled    : Float = 1.0 // 边框宽度
+    var borderWidth_errordef    : Float = 1.0 // 边框宽度
+    var borderWidth_errorfocus  : Float = 1.0 // 边框宽度
+    var background              : NSColor = .clear // 背景颜色
+    var background_hov          : NSColor = .clear // 背景颜色
+    var background_sel          : NSColor = .clear // 背景颜色
+    var background_focus        : NSColor = .clear // 背景颜色
+    var background_disabled     : NSColor = .clear // 背景颜色
+    var background_errordef     : NSColor = .clear // 背景颜色
+    var background_errorfocus   : NSColor = .clear // 背景颜色
+    var textColor               : NSColor = .black // 内容颜色
+    var textColor_hov           : NSColor = .black // 内容颜色
+    var textColor_sel           : NSColor = .black // 内容颜色
+    var textColor_act           : NSColor = .black // 内容颜色
+    var textColor_focus         : NSColor = .black // 内容颜色
+    var textColor_disabled      : NSColor = .black // 内容颜色
+    var textColor_errordef      : NSColor = .black // 内容颜色
+    var textColor_errorfocus    : NSColor = .black // 内容颜色
+    var lineHeight              : CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_hov          : CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_sel          : CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_act          : CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_focus        : CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_disabled     : CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_errordef     : CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_errorfocus   : CGFloat = 20.0 // 默认 内容行高
+    var font            : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_hov        : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_sel        : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_act        : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_focus      : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_disabled   : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_errordef   : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_errorfocus : NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
     
     var stringValue: String = ""// 内容
-    var toolTip: String = "" // 提示文字
+    var _toolTip: String = "" // 提示文字
 
     // button 通用属性
-    var action: Selector?   // 点击事件
-    var target: AnyObject? // 对象目标
-    var enabled: Bool = true // 是否可点击
+    var _action: Selector?   // 点击事件
+    var _target: AnyObject? // 对象目标
+    var _enabled: Bool = true // 是否可点击
     var _state: KMDesignTokenState = .Norm
     var canHover: Bool = true // 是否可悬浮
-    var isHidden: Bool = false // 是否隐藏
+    var _isHidden: Bool = false // 是否隐藏
     var editable: Bool = false //是否允许编辑
 
     var buttonType: DesignButtonType = .Text
@@ -77,5 +84,4 @@ class KMDesignBase: NSViewController {
         super.viewDidLoad()
         // Do view setup here.
     }
-    
 }

+ 71 - 70
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignButton.swift

@@ -14,7 +14,7 @@ import Cocoa
     case PopUpButton
 }
 
-class KMDesignButton: NSViewController {
+class KMDesignButton: KMDesignBase {
     
     @IBOutlet weak var mainBox: NSBox!
     @IBOutlet weak var button   : NSButton!
@@ -72,48 +72,7 @@ class KMDesignButton: NSViewController {
     var textImage_paddingSpacing: Float = 16.0
     var textImage_itemSpacing: Float = 8.0
 
-    var textColor: NSColor = .black // 内容颜色
-    var textColor_hov: NSColor = .black // 内容颜色
-    var textColor_act: NSColor = .black // 内容颜色
-    var textColor_disabled: NSColor = .black // 内容颜色
-    var background: NSColor = .clear// 背景颜色
-    var background_hov: NSColor = .clear// 背景颜色
-    var background_act: NSColor = .clear// 背景颜色
-    var background_disabled: NSColor = .clear// 背景颜色
-    var borderWidth: Float = 1.0// 边框宽度
-    var borderWidth_hov: Float = 1.0// 边框宽度
-    var borderWidth_act: Float = 1.0// 边框宽度
-    var borderWidth_disabled: Float = 1.0// 边框宽度
-    var borderColor: NSColor = .clear// 边框颜色
-    var borderColor_hov: NSColor = .clear// 边框颜色
-    var borderColor_act: NSColor = .clear// 边框颜色
-    var borderColor_disabled: NSColor = .clear// 边框颜色
-    var cornerRadius: Float = 0.0// 边框圆角
-    var cornerRadius_hov: Float = 0.0// 边框圆角
-    var cornerRadius_act: Float = 0.0// 边框圆角
-    var cornerRadius_disabled: Float = 0.0// 边框圆角
-    var lineHeight: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_hov: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_act: CGFloat = 20.0 // 默认 内容行高
-    var lineHeight_disabled: CGFloat = 20.0 // 默认 内容行高
-    var font: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_hov: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_act: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-    var font_disabled: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
-
-    var stringValue: String = ""// 内容
-    var toolTip: String = "" // 提示文字
-
     // button 通用属性
-    var action: Selector?   // 点击事件
-    var target: AnyObject? // 对象目标
-    var enabled: Bool = true // 是否可点击
-    var state: KMDesignTokenState = .Norm
-    var canHover: Bool = true // 是否可悬浮
-    var isHidden: Bool = false // 是否隐藏
-    var editable: Bool = false //是否允许编辑
-
-    var buttonType: DesignButtonType = .Text
     var textImage_type: KMTextImageButtonType = .Left
     var textImage_state: KMDesignTokenState = .Norm
     
@@ -183,6 +142,60 @@ class KMDesignButton: NSViewController {
     }
     
     // MARK: Get、Set
+    
+    var action: Selector {
+        get {
+            return _action!
+        }
+        set {
+            _action = newValue
+            if _action != nil {
+                button.action = _action
+            }
+        }
+    }
+    
+    var target: AnyObject {
+        get {
+            return _target!
+        }
+        set {
+            _target = newValue
+            if _target != nil {
+                button.target = _target
+            }
+        }
+    }
+    
+    var state: KMDesignTokenState {
+        get {
+            return _state
+        }
+        set {
+            _state = newValue
+            updateUI()
+        }
+    }
+    
+    var enabled: Bool {
+        get {
+            return _enabled
+        }
+        set {
+            _enabled = newValue
+            self.view.isHidden = _enabled
+        }
+    }
+    
+    var isHidden: Bool {
+        get {
+            return _isHidden
+        }
+        set {
+            _isHidden = newValue
+            button.isEnabled = _enabled
+        }
+    }
 
     var image: NSImage {
         get {
@@ -207,6 +220,18 @@ class KMDesignButton: NSViewController {
         }
     }
     
+    var toolTip: String {
+        get {
+            return _toolTip
+        }
+        set {
+            _toolTip = newValue
+            if _toolTip != "" {
+                button.toolTip = _toolTip
+            }
+        }
+    }
+    
     // MARK: Private Methods
 
     func updateUI() -> Void {
@@ -245,16 +270,7 @@ class KMDesignButton: NSViewController {
                 textButtonlabel.font = font_disabled
                 paragraphStyle.lineSpacing = lineHeight_disabled
             }
-            if action != nil {
-                button.action = action
-                button.target = target
-            }
-            button.isEnabled = enabled
             textButtonlabel.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
-            if toolTip != "" {
-                button.toolTip = toolTip
-            }
-            self.view.isHidden = isHidden
         } else if (buttonType == .Image) {
             if (state == .Norm) {
                 imageButtonBox.fillColor = background
@@ -277,37 +293,25 @@ class KMDesignButton: NSViewController {
                 imageButtonBox.borderColor = borderColor_disabled
                 imageButtonBox.cornerRadius = CGFloat(cornerRadius_disabled)
             }
-            button.action = action
-            button.target = target
-            button.isEnabled = enabled
-            if toolTip != "" {
-                button.toolTip = toolTip
-            }
-            self.view.isHidden = isHidden
         }  else if (buttonType == .TextImage) {
             let paragraphStyle = NSMutableParagraphStyle()
             if textImage_type == .Up {
                 textImageButtonBox.contentView = textImage_upView
                 textImage_upTextfield.isEditable = editable
-                textImage_upTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_upTextfield.font = font
             } else if textImage_type == .Left {
                 textImageButtonBox.contentView = textImage_leftView
                 textImage_leftTextfield.isEditable = editable
-                textImage_leftTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_leftTextfield.font = font
             } else if textImage_type == .Down {
                 textImageButtonBox.contentView = textImage_downView
                 textImage_downTextfield.isEditable = editable
-                textImage_downTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_downTextfield.font = font
             } else if textImage_type == .Right {
                 textImageButtonBox.contentView = textImage_rightView
                 textImage_rightTextfield.isEditable = editable
-                textImage_rightTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_rightTextfield.font = font
             }
-            button.isEnabled = enabled
             
             if textImage_state == .Norm {
                 textImageButtonBox.fillColor = background
@@ -386,13 +390,6 @@ class KMDesignButton: NSViewController {
                 textImageButtonBox.cornerRadius = CGFloat(cornerRadius_disabled)
                 paragraphStyle.lineSpacing = lineHeight_disabled
             }
-            button.target = target
-            button.action = action
-            button.isEnabled = enabled
-            if toolTip != "" {
-                button.toolTip = toolTip
-            }
-            self.view.isHidden = isHidden
             
             textImage_upImageHeight.constant = CGFloat(textImage_imageHeight)
             textImage_upImageWidth.constant = CGFloat(textImage_imageWidth)
@@ -404,15 +401,19 @@ class KMDesignButton: NSViewController {
             textImage_rightImageWidth.constant = CGFloat(textImage_imageWidth)
             
             if textImage_type == .Up {
+                textImage_upTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_upPadding_spacing.constant = CGFloat(textImage_paddingSpacing)
                 textImage_upItem_spacing.constant = CGFloat(textImage_itemSpacing)
             } else if textImage_type == .Left {
+                textImage_leftTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_leftPadding_spacing.constant = CGFloat(textImage_paddingSpacing)
                 textImage_leftItem_spacing.constant = CGFloat(textImage_itemSpacing)
             } else if textImage_type == .Down {
+                textImage_downTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_downPadding_spacing.constant = CGFloat(textImage_paddingSpacing)
                 textImage_downItem_spacing.constant = CGFloat(textImage_itemSpacing)
             } else if textImage_type == .Right {
+                textImage_rightTextfield.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
                 textImage_rightPadding_spacing.constant = CGFloat(textImage_paddingSpacing)
                 textImage_rightItem_spacing.constant = CGFloat(textImage_itemSpacing)
             }

+ 23 - 3
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignPropertySelector.swift

@@ -138,6 +138,29 @@ class KMDesignPropertySelector: KMDesignBase {
         }
     }
 
+    var action: Selector {
+        get {
+            return _action!
+        }
+        set {
+            _action = newValue
+            if _action != nil {
+                button.action = _action
+            }
+        }
+    }
+    
+    var target: AnyObject {
+        get {
+            return _target!
+        }
+        set {
+            _target = newValue
+            if _target != nil {
+                button.target = _target
+            }
+        }
+    }
     
     // MARK: Private Methods
 
@@ -158,8 +181,5 @@ class KMDesignPropertySelector: KMDesignBase {
             self.mainBox.borderColor = self.borderColor_sel
             self.icon.image = self.image_sel
         }
-        
-        button.target = target
-        button.action = action
     }
 }

+ 1 - 0
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignSelect.swift

@@ -288,6 +288,7 @@ class KMSelectCell: NSTextFieldCell {
             _indexOfSelectedItem = newValue
         }
     }
+    
     var numberOfItems: Int {
         get {
             return items.count

+ 28 - 21
PDF Office/PDF Office/Class/PDFTools/Convert/Controller/KMConvertBaseWindowController.swift

@@ -148,8 +148,10 @@ class KMConvertBaseWindowController: NSWindowController {
     @IBOutlet weak var rightScrollView: NSScrollView!
     
     @IBOutlet weak var batchButton: NSButton!
-    @IBOutlet weak var canelButton: NSButton!
-    @IBOutlet weak var convertButton: NSButton!
+    @IBOutlet weak var canelBox: NSBox!
+    @IBOutlet weak var convertBox: NSBox!
+    var canelButtonVC: KMDesignButton!
+    var convertButtonVC: KMDesignButton!
     
     var itemClick: KMConvertBaseWindowControllerItemClick!
     
@@ -184,6 +186,10 @@ class KMConvertBaseWindowController: NSWindowController {
         super.windowDidLoad()
         self.window?.appearance = NSAppearance(named: .aqua)
         
+        canelButtonVC = KMDesignButton.init(withType: .Text)
+        convertButtonVC = KMDesignButton.init(withType: .Text)
+        
+        
         if documentModel != nil {
             self.prePDFView.document = CPDFDocument(url: documentModel.documentURL)
             if (documentModel.owerPassword.isEmpty == false) {
@@ -237,20 +243,27 @@ class KMConvertBaseWindowController: NSWindowController {
         batchButton.action = #selector(batchButtonAction)
         batchButton.isHidden = true
         
-        canelButton.title = NSLocalizedString("Cancel", comment: "")
-        canelButton.isBordered = false
-        canelButton.wantsLayer = true
-        canelButton.layer?.borderWidth = 1
-        canelButton.layer?.cornerRadius = 4
-        canelButton.target = self
-        canelButton.action = #selector(cancelButtonAction)
+        canelBox.fillColor = .clear
+        canelBox.contentView = canelButtonVC.view
+        canelButtonVC.target = self
+        canelButtonVC.action = #selector(cancelButtonAction)
+        canelButtonVC.stringValue = NSLocalizedString("Cancel", comment: "")
+        canelButtonVC.button(bg: "btn.sec.m.bg.norm", text: "btn.sec.m.mac-text.def")
+        canelButtonVC.button(bg: "btn.sec.m.bg.hov", text: "btn.sec.m.mac-text.def", state: .Hov)
+        canelButtonVC.button(bg: "btn.sec.m.bg.act", text: "btn.sec.m.mac-text.def", state: .Act)
+        canelButtonVC.button(bg: "btn.sec.m.bg.dis", text: "btn.sec.m.mac-text.dis", state: .Disabled)
+
         
-        convertButton.title = NSLocalizedString("Convert", comment: "")
-        convertButton.isBordered = false
-        convertButton.wantsLayer = true
-        convertButton.layer?.cornerRadius = 4
-        convertButton.target = self
-        convertButton.action = #selector(convertButtonAction)
+        convertBox.fillColor = .clear
+        convertBox.contentView = convertButtonVC.view
+        convertButtonVC.target = self
+        convertButtonVC.action = #selector(convertButtonAction)
+        convertButtonVC.stringValue = NSLocalizedString("Convert", comment: "")
+        convertButtonVC.button(bg: "btn.cta.m.bg.norm", text: "btn.cta.m.mac-text.def")
+        convertButtonVC.button(bg: "btn.cta.m.bg.hov", text: "btn.cta.m.mac-text.def", state: .Hov)
+        convertButtonVC.button(bg: "btn.cta.m.bg.act", text: "btn.cta.m.mac-text.def", state: .Act)
+        convertButtonVC.button(bg: "btn.cta.m.bg.dis", text: "btn.cta.m.mac-text.dis", state: .Disabled)
+
         
         self.rightScrollView.hasVerticalScroller = false
         self.rightScrollView.hasHorizontalScroller = false
@@ -277,12 +290,6 @@ class KMConvertBaseWindowController: NSWindowController {
         self.batchButton.setTitleColor(NSColor.buttonTitleColor())
         self.batchButton.layer?.borderColor = NSColor.buttonBorderColor().cgColor
         self.batchButton.font = .SFProTextRegular(14)
-        self.canelButton.setTitleColor(NSColor.buttonTitleColor())
-        self.canelButton.layer?.borderColor = NSColor.buttonBorderColor().cgColor
-        self.canelButton.font = .SFProTextRegular(14)
-        self.convertButton.setTitleColor(NSColor.white)
-        self.convertButton.font = .SFProTextRegular(14)
-        self.convertButton.layer?.backgroundColor = NSColor.buttonFunctionBackgroundColor().cgColor
     }
     
     @objc func backButtonAction() {

+ 32 - 33
PDF Office/PDF Office/Class/PDFTools/Convert/Controller/KMConvertBaseWindowController.xib

@@ -10,8 +10,8 @@
             <connections>
                 <outlet property="backButton" destination="wfc-7P-VL5" id="zYP-No-aYH"/>
                 <outlet property="batchButton" destination="iFO-Ki-C0L" id="KTA-dQ-WkN"/>
-                <outlet property="canelButton" destination="fKN-oU-IA4" id="PL6-X6-opR"/>
-                <outlet property="convertButton" destination="8yP-tY-qS1" id="dks-Ke-UYx"/>
+                <outlet property="canelBox" destination="Xgn-Dg-lq9" id="GtX-Me-dDU"/>
+                <outlet property="convertBox" destination="VGF-cR-pdk" id="hgN-0M-UF8"/>
                 <outlet property="leftBox" destination="qfL-fo-qSf" id="JS9-Y0-9cC"/>
                 <outlet property="nextButton" destination="Ogb-fd-PNY" id="jYC-xI-iQa"/>
                 <outlet property="numberBox" destination="XyN-M5-Ckr" id="DNm-ND-XlE"/>
@@ -30,7 +30,7 @@
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="586" height="483"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="3008" height="1667"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
             <value key="minSize" type="size" width="586" height="483"/>
             <value key="maxSize" type="size" width="586" height="483"/>
             <view key="contentView" id="se5-gp-TjO">
@@ -210,42 +210,41 @@
                                         <font key="font" metaFont="system"/>
                                     </buttonCell>
                                 </button>
-                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fKN-oU-IA4">
-                                    <rect key="frame" x="395" y="16" width="80" height="32"/>
+                                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Xgn-Dg-lq9">
+                                    <rect key="frame" x="394" y="16" width="80" height="32"/>
+                                    <view key="contentView" id="RWN-Pg-Jmx">
+                                        <rect key="frame" x="0.0" y="0.0" width="80" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                    </view>
                                     <constraints>
-                                        <constraint firstAttribute="height" constant="32" id="Prv-Rf-K0I"/>
-                                        <constraint firstAttribute="width" constant="80" id="vsU-Rm-nB3"/>
+                                        <constraint firstAttribute="height" constant="32" id="Uzh-LG-qSz"/>
+                                        <constraint firstAttribute="width" constant="80" id="mOr-gZ-0ME"/>
                                     </constraints>
-                                    <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="YE4-KT-vVV">
-                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                        <font key="font" metaFont="system"/>
-                                        <string key="keyEquivalent" base64-UTF8="YES">
-Gw
-</string>
-                                    </buttonCell>
-                                </button>
-                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8yP-tY-qS1">
-                                    <rect key="frame" x="491" y="16" width="80" height="32"/>
+                                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </box>
+                                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="VGF-cR-pdk">
+                                    <rect key="frame" x="490" y="16" width="80" height="32"/>
+                                    <view key="contentView" id="FtW-J0-ZXh">
+                                        <rect key="frame" x="0.0" y="0.0" width="80" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                    </view>
                                     <constraints>
-                                        <constraint firstAttribute="height" constant="32" id="Et7-Ji-cad"/>
-                                        <constraint firstAttribute="width" constant="80" id="mKg-4c-4hq"/>
+                                        <constraint firstAttribute="height" constant="32" id="4cH-RP-idM"/>
+                                        <constraint firstAttribute="width" constant="80" id="vE5-JR-3tQ"/>
                                     </constraints>
-                                    <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="CRK-Jz-kwE">
-                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                        <font key="font" metaFont="system"/>
-                                    </buttonCell>
-                                </button>
+                                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </box>
                             </subviews>
                             <constraints>
+                                <constraint firstAttribute="bottom" secondItem="VGF-cR-pdk" secondAttribute="bottom" constant="16" id="5qw-4R-evS"/>
+                                <constraint firstAttribute="trailing" secondItem="VGF-cR-pdk" secondAttribute="trailing" constant="16" id="8zP-Ui-09y"/>
                                 <constraint firstItem="iFO-Ki-C0L" firstAttribute="leading" secondItem="5Iw-u0-5Gt" secondAttribute="leading" constant="16" id="BCf-YA-LeB"/>
                                 <constraint firstItem="lF5-Ex-sTg" firstAttribute="leading" secondItem="5Iw-u0-5Gt" secondAttribute="leading" id="BUF-0L-5Md"/>
                                 <constraint firstAttribute="trailing" secondItem="lF5-Ex-sTg" secondAttribute="trailing" id="EMG-1f-iRc"/>
-                                <constraint firstAttribute="bottom" secondItem="8yP-tY-qS1" secondAttribute="bottom" constant="16" id="QH6-T1-jmX"/>
+                                <constraint firstItem="VGF-cR-pdk" firstAttribute="leading" secondItem="Xgn-Dg-lq9" secondAttribute="trailing" constant="16" id="Hy6-cd-dD1"/>
                                 <constraint firstItem="lF5-Ex-sTg" firstAttribute="top" secondItem="5Iw-u0-5Gt" secondAttribute="top" id="YDe-a0-Xtc"/>
                                 <constraint firstAttribute="bottom" secondItem="iFO-Ki-C0L" secondAttribute="bottom" constant="16" id="cnC-Ei-DUg"/>
-                                <constraint firstAttribute="bottom" secondItem="fKN-oU-IA4" secondAttribute="bottom" constant="16" id="ibp-oq-K1P"/>
-                                <constraint firstItem="8yP-tY-qS1" firstAttribute="leading" secondItem="fKN-oU-IA4" secondAttribute="trailing" constant="16" id="paj-Yp-N0k"/>
-                                <constraint firstAttribute="trailing" secondItem="8yP-tY-qS1" secondAttribute="trailing" constant="15" id="ujw-8W-ixI"/>
+                                <constraint firstAttribute="bottom" secondItem="Xgn-Dg-lq9" secondAttribute="bottom" constant="16" id="r1d-jT-Xij"/>
                             </constraints>
                         </view>
                         <constraints>
@@ -271,7 +270,7 @@ Gw
             <connections>
                 <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
             </connections>
-            <point key="canvasLocation" x="13" y="101"/>
+            <point key="canvasLocation" x="13" y="100.5"/>
         </window>
         <customView id="LzC-nd-jo2" customClass="KMConvertWordSettingView" customModule="PDF_Office" customModuleProvider="target">
             <rect key="frame" x="0.0" y="0.0" width="276" height="250"/>
@@ -380,7 +379,7 @@ Gw
                     </buttonCell>
                 </button>
                 <comboBox verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yE5-BA-JsU">
-                    <rect key="frame" x="24" y="14" width="233" height="25"/>
+                    <rect key="frame" x="23" y="15" width="234" height="23"/>
                     <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="X84-Gf-tPc">
                         <font key="font" metaFont="system"/>
                         <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -466,7 +465,7 @@ Gw
                                 </textFieldCell>
                             </textField>
                             <comboBox hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="A3v-M6-Ruh">
-                                <rect key="frame" x="24" y="50" width="215" height="25"/>
+                                <rect key="frame" x="23" y="51" width="216" height="23"/>
                                 <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="KT9-cv-uGO">
                                     <font key="font" metaFont="system"/>
                                     <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -479,7 +478,7 @@ Gw
                                 </comboBoxCell>
                             </comboBox>
                             <comboBox verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yhD-91-oLg">
-                                <rect key="frame" x="24" y="13" width="215" height="25"/>
+                                <rect key="frame" x="23" y="13" width="216" height="23"/>
                                 <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="TKk-wg-Ocx">
                                     <font key="font" metaFont="system"/>
                                     <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -574,7 +573,7 @@ Gw
                                 </buttonCell>
                             </button>
                             <comboBox verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uah-L1-IyT">
-                                <rect key="frame" x="32" y="-14" width="214" height="25"/>
+                                <rect key="frame" x="31" y="-13" width="215" height="23"/>
                                 <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="X1R-ss-GZO">
                                     <font key="font" metaFont="system"/>
                                     <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>