Inheritance: System.Windows.Forms.Form
Exemplo n.º 1
0
        private void SelectVersion(object sender, EventArgs e)
        {
            frmRevisionBrowse form = new frmRevisionBrowse();
            bool first = true;

            for (int i = 0; i < ImageInfos.Count; i++)
            {
                XmlNode n = ImageInfos[i];
                ListViewItem item = new ListViewItem(new string[] {
                    "",
                    (first ? (Localization.GetString("CurrentVersion_Label") + "\n") : "") + FormatTimestamp(n),
                    FormatDimensions(n),
                    n.Attributes["user"] == null ? Localization.GetString("UserNameHidden") : n.Attributes["user"].Value,
                    n.Attributes["comment"] == null ? Localization.GetString("CommentHidden") : n.Attributes["comment"].Value
                });
                item.Tag = i;

                // download thumbnail
                if (n.Attributes["thumburl"] != null && n.Attributes["thumburl"].Value != "")
                {
                    WebClient cl = new WebClient();
                    cl.Headers.Add("User-Agent", MorebitsDotNet.UserAgent);
                    cl.DownloadDataCompleted += new DownloadDataCompletedEventHandler(
                        delegate(object s, DownloadDataCompletedEventArgs v)
                        {
                            // sometimes thumbnails can't be generated and the server gives a 404
                            if (v.Error != null)
                            {
                                Invoke((MethodInvoker) delegate()
                                {
                                    lock (form)
                                    {
                                        form.imageList.Images.Add(GetThumbnailFailImage());
                                        item.ImageIndex = form.imageList.Images.Count - 1;
                                    }
                                });
                                return;
                            }

                            byte[] data = v.Result;
                            Invoke((MethodInvoker) delegate()
                            {
                                Image original = Image.FromStream(new MemoryStream(data, false));
                                Bitmap img = new Bitmap(150, 150, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                                using (Graphics g = Graphics.FromImage(img))
                                {
                                    g.FillRectangle(CheckerBrush, 0, 0, img.Width, img.Height);
                                    if (original.Width > original.Height)
                                    {
                                        float newHeight = ((float) original.Height) / ((float) original.Width / 150);
                                        g.DrawImage(original, 0f, (150f - newHeight) / 2f, 150f, newHeight);
                                    }
                                    else
                                    {
                                        float newWidth = ((float) original.Width) / ((float) original.Height / 150f);
                                        g.DrawImage(original, (150f - newWidth) / 2f, 0f, newWidth, 150f);
                                    }
                                }
                                lock (form)
                                {
                                    form.imageList.Images.Add(img);
                                    item.ImageIndex = form.imageList.Images.Count - 1;
                                }
                            });
                        });
                    cl.DownloadDataAsync(new Uri(n.Attributes["thumburl"].Value));
                }
                else
                {
                    lock (form)
                    {
                        form.imageList.Images.Add(GetThumbnailFailImage());
                        item.ImageIndex = form.imageList.Images.Count - 1;
                    }
                }

                if (first)
                {
                    item.UseItemStyleForSubItems = false;
                    item.SubItems[1].Font = new Font(form.Font, FontStyle.Bold);
                }
                form.listView.Items.Add(item);

                if (Array.IndexOf(SelectedRevisions, i) != -1)
                    item.Selected = true;

                first = false;
            }

            if (form.ShowDialog() == DialogResult.Cancel)
                return;

            if (form.listView.SelectedItems.Count == 0)
            {
                ErrorHandler(Localization.GetString("NoRevisionSelected"));
                return;
            }

            SelectedRevisions = new int[form.listView.SelectedItems.Count];
            for (int i = 0; i < form.listView.SelectedItems.Count; i++)
                SelectedRevisions[i] = (int) form.listView.SelectedItems[i].Tag;
            DownloadFileAndDisplayThumb();
        }
Exemplo n.º 2
0
        private void SelectVersion(object sender, EventArgs e)
        {
            frmRevisionBrowse form = new frmRevisionBrowse();
            bool first = true;

            foreach (XmlNode i in iis)
            {
                ListViewItem item = new ListViewItem(new string[] {
                    "",
                    (first ? (Localization.GetString("CurrentVersion_Label") + "\n") : "") + FormatTimestamp(i),
                    FormatDimensions(i),
                    i.Attributes["user"].Value,
                    i.Attributes["comment"].Value
                });
                item.Tag = i;

                // download thumbnail
                if (i.Attributes["thumburl"].Value != "")
                {
                    WebClient cl = new WebClient();
                    cl.Headers.Add("User-Agent", MorebitsDotNet.UserAgent);
                    cl.DownloadDataCompleted += new DownloadDataCompletedEventHandler(
                        delegate(object s, DownloadDataCompletedEventArgs v)
                        {
                            // sometimes thumbnails can't be generated and the server gives a 404
                            if (v.Error != null)
                            {
                                Invoke(new Action(delegate()
                                {
                                    Bitmap img = new Bitmap(150, 150);
                                    using (Graphics g = Graphics.FromImage(img))
                                    {
                                        g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
                                        g.DrawString(Localization.GetString("FailedToGenerateThumbnail1_Label") + "\n" +
                                            Localization.GetString("FailedToGenerateThumbnail2_Label") + "\n" +
                                            Localization.GetString("FailedToGenerateThumbnail3_Label"), Font, Brushes.Black, 5, 5);
                                    }
                                    lock (form)
                                    {
                                        form.imageList.Images.Add(img);
                                        item.ImageIndex = form.imageList.Images.Count - 1;
                                    }
                                }));
                                return;
                            }

                            byte[] data = v.Result;
                            Invoke(new Action(delegate()
                            {
                                Image original = Image.FromStream(new MemoryStream(data, false));
                                Bitmap img = new Bitmap(150, 150, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                                using (Graphics g = Graphics.FromImage(img))
                                {
                                    g.FillRectangle(checker, 0, 0, img.Width, img.Height);
                                    if (original.Width > original.Height)
                                    {
                                        float newHeight = ((float) original.Height) / ((float) original.Width / 150);
                                        g.DrawImage(original, 0f, (150f - newHeight) / 2f, 150f, newHeight);
                                    }
                                    else
                                    {
                                        float newWidth = ((float) original.Width) / ((float) original.Height / 150f);
                                        g.DrawImage(original, (150f - newWidth) / 2f, 0f, newWidth, 150f);
                                    }
                                }
                                lock (form)
                                {
                                    form.imageList.Images.Add(img);
                                    item.ImageIndex = form.imageList.Images.Count - 1;
                                }
                            }));
                        });
                    cl.DownloadDataAsync(new Uri(i.Attributes["thumburl"].Value));
                }
                if (first)
                {
                    item.UseItemStyleForSubItems = false;
                    item.SubItems[1].Font = new Font(form.Font, FontStyle.Bold);
                }
                form.listView.Items.Add(item);

                first = false;
            }

            if (form.ShowDialog() == DialogResult.Cancel)
                return;

            if (form.listView.SelectedItems.Count != 1)
            {
                MessageBox.Show(Localization.GetString("NoRevisionSelected"));
                return;
            }

            ImageData = null;
            DownloadFileAndDisplayThumb((XmlNode) form.listView.SelectedItems[0].Tag);
        }