예제 #1
0
        public void ConfigureRecord(RecordStructure rec)
        {
            this.rec = rec;
            if (rec == null)
                filterTree.Roots = null;
            else
            {
                var srs = (from sr in rec.subrecords
                           let children = sr.elements.Select(
                                se => new ColumnElement() { Checked = false, Name = se.name, Parent = null, Record = se }
                           ).ToList()
                           select new ColumnSubrecord()
                           {
                               Name = string.Format("{0}: {1}", sr.name, sr.desc),
                               Checked = false,
                               Record = sr,
                               Children = children
                           }).ToList();
                // fix parents after assignments
                foreach (var sr in srs)
                    foreach (var se in sr.Children)
                        se.Parent = sr;

                filterTree.Roots = srs;

            }
        }
예제 #2
0
 public IEnumerable <SearchSubrecord> ConfigureRecord(RecordStructure rec)
 {
     this.cboRecordType.SelectedItem = rec;
     if (rec == null)
     {
         return(null);
     }
     else
     {
         var srs = (from sr in rec.subrecords
                    let children = sr.elements.Select(
                        se => new SearchElement()
         {
             Name = se.name, Parent = null, Record = se, Type = SearchCondElementType.Exists, Checked = false
         }
                        ).ToList()
                                   select new SearchSubrecord()
         {
             Name = string.Format("{0}: {1}", sr.name, sr.desc),
             Checked = false,
             Record = sr,
             Children = children
         }).ToList();
         // fix parents after assignments
         foreach (var sr in srs)
         {
             foreach (var se in sr.Children)
             {
                 se.Parent = sr;
             }
         }
         return(srs);
     }
 }
예제 #3
0
        public void ConfigureRecord(RecordStructure rec)
        {
            this.rec = rec;
            if (rec == null)
            {
                this.filterTree.Roots = null;
            }
            else
            {
                var srs = (from sr in rec.subrecords
                           let children = sr.elements.Select(se => new ColumnElement() { Checked = false, Name = se.name, Parent = null, Record = se }).ToList()
                           select new ColumnSubrecord() { Name = string.Format("{0}: {1}", sr.name, sr.desc), Checked = false, Record = sr, Children = children }).ToList();

                // fix parents after assignments
                foreach (var sr in srs)
                {
                    foreach (var se in sr.Children)
                    {
                        se.Parent = sr;
                    }
                }

                this.filterTree.Roots = srs;
            }
        }
 public void ConfigureRecord(RecordStructure rec)
 {
     this.rec = rec;
     var srs = (from sr in rec.subrecords
                let children = sr.elements.Select(se => new SearchElement() { Checked = false, Name = se.name, Parent = null, Record = se }).ToList()
                select new SearchSubrecord() { Name = sr.name, Checked = false, Record = sr, Children = children }).ToList();
     this.filterTree.Roots = srs;
 }
예제 #5
0
        public static RecordStructure GetFirstRecordOfType(string type)
        {
            RecordStructure rec = null;

            if (LoadedDomains().Any(domain => domain.Records.TryGetValue(type, out rec)))
            {
                return(rec);
            }
            return(null);
        }
예제 #6
0
        public SessionRecord(byte[] serialized)
        {
            RecordStructure record = RecordStructure.ParseFrom(serialized);

            this.sessionState = new SessionState(record.CurrentSession);
            this.fresh        = false;

            foreach (SessionStructure previousStructure in record.PreviousSessionsList)
            {
                previousStates.AddLast(new SessionState(previousStructure)); // add -> AddLast (java)
            }
        }
예제 #7
0
 public static void Reload()
 {
     foreach (var domainDefinition in Domains.Values)
     {
         if (domainDefinition.Loaded)
         {
             domainDefinition.Records = RecordStructure.Load(domainDefinition.xmlPath);
         }
     }
     if (DomainLoaded != null)
     {
         DomainLoaded(null, EventArgs.Empty);
     }
 }
