Some fixes for resource cleaning spreadsheets in simupedia
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / scl / Spreadsheet / All.scl
1 include "Simantics/DB"
2 include "Simantics/Ontologies"
3 include "Simantics/SCL"
4 include "Document/All"
5 include "File"
6
7 importJava "org.simantics.spreadsheet.common.TableCell" where
8     data TableCell
9
10 importJava "org.simantics.spreadsheet.common.TreeTableCell" where
11     data TreeTableCell
12
13     @JavaName getData
14     getTreeTableCellData :: TreeTableCell -> <Proc> a
15     
16     createTreeTableCell :: String -> a -> Maybe b -> Integer -> Integer -> Integer -> Boolean -> <Proc> TreeTableCell
17     
18     @JavaName getText
19     treeTableCellText :: TreeTableCell -> <Proc> String
20     @JavaName getFont
21     treeTableCellFont :: TreeTableCell -> <Proc> Maybe IFont
22     @JavaName getRow
23     treeTableCellRow :: TreeTableCell -> <Proc> Integer
24     @JavaName getColumn
25     treeTableCellColumn :: TreeTableCell -> <Proc> Integer
26     
27 importJava "org.simantics.spreadsheet.common.SpreadsheetCell" where
28     data SpreadsheetCell
29
30 importJava "org.simantics.spreadsheet.graph.SCL" where
31     toVariant :: a -> Variant
32     modelsSourceContribution :: Resource -> <ReadGraph> [Variable]
33     modelsSourceContributionLabeler :: Variable -> <ReadGraph> String
34
35 importJava "org.simantics.spreadsheet.graph.SpreadsheetGraphUtils" where
36     @JavaName "fullSynchronization"
37     fullSynchronizeSheet :: Variable -> <ReadGraph> Boolean
38     evaluateAll :: Variable -> <ReadGraph> ()
39     saveInitialCondition :: Variable -> Resource -> String -> <WriteGraph> Resource
40     findCell :: Variable -> String -> <ReadGraph> Maybe Variable
41     invalidateAll :: Variable -> <ReadGraph> ()
42
43 importJava "org.simantics.spreadsheet.util.SpreadsheetUtils" where
44     createSheet :: Resource -> String -> <WriteGraph> Resource
45     queryCells :: a -> [TableCell]
46     modifyCells1 :: [TableCell] -> (TableCell -> TableCell) -> [TableCell]
47     modifyCells :: [TableCell] -> [(TableCell -> TableCell)] -> [TableCell]
48     organizeCells :: Integer -> [String] -> [TableCell] -> [TableCell]
49     applyFont :: IFont -> (TableCell -> Boolean) -> TableCell -> TableCell
50     applyAlign :: Integer -> (TableCell -> Boolean) -> TableCell -> TableCell
51     applyForeground :: IColor -> (TableCell -> Boolean) -> TableCell -> TableCell
52     applyBackground :: IColor -> (TableCell -> Boolean) -> TableCell -> TableCell
53     simpleFont :: String -> String -> Integer -> IFont
54     rgbColor :: Integer -> Integer -> Integer -> IColor
55     selectRow :: Integer -> TableCell -> Boolean
56     selectColumn :: Integer -> TableCell -> Boolean
57     setSCLLine :: Resource -> Integer -> String -> <WriteGraph> ()
58     sheetRun :: Resource -> Variable -> <ReadGraph> Variable
59
60 importJava "org.simantics.spreadsheet.graph.SpreadsheetSessionManager" where
61     removeSpreadsheetSession :: Variable -> <Proc, WriteGraph> ()
62
63 importJava "org.simantics.spreadsheet.graph.ExcelImport" where
64     importBook :: Resource -> File -> <Proc> ()
65
66 createSpreadsheetBookAction :: Resource -> <Proc> ()
67 createSpreadsheetBookAction res = do
68   syncWrite (\() -> createSpreadsheetBookDefault res)
69   ()
70   
71 createSpreadsheetSheetAction :: Resource -> <Proc> ()
72 createSpreadsheetSheetAction res = do
73   syncWrite (\() -> createSpreadsheetDefault res)
74   ()
75
76 createSpreadsheetDefault :: Resource -> <WriteGraph> Resource
77 createSpreadsheetDefault library = createSheet library $ findFreshEscapedName "Sheet" library 
78
79 createSpreadsheetBookDefault :: Resource -> <WriteGraph> Resource
80 createSpreadsheetBookDefault library = createSpreadsheetBook library $ findFreshEscapedName "Book" library 
81
82 createRange :: Resource -> Resource -> String -> String -> <WriteGraph> Resource
83 createRange library type_ name expression = do
84     range = newResource ()
85     claim range L0.InstanceOf type_
86     claimRelatedValue range L0.HasName name
87     createSCLValue range SHEET.ExpressionRange.cells SHEET.SCLValue expression
88     claim range L0.PartOf library
89     range
90
91 createSpreadsheetBook :: Resource -> String -> <WriteGraph> Resource
92 createSpreadsheetBook library name = do
93     markUndoPoint ()
94     book = newResource ()
95     claim book L0.InstanceOf SHEET.Book
96     claimRelatedValue book L0.HasName name
97     claim book L0.PartOf library
98     createSheet book "Sheet"
99     addCommentMetadata ("Created Spreadsheet Book " + name)
100     book
101