コード例 #1
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        ///
        /// </summary>
        /// ------------------------------------------------------------------------------------
        private void UpdateLanguageCombos()
        {
            ILgWritingSystemFactory wsf = LgWritingSystemFactoryClass.Create();
            string userLocale           = wsf.GetStrFromWs(wsf.UserWs);

            // Get the set of writing systems.
            Set <NamedWritingSystem> writingSystems =
                LangProject.GetAllNamedWritingSystemsFromLDFs(wsf, userLocale);

            NamedWritingSystem wsSaveVern = (NamedWritingSystem)m_cbVernWrtSys.SelectedItem;
            NamedWritingSystem wsSaveAnal = (NamedWritingSystem)m_cbAnalWrtSys.SelectedItem;

            m_cbAnalWrtSys.Items.Clear();
            m_cbVernWrtSys.Items.Clear();
            m_cbAnalWrtSys.BeginUpdate();
            m_cbVernWrtSys.BeginUpdate();

            foreach (NamedWritingSystem nws in writingSystems)
            {
                m_cbAnalWrtSys.Items.Add(nws);
                m_cbVernWrtSys.Items.Add(nws);
            }

            int i = (wsSaveVern == null ? 0 : m_cbVernWrtSys.FindString(wsSaveVern.Name));

            m_cbVernWrtSys.SelectedIndex = (i >= 0 ? i : 0);
            m_cbVernWrtSys.EndUpdate();

            i = (wsSaveAnal == null ? 0 : m_cbAnalWrtSys.FindString(wsSaveAnal.Name));
            m_cbAnalWrtSys.SelectedIndex = (i >= 0 ? i : 0);
            m_cbAnalWrtSys.EndUpdate();
        }
コード例 #2
0
        private void btnAddWS_Click(object sender, System.EventArgs e)
        {
            // show the menu to select which type of writing system to create
            ContextMenu addWs = new ContextMenu();

            // look like the "Add" button on the WS properties dlg
            ArrayList xmlWs = GetOtherNamedWritingSystems();

            MenuItem[] xmlWsV = new MenuItem[xmlWs.Count + 2];                  // one for Vernacular
            MenuItem[] xmlWsA = new MenuItem[xmlWs.Count + 2];                  // one for Analysis
            for (int i = 0; i < xmlWs.Count; i++)
            {
                NamedWritingSystem nws = xmlWs[i] as NamedWritingSystem;
                xmlWsV[i]     = new MenuItem(nws.Name, new EventHandler(btnAddWS_Vern));
                xmlWsA[i]     = new MenuItem(nws.Name, new EventHandler(btnAddWS_Anal));
                xmlWsV[i].Tag = nws;
                xmlWsA[i].Tag = nws;
            }
            xmlWsV[xmlWs.Count]     = new MenuItem("-");
            xmlWsV[xmlWs.Count + 1] = new MenuItem(LexTextControls.ks_DefineNew_, new EventHandler(btnAddWS_Vern));
            xmlWsA[xmlWs.Count]     = new MenuItem("-");
            xmlWsA[xmlWs.Count + 1] = new MenuItem(LexTextControls.ks_DefineNew_, new EventHandler(btnAddWS_Anal));

            // have to have seperate lists
            addWs.MenuItems.Add(LexTextControls.ks_VernacularWS, xmlWsV);
            addWs.MenuItems.Add(LexTextControls.ks_AnalysisWS, xmlWsA);

            addWs.Show(btnAddWS, new Point(0, btnAddWS.Height));
        }