예제 #8
0
        public void ConfigureRecord(RecordStructure rec)
        {
            this.rec = rec;
            var srs = (from sr in rec.subrecords
                       let children = sr.elements.Select(se => new SearchElement()
            {
                Checked = false, Name = se.name, Parent = null, Record = se
            }).ToList()
                                      select new SearchSubrecord()
            {
                Name = sr.name, Checked = false, Record = sr, Children = children
            }).ToList();

            this.filterTree.Roots = srs;
        }
        /// <returns>
        /// Returns a serialized version of the current SessionRecord.</returns>
        public byte[] Serialize()
        {
            List <SessionStructure> previousStructures = new List <SessionStructure>();

            foreach (SessionState previousState in _previousStates)
            {
                previousStructures.Add(previousState.GetStructure());
            }
            RecordStructure record = new RecordStructure
            {
                CurrentSession = _sessionState.GetStructure(),
            };

            record.PreviousSessions.AddRange(previousStructures);
            return(record.ToByteArray());
        }
        /**
         * @return a serialized version of the current SessionRecord.
         */
        public byte[] serialize()
        {
            List <SessionStructure> previousStructures = new List <SessionStructure>();

            foreach (SessionState previousState in previousStates)
            {
                previousStructures.Add(previousState.getStructure());
            }

            RecordStructure record = RecordStructure.CreateBuilder()
                                     .SetCurrentSession(sessionState.getStructure())
                                     .AddRangePreviousSessions(previousStructures)
                                     .Build();

            return(record.ToByteArray());
        }
예제 #11
0
        internal static string GetExtendedDesc(this Record rec, ISelectionContext selectContext)
        {
            var context = selectContext.Clone();

            try
            {
                context.Record = rec;
                RecordStructure structure = rec.GetStructure();
                if (structure == null)
                {
                    return(string.Empty);
                }

                var s = new StringBuilder();
                s.AppendLine(structure.description);
                foreach (var subrec in rec.SubRecords)
                {
                    if (subrec.Structure == null)
                    {
                        continue;
                    }

                    if (subrec.Structure.elements == null)
                    {
                        return(s.ToString());
                    }

                    if (subrec.Structure.notininfo)
                    {
                        continue;
                    }

                    s.AppendLine();
                    s.Append(subrec.GetFormattedData());
                }

                return(s.ToString());
            }
            finally
            {
                context.Reset();
            }
        }
예제 #12
0
        public static DomainDefinition Load(string p)
        {
            DomainDefinition define;

            if (!Domains.TryGetValue(p, out define))
            {
                define     = new DomainDefinition(p);
                Domains[p] = define;
            }
            if (!define.Loaded)
            {
                define.Records = RecordStructure.Load(define.xmlPath);
                define.Loaded  = true;
                if (DomainLoaded != null)
                {
                    DomainLoaded(define, EventArgs.Empty);
                }
            }
            return(define);
        }
예제 #13
0
        public Main()
        {
            InitializeComponent();

            m_recordList = new List <Record>();
            // initialize the data
            m_setting = new Settings();
            string filePath = m_setting.DBPath;

            m_smartbufferlist = new RecordStructure(filePath);

            m_diagnosisList      = new StatisticsRecord();
            m_currentRecord      = new Record();
            m_currentRecord.Date = DateTime.Today.ToShortDateString();

            PreviousRecord.Enabled = false;

            // update the data to today
            this.calenderTimePicker.Value = DateTime.Today;
        }
예제 #14
0
        /// <summary>
        ///   The default constructor.
        /// </summary>
        public CriticalRecordsForm()
        {
            if (!RecordStructure.Loaded)
            {
                try
                {
                    RecordStructure.Load();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(
                        "Could not parse RecordStructure.xml. Record-at-once editing will be unavailable.\n" + ex.Message, "Warning");
                }
            }
            InitializeComponent();

            cbxSeverity.DataSource   = Enum.GetValues(typeof(CriticalRecordInfo.ConflictSeverity));
            cbxSeverity.SelectedItem = CriticalRecordInfo.ConflictSeverity.Conflict;

            Properties.Settings.Default.windowPositions.GetWindowPosition("CREditor", this);
        }
