예제 #1
0
        public CoverageView(QWidget parent, String fileName) : base(parent)
        {
            SetRootIsDecorated(true);
            AddColumn("Classes");
            AddColumn("Lines Hit");
            AddColumn("Lines Missed");
            AddColumn("Coverage");

            sourceViews = new Hashtable();

            // TODO: Why the cast ?
            SetColumnAlignment(1, (int)Qt.AlignmentFlags.AlignCenter);
            SetColumnAlignment(2, (int)Qt.AlignmentFlags.AlignCenter);
            SetColumnAlignment(3, (int)Qt.AlignmentFlags.AlignCenter);

            QObject.Connect(this, SIGNAL("doubleClicked(QListViewItem)"),
                            this, SLOT("OnDoubleClick(QListViewItem)"));

            QObject.Connect(this,SIGNAL("expanded(QListViewItem)"),
                            this,SLOT("OnExpanded(QListViewItem)"));

            // TODO: This is not supported by current Qt#
            try {
                QObject.Connect(this,SIGNAL("contextMenuRequested(QListViewItem,QPoint,int)"),
                                this,SLOT("OnContextMenu(QListViewItem, QPoint, Int32)"));
            }
            catch (Exception) {
            }

            QPixmap namespaceOpenPixmap   = new QPixmap(namespace_open_xpm);
            QPixmap namespaceClosedPixmap = new QPixmap(namespace_closed_xpm);
            QPixmap classPixmap           = new QPixmap(class_xpm);

            model = new CoverageModel();
            foreach (string filter in DEFAULT_FILTERS)
            {
                model.AddFilter(filter);
            }
            model.ReadFromFile(fileName);

            QListViewItem rootItem = new TreeItem(this,"PROJECT",model);

            rootItem.SetOpen(true);

            Hashtable classes2 = model.Classes;

            namespaces = new Hashtable();

            foreach (string name in classes2.Keys)
            {
                ClassCoverageItem klass = (ClassCoverageItem)classes2 [name];

                if (klass.filtered)
                {
                    continue;
                }

                string        namespace2 = klass.name_space;
                NamespaceItem nsItem     = (NamespaceItem)namespaces [namespace2];
                if (nsItem == null)
                {
                    // Create namespaces
                    String        nsPrefix   = "";
                    QListViewItem parentItem = rootItem;
                    foreach (String nsPart in namespace2.Split('.'))
                    {
                        if (nsPrefix == "")
                        {
                            nsPrefix = nsPart;
                        }
                        else
                        {
                            nsPrefix = nsPrefix + "." + nsPart;
                        }

                        NamespaceCoverageItem nsModel = (NamespaceCoverageItem)model.Namespaces [nsPrefix];
                        if (nsModel.filtered)
                        {
                            break;
                        }

                        nsItem = (NamespaceItem)namespaces [nsPrefix];
                        if (nsItem == null)
                        {
                            nsItem = new NamespaceItem(parentItem,nsPrefix,
                                                       nsModel);
                            nsItem.SetOpen(true);
                            nsItem.SetPixmap(0,namespaceOpenPixmap);
                            namespaces [nsPrefix] = nsItem;
                        }
                        parentItem = nsItem;
                    }
                }

                if (nsItem != null)
                {
                    ClassItem classItem = new ClassItem(nsItem,klass.name,klass);
                    classItem.SetPixmap(0,classPixmap);
                    if (klass.ChildCount > 0)
                    {
                        classItem.SetExpandable(true);
                    }
                }
            }
        }
