private void OnEntryBinaryView(object sender, DynamicMenuEventArgs e)
{
PwEntry pe = GetSelectedEntry(false);
if(pe == null) { Debug.Assert(false); return; }
EditableBinaryAttachment eba = (e.Tag as EditableBinaryAttachment);
ProtectedBinary pbData = pe.Binaries.Get((eba != null) ? eba.Name :
e.ItemName);
if(pbData == null) { Debug.Assert(false); return; }
if(eba == null) // Not editable
{
DataViewerForm dvf = new DataViewerForm();
dvf.InitEx(e.ItemName, pbData.ReadData());
UIUtil.ShowDialogAndDestroy(dvf);
}
else
{
DataEditorForm def = new DataEditorForm();
def.InitEx(eba.Name, pbData.ReadData());
def.ShowDialog();
if(def.EditedBinaryData != null) // User changed the data
{
pe.Binaries.Set(eba.Name, new ProtectedBinary(false,
def.EditedBinaryData));
pe.Touch(true, false);
RefreshEntriesList();
UpdateUIState(true);
}
UIUtil.DestroyForm(def);
}
}