示例#1
0
        private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
        {
            DataContextChanged -= OnDataContextChanged;

            var v = DataContext as IListViewModel;

            if (v != null)
            {
                GridPreview.ColumnsSource = v.Fields;
            }

            var vme = DataContext as IExportData;

            if (vme != null && vme.StreamExport != null)
            {
                vme.StreamExport.Position = 0;
                GridPreview.RestoreLayoutFromStream(vme.StreamExport);
            }

            var tv = GridPreview.View as TableView;

            if (tv == null)
            {
                return;
            }
            tv.AutoWidth          = false;
            tv.PrintAutoWidth     = false;
            tv.ShowGroupPanel     = true;
            tv.ShowColumnHeaders  = true;
            tv.ShowGroupedColumns = true;
        }
示例#2
0
    private void CreateRenders(int amount, int gridPreviewWidth)
    {
        var headerSize = gridPreviewWidth + 5;

        Console.Header.ReserveLines(23);
        _progress = Console.Header.CreateBlockValue(amount * headerSize - 10, "Progress: ", ValueToUTFBars.Styles.Horizontal);
        Console.Header.ForceNewLine();

        _treeHit      = new HeaderValue[amount];
        _gridRenderer = new GridPreview <char> [amount];

        for (int i = 0; i < amount; i++)
        {
            _treeHit[i] = Console.Header.CreateFormatedValue(13, "Tree Hits: ");

            _gridRenderer[i] = new GridPreview <char>((c) => c, new RectInt(i * headerSize, 6, gridPreviewWidth, 20));
            _gridRenderer[i].GetTileColor = (c) => c switch
            {
                '.' => ConsoleColor.Gray,
                '#' => ConsoleColor.DarkGreen,
                '@' => ConsoleColor.Yellow,
                'X' => ConsoleColor.Red,
                'O' => ConsoleColor.Cyan,
                _ => ConsoleColor.Gray
            };
        }
    }
示例#3
0
 public Solver(GrowingGrid <char> grid, GridPreview <char> renderer, HeaderValue treeHitHeader, Point direction)
 {
     _totalHeight  = grid.FullHeight;
     Grid          = grid;
     Renderer      = renderer;
     TreeHitHeader = treeHitHeader;
     _direction    = direction;
 }
示例#4
0
    //-----------------------------------------------------------------

    public override void SetUpConsolePart2()
    {
        Console.Header.ReserveLines(91);
        _gridPreview = new GridPreview <TileType>(GetDisplayChar, new RectInt(0, 3, 91, 91));
        _gridPreview.GetTileColor = (tileType) => tileType switch
        {
            TileType.Occupied => ConsoleColor.Green,
            TileType.Empty => ConsoleColor.Gray,
            _ => ConsoleColor.DarkGray,
        };
        //_occupiedPreview = new GridPreview<int>((x => x == 9 ? '.' : x.ToString()[0]), new RectInt(35, 3, 30, 30));
    }
示例#5
0
    //-----------------------------------------------------------------

    public override void SetUpConsolePart1()
    {
        Console.Header.ReserveLines(0);
        Console.Header.ReserveLines(30);
        _gridPreview = new GridPreview <char>(x => x, new RectInt(0, 3, 30, 30));
        _gridPreview.GetTileColor = c => c switch
        {
            '@' => ConsoleColor.Yellow,
            '~' => ConsoleColor.Blue,
            _ => ConsoleColor.Gray
        };
    }
示例#6
0
    //-----------------------------------------------------------------

    public override void SetUpConsolePart1()
    {
        Console.Header.ReserveLines(40);
        _gridPreview     = new GridPreview <TileType>(GetDisplayChar, new RectInt(0, 3, 60, 40));
        _occupiedPreview = new GridPreview <int>((x => x == 9 ? '.' : x.ToString()[0]), new RectInt(35, 3, 30, 30));
    }
