示例#1
0
        public ChatTreeView()
        {
            ThemeSettings = new ThemeSettings();
            TreeStore     = new Gtk.TreeStore(typeof(ChatView));
            TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending);
            TreeStore.SetSortFunc(0, SortTreeStore);

            Model              = TreeStore;
            HeadersVisible     = false;
            BorderWidth        = 0;
            ShowExpanders      = false;
            LevelIndentation   = 12;
            Selection.Mode     = Gtk.SelectionMode.Browse;
            Selection.Changed += (sender, e) => {
                Gtk.TreeIter iter;
                if (!Selection.GetSelected(out iter) &&
                    TreeStore.GetIterFirst(out iter))
                {
                    Selection.SelectIter(iter);
                    return;
                }
                if (Gtk.TreeIter.Zero.Equals(iter))
                {
                    // no chat views available; this happens during shutdown
                    return;
                }
                var path = TreeStore.GetPath(iter);
                f_CurrentChatNumber = GetRowNumber(path);
            };

            var iconRenderer = new Gtk.CellRendererPixbuf();
            var column       = new Gtk.TreeViewColumn(null, iconRenderer);

            column.Spacing = 0;
            column.Sizing  = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon));
            AppendColumn(column);

            var cellRenderer = new Gtk.CellRendererText()
            {
                Ellipsize = Pango.EllipsizeMode.End
            };

            column         = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Expand  = true;
            column.Sizing  = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName));
            AppendColumn(column);

            cellRenderer     = new Gtk.CellRendererText();
            column           = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing   = 0;
            column.Alignment = 1;
            column.Sizing    = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewActivity));
            AppendColumn(column);
            ActivityColumn = column;
        }
示例#2
0
        ArrayList SaveStatus()
        {
            ArrayList list = new ArrayList();

            Gtk.TreeIter it;
            if (!store.GetIterFirst(out it))
            {
                return(list);
            }

            do
            {
                SaveStatus(list, "", it);
            } while (store.IterNext(ref it));

            return(list);
        }
示例#3
0
        protected virtual void OnCompleteRadiobuttonToggled(object sender, System.EventArgs e)
        {
            if (completeRadiobutton.Active)
            {
                Gtk.TreeIter iter;

                if (group_store.IterNChildren() > 0)
                {
                    group_store.GetIterFirst(out iter);
                    group_store.SetValue(iter, 0, true);

                    while (group_store.IterNext(ref iter))
                    {
                        group_store.SetValue(iter, 0, true);
                    }
                }
            }
        }
            public bool MoveToRoot()
            {
                AssertIsValid();
                Gtk.TreeIter it;
                if (!store.GetIterFirst(out it))
                {
                    return(false);
                }

                MoveToIter(it);
                return(true);
            }
示例#5
0
        public TreePosition GetChild(TreePosition pos, int index)
        {
            IterPos tpos = (IterPos)pos;

            if (tpos.LastChildIndex == index)
            {
                return(new IterPos(tpos.LastChildIter));
            }
            if (index == 0)
            {
                Gtk.TreeIter it;
                if (Tree.GetIterFirst(out it))
                {
                    tpos.LastChildIter  = it;
                    tpos.LastChildIndex = 0;
                    return(new IterPos(it));
                }
                else
                {
                    return(null);
                }
            }
            if (tpos.LastChildIndex == -1 || tpos.LastChildIndex > index)
            {
                Gtk.TreeIter it;
                if (Tree.IterNthChild(out it, index))
                {
                    tpos.LastChildIter  = it;
                    tpos.LastChildIndex = index;
                    return(new IterPos(it));
                }
                else
                {
                    return(null);
                }
            }

            // tpos.LastChildIndex < index

            Gtk.TreeIter iter = tpos.LastChildIter;
            for (int n = tpos.LastChildIndex; n < index; n++)
            {
                if (!Tree.IterNext(ref iter))
                {
                    return(null);
                }
            }
            tpos.LastChildIter  = iter;
            tpos.LastChildIndex = index;
            return(new IterPos(iter));
        }
