public void ShowFullDialog() { var m = new Metadata(); using (var dlg = new MetadataEditorDialog(m)) { dlg.ShowDialog(); } }
private void OnEditImageMetdata(DomEventArgs ge) { var imageElement = GetImageNode(ge); if (imageElement == null) { return; } string fileName = imageElement.GetAttribute("src").Replace("%20", " "); var path = Path.Combine(_model.CurrentBook.FolderPath, fileName); using (var imageInfo = PalasoImage.FromFile(path)) { bool looksOfficial = imageInfo.Metadata != null && !string.IsNullOrEmpty(imageInfo.Metadata.CollectionUri); if (looksOfficial) { MessageBox.Show(imageInfo.Metadata.GetSummaryParagraph("en")); return; } Logger.WriteEvent("Showing Metadata Editor For Image"); using (var dlg = new Palaso.UI.WindowsForms.ClearShare.WinFormsUI.MetadataEditorDialog(imageInfo.Metadata)) { if (DialogResult.OK == dlg.ShowDialog()) { imageInfo.Metadata = dlg.Metadata; imageInfo.SaveUpdatedMetadataIfItMakesSense(); imageInfo.Metadata.StoreAsExemplar(Metadata.FileCategory.Image); //update so any overlays on the image are brough up to data var editor = new PageEditingModel(); editor.UpdateMetdataAttributesOnImgElement(imageElement, imageInfo); var answer = MessageBox.Show(LocalizationManager.GetString("EditTab.copyImageIPMetdataQuestion", "Copy this information to all other pictures in this book?", "get this after you edit the metadata of an image"), LocalizationManager.GetString("EditTab.titleOfCopyIPToWholeBooksDialog", "Picture Intellectual Property Information"), MessageBoxButtons.YesNo); if (answer == DialogResult.Yes) { Cursor = Cursors.WaitCursor; try { _model.CopyImageMetadataToWholeBook(dlg.Metadata); // There might be more than one image on this page. Update overlays. _model.RefreshDisplayOfCurrentPage(); } catch (Exception e) { ErrorReport.NotifyUserOfProblem(e, "There was a problem copying the metadata to all the images."); } Cursor = Cursors.Default; } } } } //_model.SaveNow(); //doesn't work: _browser1.WebBrowser.Reload(); }
public void ShowFullDialogTwiceToCheckRoundTripping() { var m = new Metadata(); m.License = CreativeCommonsLicense.FromToken("by"); m.License.RightsStatement = "some restrictions"; using (var dlg = new MetadataEditorDialog(m)) { dlg.ShowDialog(); m = dlg.Metadata; } using (var dlg = new MetadataEditorDialog(m)) { dlg.ShowDialog(); } }
private void OnShowBookMetadataEditor() { try { if (!_model.CanEditCopyrightAndLicense) { MessageBox.Show(LocalizationManager.GetString("EditTab.CannotChangeCopyright", "Sorry, the copyright and license for this book cannot be changed.")); return; } _model.SaveNow(); //in case we were in this dialog already and made changes, which haven't found their way out to the Book yet Metadata metadata = _model.CurrentBook.GetLicenseMetadata(); if (metadata.License is NullLicense && string.IsNullOrWhiteSpace(metadata.CopyrightNotice)) { //looks like the first time. Nudge them with a nice default license. metadata.License = new CreativeCommonsLicense(true, true, CreativeCommonsLicense.DerivativeRules.Derivatives); } Logger.WriteEvent("Showing Metadata Editor Dialog"); using (var dlg = new Palaso.UI.WindowsForms.ClearShare.WinFormsUI.MetadataEditorDialog(metadata)) { dlg.ShowCreator = false; if (DialogResult.OK == dlg.ShowDialog()) { string imagePath = _model.CurrentBook.FolderPath.CombineForPath("license.png"); if (File.Exists(imagePath)) { File.Delete(imagePath); } Image licenseImage = dlg.Metadata.License.GetImage(); if (licenseImage != null) { licenseImage.Save(imagePath); } else if (File.Exists(imagePath)) { File.Delete(imagePath); } // Both LicenseNotes and Copyright By could have user-entered html characters that need escaping. var copyright = dlg.Metadata.CopyrightNotice; dlg.Metadata.CopyrightNotice = copyright; //NB: we are mapping "RightsStatement" (which comes from XMP-dc:Rights) to "LicenseNotes" in the html. //note that the only way currently to recognize a custom license is that RightsStatement is non-empty while description is empty var rights = dlg.Metadata.License.RightsStatement; dlg.Metadata.License.RightsStatement = rights; string description = dlg.Metadata.License.GetDescription("en") == null ? string.Empty : dlg.Metadata.License.GetDescription("en").Replace("'", "\\'"); string licenseImageName = licenseImage == null? string.Empty: "license.png"; string result = string.Format( "{{ copyright: '{0}', licenseImage: '{1}', licenseUrl: '{2}', licenseNotes: '{3}', licenseDescription: '{4}' }}", MakeJavaScriptContent(dlg.Metadata.CopyrightNotice), licenseImageName, dlg.Metadata.License.Url, MakeJavaScriptContent(rights), description); _browser1.RunJavaScript("if (calledByCSharp) { calledByCSharp.setCopyrightAndLicense(" + result + "); }"); //ok, so the the dom for *that page* is updated, but if the page doesn't display some of those values, they won't get //back to the data div in the actual html file even when the page is read and saved, because individual pages don't //have the data div. _model.CurrentBook.UpdateLicenseMetdata(dlg.Metadata); _model.SaveNow(); _model.RefreshDisplayOfCurrentPage(); //the cleanup() that is part of Save removes qtips, so let' redraw everything } } Logger.WriteMinorEvent("Emerged from Metadata Editor Dialog"); } catch (Exception error) { #if DEBUG throw; #endif Palaso.Reporting.ErrorReport.NotifyUserOfProblem(error, "There was a problem recording your changes to the copyright and license."); } }
private void OnEditMetadataLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //http://jira.palaso.org/issues/browse/BL-282 hada null in here somewhere Guard.AgainstNull(_imageInfo, "_imageInfo"); Guard.AgainstNull(_imageInfo.Metadata, "_imageInfo.Metadata"); //it's not clear at the moment where the following belongs... but we want //to encourage Creative Commons Licensing, so if there is no license, we'll start //the following dialog out with a reasonable default. _imageInfo.Metadata.SetupReasonableLicenseDefaultBeforeEditing(); using(var dlg = new MetadataEditorDialog(_imageInfo.Metadata)) { if(DialogResult.OK == dlg.ShowDialog()) { Guard.AgainstNull(dlg.Metadata, " dlg.Metadata"); _imageInfo.Metadata = dlg.Metadata; SetupMetaDataControls(_imageInfo.Metadata); _imageInfo.SaveUpdatedMetadataIfItMakesSense(); _imageInfo.Metadata.StoreAsExemplar(Metadata.FileCategory.Image); } } }
private void OnShowMetaDataEditorClicked(object sender, EventArgs e) { using (var dlg = new MetadataEditorDialog(new Metadata())) { dlg.ShowDialog(); } }