예제 #1
0
 public void UpdateTitle(FileNameFromPath currentPreset, bool presetDirty)
 {
     _Title = "Arma Server Cmd Util";
     if (currentPreset != null)
     {
         _Title += " - " + currentPreset.Name;
         if (presetDirty)
         {
             _Title += "*";
         }
     }
     PropertyChanged.Invoke(this, new PropertyChangedEventArgs("text"));
 }
예제 #2
0
        private void SavePreset(string fileName)
        {
            if (fileName == "")
            {
                return;
            }
            try
            {
                XmlDocument presetDoc = new XmlDocument();

                XmlElement rootXML = presetDoc.CreateElement("Save");
                presetDoc.AppendChild(rootXML);

                XmlElement prefixXML = presetDoc.CreateElement("Prefix");
                prefixXML.InnerText = cmdPrefix;
                rootXML.AppendChild(prefixXML);

                XmlElement modListXML = presetDoc.CreateElement("Mods");
                foreach (string modName in modList.CheckedItems)
                {
                    XmlElement modXML = presetDoc.CreateElement("Mod");
                    modXML.InnerText = modName;
                    modListXML.AppendChild(modXML);
                }
                rootXML.AppendChild(modListXML);

                presetDoc.Save(fileName);

                //make sure this is last in case of an exception
                currentPreset = new FileNameFromPath(fileName);
                presetDirty   = false;

                UpdateTitle();
                AddRecentPreset(fileName);
                SaveConfig();
            }
            catch
            {
                MessageBox.Show("Preset save error: Unknown reason", "Preset Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #3
0
        private void newMenu_Click(object sender, System.EventArgs e)
        {
            if (!CheckForNeededSave())
            {
                return;
            }
            inLoad = true;

            for (int i = 0; i < modList.Items.Count; ++i)
            {
                modList.SetItemChecked(i, false);
            }
            currentPreset = null;
            presetDirty   = false;

            UpdateTitle();
            UpdateOutputLine();
            SaveConfig();

            inLoad = false;
        }
예제 #4
0
        private void LoadPreset(string fileName)
        {
            try
            {
                inLoad = true;
                XmlDocument presetDoc = new XmlDocument();
                presetDoc.Load(fileName);

                XmlElement rootXMl = presetDoc["Save"];
                if (rootXMl == null)
                {
                    throw new XmlException("Failed to find root element \"Save\"");
                }

                XmlElement prefixXMl = rootXMl["Prefix"];
                if (prefixXMl == null)
                {
                    throw new XmlException("Failed to find element \"Prefix\"");
                }
                string     prefix  = prefixXMl.InnerText;
                ArrayList  mods    = new ArrayList();
                XmlElement modsXML = rootXMl["Mods"];
                if (modsXML == null)
                {
                    throw new XmlException("Failed to find element \"Mods\"");
                }
                foreach (XmlElement modNode in modsXML)
                {
                    mods.Add(modNode.InnerText);
                }

                //xml load finished

                cmdPrefix = prefix;
                for (int i = 0; i < modList.Items.Count; ++i)
                {
                    modList.SetItemChecked(i, false);
                }
                foreach (string mod in mods)
                {
                    int i = 0;
                    for (; i < modList.Items.Count; ++i)
                    {
                        string listedMod = (string)modList.Items[i];
                        if (listedMod == mod)
                        {
                            modList.SetItemChecked(i, true);
                            break;
                        }
                    }
                    if (i == modList.Items.Count)
                    {
                        //failed to find mod
                        MessageBox.Show(string.Format("Failed to load mod \"{0}\" from preset \"{1}\"\nIt will not be included", mod, fileName), "Preset Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }

                currentPreset = new FileNameFromPath(fileName);
                presetDirty   = false;

                UpdateTitle();
                UpdateOutputLine();
                AddRecentPreset(fileName);
                SaveConfig();
            }
            catch (FileNotFoundException)
            {
                //fine, do nothing
                return;
            }
            catch (XmlException ex)
            {
                MessageBox.Show(string.Format("Failed to load preset \"{0}\"\nXML Parse Error(Line:{2},Col:{3}):\n{1}", fileName, ex.Message, ex.LineNumber, ex.LinePosition), "Preset Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch
            {
                MessageBox.Show("Preset load error: Unknown reason", "Preset Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                inLoad = false;
            }
        }