コード例 #3
0
        public void Init(FdoCache cache, bool enableCancel)
        {
            CheckDisposed();

            m_cache             = cache;
            m_btnCancel.Visible = enableCancel;
            Set <int> revIdxWs = new Set <int>(4);

            foreach (IReversalIndex ri in cache.LangProject.LexDbOA.ReversalIndexesOC)
            {
                revIdxWs.Add(ri.WritingSystemRAHvo);
            }
            // Include only the analysis writing systems chosen by the user.  See LT-7514 and LT-7239.
            Set <int> activeWs = new Set <int>(8);

            foreach (int ws in cache.LangProject.AnalysisWssRC.HvoArray)
            {
                activeWs.Add(ws);
            }
            m_cbWritingSystems.Sorted        = true;
            m_cbWritingSystems.DisplayMember = "Name";
            NamedWritingSystem nwsSelected = null;

            foreach (NamedWritingSystem nws in cache.LangProject.GetDbNamedWritingSystems())
            {
                if (revIdxWs.Contains(nws.Hvo))
                {
                    AddLanguageForExistingRevIdx(nws.IcuLocale);
                    continue;
                }
                if (!activeWs.Contains(nws.Hvo))
                {
                    continue;
                }
                m_cbWritingSystems.Items.Add(nws);
                if (nwsSelected == null && !LanguageMatchesExistingRevIdx(nws.IcuLocale))
                {
                    nwsSelected = nws;
                }
            }
            if (nwsSelected != null)
            {
                m_cbWritingSystems.SelectedItem = nwsSelected;
            }
            if (m_cbWritingSystems.Items.Count > 0 && m_cbWritingSystems.SelectedIndex < 0)
            {
                m_cbWritingSystems.SelectedIndex = 0;
            }
            if (!enableCancel && m_cbWritingSystems.Items.Count == 0)
            {
                throw new ApplicationException("Cancel is disabled, but there are none to choose, so the user has no way to get out of this dialog.");
            }
        }
コード例 #4
0
        private void CreateReversalIndexDlg_FormClosing(object sender, FormClosingEventArgs e)
        {
            switch (DialogResult)
            {
            default:
            {
                Debug.Assert(false, "Unexpected DialogResult.");
                break;
            }

            case DialogResult.Cancel:
            {
                if (!m_btnCancel.Visible)
                {
                    e.Cancel = true;
                    MessageBox.Show(LexEdStrings.ksMustSelectOne);
                }
                break;
            }

            case DialogResult.OK:
            {
                NamedWritingSystem nws = m_cbWritingSystems.SelectedItem as NamedWritingSystem;
                if (nws != null)
                {
                    ILgWritingSystem lgws   = LgWritingSystem.CreateFromDBObject(m_cache, nws.Hvo);
                    IReversalIndex   newIdx = m_cache.LangProject.LexDbOA.ReversalIndexesOC.Add(new ReversalIndex());
                    newIdx.WritingSystemRA = lgws;
                    // Copy any and all alternatives from lgws.Name to newIdx.Name
                    // LT-4907 dies here.
                    foreach (ILgWritingSystem lgwsLoop in m_cache.LanguageEncodings)
                    {
                        string lgsNameAlt = lgws.Name.GetAlternative(lgwsLoop.Hvo);
                        if (lgsNameAlt != null && lgsNameAlt.Length > 0)
                        {
                            newIdx.Name.SetAlternative(lgsNameAlt, lgws.Hvo);
                        }
                    }
                    m_hvoRevIdx = newIdx.Hvo;
                }
                break;
            }
            }
        }
