82 lines
2.3 KiB
Swift
82 lines
2.3 KiB
Swift
//
|
|
// CodeEditor.swift
|
|
// CodeEditor
|
|
//
|
|
// Created by david-swift on 27.11.23.
|
|
//
|
|
|
|
import CCodeEditor
|
|
import Libadwaita
|
|
|
|
/// GtkSource.View
|
|
public class CodeEditor: NativeWidgetPeer {
|
|
|
|
/// The source view's code buffer.
|
|
let buffer = CodeBuffer()
|
|
|
|
/// Initialize a code editor.
|
|
override public init() {
|
|
super.init()
|
|
nativePtr = codeeditor_init(buffer.nativePtr)
|
|
}
|
|
|
|
/// Set the padding between the editor's border and the text.
|
|
/// - Parameters:
|
|
/// - padding: The value of the padding.
|
|
/// - edges: The edges that should be affected.
|
|
/// - Returns: The editor
|
|
public func innerPadding(_ padding: Int = 10, _ edges: Set<Edge> = .all) -> Self {
|
|
let padding = Int32(padding)
|
|
for edge in edges {
|
|
switch edge {
|
|
case .top:
|
|
codeeditor_set_top_margin(nativePtr, padding)
|
|
case .bottom:
|
|
codeeditor_set_bottom_margin(nativePtr, padding)
|
|
case .leading:
|
|
codeeditor_set_leading_margin(nativePtr, padding)
|
|
case .trailing:
|
|
codeeditor_set_trailing_margin(nativePtr, padding)
|
|
}
|
|
}
|
|
return self
|
|
}
|
|
|
|
/// Set whether the editor shows the line numbers.
|
|
/// - Parameter visible: Whether the line numbers are visible.
|
|
/// - Returns: The editor.
|
|
public func lineNumbers(_ visible: Bool = true) -> Self {
|
|
codeeditor_set_line_numbers(nativePtr, visible ? 1 : 0)
|
|
return self
|
|
}
|
|
|
|
/// Get the editor's content text.
|
|
/// - Returns: The text.
|
|
public func getText() -> String {
|
|
buffer.getText()
|
|
}
|
|
|
|
/// Set the editor's content text.
|
|
/// - Parameter text: The editor's content.
|
|
public func setText(_ text: String) {
|
|
buffer.setText(text)
|
|
}
|
|
|
|
/// Add a handler that gets called when the content text changes.
|
|
/// - Parameter handler: The handler.
|
|
/// - Returns: The editor.
|
|
public func changeHandler(_ handler: @escaping () -> Void) -> Self {
|
|
buffer.changeHandler(handler)
|
|
return self
|
|
}
|
|
|
|
/// Set the syntax highlighting programming language.
|
|
/// - Parameter language: The programming language.
|
|
/// - Returns: The editor.
|
|
public func setLanguage(_ language: Language) -> Self {
|
|
buffer.setLanguage(language)
|
|
return self
|
|
}
|
|
|
|
}
|