protected override void OnLoad(EventArgs e)
 {
     base.OnLoad(e);
     this.CreateTabContainer("BudDetection");
     this.TabContainer.Enabled = true;
     this.deconvolutedImageBox = new ImageListBox(() => this.DisplayedImage, this.SetDisplayedImage)
     {
         Parent = this.TabContainer, Height = 100
     };
     (new Button {
         Parent = this.TabContainer, Text = "deconvolute", Dock = DockStyle.Top
     }).Click += delegate {
         this.processResult(BudDetection.ColorDeconvolution.Execute(this.DisplayedImage));
     };
     (new Button {
         Parent = this.TabContainer, Text = "My Plugin", Dock = DockStyle.Top
     }).Click += delegate {
         this.processResult(Detector.Execute(this.DisplayedImage));
     };
     new Button {
         Text = "goto zoom", Parent = this.TabContainer, Dock = DockStyle.Top
     }.Click += delegate { WsiInterop.Navigation.Goto((float)this.zoomNumericUpDown.Value); };
     this.zoomNumericUpDown = new NumericUpDown()
     {
         Parent = this.TabContainer, Dock = DockStyle.Top, Minimum = 0, Maximum = 1, Value = 0.5M, DecimalPlaces = 1, Increment = 0.1M
     };
 }
        private void ImportFontMenuItem_Click(object sender, EventArgs e)
        {
            if (SelectedImageMetadata.Count == 0)
            {
                return;
            }

            using (var importFontWindow = new ImportFontWindow(SelectedImageMetadata))
            {
                if (importFontWindow.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                var importedData = importFontWindow.GetImportedData();
                foreach (var imageDataTuple in importedData)
                {
                    var metadata  = imageDataTuple.Item1;
                    var imageData = imageDataTuple.Item2;

                    ProcessImage(x => imageData, metadata);
                }
                ImageCacheManager.RebuildCache(m_firmware);
                ImageListBox.Invalidate();
                ImageListBox_SelectedValueChanged(ImageListBox, EventArgs.Empty);
            }
        }
示例#3
0
        private void FrameworkElement_OnSizeChanged(object sender, SizeChangedEventArgs e)
        {
            try
            {
                if (ImageScroll == null)
                {
                    ImageScroll              = ImageListBox.GetChildControl <ScrollViewer>();
                    ImageScroll.ViewChanged += ImageScroll_ViewChanged;
                }
                else
                {
                    Image img = sender as Image;

                    img.MinHeight = 0;
                    var model = img.Tag as ImageListModel;

                    //int index = GetIndex();
                    //if (model.Id < index)
                    //{
                    //    ImageScroll.ScrollToVerticalOffset(ImageScroll.VerticalOffset + img.ActualHeight);
                    //}
                    model.Height = img.ActualHeight;
                }
            }
            catch (Exception ex)
            {
            }
        }
        public static void Setup()
        {
            var testDialog  = new DialogWindow(new Point(400, 500), "Test");
            var menu        = new Menu(IoC.Get <IWindow>(), testDialog, new Point(2, 2));
            var ctxMenuFile = new ContextMenu(new[]
            {
                new MenuItem("Save", () => { MessageBox.Show(new Point(400, 400), "didn't save, sorry"); }),
                new MenuItem("Load", () => { MessageBox.Show(new Point(400, 400), "didn't load, sorry"); }),
            });

            var ctxMenuFile2 = new ContextMenu(new[]
            {
                new MenuItem("oof", () => { MessageBox.Show(new Point(400, 400), "oh no"); }),
                new MenuItem("aff", () => { MessageBox.Show(new Point(400, 400), "ouch"); }),
            });

            menu.AddItem("File", ctxMenuFile);
            menu.AddItem("Gile", ctxMenuFile2);
            menu.AddItem("Brile", ctxMenuFile2);
            testDialog.AddControl(menu);
            var lst = new ListBox <int>(IoC.Get <IWindow>(), testDialog, new Rectangle(40, menu.Y + menu.Height + 5, 100, 200));

            lst.AddItem("testtesth", 1);
            lst.AddItem("okserifk", 2);
            testDialog.AddControl(lst);
            var imgLst = new ImageListBox <int>(IoC.Get <IWindow>(), testDialog, new Rectangle(150, menu.Y + menu.Height + 5, 200, 200));

            imgLst.AddItem(new ImageBox(GameCollections.Items.GetItem(1411).GetSprite(), new Point(32, 32)), "Backpack", 1);
            imgLst.AddItem(new ImageBox(GameCollections.Items.GetItem(1410).GetSprite(), new Point(32, 32)), "Bag", 2);
            testDialog.AddControl(imgLst);
            IoC.Register(nameof(Test), testDialog);
        }
        private bool[,] ProcessImage(Func <bool[, ], bool[, ]> imageDataProcessor, FirmwareImageMetadata imageMetadata, bool rebuildCache = false)
        {
            var processedData      = imageDataProcessor(ImagePixelGrid.Data);
            var processedImageSize = processedData.GetSize();
            var imageSizeChanged   = imageMetadata.Width != processedImageSize.Width || imageMetadata.Height != processedImageSize.Height;

            imageMetadata.Width  = (byte)processedImageSize.Width;
            imageMetadata.Height = (byte)processedImageSize.Height;

            m_firmware.WriteImage(processedData, imageMetadata);

            if (imageSizeChanged || rebuildCache)
            {
                ImageCacheManager.RebuildImageCache(m_firmware);
                ImageListBox.Invalidate();
            }
            else
            {
                var cachedImage = FirmwareImageProcessor.CreateBitmap(processedData);
                ImageCacheManager.SetImage(imageMetadata.Index, imageMetadata.BlockType, cachedImage);

                var updateCache = new Action(() =>
                {
                    ImageListBox.Invoke(new Action(() =>
                    {
                        var itemRect = ImageListBox.GetItemRectangle(imageMetadata.Index - 1);
                        ImageListBox.Invalidate(itemRect);
                    }));
                });
                updateCache.BeginInvoke(null, null);
            }

            return(processedData);
        }
        public bool OnHotkey(Keys keyData)
        {
            if (!keyData.HasFlag(Keys.Control))
            {
                return(false);
            }

            var key = keyData & ~Keys.Control;

            switch (key)
            {
            case Keys.N:
                ClearAllPixelsButton.PerformClick();
                return(true);

            case Keys.I:
                InverseButton.PerformClick();
                return(true);

            case Keys.R:
                ResizeButton.PerformClick();
                return(true);

            case Keys.C:
                CopyButton.PerformClick();
                return(true);

            case Keys.V:
                PasteButton.PerformClick();
                return(true);

            case Keys.A:
                ImageListBox.BeginUpdate();
                ImageListBox.SelectedIndices.Clear();
                ImageListBox.SelectedIndices.AddRange(Enumerable.Range(0, ImageListBox.Items.Count));
                ImageListBox.EndUpdate();
                return(true);

            case Keys.Up:
                ShiftUpButton.PerformClick();
                return(true);

            case Keys.Down:
                ShiftDownButton.PerformClick();
                return(true);

            case Keys.Left:
                ShiftLeftButton.PerformClick();
                return(true);

            case Keys.Right:
                ShiftRightButton.PerformClick();
                return(true);
            }
            return(false);
        }
示例#7
0
        public void addChangeLog(ImageListBox listBox, Changelog changelog,
                                 String updateName, String baseType, int imageIndex)
        {
            Logger.log(Logger.TYPE.DEBUG, "Add changelog.");

            String           text = "[" + changelog.getVersion() + baseType + "] " + updateName;
            ImageListBoxItem item = new ImageListBoxItem(text, imageIndex);

            listBox.Items.Add(item);
        }
示例#8
0
 protected override void OnLoad(EventArgs e)
 {
     base.OnLoad(e);
     this.CreateTabContainer("Deconvolution");
     this.TabContainer.Enabled = true;
     this.deconvolutedImageBox = new ImageListBox(() => this.DisplayedImage, this.SetDisplayedImage)
     {
         Parent = this.TabContainer, Height = 100
     };
     (new Button {
         Parent = this.TabContainer, Text = "deconvolute", Dock = DockStyle.Top
     }).Click += delegate {
         this.deconvolutedImageBox.Init();
         foreach (var tuple in this.process())
         {
             var map = new Map(tuple.Item1.Width, tuple.Item1.Height);
             if (tuple.Item2 != "Blue")
             {
                 using (var gsp = new GrayscaleProcessor(tuple.Item1, RgbToGrayscaleConversion.JustReds))
                 {
                     gsp.WriteBack = false;
                     foreach (var grayscalePixel in gsp.Pixels())
                     {
                         map[grayscalePixel.X, grayscalePixel.Y] = grayscalePixel.V > tuple.Item3 ? 1u : 0u;
                     }
                 }
             }
             else
             {
                 using (var gsp = new  GrayscaleProcessor(tuple.Item1, RgbToGrayscaleConversion.JustReds))
                 {
                     gsp.WriteBack = false;
                     foreach (var grayscalePixel in gsp.Pixels())
                     {
                         map[grayscalePixel.X, grayscalePixel.Y] = 1u;
                     }
                 }
             }
             var layer = new ConnectedComponentCollector().Execute(map);
             layer.Name = tuple.Item2;
             this.addLayer(layer, true);
             this.deconvolutedImageBox.Add(tuple.Item1, tuple.Item2);
         }
     };
     new Button {
         Text = "goto zoom", Parent = this.TabContainer, Dock = DockStyle.Top
     }.Click += delegate { WsiInterop.Navigation.Goto((float)this.zoomNumericUpDown.Value); };
     this.zoomNumericUpDown = new NumericUpDown()
     {
         Parent = this.TabContainer, Dock = DockStyle.Top, Minimum = 0, Maximum = 1, Value = 0.5M, DecimalPlaces = 1, Increment = 0.1M
     };
 }
示例#9
0
        public ImageListBoxItem getLogItem(Update update, ImageListBox listBox)
        {
            ImageListBoxItem item = null;

            foreach (ImageListBoxItem it in listBox.Items)
            {
                if (it.Text.Contains("[" + update.getVersion() + update.getBaseType() + "]"))
                {
                    item = it;
                    break;
                }
            }
            return(item);
        }
示例#10
0
        private void ImageShowEmoticons_Click(object sender, EventArgs e)
        {
            switch (ImageListBox.Visible)
            {
            case true:
                ImageListBox.SelectedIndex = -1;
                ImageListBox.Visible       = false;
                break;

            default:
                ImageListBox.SelectedIndex = -1;
                ImageListBox.Visible       = true;
                ImageListBox.Focus();
                break;
            }
        }
示例#11
0
        private void SearchText_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
        {
            string keyword = SearchText.Text.Trim();

            foreach (ListBoxItem c in ImageListBox.Items)
            {
                ImageSelectItem d = c.Content as ImageSelectItem;
                if (d.InfoText.Text.Contains(keyword))
                {
                    c.Visibility = System.Windows.Visibility.Visible;
                }
                else
                {
                    c.Visibility = System.Windows.Visibility.Collapsed;
                }
            }
            ImageListBox.UpdateLayout();
        }
示例#12
0
        public static void addUpdateListChangeHandler(ImageListBox listBox, List <Update> updates,
                                                      TextBox textBox)
        {
            Logger.log(Logger.TYPE.DEBUG, "Add update list change handler.");
            listBox.SelectedValueChanged += new EventHandler((object sender, EventArgs e) => {
                ImageListBox lb = sender as ImageListBox;
                if (lb != null)
                {
                    foreach (Update update in updates)
                    {
                        double version  = update.getVersion();
                        String baseType = update.getBaseType();

                        if (lb.SelectedItem.ToString().Contains("[" + version + baseType + "]"))
                        {
                            textBox.Text = update.getChangelog().ToString();
                            break;
                        }
                    }
                }
            });
        }
        private void BlockImageRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            var currentListBoxSelectedIndices = ImageListBox.SelectedIndices.ToList();

            if (sender == Block1ImageRadioButton)
            {
                m_currentBlock             = BlockType.Block1;
                Block1ImageListBox.Visible = true;
                Block2ImageListBox.Visible = false;
            }
            if (sender == Block2ImageRadioButton)
            {
                m_currentBlock             = BlockType.Block2;
                Block1ImageListBox.Visible = false;
                Block2ImageListBox.Visible = true;
            }

            ImageListBox.Focus();
            if (currentListBoxSelectedIndices.Count != 0)
            {
                m_imageListBoxIsUpdating = true;
                ImageListBox.BeginUpdate();
                ImageListBox.SelectedIndices.Clear();
                ImageListBox.SelectedIndices.AddRange(currentListBoxSelectedIndices.Where(x => ImageListBox.Items.Count > x));
                ImageListBox.EndUpdate();

                ImagePixelGrid.Data = ImagePreviewPixelGrid.Data = LastSelectedImageMetadata != null?m_firmware.ReadImage(LastSelectedImageMetadata) : new bool[5, 5];

                m_imageListBoxIsUpdating = false;
            }
            else
            {
                ImageListBox_SelectedValueChanged(ImageListBox, EventArgs.Empty);
            }
            UpdateImageStatusLabel(LastSelectedImageMetadata);
        }
        private void ImportImages([NotNull] IList <int> originalImageIndices, [NotNull] IList <bool[, ]> importedImages)
        {
            if (importedImages == null)
            {
                throw new ArgumentNullException("importedImages");
            }
            if (originalImageIndices == null)
            {
                throw new ArgumentNullException("originalImageIndices");
            }
            if (importedImages.Count == 0)
            {
                return;
            }

            var minimumImagesCount = Math.Min(originalImageIndices.Count, importedImages.Count);

            originalImageIndices = originalImageIndices.Take(minimumImagesCount).ToList();
            importedImages       = importedImages.Take(minimumImagesCount).ToList();

            ImageImportMode importMode;
            bool            allowResizeOriginalImages;

            using (var importWindow = new PreviewResourcePackWindow(m_firmware, originalImageIndices, importedImages, false, m_currentBlock))
            {
                importWindow.Text             = Consts.ApplicationTitleWoVersion + @" - Paste image(s)";
                importWindow.ImportButtonText = "Paste";
                if (importWindow.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                importMode = importWindow.GetImportMode();
                allowResizeOriginalImages = importWindow.AllowResizeOriginalImages;
            }

            for (var i = 0; i < minimumImagesCount; i++)
            {
                var index = i;
                var originalImageIndex = originalImageIndices[index];
                var importedImage      = importedImages[index];
                if (importMode == ImageImportMode.Block1)
                {
                    var block1ImageMetadata = m_firmware.Block1Images.First(x => x.Index == originalImageIndex);
                    if (allowResizeOriginalImages)
                    {
                        ProcessImage(x => importedImage, block1ImageMetadata);
                    }
                    else
                    {
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block1ImageMetadata.CreateImage(), importedImage), block1ImageMetadata);
                    }
                }
                else if (importMode == ImageImportMode.Block2)
                {
                    var block2ImageMetadata = m_firmware.Block2Images.First(x => x.Index == originalImageIndex);
                    if (allowResizeOriginalImages)
                    {
                        ProcessImage(x => importedImage, block2ImageMetadata);
                    }
                    else
                    {
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block2ImageMetadata.CreateImage(), importedImage), block2ImageMetadata);
                    }
                }
                else
                {
                    var block1ImageMetadata = m_firmware.Block1Images.First(x => x.Index == originalImageIndex);
                    var block2ImageMetadata = m_firmware.Block2Images.First(x => x.Index == originalImageIndex);

                    if (allowResizeOriginalImages)
                    {
                        ProcessImage(x => importedImage, block1ImageMetadata);
                        ProcessImage(x => importedImage, block2ImageMetadata);
                    }
                    else
                    {
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block1ImageMetadata.CreateImage(), importedImage), block1ImageMetadata);
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block2ImageMetadata.CreateImage(), importedImage), block2ImageMetadata);
                    }
                }
            }

            ImageCacheManager.RebuildImageCache(m_firmware);
            ImageListBox.Invalidate();
            ImageListBox_SelectedValueChanged(ImageListBox, EventArgs.Empty);
        }
 public void ScrollViewToCur(object obj)
 {
     ImageListBox.ScrollIntoView(obj);
 }
