Пример #1
0
        private void SaveFile(string filename, int filterIndex = 0)
        {
            var extension = Path.GetExtension(filename).ToLower();

            var handler = filterIndex > 0 ?
                          _saveHandler.GetHandlerForFilterIndex(filterIndex) :
                          _saveHandler.GetHandlerForExtension(extension);

            if (handler == null)
            {
                return;
            }

            var settingsForm = handler.GetSettingsForm();

            if (settingsForm != null)
            {
                settingsForm.Icon            = this.Icon;
                settingsForm.StartPosition   = FormStartPosition.CenterParent;
                settingsForm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
                settingsForm.Text            = "Save as...";
                var closeDialogSuccess = settingsForm.ShowDialog(this) == DialogResult.OK;
                if (!closeDialogSuccess)
                {
                    return;
                }
            }

            Thread loadDataThread = new Thread(delegate()
            {
                handler.Save(filename, m_playerData);
                if (InvokeRequired)
                {
                    BeginInvoke(new Action(() =>
                    {
                        m_loadingForm.Close();
                    }));
                }
            });

            loadDataThread.Start();
            m_loadingForm.DisplayedMessage = "Saving pattern...";
            m_loadingForm.ShowDialog(this);
        }