示例#1
0
        public InputBinder(InputConfig config)
        {
            On <InputEvent>(OnInput);
            On <LoadMapEvent>(e => _mapId = e.MapId);

            foreach (var rawMode in config.Bindings)
            {
                if (!_bindings.ContainsKey(rawMode.Key))
                {
                    _bindings.Add(rawMode.Key, new Dictionary <KeyBinding, string>());
                }

                var mode = _bindings[rawMode.Key];
                foreach (var rawBinding in rawMode.Value)
                {
                    var parts     = rawBinding.Key.Split('+').Select(x => x.Trim().ToLower()).ToArray();
                    Key key       = Key.LastKey;
                    var modifiers = ModifierKeys.None;
                    for (int i = 0; i < parts.Length; i++)
                    {
                        if (i == parts.Length - 1)
                        {
                            if (int.TryParse(parts[i], out var numeric))
                            {
                                key = Key.Number0 + numeric;
                            }
                            else
                            {
                                key = Enum.Parse <Key>(parts[i], true);
                            }
                        }
                        else
                        {
                            modifiers |= Enum.Parse <ModifierKeys>(parts[i], true);
                        }
                    }

                    if (key != Key.LastKey)
                    {
                        mode[new KeyBinding(key, modifiers)] = rawBinding.Value;
                    }
                }
            }
        }
示例#2
0
        private data.Canvas TryGetCanvas(string filePath)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return(null);
            }

            IModel model = data.Models.GetActivities();

            string queryString = @"
                PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                PREFIX nfo: <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#>
                PREFIX prov: <http://www.w3.org/ns/prov#>
                PREFIX art: <http://semiodesk.com/artivity/1.0/>

                SELECT DISTINCT ?canvas WHERE
                {
                       ?activity prov:used ?file .
                       ?activity prov:startedAtTime ?startTime .

                       ?file rdf:type nfo:FileDataObject .
                       ?file nfo:fileUrl ""file://" + Uri.EscapeUriString(filePath) + @""" .
                       ?file art:canvas ?canvas .
                }
                ORDER BY DESC(?startTime) LIMIT 1";

            SparqlQuery        query  = new SparqlQuery(queryString);
            ISparqlQueryResult result = model.ExecuteQuery(query);

            BindingSet bindings = result.GetBindings().FirstOrDefault();

            if (bindings == null || !bindings.ContainsKey("canvas"))
            {
                return(null);
            }

            UriRef canvasUri = new UriRef(bindings["canvas"].ToString());

            return(model.GetResource <data.Canvas>(canvasUri));
        }