Richer Symbol Generation
Tue Jan 8 19:42:17 WET 2008 Miguel Vilaca <jmvilaca@di.uminho.pt>
* Richer Symbol Generation
Easier creation of syntactical and computational symbols.
Addition of predefined management symbols.
{
hunk ./src/CommonUI.hs 961
+ nb <- notebook p []
hunk ./src/CommonUI.hs 963
- agent <- entry p [text := "Symbol name"]
+ p1 <- panel nb []
+ agent1 <- entry p1 [text := "Symbol name"]
hunk ./src/CommonUI.hs 970
- symb <- entry p [text := "Displayed name" ]
+ symb1 <- entry p1 [text := "Displayed name" ]
hunk ./src/CommonUI.hs 974
- portsC <- textCtrl p [text := "[ (\"port_name\", DoublePoint 0.3 (-0.3))\n]" ]
+ portsC1 <- textCtrl p1 [text := "[ (\"port_name\", DoublePoint 0.3 (-0.3))\n]" ]
hunk ./src/CommonUI.hs 982
+ p2 <- panel nb []
+ agent2 <- entry p2 [text := "Symbol name"]
+ symb2 <- entry p2 [text := "Displayed name" ]
+ portsC2 <- textCtrl p2 [text := "[ (\"port_name\", DoublePoint 0.3 (-0.3))\n]" ]
+
+ p3 <- panel nb []
+ symbs3 <- radioBox p3 Vertical (map fst managementSymbols)
+ [ text := "Management symbols:"
+ , selection := 1
+ ]
+
hunk ./src/CommonUI.hs 1002
- do { symbD <- get symb text
- ; portsT <- get portsC text
+ do page <- notebookGetSelection nb
+ case page of
+ 0 -> -- Standard symbol
+ do { symbD <- get symb1 text
+ ; portsT <- get portsC1 text
hunk ./src/CommonUI.hs 1018
+ 1 -> -- Syntactical symbol
+ do { symbD <- get symb2 text
+ ; portsT <- get portsC2 text
+ ; case (reads :: ReadS [Port] ) portsT of
+ [(ports,"")] ->
+ do let shape =
+ Composite { shapeSegments =
+ [ Polygon
+ { shapeStyle = defaultShapeStyle
+ , shapePerimeter =
+ [ DoublePoint 0 (-0.7)
+ , DoublePoint (-0.7) 0.15
+ , DoublePoint 0.7 0.15
+ ]
+ }
+ , Text { shapeStyle = defaultShapeStyle
+ , shapeText = symbD} ]}
+ drawFig dc r shape (Just ports) []
+ _ -> logMessage "bad parsing in ports" -- return ()
+ }
+ 2 -> -- Management symbol
+ do i <- get symbs3 selection
+ let (shape, ports, _) = snd $ managementSymbols !! i
+ drawFig dc r shape ports []
hunk ./src/CommonUI.hs 1054
- column 5 [ [_$_]
-#if !defined(__APPLE__)
- boxed "New symbol with" $
-#endif [_$_]
- fill $ grid 5 5 [_$_]
- [[label "Symbol name", hfill $ widget agent]
- ,[label "Symbol displayed name", hfill $ widget symb]
- ,[label "list of ports", hfill $ widget portsC]]
- , hfill $ widget test
- , fill $ widget agentG
- , floatBottomRight $ row 5 [widget ok, widget ca]
- ]
+ column 5
+ [ [_$_]
+ label "New symbol"
+ , tabs nb
+ [ tab "Standard" . container p1 .
+ fill $ grid 5 5
+ [[label "Symbol name", hfill $ widget agent1]
+ ,[label "Symbol displayed name", hfill $ widget symb1]
+ ,[label "list of ports", hfill $ widget portsC1]]
+ , tab "Syntactical" . container p2 .
+ fill $ grid 5 5
+ [[label "Symbol name", hfill $ widget agent2]
+ ,[label "Symbol displayed name", hfill $ widget symb2]
+ ,[label "list of ports", hfill $ widget portsC2]]
+ , tab "Management" . container p3 . fill $ widget symbs3
+ ]
+ , hfill $ widget test
+ , fill $ widget agentG
+ , floatBottomRight $ row 5 [widget ok, widget ca]
+ ]
hunk ./src/CommonUI.hs 1078
- do{ agentD <- get agent text
- ; symbD <- get symb text
- ; portsT <- get portsC text
+ do page <- notebookGetSelection nb
+ case page of
+ 0 -> -- Standard symbol
+ do{ agentD <- get agent1 text
+ ; symbD <- get symb1 text
+ ; portsT <- get portsC1 text
hunk ./src/CommonUI.hs 1101
+ 1 -> -- Syntactical symbol
+ do{ agentD <- get agent2 text
+ ; symbD <- get symb2 text
+ ; portsT <- get portsC2 text
+
+ ; if agentD `elem` paletteNames
+ then do { errorDialog diaW "Repeated symbol name" $ "Already exists one symbol with name \"" ++ agentD ++ "\". Choose a different one."
+ -- ; set agent [bgcolor := red]
+ }
+ else
+ if agentD `elem` map fst specialSymbols
+ then errorDialog diaW "Reserved agent name" $ "\"" ++ agentD ++ "\" is a reserved agent name for a special agent.\nPlease import the agent or choose a different name."
+ else
+ do let shape =
+ Composite { shapeSegments =
+ [ Polygon
+ { shapeStyle = defaultShapeStyle
+ , shapePerimeter =
+ [ DoublePoint 0 (-0.7)
+ , DoublePoint (-0.7) 0.15
+ , DoublePoint 0.7 0.15
+ ]
+ }
+ , Text { shapeStyle = defaultShapeStyle
+ , shapeText = symbD} ]}
+ case (reads :: ReadS [Port] ) portsT of
+ [(ports,"")] -> stop $ Just (agentD, shape, ports)
+ _ -> do { errorDialog diaW "Parse error in list of Ports" "Parse error in list of Ports" [_$_]
+ -- ; set portsC [ bgcolor := red ]
+ }
+ }
+ 2 -> -- Management symbol
+ do{ i <- get symbs3 selection
+ ; let symb = managementSymbols !! i
+ agentD = fst symb
+ (shape, ports, _) = snd symb
+ ; if agentD `elem` paletteNames
+ then errorDialog diaW "Repeated symbol name" $ "Already exists one symbol with name \"" ++ agentD ++ "\". Choose a different one."
+ else
+ stop $ Just (agentD, shape, fromJust ports)
+ }
}