private ApplicationVersion GetOnlineVersion() { _logger.Debug("Get online Version"); var url = _updateInformationProvider.UpdateInfoUrl; var sectionName = _updateInformationProvider.SectionName; using (var webClient = new WebClient()) { var contents = webClient.DownloadString(url); using (var stream = CreateStreamFromString(contents)) { _logger.Debug("Loading update-info.txt"); var data = Data.CreateDataStorage(); var iniStorage = new IniStorage(); iniStorage.SetData(data); iniStorage.ReadData(stream, true); var onlineVersion = new Version(iniStorage.Data.GetValue(sectionName + "\\Version")); var downloadUrl = iniStorage.Data.GetValue(sectionName + "\\DownloadUrl"); var fileHash = iniStorage.Data.GetValue(sectionName + "\\FileHash"); _logger.Info("Online Version: " + onlineVersion); return(new ApplicationVersion(onlineVersion, downloadUrl, fileHash)); } } }
private void TestTokensInTranslation(Data englishTranslationData, Language language) { Data translationData = Data.CreateDataStorage(); IniStorage iniStorage = new IniStorage(); iniStorage.SetData(translationData); iniStorage.ReadData(Path.Combine(_languagePath, language.FileName), true); Translator trans = new BasicTranslator(language.CommonName, translationData); foreach (var section in englishTranslationData.GetSubSections("")) { if (section.StartsWith("General")) { continue; } var values = englishTranslationData.GetValues(section); foreach (var keyValuePair in values) { string translation = trans.GetRawTranslation(section.TrimEnd('\\'), keyValuePair.Key); if (translation != "") { ValidateSingleTranslation(keyValuePair.Value, translation, language, section + keyValuePair.Key); } } } }
private void ReadInf(string infFile, TitleReplacer titleReplacer) { InfFile = infFile; var infData = Data.CreateDataStorage(); var ini = new IniStorage(Helper.EncodingHelper.GetEncoding(infFile)); ini.SetData(infData); ini.ReadData(infFile); foreach (var section in infData.GetSections()) { var sfi = SourceFileInfo.ReadSourceFileInfo(infFile, infData, section); if (sfi != null) { SourceFiles.Add(sfi); } } Metadata = new Metadata(); if (SourceFiles.Count > 0) { Metadata.PrintJobAuthor = SourceFiles[0].Author; Metadata.PrintJobName = titleReplacer.Replace(SourceFiles[0].DocumentTitle); Metadata.Title = ""; //Set to avoid null exception when replacing tokens Metadata.Author = ""; JobType = SourceFiles[0].Type; } }
private void TestLanguage(Language lang) { Data translationData = Data.CreateDataStorage(); IniStorage iniStorage = new IniStorage(); iniStorage.SetData(translationData); iniStorage.ReadData(Path.Combine(_languagePath, lang.FileName), true); Translator trans = new BasicTranslator(lang.CommonName, translationData); trans.TranslationError += trans_TranslationError; // Do some work to include all resources as we do not have our WPF app context here EnsureApplicationResources(); var args = new Dictionary <Type, object[]>(); // Everything with the type "Window" is tested automatically. If special parameters are needed for a type, they can be declared here args.Add(typeof(EditEmailTextWindow), new object[] { false }); args.Add(typeof(EncryptionPasswordsWindow), new object[] { EncryptionPasswordMiddleButton.Remove, true, true }); args.Add(typeof(FtpPasswordWindow), new object[] { FtpPasswordMiddleButton.Remove }); args.Add(typeof(MessageWindow), new object[] { "", "", MessageWindowButtons.YesLaterNo, MessageWindowIcon.PDFCreator }); args.Add(typeof(ProfileSettingsWindow), new object[] { new PdfCreatorSettings(new IniStorage()), new GpoSettings() }); args.Add(typeof(RecommendPdfArchitectWindow), new object[] { false }); args.Add(typeof(SignaturePasswordWindow), new object[] { PasswordMiddleButton.Skip, null }); args.Add(typeof(SmtpPasswordWindow), new object[] { SmtpPasswordMiddleButton.Remove }); args.Add(typeof(UpdateDownloadWindow), new object[] { null }); TestWindows(trans, lang, args); TestActionControls(trans, lang); Assert.IsEmpty(trans.TranslationErrors, "There were errors while translating the forms"); }
public void SettingsUpdateV3To4_VersionBecomes4_TiffColorBlackWihteGetsBlackWhiteG4Fax() { const int oldSettingsVersion = 3; const int newSettingsVersion = 4; var ini = new IniStorage(Encoding.UTF8); var builder = new DefaultProfileBuilder(); var oldSettings = builder.CreateDefaultSettings("PDFCreator", ini, "English"); oldSettings.ConversionProfiles[0].TiffSettings.Color = TiffColor.BlackWhiteG4Fax; var currentSettingsVersion = oldSettings.ApplicationProperties.SettingsVersion; oldSettings.ApplicationProperties.SettingsVersion = oldSettingsVersion; var iniFile = Path.Combine(_th.TmpTestFolder, "TestSettings.ini"); oldSettings.SaveData(ini, iniFile); var settingsFromIni = File.ReadAllText(iniFile); settingsFromIni = settingsFromIni.Replace("BlackWhiteG4Fax", "BlackWhite"); File.WriteAllText(iniFile, settingsFromIni); var upgrader = new SettingsUpgradeHelper(newSettingsVersion); var settings = new DefaultProfileBuilder().CreateEmptySettings(null); settings.LoadData(ini, iniFile, upgrader.UpgradeSettings); Assert.AreEqual(newSettingsVersion, settings.ApplicationProperties.SettingsVersion, "Did not update SettingsVersion."); Assert.AreEqual(TiffColor.BlackWhiteG4Fax, settings.ConversionProfiles[0].TiffSettings.Color, "Did not update TiffColor BlackWhite to BlackWhiteG4Fax"); }
public void SettingsUpdateV3To4_VersionBecomes4_TiffColorBlackWihteGetsBlackWhiteG4Fax() { const int oldSettingsVersion = 3; const int newSettingsVersion = 4; var iniFile = Path.Combine(_th.TmpTestFolder, "TestSettings.ini"); var iniStorage = new IniStorage(iniFile, Encoding.UTF8); var builder = new CreatorDefaultSettingsBuilder(); var oldSettings = (PdfCreatorSettings)builder.CreateDefaultSettings("PDFCreator", "English"); oldSettings.ConversionProfiles[0].TiffSettings.Color = TiffColor.BlackWhiteG4Fax; oldSettings.CreatorAppSettings.SettingsVersion = oldSettingsVersion; oldSettings.SaveData(iniStorage); var settingsFromIni = File.ReadAllText(iniFile); settingsFromIni = settingsFromIni.Replace("BlackWhiteG4Fax", "BlackWhite"); File.WriteAllText(iniFile, settingsFromIni); var settings = (PdfCreatorSettings) new CreatorDefaultSettingsBuilder().CreateEmptySettings(); var storage = new CreatorSettingsMigrationStorage(iniStorage, newSettingsVersion); settings.LoadData(storage); Assert.AreEqual(newSettingsVersion, settings.CreatorAppSettings.SettingsVersion, "Did not update SettingsVersion."); Assert.AreEqual(TiffColor.BlackWhiteG4Fax, settings.ConversionProfiles[0].TiffSettings.Color, "Did not update TiffColor BlackWhite to BlackWhiteG4Fax"); }
public void AllWindows_WhenTranslatedWithAllLanguages_DoNotThrowExceptions(string translation) { var lang = GetLanguage(translation); var translationData = Data.CreateDataStorage(); var iniStorage = new IniStorage(); iniStorage.SetData(translationData); var translationFile = Path.Combine(_languagePath, lang.FileName); iniStorage.ReadData(translationFile, true); var exceptionTranslator = new ExceptionTranslator(_translationProxy); _translationProxy.Translator = new BasicTranslator(lang.CommonName, translationData); _translationProxy.LoadOldSectionNames(translationFile); // Do some work to include all resources as we do not have our WPF app context here EnsureApplicationResources(); var container = BuildContainer(); LoggingHelper.InitConsoleLogger("TranslationTest", LoggingLevel.Off); var settingsProvider = container.GetInstance <ISettingsProvider>(); settingsProvider.Settings.Returns(new PdfCreatorSettings(new IniStorage())); settingsProvider.GpoSettings.Returns(new GpoSettingsDefaults()); // Everything with the type "Window" is tested automatically. If special parameters are needed for a type, they can be declared here TestWindows(_translationProxy, lang, container); TestActionControls(_translationProxy, lang, container); Assert.IsEmpty(exceptionTranslator.TranslationErrors, "There were errors while translating the forms"); }
public void SaveToInfFile(JobInfo jobInfo) { if (string.IsNullOrEmpty(jobInfo.InfFile)) { throw new InvalidOperationException("The inf file must not be empty"); } var infData = Data.CreateDataStorage(); var ini = new IniStorage(Encoding.GetEncoding("Unicode")); ini.SetData(infData); var sourceFileReader = new SourceFileInfoDataReader(); var sectionId = 0; foreach (var sourceFileInfo in jobInfo.SourceFiles) { var section = sectionId.ToString(CultureInfo.InvariantCulture) + "\\"; sourceFileReader.WriteSourceFileInfoToData(infData, section, sourceFileInfo); sectionId++; } ini.WriteData(jobInfo.InfFile); }
private void LoadIniButton_OnClick(object sender, RoutedEventArgs e) { var openFileDialog = new OpenFileDialog(); openFileDialog.Filter = TranslationHelper.Instance.TranslatorInstance.GetTranslation( "ApplicationSettingsWindow", "IniFileFilter", "INI files (*.ini)|*.ini"); openFileDialog.FileName = "clawPDF.ini"; if (openFileDialog.ShowDialog() != true) { return; } var message = TranslationHelper.Instance.TranslatorInstance.GetTranslation("ApplicationSettingsWindow", "LoadSettingsFromFileWarning", "By loading the file all settings and profiles will be overwritten. Do you want to continue?"); var caption = TranslationHelper.Instance.TranslatorInstance.GetTranslation("ApplicationSettingsWindow", "OverwriteAllSettings", "Overwrite all settings"); if (MessageWindow.ShowTopMost(message, caption, MessageWindowButtons.YesNo, MessageWindowIcon.Warning) != MessageWindowResponse.Yes) { return; } var ini = new IniStorage(Encoding.UTF8); var settings = SettingsHelper.CreateEmptySettings(); settings.LoadData(ini, openFileDialog.FileName, SettingsHelper.UpgradeSettings); if (!SettingsHelper.CheckValidSettings(settings)) { message = TranslationHelper.Instance.TranslatorInstance.GetTranslation("ApplicationSettingsWindow", "InvalidSettingsWarning", "The file does not appear to contain valid clawPDF settings."); caption = TranslationHelper.Instance.TranslatorInstance.GetTranslation("ApplicationSettingsWindow", "InvalidSettings", "Invalid settings"); MessageWindow.ShowTopMost(message, caption, MessageWindowButtons.OK, MessageWindowIcon.Error); return; } SettingsHelper.ApplySettings(settings); if (UpdateSettings != null) { UpdateSettings(settings); } var viewModel = ViewModel; DataContext = null; viewModel.ApplicationSettings = settings.ApplicationSettings; DataContext = viewModel; }
public void SetUp() { _sourceFileInfoDataReader = new SourceFileInfoDataReader(); _tempFileInfoFile = TempFileHelper.CreateTempFile(nameof(SourceFileInfoDataReaderTest), "TestFileInfo.inf"); _data = Data.CreateDataStorage(); _infFileIniStorage = new IniStorage(_tempFileInfoFile, Encoding.GetEncoding("Unicode")); Fixture fixture = new Fixture(); _sfi = fixture.Create <SourceFileInfo>(); }
private Data ReadEnglishTranslation() { using (var stream = GenerateStreamFromString(TranslationResources.English)) { var data = Data.CreateDataStorage(); var iniStorage = new IniStorage(); iniStorage.SetData(data); iniStorage.ReadData(stream, clear: true); return(data); } }
public void AllLanguages_ContainSameTokensAsEnglish(string translation) { // These translations contain something that looks like a token, but it is okay if they do not match var exceptions = new[] { "pdfforge.PDFCreator.UI.Views.ActionControls.UserTokenActionControl\\DescriptionText.Text" }; var englishLanguage = _translations.First(x => x.CommonName.Equals("English", StringComparison.InvariantCultureIgnoreCase)); var englishTranslationData = Data.CreateDataStorage(); var iniStorage = new IniStorage(); iniStorage.SetData(englishTranslationData); iniStorage.ReadData(Path.Combine(_languagePath, englishLanguage.FileName), true); var lang = GetLanguage(translation); var translationData = Data.CreateDataStorage(); var translatedIni = new IniStorage(); translatedIni.SetData(translationData); translatedIni.ReadData(Path.Combine(_languagePath, lang.FileName), true); ITranslator trans = new BasicTranslator(lang.CommonName, translationData); foreach (var section in englishTranslationData.GetSubSections("")) { if (section.StartsWith("General")) { continue; } var values = englishTranslationData.GetValues(section); foreach (var keyValuePair in values) { if (exceptions.Contains(section + keyValuePair.Key)) { continue; } var translatedString = trans.GetTranslation(section.TrimEnd('\\'), keyValuePair.Key); if (translatedString != "") { ValidateSingleTranslation(keyValuePair.Value, translatedString, lang, section + keyValuePair.Key); } } } }
public void LoadOldSectionNames(string languageFile) { var iniReader = new IniStorage(Encoding.UTF8); var data = Data.CreateDataStorage(); iniReader.SetData(data); iniReader.ReadData(languageFile); _sectionNames = data.GetSections() .Where(section => section.Contains(".")) .Select(section => section.TrimEnd('\\')) .ToList(); }
private async Task <IApplicationVersion> LoadOnlineVersionAsyncInternal(bool forceDownload = false, bool onlyCache = false) { _logger.Debug("Get online Version"); var url = _updateInformationProvider.UpdateInfoUrl; var sectionName = _updateInformationProvider.SectionName; try { var contents = await RetrieveFileFromCacheOrUrl(url, "update-info.txt", forceDownload); using (var stream = CreateStreamFromString(contents)) { _logger.Debug("Loading update-info.txt"); var data = Data.CreateDataStorage(); var iniStorage = new IniStorage(""); iniStorage.ReadData(stream, data); var onlineVersion = new System.Version(data.GetValue(sectionName + "\\Version")); var downloadUrl = data.GetValue(sectionName + "\\DownloadUrl"); var fileHash = data.GetValue(sectionName + "\\FileHash"); _logger.Info("Online Version: " + onlineVersion); var versionsInfo = new List <Release>(); var applicationVersion = _versionHelper.ApplicationVersion; if (applicationVersion.CompareTo(onlineVersion) < 0) { var downloadString = await RetrieveFileFromCacheOrUrl(_updateInformationProvider.ChangeLogUrl, "Releases.json", forceDownload); var availableInfos = _changeParser.Parse(downloadString); versionsInfo = availableInfos.FindAll(release => release.Version > applicationVersion); CurrentReleaseVersion = availableInfos.FirstOrDefault(x => x.Version.IsEqualToCurrentVersion(applicationVersion)); } _onlineVersion = new ApplicationVersion(onlineVersion, downloadUrl, fileHash, versionsInfo); } } catch (Exception e) { _logger.Warn(e.Message); _onlineVersion = new ApplicationVersion(new System.Version(0, 0, 0), "", "", new List <Release>()); } return(_onlineVersion); }
public void SetupSettings() { var ini = new IniStorage(); _testHelper = new TestHelper("MappingTest"); _settings = new PdfCreatorSettings(ini); _settings.ConversionProfiles.Add(new ConversionProfile { Guid = "Profile0", Name = "Profile0" }); _settings.ConversionProfiles.Add(new ConversionProfile { Guid = "Profile1", Name = "Profile1" }); _testHelper.GenerateGsJob(PSfiles.EmptyPage, OutputFormat.Pdf); }
private JobInfo ReadFromInfFile(string infFile, TitleReplacer titleReplacer) { var jobInfo = new JobInfo(); jobInfo.InfFile = infFile; var infData = Data.CreateDataStorage(); var ini = new IniStorage(jobInfo.InfFile, Encoding.GetEncoding("Unicode")); ini.ReadData(infData); var sourceFiles = new ObservableCollection <SourceFileInfo>(); var sourceFileReader = new SourceFileInfoDataReader(); foreach (var section in infData.GetSections()) { var sfi = sourceFileReader.ReadSourceFileInfoFromData(infFile, infData, section); if (sfi != null) { sourceFiles.Add(sfi); } } jobInfo.SourceFiles = sourceFiles; var metadata = new Metadata(); if (sourceFiles.Count > 0) { metadata.PrintJobAuthor = sourceFiles[0].Author; metadata.PrintJobName = titleReplacer.Replace(sourceFiles[0].DocumentTitle); jobInfo.OriginalFilePath = sourceFiles[0].OriginalFilePath; jobInfo.PrinterName = sourceFiles[0].PrinterName; jobInfo.PrinterParameter = sourceFiles[0].PrinterParameter; jobInfo.ProfileParameter = sourceFiles[0].ProfileParameter; jobInfo.OutputFileParameter = sourceFiles[0].OutputFileParameter; jobInfo.JobType = sourceFiles[0].Type; } ConsiderStoredParameters(jobInfo); jobInfo.Metadata = metadata; jobInfo.PrintDateTime = File.GetCreationTime(infFile); return(jobInfo); }
public void AllLanguages_ContainSameTokensAsEnglish() { var englishLanguage = _translations.First(x => x.CommonName.Equals("English", StringComparison.InvariantCultureIgnoreCase)); Data englishTranslationData = Data.CreateDataStorage(); IniStorage iniStorage = new IniStorage(); iniStorage.SetData(englishTranslationData); iniStorage.ReadData(Path.Combine(_languagePath, englishLanguage.FileName), true); foreach (Language lang in _translations) { if (lang != englishLanguage) { TestTokensInTranslation(englishTranslationData, lang); } } }
private void SaveIniButton_OnClick(object sender, RoutedEventArgs e) { var saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = TranslationHelper.Instance.TranslatorInstance.GetTranslation("ApplicationSettingsWindow", "IniFileFilter", "INI files (*.ini)|*.ini"); saveFileDialog.FileName = "PDFCreator.ini"; if (saveFileDialog.ShowDialog() != true) { return; } var ini = new IniStorage(Encoding.UTF8); SettingsHelper.Settings.SaveData(ini, saveFileDialog.FileName); }
private JobInfo ReadFromInfFile(string infFile, TitleReplacer titleReplacer) { var jobInfo = new JobInfo(); jobInfo.InfFile = infFile; var infData = Data.CreateDataStorage(); var ini = new IniStorage(Encoding.GetEncoding("Unicode")); ini.SetData(infData); ini.ReadData(infFile); var sourceFiles = new List <SourceFileInfo>(); var sourceFileReader = new SourceFileInfoDataReader(); foreach (var section in infData.GetSections()) { var sfi = sourceFileReader.ReadSourceFileInfoFromData(infFile, infData, section); if (sfi != null) { sourceFiles.Add(sfi); } } jobInfo.SourceFiles = sourceFiles; var metadata = new Metadata(); if (sourceFiles.Count > 0) { metadata.PrintJobAuthor = sourceFiles[0].Author; metadata.PrintJobName = titleReplacer.Replace(sourceFiles[0].DocumentTitle); metadata.Title = ""; //Set to avoid null exception when replacing tokens metadata.Author = ""; metadata.Subject = ""; metadata.Keywords = ""; jobInfo.JobType = sourceFiles[0].Type; } jobInfo.Metadata = metadata; return(jobInfo); }
public void SetupSettings() { var bootstrapper = new IntegrationTestBootstrapper(); var container = bootstrapper.ConfigureContainer(); _jobBuilder = container.GetInstance <IJobBuilder>(); var ini = new IniStorage(""); _testHelper = container.GetInstance <TestHelper>(); _testHelper.InitTempFolder("MappingTest"); _settings = new PdfCreatorSettings(); _settings.ConversionProfiles.Add(new ConversionProfile { Guid = "Profile0", Name = "Profile0" }); _settings.ConversionProfiles.Add(new ConversionProfile { Guid = "Profile1", Name = "Profile1" }); _testHelper.GenerateGsJob(PSfiles.EmptyPage, OutputFormat.Pdf); }
/// <summary> /// Save the inf file to the path from the InfFile property /// </summary> public void SaveInf() { if (string.IsNullOrEmpty(InfFile)) { throw new InvalidOperationException("The inf file must not be empty"); } var infData = Data.CreateDataStorage(); var ini = new IniStorage(Encoding.GetEncoding("Unicode")); ini.SetData(infData); var sectionId = 0; foreach (var sourceFileInfo in SourceFiles) { sourceFileInfo.WriteSourceFileInfo(infData, sectionId.ToString(CultureInfo.InvariantCulture) + "\\"); sectionId++; } ini.WriteData(InfFile); }
public void SettingsUpdateV3To4_VersionBecomes4_TiffColorBlackWihteGetsBlackWhiteG4Fax() { SettingsHelper.Settings.ConversionProfiles[0].TiffSettings.Color = TiffColor.BlackWhiteG4Fax; var currentSettingsVersion = SettingsHelper.Settings.ApplicationProperties.SettingsVersion; SettingsHelper.Settings.ApplicationProperties.SettingsVersion = 3; var iniFile = Path.Combine(_th.TmpTestFolder, "TestSettings.ini"); var ini = new IniStorage(Encoding.UTF8); SettingsHelper.Settings.SaveData(ini, iniFile); var settingsFromIni = File.ReadAllText(iniFile); settingsFromIni = settingsFromIni.Replace("BlackWhiteG4Fax", "BlackWhite"); File.WriteAllText(iniFile, settingsFromIni); var settings = SettingsHelper.CreateEmptySettings(); settings.LoadData(ini, iniFile, SettingsHelper.UpgradeSettings); Assert.AreEqual(currentSettingsVersion, settings.ApplicationProperties.SettingsVersion, "Did not update SettingsVersion."); Assert.AreEqual(TiffColor.BlackWhiteG4Fax, settings.ConversionProfiles[0].TiffSettings.Color, "Did not update TiffColor BlackWhite to BlackWhiteG4Fax"); }