private void btnSavePreset_Click(object sender, EventArgs e) { OffsetFinderTemplate preset = getPresetForCurrentValues(); if (preset != null) { SavePresetForm saveForm = new SavePresetForm(preset); saveForm.Show(); } }
private void loadSelectedItem() { OffsetFinderTemplate preset = (OffsetFinderTemplate)this.comboPresets.SelectedItem; if (preset != null) { this.resetCriteriaSection(); this.resetCutSection(); this.loadOffsetFinderPreset(preset); if (!String.IsNullOrEmpty(preset.NotesOrWarnings)) { MessageBox.Show(preset.NotesOrWarnings, "Notes/Warnings"); } } }
private OffsetFinderTemplate getPresetFromFile(string filePath) { OffsetFinderTemplate preset = null; preset = new OffsetFinderTemplate(); XmlSerializer serializer = new XmlSerializer(preset.GetType()); using (FileStream xmlFs = File.OpenRead(filePath)) { using (XmlTextReader textReader = new XmlTextReader(xmlFs)) { preset = (OffsetFinderTemplate)serializer.Deserialize(textReader); } } return(preset); }
private void loadOffsetPlugins() { comboPresets.Items.Clear(); foreach (string f in Directory.GetFiles(PLUGIN_PATH, "*.xml", SearchOption.TopDirectoryOnly)) { try { OffsetFinderTemplate preset = getPresetFromFile(f); if ((preset != null) && (!String.IsNullOrEmpty(preset.Header.FormatName))) { comboPresets.Items.Add(preset); } } catch (Exception) { MessageBox.Show(String.Format("Error loading preset file <{0}>", Path.GetFileName(f)), "Error"); } } comboPresets.Sorted = true; }
private OffsetFinderTemplate getPresetForCurrentValues() { OffsetFinderTemplate preset = new OffsetFinderTemplate(); // Criteria Section preset.SearchParameters.SearchString = this.tbSearchString.Text; preset.SearchParameters.TreatSearchStringAsHex = this.cbSearchAsHex.Checked; preset.SearchParameters.StartingOffset = this.tbStartingOffset.Text; if (this.cbModOffsetSearchString.Checked) { preset.SearchParameters.UseModOffsetForSearchStringSpecified = true; preset.SearchParameters.UseModOffsetForSearchString = true; preset.SearchParameters.ModOffsetForSearchStringDivisor = this.tbOffsetModuloSearchStringDivisor.Text; preset.SearchParameters.ModOffsetForSearchStringResult = this.tbOffsetModuloSearchStringResult.Text; } else { preset.SearchParameters.UseModOffsetForSearchStringSpecified = true; preset.SearchParameters.UseModOffsetForSearchString = false; } // Cut Options Section preset.SearchParameters.SearchStringOffset = this.tbSearchStringOffset.Text; preset.SearchParameters.OutputFileExtension = this.tbOutputExtension.Text; preset.SearchParameters.MinimumSizeForCutting = this.tbMinSizeForCut.Text; // Cut Size Section if (this.rbStaticCutSize.Checked) { preset.SearchParameters.CutParameters.CutStyle = CutStyle.@static; preset.SearchParameters.CutParameters.StaticCutSize = this.tbStaticCutsize.Text; } else if (this.rbOffsetBasedCutSize.Checked) { preset.SearchParameters.CutParameters.CutStyle = CutStyle.offset; preset.SearchParameters.CutParameters.CutSizeAtOffset = this.tbCutSizeOffset.Text; preset.SearchParameters.CutParameters.CutSizeOffsetSize = this.cbOffsetSize.SelectedItem.ToString(); if (this.cbByteOrder.SelectedItem.Equals("Little Endian")) { preset.SearchParameters.CutParameters.CutSizeOffsetEndianessSpecified = true; preset.SearchParameters.CutParameters.CutSizeOffsetEndianess = Endianness.little; } else if (this.cbByteOrder.SelectedItem.Equals("Big Endian")) { preset.SearchParameters.CutParameters.CutSizeOffsetEndianessSpecified = true; preset.SearchParameters.CutParameters.CutSizeOffsetEndianess = Endianness.big; } if (!String.IsNullOrEmpty(this.tbLengthMultiplier.Text)) { preset.SearchParameters.CutParameters.CutSizeMultiplier = this.tbLengthMultiplier.Text; } } else if (this.rbUseTerminator.Checked) { preset.SearchParameters.CutParameters.CutStyle = CutStyle.terminator; preset.SearchParameters.CutParameters.TerminatorString = this.tbTerminatorString.Text; preset.SearchParameters.CutParameters.TreatTerminatorStringAsHexSpecified = this.cbTreatTerminatorAsHex.Checked; preset.SearchParameters.CutParameters.TreatTerminatorStringAsHex = this.cbTreatTerminatorAsHex.Checked; preset.SearchParameters.CutParameters.IncludeTerminatorInSizeSpecified = true; preset.SearchParameters.CutParameters.IncludeTerminatorInSize = this.cbIncludeTerminatorInLength.Checked; if (this.cbModOffsetTerminator.Checked) { preset.SearchParameters.CutParameters.UseModOffsetForTerminatorStringSpecified = true; preset.SearchParameters.CutParameters.UseModOffsetForTerminatorString = true; preset.SearchParameters.CutParameters.ModOffsetForTerminatorStringDivisor = this.tbOffsetModuloTerminatorDivisor.Text; preset.SearchParameters.CutParameters.ModOffsetForTerminatorStringResult = this.tbOffsetModuloTerminatorResult.Text; } } preset.SearchParameters.AddExtraBytes = this.cbAddExtraBytes.Checked; preset.SearchParameters.AddExtraByteSize = this.tbExtraCutSizeBytes.Text; return(preset); }
private void loadOffsetFinderPreset(OffsetFinderTemplate presets) { this.cbDoCut.Checked = true; // Criteria Section this.tbSearchString.Text = presets.SearchParameters.SearchString; this.cbSearchAsHex.Checked = presets.SearchParameters.TreatSearchStringAsHex; this.tbStartingOffset.Text = presets.SearchParameters.StartingOffset; if (presets.SearchParameters.UseModOffsetForSearchStringSpecified && presets.SearchParameters.UseModOffsetForSearchString) { this.cbModOffsetSearchString.Checked = true; this.tbOffsetModuloSearchStringDivisor.Text = presets.SearchParameters.ModOffsetForSearchStringDivisor; this.tbOffsetModuloSearchStringResult.Text = presets.SearchParameters.ModOffsetForSearchStringResult; } // Cut Options this.tbSearchStringOffset.Text = presets.SearchParameters.SearchStringOffset; this.tbOutputExtension.Text = presets.SearchParameters.OutputFileExtension; this.tbMinSizeForCut.Text = presets.SearchParameters.MinimumSizeForCutting; // Cut Size Options switch (presets.SearchParameters.CutParameters.CutStyle) { case CutStyle.@static: this.rbStaticCutSize.Checked = true; this.tbStaticCutsize.Text = presets.SearchParameters.CutParameters.StaticCutSize; break; case CutStyle.offset: this.rbOffsetBasedCutSize.Checked = true; this.tbCutSizeOffset.Text = presets.SearchParameters.CutParameters.CutSizeAtOffset; this.cbOffsetSize.SelectedItem = presets.SearchParameters.CutParameters.CutSizeOffsetSize; switch (presets.SearchParameters.CutParameters.CutSizeOffsetEndianess) { case Endianness.big: this.cbByteOrder.SelectedItem = "Big Endian"; break; case Endianness.little: this.cbByteOrder.SelectedItem = "Little Endian"; break; } if (!String.IsNullOrEmpty(presets.SearchParameters.CutParameters.CutSizeMultiplier)) { this.cbUseLengthMultiplier.Checked = true; this.tbLengthMultiplier.Text = presets.SearchParameters.CutParameters.CutSizeMultiplier; } break; case CutStyle.terminator: this.rbUseTerminator.Checked = true; this.tbTerminatorString.Text = presets.SearchParameters.CutParameters.TerminatorString; this.cbTreatTerminatorAsHex.Checked = presets.SearchParameters.CutParameters.TreatTerminatorStringAsHex; this.cbIncludeTerminatorInLength.Checked = presets.SearchParameters.CutParameters.IncludeTerminatorInSize; break; } if (presets.SearchParameters.CutParameters.UseModOffsetForTerminatorStringSpecified && presets.SearchParameters.CutParameters.UseModOffsetForTerminatorString) { this.cbModOffsetTerminator.Checked = true; this.tbOffsetModuloTerminatorDivisor.Text = presets.SearchParameters.CutParameters.ModOffsetForTerminatorStringDivisor; this.tbOffsetModuloTerminatorResult.Text = presets.SearchParameters.CutParameters.ModOffsetForTerminatorStringResult; } this.cbAddExtraBytes.Checked = presets.SearchParameters.AddExtraBytes; this.tbExtraCutSizeBytes.Text = presets.SearchParameters.AddExtraByteSize; }