Inheritance: System.Windows.Forms.Form, IFWDisposable, IWritingSystemPropertiesDialog
		/// <summary>
		/// Shows the new writing system properties dialog.
		/// </summary>
		/// <param name="owner">The owner.</param>
		/// <param name="cache">The cache.</param>
		/// <param name="wsManager">The ws manager.</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="displayRelatedWss">if set to <c>true</c> related writing systems will be displayed.</param>
		/// <param name="defaultName">The default language name for the new writing system.</param>
		/// <param name="newWritingSystems">The new writing systems.</param>
		/// <returns></returns>
		public static bool ShowNewDialog(Form owner, FdoCache cache, IWritingSystemManager wsManager,
			IWritingSystemContainer wsContainer, IHelpTopicProvider helpTopicProvider, IApp app,
			IVwStylesheet stylesheet, bool displayRelatedWss, string defaultName,
			out IEnumerable<IWritingSystem> newWritingSystems)
		{
			newWritingSystems = null;
			LanguageSubtag languageSubtag;

			using (new WaitCursor(owner))
			using (var dlg = new LanguageSelectionDlg(wsManager, helpTopicProvider))
			{
				dlg.Text = FwCoreDlgs.kstidLanguageSelectionNewWsCaption;
				dlg.DefaultLanguageName = defaultName;

				if (dlg.ShowDialog(owner) != DialogResult.OK)
					return false;

				languageSubtag = dlg.LanguageSubtag;
			}

			using (new WaitCursor(owner))
			using (var wsPropsDlg = new WritingSystemPropertiesDialog(cache, wsManager, wsContainer, helpTopicProvider, app, stylesheet))
			{
				wsPropsDlg.SetupDialog(languageSubtag, displayRelatedWss);

				if (wsPropsDlg.ShowDialog(owner) == DialogResult.OK)
				{
					newWritingSystems = wsPropsDlg.NewWritingSystems;
					return true;
				}
			}
			return false;
		}
Ejemplo n.º 2
0
		private void NoteChangesAndUpdateCache(WritingSystemPropertiesDialog wsProps)
		{
			m_fWsChanged = wsProps.IsChanged;
			m_fNewRendering = wsProps.NewRenderingNeeded;
			m_fWsSortChanged = wsProps.SortChanged;

			if (wsProps.IsChanged)
			{
				m_cache.ResetLanguageEncodings();
				List<LanguageDefinition> newlyAdded = wsProps.NewlyAddedLanguageDefns();
				foreach (LanguageDefinition langDef in newlyAdded)
				{
					ILgWritingSystem ws = new LgWritingSystem(m_cache,
						m_cache.LanguageWritingSystemFactoryAccessor.GetWsFromStr(langDef.CurrentFullLocale()));
					AddWsToList(ws, m_selectedList);
				}
				foreach (LanguageDefinition langDef in wsProps.FinalLanguageDefns)
				{
					if (langDef.HasPendingMerge() || newlyAdded.Contains(langDef))
						continue;

					int wsIdOld = langDef.WsOriginal;
					// The display name may have changed and that means the name of the WS changed.
					// Therefore we have to call UpdatePropIfCached so that the new names
					// display in the dialog.
					m_cache.VwOleDbDaAccessor.UpdatePropIfCached(wsIdOld,
						(int)LgWritingSystem.LgWritingSystemTags.kflidName,
						(int)CellarModuleDefns.kcptMultiUnicode, langDef.WsUi);
					m_cache.VwOleDbDaAccessor.UpdatePropIfCached(wsIdOld,
						(int)LgWritingSystem.LgWritingSystemTags.kflidICULocale,
						(int)CellarModuleDefns.kcptUnicode, langDef.WsUi);
				}
			}
		}
		/// <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;
		}
Ejemplo n.º 4
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();
				}
			}
		}