Пример #1
0
 private void SelectPic(BrowserPreview pic, FlowLayoutPanel PreviewPanel)
 {
     foreach (Control ctrl in PreviewPanel.Controls)
     {
         if (ctrl.GetType() == typeof(BrowserPreview))
         {
             if (ctrl == pic)
             {
                 ((BrowserPreview)ctrl).Selected = true;
             }
             else
             {
                 ((BrowserPreview)ctrl).Selected = false;
             }
         }
     }
 }
Пример #2
0
        public void loadPage()
        {
            var pageToLoad = WikiPage_TextBox.get_Text();

            WikiTextEditor.backColor(Color.LightPink);
            StatusLabel.set_Text("Opening page: {0}".format(pageToLoad)).textColor(Color.Black);
            CurrentPageUrl.insert_Item("{0}/{1}".format(WikiApi.IndexPhp, pageToLoad));
            O2Thread.mtaThread(() =>
            {
                var wikiText = WikiApi.wikiText(pageToLoad);
                WikiTextEditor.set_Text(wikiText);
                if (wikiText.valid().isFalse())
                {
                    StatusLabel.set_Text("This is a new Page (there was no content retrived from the server").textColor(Color.DarkBlue);
                }
                BrowserPreview.open("about:blank");
                BrowserCurrent.open("about:blank");
                WikiTextEditor.backColor(Color.White);
                //BrowserPreview.set_Text(WikiApi.parseText(wikiText,true));
                //BrowserCurrent.set_Text(WikiApi.html(pageToLoad));
            });
        }
Пример #3
0
        public void saveCurrentPage()
        {
            var currentPage = WikiPage_TextBox.get_Text();

            if (WikiApi.loggedIn().isFalse())
            {
                StatusLabel.set_Text("You need to be logged in to save pages").textColor(Color.Red);
                var credential = ascx_AskUserForLoginDetails.ask();
                if (credential.notNull())
                {
                    WikiApi.login(credential.UserName, credential.Password);
                    if (WikiApi.loggedIn())
                    {
                        StatusLabel.set_Text("You are now logged in as user: {0}".format(credential.UserName)).textColor(Color.DarkGreen);
                    }
                    else
                    {
                        StatusLabel.set_Text("Login failed for user: {0}".format(credential.UserName)).textColor(Color.Red);
                    }
                }
            }
            else
            {
                StatusLabel.set_Text("saving page {0} ".format(currentPage)).textColor(Color.Black);

                // save content
                WikiApi.save(currentPage, WikiTextEditor.get_Text());

                // reload content and show it
                var wikiText = WikiApi.wikiText(currentPage);
                BrowserPreview.open("about:blank");
                //BrowserPreview.set_Text(WikiApi.parseText(wikiText,true));
                BrowserCurrent.set_Text(WikiApi.html(currentPage));
                StatusLabel.set_Text("Page {0} saved".format(currentPage)).textColor(Color.DarkGreen);
            }
        }
