Example #1
0
        private void Reset()
        {
            curPath                        = "";
            textBoxCurPath.Text            = "No Path Loaded";
            textBoxName.Text               = "";
            textBoxComment.Text            = "";
            textBoxCategories.Text         = "";
            textBoxExe.Text                = "";
            textBoxExeA320.Text            = "";
            textBoxIcon.Text               = "";
            checkBoxLaunchWithFile.Checked = false;
            EnableFields(false);
            textBoxMimeTypes.Text           = "";
            checkBoxTerminal.Checked        = false;
            textBoxManual.Text              = "";
            checkBoxJoystickMode.Checked    = false;
            checkBoxGSensor.Checked         = false;
            checkBoxHardwareScaling.Checked = false;

            desktopFileOpt = DesktopFileOption.Ignore;
        }
Example #2
0
 private void richButtonIgnore_Click(object sender, EventArgs e)
 {
     option       = DesktopFileOption.Ignore;
     DialogResult = DialogResult.OK;
 }
Example #3
0
 private void richButtonUseAsIs_Click(object sender, EventArgs e)
 {
     option       = DesktopFileOption.UseAsIs;
     DialogResult = DialogResult.OK;
 }
Example #4
0
 private void richButtonLoad_Click(object sender, EventArgs e)
 {
     option       = DesktopFileOption.LoadExisting;
     DialogResult = DialogResult.OK;
 }
Example #5
0
        private void LoadDirectory(string path)
        {
            Reset();
            curPath             = path;
            textBoxCurPath.Text = path;

            List <string>        desktopFiles     = new List <string>();
            IEnumerable <string> tempDesktopFiles = Directory.EnumerateFiles(path, "*.desktop");

            foreach (string desktopFile in tempDesktopFiles)
            {
                desktopFiles.Add(desktopFile);
            }

            if (desktopFiles.Count > 0)
            {
                ExistingDesktopFilesWindow desktopAskWindow = new ExistingDesktopFilesWindow();
                DialogResult result = desktopAskWindow.ShowDialog();
                if (result == DialogResult.OK)
                {
                    desktopFileOpt = desktopAskWindow.DesktopFileOption;

                    if (desktopFileOpt == DesktopFileOption.LoadExisting)
                    {
                        string      execGcw          = "";
                        string      execA320         = "";
                        DesktopFile desktopFileToUse = null;

                        // Load desktop files
                        List <DesktopFile> loadedDesktopFiles = new List <DesktopFile>();
                        foreach (string desktopFilename in desktopFiles)
                        {
                            DesktopFile df = new DesktopFile();
                            Regex       platformPattern = new Regex("default\\.([ ._0-9A-Za-z-]+)\\.desktop");
                            string      platform        = platformPattern.Match(Path.GetFileName(desktopFilename)).Groups[1].Value;
                            if (!df.ReadDesktopFile(path, platform))
                            {
                                MessageBox.Show("Loading of existing desktop file failed: " + df.LastError, "Load Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                continue;
                            }

                            loadedDesktopFiles.Add(df);

                            if (platform == "gcw0")
                            {
                                execGcw = df.Exec;
                            }
                            else if (platform == "a320")
                            {
                                execA320 = df.Exec;
                            }

                            if (desktopFileToUse == null)
                            {
                                desktopFileToUse = df;
                            }
                        }

                        if (loadedDesktopFiles.Count > 1)
                        {
                            // Compare desktop files
                            // If they differ other than the executable, prompt to pick one to use
                            if (desktopFileToUse != null)
                            {
                                foreach (DesktopFile df in loadedDesktopFiles)
                                {
                                    if (!desktopFileToUse.Compare(df))
                                    {
                                        LoadDesktopSelectorDialog selectorDialog = new LoadDesktopSelectorDialog();
                                        selectorDialog.SetData(loadedDesktopFiles);
                                        DialogResult selectorResult = selectorDialog.ShowDialog();
                                        if (result == DialogResult.OK)
                                        {
                                            DesktopFile selected = selectorDialog.SelectedData;
                                            if (selected != null)
                                            {
                                                desktopFileToUse = selected;
                                            }
                                            else
                                            {
                                                desktopFileToUse = null;
                                            }
                                        }
                                        else
                                        {
                                            desktopFileToUse = null;
                                        }
                                        break;
                                    }
                                }
                            }
                        }

                        if (desktopFileToUse != null)
                        {
                            // Set fields with desktop file data
                            textBoxName.Text                = desktopFileToUse.Name;
                            textBoxComment.Text             = desktopFileToUse.Comment;
                            textBoxCategories.Text          = desktopFileToUse.Categories;
                            textBoxExe.Text                 = execGcw;
                            textBoxExeA320.Text             = execA320;
                            textBoxIcon.Text                = desktopFileToUse.Icon;
                            checkBoxLaunchWithFile.Checked  = desktopFileToUse.WithFile;
                            textBoxMimeTypes.Text           = desktopFileToUse.MimeTypes;
                            checkBoxTerminal.Checked        = desktopFileToUse.Terminal;
                            textBoxManual.Text              = desktopFileToUse.Manual;
                            checkBoxJoystickMode.Checked    = desktopFileToUse.JoystickMode;
                            checkBoxGSensor.Checked         = desktopFileToUse.GSensor;
                            checkBoxHardwareScaling.Checked = desktopFileToUse.HardwareScaling;
                        }

                        EnableFields(true);
                    }
                    else if (desktopFileOpt == DesktopFileOption.UseAsIs)
                    {
                        SetUsingExistingFilesInAllFields();
                    }
                    else if (desktopFileOpt == DesktopFileOption.Ignore)
                    {
                        EnableFields(true);
                    }
                }
                else
                {
                    return;
                }
            }

            if (desktopFileOpt == DesktopFileOption.Ignore)
            {
                // Guess values
                IEnumerable <string> files = Directory.EnumerateFiles(path, "*.dge");
                string probableExe         = "";
                foreach (string file in files)
                {
                    probableExe = Path.GetFileName(file);
                    break;
                }

                string probableIcon   = "";
                string firstIconMatch = "";
                files = Directory.EnumerateFiles(path, "*.png");
                foreach (string file in files)
                {
                    if (firstIconMatch.Length == 0)
                    {
                        firstIconMatch = Path.GetFileName(file);
                    }

                    if (Path.GetFileNameWithoutExtension(file) == Path.GetFileNameWithoutExtension(probableExe))
                    {
                        probableIcon = Path.GetFileName(file);
                        break;
                    }
                }

                if (probableIcon == "")
                {
                    probableIcon = firstIconMatch;
                }

                textBoxName.Text = Path.GetFileName(path);
                textBoxExe.Text  = probableExe;
                textBoxIcon.Text = probableIcon;

                EnableFields(true);
            }
        }