Ejemplo n.º 1
0
        public static bool OpenPropEditorForm(FCYResPackageFloderNode tNode)
        {
            PropEditor tForm = new PropEditor(tNode.Name);

            if (tForm.ShowDialog() == DialogResult.Cancel)
            {
                tForm.Dispose();
                return false;
            }
            else
            {
                try
                {
                    if (tNode.Name != tForm.textBox2.Text)
                        tNode.Name = tForm.textBox2.Text;
                }
                catch (FCYExcpNameErr)
                {
                    MessageBox.Show("修改节点名称失败。可能存在同名节点或者节点名称不合法。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                tForm.Dispose();
                return true;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 从文件创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="Name">名称</param>
        /// <param name="FileName">文件名</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name, string FileName)
            : base(Parent, Name)
        {
            m_Package = ParentFile;

            FileStream tFile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);

            ReplaceStream(tFile);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 从XML数据创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml数据</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.GetAttribute("Name"))
        {
            m_Package = ParentFile;

            // 检查Xml是否有效
            if (XmlNode.Name != "Node")
            {
                throw new FCYExcpInvalidNode("Not a Node.");
            }

            // 设置额外数据
            AdditionData = XmlNode.InnerText;

            // 原始大小
            if (XmlNode.HasAttribute("OrgSize"))
            {
                m_DataRealSize = Convert.ToUInt32(XmlNode.GetAttribute("OrgSize"));
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }

            // 压缩后大小
            if (XmlNode.HasAttribute("CompressedSize"))
            {
                m_DataCompressedSize = Convert.ToUInt32(XmlNode.GetAttribute("CompressedSize"));
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }

            // 位移量
            if (XmlNode.HasAttribute("Offset"))
            {
                m_MainDataOffset = Convert.ToUInt32(XmlNode.GetAttribute("Offset"));
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }

            // 是否压缩
            if (XmlNode.HasAttribute("IsCompressed"))
            {
                m_IsCompressed = XmlNode.GetAttribute("IsCompressed") == "yes" ? true : false;
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 从Xml创建文件夹节点
        /// </summary>
        /// <param name="Package">绑定的资源包</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml节点</param>
        public FCYResPackageFloderNode(FCYResPackage Package, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.HasAttribute("Name") ? XmlNode.GetAttribute("Name") : "")
        {
            m_NodeList.Clear();

            foreach (XmlElement x in XmlNode)
            {
                if (x.Name == "Floder")
                {
                    FCYResPackageFloderNode tFloder = new FCYResPackageFloderNode(Package, this, x);
                    Add(tFloder);
                }
                else
                {
                    FCYResPackageDataNode tData = new FCYResPackageDataNode(Package, this, x);
                    Add(tData);
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 从文件创建
        /// </summary>
        /// <param name="Path">文件路径</param>
        public FCYResPackage(string Path)
        {
            m_BaseStream = null;
            try
            {
                m_BaseStream = new FileStream(Path, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
            }
            catch (IOException e)
            {
                throw new FCYExcpOpenErr(e.Message);
            }

            m_FilePath = Path;

            BinaryReader tReader = new BinaryReader(m_BaseStream);

            // 读取文件头
            readDataHeader(BaseStream);

            // 至索引区
            m_BaseStream.Seek(m_IndexOffset, SeekOrigin.Begin);

            // 读取Xml数据大小
            uint tXmlDataSize = tReader.ReadUInt32();

            // 读取Xml数据并解压
            MemoryStream tXmlMem = FCYResPackageHelper.DeflateDecode(m_BaseStream, (int)tXmlDataSize);

            // 创建Xml文档
            XmlDocument tXmlDoc = new XmlDocument();

            tXmlDoc.Load(tXmlMem);

            // 读取数据
            m_Root = new FCYResPackageFloderNode(this, null, (XmlElement)tXmlDoc.SelectSingleNode("Res"));

            // 关闭Xml数据
            tXmlMem.Close();
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 创建文件夹节点
 /// </summary>
 /// <param name="Parent">父节点</param>
 /// <param name="Name">节点名</param>
 public FCYResPackageFloderNode(FCYResPackageFloderNode Parent, string Name)
     : base(Parent, Name)
 {
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 从XML数据创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml数据</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.GetAttribute("Name"))
        {
            m_Package = ParentFile;

            // 检查Xml是否有效
            if (XmlNode.Name != "Node")
                throw new FCYExcpInvalidNode("Not a Node.");

            // 设置额外数据
            AdditionData = XmlNode.InnerText;

            // 原始大小
            if (XmlNode.HasAttribute("OrgSize"))
                m_DataRealSize = Convert.ToUInt32(XmlNode.GetAttribute("OrgSize"));
            else
                throw new FCYExcpNodeErr("Attribute Err.");

            // 压缩后大小
            if (XmlNode.HasAttribute("CompressedSize"))
                m_DataCompressedSize = Convert.ToUInt32(XmlNode.GetAttribute("CompressedSize"));
            else
                throw new FCYExcpNodeErr("Attribute Err.");

            // 位移量
            if (XmlNode.HasAttribute("Offset"))
                m_MainDataOffset = Convert.ToUInt32(XmlNode.GetAttribute("Offset"));
            else
                throw new FCYExcpNodeErr("Attribute Err.");

            // 是否压缩
            if (XmlNode.HasAttribute("IsCompressed"))
                m_IsCompressed = XmlNode.GetAttribute("IsCompressed") == "yes" ? true : false;
            else
                throw new FCYExcpNodeErr("Attribute Err.");
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 从文件创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="Name">名称</param>
        /// <param name="FileName">文件名</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name, string FileName)
            : base(Parent, Name)
        {
            m_Package = ParentFile;

            FileStream tFile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
            ReplaceStream(tFile);
        }
Ejemplo n.º 9
0
 /// <summary>
 /// 创建一个节点
 /// </summary>
 /// <param name="ParentFile">父文件</param>
 /// <param name="Parent">父节点</param>
 /// <param name="Name">名称</param>
 public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name)
     : base(Parent, Name)
 {
     m_Package = ParentFile;
 }
Ejemplo n.º 10
0
        /// <summary>
        /// 从文件创建
        /// </summary>
        /// <param name="Path">文件路径</param>
        public FCYResPackage(string Path)
        {
            m_BaseStream = null;
            try
            {
                m_BaseStream = new FileStream(Path, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
            }
            catch (IOException e)
            {
                throw new FCYExcpOpenErr(e.Message);
            }

            m_FilePath = Path;

            BinaryReader tReader = new BinaryReader(m_BaseStream);

            // 读取文件头
            readDataHeader(BaseStream);

            // 至索引区
            m_BaseStream.Seek(m_IndexOffset, SeekOrigin.Begin);

            // 读取Xml数据大小
            uint tXmlDataSize = tReader.ReadUInt32();

            // 读取Xml数据并解压
            MemoryStream tXmlMem = FCYResPackageHelper.DeflateDecode(m_BaseStream, (int)tXmlDataSize);

            // 创建Xml文档
            XmlDocument tXmlDoc = new XmlDocument();
            tXmlDoc.Load(tXmlMem);

            // 读取数据
            m_Root = new FCYResPackageFloderNode(this, null, (XmlElement)tXmlDoc.SelectSingleNode("Res"));

            // 关闭Xml数据
            tXmlMem.Close();
        }
Ejemplo n.º 11
0
        private uint m_Version = 1; // 版本

        #endregion Fields

        #region Constructors

        public FCYResPackage()
        {
            m_Root = new FCYResPackageFloderNode(null, "");
        }
Ejemplo n.º 12
0
 /// <summary>
 /// 创建一个节点
 /// </summary>
 /// <param name="ParentFile">父文件</param>
 /// <param name="Parent">父节点</param>
 /// <param name="Name">名称</param>
 public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name)
     : base(Parent, Name)
 {
     m_Package = ParentFile;
 }
Ejemplo n.º 13
0
        // --- 创建文件夹 ---
        private void ToolStripMenuItem_CreateFloder_Click(object sender, EventArgs e)
        {
            // 获得父节点
            TreeNode tParent = treeView_Main.SelectedNode;
            if (tParent != null)
            {
                // 检查父节点
                if (!((FCYResPackageNode)tParent.Tag).IsFloder())
                {
                    showErr("请选择一个文件夹节点。");
                    return;
                }

                // 获得父节点
                FCYResPackageFloderNode tParentFloder = (FCYResPackageFloderNode)tParent.Tag;

                // 获得新节点名称
                string tNodeName = "";
                if (!CreateFloderForm.OpenCreateFloderForm(treeView_Main.SelectedNode.FullPath, ref tNodeName))
                    return;

                if (tNodeName == "")
                {
                    showErr("无效的名称。");
                    return;
                }

                // 创建节点
                FCYResPackageFloderNode tNewSubNode = new FCYResPackageFloderNode(tParentFloder, tNodeName);

                // 尝试加入
                try
                {
                    tParentFloder.Add(tNewSubNode);
                }
                catch
                {
                    showErr("节点名已存在或者无效。");
                    return;
                }

                // 创建树节点
                TreeNode tTreeNode = new TreeNode(tNodeName, 0, 0);
                tTreeNode.Tag = tNewSubNode;

                // 加入
                tParent.Nodes.Add(tTreeNode);
                tParent.Expand();
            }
        }
Ejemplo n.º 14
0
 public FCYResPackage()
 {
     m_Root = new FCYResPackageFloderNode(null, "");
 }
Ejemplo n.º 15
0
 /// <summary>
 /// 创建文件夹节点
 /// </summary>
 /// <param name="Parent">父节点</param>
 /// <param name="Name">节点名</param>
 public FCYResPackageFloderNode(FCYResPackageFloderNode Parent, string Name)
     : base(Parent, Name)
 {
 }
Ejemplo n.º 16
0
        /// <summary>
        /// 从Xml创建文件夹节点
        /// </summary>
        /// <param name="Package">绑定的资源包</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml节点</param>
        public FCYResPackageFloderNode(FCYResPackage Package, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.HasAttribute("Name") ? XmlNode.GetAttribute("Name") : "")
        {
            m_NodeList.Clear();

            foreach (XmlElement x in XmlNode)
            {
                if (x.Name == "Floder")
                {
                    FCYResPackageFloderNode tFloder = new FCYResPackageFloderNode(Package, this, x);
                    Add(tFloder);
                }
                else
                {
                    FCYResPackageDataNode tData = new FCYResPackageDataNode(Package, this, x);
                    Add(tData);
                }
            }
        }
Ejemplo n.º 17
0
        private FCYResPackageFloderNode m_Parent; // 父节点

        #endregion Fields

        #region Constructors

        /// <summary>
        /// 创建一个节点
        /// </summary>
        /// <param name="Parent">父节点</param>
        /// <param name="Name">节点名称</param>
        protected FCYResPackageNode(FCYResPackageFloderNode Parent, string Name)
        {
            m_Parent = Parent;
            m_Name = Name;
        }
Ejemplo n.º 18
0
 /// <summary>
 /// 创建一个节点
 /// </summary>
 /// <param name="Parent">父节点</param>
 /// <param name="Name">节点名称</param>
 protected FCYResPackageNode(FCYResPackageFloderNode Parent, string Name)
 {
     m_Parent = Parent;
     m_Name   = Name;
 }