diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3ab9676..bd626d1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
# Changelog
=======
+### 1.0b16
+Bugfix:
+- Fix on heads extension.
+- Fix on emoji extension.
+- Fix for exporting a source color scheme as a CSS style.
+
### 1.0b15
New features:
- Option to export the generated preview to an HTML file in the main application.
diff --git a/QLExtension/Info.plist b/QLExtension/Info.plist
index c58793f..25b9743 100644
--- a/QLExtension/Info.plist
+++ b/QLExtension/Info.plist
@@ -5,7 +5,7 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
- QLExtension
+ QLMarkdown Preview Extension
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
diff --git a/QLMarkdown.xcodeproj/project.pbxproj b/QLMarkdown.xcodeproj/project.pbxproj
index 838e3fd..ed44849 100644
--- a/QLMarkdown.xcodeproj/project.pbxproj
+++ b/QLMarkdown.xcodeproj/project.pbxproj
@@ -134,7 +134,6 @@
83E7FEF1258FBF37003ECF9B /* highlight in Resources */ = {isa = PBXBuildFile; fileRef = 83E7FEF0258FBF37003ECF9B /* highlight */; };
83EF951D2585367500B56FA3 /* NSColor+ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83EF951C2585367500B56FA3 /* NSColor+ext.swift */; };
83EF95232585476800B56FA3 /* emoji.c in Sources */ = {isa = PBXBuildFile; fileRef = 83EF95222585476800B56FA3 /* emoji.c */; };
- 83F1FE4C259CEE7400257DAC /* external-launcher.xpc in Embed XPC Services */ = {isa = PBXBuildFile; fileRef = 83F1FE41259CEE7400257DAC /* external-launcher.xpc */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
83F1FE53259CEEC900257DAC /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F1FE52259CEEC900257DAC /* main.swift */; };
83F1FE57259CEF0100257DAC /* external_launcherProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F1FE56259CEF0100257DAC /* external_launcherProtocol.swift */; };
83F1FE5B259CEF4300257DAC /* external_launcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F1FE5A259CEF4300257DAC /* external_launcher.swift */; };
@@ -177,13 +176,6 @@
remoteGlobalIDString = 836B3007259E222600A6A5F7;
remoteInfo = "highlight-wrapper";
};
- 83F1FE4A259CEE7400257DAC /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 83598E5925818808004664D3 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 83F1FE40259CEE7400257DAC;
- remoteInfo = "external-launcher";
- };
83F1FE6C259CF02900257DAC /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83598E5925818808004664D3 /* Project object */;
@@ -233,7 +225,6 @@
dstPath = "$(CONTENTS_FOLDER_PATH)/XPCServices";
dstSubfolderSpec = 16;
files = (
- 83F1FE4C259CEE7400257DAC /* external-launcher.xpc in Embed XPC Services */,
83F882412598A8C4008C5071 /* org.sparkle-project.InstallerStatus.xpc in Embed XPC Services */,
83F8823F2598A8C2008C5071 /* org.sparkle-project.InstallerLauncher.xpc in Embed XPC Services */,
83F8823D2598A8C0008C5071 /* org.sparkle-project.InstallerConnection.xpc in Embed XPC Services */,
@@ -529,19 +520,19 @@
83598E6D2581880A004664D3 /* Info.plist */,
83598E6E2581880A004664D3 /* QLMarkdown.entitlements */,
83598E7925818839004664D3 /* QLMarkdown-Bridging-Header.h */,
- 8357EB762587DBDE002C2C45 /* Themes */,
83598E6425818808004664D3 /* AppDelegate.swift */,
83598E6625818808004664D3 /* ViewController.swift */,
83598E6A2581880A004664D3 /* Main.storyboard */,
- 836B747C259E2D7B00A6A5F7 /* AboutViewController.swift */,
83598E682581880A004664D3 /* Assets.xcassets */,
- 83EF951C2585367500B56FA3 /* NSColor+ext.swift */,
- 8357EB7E2588262C002C2C45 /* String+ext.swift */,
+ 8357EB762587DBDE002C2C45 /* Themes */,
+ 836B747C259E2D7B00A6A5F7 /* AboutViewController.swift */,
83598EF92582098A004664D3 /* test1.md */,
83598EFA258209C7004664D3 /* test2.md */,
837D20D5258362A5008FC698 /* example.jpg */,
83F4B99125868A7400FC58A7 /* Settings.swift */,
83327D452595E15700E76CF6 /* Settings+ext.swift */,
+ 8357EB7E2588262C002C2C45 /* String+ext.swift */,
+ 83EF951C2585367500B56FA3 /* NSColor+ext.swift */,
834CAB89259167B800673002 /* examples */,
);
path = QLMarkdown;
@@ -767,7 +758,6 @@
dependencies = (
836B7472259E23DB00A6A5F7 /* PBXTargetDependency */,
831A8C4B258ABADA00E36182 /* PBXTargetDependency */,
- 83F1FE4B259CEE7400257DAC /* PBXTargetDependency */,
);
name = QLMarkdown;
productName = QLMarkdown;
@@ -1035,11 +1025,6 @@
name = "highlight-wrapper";
targetProxy = 836B7478259E2BA400A6A5F7 /* PBXContainerItemProxy */;
};
- 83F1FE4B259CEE7400257DAC /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 83F1FE40259CEE7400257DAC /* external-launcher */;
- targetProxy = 83F1FE4A259CEE7400257DAC /* PBXContainerItemProxy */;
- };
83F1FE6D259CF02900257DAC /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 83F1FE40259CEE7400257DAC /* external-launcher */;
@@ -1074,7 +1059,7 @@
CODE_SIGN_ENTITLEMENTS = QLExtension/QLExtension.entitlements;
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = 15;
+ CURRENT_PROJECT_VERSION = 16;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
HEADER_SEARCH_PATHS = (
@@ -1110,7 +1095,7 @@
CODE_SIGN_ENTITLEMENTS = QLExtension/QLExtension.entitlements;
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = 15;
+ CURRENT_PROJECT_VERSION = 16;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
HEADER_SEARCH_PATHS = (
@@ -1265,7 +1250,7 @@
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 15;
+ CURRENT_PROJECT_VERSION = 16;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -1310,7 +1295,7 @@
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 15;
+ CURRENT_PROJECT_VERSION = 16;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = NO;
FRAMEWORK_SEARCH_PATHS = (
diff --git a/QLMarkdown/Base.lproj/Main.storyboard b/QLMarkdown/Base.lproj/Main.storyboard
index a3bebaa..c2a197b 100644
--- a/QLMarkdown/Base.lproj/Main.storyboard
+++ b/QLMarkdown/Base.lproj/Main.storyboard
@@ -2069,7 +2069,7 @@ Gw
-
+
@@ -2087,7 +2087,7 @@ Gw
-
+
@@ -2184,7 +2184,7 @@ Gw
-
+
diff --git a/QLMarkdown/Themes/SaveAsFormatView.xib b/QLMarkdown/Themes/SaveAsFormatView.xib
index 2587f09..1e0e50b 100644
--- a/QLMarkdown/Themes/SaveAsFormatView.xib
+++ b/QLMarkdown/Themes/SaveAsFormatView.xib
@@ -34,7 +34,7 @@
diff --git a/QLMarkdown/Themes/Theme.swift b/QLMarkdown/Themes/Theme.swift
index bf5c137..f8639d6 100644
--- a/QLMarkdown/Themes/Theme.swift
+++ b/QLMarkdown/Themes/Theme.swift
@@ -87,7 +87,7 @@ import Cocoa
}
class PropertyStyle {
- enum Name: String {
+ enum Attribute: String {
case italic = "italic"
case bold = "bold"
case underline = "underline"
@@ -117,7 +117,7 @@ import Cocoa
self.init(color: color, italic: italic, bold: bold, underline: underline)
}
- func getCSSStyle(withColor: Bool = true) -> String {
+ func getCSSStyle() -> String {
var style = ""
if let italic = self.italic {
style += "font-style: \(italic ? "italic" : "normal"); "
@@ -128,14 +128,14 @@ import Cocoa
if let underline = self.underline {
style += "text-decoration: \(underline ? "underline" : "none"); "
}
- if withColor, let color = self.color {
+ if let color = self.color {
style += "color: \(color); "
}
return style
}
- subscript(name: Name)->AnyHashable? {
+ subscript(name: Attribute)->AnyHashable? {
get {
switch name {
case .bold:
@@ -323,20 +323,18 @@ import Cocoa
self.keywords = []
}
- func getHtmlExample() -> String {
+
+ func getCSSStyle() -> String {
let formatPropertyCss = { (name: PropertyName, property: PropertyStyle) -> String in
- var css = "." + name.cssClass.joined(separator: ".") + " {"
+ var css = "." + name.cssClass.joined(separator: ".") + " {\n"
if name == .canvas {
- css += "background-color: \(property.color ?? "#ffffff");"
+ css += " background-color: \(property.color ?? "#ffffff");\n"
} else {
css += property.getCSSStyle()
}
css += "}\n"
return css
}
- let formatProperty = { (name: PropertyName, property: PropertyStyle) -> String in
- return "\(name.name)
\n"
- }
var css = ""
@@ -363,6 +361,16 @@ import Cocoa
css += formatPropertyCss(.keyword(index: i), keyword)
}
+ return css
+ }
+
+ func getHtmlExample() -> String {
+ let formatProperty = { (name: PropertyName, property: PropertyStyle) -> String in
+ return "\(name.name)
\n"
+ }
+
+ let css = self.getCSSStyle()
+
var s = """
diff --git a/QLMarkdown/Themes/ThemeTableView.swift b/QLMarkdown/Themes/ThemeTableView.swift
index ec49592..eb03672 100644
--- a/QLMarkdown/Themes/ThemeTableView.swift
+++ b/QLMarkdown/Themes/ThemeTableView.swift
@@ -176,7 +176,12 @@ class ThemeTableView: NSView {
return
}
do {
- try theme.write(toFile: url.path)
+ if url.pathExtension == "css" {
+ let css = theme.getCSSStyle()
+ try css.write(toFile: url.path, atomically: true, encoding: .utf8)
+ } else {
+ try theme.write(toFile: url.path)
+ }
} catch {
let alert = NSAlert()
alert.alertStyle = .critical
diff --git a/QLMarkdown/Themes/ThemeTableView.xib b/QLMarkdown/Themes/ThemeTableView.xib
index 5e60d91..a97630a 100644
--- a/QLMarkdown/Themes/ThemeTableView.xib
+++ b/QLMarkdown/Themes/ThemeTableView.xib
@@ -20,22 +20,22 @@
-
+
-
+
-
-
+
+
-
+
@@ -43,8 +43,8 @@
-
-
+
+
@@ -76,18 +76,18 @@
-
+
-
-
+
+
-
+
@@ -105,16 +105,16 @@
-
+
-
+
-
+
-
+
@@ -500,7 +500,7 @@
-
+
diff --git a/QLMarkdown/ViewController.swift b/QLMarkdown/ViewController.swift
index aa4db00..6f57e5d 100644
--- a/QLMarkdown/ViewController.swift
+++ b/QLMarkdown/ViewController.swift
@@ -337,7 +337,6 @@ class ViewController: NSViewController {
didSet {
if oldValue != isDirty {
self.view.window?.isDocumentEdited = isDirty
- saveButton?.isEnabled = isDirty
}
if isDirty && autoRefresh && isLoaded && pauseAutoRefresh == 0 {
self.refresh(self)
@@ -360,14 +359,12 @@ class ViewController: NSViewController {
@IBOutlet weak var tabView: NSTabView!
@IBOutlet weak var tabViewLeftConstraint: NSLayoutConstraint!
- @IBOutlet weak var tabViewBottomConstraint: NSLayoutConstraint!
@IBOutlet weak var webView: WKWebView!
@IBOutlet weak var textView: NSTextView!
@IBOutlet weak var stylesPopup: NSPopUpButton!
@IBOutlet weak var styleExtendPopup: NSPopUpButton!
- @IBOutlet weak var styleRevealMenu: NSMenuItem!
@IBOutlet weak var highlightBackground: NSPopUpButton!
@IBOutlet weak var sourceBackgroundLabel: NSTextField!
@@ -389,11 +386,9 @@ class ViewController: NSViewController {
@IBOutlet weak var strikethroughPopupButton: NSPopUpButton!
@IBOutlet weak var emojiPopupButton: NSPopUpButton!
@IBOutlet weak var unsafeButton: NSButton!
- @IBOutlet weak var versionLabel: NSTextField!
@IBOutlet weak var advancedButton: NSButton!
@IBOutlet weak var progressIndicator: NSProgressIndicator!
- @IBOutlet weak var saveButton: NSButton!
@IBOutlet weak var inlineLinkPopup: NSPopUpButton!
@IBOutlet weak var appearanceButton: NSButton!
@@ -789,7 +784,6 @@ document.addEventListener('scroll', function(e) {
tabView.tabViewType = isAdvancedSettingsHidden ? .noTabsNoBorder : .topTabsBezelBorder
tabView.selectTabViewItem(at: isAdvancedSettingsHidden ? 0 : 1)
tabViewLeftConstraint.constant = isAdvancedSettingsHidden ? 0 : 20
- tabViewBottomConstraint?.constant = isAdvancedSettingsHidden ? 0 : 20
advancedButton.title = isAdvancedSettingsHidden ? "Show advanced options" : "Show only basic options"
}