예제 #15
0
        private void toolStripSelectColumns_Click(object sender, EventArgs e)
        {
            RecordStructure rec = null;

            var searchTypeItem = this.toolStripIncrFindType.SelectedItem as MRUComboHelper <SearchType, string>;

            if (searchTypeItem == null)
            {
                return;
            }

            if (searchTypeItem.Key == SearchType.BasicCriteriaRef)
            {
                var scs = this.toolStripIncrSelectCriteria.Tag as SearchCriteriaSettings;
                if (scs != null && !string.IsNullOrEmpty(scs.Type))
                {
                    RecordStructure.Records.TryGetValue(scs.Type, out rec);
                }
            }
            else
            {
                var recType = this.toolStripIncrFindTypeFilter.SelectedItem as string;
                if (!string.IsNullOrEmpty(recType))
                {
                    RecordStructure.Records.TryGetValue(recType, out rec);
                }
            }

            using (var dlg = new RecordColumnSelect(rec))
            {
                dlg.Criteria = this.toolStripSelectColumns.Tag as ColumnSettings;
                if (DialogResult.OK == dlg.ShowDialog(this))
                {
                    var settings = dlg.Criteria;
                    this.ApplyColumnSettings(settings, rebuild: true);
                    this.toolStripSelectColumns.Tag = dlg.Criteria;
                }
            }
        }
예제 #16
0
        private void cboSavedSearches_SelectedIndexChanged(object sender, EventArgs e)
        {
            var settings = this.cboSavedSearches.SelectedItem as SearchCriteriaXmlSettings;

            if (settings != null && !string.IsNullOrEmpty(settings.Type))
            {
                this.cboRecordType.SelectedIndexChanged    -= this.cboRecordType_SelectedIndexChanged;
                this.cboSavedSearches.SelectedIndexChanged -= this.cboSavedSearches_SelectedIndexChanged;
                this.filterTree.ItemsChanging      -= this.filterTree_ItemsChanging;
                this.filterTree.CellEditValidating -= this.filterTree_CellEditValidating;
                this.filterTree.ItemChecked        -= this.filterTree_ItemChecked;
                try
                {
                    RecordStructure rec = null;
                    foreach (var domain in TESVSnip.Domain.Data.DomainDefinition.LoadedDomains())
                    {
                        if (domain.Records.TryGetValue(settings.Type, out rec))
                        {
                            break;
                        }
                    }
                    if (rec != null)
                    {
                        this.filterTree.Roots = this.ConfigureRecord(rec);
                        this.AssignCriteria(settings);
                        this.filterTree.RebuildAll(true);
                    }
                }
                finally
                {
                    this.cboRecordType.SelectedIndexChanged    += this.cboRecordType_SelectedIndexChanged;
                    this.cboSavedSearches.SelectedIndexChanged += this.cboSavedSearches_SelectedIndexChanged;
                    this.filterTree.ItemsChanging      += this.filterTree_ItemsChanging;
                    this.filterTree.CellEditValidating += this.filterTree_CellEditValidating;
                    this.filterTree.ItemChecked        += this.filterTree_ItemChecked;
                }
            }
        }
