Пример #1
0
        public static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine(@"This application takes one parameter.");
                return;
            }

            IObjectRegistry registry = new ReloadableObjectRegistry("modules");
            IObjectTree     tree     = registry.Tree;

            if (args[0].Contains("::"))
            {
                string name = args[0];
                var    oid  = registry.Translate(name);
                var    id   = new ObjectIdentifier(oid);
                Console.WriteLine(id);
            }
            else
            {
                string oid     = args[0];
                var    o       = tree.Search(ObjectIdentifier.Convert(oid));
                string textual = o.AlternativeText;
                Console.WriteLine(textual);
                if (o.GetRemaining().Count == 0)
                {
                    Console.WriteLine(o.Definition.Type.ToString());
                }
            }
        }
Пример #2
0
        private void RefreshPanel(object sender, EventArgs e)
        {
            if (InvokeRequired)
            {
                Invoke((MethodInvoker)(() => RefreshPanel(sender, e)));
                return;
            }

            ReloadableObjectRegistry repository = (ReloadableObjectRegistry)sender;

            treeView1.Nodes.Clear();
            TreeNode root = Wrap(repository.Tree.Root);

            // FIXME: worked around a Mono bug.
            treeView1.Nodes.AddRange(root.Nodes.Cast <TreeNode>().ToArray());
        }
Пример #3
0
        private void ActRemoveExecute(object sender, EventArgs e)
        {
            ReloadableObjectRegistry reg = (ReloadableObjectRegistry)Objects;
            string index = Path.Combine(reg.Path, "index");

            foreach (ListViewItem item in listView1.SelectedItems)
            {
                string name = item.Text.ToUpperInvariant();

                // TODO: bad performance. improve later.
                List <string> list = new List <string>(File.ReadAllLines(index));
                if (!list.Contains(name))
                {
                    continue;
                }

                list.Remove(name);
                File.WriteAllLines(index, list.ToArray());
            }

            reg.Reload();
        }
Пример #4
0
        private void RefreshPanel(object sender, EventArgs e)
        {
            if (InvokeRequired)
            {
                Invoke((MethodInvoker)(() => RefreshPanel(sender, e)));
                return;
            }

            ReloadableObjectRegistry reg = (ReloadableObjectRegistry)sender;

            SuspendLayout();
            listView1.Items.Clear();
            List <string> loaded = new List <string>(reg.Tree.LoadedModules);

            loaded.Sort();
            foreach (ListViewItem item in loaded.Select(module => listView1.Items.Add(module)))
            {
                item.Group = listView1.Groups["lvgLoaded"];
            }

            string[] files = Directory.GetFiles(reg.Path, Filter);
            foreach (ListViewItem item in from file in files
                     select Path.GetFileNameWithoutExtension(file)
                     into name
                     where !loaded.Contains(name)
                     select listView1.Items.Add(name))
            {
                item.BackColor = Color.LightGray;
                item.Group     = listView1.Groups["lvgPending"];
            }

            ResumeLayout();
            listView1.Groups["lvgLoaded"].Header  = string.Format(CultureInfo.CurrentCulture, "Loaded ({0})", listView1.Groups["lvgLoaded"].Items.Count);
            listView1.Groups["lvgPending"].Header = string.Format(CultureInfo.CurrentCulture, "Unloaded ({0})", listView1.Groups["lvgPending"].Items.Count);
            tslblCount.Text = string.Format(CultureInfo.InvariantCulture, "loaded: {0}; unloaded: {1}", listView1.Groups["lvgLoaded"].Items.Count, listView1.Groups["lvgPending"].Items.Count);
        }