0 | module CyBy.Draw.Event
2 | import CyBy.Draw.Internal.Abbreviations
3 | import CyBy.Draw.Internal.Atom
4 | import CyBy.Draw.Internal.Graph
6 | import Derive.FromJSON.Simple
7 | import Derive.ToJSON.Simple
8 | import Derive.Prelude
14 | %language ElabReflection
21 | data ColorScheme = Black | CyBy | Groups | CPK | CDK | JMol | PyMol
23 | %runElab derive "ColorScheme" [Show,Eq,Ord,Finite,FromJSON,ToJSON]
31 | data Modifier = NoMod | Ctrl | Shift
33 | %runElab derive "Modifier" [Show, Eq]
38 | reset : (mod, current : Modifier) -> Modifier
39 | reset m c = if m == c then NoMod else c
42 | data DrawEvent : Type where
43 | ZoomIn : (atPos : Bool) -> DrawEvent
44 | ZoomOut : (atPos : Bool) -> DrawEvent
47 | SetElem : Elem -> DrawEvent
48 | ChgElem : Elem -> DrawEvent
49 | ChgCharge : Charge -> DrawEvent
50 | ChgMass : Maybe MassNr -> DrawEvent
51 | SelAbbr : Abbreviation -> DrawEvent
52 | SetBond : MolBond -> DrawEvent
53 | Move : (x,y : Double) -> DrawEvent
54 | LeftDown : DrawEvent
56 | MiddleDown : DrawEvent
57 | MiddleUp : DrawEvent
58 | SetTempl : CDGraph -> DrawEvent
59 | Load : CDGraph -> DrawEvent
60 | SelectMode : DrawEvent
61 | KeyDown : String -> DrawEvent
62 | KeyUp : String -> DrawEvent
63 | EraseMode : DrawEvent
70 | Resize : (h,w : Double) -> DrawEvent
71 | StartPSE : DrawEvent
75 | %runElab derive "DrawEvent" [Show, Eq]