Exemple #1
0
        public IEnumerable <SrgsDocument> GenerateGrammar()
        {
            // Get all interesting special folders
            var myStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);
            var cmStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);
            var myDesktop   = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
            var cmDesktop   = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory);
            // Search all link files
            var allFolders = new [] { myStartMenu, cmStartMenu, myDesktop, cmDesktop };
            var lnkFiles   = allFolders.SelectMany(f => Directory.GetFiles(f, "*.lnk", SearchOption.AllDirectories));
            // Extract information from link files
            var lnks = ExtractStartMenuLinks(shell, lnkFiles).Distinct();

            lnkDict = lnks.ToDictionary(k => k.Name, v => v.Path);
            // Create rule for opening
            var keys  = lnkDict.Keys.OrderBy(k => k).ToArray();
            var oRoot = new SrgsRule(RuleNames.First(), new SrgsItem(openPrefix), new SrgsOneOf(keys));

            oRoot.Scope = SrgsRuleScope.Public;
            // Create rule for closing
            var cRoot = new SrgsRule(RuleNames.Last(), new SrgsItem(closePrefix), new SrgsOneOf(keys));

            cRoot.Scope = SrgsRuleScope.Public;
            // Create document for opening
            var oDoc = new SrgsDocument(oRoot);

            oDoc.Mode = SrgsGrammarMode.Voice;
            yield return(oDoc);

            // Create document for closing
            var cDoc = new SrgsDocument(cRoot);

            cDoc.Mode = SrgsGrammarMode.Voice;
            yield return(cDoc);
        }
Exemple #2
0
        void ExportRuleNames(List <IdpeRule> allRules, RuleSetTypes ruleSetType)
        {
            List <IdpeRule> rules = allRules.Where(r => r.RuleSetType == (int)ruleSetType).ToList();

            foreach (IdpeRule rule in rules)
            {
                RuleNames.Add(string.Format("{0}({1}):{2}", ruleSetType.ToString().PadRight(12), rule.Priority, rule.Name));
            }
        }
Exemple #3
0
        public Keymap(Context context, string rules, string model, string layout, string variant, string options)
        {
            RuleNames names = new RuleNames();

            names.rules   = Marshal.StringToHGlobalAnsi(rules);
            names.model   = Marshal.StringToHGlobalAnsi(model);
            names.layout  = Marshal.StringToHGlobalAnsi(layout);
            names.variant = Marshal.StringToHGlobalAnsi(variant);
            names.options = Marshal.StringToHGlobalAnsi(options);
            IntPtr namesUnmanaged = Marshal.AllocHGlobal(Marshal.SizeOf(names));

            Marshal.StructureToPtr(names, namesUnmanaged, false);
            Pointer = xkb_keymap_new_from_names(context.Pointer, namesUnmanaged, 0);
            Marshal.FreeHGlobal(namesUnmanaged);
            Marshal.FreeHGlobal(names.rules);
            Marshal.FreeHGlobal(names.model);
            Marshal.FreeHGlobal(names.layout);
            Marshal.FreeHGlobal(names.variant);
            Marshal.FreeHGlobal(names.options);
        }
Exemple #4
0
 internal static extern IntPtr KeymapNewFromNames(IntPtr context, ref RuleNames names, int flags);
 /// <summary>
 /// Add a specific rule to the list, after checking if it is not there already
 /// </summary>
 /// <param name="rule">the rule to add</param>
 /// <param name="strRestrictionList">the string builder containing everything</param>
 private static void Addrestriction(StringBuilder strRestrictionList, RuleNames rule)
 {
     if (!CheckRestrictioninList(rule.ToString()))
     {
         if (strRestrictionList.Length == 0)
             strRestrictionList.Append(rule.ToString());
         else
             strRestrictionList.Append("," + rule.ToString());
     }
 }