public override void LoadWindowControls(StackPanel control, string parent, string name, Type type, object[] attributes, Int32 member) { LoadLabelControl(control, name); DataTypeAttribute dataAtt = ReflectionExt.FindAttribute <DataTypeAttribute>(attributes); ComboBox cbValue = new ComboBox(); cbValue.VirtualizationMode = ItemVirtualizationMode.Simple; int chosenIndex = member; EntryDataIndex nameIndex = DataManager.Instance.DataIndices[dataAtt.DataType]; List <string> items = new List <string>(); if (dataAtt.IncludeInvalid) { items.Add("---"); chosenIndex++; } for (int ii = 0; ii < nameIndex.Count; ii++) { items.Add(ii.ToString() + ": " + nameIndex.Entries[ii].GetLocalString(false)); } var subject = new Subject <List <string> >(); cbValue.Bind(ComboBox.ItemsProperty, subject); subject.OnNext(items); cbValue.SelectedIndex = Math.Min(Math.Max(0, chosenIndex), items.Count - 1); control.Children.Add(cbValue); }
public static void IndexNamedData(string dataPath) { try { EntryDataIndex fullGuide = new EntryDataIndex(); foreach (string dir in PathMod.GetModFiles(dataPath, "*" + DataManager.DATA_EXT)) { string file = Path.GetFileNameWithoutExtension(dir); int num = Convert.ToInt32(file); IEntryData data = (IEntryData)DataManager.LoadData(dir); while (fullGuide.Entries.Count <= num) { fullGuide.Entries.Add(new EntrySummary()); } fullGuide.Entries[num] = data.GenerateEntrySummary(); } using (Stream stream = new FileStream(PathMod.ModPath(dataPath + "index.idx"), FileMode.Create, FileAccess.Write, FileShare.None)) { using (BinaryWriter writer = new BinaryWriter(stream)) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, fullGuide); } } } catch (Exception ex) { DiagManager.Instance.LogError(new Exception("Error importing index at " + dataPath + "\n", ex)); } }
public override string GetString(Int32 obj, Type type, object[] attributes) { DataTypeAttribute dataAtt = ReflectionExt.FindAttribute <DataTypeAttribute>(attributes); EntryDataIndex nameIndex = DataManager.Instance.DataIndices[dataAtt.DataType]; if (obj >= 0 && obj < nameIndex.Count) { return(nameIndex.Entries[obj].Name.ToLocal()); } return("---"); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is int idx) { DataManager.DataType dataType = (DataManager.DataType)Int32.Parse((string)parameter); EntryDataIndex nameIndex = DataManager.Instance.DataIndices[dataType]; if (idx >= 0 && idx < nameIndex.Count) { return(nameIndex.Entries[idx].Name.ToLocal()); } return("---"); } return(value); }
public static void IndexHardcodedNamedData(string dataPath, GetNamedData getData, int max) { try { EntryDataIndex fullGuide = new EntryDataIndex(); fullGuide.Entries = new EntrySummary[max]; for (int ii = 0; ii < max; ii++) { IEntryData data = getData(ii); fullGuide.Entries[ii] = data.GenerateEntrySummary(); } DataManager.SaveData(dataPath + "index.idx", fullGuide); } catch (Exception ex) { DiagManager.Instance.LogError(new Exception("Error importing index at " + dataPath + "\n", ex)); } }
/// <summary> /// Returns the time string (hh:mm:ss) of the entry that matches the input sheet, tab and ddescription. /// <para> </para> /// Returns 00:00:00 if a matching entry does not exist. /// </summary> /// <param name="logName"></param> /// <param name="projectName"></param> /// <param name="dataIndex"></param> /// <returns></returns> public static string getTodaysEntryData(string logName, string projectName, string projectDescription, EntryDataIndex dataIndex) { // set the result string to a default return value string result = "00:00:00"; for (int i = 0; i < m_todaysLogs.Length; i++) { if (!m_todaysLogs[i].Contains(m_dataSeperator)) { continue; } // split the entry into its components string[] logEntryData = m_todaysLogs[i].Split(m_dataSeperator.ToCharArray()); // check if the entry exists if (logEntryData[(int)EntryDataIndex.ProjectDescription] == projectDescription && logEntryData[(int)EntryDataIndex.ProjectName] == projectName && logEntryData[(int)EntryDataIndex.LogName] == logName) { // set the result to the strig of the data index called for result = logEntryData[(int)dataIndex]; } } return(result); }
public override void LoadWindowControls(StackPanel control, string parent, string name, Type type, object[] attributes, MonsterID member) { LoadLabelControl(control, name); MonsterIDAttribute dataAtt = ReflectionExt.FindAttribute <MonsterIDAttribute>(attributes); { Avalonia.Controls.Grid innerPanel1 = getSharedRowPanel(2); TextBlock lblSpecies = new TextBlock(); lblSpecies.Text = "Species:"; lblSpecies.VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center; lblSpecies.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right; innerPanel1.Children.Add(lblSpecies); innerPanel1.ColumnDefinitions[0].Width = new GridLength(46); lblSpecies.SetValue(Avalonia.Controls.Grid.ColumnProperty, 0); ComboBox cbSpecies = new ComboBox(); ComboBox cbForms = new ComboBox(); cbSpecies.VirtualizationMode = ItemVirtualizationMode.Simple; int chosenSpecies = member.Species; EntryDataIndex nameIndex = DataManager.Instance.DataIndices[DataManager.DataType.Monster]; List <string> species = new List <string>(); List <string> forms = new List <string>(); if (dataAtt.InvalidSpecies) { species.Add("---"); chosenSpecies++; } for (int ii = 0; ii < nameIndex.Count; ii++) { species.Add(ii.ToString() + ": " + nameIndex.Entries[ii].GetLocalString(false)); } var speciesSubject = new Subject <List <string> >(); var formSubject = new Subject <List <string> >(); cbSpecies.Bind(ComboBox.ItemsProperty, speciesSubject); speciesSubject.OnNext(species); cbSpecies.SelectedIndex = Math.Min(Math.Max(0, chosenSpecies), species.Count - 1); cbSpecies.SelectionChanged += (object sender, SelectionChangedEventArgs e) => { loadForms(dataAtt, cbSpecies.SelectedIndex, forms); cbForms.SelectedIndex = -1; cbForms.SelectedIndex = Math.Min(Math.Max(0, cbForms.SelectedIndex), forms.Count - 1); formSubject.OnNext(forms); }; innerPanel1.Children.Add(cbSpecies); cbSpecies.SetValue(Avalonia.Controls.Grid.ColumnProperty, 1); control.Children.Add(innerPanel1); Avalonia.Controls.Grid innerPanel2 = getSharedRowPanel(2); TextBlock lblForm = new TextBlock(); lblForm.Margin = new Thickness(8, 0, 0, 0); lblForm.Text = "Form:"; lblForm.VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center; lblForm.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right; innerPanel2.Children.Add(lblForm); innerPanel2.ColumnDefinitions[0].Width = new GridLength(46); lblForm.SetValue(Avalonia.Controls.Grid.ColumnProperty, 0); cbForms.VirtualizationMode = ItemVirtualizationMode.Simple; int chosenForm = member.Form; loadForms(dataAtt, member.Species, forms); if (dataAtt.InvalidForm) { chosenForm++; } cbForms.Bind(ComboBox.ItemsProperty, formSubject); formSubject.OnNext(forms); cbForms.SelectedIndex = Math.Min(Math.Max(0, chosenForm), forms.Count - 1); innerPanel2.Children.Add(cbForms); cbForms.SetValue(Avalonia.Controls.Grid.ColumnProperty, 1); control.Children.Add(innerPanel2); } Avalonia.Controls.Grid innerPanel3 = getSharedRowPanel(4); { TextBlock lblSkin = new TextBlock(); lblSkin.Margin = new Thickness(8, 0, 0, 0); lblSkin.Text = "Skin:"; lblSkin.VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center; lblSkin.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right; innerPanel3.Children.Add(lblSkin); innerPanel3.ColumnDefinitions[0].Width = new GridLength(46); lblSkin.SetValue(Avalonia.Controls.Grid.ColumnProperty, 0); ComboBox cbSkin = new ComboBox(); cbSkin.VirtualizationMode = ItemVirtualizationMode.Simple; int chosenIndex = member.Skin; EntryDataIndex nameIndex = DataManager.Instance.DataIndices[DataManager.DataType.Skin]; List <string> items = new List <string>(); if (dataAtt.InvalidSkin) { items.Add("---"); chosenIndex++; } for (int ii = 0; ii < nameIndex.Count; ii++) { items.Add(ii.ToString() + ": " + nameIndex.Entries[ii].GetLocalString(false)); } var subject = new Subject <List <string> >(); cbSkin.Bind(ComboBox.ItemsProperty, subject); subject.OnNext(items); cbSkin.SelectedIndex = Math.Min(Math.Max(0, chosenIndex), items.Count - 1); innerPanel3.Children.Add(cbSkin); cbSkin.SetValue(Avalonia.Controls.Grid.ColumnProperty, 1); } { TextBlock lblGender = new TextBlock(); lblGender.Margin = new Thickness(8, 0, 0, 0); lblGender.Text = "Gender:"; lblGender.VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center; lblGender.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right; innerPanel3.Children.Add(lblGender); innerPanel3.ColumnDefinitions[2].Width = new GridLength(46); lblGender.SetValue(Avalonia.Controls.Grid.ColumnProperty, 2); ComboBox cbGender = new ComboBox(); cbGender.VirtualizationMode = ItemVirtualizationMode.Simple; int chosenIndex = (int)member.Gender; List <string> items = new List <string>(); if (dataAtt.InvalidGender) { items.Add("---"); chosenIndex++; } for (int ii = 0; ii <= (int)Gender.Female; ii++) { items.Add(((Gender)ii).ToLocal()); } var subject = new Subject <List <string> >(); cbGender.Bind(ComboBox.ItemsProperty, subject); subject.OnNext(items); cbGender.SelectedIndex = Math.Min(Math.Max(0, chosenIndex), items.Count - 1); innerPanel3.Children.Add(cbGender); cbGender.SetValue(Avalonia.Controls.Grid.ColumnProperty, 3); } control.Children.Add(innerPanel3); }