public ConfigDialog(ITranslation i18n, OpenBveLocalRegistry registry) { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); foreach (Control ctrl1 in Controls) { if (!string.IsNullOrEmpty(ctrl1.Tag as string)) { ctrl1.Text = i18n.Translate("bpmplugin_openbve_configform_" + ctrl1.Tag as string); } foreach (Control ctrl2 in ctrl1.Controls) { if (!string.IsNullOrEmpty(ctrl2.Tag as string)) { ctrl2.Text = i18n.Translate("bpmplugin_openbve_configform_" + ctrl2.Tag as string); } } } Text = i18n.Translate("bpmplugin_openbve_configform_title", registry.GetHashCode().ToString("X8")); this.registry = registry; this.i18n = i18n; textDatabase.Text = registry.DatabaseFolder; textRailway.Text = registry.RouteInstallationDirectory; textTrain.Text = registry.TrainInstallationDirectory; textOther.Text = registry.OtherInstallationDirectory; textLoksim.Text = registry.LoksimPackageInstallationDirectory; }
void BtnDatabaseClick(object sender, EventArgs e) { var dir = textDatabase.Text; if (!OpenBveLocalRegistry.IsPathValid(dir)) { dir = ""; } else { while (!Directory.Exists(dir)) { dir = dir == Path.GetDirectoryName(dir) ? "" : Path.GetDirectoryName(dir); } } var ofd = new OpenFileDialog() { Filter = "Packages.xml|packages.xml", InitialDirectory = dir }; if (ofd.ShowDialog() == DialogResult.OK) { textDatabase.Text = Path.GetDirectoryName(ofd.FileName); } }
private void ApplyToRegistry(ref OpenBveLocalRegistry reg) { reg.DatabaseFolder = textDatabase.Text; reg.RouteInstallationDirectory = textRailway.Text; reg.TrainInstallationDirectory = textTrain.Text; reg.OtherInstallationDirectory = textOther.Text; reg.LoksimPackageInstallationDirectory = textLoksim.Text; }
public IRegistry[] AutoDetect() { var registries = new List <OpenBveLocalRegistry>(); switch (Environment.OSVersion.Platform) { case PlatformID.Win32NT: case PlatformID.Win32S: case PlatformID.Win32Windows: case PlatformID.WinCE: case PlatformID.Xbox: { const string InnoAppID = "{D617A45D-C2F6-44D1-A85C-CA7FFA91F7FC}_is1"; string[] InstallLocations = new RegistryKey[] { Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + InnoAppID), Registry.CurrentUser.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" + InnoAppID), Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + InnoAppID), Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" + InnoAppID), }.Select(regKey => regKey != null ? regKey.GetValue("InstallLocation", null) : null).OfType <string>().Distinct().ToArray(); foreach (string location in InstallLocations) { string assemblyFile = OpenBveApi.Path.CombineFile(location, "OpenBve.exe"); if (!File.Exists(assemblyFile)) { continue; } string programConfigFile = OpenBveApi.Path.CombineFile(OpenBveApi.Path.CombineDirectory(OpenBveApi.Path.CombineDirectory(location, "UserData"), "Settings"), "filesystem.cfg"); if (File.Exists(programConfigFile)) { var newRegistery = new OpenBveLocalRegistry(programConfigFile, assemblyFile); newRegistery.IsFromAutoDetect = true; registries.Add(newRegistery); } } break; } case PlatformID.Unix: case PlatformID.MacOSX: case (PlatformID)128: // Earlier Mono { // TODO: Support them break; } } string appDataConfigFile = OpenBveApi.Path.CombineFile(OpenBveApi.Path.CombineDirectory(OpenBveApi.Path.CombineDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "openBVE"), "Settings"), "filesystem.cfg"); if (File.Exists(appDataConfigFile)) { // HACK: There is no way to get the location of OpenBVE, I don't know if doing this is proper var newRegistery = new OpenBveLocalRegistry(appDataConfigFile, Assembly.GetEntryAssembly().Location); newRegistery.IsFromAutoDetect = true; registries.Add(newRegistery); } return(registries.ToArray()); }
public override bool Equals(object obj) { OpenBveLocalRegistry other = obj as OpenBveLocalRegistry; if (other == null) { return(false); } return(this.DatabaseFolder == other.DatabaseFolder && this.RouteInstallationDirectory == other.RouteInstallationDirectory && this.TrainInstallationDirectory == other.TrainInstallationDirectory && this.OtherInstallationDirectory == other.OtherInstallationDirectory && this.LoksimPackageInstallationDirectory == other.LoksimPackageInstallationDirectory); }
void BrowseBtnClick(object sender, EventArgs e) { var target = grpInsDir.Controls[(sender as Button).Name.Replace("btn", "text")] as TextBox; var fbd = new OpenBve.FolderSelectDialog(); var dir = target.Text; if (!OpenBveLocalRegistry.IsPathValid(dir)) { dir = ""; } else { while (!Directory.Exists(dir)) { dir = dir == Path.GetDirectoryName(dir) ? "" : Path.GetDirectoryName(dir); } } fbd.InitialDirectory = dir; if (fbd.Show()) { target.Text = fbd.FileName; } }