コード例 #1
0
        public DrawableCollection(DrawingSheet ownerSheet)
        {
            OwnerSheet = ownerSheet;
            objects    = new List <DrawableObject>();
            Shadow     = new List <DrawableObject>();

            transTree  = OwnerSheet.sheetTree.Nodes.Add("Transitions", "Transitions", Constants.ImageIndex.Transitions, Constants.ImageIndex.Transitions);
            statesTree = OwnerSheet.sheetTree.Nodes.Add("States", "States", Constants.ImageIndex.States, Constants.ImageIndex.States);
            linksTree  = OwnerSheet.sheetTree.Nodes.Add("Links", "Links", Constants.ImageIndex.Links, Constants.ImageIndex.Links);
            textsTree  = OwnerSheet.sheetTree.Nodes.Add("Texts", "Texts", Constants.ImageIndex.Texts, Constants.ImageIndex.Texts);

            OwnerSheet.sheetTree.Expand();
        }
コード例 #2
0
ファイル: PhasesBook.cs プロジェクト: phasesfsm/phasesfsm
        //Add an action to the actions collection
        public void AddDrawAction(RecordableAction.ActionTypes actionType, DrawingSheet sheet, List <DrawableObject> changingObjects, List <DrawableObject> selectedObjects, int focusIndex)
        {
            //Erase redo actions
            if (ActionIndex < Actions.Count)
            {
                if (SavedIndex > ActionIndex)
                {
                    SavedIndex = -1;
                }
                Actions.RemoveRange(ActionIndex, Actions.Count - ActionIndex);
            }
            //Create the action object
            var action = new DrawAction(actionType, sheet, changingObjects, selectedObjects, focusIndex);

            sheet.Sketch.PerformAction(action);
            //Add new action
            Actions.Add(action);
            ActionIndex++;
        }
コード例 #3
0
ファイル: PhasesBook.cs プロジェクト: phasesfsm/phasesfsm
        public bool Deserialize(byte[] data)
        {
            if (data.Length < 7)
            {
                return(false);
            }
            if (Sheets.Count != 1)
            {
                return(false);
            }
            DrawingSheet sheet;
            int          index = 0, fileVersion = 0, idx = 0;
            string       str = "";

            if (data[index] == Serialization.Token.EncryptedCompressedFile)
            {
                //remove first
                var temp = new byte[data.Length - 1];
                Array.Copy(data, 1, temp, 0, temp.Length);

                //De-encrypt
                data = Protected.Unprotect(temp);

                //De-compress
                data = Util.Decompress(data);
            }
            else if (data[index] == Serialization.Token.CompressedData)
            {
                //remove first
                var temp = new byte[data.Length - 1];
                Array.Copy(data, 1, temp, 0, temp.Length);

                //De-compress
                data = Util.Decompress(Protected.Decrypt(temp, "phafsm"));
            }

            //File and file version
            if (!Serialization.Token.Deserialize(data, ref index, Serialization.Token.StartFile))
            {
                return(false);
            }
            if (!Serialization.DeserializeParameter(data, ref index, out fileVersion))
            {
                return(false);
            }
            switch (fileVersion)
            {
            case 1:
                break;

            case 2:
                idx = index;
                if (Serialization.Token.Deserialize(data, ref index, Serialization.Token.CodeGenerationLanguage))
                {
                    if (!Serialization.DeserializeParameter(data, ref index, out str))
                    {
                        return(false);
                    }
                    Language = str;
                }
                else
                {
                    index    = idx;
                    Language = "";
                }
                idx = index;
                if (Serialization.Token.Deserialize(data, ref index, Serialization.Token.CodeGenerationFolder))
                {
                    if (!Serialization.DeserializeParameter(data, ref index, out str))
                    {
                        return(false);
                    }
                    ScriptsFolder = str;
                    string folderName = Path.GetFileName(str);
                    if (folderName.EndsWith(".cottle"))
                    {
                        TargetLanguage = folderName.Substring(0, folderName.Length - 7);
                    }
                    else
                    {
                        TargetLanguage = folderName;
                    }
                }
                else
                {
                    index         = idx;
                    ScriptsFolder = "";
                }
                idx = index;
                if (Serialization.Token.Deserialize(data, ref index, Serialization.Token.CodeGenerationExec))
                {
                    if (!Serialization.DeserializeParameter(data, ref index, out str))
                    {
                        return(false);
                    }
                    ExecAfter = "";
                }
                else
                {
                    index     = idx;
                    ExecAfter = "";
                }
                break;

            default:
                return(false);
            }

            //Document information
            if (!Serialization.Token.Deserialize(data, ref index, Serialization.Token.StartBookInformation))
            {
                return(false);
            }
            //End document information
            if (!Serialization.Token.Deserialize(data, ref index, Serialization.Token.EndBookInformation))
            {
                return(false);
            }

            //Deserialize variables
            if (!Variables.Deserialize(data, ref index))
            {
                return(false);
            }

            //Main sheet definition
            if (!Serialization.Token.Deserialize(data, ref index, Serialization.Token.StartSheetDefinition))
            {
                return(false);
            }
            if (!activeSheet.Deserialize(data, ref index))
            {
                return(false);
            }

            //Sheets definitions
            while (Serialization.Token.Is(data, index, Serialization.Token.StartSheetDefinition))
            {
                switch (DrawingSheet.DeserializeSheetType(data, ref index))
                {
                case DrawingSheet.SheetTypes.Global:
                    sheet = CreateChildSheet();
                    break;

                case DrawingSheet.SheetTypes.Model:
                    sheet = CreateModel();
                    break;

                default:
                    return(false);
                }
                if (!sheet.Deserialize(data, ref index))
                {
                    return(false);
                }
            }

            //Global objects priorities
            if (Serialization.Token.Deserialize(data, ref index, Serialization.Token.StartGlobalPriorityList))
            {
                var    list     = GetFullObjectsList();
                var    prioList = new List <IGlobal>();
                string name     = "";
                while (Serialization.Token.Deserialize(data, ref index, Serialization.Token.ObjectName))
                {
                    Serialization.DeserializeParameter(data, ref index, out name);
                    if (!list.Exists(obj => obj.Name == name))
                    {
                        return(false);
                    }
                    var gobj = list.Find(obj => obj.Name == name) as IGlobal;
                    if (!prioList.Contains(gobj))
                    {
                        prioList.Add(gobj);
                    }
                }
                if (!Serialization.Token.Deserialize(data, ref index, Serialization.Token.EndGlobalPriorityList))
                {
                    return(false);
                }
                Globals = prioList;
            }

            return(Serialization.Token.Deserialize(data, ref index, Serialization.Token.EndFile));
        }
コード例 #4
0
ファイル: PhasesBook.cs プロジェクト: phasesfsm/phasesfsm
 private void AddSheet(DrawingSheet sheet)
 {
     sheet.sheetTree.Tag = sheet;
     controls.view.Nodes.Add(sheet.sheetTree);
     Sheets.Add(sheet);
 }