Example #1
0
        private MainWindow()
        {
            Instance = this;

            Text = "Qz";
            Size = new Size(500, 625);

            WordBank = new Bank();
            Canvas   = new Canvas(WordBank);

            var menu = new MenuStrip();

            menu.ShowItemToolTips = true;
            MainMenuStrip         = menu;

            {
                var file = new ToolStripMenuItem("File");

                file.Put("Load Words...", Keys.Control | Keys.O, delegate {
                    ShowFileDialog <OpenFileDialog>(WordBank.Fill);
                });
                file.Put("Load Previous Session", Keys.None, delegate {
                    WordBank.Fill(WordBank.BankStateFile);
                });
                file.Put("Load Embedded Words", Keys.None, delegate {
                    WordBank.FillFromEmbed();
                });

                file.AddSplit();

                file.Put("Save Remaining...", Keys.Control | Keys.S, delegate {
                    ShowFileDialog <SaveFileDialog>(WordBank.Dump);
                });
                file.Put("Save Session Now", Keys.None, delegate {
                    WordBank.Dump(WordBank.BankStateFile);
                });

                file.AddSplit();

                file.Put("Quit, Saving Session",
                         Keys.Control | Keys.Q, delegate {
                    Application.Exit();
                });
                file.Put("Quit, Discarding Session",
                         Keys.Shift | Keys.Control | Keys.Q, delegate {
                    WordBank.NoSave();
                    Application.Exit();
                });

                menu.Items.Add(file);
            }

            {
                var words = new ToolStripMenuItem("Settings");

                words.Put("Fewer Words", Keys.None, delegate {
                    WordBank.Mod(-1);
                }).ShortcutKeyDisplayString = "Shift+ScrollDown";
                words.Put("More Words", Keys.None, delegate {
                    WordBank.Mod(1);
                }).ShortcutKeyDisplayString = "Shift+ScrollUp";

                words.AddSplit();

                words.Put("Smaller Font", Keys.None, delegate {
                    Canvas.AdjustFont(-1);
                }).ShortcutKeyDisplayString = "Ctrl+ScrollDown";
                words.Put("Larger Font", Keys.None, delegate {
                    Canvas.AdjustFont(1);
                }).ShortcutKeyDisplayString = "Ctrl+ScrollUp";

                words.AddSplit();

                var ca = words.Put("Check Automatically", Keys.None, delegate {
                    Canvas.AutoCheck = !Canvas.AutoCheck;
                });
                var sw = words.Put("Shuffle Words", Keys.None, delegate {
                    Canvas.ToggleMode(ref WordBank.WordMode);
                });
                var sd = words.Put("Shuffle Meanings", Keys.None, delegate {
                    Canvas.ToggleMode(ref WordBank.MeaningMode);
                });
                sd.Checked = true;
                var hd = words.Put("Hide Meanings",
                                   Keys.Control | Keys.D, delegate {
                    Canvas.HideDefs = !Canvas.HideDefs;
                    Canvas.Invalidate();
                });
                var hc = words.Put("Hide Correctness", Keys.None, delegate {
                    Canvas.ShowCorrect = !Canvas.ShowCorrect;
                    UpdateCount();
                });
                hd.CheckOnClick = sw.CheckOnClick = ca.CheckOnClick
                                                        = sd.CheckOnClick = hc.CheckOnClick = true;

                words.AddSplit();

                // This is a little weird in a menu titled "Settings", but
                // whatever.
                words.Put("Relayout", Keys.Control | Keys.R, delegate {
                    Canvas.Relayout();
                });

                menu.Items.Add(words);
            }

            var check = new ToolStripMenuItem("Check/Advance", null, delegate {
                Canvas.Check();
            });

            check.ToolTipText = "Or press space to check/advance";
            check.AutoToolTip = false;
            menu.Items.Add(check);

            count           = new ToolStripStatusLabel();
            count.Alignment = ToolStripItemAlignment.Right;
            menu.Items.Add(count);

            Canvas.Location = new Point(0, menu.Height);
            Canvas.Size     = ClientSize - new Size(0, menu.Height);
            Canvas.Anchor   = AnchorStyles.Bottom | AnchorStyles.Right
                              | AnchorStyles.Left | AnchorStyles.Top;
            Controls.Add(menu);
            Controls.Add(Canvas);

            WordBank.Init();

            Height = TileCollection.Height + menu.Height + 36;
        }