/// ------------------------------------------------------------------------------------ /// <summary> /// Test setup /// </summary> /// ------------------------------------------------------------------------------------ public override void TestSetup() { base.TestSetup(); SetClipboardAdapter(); ClipboardUtils.SetDataObject(new DataObject()); ClipboardUtils.SetText("I want a monkey"); }
/// <summary> /// /// </summary> /// <returns></returns> public bool OnCopyLocationAsHyperlink(object unused) { CheckDisposed(); if (m_currentContext != null) { FdoCache cache = (FdoCache)m_mediator.PropertyTable.GetValue("cache"); var args = new FwAppArgs(FwUtils.ksFlexAbbrev, cache.ProjectId.Handle, cache.ProjectId.ServerName, m_currentContext.ToolName, m_currentContext.TargetGuid); ClipboardUtils.SetDataObject(args.ToString(), true); } return(true); }
/// <summary> /// /// </summary> /// <returns></returns> public bool OnCopyLocationAsHyperlink(object unused) { CheckDisposed(); if (m_currentContext != null) { LcmCache cache = m_propertyTable.GetValue <LcmCache>("cache"); var args = new FwAppArgs(cache.ProjectId.Handle, m_currentContext.ToolName, m_currentContext.TargetGuid); ClipboardUtils.SetDataObject(args.ToString(), true); } return(true); }
/// <summary> /// Import from a LIFT file. /// </summary> /// <param name="progressDlg">The progress dialog.</param> /// <param name="parameters">The parameters: 1) filename</param> /// <returns></returns> private object ImportLIFT(IThreadedProgress progressDlg, params object[] parameters) { m_progressDlg = progressDlg; Debug.Assert(parameters.Length == 1); string sOrigFile = (string)parameters[0]; try { // Create a temporary directory %temp%\TempForLIFTImport. Migrate as necessary and import from this // directory. Directory is left after import is done in case it is needed, but will be deleted next time // if it exists. var sLIFTfolder = Path.GetDirectoryName(sOrigFile); var sLIFTtempFolder = Path.Combine(Path.GetTempPath(), "TempForLIFTImport"); if (Directory.Exists(sLIFTtempFolder) == true) { Directory.Delete(sLIFTtempFolder, true); } LdmlFileBackup.CopyDirectory(sLIFTfolder, sLIFTtempFolder); // Older LIFT files had ldml files in root directory. If found, move them to WritingSystem folder. if (Directory.GetFiles(sLIFTtempFolder, "*.ldml").Length > 0) { var sWritingSystems = Path.Combine(sLIFTtempFolder, "WritingSystems"); if (Directory.Exists(sWritingSystems) == false) { Directory.CreateDirectory(sWritingSystems); } foreach (string filePath in Directory.GetFiles(sLIFTtempFolder, "*.ldml")) { string file = Path.GetFileName(filePath); if (!File.Exists(Path.Combine(sWritingSystems, file))) { File.Move(filePath, Path.Combine(sWritingSystems, file)); } } } var sTempOrigFile = Path.Combine(sLIFTtempFolder, sOrigFile.Substring(sLIFTfolder.Length + 1)); string sFilename; //Do a LIFT Migration to the current version of LIFT if it is needed. bool fMigrationNeeded = Migrator.IsMigrationNeeded(sTempOrigFile); if (fMigrationNeeded) { string sOldVersion = Validator.GetLiftVersion(sTempOrigFile); m_progressDlg.Message = String.Format(LexTextControls.ksMigratingLiftFile, sOldVersion, Validator.LiftVersion); sFilename = Migrator.MigrateToLatestVersion(sTempOrigFile); } else { sFilename = sTempOrigFile; } //Validate the LIFT file. if (!Validate(sFilename, sTempOrigFile)) { return(null); } //Import the LIFT file and ranges file. m_progressDlg.Message = LexTextControls.ksLoadingVariousLists; var flexImporter = new FlexLiftMerger(m_cache, m_msImport, m_chkTrustModTimes.Checked); var parser = new LiftParser <LiftObject, CmLiftEntry, CmLiftSense, CmLiftExample>(flexImporter); parser.SetTotalNumberSteps += parser_SetTotalNumberSteps; parser.SetStepsCompleted += parser_SetStepsCompleted; parser.SetProgressMessage += parser_SetProgressMessage; flexImporter.LiftFile = sTempOrigFile; //Before imporing the LIFT files ensure the LDML (language definition files) have the correct writing system codes. flexImporter.LdmlFilesMigration(sLIFTtempFolder, sFilename, sTempOrigFile + "-ranges"); //Import the Ranges file. flexImporter.LoadLiftRanges(sTempOrigFile + "-ranges"); // temporary (?) fix for FWR-3869. //Import the LIFT data file. int cEntries = parser.ReadLiftFile(sFilename); if (fMigrationNeeded) { // Try to move the migrated file to the temp directory, even if a copy of it // already exists there. string sTempMigrated = Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Path.GetFileName(sFilename), "." + Validator.LiftVersion + FwFileExtensions.ksLexiconInterchangeFormat)); if (File.Exists(sTempMigrated)) { File.Delete(sTempMigrated); } File.Move(sFilename, sTempMigrated); } flexImporter.ProcessPendingRelations(m_progressDlg); return(flexImporter.DisplayNewListItems(sOrigFile, cEntries)); } catch (Exception error) { string sMsg = String.Format(LexTextControls.ksLIFTImportProblem, sOrigFile, error.Message); try { StringBuilder bldr = new StringBuilder(); // leave in English for programmer's sake... bldr.AppendFormat("Something went wrong while FieldWorks was attempting to import {0}.", sOrigFile); bldr.AppendLine(); bldr.AppendLine(error.Message); bldr.AppendLine(); bldr.AppendLine(error.StackTrace); if (Thread.CurrentThread.GetApartmentState() == ApartmentState.STA) { ClipboardUtils.SetDataObject(bldr.ToString(), true); } else { progressDlg.SynchronizeInvoke.Invoke(() => ClipboardUtils.SetDataObject(bldr.ToString(), true)); } SIL.Utils.Logger.WriteEvent(bldr.ToString()); } catch { } MessageBox.Show(sMsg, LexTextControls.ksProblemImporting, MessageBoxButtons.OK, MessageBoxIcon.Warning); return(null); } }