AddNewWsForLanguage() public method

Adds a new writing system based on the selected language.
public AddNewWsForLanguage ( ) : void
return void
		/// <summary>
		/// Shows the modify writing system properties dialog.
		/// </summary>
		/// <param name="owner">The owner.</param>
		/// <param name="selectedWs">The selected writing system.</param>
		/// <param name="addNewForLangOfSelectedWs">if set to <c>true</c> a new writing system with the
		/// same language as the selected writing system will be added.</param>
		/// <param name="cache">The cache.</param>
		/// <param name="wsContainer">The ws container.</param>
		/// <param name="helpTopicProvider">The help topic provider.</param>
		/// <param name="app">The app.</param>
		/// <param name="stylesheet">The stylesheet.</param>
		/// <param name="newWritingSystems">The new writing systems.</param>
		/// <returns></returns>
		public static bool ShowModifyDialog(Form owner, IWritingSystem selectedWs, bool addNewForLangOfSelectedWs, FdoCache cache,
			IWritingSystemContainer wsContainer, IHelpTopicProvider helpTopicProvider, IApp app, IVwStylesheet stylesheet,
			out IEnumerable<IWritingSystem> newWritingSystems)
		{
			newWritingSystems = null;
			string path;
			if (!cache.ServiceLocator.WritingSystemManager.CanSave(selectedWs, out path))
			{
				MessageBox.Show(owner, string.Format(FwCoreDlgs.ksCannotSaveWritingSystem, path), FwCoreDlgs.ksError, MessageBoxButtons.OK, MessageBoxIcon.Warning);
				return false; // nothing changed.
			}
			using (new WaitCursor(owner))
			using (var wsPropsDlg = new WritingSystemPropertiesDialog(cache, cache.ServiceLocator.WritingSystemManager,
				wsContainer, helpTopicProvider, app, stylesheet))
			{
				wsPropsDlg.SetupDialog(selectedWs, true);
				if (addNewForLangOfSelectedWs)
					wsPropsDlg.AddNewWsForLanguage();

				if (!ClientServerServicesHelper.WarnOnOpeningSingleUserDialog(cache))
					return false; // nothing changed.
				if (!SharedBackendServicesHelper.WarnOnOpeningSingleUserDialog(cache))
					return false;

				if (wsPropsDlg.ShowDialog(owner) == DialogResult.OK)
				{
					if (wsPropsDlg.IsChanged)
					{
						newWritingSystems = wsPropsDlg.NewWritingSystems;
						return true;
					}
				}
			}

			return false;
		}
Exemplo n.º 2
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Displays the WritingSystemPropertiesDialog dialog.
		/// </summary>
		/// ------------------------------------------------------------------------------------
		private void DisplayModifyWritingSystemProperties(bool addNewForLangOfSelectedWs)
		{
			IWritingSystem lgWsSelected = GetCurrentSelectedWs();

			DialogResult = DialogResult.None;
			using (WritingSystemPropertiesDialog wsProps = new WritingSystemPropertiesDialog(m_cache, m_helpTopicProvider, m_stylesheet))
			{
				wsProps.SetupForWsMerges(m_tool, m_strmLog, m_hvoProj, m_hvoRoot, m_wsUser);
				wsProps.OnAboutToMergeWritingSystems += new EventHandler(wsProps_OnAboutToMergeWritingSystems);
				wsProps.ActiveWss = GetAllActiveWssInDialog();
				if (!wsProps.TrySetupDialog(lgWsSelected))
					return;
				if (addNewForLangOfSelectedWs)
					wsProps.AddNewWsForLanguage();
				if (wsProps.ShowDialog() == DialogResult.OK)
				{
					// Note: wsProps can get Disposed if user performs a merge, since wsProps_OnAboutToMergeWritingSystems()
					// will Close our dialog and set the result to Abort.
					if (DialogResult != DialogResult.Abort)
						NoteChangesAndUpdateCache(wsProps);
					m_selectedList.Invalidate();
				}
			}
		}