示例#6
0
        public ChatTreeView()
        {
            ThemeSettings = new ThemeSettings();
            TreeStore = new Gtk.TreeStore(typeof(ChatView));
            TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending);
            TreeStore.SetSortFunc(0, SortTreeStore);

            Model = TreeStore;
            HeadersVisible = false;
            BorderWidth = 0;
            ShowExpanders = false;
            LevelIndentation = 12;
            Selection.Mode = Gtk.SelectionMode.Browse;
            Selection.Changed += (sender, e) => {
                Gtk.TreeIter iter;
                if (!Selection.GetSelected(out iter) &&
                    TreeStore.GetIterFirst(out iter)) {
                    Selection.SelectIter(iter);
                    return;
                }
                var path = TreeStore.GetPath(iter);
                f_CurrentChatNumber = GetRowNumber(path);
            };

            var iconRenderer = new Gtk.CellRendererPixbuf();
            var column = new Gtk.TreeViewColumn(null, iconRenderer);
            column.Spacing = 0;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon));
            AppendColumn(column);

            var cellRenderer = new Gtk.CellRendererText() {
                Ellipsize = Pango.EllipsizeMode.End
            };
            column = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Expand = true;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName));
            AppendColumn(column);

            cellRenderer = new Gtk.CellRendererText();
            column = new Gtk.TreeViewColumn(null, cellRenderer);
            column.Spacing = 0;
            column.Alignment = 1;
            column.Sizing = Gtk.TreeViewColumnSizing.Autosize;
            column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewActivity));
            AppendColumn(column);
            ActivityColumn = column;
        }
示例#7
0
        /// <summary>
        /// Adds a person to a group and stores it in EDS
        /// </summary>
        public bool IsPersonInGroup(Person person)
        {
            Gtk.TreeIter iter;

            if (personTreeStore.GetIterFirst(out iter))
            {
                do
                {
                    Person iterPerson = (Person)personTreeStore.GetValue(iter, 0);
                    if (person.Id.CompareTo(iterPerson.Id) == 0)
                    {
                        return(true);
                    }
                } while(personTreeStore.IterNext(ref iter));
            }
            return(false);
        }
示例#8
0
        /// <summary>
        /// Reloads assemblies if they are modified after they are loaded in the SolidReflector.
        /// </summary>
        /// <param name="filepaths">Filepaths of the assemblies that will be monitored.</param>
        ///
        private void WatchFilesForChanges(string[] filepaths)
        {
            FileSystemWatcher        watcher;
            List <FileSystemWatcher> watchers = new List <FileSystemWatcher>();

            foreach (string filepath in filepaths)
            {
                if (File.Exists(filepath))
                {
                    watcher = new FileSystemWatcher(Path.GetDirectoryName(filepath));
                    watcher.NotifyFilter = NotifyFilters.LastWrite;

                    watcher.Changed += delegate(object sender, FileSystemEventArgs e) {
                        Gtk.TreeIter assemblyIter;
                        store.GetIterFirst(out assemblyIter);

                        foreach (string file in loadedAssemblies)
                        {
                            if (file == e.FullPath)
                            {
                                do
                                {
                                    AssemblyDefinition assDef = store.GetValue(assemblyIter, 0) as AssemblyDefinition;
                                    if (assDef.MainModule.FullyQualifiedName == file)
                                    {
                                        store.Remove(ref assemblyIter);
                                    }
                                } while (store.IterNext(ref assemblyIter));

                                AssemblyDefinition ad1 = AssemblyDefinition.ReadAssembly(file);
                                store.AppendValues(ad1);
                                LoadSelectedAssembliesTreePaths();
                            }
                        }
                    };

                    watcher.EnableRaisingEvents   = true;
                    watcher.IncludeSubdirectories = false;
                    watchers.Add(watcher);
                }
            }
        }