Esempio n. 1
0
        private bool SaveScore()
        {
            if (tvwScores.SelectedNode == null ||
                tvwScores.SelectedNode.Tag == null)
            {
                return(true);
            }

            bool            res    = true;
            BaseScoreEditor editor = GetEditor();

            if (editor != null)
            {
                BaseScore score = tvwScores.SelectedNode.Tag as BaseScore;
                if (!editor.SaveScore(ref score))
                {
                    // errors while saving Cancel selection
                    res = false;
                }
                else
                {
                    if (tvwScores.SelectedNode.Text != score.Name)
                    {
                        tvwScores.SelectedNode.Text = score.Name;
                    }
                }
            }

            return(res);
        }
Esempio n. 2
0
        private void tvwScores_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (tvwScores.SelectedNode == null)
            {
                return;
            }

            // always clear
            ClearIcon();

            BaseScore bscore = tvwScores.SelectedNode.Tag as BaseScore;

            BaseScoreEditor prevEditor = GetEditor();
            BaseScoreEditor editor     = null;
            string          editorType = ScoreFactory.Instance.GetEditorType(bscore);

            if (prevEditor != null)
            {
                if (editorType != prevEditor.GetType().Name)
                {
                    pnlEditor.Controls.Clear();
                    prevEditor.SetIcon -= new EventHandler <BaseScoreEditor.SetIconIconEventArgs>(editor_SetIcon);
                    (prevEditor as Control).Dispose();
                }
                else
                {
                    editor = prevEditor;
                }
            }

            if (editor == null)
            {
                var zeditor = ScoreFactory.Instance.CreateEditor(editorType, pnlTest);
                zeditor.SetIcon += new EventHandler <BaseScoreEditor.SetIconIconEventArgs>(editor_SetIcon);
                pnlEditor.Controls.Add(zeditor);
                zeditor.Dock = DockStyle.Fill;
                editor       = zeditor as BaseScoreEditor;
            }

            editor.LoadScore(bscore, m_center);
            SetIcon(bscore.Image);

            ClearTestGrid();
            btnTest.Enabled      = editor.HasTest;
            tsbMoveUp.Enabled    = tvwScores.SelectedNode.PrevNode != null;
            tsbMoveDown.Enabled  = tvwScores.SelectedNode.NextNode != null;
            tsbMoveBack.Enabled  = tvwScores.SelectedNode.Parent != null;
            tsbMoveRight.Enabled = tsbMoveUp.Enabled;

            tsbCopySettings.Enabled  = bscore.CanApplySettings();
            tsbApplySettings.Enabled = tsbCopySettings.Enabled && m_scoreSettings != null && bscore.GetType() == m_scoreSettings.GetType();
        }
Esempio n. 3
0
        private void tsbApplySettings_Click(object sender, EventArgs e)
        {
            if (m_scoreSettings == null)
            {
                return;
            }
            if (tvwScores.SelectedNode == null || tvwScores.SelectedNode.Tag == null)
            {
                return;
            }

            BaseScore score = tvwScores.SelectedNode.Tag as BaseScore;

            if (score != m_scoreSettings && score.GetType() == m_scoreSettings.GetType())
            {
                score.ApplySettings(m_scoreSettings);
                BaseScoreEditor editor = GetEditor();
                if (editor != null)
                {
                    editor.LoadScore(score, m_center);
                }
            }
        }
Esempio n. 4
0
        private void btnTest_Click(object sender, EventArgs e)
        {
            pnlTest.Controls.Clear();
            pnlTest.Refresh();

            try
            {
                this.Cursor = Cursors.WaitCursor;

                BaseScoreEditor editor = GetEditor();
                if (editor == null)
                {
                    return;
                }

                Type scoreType = editor.GetScoreType();
                ScoreFactory.Instance.CacheExpiration = m_center.Setup.CacheExpiration;
                BaseScore score = ScoreFactory.Instance.CreateScore(scoreType);
                if (!editor.SaveScore(ref score))
                {
                    return;
                }

                if (score.IsVirtualFolder())
                {
                    var zz = score.GetVirtualScores(m_center.Parameters);
                    using (TestScoreSelector dlg = new TestScoreSelector(zz))
                    {
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            score = dlg.SelectedScore;
                        }
                    }
                }

                // read and parse the score
                string[][] lines = ScoreFactory.Parse(score, ckxReload.Checked, m_center.Parameters);
                if (lines == null)
                {
                    return;
                }

                IScoreBuilder <Control> bld = ScoreFactory.Instance.GetBuilder <Control>(score);
                bld.Styles      = m_center.Styles.ToList().AsReadOnly();
                bld.UseAltColor = m_center.Setup.UseAltColor;

                int fh = pnlTest.Font.Height;
                int fw = (int)pnlTest.Font.SizeInPoints;
                bld.SetFont("", m_center.Setup.DefaultFontColor, m_center.Setup.AltFontColor, 14, fw, fh);

                bool overRight = false;
                bool overDown = false;
                int  lineNumber, colNumber;

                pnlTest.BackColor = Color.FromArgb(m_center.Setup.DefaultSkinColor);

                IList <Control> controls = bld.Build(score, lines,
                                                     0, 0,
                                                     0, 0, pnlTest.Width, 10000,
                                                     this.CreateControl,
                                                     out overRight, out overDown, out lineNumber, out colNumber);
                if (controls == null)
                {
                    return;
                }

                pnlTest.Tag = lines;

                pnlTest.SuspendLayout();
                pnlTest.Controls.AddRange(controls.Cast <Control>().ToArray());
            }
            catch (Exception exc)
            {
                MessageBox.Show(Tools.GetExceptionMessage(exc), Properties.Resources.ErrorTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                pnlTest.ResumeLayout();
                this.Cursor = Cursors.Default;
            }
        }