예제 #17
0
        private void InitializeToolStripFind()
        {
            var items = new[]
            {
                new ComboHelper <SearchType, string>(SearchType.EditorID, "Editor ID"), new ComboHelper <SearchType, string>(SearchType.FormID, "Form ID"),
                new ComboHelper <SearchType, string>(SearchType.FullSearch, "Full Search"), new ComboHelper <SearchType, string>(SearchType.TypeEditorIdSearch, "Name w/Type"),
                new ComboHelper <SearchType, string>(SearchType.TypeFullSearch, "Full w/Type"), new ComboHelper <SearchType, string>(SearchType.FormIDRef, "Form ID Ref."),
            };

            this.toolStripIncrFindType.Items.Clear();
            foreach (var itm in items)
            {
                this.toolStripIncrFindType.Items.Add(itm);
            }

            this.toolStripIncrFindType.SelectedIndex = 0;

            // toolStripIncrFindType.SelectedItem = toolStripIncrFindType.Items[0];
            this.ResetSearch();
            this.toolStripIncrFindStatus.Text = string.Empty;

            if (!RecordStructure.Loaded)
            {
                RecordStructure.Load();
            }

            var recitems = RecordStructure.Records.Keys.OfType <object>().ToArray();

            // var recitems = TESVSnip.Properties.Settings.Default.AllESMRecords != null
            // ? TESVSnip.Properties.Settings.Default.AllESMRecords.Trim().Split(new char[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries).OfType<object>().ToArray()
            // : new object[0];
            this.toolStripIncrFindTypeFilter.Sorted = true;
            this.toolStripIncrFindTypeFilter.Items.Clear();
            this.toolStripIncrFindTypeFilter.Items.AddRange(recitems);
            this.toolStripIncrFindTypeFilter.SelectedIndex = 0;
        }
