Пример #1
0
        void OpenFile(string fileName)
        {
            if (!File.Exists(fileName))
            {
                MessageBox.Show("File does not exist!");
                return;
            }

            if (hexBox1.ByteProvider != null)
            {
                if (CloseFile() == DialogResult.Cancel)
                {
                    return;
                }
            }

            try
            {
                FileByteProvider fileByteProvider = new FileByteProvider(fileName);
                fileByteProvider.Changed += new EventHandler(byteProvider_Changed);
                hexBox1.ByteProvider      = fileByteProvider;
                _fileName     = fileName;
                _lastFilename = _fileName;
                // DisplayText(fileName);
            }
            catch (Exception ex1)
            {
                MessageBox.Show(ex1.Message, "HexEditor", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            finally
            {
                ManageAbility();
            }
        }
Пример #2
0
 /// <summary>
 /// Saves the file at the given index - optimized for using an already open stream
 /// </summary>
 void Core_SaveFile(int index)
 {
     try
     {
         FileByteProvider file = FileHexBoxes[index].ByteProvider as FileByteProvider;
         file.ApplyChanges();
     }
     catch (Exception ex)
     {
         Program.ShowError("The file could not be saved.", ex);
     }
 }
Пример #3
0
        /// <summary>
        /// Opens a file.
        /// </summary>
        /// <param name="path">the file name of the file to open</param>
        void Core_OpenFile(string path)
        {
            if (!File.Exists(path))
            {
                Program.ShowMessage("The file does not exist.");
                return;
            }

            try
            {
                FileByteProvider file;
                try
                {
                    // try to open in write mode
                    file                = new FileByteProvider(path);
                    file.Changed       += new EventHandler(HexBox_ByteProvider_Changed);
                    file.LengthChanged += new EventHandler(HexBox_ByteProvider_LengthChanged);
                }
                catch (IOException) // write mode failed
                {
                    try
                    {
                        // try to open in read-only mode
                        file = new FileByteProvider(path, true);
                        if (Program.ShowQuestion("This file can only be opened as read-only. Proceed ?") == DialogResult.No)
                        {
                            file.Dispose();
                            return;
                        }
                    }
                    catch (IOException ex) // read-only also failed
                    {
                        // file cannot be opened
                        Program.ShowError("The attempt to open the file has failed.", ex);
                        return;
                    }
                }

                Core_CreateTabPage(file, path);

                Menu_File_RecentFiles.AddFile(path);
            }
            catch (Exception ex)
            {
                Program.ShowError(ex);
                return;
            }
        }
Пример #4
0
        /// <summary>
        /// Saves the current file.
        /// </summary>
        void SaveFile()
        {
            if (hexBox1.ByteProvider == null)
            {
                return;
            }

            try
            {
                if (File.Exists(_fileName))
                {
                    File.Copy(_fileName, _fileName + "-backup" + DateTime.Now.Ticks.ToString());
                    FileByteProvider        fileByteProvider        = hexBox1.ByteProvider as FileByteProvider;
                    DynamicByteProvider     dynamicByteProvider     = hexBox1.ByteProvider as DynamicByteProvider;
                    DynamicFileByteProvider dynamicFileByteProvider = hexBox1.ByteProvider as DynamicFileByteProvider;
                    if (fileByteProvider != null)
                    {
                        fileByteProvider.ApplyChanges();
                    }
                    else if (dynamicFileByteProvider != null)
                    {
                        dynamicFileByteProvider.ApplyChanges();
                    }
                    else if (dynamicByteProvider != null)
                    {
                        byte[] data = dynamicByteProvider.Bytes.ToArray();
                        using (FileStream stream = File.Open(_fileName, FileMode.Create, FileAccess.Write, FileShare.Read))
                        {
                            stream.Write(data, 0, data.Length);
                        }
                        dynamicByteProvider.ApplyChanges();
                    }
                }
            }
            catch (Exception ex1)
            {
                MessageBox.Show(ex1.Message, "T5Suite 2.0", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            finally
            {
                ManageAbility();
            }
        }
Пример #5
0
        private void buttonHex_Click(object sender, EventArgs e)
        {
            if (byteProvider != null)
            {
                byteProvider.Dispose();
            }
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Filter = "Hex文件|*.hex|所有文件|*.*";
            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                File.Copy(fileDialog.FileName, "./temp/" + Path.GetFileName(fileDialog.FileName), true);
                byteProvider           = new FileByteProvider("./temp/" + Path.GetFileName(fileDialog.FileName));
                hexBoxPRG.ByteProvider = byteProvider;
                textBoxHex.Text        = fileDialog.FileName;
                FileInfo fileInfo = new FileInfo("./temp/" + Path.GetFileName(fileDialog.FileName));
                textBoxHexSize.Text = (fileInfo.Length / 1024).ToString() + "KB";
            }
        }
Пример #6
0
        /// <summary>
        /// Creates a new TabPage for the given file
        /// </summary>
        void Core_CreateTabPage(FileByteProvider file, string fileName)
        {
            TabPage tabpage = new TabPage();

            tabpage.Name    = "FileTabPage" + FileTabPages.Count;
            tabpage.Text    = fileName;
            tabpage.Padding = new Padding(3);
            tabpage.Size    = MainTabPage.Size;

            HexBox hexbox = new HexBox();

            hexbox.ByteProvider                  = file;
            hexbox.Name                          = "MainHexBox";
            hexbox.LineInfoVisible               = true;
            hexbox.ColumnInfoVisible             = true;
            hexbox.StringViewVisible             = true;
            hexbox.VScrollBarVisible             = true;
            hexbox.UseFixedBytesPerLine          = true;
            hexbox.Location                      = new Point(-2, 0);
            hexbox.Size                          = MainHexBox.Size;
            hexbox.Anchor                        = (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right);
            hexbox.BorderStyle                   = BorderStyle.None;
            hexbox.TabIndex                      = 0;
            hexbox.SelectionStartChanged        += new System.EventHandler(this.HexBox_SelectionStartChanged);
            hexbox.SelectionLengthChanged       += new System.EventHandler(this.HexBox_SelectionLengthChanged);
            hexbox.CurrentLineChanged           += new System.EventHandler(this.HexBox_Position_Changed);
            hexbox.CurrentPositionInLineChanged += new EventHandler(this.HexBox_Position_Changed);
            hexbox.Copied                       += new System.EventHandler(this.HexBox_Copy);
            hexbox.CopiedHex                    += new System.EventHandler(this.HexBox_CopyHex);

            tabpage.Controls.Add(hexbox);

            FilePaths.Add(fileName);
            FileTabPages.Add(tabpage);
            FileHexBoxes.Add(hexbox);

            Tabs_Control.Controls.Add(tabpage);
            Tabs_Control.SelectTab(Tabs_Control.TabCount - 1);
            hexbox.Focus();
        }
Пример #7
0
        void OpenFile(string fileName)
        {
            if (!File.Exists(fileName))
            {
                MessageBox.Show("File does not exist!");
                return;
            }

            if (hexBox1.ByteProvider != null)
            {
                if (CloseFile() == DialogResult.Cancel)
                    return;
            }

            try
            {
                FileByteProvider fileByteProvider = new FileByteProvider(fileName);
                fileByteProvider.Changed += new EventHandler(byteProvider_Changed);
                hexBox1.ByteProvider = fileByteProvider;
                _fileName = fileName;
                _lastFilename = _fileName;
               // DisplayText(fileName);
            }
            catch (Exception ex1)
            {
                MessageBox.Show(ex1.Message, "HexEditor", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            finally
            {
               ManageAbility();
            }
        }
Пример #8
0
 public DumpHandle(DumpUnit unit)
 {
     this.Unit     = unit;
     this.Provider = new FileByteProvider(unit.path);
 }