added miniterminalcontroller

fix miniterminaldelegate
moved stuff around
This commit is contained in:
neon443
2025-08-24 12:09:43 +01:00
parent 7b4da73ffa
commit d1dd77fde3
7 changed files with 60 additions and 43 deletions

View File

@@ -78,6 +78,7 @@
A98554632E0587DF009051BD /* HostsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98554622E0587DF009051BD /* HostsView.swift */; }; A98554632E0587DF009051BD /* HostsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98554622E0587DF009051BD /* HostsView.swift */; };
A98CAB442E4229F7005E4C42 /* HostSymbolPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98CAB432E4229F7005E4C42 /* HostSymbolPicker.swift */; }; A98CAB442E4229F7005E4C42 /* HostSymbolPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98CAB432E4229F7005E4C42 /* HostSymbolPicker.swift */; };
A99604432E5A0E8F007CA460 /* MiniTerminalDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99604422E5A0E8F007CA460 /* MiniTerminalDelegate.swift */; }; A99604432E5A0E8F007CA460 /* MiniTerminalDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99604422E5A0E8F007CA460 /* MiniTerminalDelegate.swift */; };
A99604462E5A257B007CA460 /* MiniTerminalController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99604452E5A257B007CA460 /* MiniTerminalController.swift */; };
A9A2F4F62E3001D300D0AE9B /* AddSnippetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A2F4F52E3001D300D0AE9B /* AddSnippetView.swift */; }; A9A2F4F62E3001D300D0AE9B /* AddSnippetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A2F4F52E3001D300D0AE9B /* AddSnippetView.swift */; };
A9BA1D192E1D9AE1005BDCEF /* SwiftTerm.Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BA1D182E1D9AE1005BDCEF /* SwiftTerm.Color.swift */; }; A9BA1D192E1D9AE1005BDCEF /* SwiftTerm.Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BA1D182E1D9AE1005BDCEF /* SwiftTerm.Color.swift */; };
A9BA1D1E2E1EAD51005BDCEF /* SF-Mono-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = A9BA1D1C2E1EAD51005BDCEF /* SF-Mono-Bold.otf */; }; A9BA1D1E2E1EAD51005BDCEF /* SF-Mono-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = A9BA1D1C2E1EAD51005BDCEF /* SF-Mono-Bold.otf */; };
@@ -216,6 +217,7 @@
A98554622E0587DF009051BD /* HostsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostsView.swift; sourceTree = "<group>"; }; A98554622E0587DF009051BD /* HostsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostsView.swift; sourceTree = "<group>"; };
A98CAB432E4229F7005E4C42 /* HostSymbolPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostSymbolPicker.swift; sourceTree = "<group>"; }; A98CAB432E4229F7005E4C42 /* HostSymbolPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostSymbolPicker.swift; sourceTree = "<group>"; };
A99604422E5A0E8F007CA460 /* MiniTerminalDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MiniTerminalDelegate.swift; sourceTree = "<group>"; }; A99604422E5A0E8F007CA460 /* MiniTerminalDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MiniTerminalDelegate.swift; sourceTree = "<group>"; };
A99604452E5A257B007CA460 /* MiniTerminalController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MiniTerminalController.swift; sourceTree = "<group>"; };
A9A2F4F52E3001D300D0AE9B /* AddSnippetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddSnippetView.swift; sourceTree = "<group>"; }; A9A2F4F52E3001D300D0AE9B /* AddSnippetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddSnippetView.swift; sourceTree = "<group>"; };
A9BA1D182E1D9AE1005BDCEF /* SwiftTerm.Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftTerm.Color.swift; sourceTree = "<group>"; }; A9BA1D182E1D9AE1005BDCEF /* SwiftTerm.Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftTerm.Color.swift; sourceTree = "<group>"; };
A9BA1D1C2E1EAD51005BDCEF /* SF-Mono-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Mono-Bold.otf"; sourceTree = "<group>"; }; A9BA1D1C2E1EAD51005BDCEF /* SF-Mono-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Mono-Bold.otf"; sourceTree = "<group>"; };
@@ -352,12 +354,8 @@
A923172B2E0712F200ECE1E6 /* Terminal */ = { A923172B2E0712F200ECE1E6 /* Terminal */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A92317292E07113100ECE1E6 /* TerminalController.swift */,
A923172E2E08851200ECE1E6 /* ShellView.swift */, A923172E2E08851200ECE1E6 /* ShellView.swift */,
A923172C2E07138000ECE1E6 /* SSHTerminalDelegate.swift */,
A96BE6A92E116EC000C0FEE9 /* TerminalViewContainer.swift */,
A9FD37682E16A6BF005319A8 /* ShellTabView.swift */, A9FD37682E16A6BF005319A8 /* ShellTabView.swift */,
A99604422E5A0E8F007CA460 /* MiniTerminalDelegate.swift */,
); );
path = Terminal; path = Terminal;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -391,6 +389,7 @@
children = ( children = (
A92538C62DEE0742007E0A18 /* ShhShellApp.swift */, A92538C62DEE0742007E0A18 /* ShhShellApp.swift */,
A93143C12DF61E8500FCD5DB /* SSH */, A93143C12DF61E8500FCD5DB /* SSH */,
A99604442E5A255E007CA460 /* Terminal */,
A98554562E055394009051BD /* Host */, A98554562E055394009051BD /* Host */,
A98554572E055398009051BD /* Keys */, A98554572E055398009051BD /* Keys */,
A9D8192A2E0E904900442D38 /* Themes */, A9D8192A2E0E904900442D38 /* Themes */,
@@ -583,6 +582,18 @@
path = Keys; path = Keys;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
A99604442E5A255E007CA460 /* Terminal */ = {
isa = PBXGroup;
children = (
A923172C2E07138000ECE1E6 /* SSHTerminalDelegate.swift */,
A99604422E5A0E8F007CA460 /* MiniTerminalDelegate.swift */,
A96BE6A92E116EC000C0FEE9 /* TerminalViewContainer.swift */,
A92317292E07113100ECE1E6 /* TerminalController.swift */,
A99604452E5A257B007CA460 /* MiniTerminalController.swift */,
);
path = Terminal;
sourceTree = "<group>";
};
A9C060E92E357FC400CA9374 /* Misc */ = { A9C060E92E357FC400CA9374 /* Misc */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -854,6 +865,7 @@
A98554612E058433009051BD /* HostsManager.swift in Sources */, A98554612E058433009051BD /* HostsManager.swift in Sources */,
A985545D2E055D4D009051BD /* ConnectionView.swift in Sources */, A985545D2E055D4D009051BD /* ConnectionView.swift in Sources */,
A9FD37592E143D74005319A8 /* GenericPasswordConvertible.swift in Sources */, A9FD37592E143D74005319A8 /* GenericPasswordConvertible.swift in Sources */,
A99604462E5A257B007CA460 /* MiniTerminalController.swift in Sources */,
A9485C762E1AF59F00209824 /* FontManagerView.swift in Sources */, A9485C762E1AF59F00209824 /* FontManagerView.swift in Sources */,
A98554592E0553AA009051BD /* KeyManager.swift in Sources */, A98554592E0553AA009051BD /* KeyManager.swift in Sources */,
A93F283D2E2A5DCB0092B8D5 /* SnippetManagerView.swift in Sources */, A93F283D2E2A5DCB0092B8D5 /* SnippetManagerView.swift in Sources */,

View File

@@ -0,0 +1,29 @@
//
// MiniTerminalController.swift
// ShhShell
//
// Created by neon443 on 23/08/2025.
//
import Foundation
import UIKit
import SwiftUI
import SwiftTerm
struct MiniTerminalController: UIViewRepresentable {
func feed() {
}
func makeUIView(context: Context) -> TerminalView {
let tv = MiniTerminalDelegate(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: .zero))
tv.translatesAutoresizingMaskIntoConstraints = true
tv.autoresizingMask = [.flexibleWidth, .flexibleHeight]
return tv
}
func updateUIView(_ tv: TerminalView, context: Context) {
tv.setNeedsLayout()
tv.layoutIfNeeded()
}
}

View File

@@ -12,49 +12,24 @@ import SwiftTerm
@MainActor @MainActor
class MiniTerminalDelegate: TerminalView, TerminalViewDelegate { class MiniTerminalDelegate: TerminalView, TerminalViewDelegate {
func setCursorType(_ style: CursorType) {
nonisolated public func sizeChanged(source: TerminalView, newCols: Int, newRows: Int) { getTerminal().setCursorStyle(style.stCursorStyle)
<#code#>
} }
nonisolated public func setTerminalTitle(source: TerminalView, title: String) { nonisolated public func sizeChanged(source: TerminalView, newCols: Int, newRows: Int) {}
<#code#> nonisolated public func setTerminalTitle(source: TerminalView, title: String) {}
} nonisolated public func hostCurrentDirectoryUpdate(source: TerminalView, directory: String?) {}
nonisolated public func send(source: TerminalView, data: ArraySlice<UInt8>) {}
nonisolated public func hostCurrentDirectoryUpdate(source: TerminalView, directory: String?) { nonisolated public func scrolled(source: TerminalView, position: Double) {}
<#code#> nonisolated public func requestOpenLink(source: SwiftTerm.TerminalView, link: String, params: [String : String]) {}
} nonisolated public func bell(source: TerminalView) {}
nonisolated public func clipboardCopy(source: SwiftTerm.TerminalView, content: Data) {}
nonisolated public func send(source: TerminalView, data: ArraySlice<UInt8>) { nonisolated public func iTermContent (source: TerminalView, content: ArraySlice<UInt8>) {}
<#code#> nonisolated public func rangeChanged(source: SwiftTerm.TerminalView, startY: Int, endY: Int) {}
}
nonisolated public func scrolled(source: TerminalView, position: Double) {
<#code#>
}
nonisolated public func requestOpenLink(source: SwiftTerm.TerminalView, link: String, params: [String : String]) {
<#code#>
}
nonisolated public func bell(source: TerminalView) {
<#code#>
}
nonisolated public func clipboardCopy(source: SwiftTerm.TerminalView, content: Data) {
<#code#>
}
nonisolated public func iTermContent (source: TerminalView, content: ArraySlice<UInt8>) {
<#code#>
}
nonisolated public func rangeChanged(source: SwiftTerm.TerminalView, startY: Int, endY: Int) {
<#code#>
}
public convenience required override init(frame: CGRect) { public convenience required override init(frame: CGRect) {
self.init(frame: .zero) self.init(frame: .zero)
terminalDelegate = self
} }
public convenience required init?(coder: NSCoder) { public convenience required init?(coder: NSCoder) {

View File

@@ -39,6 +39,7 @@ struct SettingsView: View {
.pickerStyle(.segmented) .pickerStyle(.segmented)
ForEach(CursorShape.allCases, id: \.self) { type in ForEach(CursorShape.allCases, id: \.self) { type in
MiniTerminalController()
} }
Picker("Cursor", selection: $hostsManager.settings.cursorType.cursorShape) { Picker("Cursor", selection: $hostsManager.settings.cursorType.cursorShape) {