public void AppendTest() { string correct = "0000: __| __|0x02|0x03 - \n" + "0004: 0x04|0x05|0x06|0x07 - 04*05*\n" + "0008: 0x08|0x09|0x0A|0x0B - 08*09*\n" + "000C: 0x0C|0x0D|0x0E|0x10 - 0C*0D*\n" + "0010: 0x10|0x11|0x12|0x13 - 10*11*\n" + "0014: 0x14| __| __| __ - 14* \n"; MemoryStream ms = new MemoryStream(); TextExportBuilder teb = new TextExportBuilder(ms); InterpretedPatternExporter ipe = new InterpretedPatternExporter(teb); IBuffer buffer = new SimpleBuffer(); buffer.Append(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 16, 17, 18, 19, 20 }, 0, 21); ipe.Pattern = "%A\"4\"%[%O\"4\"%: %E\"4\"e\"_\"p\"0x\"x\"|\"%] - %E\"2\"s\"*\"%%I\"2\"%\n"; bool cancelled = false; ipe.Export(buffer, 2, buffer.Size - 1, ref cancelled); Assert.AreEqual(correct, ASCIIEncoding.ASCII.GetString(ms.ToArray()), "#1"); }
void OnDialogResponse(object o, Gtk.ResponseArgs args) { lock (LockObj) { if (args.ResponseId == ResponseType.Ok && dataBook != null && dataBook.NPages > 0) { DataView dv = ((DataViewDisplay)dataBook.CurrentPageWidget).View; IExportBuilder builder = null; TreeIter iter; ExportAsCombo.GetActiveIter(out iter); ExportPlugin plugin = (ExportPlugin)ExportAsCombo.Model.GetValue(iter, 1); Util.Range range; try { range = GetCurrentRange(dv); } catch (FormatException ex) { ErrorAlert ea = new ErrorAlert(Catalog.GetString("Error in custom range"), ex.Message, mainWindow); ea.Run(); ea.Destroy(); return; } Util.Range bufferRange; if (dv.Buffer.Size == 0) { bufferRange = new Util.Range(); } else { bufferRange = new Util.Range(0, dv.Buffer.Size - 1); } if (!bufferRange.Contains(range.Start) || !bufferRange.Contains(range.End)) { ErrorAlert ea = new ErrorAlert(Catalog.GetString("Error in range"), Catalog.GetString("Range is out of file's limits"), mainWindow); ea.Run(); ea.Destroy(); return; } Stream stream = null; try { stream = new FileStream(ExportFileEntry.Text, FileMode.Create, FileAccess.Write); builder = plugin.CreateBuilder(stream); InterpretedPatternExporter exporter = new InterpretedPatternExporter(builder); exporter.Pattern = ExportPatternComboEntry.Entry.Text; cancelClicked = false; BeginExport(exporter, dv.Buffer, range.Start, range.End); } catch (Exception ex) { if (stream != null) { stream.Close(); } ErrorAlert ea = new ErrorAlert(Catalog.GetString("Error saving to file"), ex.Message, mainWindow); ea.Run(); ea.Destroy(); return; } } else if (args.ResponseId == ResponseType.Close) { this.Hide(); } } }