Beispiel #1
0
        private void MenuItemRebuildKrystalFamily_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show(
                "Re-expand and re-modulate all expansion and modulation krystals\n" +
                "in the krystals directory?\n\n" +
                "This will ensure that all krystal dependencies are up to date.",
                "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);

            if(result == DialogResult.OK)
            {
                KrystalFamily kFamily = new KrystalFamily(K.KrystalsFolder);
                kFamily.Rebuild();
                MessageBox.Show("All expansion and modulation krystals have been successfully recreated",
                    "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Beispiel #2
0
        /// <summary>
        /// The user can replace expanders and krystals using the Replace command.
        /// In order to replace (overwrite) an expander, the user loads a krystal which uses it, edits the
        /// expander, and replaces the krystal using its original name. The krystal's name includes its
        /// expander's signature (the portion of the krystal's name in brackets), so both the krystal and its
        /// expander are overwritten.
        /// To replace a krystal without changing the expander, load the krystal, expand it (with any new input(s)
        /// but without changing the expander), then replace the krystal and expander.
        /// When a krystal and/or expander are replaced, all the krystals in the krystals directory have to be
        /// rebuilt so as to preserve the relations between them. (Krystals contain references to expanders and 
        /// other krystals. Expanders contain references to other expanders.) The edited krystal may itself have
        /// changed as a result of this rebuilding (its input krystals may have changed), so it is reloaded when
        /// rebuilding has completed.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItemReplace_Click(object sender, EventArgs e)
        {
            try
            {
                string expansionKrystalFilepath = GetExpansionKrystalFilepathFromReplaceFileDialog();
                if (expansionKrystalFilepath.Length > 0)
                {
                    bool abort = true;
                    string krystalName = Path.GetFileName(expansionKrystalFilepath);
                    CheckExpansionKrystalName(krystalName); // throws exception if name is invalid
                    string expanderName = K.ExpansionOperatorFilename(krystalName);
                    string expanderPath = K.KrystalsFolder + @"\" +  expanderName;
                    if (File.Exists(expanderPath))
                    {
                        string msg = "The following krystal and expander are about to be replaced:\n\n"
                            + "              krystal:\t" + krystalName + "\n"
                            + "         expander:\t" + expanderName
                            + "\n\nNote: the krystal and expander can only be replaced together.     \n\n"
                            + "When a krystal and expander are replaced, all the krystals in the\n"
                            + "krystals directory have to be rebuilt to maintain the consistency\n"
                            + "of the relationships between them. This may result in the current\n"
                            + "krystal changing as the result of its input krystals changing.\n"
                            + "Krystals contain references to expanders and other krystals.\n\n"
                            + "Replace this krystal and expander, rebuild all the other krystals\n"
                            + "and then reload the currently loaded krystal?\n\n";
                        if (MessageBox.Show(msg, "Replace and rebuild", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,
                            MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                            abort = false;
                        else
                            abort = true;
                    }
                    else abort = false;

                    if (!abort)
                    {
                        _expander.Name = expanderName;
                        _outputKrystal.Name = krystalName;
                        _outputKrystal.Save(false, true); // save expander, but not krystal

                        KrystalFamily kFamily = new KrystalFamily(K.KrystalsFolder);
                        kFamily.Rebuild();

                        _outputKrystal = new ExpansionKrystal(expansionKrystalFilepath);
                        this.ExpandButton.Enabled = false;
                        this.ZoomLabel.Enabled = true;
                        this.ZoomComboBox.Enabled = true;
                        this.PercentLabel.Enabled = true;
                        LoadNewOutputKrystalIntoEditor();
                    }
                }
            }
            catch (ApplicationException ae)
            {
                MessageBox.Show(ae.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            //catch (SystemException ae)
            //{
            //    MessageBox.Show(ae.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            //}
        }