public QueryDocumentControl(string name, NotebookManager manager, IWin32Window mainForm, Slot <bool> operationInProgress)
        {
            InitializeComponent();
            ItemName             = name;
            _manager             = manager;
            _notebook            = manager.Notebook;
            _mainForm            = mainForm;
            _operationInProgress = operationInProgress;
            _resultToolStrip.SetMenuAppearance();

            _grid.EnableDoubleBuffering();

            _textCtl = new SqlTextControl(false)
            {
                Dock    = DockStyle.Fill,
                Padding = new Padding(4, 0, 0, 0)
            };
            _sqlPanel.Controls.Add(_textCtl);

            // if this tool window has been pulled off into a floating window, then the MainForm's key handler won't
            // trigger on F5, so catch it here.
            _textCtl.Scintilla.KeyDown += async(sender, e) => {
                if (e.KeyCode == Keys.F5)
                {
                    await Execute();
                }
            };

            Load += (sender, e) => {
                string initialText = _manager.GetItemData(ItemName);
                if (initialText != null)
                {
                    _textCtl.SqlText = initialText;
                }

                _textCtl.SqlTextChanged += (sender2, e2) => _manager.SetDirty();

                ShowResult(0);
            };
        }
Exemple #2
0
        private void Server_Request(object sender, HttpRequestEventArgs e)
        {
            var consolePrefix = "/console";
            var executePrefix = "/execute_";

            if (e.Url.StartsWith(consolePrefix))
            {
                var html = Resources.ConsoleHtml.Replace("SAVED_HISTORY_GOES_HERE",
                                                         HttpUtility.JavaScriptStringEncode(_manager.GetItemData(ConsoleName)));
                e.Result = Encoding.UTF8.GetBytes(html);
            }
            else if (e.Url.StartsWith(executePrefix))
            {
                var sql  = e.Url.Substring(executePrefix.Length);
                var html = Execute(sql);
                e.Result = Encoding.UTF8.GetBytes(html);
                return;
            }
            else if (e.Url == "/simple-console.js")
            {
                e.ContentType = HttpContentType.JavaScript;
                e.Result      = Resources.SimpleConsoleJs;
            }
            else if (e.Url == "/simple-console.css")
            {
                e.ContentType = HttpContentType.Css;
                e.Result      = Resources.SimpleConsoleCss;
            }
            else
            {
                e.ResultCode = 404;
                e.Result     = new byte[] { 78, 79 }; // 'NO'
            }
        }
Exemple #3
0
        public NoteDocumentControl(string name, NotebookManager manager)
        {
            InitializeComponent();
            ItemName = name;
            _manager = manager;
            _toolStrip.SetMenuAppearance();
            _contextMenuStrip.SetMenuAppearance();
            _browser.PreviewKeyDown += (sender, e) => {
                if (e.KeyData == (Keys.Control | Keys.C))
                {
                    EnableDisableContextMenu();
                    _copyMnu.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.X))
                {
                    EnableDisableContextMenu();
                    _cutMnu.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.V))
                {
                    EnableDisableContextMenu();
                    _pasteMnu.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.A))
                {
                    _selectAllMnu.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.B))
                {
                    _boldBtn.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.I))
                {
                    _italicBtn.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.U))
                {
                    _underlineBtn.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.L))
                {
                    _alignLeftBtn.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.E))
                {
                    _alignCenterBtn.PerformClick();
                }
                else if (e.KeyData == (Keys.Control | Keys.R))
                {
                    _alignRightBtn.PerformClick();
                }
                else if (e.KeyData == Keys.Delete)
                {
                    _browser.Document.ExecCommand("delete", false, null);
                }
                else
                {
                    manager.HandleAppHotkeys(e.KeyData);
                }
            };

            using (var fonts = new InstalledFontCollection()) {
                foreach (var family in fonts.Families.OrderBy(x => x.Name))
                {
                    _fontNameCmb.Items.Add(family.Name);
                }
            }

            _browser.DocumentText = "<html><body></body></html>";
            ((IHTMLDocument2)_browser.Document.DomDocument).designMode = "On";

            var doc = (IHTMLDocument2)_browser.Document.DomDocument;

            doc.write(_manager.GetItemData(ItemName));

            var markupContainer = (IMarkupContainer2)doc;

            markupContainer.RegisterForDirtyRange(_sink, out _sinkCookie);

            _sink.Change += (sender2, e2) => _manager.SetDirty();
            _timer.Start();

            Load += (sender, e) => { _browser.Focus(); _browser.Select(); };
        }