mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-07-10 14:52:46 +02:00
feat: save element tool selection
This commit is contained in:
@@ -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() {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user