feat: save element tool selection

This commit is contained in:
dscyrescotti
2024-06-25 16:50:02 +07:00
parent a78f6fe466
commit 44a8780ac9
5 changed files with 9 additions and 1 deletions
+5
View File
@@ -31,10 +31,15 @@ public class Tool: NSObject, ObservableObject {
init(object: ToolObject) { init(object: ToolObject) {
self.object = object self.object = object
selection = ToolSelection(rawValue: object.selection) ?? .hand
} }
func selectTool(_ selection: ToolSelection) { func selectTool(_ selection: ToolSelection) {
self.selection = selection self.selection = selection
withPersistence(\.viewContext) { [weak object] context in
object?.selection = selection.rawValue
try context.saveIfNeeded()
}
} }
func load() { func load() {
+1 -1
View File
@@ -7,7 +7,7 @@
import Foundation import Foundation
enum ToolSelection: Equatable { enum ToolSelection: Int16, Equatable {
case hand case hand
case pen case pen
case photo case photo
+1
View File
@@ -73,6 +73,7 @@ struct MemosView: View {
canvasObject.height = 8_000 canvasObject.height = 8_000
let toolObject = ToolObject(\.viewContext) let toolObject = ToolObject(\.viewContext)
toolObject.selection = 0
toolObject.pens = [] toolObject.pens = []
let eraserPenObject = PenObject.createObject(\.viewContext, penStyle: .eraser) let eraserPenObject = PenObject.createObject(\.viewContext, penStyle: .eraser)
@@ -10,6 +10,7 @@ import Foundation
@objc(ToolObject) @objc(ToolObject)
class ToolObject: NSManagedObject { class ToolObject: NSManagedObject {
@NSManaged var selection: Int16
@NSManaged var pens: NSMutableSet @NSManaged var pens: NSMutableSet
@NSManaged var memo: MemoObject? @NSManaged var memo: MemoObject?
} }
@@ -73,6 +73,7 @@
<relationship name="quads" toMany="YES" deletionRule="Cascade" ordered="YES" destinationEntity="QuadObject" inverseName="stroke" inverseEntity="QuadObject"/> <relationship name="quads" toMany="YES" deletionRule="Cascade" ordered="YES" destinationEntity="QuadObject" inverseName="stroke" inverseEntity="QuadObject"/>
</entity> </entity>
<entity name="ToolObject" representedClassName="ToolObject" syncable="YES"> <entity name="ToolObject" representedClassName="ToolObject" syncable="YES">
<attribute name="selection" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="YES"/>
<relationship name="memo" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MemoObject" inverseName="tool" inverseEntity="MemoObject"/> <relationship name="memo" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="MemoObject" inverseName="tool" inverseEntity="MemoObject"/>
<relationship name="pens" toMany="YES" deletionRule="Cascade" destinationEntity="PenObject" inverseName="tool" inverseEntity="PenObject"/> <relationship name="pens" toMany="YES" deletionRule="Cascade" destinationEntity="PenObject" inverseName="tool" inverseEntity="PenObject"/>
</entity> </entity>