private bool AcceptChanges() { GEDCOMFileReferenceWithTitle fileRef = fMediaRec.FileReferences[0]; if (fIsNew) { GKComboItem item = (GKComboItem)cmbStoreType.SelectedValue; MediaStoreType gst = (MediaStoreType)item.Tag; if ((gst == MediaStoreType.mstArchive || gst == MediaStoreType.mstStorage) && !fBase.Context.CheckBasePath()) { return(false); } bool result = fBase.Context.MediaSave(fileRef, txtFile.Text, gst); if (!result) { return(false); } } fileRef.MediaType = (GEDCOMMediaType)cmbMediaType.SelectedIndex; fileRef.Title = txtName.Text; ControlsRefresh(); CommitChanges(); fBase.NotifyRecord(fMediaRec, RecordAction.raEdit); return(true); }
private void ControlsRefresh() { GEDCOMFileReferenceWithTitle fileRef = fMediaRec.FileReferences[0]; fIsNew = (fileRef.StringValue == ""); txtName.Text = fileRef.Title; cmbMediaType.SelectedIndex = (int)fileRef.MediaType; txtFile.Text = fileRef.StringValue; if (fIsNew) { RefreshStoreTypes(GlobalOptions.Instance.AllowMediaStoreReferences, true, MediaStoreType.mstReference); } else { MediaStore mediaStore = fBase.Context.GetStoreType(fileRef); RefreshStoreTypes((mediaStore.StoreType == MediaStoreType.mstReference), (mediaStore.StoreType == MediaStoreType.mstArchive), mediaStore.StoreType); } btnFileSelect.Enabled = fIsNew; cmbStoreType.Enabled = fIsNew; fNotesList.UpdateSheet(); fSourcesList.UpdateSheet(); }
protected override object GetColumnValueEx(int colType, int colSubtype, bool isVisible) { GEDCOMFileReferenceWithTitle fileRef = fRec.FileReferences[0]; object result = null; switch ((MultimediaColumnType)colType) { case MultimediaColumnType.ctTitle: result = fileRef.Title; break; case MultimediaColumnType.ctMediaType: result = LangMan.LS(GKData.MediaTypes[(int)fileRef.MediaType]); break; case MultimediaColumnType.ctFileRef: result = fileRef.StringValue; break; case MultimediaColumnType.ctChangeDate: result = fRec.ChangeDate.ChangeDateTime; break; } return(result); }
public void ProcessPortraits(IImageView imageCtl, GEDCOMFileReferenceWithTitle fileRef) { var mmRec = fileRef.Parent as GEDCOMMultimediaRecord; var linksList = new List <GEDCOMObject>(); GKUtils.SearchRecordLinks(linksList, mmRec.Owner, mmRec); bool showRegions = false; foreach (var link in linksList) { var mmLink = link as GEDCOMMultimediaLink; if (mmLink != null && mmLink.IsPrimary) { var indiRec = mmLink.Parent as GEDCOMIndividualRecord; string indiName = GKUtils.GetNameString(indiRec, true, false); var region = mmLink.CutoutPosition.Value; imageCtl.AddNamedRegion(indiName, region); showRegions = true; } } imageCtl.ShowNamedRegionTips = showRegions; }
public void SetViewImage(IImage img, GEDCOMFileReferenceWithTitle fileRef) { var imageCtl = new GKUI.Components.ImageView(); imageCtl.OpenImage(img); fController.ProcessPortraits(imageCtl, fileRef); SetViewControl(imageCtl); }
public void SetViewImage(Image img, GEDCOMFileReferenceWithTitle fileRef) { ImageView imageCtl = new ImageView(); imageCtl.OpenImage(img); ProcessPortraits(imageCtl, fileRef); SetViewControl(imageCtl); }
public override bool CheckFilter() { GEDCOMFileReferenceWithTitle fileRef = fRec.FileReferences[0]; bool res = (QuickFilter == "*" || IsMatchesMask(fileRef.Title, QuickFilter)); res = res && CheckCommonFilter(); return(res); }
public void ShowMedia(GEDCOMMultimediaRecord mediaRec, bool modal) { if (mediaRec == null) { throw new ArgumentNullException("mediaRec"); } GEDCOMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0]; MultimediaKind mmKind = GKUtils.GetMultimediaKind(fileRef.MultimediaFormat); if (mmKind == MultimediaKind.mkNone) { return; } bool externalViewer = !GlobalOptions.Instance.EmbeddedMediaPlayer && ((mmKind == MultimediaKind.mkAudio || mmKind == MultimediaKind.mkVideo)); if (externalViewer) { string targetFile = fContext.MediaLoad(fileRef); GKUtils.LoadExtFile(targetFile); } else { //var mediaViewer = AppHost.Container.Resolve<IMediaViewerWin>(this); MediaViewerWin mediaViewer = new MediaViewerWin(this); try { try { mediaViewer.FileRef = fileRef; if (modal) { mediaViewer.Show(); } else { mediaViewer.ShowInTaskbar = true; mediaViewer.Show(); } } finally { if (modal) { mediaViewer.Dispose(); } } } catch (Exception ex) { if (mediaViewer != null) { mediaViewer.Dispose(); } Logger.LogWrite("BaseWinSDI.ShowMedia(): " + ex.Message); } } }
public void SetViewImage(IImage img, GEDCOMFileReferenceWithTitle fileRef) { var imageCtl = new GKUI.Components.ImageView(); imageCtl.OpenImage(img); fController.ProcessPortraits(imageCtl, fileRef); fTimer = AppHost.Instance.CreateTimer(100.0f, InitViewer_Tick); fTimer.Start(); SetViewControl(imageCtl); }
private void LoadList() { GEDCOMRecord record; var enumerator = fBase.Context.Tree.GetEnumerator(GEDCOMRecordType.rtMultimedia); while (enumerator.MoveNext(out record)) { GEDCOMMultimediaRecord mediaRec = (GEDCOMMultimediaRecord)record; GEDCOMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0]; MultimediaKind mmKind = GKUtils.GetMultimediaKind(fileRef.MultimediaFormat); if (mmKind == MultimediaKind.mkImage) { fFileRefs.Add(fileRef); } } }
public override void Setup() { base.Setup(); fBase = new BaseWindowStub(); GEDCOMMultimediaRecord mmRec = fBase.Context.Tree.CreateMultimedia(); mmRec.AddTag("FILE", "", null); fileRef = mmRec.FileReferences[0]; fileRef.Title = "File Title 2"; fileRef.LinkFile("shaytan_plant.jpg"); fileRef.MediaType = GEDCOMMediaType.mtPhoto; fDialog = new MediaViewerWin(fBase); fDialog.Show(); }
private void SetFileRef() { if (fCurrentIndex < 0 || fCurrentIndex >= fFileRefs.Count) { return; } // Only images are in the list GEDCOMFileReferenceWithTitle fileRef = fFileRefs[fCurrentIndex]; fCurrentText = fileRef.Title; IImage img = fBase.Context.LoadMediaImage(fileRef, false); if (img != null) { fView.SetImage(img); } UpdateView(); }
private void SetFileRef() { if (fCurrentIndex < 0 || fCurrentIndex >= fFileRefs.Count) { return; } // Only images are in the list GEDCOMFileReferenceWithTitle fileRef = fFileRefs[fCurrentIndex]; fCurrentText = fileRef.Title; IImage img = fBase.Context.LoadMediaImage(fileRef, false); if (img != null) { fImageCtl.Image = ((ImageHandler)img).Handle; fImageCtl.ZoomToFit(); } UpdateControls(); }
private void ProcessPortraits(GKUI.Components.ImageView imageCtl, GEDCOMFileReferenceWithTitle fileRef) { var mmRec = fileRef.Parent as GEDCOMMultimediaRecord; var linksList = new List <GEDCOMObject>(); GKUtils.SearchRecordLinks(linksList, mmRec.Owner, mmRec); foreach (var link in linksList) { var mmLink = link as GEDCOMMultimediaLink; if (mmLink != null && mmLink.IsPrimary) { var indiRec = mmLink.Parent as GEDCOMIndividualRecord; string indiName = GKUtils.GetNameString(indiRec, true, false); var region = UIHelper.Rt2Rt(mmLink.CutoutPosition.Value); imageCtl.NamedRegions.Add(new NamedRegion(indiName, region)); } } imageCtl.ShowNamedRegionTips = (imageCtl.NamedRegions.Count > 0); }
public override void UpdateContents() { var dataOwner = fDataOwner as IGEDCOMStructWithLists; if (fSheetList == null || dataOwner == null) { return; } try { fSheetList.ClearItems(); foreach (GEDCOMMultimediaLink mmLink in dataOwner.MultimediaLinks) { GEDCOMMultimediaRecord mmRec = mmLink.Value as GEDCOMMultimediaRecord; if (mmRec == null) { continue; } if (mmRec.FileReferences.Count == 0) { continue; } GEDCOMFileReferenceWithTitle fileRef = mmRec.FileReferences[0]; fSheetList.AddItem(mmLink, new object[] { fileRef.Title, LangMan.LS(GKData.MediaTypes[(int)fileRef.MediaType]) }); } } catch (Exception ex) { Logger.LogWrite("MediaLinksListModel.UpdateContents(): " + ex.Message); } }
public override bool Accept() { try { GEDCOMFileReferenceWithTitle fileRef = fMediaRec.FileReferences[0]; if (fIsNew) { MediaStoreType gst = (MediaStoreType)fView.StoreType.SelectedTag; if ((gst == MediaStoreType.mstArchive || gst == MediaStoreType.mstStorage) && !fBase.Context.CheckBasePath()) { return(false); } bool result = fBase.Context.MediaSave(fileRef, fView.File.Text, gst); if (!result) { return(false); } } fileRef.MediaType = (GEDCOMMediaType)fView.MediaType.SelectedIndex; fileRef.Title = fView.Name.Text; UpdateControls(); fLocalUndoman.Commit(); fBase.NotifyRecord(fMediaRec, RecordAction.raEdit); return(true); } catch (Exception ex) { Logger.LogWrite("MediaEditDlgController.Accept(): " + ex.Message); return(false); } }
public static void FillContext(IBaseContext context) { // a null result if the record is not defined GEDCOMCustomEvent evt = context.CreateEventEx(null, "BIRT", "xxxxx", "xxxxx"); Assert.IsNull(evt); // first individual GEDCOMIndividualRecord iRec = context.CreatePersonEx("Ivan", "Ivanovich", "Ivanov", GEDCOMSex.svMale, true); Assert.IsNotNull(iRec); evt = iRec.FindEvent("BIRT"); Assert.IsNotNull(evt); evt.Date.ParseString("28 DEC 1990"); evt.Place.StringValue = "Ivanovo"; GEDCOMCustomEvent evtd = context.CreateEventEx(iRec, "DEAT", "28 DEC 2010", "Ivanovo"); Assert.IsNotNull(evtd); // second individual, wife GEDCOMIndividualRecord iRec2 = context.CreatePersonEx("Maria", "Petrovna", "Ivanova", GEDCOMSex.svFemale, true); evt = iRec2.FindEvent("BIRT"); Assert.IsNotNull(evt); evt.Date.ParseString("17 MAR 1990"); evt.Place.StringValue = "Ivanovo"; iRec.AddAssociation("spouse", iRec2); // third individual, child GEDCOMIndividualRecord iRec3 = context.CreatePersonEx("Anna", "Ivanovna", "Ivanova", GEDCOMSex.svFemale, true); evt = iRec3.FindEvent("BIRT"); Assert.IsNotNull(evt); evt.Date.ParseString("11 FEB 2010"); evt.Place.StringValue = "Ivanovo"; // their family GEDCOMFamilyRecord famRec = context.Tree.CreateFamily(); Assert.IsNotNull(famRec); famRec.AddSpouse(iRec); famRec.AddSpouse(iRec2); famRec.AddChild(iRec3); context.CreateEventEx(famRec, "MARR", "01 JAN 2000", "unknown"); // individual outside the family GEDCOMIndividualRecord iRec4 = context.CreatePersonEx("Alex", "", "Petrov", GEDCOMSex.svMale, true); evt = iRec4.FindEvent("BIRT"); Assert.IsNotNull(evt); evt.Date.ParseString("15 JUN 1989"); evt.Place.StringValue = "Far Forest"; evt = context.CreateEventEx(iRec4, "RESI", "12 FEB", "Far Forest"); Assert.IsNotNull(evt); // fifth GEDCOMIndividualRecord iRec5 = context.CreatePersonEx("Anna", "", "Jones", GEDCOMSex.svFemale, false); Assert.IsNotNull(iRec5); // group for tests GEDCOMGroupRecord groupRec = context.Tree.CreateGroup(); groupRec.GroupName = "GroupTest"; Assert.IsNotNull(groupRec, "group1 != null"); groupRec.AddMember(iRec); // location for tests GEDCOMLocationRecord locRec = context.Tree.CreateLocation(); locRec.LocationName = "Test Location"; locRec.Map.Lati = 5.11111; locRec.Map.Long = 7.99999; Assert.IsNotNull(locRec, "locRec != null"); // repository for tests GEDCOMRepositoryRecord repoRec = context.Tree.CreateRepository(); repoRec.RepositoryName = "Test repository"; Assert.IsNotNull(repoRec, "repoRec != null"); // research for tests GEDCOMResearchRecord resRec = context.Tree.CreateResearch(); resRec.ResearchName = "Test research"; Assert.IsNotNull(resRec, "resRec != null"); // source for tests GEDCOMSourceRecord srcRec = context.Tree.CreateSource(); srcRec.FiledByEntry = "Test source"; Assert.IsNotNull(srcRec, "srcRec != null"); iRec.AddSource(srcRec, "p1", 0); // note for tests GEDCOMNoteRecord noteRec = context.Tree.CreateNote(); noteRec.SetNoteText("Test note"); Assert.IsNotNull(noteRec, "noteRec != null"); iRec.AddNote(noteRec); // task for tests GEDCOMTaskRecord tskRec = context.Tree.CreateTask(); tskRec.Goal = "Test task"; Assert.IsNotNull(tskRec, "tskRec != null"); // media for tests GEDCOMMultimediaRecord mediaRec = context.Tree.CreateMultimedia(); mediaRec.AddTag("FILE", "", null); GEDCOMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0]; fileRef.Title = "Test multimedia"; fileRef.LinkFile("sample.png"); Assert.IsNotNull(mediaRec, "mediaRec != null"); iRec.AddMultimedia(mediaRec); // communication for tests GEDCOMCommunicationRecord commRec = context.Tree.CreateCommunication(); commRec.CommName = "Test communication"; Assert.IsNotNull(commRec, "commRec != null"); }
private void SetFileRef(GEDCOMFileReferenceWithTitle value) { fFileRef = value; Title = fFileRef.Title; Control ctl = null; MultimediaKind mmKind = GKUtils.GetMultimediaKind(fFileRef.MultimediaFormat); try { switch (mmKind) { case MultimediaKind.mkImage: { IImage img = fBase.Context.LoadMediaImage(fFileRef, false); if (img != null) { SetViewImage(((ImageHandler)img).Handle, fFileRef); } break; } case MultimediaKind.mkAudio: case MultimediaKind.mkVideo: { string targetFile = fBase.Context.MediaLoad(fFileRef); SetViewMedia(targetFile); break; } case MultimediaKind.mkText: { Stream fs = fBase.Context.MediaLoad(fFileRef, false); switch (fFileRef.MultimediaFormat) { case GEDCOMMultimediaFormat.mfTXT: { TextArea txtBox = new TextArea(); txtBox.ReadOnly = true; try { // FIXME: fix encoding! and test other!!! using (StreamReader strd = new StreamReader(fs, Encoding.GetEncoding(1251))) { txtBox.Text = strd.ReadToEnd(); } } catch (Exception ex) { Logger.LogWrite("MediaViewerWin.SetFileRef.1(): " + ex.Message); } ctl = txtBox; SetViewControl(ctl); } break; case GEDCOMMultimediaFormat.mfRTF: { RichTextArea rtfBox = new RichTextArea(); rtfBox.ReadOnly = true; try { using (StreamReader strd = new StreamReader(fs)) { rtfBox.Text = strd.ReadToEnd(); } } catch (Exception ex) { Logger.LogWrite("MediaViewerWin.SetFileRef.2(): " + ex.Message); } ctl = rtfBox; SetViewControl(ctl); } break; case GEDCOMMultimediaFormat.mfHTM: { var browser = new WebView(); try { browser.LoadHtml(fs); /*using (StreamReader strd = new StreamReader(fs)) { * browser.DocumentText = strd.ReadToEnd(); * // didn't work, because didn't defines codepage from page's header (?!) * }*/ } catch (Exception ex) { Logger.LogWrite("MediaViewerWin.SetFileRef.3(): " + ex.Message); } ctl = browser; SetViewControl(ctl); } break; } if (fs != null && !(ctl is WebView)) { fs.Dispose(); } break; } } } catch (Exception ex) { if (ctl != null) { ctl.Dispose(); } Logger.LogWrite("MediaViewerWin.SetFileRef(): " + ex.Message); } }