예제 #1
0
    def __init__(self, rep_out_path, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.repOutputPath = rep_out_path
        self.fileList = []
        self.ui = Ui_RepOutput()
        self.ui.setupUi(self)

        self.postSetup()
        self.process_clone()
예제 #2
0
    def __init__(self, clone_list, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.cloneList = clone_list
        self.fileList = []
        self.ui = Ui_RepOutput()
        self.ui.setupUi(self)

        self.postSetup()
        self.process_clone()
예제 #3
0
    def __init__(self, rep_out_path, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.repOutputPath = rep_out_path
        self.fileList = []
        self.ui = Ui_RepOutput()
        self.ui.setupUi(self)

        self.postSetup()
        self.process_clone()
예제 #4
0
class RepOutput(QtGui.QMainWindow):
    def __init__(self, clone_list, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.cloneList = clone_list
        self.fileList = []
        self.ui = Ui_RepOutput()
        self.ui.setupUi(self)

        self.postSetup()
        self.process_clone()

    def postSetup(self):
        self.ui.fileList.setColumnWidth(0,100)
        self.ui.fileList.setColumnWidth(1,200)
        self.ui.fileList.setColumnWidth(2,200)
        self.ui.fileList.setColumnWidth(4,100)
        self.ui.fileList.setColumnWidth(5,100)

        self.ui.cloneList.setColumnWidth(0,400)
        self.ui.cloneList.setColumnWidth(1,400)
        self.ui.cloneList.itemClicked.connect(self.onClick)

    def onClick(self):
        item = self.ui.cloneList.currentItem()
        clone = str(item.text(0))
        print clone
        cl1,cl2 = clone.split("\t")
        fname1,cl1 = cl1.split(":")
        start1,end1 = cl1.split("-")
        fname2,cl2 = cl2.split(":")
        start2,end2 = cl2.split("-")
#        fname1 = self.fileList[int(indx1)-1]
#        fname2 = self.fileList[int(indx2)-1]
        clone1 = fname1 + ":" + start1 + ":" + end1
        clone2 = fname2 + ":" + start2 + ":" + end2
        args = "./display_diff.py " + clone1 + " " + clone2
        print args
        os.system(args)
#        proc = Popen(args,shell=True,stdout=PIPE,stderr=PIPE)
#        print clone1
#        print clone2

    def contextMenuEvent(self,event):
        if event.reason() == event.Mouse:
          pos = event.globalPos()
          item = self.ui.cloneList.itemAt(pos)

          if pos is not None:
                menu = QMenu(self)
                menu.addAction(item.text(0))
                menu.popup(Qcpos)

          event.accept()

    def process_clone(self):

        for clone in self.cloneList:
            print clone
            metric,lhs_clone,rhs_clone = clone
            print lhs_clone
            print rhs_clone
            print metric
            tmp_clones = [lhs_clone,rhs_clone]

            for cl in tmp_clones:
                print cl
                listItem = QtGui.QTreeWidgetItem(self.ui.fileList)
                listItem.setText(0,cl.projId)
                listItem.setText(1,cl.origFile)
                listItem.setText(2,cl.diffFile)
                listItem.setText(3,cl.dev)
                listItem.setText(4,str(cl.commitDate))

            if int(metric) is not 0:
                listItem = QtGui.QTreeWidgetItem(self.ui.cloneList)
                clStr = "{0}:{1}-{2}\t{3}:{4}-{5}".format(
                        lhs_clone.diffFile,lhs_clone.startLine,lhs_clone.endLine,
                        rhs_clone.diffFile,rhs_clone.startLine,rhs_clone.endLine)
                listItem.setText(0,clStr)
                listItem.setText(1,str(metric))

    def closeDisplay(self):
        sys.exit()
예제 #5
0
class RepOutput(QtGui.QMainWindow):
    def __init__(self, rep_out_path, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.repOutputPath = rep_out_path
        self.fileList = []
        self.ui = Ui_RepOutput()
        self.ui.setupUi(self)

        self.postSetup()
        self.process_clone()

    def postSetup(self):
        self.ui.fileList.setColumnWidth(0, 100)
        self.ui.fileList.setColumnWidth(1, 600)

        self.ui.cloneList.setColumnWidth(0, 200)
        self.ui.cloneList.setColumnWidth(1, 400)
        self.ui.cloneList.itemClicked.connect(self.onClick)

    def onClick(self):
        item = self.ui.cloneList.currentItem()
        clone = str(item.text(1))
        #        print clone
        cl1, cl2 = clone.split("\t")
        indx1, cl1 = cl1.split(".")
        start1, end1 = cl1.split("-")
        indx2, cl2 = cl2.split(".")
        start2, end2 = cl2.split("-")
        fname1 = self.fileList[int(indx1) - 1]
        fname2 = self.fileList[int(indx2) - 1]
        clone1 = fname1 + ":" + start1 + ":" + end1
        clone2 = fname2 + ":" + start2 + ":" + end2
        args = "./display_diff.py " + clone1 + " " + clone2
        print args
        os.system(args)


#        print clone1
#        print clone2

    def contextMenuEvent(self, event):
        if event.reason() == event.Mouse:
            pos = event.globalPos()
            item = self.ui.cloneList.itemAt(pos)

            if pos is not None:
                menu = QMenu(self)
                menu.addAction(item.text(0))
                menu.popup(Qcpos)

            event.accept()

    def process_clone(self):
        rep_output = RepertoireOutput()
        print self.repOutputPath
        rep_output.loadFromFile(self.repOutputPath, 1)

        for index, fileName in rep_output.getFileIter():
            if config.DEBUG == 2:
                print "fileName =" + fileName
            self.fileList.append(fileName)
            listItem = QtGui.QTreeWidgetItem(self.ui.fileList)
            listItem.setText(0, str(index))
            listItem.setText(1, fileName)

        for indx, (cl1, cl2, metric) in rep_output.getCloneIter():
            fidx1, start1, end1 = cl1
            fidx2, start2, end2 = cl2
            metric = int(metric)
            #            metric = max(end1 - start1, end2 - start2)

            if (config.DEBUG == 2):
                print line
                print indx + " " + cl1 + " " + cl2
                print metric

            if metric:
                listItem = QtGui.QTreeWidgetItem(self.ui.cloneList)
                listItem.setText(0, str(indx))
                listItem.setText(
                    1,
                    "{0}.{1}-{2}\t{3}.{4}-{5}".format(fidx1, start1, end1,
                                                      fidx2, start2, end2))
                listItem.setText(2, str(metric))

    def closeDisplay(self):
        sys.exit()
예제 #6
0
class RepOutput(QtGui.QMainWindow):
    def __init__(self, rep_out_path, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.repOutputPath = rep_out_path
        self.fileList = []
        self.ui = Ui_RepOutput()
        self.ui.setupUi(self)

        self.postSetup()
        self.process_clone()

    def postSetup(self):
        self.ui.fileList.setColumnWidth(0,100)
        self.ui.fileList.setColumnWidth(1,600)

        self.ui.cloneList.setColumnWidth(0,200)
        self.ui.cloneList.setColumnWidth(1,400)
        self.ui.cloneList.itemClicked.connect(self.onClick)

    def onClick(self):
        item = self.ui.cloneList.currentItem()
        clone = str(item.text(1))
#        print clone
        cl1,cl2 = clone.split("\t")
        indx1,cl1 = cl1.split(".")
        start1,end1 = cl1.split("-")
        indx2,cl2 = cl2.split(".")
        start2,end2 = cl2.split("-")
        fname1 = self.fileList[int(indx1)-1]
        fname2 = self.fileList[int(indx2)-1]
        clone1 = fname1 + ":" + start1 + ":" + end1
        clone2 = fname2 + ":" + start2 + ":" + end2
        args = "./display_diff.py " + clone1 + " " + clone2
        print args
        os.system(args)
#        print clone1
#        print clone2

    def contextMenuEvent(self,event):
        if event.reason() == event.Mouse:
          pos = event.globalPos()
          item = self.ui.cloneList.itemAt(pos)

          if pos is not None:
                menu = QMenu(self)
                menu.addAction(item.text(0))
                menu.popup(Qcpos)

          event.accept()

    def process_clone(self):
        rep_output = RepertoireOutput()
        print self.repOutputPath
        rep_output.loadFromFile(self.repOutputPath,1)

        for index, fileName in rep_output.getFileIter():
            if config.DEBUG == 2:
                print "fileName =" + fileName
            self.fileList.append(fileName)
            listItem = QtGui.QTreeWidgetItem(self.ui.fileList)
            listItem.setText(0,str(index))
            listItem.setText(1,fileName)

        for indx,(cl1, cl2,metric) in rep_output.getCloneIter():
            fidx1, start1, end1 = cl1
            fidx2, start2, end2 = cl2
            metric = int(metric)
#            metric = max(end1 - start1, end2 - start2)
            

            if (config.DEBUG == 2):
                print line
                print indx + " " + cl1 + " " + cl2
                print metric

            if metric:
                listItem = QtGui.QTreeWidgetItem(self.ui.cloneList)
                listItem.setText(0, str(indx))
                listItem.setText(1,"{0}.{1}-{2}\t{3}.{4}-{5}".format(
                    fidx1, start1, end1, fidx2, start2, end2))
                listItem.setText(2,str(metric))

    def closeDisplay(self):
        sys.exit()