public void SavePreferences(PersonalPreferences personalPrefs, ProjectPreferences projectPrefs) { PersonalPrefs = personalPrefs.Clone(); ProjectPrefs = projectPrefs.Clone(); EditorPrefs.SetString(PERSONAL_PREFERENCES_KEY, JsonUtility.ToJson(PersonalPrefs)); File.WriteAllText(PROJECT_PREFERENCES_PATH, JsonUtility.ToJson(ProjectPrefs, true)); SVNContextMenusManager.SetupContextType(PersonalPrefs.ContextMenusClient); PreferencesChanged?.Invoke(); }
private void BuildUnitPerTime(ImGui gui, bool fluid, ProjectPreferences preferences) { var unit = fluid ? preferences.fluidUnit : preferences.itemUnit; var newUnit = unit; if (gui.BuildRadioButton("Simple Amount" + preferences.GetPerTimeUnit().suffix, unit == 0f)) { newUnit = 0f; } using (gui.EnterRow()) { if (gui.BuildRadioButton("Custom: 1 unit equals", unit != 0f)) { newUnit = 1f; } gui.AllocateSpacing(); gui.allocator = RectAllocator.RightRow; if (!fluid) { if (gui.BuildButton("Set from belt")) { gui.BuildObjectSelectDropDown <EntityBelt>(Database.allBelts, DataUtils.DefaultOrdering, setBelt => { preferences.RecordUndo(true); preferences.itemUnit = setBelt.beltItemsPerSecond; }, "Select belt", extra: b => DataUtils.FormatAmount(b.beltItemsPerSecond, UnitOfMeasure.PerSecond)); } } gui.BuildText("per second"); if (gui.BuildTextInput(DataUtils.FormatAmount(unit, UnitOfMeasure.None), out var updated, null, Icon.None, true) && DataUtils.TryParseAmount(updated, out var parsed, UnitOfMeasure.None)) { newUnit = parsed; } } gui.AllocateSpacing(1f); if (newUnit != unit) { preferences.RecordUndo(true); if (fluid) { preferences.fluidUnit = newUnit; } else { preferences.itemUnit = newUnit; } } }
private void Cleanup(string key, object value) { if (value is float) { ProjectPreferences.RemoveFloat(key); } else if (value is bool) { ProjectPreferences.RemoveBool(key); } else if (value is int) { ProjectPreferences.RemoveInt(key); } else if (value is string) { ProjectPreferences.RemoveString(key); } }
private void LoadPreferences() { var personalPrefsData = EditorPrefs.GetString(PERSONAL_PREFERENCES_KEY, string.Empty); if (!string.IsNullOrEmpty(personalPrefsData)) { PersonalPrefs = JsonUtility.FromJson <PersonalPreferences>(personalPrefsData); } else { PersonalPrefs = new PersonalPreferences(); #if UNITY_EDITOR_WIN PersonalPrefs.ContextMenusClient = ContextMenusClient.TortoiseSVN; #else PersonalPrefs.ContextMenusClient = ContextMenusClient.SnailSVN; #endif } if (File.Exists(PROJECT_PREFERENCES_PATH)) { ProjectPrefs = JsonUtility.FromJson <ProjectPreferences>(File.ReadAllText(PROJECT_PREFERENCES_PATH)); } else { ProjectPrefs = new ProjectPreferences(); } LoadTextures(); // If WiseSVN was just added to the project, Unity won't manage to load the textures the first time. Try again next frame. if (FileStatusIcons[(int)VCFileStatus.Added].image == null) { EditorApplication.CallbackFunction reloadTextures = null; reloadTextures = () => { EditorApplication.update -= reloadTextures; LoadTextures(); }; EditorApplication.update += reloadTextures; } }
public void TestNewPreferences() { try { foreach (var test in TestData) { if (test.Value is float) { var value = (float)test.Value; ProjectPreferences.Set(test.Key, value); Assert.AreEqual(value, ProjectPreferences.Get(test.Key, 0f)); } else if (test.Value is bool) { var value = (bool)test.Value; ProjectPreferences.Set(test.Key, value); Assert.AreEqual(value, ProjectPreferences.Get(test.Key, false)); } else if (test.Value is int) { var value = (int)test.Value; ProjectPreferences.Set(test.Key, value); Assert.AreEqual(value, ProjectPreferences.Get(test.Key, 0)); } else if (test.Value is string) { var value = (string)test.Value; ProjectPreferences.Set(test.Key, value); Assert.AreEqual(value, ProjectPreferences.Get(test.Key, string.Empty)); } } } finally { foreach (var test in TestData) { Cleanup(test.Key, test.Value); } } }
public void TestNewPreferences() { try { foreach (var test in TestData) { if (test.Value is float floatValue) { ProjectPreferences.Set(test.Key, floatValue); Assert.AreEqual(floatValue, ProjectPreferences.Get(test.Key, 0f)); } else if (test.Value is bool boolValue) { ProjectPreferences.Set(test.Key, boolValue); Assert.AreEqual(boolValue, ProjectPreferences.Get(test.Key, false)); } else if (test.Value is int intValue) { ProjectPreferences.Set(test.Key, intValue); Assert.AreEqual(intValue, ProjectPreferences.Get(test.Key, 0)); } else if (test.Value is string stringValue) { ProjectPreferences.Set(test.Key, stringValue); Assert.AreEqual(stringValue, ProjectPreferences.Get(test.Key, string.Empty)); } } } finally { foreach (var test in TestData) { Cleanup(test.Key, test.Value); } } }
public Project() : base(new UndoSystem()) { settings = new ProjectSettings(this); preferences = new ProjectPreferences(this); }
private void PrepareData() { //Load all the projects for the User. currentDb = new SkuDataDbDataContext(); if (currentProjectID != Guid.Empty) { currentProject = currentDb.Projects.Single(p => p.ID == currentProjectID); Text = Text + " : " + currentProject.ProjectDescription; projPreferences = currentProject.ProjectPreferences; } else { //ID and other fields will be set in the defaultValues method. currentProject = new Project(); currentDb.Projects.InsertOnSubmit(currentProject); Text = Text + " : <New Project>"; newProject = true; currentProjectID = currentProject.ID; projPreferences = new ProjectPreferences { ListSeparator = "; ", ReturnSeparator = "|" }; } tbProjectName.Text = currentProject.ProjectName; //can edit Project name only for new projects tbProjectName.Enabled = newProject; tbDatabaseName.Text = currentProject.DatabaseName; //can edit database name only for new projects tbDatabaseName.Enabled = newProject; tbListSeparator.Text = projPreferences.ListSeparator; tbReturnSeparator.Text = projPreferences.ReturnSeparator; tbClientDescription.Text = currentProject.ClientDescription; tbSetName.Text = currentProject.SetName; //Field1 tbEntityField1Name.Text = currentProject.EntityField1Name; cbEntityField1ReadOnly.Checked = currentProject.EntityField1Readonly; //Field2 tbEntityField2Name.Text = currentProject.EntityField2Name; cbEntityField2ReadOnly.Checked = currentProject.EntityField2Readonly; //Field3 tbEntityField3Name.Text = currentProject.EntityField3Name; cbEntityField3ReadOnly.Checked = currentProject.EntityField3Readonly; //Field4 tbEntityField4Name.Text = currentProject.EntityField4Name; cbEntityField4ReadOnly.Checked = currentProject.EntityField4Readonly; //Field5 tbEntityField5Name.Text = currentProject.EntityField5Name; cbEntityField5ReadOnly.Checked = currentProject.EntityField5Readonly; cbEntityField5IsStatus.Checked = currentProject.EntityField5IsStatus; //Image URL tbProductSearchString.Text = currentProject.ImageUrlString; tbSchemaFillRateFilters.Text = currentProject.SchemaFillRateFilters; //Hookup all the events var allTextBoxControls = GetControls(this).Where(p => p.Name.StartsWith("tb")).ToList(); foreach (var textBoxControl in allTextBoxControls) { var method = GetType().GetMethod("tbAllFields_TextChanged", BindingFlags.NonPublic | BindingFlags.Instance); var type = typeof(EventHandler); var handler = Delegate.CreateDelegate(type, this, method); var evt = textBoxControl.GetType().GetEvent("TextChanged"); evt.AddEventHandler(textBoxControl, handler); } var allCheckBoxControls = GetControls(this).Where(p => p.Name.StartsWith("cb")).ToList(); foreach (var checkBoxControl in allCheckBoxControls) { var method = GetType().GetMethod("cbAllFields_CheckedChanged", BindingFlags.NonPublic | BindingFlags.Instance); var type = typeof(EventHandler); var handler = Delegate.CreateDelegate(type, this, method); var evt = checkBoxControl.GetType().GetEvent("CheckedChanged"); evt.AddEventHandler(checkBoxControl, handler); } }