示例#16
0
 public Gallery()
     : base(new Layout(1, 1))
 {
     Pictures = new ImageListBox(FindPictures());
     Transparent = true;
     //Pictures.SelectionChangedEvent += new ListBox.SelectionChangedDelegate(Pictures_SelectionChangedEvent);
     Add(Pictures, 0, 0);
 }
示例#17
0
 public void clearChangeLog(ImageListBox listBox, TextBox textBox)
 {
     Logger.log(Logger.TYPE.DEBUG, "Clearing the changelog.");
     textBox.Clear();
     listBox.Items.Clear();
 }
示例#18
0
        private void downloadUpdates(List <Update> updates)
        {
            Logger.log(Logger.TYPE.DEBUG, "Downloading " + updates.Count + " updates...");
            // Enqueue each file to the download handler
            foreach (Update update in updates)
            {
                foreach (GhostFile file in update.getFiles())
                {
                    Boolean isArchive = file is Archive;

                    String tmpPath = Path.Combine(update.getTempDir().FullName,
                                                  isArchive ? ((Archive)file).getExtractTo() : file.getDestination());

                    dlHandler.enqueueFile(file.getUrl(), tmpPath, file.getName(),
                                          (Boolean cancelled) => {
                        if (!cancelled)
                        {
                            Logger.log(Logger.TYPE.DEBUG, "Completed downloading "
                                       + (isArchive ? "archive " : "file ") + file.getName());
                        }
                    });
                }
            }

            dlHandler.setQueueFileCallback(new QueueCallback(() => {
                Logger.log(Logger.TYPE.DEBUG, "Completed all the downloads");

                ui.getStatusLabel().Text = "Patching files...";
                foreach (Update update in updates)
                {
                    foreach (GhostFile file in update.getFiles())
                    {
                        String tmpPath = Path.Combine(update.getTempDir().FullName,
                                                      file is Archive ? ((Archive)file).getExtractTo()
                            : file.getDestination());

                        update.setSuccess(applyFileChange(file, tmpPath));
                    }

                    if (update.isSuccess())
                    {
                        reciever.stampUpdate(update);

                        ImageListBox listBox  = ui.getChangelogListBox();
                        ImageListBoxItem item = getLogItem(update, listBox);
                        if (item != null)
                        {
                            item.ImageIndex = 0;
                            listBox.Invalidate(listBox.GetItemRectangle(item.Index));
                            listBox.Update();
                        }
                    }
                    else
                    {
                        Logger.log(Logger.TYPE.FATAL, "One of the updates did not succeed, "
                                   + "cancelling update process.");

                        ui.getStatusLabel().Text = "Error while patching files, please check the "
                                                   + "log for more details.";

                        ui.getLaunchButton().BtnText = "Failed";
                        return;
                    }
                }

                ui.getStatusLabel().Text = "Finished updating "
                                           + updates.Count + "/" + updates.Count + "!";

                ui.getTickImage().Visible     = true;
                ui.getUpToDateLabel().Visible = true;

                enablePlay();
            }));

            dlHandler.startFileQueue();
        }