Beispiel #1
0
        public void ChkRecovery()
        {
            var recoveryFiles = Directory.GetFiles(QuizCore.QUIZ_RECOVERY_FOLDER);

            if (recoveryFiles.Length > 0)
            {
                var quizRecovery = new QuizRecovery(recoveryFiles);
                if (quizRecovery.ShowDialog() == DialogResult.OK)
                {
                    QuizRecoveryData = quizRecovery.QuizRecoveryData;
                    //QuizPath = quizRecovery.QuizRecoveryData.QuizPath;
                    LoadQuiz(quizRecovery.QuizRecoveryData.Quiz, quizRecovery.QuizRecoveryData.QuizPath, true);
                    ChangedSinceLastSave = true;
                }
            }
        }
Beispiel #2
0
        public QuizEditor(bool chkRecovery = true)
        {
            InitializeComponent();
            ++Program.QuizEditorsOpen;

            if (Program.openQuizEditors.Count > 0)
            {
                var last = Program.openQuizEditors.Last();
                WindowState = last.WindowState;
                if (WindowState == FormWindowState.Normal)
                {
                    Size = last.Size;
                }
            }
            else
            {
                WindowState = Program.frmDashboard.WindowState;
                if (WindowState == FormWindowState.Normal)
                {
                    Size = Program.frmDashboard.Size;
                }
            }

            this.Location = new Point(Program.frmDashboard.Location.X + (Program.frmDashboard.Size.Width / 2) - (this.Size.Width / 2),
                                      Program.frmDashboard.Location.Y + (Program.frmDashboard.Size.Height / 2) - (this.Size.Height / 2)
                                      );

            AddCard(EMPTY_WORD_PAIRS_COUNT);
            QuizRecoveryData = new QuizRecoveryData(QuizPath);
            if (chkRecovery)
            {
                ChkRecovery();
            }

            SetTheme();

            if (MetaData.PRE_RELEASE)
            {
                this.Text += $" v{Application.ProductVersion} PRE-RELEASE";
            }
        }
Beispiel #3
0
        public void LoadQuiz(Quiz quiz = null, string quizPath = null, bool fromRecovery = false)
        {
            if (ChangedSinceLastSave)
            {
                //var msg = MessageBox.Show("You have unsaved changes. Save before loading a new quiz?", "SteelQuiz", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                var saveDontSave = new SaveDontSave(this, SystemIcons.Warning, true, "The project contains unsaved changes. Save before loading a new quiz?",
                                                    "Save before loading new quiz? - SteelQuiz");
                saveDontSave.ShowDialog();
                if (saveDontSave.SaveDialogResult == SaveDontSave.SaveResult.Save)
                {
                    if (!SaveQuiz())
                    {
                        return;
                    }
                }
                else if (saveDontSave.SaveDialogResult == SaveDontSave.SaveResult.Cancel)
                {
                    return;
                }
            }

            if (!fromRecovery)
            {
                DeleteRecovery();
            }

            if (quiz == null)
            {
                //ofd_quiz.InitialDirectory = ConfigManager.Config.SyncConfig.QuizFolders[0];
                var ofd = ofd_quiz.ShowDialog();
                if (ofd == DialogResult.OK)
                {
                    QuizPath = ofd_quiz.FileName;
                }
                else
                {
                    return;
                }

                try
                {
                    quiz = JsonConvert.DeserializeObject <Quiz>(AtomicIO.AtomicRead(QuizPath));
                }
                catch (AtomicException ex)
                {
                    // Should never be reached as path exists
                    throw ex;
                }
            }

            if (quizPath != null)
            {
                QuizPath = quizPath;
            }

            UpdateUndoRedoStacks = false;

            SetCards(quiz.Cards.Count + 2);

            QuizGuid       = quiz.GUID;
            cmb_lang1.Text = quiz.CardFrontType;
            cmb_lang2.Text = quiz.CardBackType;

            for (int i = 0; i < quiz.Cards.Count; ++i)
            {
                var ctrl = flp_cards.Controls.OfType <QuizEditorCard>().ElementAt(i);
                var card = quiz.Cards[i];

                ctrl.Guid                 = card.Guid;
                ctrl.txt_front.Text       = card.Front;
                ctrl.FrontSynonyms        = card.FrontSynonyms;
                ctrl.txt_back.Text        = card.Back;
                ctrl.BackSynonyms         = card.BackSynonyms;
                ctrl.ComparisonRules.Data = (StringComp.Rules)FixEnum(card.SmartComparisonRules);
            }

            if (!fromRecovery)
            {
                QuizRecoveryData     = new QuizRecoveryData(QuizPath);
                ChangedSinceLastSave = false;
            }

            UndoStack.Clear();
            RedoStack.Clear();
            UpdateUndoRedoStacks = true;

            SetGlobalSmartComparisonState();
        }