Пример #4
0
        public ascx_MediaWiki_PageEditor_Simple buildGui(O2MediaWikiAPI wikiApi)
        {
            try
            {
                WikiApi = wikiApi;


                var topPanel = this.add_Panel();


                var horizontalSplitterPosition = topPanel.height() / 2;
                var verticalSplitterPosition   = topPanel.width() / 2;
                var controls = topPanel.add_1x2("WikiText", "Preview", "Live (Current page)", false, horizontalSplitterPosition, verticalSplitterPosition);
                WikiTextEditor = controls[0].add_RichTextBox();
                BrowserPreview = controls[1].add_WebBrowser();
                BrowserCurrent = controls[2].add_WebBrowser();

                WikiPage_TextBox = WikiTextEditor.insert_Above <TextBox>(50);
                var bottomPanel = WikiPage_TextBox.insert_Below <Panel>(30);

                RecentChangesComboBox = WikiPage_TextBox.insert_Right <Panel>(290)
                                        .add_Label("Recent Changes / Search")
                                        .top(3)
                                        .append_Control <ComboBox>()
                                        //.dropDownList()
                                        .width(150)
                                        .top(0);
                Action <string> populateRecentChangesComboBox =
                    (filter) => {
                    RecentChangesComboBox.backColor(Color.LightPink);
                    O2Thread.mtaThread(
                        () => {
                        RecentChangesComboBox.clear();
                        if (filter.valid().isFalse())
                        {
                            RecentChangesComboBox.add_Items(WikiApi.recentPages());
                        }
                        else
                        {
                            RecentChangesComboBox.add_Items(WikiApi.pages(filter));
                        }
                        RecentChangesComboBox.backColor(Color.White);
                    });
                };
                RecentChangesComboBox.onSelection(
                    () => {
                    WikiPage_TextBox.set_Text(RecentChangesComboBox.get_Text());
                    loadCurrentPage();
                });
                RecentChangesComboBox.onEnter(
                    (text) => {
                    populateRecentChangesComboBox(text);
                });
                //WikiTextEditor.insert_Below<ascx_LogViewer>(130);


                //default values
                BrowserPreview.silent(true);
                BrowserCurrent.silent(true);
                //WikiPage_TextBox.set_Text("Test");

                // add controls with events

                CurrentPageUrl = BrowserCurrent.insert_Above <Panel>(20)
                                 .add_LabelAndComboBoxAndButton("Current page", "", "open", showInCurrentBrowser)
                                 .controls <ComboBox>();


                CurrentPageUrl.insert_Item("www.google.com");

                bottomPanel.add_Button("Load", 0).onClick(
                    () => {
                    loadCurrentPage();
                });


                bottomPanel.add_Button("Preview", 0, 100).onClick(
                    () => {
                    O2Thread.mtaThread(
                        () => {
                        BrowserPreview.set_Text(WikiApi.parseText(WikiTextEditor.get_Text(), true));
                    });
                });

                SaveButton = bottomPanel.add_Button("Save", 0, 200).onClick(
                    () => {
                    saveCurrentPage();
                });

                StatusLabel = SaveButton.append_Label("").topAdd(3).autoSize();

                /*WikiTextEditor.onKeyPress(Keys.Enter,
                 *      (code)=>{
                 *                              O2Thread.mtaThread(()=>
                 *                              {
                 *                                      BrowserPreview.set_Text(WikiApi.parseText(code,true));
                 *                              });
                 *                      });*/

                WikiTextEditor.onKeyPress((key) =>                                      // add suport to paste images form Clipboard
                {
                    if (key == (Keys.Control | Keys.V))
                    {
                        return(pasteImageFromClipboard());
                    }
                    return(false);
                });

                WikiPage_TextBox.onEnter((text) => loadPage(text));


                WikiTextEditor.add_ContextMenu()
                .add_MenuItem("Wrap with source tag (defaults to lang=csharp)",
                              () => {
                    WikiTextEditor.invokeOnThread(
                        () => {
                        WikiTextEditor.SelectedText = "<source lang=csharp>".line() +
                                                      WikiTextEditor.SelectedText.line() +
                                                      "</source>".line();
                    });
                });

                populateRecentChangesComboBox("");
            }
            catch (Exception ex)
            {
                ex.log("in ascx_MediaWiki_PageEditor_Simple buildGui");
            }
            return(this);
        }