예제 #2
0
	public CoverageView (string fileName, ProgressBar status)
	{
		TreeStore store = new TreeStore (typeof (string), typeof (string), typeof (string), typeof (string), typeof (object));
		tree = new TreeView (store);

		CellRendererText renderer = new CellRendererText ();
		// LAME: Why is this property a float instead of a double ?
		renderer.Xalign = 0.5f;

		tree.AppendColumn ("Classes", new CellRendererText (), "text", 0);
		tree.AppendColumn ("Lines Hit", renderer, "text", 1);
		tree.AppendColumn ("Lines Missed", renderer, "text", 2);
		tree.AppendColumn ("Coverage", renderer, "text", 3);

		tree.GetColumn (0).Resizable = true;
		tree.GetColumn (1).Alignment = 0.0f;
		tree.GetColumn (1).Resizable = true;
		tree.GetColumn (2).Alignment = 0.0f;
		tree.GetColumn (2).Resizable = true;
		tree.GetColumn (3).Alignment = 0.0f;
		tree.GetColumn (3).Resizable = true;

		tree.HeadersVisible = true;

		model = new CoverageModel ();
		foreach (string filter in DEFAULT_FILTERS) {
			model.AddFilter (filter);
		}
		this.status = status;
		model.Progress += Progress;
		model.ReadFromFile (fileName);

		TreeItem root = new TreeItem (store, null, model, "PROJECT");

		Hashtable classes2 = model.Classes;

		namespaces = new Hashtable ();
		string[] sorted_names = new string [classes2.Count];
		classes2.Keys.CopyTo (sorted_names, 0);
		Array.Sort (sorted_names);
		Progress ("Building tree", 0.95);
		foreach (string name in sorted_names) {
			ClassCoverageItem klass = (ClassCoverageItem)classes2 [name];

			if (klass.filtered)
				continue;

			string namespace2 = klass.name_space;
			TreeItem nsItem = (TreeItem)namespaces [namespace2];
			if (nsItem == null) {
				nsItem = new TreeItem (store, root, (CoverageItem)model.Namespaces [namespace2], namespace2);
				//				nsItem.SetPixmap (0, namespaceOpenPixmap);
				namespaces [namespace2] = nsItem;
			}

			if (nsItem.model.filtered)
				continue;

			ClassItem classItem = new ClassItem (store, nsItem, klass, klass.name);

			// We should create the method nodes only when the class item
			// is opened
			
			foreach (MethodCoverageItem method in klass.Methods) {
				if (method.filtered)
					continue;

				string title = method.Name;
				if (title.Length > 64)
					title = title.Substring (0, 63) + "...)";

				new MethodItem (store, classItem, classItem, method, title);
			}
		}

		tree.ExpandRow (store.GetPath (root.Iter), false);

		// it becomes very hard to navigate if everything is expanded
		//foreach (string ns in namespaces.Keys)
		//	tree.ExpandRow (store.GetPath (((TreeItem)namespaces [ns]).Iter), false);

		tree.ButtonPressEvent += new ButtonPressEventHandler (OnButtonPress);
		tree.Selection.Mode = SelectionMode.Single;

		source_views = new Hashtable ();
		window_maps = new Hashtable ();
		Progress ("Done", 1.0);
		// LAME: Why doesn't widgets visible by default ???
		tree.Show ();
	}
예제 #3
0
        public CoverageView(string fileName, ProgressBar status)
        {
            store = new TreeStore (typeof(string), typeof(string), typeof(string), typeof(string), typeof(object));
            tree = new TreeView (store);

            CellRendererText renderer = new CellRendererText ();
            CellRendererText coverageRenderer = new CellRendererText ();
            // LAME: Why is this property a float instead of a double ?
            renderer.Xalign = 0.5f;

            tree.AppendColumn ("Classes", new CellRendererText (), "text", 0);
            tree.AppendColumn ("Lines Hit", renderer, "text", 1);
            tree.AppendColumn ("Lines Missed", renderer, "text", 2);
            tree.AppendColumn ("Coverage", coverageRenderer, "text", 3);

            tree.GetColumn (0).Resizable = true;
            tree.GetColumn (1).Alignment = 0.0f;
            tree.GetColumn (1).Resizable = true;
            tree.GetColumn (2).Alignment = 0.0f;
            tree.GetColumn (2).Resizable = true;
            tree.GetColumn (3).Alignment = 0.0f;
            tree.GetColumn (3).Resizable = true;
            tree.GetColumn (3).SetCellDataFunc (coverageRenderer, new TreeCellDataFunc (RenderCoverage));

            tree.HeadersVisible = true;

            model = new CoverageModel ();
            foreach (string filter in DEFAULT_FILTERS) {
                model.AddFilter (filter);
            }
            this.status = status;
            model.Progress += Progress;
            model.ReadFromFile (fileName);

            TreeItem root = new TreeItem (store, null, model, "PROJECT");

            Hashtable classes2 = model.Classes;

            namespaces = new Hashtable ();
            string[] sorted_names = new string[classes2.Count];
            classes2.Keys.CopyTo (sorted_names, 0);
            Array.Sort (sorted_names);
            Progress ("Building tree", 0.95);
            foreach (string name in sorted_names) {
                ClassCoverageItem klass = (ClassCoverageItem)classes2[name];

                if (klass.filtered)
                    continue;

                string namespace2 = klass.name_space;
                TreeItem nsItem = (TreeItem)namespaces[namespace2];
                if (nsItem == null) {
                    nsItem = new TreeItem (store, root, (CoverageItem)model.Namespaces[namespace2], namespace2);
                    //				nsItem.SetPixmap (0, namespaceOpenPixmap);
                    namespaces[namespace2] = nsItem;
                }

                if (nsItem.model.filtered)
                    continue;

                ClassItem classItem = new ClassItem (store, nsItem, klass, klass.name);

                if (klass.ChildCount != 0) {
                    TreeIter treeIter = store.AppendNode (classItem.iter);
                    store.SetValues (treeIter, "<loading>");
                }
            }

            tree.ExpandRow (store.GetPath (root.Iter), false);

            // it becomes very hard to navigate if everything is expanded
            //foreach (string ns in namespaces.Keys)
            //	tree.ExpandRow (store.GetPath (((TreeItem)namespaces [ns]).Iter), false);

            tree.RowExpanded += new RowExpandedHandler (OnRowExpanded);
            tree.RowCollapsed += new RowCollapsedHandler (OnRowCollapsed);
            tree.ButtonPressEvent += new ButtonPressEventHandler (OnButtonPress);
            tree.Selection.Mode = SelectionMode.Single;

            Progress ("Done", 1.0);
            // LAME: Why doesn't widgets visible by default ???
            tree.Show ();
        }
