Example #1
0
        public new void UpdateGUI(SimPe.Interfaces.Plugin.IFileWrapper wrapper)
        {
            SimPe.PackedFiles.Wrapper.Generic generic = (SimPe.PackedFiles.Wrapper.Generic)wrapper;
            form.mytree.Visible = true;
            IPackedFileDescriptor pfd = wrapper.FileDescriptor;

            form.mytree.Nodes.Clear();
            form.treeBanner.Text = "[Can't process unknown type 0x" + pfd.Type.ToString("X") + "]";

            SimPe.PackedFiles.Wrapper.Generic.CreateFileObject cfo = (SimPe.PackedFiles.Wrapper.Generic.CreateFileObject)generic.Subhandlers[pfd.Type];
            SimPe.PackedFiles.Wrapper.Generic file = null;

            //no Type Handler, so try to load a Signature Based Handler
            if (cfo == null)
            {
                file = generic.CreateSignatureBasedFileObject(wrapper);
            }

            //neither signature Based Handler nor Type SubHandler -> return
            if ((cfo == null) && (file == null))
            {
                return;
            }

            //found a type based SubHander, so load it. Otherwise an existing Signature
            //Based filehandler will be used
            if (cfo != null)
            {
                file = cfo(wrapper);
            }

            form.treeBanner.Text = file.GetTypeName(pfd.Type) + " Viewer";

            //clear the Item Panel
            form.treeItemPanel.Controls.Clear();

            //create Columns in Item Panel
            SimPe.PackedFiles.Wrapper.GenericCommon common = file.Attributes;
            if (file.Count > 0)
            {
                common = file.GetItem(0);
            }
            string[] names = common.Names;
            //int size = 0;

            if (names.Length == 0)
            {
                return;
            }
            for (int i = 0; i < names.Length; i++)
            {
                string s = names[i];

                Label lb = new Label();
                lb.Parent    = form.treeItemPanel;
                lb.Location  = new Point(0, i * 21 + 4);
                lb.Text      = names[i];
                lb.AutoSize  = true;
                lb.BackColor = Color.Transparent;

                TextBox tb = new TextBox();
                tb.Parent   = form.treeItemPanel;
                tb.Location = new Point(lb.Width + 8, i * 21);
                tb.Text     = "";
                tb.Width    = form.treeItemPanel.ClientRectangle.Width - tb.Left;
                tb.Tag      = i;
            }


            if (file.Count > 0)           //we have FileItems
            {
                AddTreeNodes(file.Items, null, names);
            }


            if (form.listList.Items.Count == 1)
            {
                form.listBanner.Text += " (" + form.listList.Items.Count.ToString() + " Item)";
            }
        }
Example #2
0
        public void UpdateGUI(SimPe.Interfaces.Plugin.IFileWrapper wrapper)
        {
            SimPe.PackedFiles.Wrapper.Generic generic = (SimPe.PackedFiles.Wrapper.Generic)wrapper;


            if (wrapper.GetType().GetInterface("SimPe.Interfaces.Plugin.IFileWrapperSaveExtension", true) != null)
            {
                form.wrapper            = (SimPe.Interfaces.Plugin.IFileWrapperSaveExtension)wrapper;
                form.lllvcommit.Enabled = true;
            }
            else
            {
                form.wrapper            = null;
                form.lllvcommit.Enabled = false;
            }

            //visualStyleLinkLabel1
            IPackedFileDescriptor pfd = wrapper.FileDescriptor;

            form.listList.Items.Clear();
            form.listList.Columns.Clear();
            form.listBanner.Text = "[Can't process unknown type 0x" + pfd.Type.ToString("X") + "]";

            try
            {
                SimPe.PackedFiles.Wrapper.Generic.CreateFileObject cfo = (SimPe.PackedFiles.Wrapper.Generic.CreateFileObject)generic.Subhandlers[pfd.Type];
                SimPe.PackedFiles.Wrapper.Generic file = generic;

                form.listBanner.Text = file.GetTypeName(pfd.Type) + " " + Localization.Manager.GetString("viewer");

                //clear the Item Panel
                form.itemPanel.Controls.Clear();

                //create Columns
                SimPe.PackedFiles.Wrapper.GenericCommon common = file.Attributes;
                if (file.Count > 0)
                {
                    common = file.GetItem(0);
                }
                string[] names = common.Names;
                int      size  = 0;

                if (names.Length == 0)
                {
                    return;
                }

                int[] lengths = new int[names.Length];
                for (int i = 0; i < names.Length; i++)
                {
                    string s        = names[i];
                    int    thissize = Math.Max(190, s.Length * 15);
                    size += thissize;

                    if (i == names.Length - 1)
                    {
                        thissize = Math.Max(thissize, form.listList.Width - size);
                    }


                    form.listList.Columns.Add(s, thissize, System.Windows.Forms.HorizontalAlignment.Left);

                    Label lb = new Label();
                    lb.Parent    = form.itemPanel;
                    lb.Location  = new Point(0, i * 21 + 4);
                    lb.Text      = names[i];
                    lb.AutoSize  = true;
                    lb.BackColor = Color.Transparent;

                    TextBox tb = new TextBox();
                    tb.Parent   = form.itemPanel;
                    tb.Location = new Point(lb.Width + 8, i * 21);
                    tb.Text     = "";
                    tb.Width    = form.itemPanel.ClientRectangle.Width - tb.Left;
                    tb.Tag      = i;
                    lengths[i]  = 0;
                }


                if (file.Count > 0)               //we have FileItems
                {
                    for (uint i = 0; i < file.Count; i++)
                    {
                        SimPe.PackedFiles.Wrapper.GenericItem fileitem = file.GetItem(i);

                        if (fileitem != null)
                        {
                            string       name = ToString(names[0], fileitem, fileitem.Properties[names[0]]);
                            ListViewItem item = new ListViewItem(name);
                            lengths[0] = (int)Math.Max(lengths[0], name.Length);
                            for (int k = 1; k < names.Length; k++)
                            {
                                name = ToString(names[k], fileitem, fileitem.Properties[names[k]]);
                                item.SubItems.Add(name);
                                lengths[k] = (int)Math.Max(lengths[k], name.Length);
                            }

                            item.Tag = fileitem;
                            form.listList.Items.Add(item);
                        }
                    }
                }


                for (int i = 0; i < form.listList.Columns.Count; i++)
                {
                    ColumnHeader h = form.listList.Columns[i];
                    h.Width = (int)Math.Min(200, lengths[i] * 10);
                }


                if (form.listList.Items.Count == 1)
                {
                    form.listBanner.Text += " (" + form.listList.Items.Count.ToString() + " Item)";
                }
                else
                {
                    form.listBanner.Text += " (" + form.listList.Items.Count.ToString() + " Items)";
                }
            }
            catch (Exception ex)
            {
                if (Helper.DebugMode)
                {
                    form.listBanner.Text += " [" + ex.Message + "]";
                }
            }

            //form.listList.Sort();
            form.listList.ListViewItemSorter = null;
        }