示例#7
0
        /// <summary>
        /// Shows preview for selected file.
        /// </summary>
        private void Preview()
        {
            if (LstFiles.SelectedIndices.Count == 0)
            {
                return;
            }

            var selected = LstFiles.SelectedItems[0];
            var fileName = (string)selected.Tag;
            var ipfFile  = _files[fileName];
            var ext      = Path.GetExtension(fileName).ToLowerInvariant();

            var previewType = PreviewType.None;
            var lexer       = Lexer.Null;

            FileFormat fileType;

            if (_fileTypes.TryGetValue(ext, out fileType))
            {
                previewType = fileType.PreviewType;
                lexer       = fileType.Lexer;
            }

            ThreadPool.QueueUserWorkItem(state =>
            {
                switch (previewType)
                {
                case PreviewType.Text:
                    var txtData = ipfFile.GetData();
                    var text    = Encoding.UTF8.GetString(txtData);

                    SetTextPreviewStyle(lexer);

                    Invoke((MethodInvoker) delegate
                    {
                        TxtPreview.ReadOnly = false;
                        TxtPreview.Text     = text;
                        TxtPreview.ReadOnly = true;
                        TxtPreview.Visible  = true;
                    });
                    break;

                case PreviewType.Image:
                    var imgData = ipfFile.GetData();

                    Invoke((MethodInvoker) delegate
                    {
                        using (var ms = new MemoryStream(imgData))
                            ImgPreview.Image = Image.FromStream(ms);
                        ImgPreview.Size         = ImgPreview.Image.Size;
                        PnlImagePreview.Visible = true;
                    });
                    break;

                case PreviewType.DdsImage:
                    var ddsData = ipfFile.GetData();

                    DDSImage ddsImage = null;
                    try
                    {
                        ddsImage = new DDSImage(ddsData);
                    }
                    catch (Exception)
                    {
                        Invoke((MethodInvoker) delegate
                        {
                            LblPreview.Text = "Preview failed";
                        });
                        break;
                    }

                    Invoke((MethodInvoker) delegate
                    {
                        ImgPreview.Image        = ddsImage.BitmapImage;
                        ImgPreview.Size         = ImgPreview.Image.Size;
                        PnlImagePreview.Visible = true;
                    });
                    break;

                case PreviewType.TgaImage:
                    var tgaData = ipfFile.GetData();

                    TargaImage tgaImage = null;
                    try
                    {
                        using (var ms = new MemoryStream(tgaData))
                            tgaImage = new TargaImage(ms);
                    }
                    catch (Exception)
                    {
                        Invoke((MethodInvoker) delegate
                        {
                            LblPreview.Text = "Preview failed";
                        });
                        break;
                    }

                    Invoke((MethodInvoker) delegate
                    {
                        ImgPreview.Image        = tgaImage.Image;
                        ImgPreview.Size         = ImgPreview.Image.Size;
                        PnlImagePreview.Visible = true;
                    });
                    break;

                case PreviewType.IesTable:
                    var iesData = ipfFile.GetData();
                    var iesFile = new IesFile(iesData);

                    Invoke((MethodInvoker) delegate
                    {
                        GridPreview.SuspendDrawing();

                        foreach (var iesColumn in iesFile.Columns)
                        {
                            GridPreview.Columns.Add(iesColumn.Name, iesColumn.Name);
                        }

                        foreach (var iesRow in iesFile.Rows)
                        {
                            var row = new DataGridViewRow();
                            row.CreateCells(GridPreview);

                            var i = 0;
                            foreach (var iesColumn in iesFile.Columns)
                            {
                                row.Cells[i++].Value = iesRow[iesColumn.Name];
                            }

                            GridPreview.Rows.Add(row);
                        }

                        GridPreview.ResumeDrawing();

                        GridPreview.Visible = true;
                    });
                    break;

                case PreviewType.TtfFont:
                    var pfc = new PrivateFontCollection();

                    try
                    {
                        var ttfData = ipfFile.GetData();
                        using (var ms = new MemoryStream(ttfData))
                        {
                            var fontdata = new byte[ms.Length];
                            ms.Read(fontdata, 0, (int)ms.Length);

                            unsafe
                            {
                                fixed(byte *pFontData = fontdata)
                                pfc.AddMemoryFont((IntPtr)pFontData, fontdata.Length);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        Invoke((MethodInvoker) delegate
                        {
                            LblPreview.Text = "Preview failed";
                        });
                        break;
                    }

                    var fontFamily = pfc.Families.First();
                    var font       = new Font(fontFamily, 18, FontStyle.Regular, GraphicsUnit.Pixel);
                    var arialFont  = new Font("Arial", 12);

                    var fontInfo = "Name: " + fontFamily.Name;
                    var example1 = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ\n1234567890.:,;'\" (!?) +-*/=";
                    var example2 = "Lorem ipsum dolor sit amet.";

                    var bmp = new Bitmap(600, 500);
                    using (var graphics = Graphics.FromImage(bmp))
                    {
                        var infoHeight     = graphics.MeasureString(fontInfo, arialFont).Height;
                        var example1Height = graphics.MeasureString(example1, font).Height;

                        graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
                        graphics.FillRectangle(Brushes.White, new Rectangle(0, 0, bmp.Width, bmp.Height));

                        graphics.DrawString(fontInfo, arialFont, Brushes.Black, new Point(0, 0));
                        graphics.DrawString(example1, font, Brushes.Black, new PointF(0, infoHeight + 10));

                        var point = new PointF(10, infoHeight + 10 + example1Height + 20);
                        foreach (var size in new int[] { 12, 18, 24, 36, 48, 60, 72 })
                        {
                            font = new Font(fontFamily, size, FontStyle.Regular, GraphicsUnit.Pixel);
                            graphics.DrawString(example2, font, Brushes.Black, point);
                            point.Y += font.Height + 5;
                        }
                    }

                    Invoke((MethodInvoker) delegate
                    {
                        ImgPreview.Image        = bmp;
                        ImgPreview.Size         = ImgPreview.Image.Size;
                        PnlImagePreview.Visible = true;
                    });
                    break;

                default:
                    Invoke((MethodInvoker) delegate
                    {
                        LblPreview.Text = "No Preview";
                    });
                    break;
                }
            });
        }
示例#8
0
        /// <summary>
        /// Opens given IPF file.
        /// </summary>
        /// <param name="filePath"></param>
        private void Open(string filePath)
        {
            if (Path.GetExtension(filePath) == ".ies")
            {
                this.ResetPreview();

                var iesData = File.ReadAllBytes(filePath);
                var iesFile = new IesFile(iesData);

                Invoke((MethodInvoker) delegate
                {
                    GridPreview.SuspendDrawing();

                    foreach (var iesColumn in iesFile.Columns)
                    {
                        GridPreview.Columns.Add(iesColumn.Name, iesColumn.Name);
                    }

                    foreach (var iesRow in iesFile.Rows)
                    {
                        var row = new DataGridViewRow();
                        row.CreateCells(GridPreview);

                        var i = 0;
                        foreach (var iesColumn in iesFile.Columns)
                        {
                            row.Cells[i++].Value = iesRow[iesColumn.Name];
                        }

                        GridPreview.Rows.Add(row);
                    }

                    GridPreview.ResumeDrawing();

                    GridPreview.Visible = true;
                });

                SplMain.Visible = true;

                return;
            }

            // Reset everything
            TreeFolders.Nodes.Clear();
            LstFiles.Items.Clear();
            ResetPreview();

            _folders.Clear();
            _files.Clear();

            LblVersion.Text  = "";
            LblFileName.Text = "";

            // Open IPF
            try
            {
                _openedIpf = new Ipf(filePath);
                _openedIpf.Load();
            }
            catch (IOException)
            {
                _openedIpf = null;
                MessageBox.Show("Failed to open file, it's already in use.", Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // Create file list
            var paths = new List <string>();

            foreach (var ipfFile in _openedIpf.Files)
            {
                paths.Add(ipfFile.FullPath);
                _files.Add(ipfFile.FullPath, ipfFile);
            }

            // Create fil tree
            PopulateTreeView(TreeFolders, paths, '/');

            // Status info
            LblVersion.Text  = "Version " + _openedIpf.Footer.NewVersion;
            LblFileName.Text = filePath;

            // Open first node if there only is one
            if (TreeFolders.Nodes.Count == 1)
            {
                TreeFolders.SelectedNode = TreeFolders.Nodes[0];
                TreeFolders.SelectedNode.Toggle();
            }

            // Show lists and enabled pack extract button
            BtnExtractPack.Enabled = true;
            SplMain.Visible        = true;
        }