예제 #18
0
        private void toolStripInsertRecord_DropDownOpening(object sender, EventArgs e)
        {
            // find current subrecord and guess likely candidates
            // this could be much smarter
            try
            {
                this.toolStripInsertRecord.DropDownItems.Clear();

                var br = this.Selection.Record as Record;
                var sr = this.Selection.SubRecord;
                if (br != null)
                {
                    RecordStructure rs = br.GetStructure();
                    if (rs != null)
                    {
                        var  usedNames       = new StringDictionary();
                        var  delayedAddItems = new List <ToolStripMenuItem>();
                        var  srs             = (sr != null) ? sr.Structure : null;
                        bool found           = srs == null;

                        int idx = this.listSubrecord.GetFocusedItem();
                        if (idx < 0)
                        {
                            var indicies = this.listSubrecord.GetSelectionIndices();
                            idx = indicies != null && indicies.Length > 0 ? indicies[0] : -1;
                        }

                        foreach (var s in rs.subrecords)
                        {
                            if (!found && sr.Structure.Equals(s))
                            {
                                found = true;
                            }

                            if (usedNames.ContainsKey(s.name))
                            {
                                continue;
                            }

                            usedNames.Add(s.name, s.name);
                            var callback = new CallbackAction <SubrecordStructure>(
                                s,
                                subItem => {
                                var srnew = new SubRecord(subItem);
                                if (idx == -1)
                                {
                                    br.AddRecord(srnew);
                                    idx = br.SubRecords.Count - 1;
                                }
                                else
                                {
                                    br.InsertRecord(idx + 1, srnew);
                                    idx = idx + 1;
                                }

                                br.MatchRecordStructureToRecord(this.SubRecords.ToArray());
                                this.FireDataChanged();
                                this.SelectIndex(idx);
                            });
                            var item = new ToolStripMenuItem(s.name, null, callback.ExecuteEvent);
                            item.Tag = s;
                            if (found)
                            {
                                this.toolStripInsertRecord.DropDownItems.Add(item);
                            }
                            else
                            {
                                delayedAddItems.Add(item);
                            }
                        }

                        if (delayedAddItems.Count > 0)
                        {
                            if (this.toolStripInsertRecord.DropDownItems.Count > 0)
                            {
                                this.toolStripInsertRecord.DropDownItems.Add("-");
                            }

                            this.toolStripInsertRecord.DropDownItems.AddRange(delayedAddItems.ToArray());
                        }
                    }
                }
                else
                {
                    this.toolStripInsertRecord.DropDownItems.Add("NEW_");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #19
0
 internal SearchFilterAdvanced(RecordStructure rec)
     : this()
 {
     this.ConfigureRecord(rec);
 }
예제 #20
0
        public void ConfigureRecords(IEnumerable<Record> records)
        {
            var recs = records.Select(rec => rec.GetStructure()).Distinct();
            this.rec = (recs.Count() == 1) ? recs.FirstOrDefault() : null;
            if (this.rec == null)
            {
                this.filterTree.Roots = null;
            }
            else
            {
                //this.records = records;

                var srs = (from sr in this.rec.subrecords
                           let children = sr.elements.Select(se => new BatchElement() { Name = se.name, Parent = null, Record = se, Type = BatchCondElementType.Set, Checked = false }).ToList()
                           select new BatchSubrecord() { Name = string.Format("{0}: {1}", sr.name, sr.desc), Record = sr, Children = children, Checked = false, }).ToList();

                // Construct specialized editors for FormID and related headers
            #if false
                {
                    var elems = new List<TESVSnip.Data.SubrecordElement>
                    {
                        new TESVSnip.Data.SubrecordElement{name = "FormID", desc = "Form ID", hexview = true, type = "uint"},
                        new TESVSnip.Data.SubrecordElement{name = "Flags1", desc = "Flags 1", hexview = true, type = "uint"},
                        new TESVSnip.Data.SubrecordElement{name = "Flags2", desc = "Flags 2", hexview = true, type = "uint"},
                        new TESVSnip.Data.SubrecordElement{name = "Flags3", desc = "Flags 3", hexview = true, type = "uint"},
                    };
                    var frmHdr = new TESVSnip.Data.Subrecord { name = "Header", desc = "Record Header", Elements = elems };
                    var hdr = new SubrecordStructure(frmHdr);
                    var hdrElems = hdr.elements.Select(se =>
                        new BatchElement { Name = se.name, Parent = null, Record = se, Type = BatchCondElementType.Set, Checked = false }
                        ).ToList();
                    srs.Insert(0, new BatchSubrecord
                    {
                        Name = string.Format("{0}: {1}", hdr.name, hdr.desc),
                        Record = hdr,
                        Children = hdrElems,
                        Checked = false,
                    });
                }
            #endif

                // fix parents after assignments
                foreach (var sr in srs)
                {
                    foreach (var se in sr.Children)
                    {
                        se.Parent = sr;
                    }
                }

                this.filterTree.Roots = srs;
            }
        }
예제 #21
0
 public void SetRecordStructure(RecordStructure rec)
 {
     Initialize();
     this.filterTree.Roots = ConfigureRecord(rec);
 }
예제 #22
0
        public void ConfigureRecords(IEnumerable <Record> records)
        {
            var recs = records.Select(
                x => {
                RecordStructure rs;
                return(RecordStructure.Records.TryGetValue(x.Name, out rs) ? rs : null);
            }).Distinct();

            this.rec = (recs.Count() == 1) ? recs.FirstOrDefault() : null;
            if (this.rec == null)
            {
                this.filterTree.Roots = null;
            }
            else
            {
                this.records = records;

                var srs = (from sr in this.rec.subrecords
                           let children = sr.elements.Select(se => new BatchElement()
                {
                    Name = se.name, Parent = null, Record = se, Type = BatchCondElementType.Set, Checked = false
                }).ToList()
                                          select new BatchSubrecord()
                {
                    Name = string.Format("{0}: {1}", sr.name, sr.desc), Record = sr, Children = children, Checked = false,
                }).ToList();

                // Construct specialized editors for FormID and related headers
#if false
                {
                    var elems = new List <TESVSnip.Data.SubrecordElement>
                    {
                        new TESVSnip.Data.SubrecordElement {
                            name = "FormID", desc = "Form ID", hexview = true, type = "uint"
                        },
                        new TESVSnip.Data.SubrecordElement {
                            name = "Flags1", desc = "Flags 1", hexview = true, type = "uint"
                        },
                        new TESVSnip.Data.SubrecordElement {
                            name = "Flags2", desc = "Flags 2", hexview = true, type = "uint"
                        },
                        new TESVSnip.Data.SubrecordElement {
                            name = "Flags3", desc = "Flags 3", hexview = true, type = "uint"
                        },
                    };
                    var frmHdr = new TESVSnip.Data.Subrecord {
                        name = "Header", desc = "Record Header", Elements = elems
                    };
                    var hdr      = new SubrecordStructure(frmHdr);
                    var hdrElems = hdr.elements.Select(se =>
                                                       new BatchElement {
                        Name = se.name, Parent = null, Record = se, Type = BatchCondElementType.Set, Checked = false
                    }
                                                       ).ToList();
                    srs.Insert(0, new BatchSubrecord
                    {
                        Name     = string.Format("{0}: {1}", hdr.name, hdr.desc),
                        Record   = hdr,
                        Children = hdrElems,
                        Checked  = false,
                    });
                }
#endif

                // fix parents after assignments
                foreach (var sr in srs)
                {
                    foreach (var se in sr.Children)
                    {
                        se.Parent = sr;
                    }
                }

                this.filterTree.Roots = srs;
            }
        }
예제 #23
0
 internal SearchFilterAdvanced(RecordStructure rec)
     : this()
 {
     this.ConfigureRecord(rec);
 }
예제 #24
0
 internal RecordColumnSelect(RecordStructure rec)
     : this()
 {
     ConfigureRecord(rec);
 }
예제 #25
0
        private void InitializeToolStripFind()
        {
            if (DesignMode)
            {
                return;
            }

            if (TESVSnip.Properties.Settings.Default.SearchMRUNameList == null)
            {
                TESVSnip.Properties.Settings.Default.SearchMRUNameList = new StringCollection();
            }
            if (TESVSnip.Properties.Settings.Default.SearchMRUFormIDList == null)
            {
                TESVSnip.Properties.Settings.Default.SearchMRUFormIDList = new StringCollection();
            }
            if (TESVSnip.Properties.Settings.Default.SearchMRUFullList == null)
            {
                TESVSnip.Properties.Settings.Default.SearchMRUFullList = new StringCollection();
            }

            var items = new object[]
            {
                new MRUComboHelper <SearchType, string>(SearchType.EditorID, "Editor ID", TESVSnip.Properties.Settings.Default.SearchMRUNameList),
                new MRUComboHelper <SearchType, string>(SearchType.FormID, "Form ID", TESVSnip.Properties.Settings.Default.SearchMRUFormIDList),
                new MRUComboHelper <SearchType, string>(SearchType.FullSearch, "Full Search", TESVSnip.Properties.Settings.Default.SearchMRUFullList),
                new MRUComboHelper <SearchType, string>(SearchType.TypeEditorIdSearch, "Name w/Type", TESVSnip.Properties.Settings.Default.SearchMRUNameList),
                new MRUComboHelper <SearchType, string>(SearchType.TypeFullSearch, "Full w/Type", TESVSnip.Properties.Settings.Default.SearchMRUFullList),
                new MRUComboHelper <SearchType, string>(SearchType.FormIDRef, "Form ID Ref.", TESVSnip.Properties.Settings.Default.SearchMRUFormIDList),
                new MRUComboHelper <SearchType, string>(SearchType.BasicCriteriaRef, "Basic Search", new StringCollection()),
            };

            toolStripIncrFindType.Items.Clear();
            toolStripIncrFindType.Items.AddRange(items);

            int idx = 0;

            if (!string.IsNullOrEmpty(Properties.Settings.Default.LastSearchType))
            {
                idx = toolStripIncrFindType.FindStringExact(Properties.Settings.Default.LastSearchType);
            }
            idx = idx >= 0 ? idx : 0;
            toolStripIncrFindType.SelectedIndex = idx;

            ResetSearch();
            toolStripIncrFindStatus.Text = "";
            if (!RecordStructure.Loaded)
            {
                RecordStructure.Load();
            }
            toolStripIncrFindTypeFilter.Sorted = true;
            toolStripIncrFindTypeFilter.Items.Clear();
            if (RecordStructure.Records != null)
            {
                var recitems = RecordStructure.Records.Keys.OfType <object>().ToArray();
                toolStripIncrFindTypeFilter.Items.AddRange(recitems);
            }
            toolStripIncrFindTypeFilter.SelectedIndex = 0;

            backgroundWorker1.DoWork             += backgroundWorker1_DoWork;
            backgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted;
            backgroundWorker1.ProgressChanged    += backgroundWorker1_ProgressChanged;
        }