예제 #4
0
        public CoverageView(string fileName, ProgressBar status)
        {
            store = new TreeStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(object));
            tree  = new TreeView(store);

            CellRendererText renderer         = new CellRendererText();
            CellRendererText coverageRenderer = new CellRendererText();

            // LAME: Why is this property a float instead of a double ?
            renderer.Xalign = 0.5f;

            tree.AppendColumn("Classes", new CellRendererText(), "text", 0);
            tree.AppendColumn("Lines Hit", renderer, "text", 1);
            tree.AppendColumn("Lines Missed", renderer, "text", 2);
            tree.AppendColumn("Coverage", coverageRenderer, "text", 3);

            tree.GetColumn(0).Resizable = true;
            tree.GetColumn(1).Alignment = 0.0f;
            tree.GetColumn(1).Resizable = true;
            tree.GetColumn(2).Alignment = 0.0f;
            tree.GetColumn(2).Resizable = true;
            tree.GetColumn(3).Alignment = 0.0f;
            tree.GetColumn(3).Resizable = true;
            tree.GetColumn(3).SetCellDataFunc(coverageRenderer, new TreeCellDataFunc(RenderCoverage));

            tree.HeadersVisible = true;

            model = new CoverageModel();
            foreach (string filter in DEFAULT_FILTERS)
            {
                model.AddFilter(filter);
            }
            this.status     = status;
            model.Progress += Progress;
            model.ReadFromFile(fileName);

            TreeItem root = new TreeItem(store, null, model, "PROJECT");

            Hashtable classes2 = model.Classes;

            namespaces = new Hashtable();
            string[] sorted_names = new string [classes2.Count];
            classes2.Keys.CopyTo(sorted_names, 0);
            Array.Sort(sorted_names);
            Progress("Building tree", 0.95);
            foreach (string name in sorted_names)
            {
                ClassCoverageItem klass = (ClassCoverageItem)classes2 [name];

                if (klass.filtered)
                {
                    continue;
                }

                string   namespace2 = klass.name_space;
                TreeItem nsItem     = (TreeItem)namespaces [namespace2];
                if (nsItem == null)
                {
                    nsItem = new TreeItem(store, root, (CoverageItem)model.Namespaces [namespace2], namespace2);
                    //				nsItem.SetPixmap (0, namespaceOpenPixmap);
                    namespaces [namespace2] = nsItem;
                }

                if (nsItem.model.filtered)
                {
                    continue;
                }

                ClassItem classItem = new ClassItem(store, nsItem, klass, klass.name);

                if (klass.ChildCount != 0)
                {
                    TreeIter treeIter = store.AppendNode(classItem.iter);
                    store.SetValues(treeIter, "<loading>");
                }
            }

            tree.ExpandRow(store.GetPath(root.Iter), false);

            // it becomes very hard to navigate if everything is expanded
            //foreach (string ns in namespaces.Keys)
            //	tree.ExpandRow (store.GetPath (((TreeItem)namespaces [ns]).Iter), false);

            tree.RowExpanded      += new RowExpandedHandler(OnRowExpanded);
            tree.RowCollapsed     += new RowCollapsedHandler(OnRowCollapsed);
            tree.ButtonPressEvent += new ButtonPressEventHandler(OnButtonPress);
            tree.Selection.Mode    = SelectionMode.Single;

            source_views = new Hashtable();
            window_maps  = new Hashtable();
            Progress("Done", 1.0);
            // LAME: Why doesn't widgets visible by default ???
            tree.Show();
        }
