def __init__(self,
              parent,
              afefuc,
              item=None):  #item[1] is a testCase object
     self.parent = parent
     self.dialog = QtGui.QDialog()
     self.form = Ui_TestCaseForm()
     self.afefuc = afefuc
     self.item = item[1]
     self.item_original = item[0]
Example #2
0
	def __init__(self, parent, afefuc, item=None): #item[1] is a testCase object
		self.parent = parent
		self.dialog = QtGui.QDialog()
		self.form = Ui_TestCaseForm()
		self.afefuc = afefuc
		self.item = item[1]
		self.item_original = item[0]
class TestCaseFormWrapper():
    def __init__(self,
                 parent,
                 afefuc,
                 item=None):  #item[1] is a testCase object
        self.parent = parent
        self.dialog = QtGui.QDialog()
        self.form = Ui_TestCaseForm()
        self.afefuc = afefuc
        self.item = item[1]
        self.item_original = item[0]

    def load(self):
        self.form.titleEdit.setText(self.item.title)
        self.form.idEdit.setText(self.item.identifier)

        if self.item.uc_ref is not None:
            index = self.form.ucChoice.findText(self.item.uc_ref.identifier)
            if index != -1:
                self.form.ucChoice.setCurrentIndex(index)

    def show(self):
        self.form.setupUi(self.dialog)
        self.form.ucChoice.addItems(["no use case reference"])

        for usecase in self.afefuc['project'].ucspec.usecases:
            self.form.ucChoice.addItem(usecase.identifier, usecase)

        if self.item_original is not None: self.load()

        testIndex = self.form.ucChoice.findText('BC_001')
        self.scrollLayout = QtGui.QFormLayout()
        self.scrollWidget = QtGui.QWidget()
        self.scrollWidget.setLayout(self.scrollLayout)
        self.scrollArea = QtGui.QScrollArea()
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setWidget(self.scrollWidget)

        QtCore.QObject.connect(self.form.boxButton,
                               QtCore.SIGNAL(_fromUtf8("accepted()")),
                               self.clickedOKButton)
        QtCore.QObject.connect(self.form.boxButton,
                               QtCore.SIGNAL(_fromUtf8("rejected()")),
                               self.clickedCancelButton)
        QtCore.QObject.connect(self.form.insertStepButton,
                               QtCore.SIGNAL(_fromUtf8("clicked()")),
                               self.clickedInsertStepButton)
        QtCore.QObject.connect(
            self.form.ucChoice,
            QtCore.SIGNAL(_fromUtf8("currentIndexChanged(int)")),
            self.choseUseCase)
        QtCore.QObject.connect(self.form.idEdit,
                               QtCore.SIGNAL(_fromUtf8("editingFinished()")),
                               self.editingFinishedIdEdit)
        QtCore.QObject.connect(self.form.titleEdit,
                               QtCore.SIGNAL(_fromUtf8("editingFinished()")),
                               self.editingFinishedTitleEdit)
        QtCore.QObject.connect(self.form.deleteButton,
                               QtCore.SIGNAL(_fromUtf8("clicked()")),
                               self.clickedDeleteButton)
        QtCore.QObject.connect(self.form.moveUpButton,
                               QtCore.SIGNAL(_fromUtf8("clicked()")),
                               self.clickedMoveUpButton)
        QtCore.QObject.connect(self.form.moveDownButton,
                               QtCore.SIGNAL(_fromUtf8("clicked()")),
                               self.clickedMoveDownButton)

        self.modelTC = ScenarioTableModel(self.form.stepView, self.afefuc,
                                          (self.item_original, self.item))
        self.form.stepView.setModel(self.modelTC)

        self.cted = CompleteTextEditDelegate(self.form.stepView, self.afefuc,
                                             self.item)
        self.cbd = ComboBoxDelegate(self.form.stepView, self.item)

        self.form.stepView.setItemDelegateForColumn(
            1, self.cted)  #garbage collector won't cause segfault
        self.form.stepView.setItemDelegateForColumn(2, self.cbd)

        self.form.stepView.horizontalHeader().setResizeMode(
            0, QtGui.QHeaderView.ResizeToContents)
        self.form.stepView.horizontalHeader().setResizeMode(
            1, QtGui.QHeaderView.Stretch)
        self.form.stepView.horizontalHeader().setResizeMode(
            2, QtGui.QHeaderView.Stretch)
        self.form.stepView.setColumnWidth(1, 2)

        self.dialog.exec_()

    def editingFinishedIdEdit(self):
        self.item.identifier = unicode(self.form.idEdit.text().toUtf8(),
                                       'utf-8')

    def editingFinishedTitleEdit(self):
        self.item.title = unicode(self.form.titleEdit.text().toUtf8(), 'utf-8')

    def choseUseCase(self, arg):
        uc = self.form.ucChoice.itemData(arg).toPyObject()
        self.item.uc_ref = uc

        # change of related UC => delete all references to steps in previous UC
        for step in self.item.path:
            step.ucstep = None

    def clickedInsertStepButton(self):
        step = ''

        if len(self.form.stepView.selectedIndexes()) != 0:
            position = self.form.stepView.selectedIndexes()[0].row()
            self.modelTC.insertItem(step, position)
        else:
            self.modelTC.insertItem(step)

    def clickedDeleteButton(self):
        position = self.form.stepView.selectedIndexes()[0].row()
        self.modelTC.removeItem(position)

    def clickedMoveUpButton(self):
        position = self.form.stepView.selectedIndexes()[0].row()
        self.modelTC.movePositionUp(position)

    def clickedMoveDownButton(self):
        position = self.form.stepView.selectedIndexes()[0].row()
        self.modelTC.movePositionDown(position)

    def getTextAttribute(self, node):
        if node.attributes:
            for i in range(node.attributes.length):
                if node.attributes.item(i).name == 'value':
                    return node.attributes.item(i).value

    def getCurrentOptions(self, myList):
        toReturn = []
        for elem in myList:
            toReturn.append(elem[0])
        return toReturn

    def get_data(self, model):
        self.currentOptions = self.getCurrentOptions(
            self.completionInformation)
        model.setStringList(self.currentOptions)
        print self.getCurrentOptions(self.completionInformation)

    def createMenu(self):
        exitAction = QtGui.QAction("Exit", self)
        exitAction.triggered.connect(QtGui.qApp.quit)
        fileMenu = self.menuBar().addMenu("File")
        fileMenu.addAction(exitAction)

    def modelFromFile(self, fileName):
        f = QtCore.QFile(fileName)
        if not f.open(QtCore.QFile.ReadOnly):
            return QtGui.QStringListModel(self.completer)

        QtGui.QApplication.setOverrideCursor(
            QtGui.QCursor(QtCore.Qt.WaitCursor))
        words = []

        while not f.atEnd():
            line = f.readLine().trimmed()
            if line.length() != 0:
                try:
                    line = str(line, encoding='ascii')
                except TypeError:
                    line = str(line)
                words.append(line)

        QtGui.QApplication.restoreOverrideCursor()
        return QtGui.QStringListModel(words, self.completer)

    def clickedCancelButton(self):
        self.dialog.close()

    def clickedOKButton(self):
        if isinstance(self.item_original, model.TestCase):
            self.parent.model.updateItem((self.item_original, self.item))
        else:
            self.parent.model.insertItem((self.item_original, self.item))

        self.dialog.close()
