예제 #1
0
        private void EditForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.parent.CancelClosing = false;
            this.parent.ActivateMdiForm(this);
            if (this.Dirty)
            {
                string scriptToSave = ScriptName;
                if (LSLIPathHelper.IsExpandedLSL(ScriptName))
                {
                    // Expanded scripts will always be saved as LSLI's
                    scriptToSave = LSLIPathHelper.CreateCollapsedScriptName(scriptToSave);
                }

                DialogResult dialogResult = MessageBox.Show(this, @"Save """ + scriptToSave + @"""?", "File has changed", MessageBoxButtons.YesNoCancel);
                if (dialogResult == DialogResult.Yes)
                {
                    e.Cancel = !this.parent.SaveFile(this, false);
                }
                else
                {
                    e.Cancel = (dialogResult == DialogResult.Cancel);
                }
            }

            if (!e.Cancel)
            {
                // Close related readonly's if this is an expanded script
                if (LSLIPathHelper.IsExpandedLSL(ScriptName))
                {
                    // Check if a LSLI readonly is open
                    EditForm readOnlyLSLI = (EditForm)parent.GetForm(Path.GetFileName(LSLIPathHelper.GetReadOnlyTabName(ScriptName)));

                    if (readOnlyLSLI != null)
                    {
                        readOnlyLSLI.Close();
                    }
                }

                if (!this.parent.IsReadOnly(this)) // If this is not a readonly (LSLI)
                {
                    // Delete expanded file when closing
                    string   expandedFile = LSLIPathHelper.CreateExpandedPathAndScriptName(FullPathName);
                    EditForm expandedForm = (EditForm)parent.GetForm(LSLIPathHelper.GetExpandedTabName(Path.GetFileName(expandedFile)));

                    if (expandedForm != null && !LSLIPathHelper.IsExpandedLSL(ScriptName))
                    {
                        expandedForm.Close();
                    }

                    if (File.Exists(expandedFile))
                    {
                        File.Delete(expandedFile);
                    }
                }
            }
            this.parent.CancelClosing = e.Cancel;
        }
예제 #2
0
        public void SaveCurrentFile(string strPath)
        {
            // Check if this is an expanded.lsl
            if (LSLIPathHelper.IsExpandedLSL(strPath))
            {
                string LSLIfilePath = LSLIPathHelper.CreateCollapsedPathAndScriptName(strPath);
                // Check if an LSLI version of this script exists
                if (File.Exists(LSLIfilePath))
                {
                    // Save the LSLI file as well
                    File.WriteAllText(LSLIfilePath, LSLIConverter.CollapseToLSLI(this.numberedTextBoxUC1.TextBox.Text));
                    EditForm form = null;

                    // If it's currently open, then refresh it
                    for (int i = 0; i < Application.OpenForms.Count; i++)
                    {
                        Form   openForm = Application.OpenForms[i];
                        string filename = LSLIPathHelper.TrimStarsAndWhiteSpace(openForm.Text);
                        if (filename == Path.GetFileName(LSLIfilePath))
                        {
                            form = (EditForm)openForm;
                        }
                    }

                    if (form != null && form.Enabled)
                    {
                        parent.OpenFile(LSLIfilePath, Guid.NewGuid(), true);
                        form.Close();
                    }
                }
                this.numberedTextBoxUC1.TextBox.Dirty = false;
                this.Text = LSLIPathHelper.GetExpandedTabName(strPath);
            }
            else
            {
                this.FullPathName = strPath;
                Encoding encodeAs = this.encodedAs;
                if (this.IsScript && encodeAs == null)
                {
                    switch (Properties.Settings.Default.OutputFormat)
                    {
                    case "UTF8":
                        encodeAs = Encoding.UTF8;
                        break;

                    case "Unicode":
                        encodeAs = Encoding.Unicode;
                        break;

                    case "BigEndianUnicode":
                        encodeAs = Encoding.BigEndianUnicode;
                        break;

                    default:
                        encodeAs = Encoding.Default;
                        break;
                    }
                }
                else if (encodeAs == null)
                {
                    encodeAs = Encoding.UTF8;
                }

                this.numberedTextBoxUC1.TextBox.SaveCurrentFile(strPath, encodeAs);
                this.encodedAs = encodeAs;
            }
            this.m_IsNew = false;
        }