예제 #5
0
        public CoverageView(QWidget parent, String fileName)
            : base(parent)
        {
            SetRootIsDecorated (true);
            AddColumn ("Classes");
            AddColumn ("Lines Hit");
            AddColumn ("Lines Missed");
            AddColumn ("Coverage");

            sourceViews = new Hashtable ();

            // TODO: Why the cast ?
            SetColumnAlignment (1, (int)Qt.AlignmentFlags.AlignCenter);
            SetColumnAlignment (2, (int)Qt.AlignmentFlags.AlignCenter);
            SetColumnAlignment (3, (int)Qt.AlignmentFlags.AlignCenter);

            QObject.Connect (this, SIGNAL ("doubleClicked(QListViewItem)"),
                         this, SLOT ("OnDoubleClick(QListViewItem)"));

            QObject.Connect (this, SIGNAL ("expanded(QListViewItem)"),
                         this, SLOT ("OnExpanded(QListViewItem)"));

            // TODO: This is not supported by current Qt#
            try {
            QObject.Connect (this, SIGNAL ("contextMenuRequested(QListViewItem,QPoint,int)"),
                             this, SLOT ("OnContextMenu(QListViewItem, QPoint, Int32)"));
            }
            catch (Exception) {
            }

            QPixmap namespaceOpenPixmap = new QPixmap (namespace_open_xpm);
            QPixmap namespaceClosedPixmap = new QPixmap (namespace_closed_xpm);
            QPixmap classPixmap = new QPixmap (class_xpm);

            model = new CoverageModel ();
            foreach (string filter in DEFAULT_FILTERS) {
            model.AddFilter (filter);
            }
            model.ReadFromFile (fileName);

            QListViewItem rootItem = new TreeItem (this, "PROJECT", model);
            rootItem.SetOpen (true);

            Hashtable classes2 = model.Classes;

            namespaces = new Hashtable ();

            foreach (string name in classes2.Keys) {
            ClassCoverageItem klass = (ClassCoverageItem)classes2 [name];

            if (klass.filtered)
                continue;

            string namespace2 = klass.name_space;
            NamespaceItem nsItem = (NamespaceItem)namespaces [namespace2];
            if (nsItem == null) {
                // Create namespaces
                String nsPrefix = "";
                QListViewItem parentItem = rootItem;
                foreach (String nsPart in namespace2.Split ('.')) {
                    if (nsPrefix == "")
                        nsPrefix = nsPart;
                    else
                        nsPrefix = nsPrefix + "." + nsPart;

                    NamespaceCoverageItem nsModel = (NamespaceCoverageItem)model.Namespaces [nsPrefix];
                    if (nsModel.filtered)
                        break;

                    nsItem = (NamespaceItem)namespaces [nsPrefix];
                    if (nsItem == null) {
                        nsItem = new NamespaceItem (parentItem, nsPrefix,
                                                    nsModel);
                        nsItem.SetOpen (true);
                        nsItem.SetPixmap (0, namespaceOpenPixmap);
                        namespaces [nsPrefix] = nsItem;
                    }
                    parentItem = nsItem;
                }
            }

            if (nsItem != null) {
                ClassItem classItem = new ClassItem (nsItem, klass.name, klass);
                classItem.SetPixmap (0, classPixmap);
                if (klass.ChildCount > 0)
                    classItem.SetExpandable (true);
            }
            }
        }