コード例 #5
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Create a new language project for the new language name
        /// </summary>
        /// <param name="progressDlg">The progress dialog.</param>
        /// <param name="parameters">The parameters: first parameter is resources, second is
        /// name of the project (string), analysis and vernacular writing system
        /// (NamedWritingSystem).</param>
        /// <returns>Always null.</returns>
        /// <remarks>Override DisplayUi to prevent progress dialog from showing.</remarks>
        /// ------------------------------------------------------------------------------------
        protected internal object CreateNewLangProj(IAdvInd4 progressDlg, params object[] parameters)
        {
            Debug.Assert(parameters.Length == 4);
            ResourceManager resources   = (ResourceManager)parameters[0];
            string          projectName = (string)parameters[1];

            m_analWrtSys = (NamedWritingSystem)parameters[2];
            m_vernWrtSys = (NamedWritingSystem)parameters[3];
            string dbFileName;
            string logFileName;

            // Loading the new language project (LoadNewLangProj) took 120 steps. To be safe
            // we calculate with 140. Loading newlangproj took 94% of the time, so the total is
            // 150.
            int nMax = 150;

            progressDlg.SetRange(0, nMax);
            if (resources != null)
            {
                progressDlg.Message = resources.GetString("kstidCreatingDB");
            }
            CreateNewDbFiles(projectName, out dbFileName, out logFileName);

            progressDlg.Step(0);
            m_dbName = AttachDatabase(dbFileName, logFileName);

            progressDlg.Step(0);
            if (resources != null)
            {
                progressDlg.Message = resources.GetString("kstidInitializingDB");
            }
            LoadNewLangProj(progressDlg);

            // Create the FDO cache and writing systems.
            progressDlg.Position = (int)(nMax * 0.95);
            if (resources != null)
            {
                progressDlg.Message = resources.GetString("kstidCreatingWS");
            }

            int hvoLp = 0;

            using (FdoCache cache = FdoCache.Create(m_dbName))
            {
                progressDlg.Step(0);
                CreateAnalysisWritingSystem(cache);
                progressDlg.Step(0);
                CreateVernacularWritingSystem(cache);

                // Fix sort methods that should use the vernacular writing system.
                progressDlg.Step(0);
                progressDlg.Step(0);
                FixVernacularWritingSystemReferences(cache);
                progressDlg.Step(0);

                // set defaults so can access them now
                cache.LangProject.CacheDefaultWritingSystems();
                progressDlg.Step(0);
                AssignVernacularWritingSystemToDefaultPhPhonemes(cache);
                progressDlg.Step(0);

                // Create a reversal index for the original default analysis writing system. (LT-4480)
                IReversalIndex newIdx = cache.LangProject.LexDbOA.ReversalIndexesOC.Add(
                    new ReversalIndex());
                ILgWritingSystem wsAnalysis = cache.LangProject.CurAnalysisWssRS[0];
                newIdx.WritingSystemRA = wsAnalysis;
                newIdx.Name.AnalysisDefaultWritingSystem = wsAnalysis.Name.AnalysisDefaultWritingSystem;
                progressDlg.Step(0);

                // Give the language project a default name. Later this can be modified by the
                // user by changing it on the project properties dialog.
                cache.LangProject.Name.UserDefaultWritingSystem = projectName;
                hvoLp = cache.LangProject.Hvo;
                cache.Save();
                progressDlg.Position = nMax;
            }

            return(new NewLangProjReturnData(hvoLp, m_serverName, m_dbName));
        }
コード例 #6
0
        private void CommonAddWS(bool isAnalysis, MenuItem selectedMI)
        {
            string icuLocal = "", mapName = "", wsName = "";
            bool   addWs = true;

            if (selectedMI.Text == LexTextControls.ks_DefineNew_)
            {
                using (WritingSystemWizard wiz = new WritingSystemWizard())
                {
                    wiz.Init(m_cache.LanguageWritingSystemFactoryAccessor, FwApp.App);
                    DialogResult dr = (DialogResult)wiz.ShowDialog();
                    if (dr == DialogResult.OK)
                    {
                        // The engine from the wizard isn't the real one, so it doesn't have an id.
                        IWritingSystem wsEngine = wiz.WritingSystem();
                        icuLocal = wsEngine.IcuLocale;
                        mapName  = wsEngine.LegacyMapping;
                        wsName   = wsEngine.LanguageName;
                    }
                    else
                    {
                        addWs = false;
                    }
                }
            }
            else
            {
                NamedWritingSystem namedWs  = selectedMI.Tag as NamedWritingSystem;
                ILgWritingSystem   wsEngine = namedWs.GetLgWritingSystem(m_cache);
                icuLocal = wsEngine.ICULocale;
                mapName  = wsEngine.LegacyMapping;
                wsName   = wsEngine.Name.BestAnalysisAlternative.Text;
            }

            if (addWs)
            {
                int ws = m_cache.LanguageWritingSystemFactoryAccessor.GetWsFromStr(icuLocal);
                // string wsName = ws.get_UiName(wsUser);
                WsInfo wsi = new WsInfo(ws, wsName, icuLocal, mapName);
                m_wsInfo.Add(wsi.KEY, wsi);

                // now select it for the ws combo box
                int index = cbWS.Items.Add(wsi);
                cbWS.SelectedIndex = index;

                // now if there's an encoding converter for the ws, select it
                if (mapName != null && mapName.Length > 0)
                {
                    index = cbEC.Items.Add(mapName);
                    cbEC.SelectedIndex = index;
                }
                else
                {
                    index = cbEC.FindStringExact(m_blankEC);
                    cbEC.SelectedIndex = index;
                }

                // now add the ws to the FDO list for it
                if (isAnalysis)
                {
                    m_cache.LangProject.AnalysisWssRC.Add(ws);
                    m_cache.LangProject.CurAnalysisWssRS.Append(ws);
                }
                else
                {
                    m_cache.LangProject.VernWssRC.Add(ws);
                    m_cache.LangProject.CurVernWssRS.Append(ws);
                }
            }
        }