예제 #1
0
파일: Slice.cs 프로젝트: bbriggs/FieldWorks
		static internal int InsertObjectIntoVirtualBackref(FdoCache cache, Mediator mediator,
			int hvoSlice, int clidNewObj, int flid)
		{
			var metadata = cache.ServiceLocator.GetInstance<IFwMetaDataCacheManaged>();
			if (metadata.get_IsVirtual(flid))
			{
				var sliceObj = cache.ServiceLocator.GetInstance<ICmObjectRepository>().GetObject(hvoSlice);
				int clidSlice = sliceObj.ClassID;
				if (clidNewObj == LexEntryTags.kClassId &&
					clidSlice == LexEntryTags.kClassId)
				{
					if (metadata.GetFieldName(flid) == "VariantFormEntryBackRefs")
					{
						using (var dlg = new InsertVariantDlg())
						{
							var entOld = (ILexEntry) sliceObj;
							dlg.SetHelpTopic("khtpInsertVariantDlg");
							dlg.SetDlgInfo(cache, mediator, entOld);
							if (dlg.ShowDialog() == DialogResult.OK && dlg.NewlyCreatedVariantEntryRefResult)
							{
								return entOld.VariantFormEntryBackRefs.Count();
							}
							// say we've handled this.
							return -2;
						}
					}
				}
			}
			return -1;
		}
예제 #2
0
파일: Slice.cs 프로젝트: sillsdev/WorldPad
		static internal int InsertObjectIntoVirtualBackref(FdoCache cache, Mediator mediator, IVwVirtualHandler vh,
			int hvoSlice, uint clidNewObj, uint clidOwner, uint flid)
		{
			if (vh != null)
			{
				int clidSlice = cache.GetClassOfObject(hvoSlice);
				if (clidNewObj == LexEntry.kclsidLexEntry &&
					clidSlice == LexEntry.kclsidLexEntry &&
					clidOwner == LexDb.kclsidLexDb)
				{
					if (vh.FieldName == "VariantFormEntryBackRefs")
					{
						using (InsertVariantDlg dlg = new InsertVariantDlg())
						{
							ILexEntry entOld = LexEntry.CreateFromDBObject(cache, hvoSlice);
							dlg.SetHelpTopic("khtpInsertVariantDlg");
							dlg.SetDlgInfo(cache, mediator, entOld as IVariantComponentLexeme);
							if (dlg.ShowDialog() == DialogResult.OK && dlg.NewlyCreatedVariantEntryRefResult)
							{
								int insertPos = cache.GetVectorSize(hvoSlice, (int)flid);
								cache.PropChanged(hvoSlice, (int)flid, insertPos, 1, 0);
								return insertPos;
							}
							// say we've handled this.
							return -2;
						}
					}
				}
			}
			return -1;
		}