コード例 #1
0
        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;
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
 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;
 }
コード例 #4
0
        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());
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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;
            }
        }