Esempio n. 1
0
        private void CreateNewFamily()
        {
            // Create a personmodel
            PersonModel personModel = new PersonModel();
            personModel.FirstName = "First Name";
            personModel.LastName = "Last Name";
            personModel.Gender = "Not Specified";
            personModel.DOB = DateTime.Now;
            personModel.GenerationIndex = 0;
            personModel.SiblingIndex = 0;

            // Create a familymodel and add the personmodel
            FamilyModel newFamily = new FamilyModel();
            newFamily.PersonSettings = new PersonSettings();
            newFamily.RelationshipSettings = new RelationshipSettings();
            newFamily.Tree = new Tree();
            newFamily.Members = new ObservableCollection<PersonModel>() { };
            newFamily.Relationships = new ObservableCollection<RelationshipModel>() { };
            newFamily.Members.Add(personModel);

            // Mark the personmodel as selected
            newFamily.Tree.SelectedPersonId = personModel.Id;
            
            // Restore this new familymodel into the workspace
            RestoreFamilyModel(newFamily);
            newFamily.CopyProperties(GetCurrentFamilyModel());
            SavedFamilyModel = newFamily;           
            SavedFamilyModel.CopyProperties(GetCurrentFamilyModel());           
            
            // Set the title
            Title = "Family Explorer - NewFamily.fex";

            // Clear undo-redo records
            RecordedFamilyModels.Clear();
            UndoneFamilyModels.Clear();
        }
Esempio n. 2
0
 public void Redo_Executed()
 {
     // Return if there are no recorded models
     if (UndoneFamilyModels.Count < 1) { return; }
     // Do not record changes during the redo
     disableChangeRecording = true;
     // Get the recorded model that was undone         
     FamilyModel modelToRestore = UndoneFamilyModels.Last();
     // Remove the records
     UndoneFamilyModels.Remove(modelToRestore);
     RedoDescriptions.Remove(RedoDescriptions.Last());
     // Record the current model in the done list
     FamilyModel recordModel = new FamilyModel();
     recordModel.CopyProperties(currentFamilyModel);
     RecordedFamilyModels.Add(recordModel);
     UndoDescriptions.Add(Redo_ToolTip.Replace("Redo", "Undo"));
     // Refresh the undo-redo tooltips
     if (UndoDescriptions.Count() > 0) { Undo_ToolTip = UndoDescriptions.Last(); }
     else { Undo_ToolTip = "Undo..."; }
     if (RedoDescriptions.Count() > 0) { Redo_ToolTip = RedoDescriptions.Last(); }
     else { Redo_ToolTip = "Redo..."; }
     // Restore
     RestoreFamilyModel(modelToRestore);            
     disableChangeRecording = false;
 }
Esempio n. 3
0
        private void RecordFamilyChange(string changeDescription)
        {            

            // Do not record redo-undo commands
            if (disableChangeRecording) { return; }

            // If this change occurred within the last xxx ms of the previous change, assume it is a cascading change and ingnore
            if (lastChangeTime != null)
            {
                if (DateTime.Now - lastChangeTime < new TimeSpan(0, 0, 0, 0, 50))
                {
                    // Make note of the new status
                    CurrentFamilyModel = GetCurrentFamilyModel();
                    lastChangeTime = DateTime.Now;
                    return;
                }
            }

            // Record the status before the change       
            FamilyModel recordModel = new FamilyModel();
            recordModel.CopyProperties(currentFamilyModel);
            RecordedFamilyModels.Add(recordModel); //TODO: need to create a new object, currently storing the same object repeatedly
            UndoDescriptions.Add("Undo " + changeDescription);

            // Clear redo list on new changes
            UndoneFamilyModels.Clear();
            RedoDescriptions.Clear();            

            // Make note of the new status
            CurrentFamilyModel = GetCurrentFamilyModel();
            Undo_ToolTip = UndoDescriptions.Last();

            // Refresh undo-redo tooltips
            if (UndoDescriptions.Count() > 0) { Undo_ToolTip = UndoDescriptions.Last(); }
            else { Undo_ToolTip = "Undo..."; }
            Redo_ToolTip = "Redo...";
           
            // Check if different from saved copy
            //if (SavedFamilyModel.IsEqual(GetCurrentFamilyModel())) { HasChanges = false; }
            //else { HasChanges = true; }

            // Refresh can executes
            Undo.RaiseCanExecuteChanged();
            Redo.RaiseCanExecuteChanged();
            // Record change time
            lastChangeTime = DateTime.Now;            
        }