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)"; } }
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; }