Example #4
0
class TestCaseFormWrapper():
	def __init__(self, parent, afefuc, item=None): #item[1] is a testCase object
		self.parent = parent
		self.dialog = QtGui.QDialog()
		self.form = Ui_TestCaseForm()
		self.afefuc = afefuc
		self.item = item[1]
		self.item_original = item[0]

	def load(self):
		self.form.titleEdit.setText(self.item.title)
		self.form.idEdit.setText(self.item.identifier)

		if self.item.uc_ref is not None:
			index = self.form.ucChoice.findText(self.item.uc_ref.identifier)
			if index != -1:
				self.form.ucChoice.setCurrentIndex(index)


	def show(self):
		self.form.setupUi(self.dialog)
		self.form.ucChoice.addItems(["no use case reference"])

		for usecase in self.afefuc['project'].ucspec.usecases:
			self.form.ucChoice.addItem(usecase.identifier, usecase)

		if self.item_original is not None: self.load()

		testIndex = self.form.ucChoice.findText('BC_001')
		self.scrollLayout = QtGui.QFormLayout()
		self.scrollWidget = QtGui.QWidget()
		self.scrollWidget.setLayout(self.scrollLayout)
		self.scrollArea = QtGui.QScrollArea()
		self.scrollArea.setWidgetResizable(True)
		self.scrollArea.setWidget(self.scrollWidget)

		QtCore.QObject.connect(self.form.boxButton, QtCore.SIGNAL(_fromUtf8("accepted()")), self.clickedOKButton)
		QtCore.QObject.connect(self.form.boxButton, QtCore.SIGNAL(_fromUtf8("rejected()")), self.clickedCancelButton)
		QtCore.QObject.connect(self.form.insertStepButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.clickedInsertStepButton)
		QtCore.QObject.connect(self.form.ucChoice, QtCore.SIGNAL(_fromUtf8("currentIndexChanged(int)")), self.choseUseCase)
		QtCore.QObject.connect(self.form.idEdit, QtCore.SIGNAL(_fromUtf8("editingFinished()")), self.editingFinishedIdEdit)
		QtCore.QObject.connect(self.form.titleEdit, QtCore.SIGNAL(_fromUtf8("editingFinished()")), self.editingFinishedTitleEdit)
		QtCore.QObject.connect(self.form.deleteButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.clickedDeleteButton)
		QtCore.QObject.connect(self.form.moveUpButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.clickedMoveUpButton)
		QtCore.QObject.connect(self.form.moveDownButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.clickedMoveDownButton)

		self.modelTC = ScenarioTableModel(self.form.stepView, self.afefuc, (self.item_original, self.item))
		self.form.stepView.setModel(self.modelTC)

		self.cted = CompleteTextEditDelegate(self.form.stepView, self.afefuc, self.item)
		self.cbd = ComboBoxDelegate(self.form.stepView, self.item)

		self.form.stepView.setItemDelegateForColumn(1, self.cted) #garbage collector won't cause segfault
		self.form.stepView.setItemDelegateForColumn(2, self.cbd)
		
		self.form.stepView.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.ResizeToContents)
		self.form.stepView.horizontalHeader().setResizeMode(1, QtGui.QHeaderView.Stretch)
		self.form.stepView.horizontalHeader().setResizeMode(2, QtGui.QHeaderView.Stretch)
		self.form.stepView.setColumnWidth(1, 2)

		self.dialog.exec_()

	def editingFinishedIdEdit(self):
		self.item.identifier = unicode(self.form.idEdit.text().toUtf8(), 'utf-8')

	def editingFinishedTitleEdit(self):
		self.item.title = unicode(self.form.titleEdit.text().toUtf8(), 'utf-8')

	def choseUseCase(self, arg):
		uc = self.form.ucChoice.itemData(arg).toPyObject()
		self.item.uc_ref = uc

		# change of related UC => delete all references to steps in previous UC
		for step in self.item.path:
			step.ucstep = None

	def clickedInsertStepButton(self):
		step = ''

		if len(self.form.stepView.selectedIndexes()) != 0:
			position = self.form.stepView.selectedIndexes()[0].row()
			self.modelTC.insertItem(step, position)
		else:
			self.modelTC.insertItem(step)

	def clickedDeleteButton(self):
		position = self.form.stepView.selectedIndexes()[0].row()
		self.modelTC.removeItem(position)

	def clickedMoveUpButton(self):
		position = self.form.stepView.selectedIndexes()[0].row()
		self.modelTC.movePositionUp(position)

	def clickedMoveDownButton(self):
		position = self.form.stepView.selectedIndexes()[0].row()
		self.modelTC.movePositionDown(position)

	def getTextAttribute(self, node):
		if node.attributes:
			for i in range(node.attributes.length):
				if node.attributes.item(i).name == 'value':
					return node.attributes.item(i).value

	def getCurrentOptions(self, myList):
		toReturn = []
		for elem in myList:
			toReturn.append(elem[0])
		return toReturn

	def get_data(self, model):
		self.currentOptions = self.getCurrentOptions(self.completionInformation)
		model.setStringList(self.currentOptions)
		print self.getCurrentOptions(self.completionInformation)

	def createMenu(self):
		exitAction = QtGui.QAction("Exit", self)
		exitAction.triggered.connect(QtGui.qApp.quit)
		fileMenu = self.menuBar().addMenu("File")
		fileMenu.addAction(exitAction)

	def modelFromFile(self, fileName):
		f = QtCore.QFile(fileName)
		if not f.open(QtCore.QFile.ReadOnly):
			return QtGui.QStringListModel(self.completer)

		QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))
		words = []

		while not f.atEnd():
			line = f.readLine().trimmed()
			if line.length() != 0:
				try:
					line = str(line, encoding='ascii')
				except TypeError:
					line = str(line)
				words.append(line)

		QtGui.QApplication.restoreOverrideCursor()
		return QtGui.QStringListModel(words, self.completer)

	def clickedCancelButton(self):
		self.dialog.close()

	def clickedOKButton(self):
		if isinstance(self.item_original, model.TestCase):
			self.parent.model.updateItem((self.item_original, self.item))
		else:
			self.parent.model.insertItem((self.item_original, self.item))

		self.dialog.close()