Пример #5
0
        public TabPage AddTab(string url, ContextMenuStrip phoner8ClickMenu)
        {
            try
            {
                TabPage tab = new TabPage {
                    BorderStyle = BorderStyle.Fixed3D, Text = "New", ImageIndex = 2
                };
                InitializeComponent(tab);
                WebBrowser curBrowser = new WebBrowser();
                Phoner8ClickMenu = phoner8ClickMenu;
                if (!string.IsNullOrEmpty(url))
                {
                    curBrowser.Url = new Uri(url);
                }

                BrowserPreview pic = new BrowserPreview
                {
                    SizeMode    = PictureBoxSizeMode.AutoSize,
                    BorderStyle = BorderStyle.Fixed3D
                };
                //pic.Image = new Bitmap(string.Format("{0}\\HTMLPageHSBig.bmp", Application.StartupPath));
                //.GetThumbnailImage(48, 48, New Image.GetThumbnailImageAbort(AddressOf GetThumbCallback), System.IntPtr.Zero)
                PreviewPanel.Controls.Add(pic);
                curBrowser.Tag = pic;

                SelectPic(pic, PreviewPanel);

                pic.Click += (o, e) => { MainTabControl.SelectedTab = (TabPage)((BrowserPreview)o).Tag; };

                curBrowser.Dock              = DockStyle.Fill;
                curBrowser.CanGoBackChanged += (s, o) => { BackToolStripButton.Enabled = curBrowser.CanGoBack; };

                curBrowser.CanGoForwardChanged += (sender, e) =>
                {
                    ForwardToolStripButton.Enabled = curBrowser.CanGoForward;
                };

                curBrowser.DocumentCompleted += (sender, e) =>
                {
                    try
                    {
                        WebBrowser br = curBrowser;

                        if (!br.IsBusy)
                        {
                            StopToolStripButton.Enabled = false;
                            _statusStripBottom.Visible  = false;

                            Image    img    = new Bitmap(br.DisplayRectangle.Width, br.DisplayRectangle.Height);
                            Graphics gfxdst = Graphics.FromImage(img);
                            //Dim gfxsrc As Graphics = br.CreateGraphics

                            //BitBlt(gfxdst.GetHdc, 0, 0, br.DisplayRectangle.Width, br.DisplayRectangle.Height, gfxsrc.GetHdc, 0, 0, TernaryRasterOperations.SRCCOPY)

                            gfxdst.CopyFromScreen(
                                br.PointToScreen(new Point(br.DisplayRectangle.X, br.DisplayRectangle.Y)), new Point(0, 0),
                                br.DisplayRectangle.Size);

                            pic.Image = img.GetThumbnailImage(Convert.ToInt32(PreviewSizeNumericUpDown.Value),
                                                              Convert.ToInt32(PreviewSizeNumericUpDown.Value),
                                                              new Image.GetThumbnailImageAbort(GetThumbCallback), System.IntPtr.Zero);
                            pic.SizeMode    = PictureBoxSizeMode.AutoSize;
                            pic.BorderStyle = BorderStyle.Fixed3D;
                            gfxdst.Dispose();
                            //gfxsrc.Dispose()
                            img.Dispose();
                        }

                        pic.Image = favicon(br.Url);
                        ImageList imgList = new ImageList();
                        imgList.Images.Add(pic.Image);
                        tab.ImageIndex      = 0;
                        br.ContextMenuStrip = Phoner8ClickMenu;
                    }
                    catch (Exception ex)
                    {
                    }
                };
                curBrowser.DocumentTitleChanged += (sender, e) =>
                {
                    try
                    {
                        if (curBrowser.DocumentTitle.Length > 0)
                        {
                            MainTabControl.SelectedTab.Text = curBrowser.DocumentTitle;
                            //maintabcontrol.SelectedTab.ImageIndex =
                        }
                        else
                        {
                            if (AddressToolStripComboBox.Text.Length < 1)
                            {
                                MainTabControl.SelectedTab.Text = string.Format("Page {0}", MainTabControl.TabCount + 1);
                            }
                            else
                            {
                                MainTabControl.SelectedTab.Text = AddressToolStripComboBox.Text;
                            }
                        }
                        MainToolTip.SetToolTip(pic, MainTabControl.SelectedTab.Text);
                    }
                    catch (Exception ex)
                    {
                    }
                };
                curBrowser.EncryptionLevelChanged += (sender, e) =>
                {
                    switch (curBrowser.EncryptionLevel)
                    {
                    case WebBrowserEncryptionLevel.Bit128:
                    case WebBrowserEncryptionLevel.Bit40:
                    case WebBrowserEncryptionLevel.Bit56:
                    case WebBrowserEncryptionLevel.Fortezza:
                        _secureToolStripStatusLabel.Visible = true;
                        break;

                    default:
                        _secureToolStripStatusLabel.Visible = false;
                        break;
                    }
                };
                curBrowser.ProgressChanged += (sender, e) =>
                {
                    try
                    {
                        if (_mainProgressBar.Value <= e.MaximumProgress)
                        {
                            _mainProgressBar.Maximum = (System.Int32)e.MaximumProgress;
                            if (e.CurrentProgress >= _mainProgressBar.Minimum)
                            {
                                _mainProgressBar.Value = (System.Int32)e.CurrentProgress;
                            }
                            else
                            {
                                _mainProgressBar.Value = 0;
                            }
                        }
                        else
                        {
                            _mainProgressBar.Value   = 0;
                            _mainProgressBar.Maximum = (System.Int32)e.MaximumProgress;
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                };
                curBrowser.StatusTextChanged += (sender, e) =>
                {
                    if (!(curBrowser.StatusText == null))
                    {
                        _mainToolStripStatusLabel.Text = curBrowser.StatusText;
                    }
                    else
                    {
                        _mainToolStripStatusLabel.Text = "Done";
                    }
                };
                curBrowser.Navigating += (sender, e) =>
                {
                    StopToolStripButton.Enabled = true;
                    _statusStripBottom.Visible  = true;
                };
                curBrowser.Navigated += (sender, e) =>
                {
                    if (curBrowser.Url != null)
                    {
                        AddressToolStripComboBox.Text = curBrowser.Url.ToString();
                    }
                };

                //tab.Text = String.Format("Page {0}", MainTabControl.TabCount)
                tab.Controls.Add(curBrowser);
                MainTabControl.TabPages.Insert(MainTabControl.TabCount - 1, tab);
                pic.Tag = tab;

                var authHdr = "Authorization: Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(UserName + ":" + PassWord)) + "\r\n";
                curBrowser.Navigate(url, null, null, authHdr);
                return(tab);
            }
            catch (Exception exception)
            {
                Logger.Instance.LogMessage(Logger.LogAppender.DuoDefault, "MyTab", exception, Logger.LogLevel.Error);
                throw;
            }
        }