QWidget * GTUtilsMdi::findWindow(HI::GUITestOpStatus &os, const QString &windowName, const GTGlobals::FindOptions &options) { Q_UNUSED(os); GT_CHECK_RESULT(windowName.isEmpty() == false, "windowname is empty", NULL); MainWindow *mw = AppContext::getMainWindow(); GT_CHECK_RESULT(mw != NULL, "MainWindow == NULL", NULL); QList<MWMDIWindow *> mdiWindows = mw->getMDIManager()->getWindows(); foreach (MWMDIWindow *w, mdiWindows) { QString mdiTitle = w->windowTitle(); switch (options.matchPolicy) { case Qt::MatchExactly: if (mdiTitle == windowName) { return w; } break; case Qt::MatchContains: if (mdiTitle.contains(windowName)) { return w; } break; default: GT_CHECK_RESULT(false, "Not implemented", NULL); } }
bool GTUtilsMSAEditorSequenceArea::isSequenceHightighted(HI::GUITestOpStatus &os, const QString &seqName){ QStringList names = getVisibleNames(os); GT_CHECK_RESULT(names.contains(seqName), QString("sequence with name %1 not found").arg(seqName), false); int row = 0; while (names[row] != seqName) { row++; } QPoint center = convertCoordinates(os, QPoint(-5, row)); QWidget* nameList = GTWidget::findWidget(os, "msa_editor_name_list"); GT_CHECK_RESULT(nameList !=NULL, "name list is NULL", false); int initCoord = center.y() - getRowHeight(os)/2; int finalCoord = center.y() + getRowHeight(os)/2; for (int i = initCoord; i<finalCoord; i++){ QPoint local = nameList->mapFromGlobal(QPoint(center.x(), i)); QColor c = GTWidget::getColor(os, nameList,local); QString name = c.name(); if(name == highlightningColorName){ return true; } } return false; }
QList<ADVSingleSequenceWidget*> GTUtilsProject::openFileExpectSequences(HI::GUITestOpStatus &os, const QString &path, const QString &fileName, const QList<QString> &seqNames) { QList<ADVSingleSequenceWidget*> result; GTUtilsDialog::waitForDialog(os, new SequenceReadingModeSelectorDialogFiller(os, SequenceReadingModeSelectorDialogFiller::Separate)); GTFileDialog::openFile(os, path, fileName); GTUtilsTaskTreeView::waitTaskFinished(os); GT_CHECK_OP_RESULT(os, "Error opening file!", QList<ADVSingleSequenceWidget*>()); GTGlobals::sleep(200); int seqWidgetNum = GTUtilsSequenceView::getSeqWidgetsNumber(os); GT_CHECK_OP_RESULT(os, "Error getting the number of sequence widgets!", QList<ADVSingleSequenceWidget*>()); GT_CHECK_RESULT(seqWidgetNum == seqNames.size(), QString("Expected number of sequences: %1, actual: %2!"). arg(seqNames.size()).arg(seqWidgetNum), QList<ADVSingleSequenceWidget*>()); for (int i = 0; i < seqNames.size(); ++i) { ADVSingleSequenceWidget *seqWidget = GTUtilsSequenceView::getSeqWidgetByNumber(os, i); GT_CHECK_OP_RESULT(os, QString("Error grtting sequence widget: %1!").arg(i), QList<ADVSingleSequenceWidget*>()); QString actualName = GTUtilsSequenceView::getSeqName(os, seqWidget); GT_CHECK_RESULT(seqNames.at(i) == actualName, QString("Unexpected sequence widget at position %1. Expected sequence name: %2, actual: %3!"). arg(i).arg(seqNames.at(i)).arg(actualName), QList<ADVSingleSequenceWidget*>()); result << seqWidget; } return result; }
Document *GTUtilsSharedDatabaseDocument::getDatabaseDocumentByName(HI::GUITestOpStatus &os, const QString &name) { Q_UNUSED(os); GT_CHECK_RESULT(!name.isEmpty(), "Name is empty", NULL); const QModelIndex databaseDocIndex = GTUtilsProjectTreeView::findIndex(os, name); GT_CHECK_RESULT(databaseDocIndex.isValid(), QString("Can't find the document with name '%1'").arg(name), NULL); return ProjectViewModel::toDocument(databaseDocIndex); }
QTabBar* GTTabWidget::getTabBar(GUITestOpStatus &os, QTabWidget* tabWidget){ Q_UNUSED(os) GT_CHECK_RESULT(tabWidget != NULL, "tabWidget is NULL", NULL); QList<QTabBar*> tabBars= tabWidget->findChildren<QTabBar*>(); int numToCheck = tabBars.size(); GT_CHECK_RESULT(numToCheck < 2, QString("too many tab bars found: ").arg(numToCheck), NULL); GT_CHECK_RESULT(numToCheck != 0, "tab bar not found", NULL); return tabBars.first(); }
bool GTUtilsAssemblyBrowser::hasReference(HI::GUITestOpStatus &os, AssemblyBrowserUi *assemblyBrowser) { Q_UNUSED(os); GT_CHECK_RESULT(NULL != assemblyBrowser, "Assembly browser is NULL", false); QSharedPointer<AssemblyModel> model = assemblyBrowser->getModel(); GT_CHECK_RESULT(!model.isNull(), "Assembly model is NULL", false); return model->hasReference(); }
QString GTUtilsAnnotationsTreeView::getQualifierValue(HI::GUITestOpStatus &os, const QString &qualName, const QString &parentName) { getItemCenter(os, parentName); QTreeWidgetItem* parent = findItem(os, parentName); GT_CHECK_RESULT(parent != NULL, "Parent item not found", ""); QTreeWidgetItem *qualItem = findItem(os, qualName, parent); GT_CHECK_RESULT(NULL != qualItem, "Qualifier item not found", ""); return qualItem->text(AnnotationsTreeView::COLUMN_VALUE); }
bool GTUtilsMSAEditorSequenceArea::offsetsVisible(HI::GUITestOpStatus &os) { QWidget *leftOffsetWidget = GTWidget::findWidget(os, "msa_editor_offsets_view_widget_left"); QWidget *rightOffsetWidget = GTWidget::findWidget(os, "msa_editor_offsets_view_widget_right"); GT_CHECK_RESULT((leftOffsetWidget != NULL) && (rightOffsetWidget != NULL), "offset widgets are NULL", false); GT_CHECK_RESULT(leftOffsetWidget->isVisible() == rightOffsetWidget->isVisible(), "offset widget visibility states are not the same", false); return leftOffsetWidget->isVisible(); }
QPoint GTTreeWidget::getItemCenter(GUITestOpStatus &os, QTreeWidgetItem* item) { GT_CHECK_RESULT(item != NULL, "item is NULL", QPoint()); QTreeWidget *treeWidget = item->treeWidget(); GT_CHECK_RESULT(treeWidget != NULL, "treeWidget is NULL", QPoint()); QPoint p = getItemRect(os, item).center(); return treeWidget->viewport()->mapToGlobal(p); }
int GTTabWidget::getTabNumByName(GUITestOpStatus &os, QTabWidget *tabWidget, QString tabName){ GT_CHECK_RESULT(tabWidget != NULL, "tabWidget is NULL", -1); QTabBar* tabBar = getTabBar(os, tabWidget); int num = -1; for(int i=0; i<tabBar->count(); i++){ QString text = tabBar->tabText(i); if(text == tabName){ num = -1; } } GT_CHECK_RESULT(num != -1, "tab " + tabName + " not found", -1); return num; }
bool GTUtilsAssemblyBrowser::hasReference(HI::GUITestOpStatus& os, QWidget* view) { Q_UNUSED(os); if (NULL == view) { view = GTUtilsMdi::activeWindow(os); } GT_CHECK_RESULT(NULL != view, "View is NULL", false); AssemblyBrowserUi* assemblyBrowser = view->findChild<AssemblyBrowserUi*>("assembly_browser_" + view->objectName()); GT_CHECK_RESULT(NULL != assemblyBrowser, "Assembly browser wasn't found", false); return hasReference(os, assemblyBrowser); }
QString GTUtilsMSAEditorSequenceArea::getSequenceData(HI::GUITestOpStatus &os, const QString &sequenceName) { Q_UNUSED(os); MSAEditorSequenceArea *sequenceArea = getSequenceArea(os); GT_CHECK_RESULT(NULL != sequenceArea, "Sequence area is NULL", ""); const QStringList names = getNameList(os); const int rowNumber = names.indexOf(sequenceName); GT_CHECK_RESULT(0 <= rowNumber, QString("Sequence '%1' not found").arg(sequenceName), ""); GTUtilsMsaEditor::clickSequenceName(os, sequenceName); GTKeyboardUtils::copy(os); return GTClipboard::text(os); }
QRect GTTreeWidget::getItemRect(GUITestOpStatus &os, QTreeWidgetItem* item) { GT_CHECK_RESULT(item != NULL, "treeWidgetItem is NULL", QRect()); QTreeWidget *treeWidget = item->treeWidget(); GT_CHECK_RESULT(treeWidget != NULL, "treeWidget is NULL", QRect()); expand(os, item); GT_CHECK_RESULT(item->isHidden() == false, "item is hidden", QRect()); QRect rect = treeWidget->visualItemRect(item); return rect; }
QToolButton* WizardFiller::getExpandButton(HI::GUITestOpStatus &os){ QToolButton* expandButton = NULL; QWidget* dialog = QApplication::activeModalWidget(); GT_CHECK_RESULT(dialog, "activeModalWidget is NULL",NULL); QWizard* wizard = qobject_cast<QWizard*>(dialog); GT_CHECK_RESULT(wizard, "activeModalWidget is not of wizard type",NULL); QList<QWidget*> widList = wizard->currentPage()->findChildren<QWidget*>(); QList<QToolButton*> plusList; foreach(QWidget* w, widList){ QToolButton* but = qobject_cast<QToolButton*>(w); if (but && but->text()=="+" && abs(but->rect().width()-19)<2) plusList.append(but); }
bool GTUtilsAssemblyBrowser::hasReference(HI::GUITestOpStatus& os, const QString &viewTitle) { Q_UNUSED(os); AssemblyBrowserUi* view = getView(os, viewTitle); GT_CHECK_RESULT(NULL != view, "Assembly browser wasn't found", false); return hasReference(os, view); }
QString GTUtilsMSAEditorSequenceArea::getSimilarityValue(HI::GUITestOpStatus &os, int row){ //bad sulution, but better then nothing MsaEditorSimilarityColumn* simCol = dynamic_cast<MsaEditorSimilarityColumn*>(GTWidget::findWidget(os, "msa_editor_similarity_column")); GT_CHECK_RESULT(simCol != NULL, "SimilarityColumn is NULL", ""); return simCol->getTextForRow(row); }
QString GTUtilsPrimerLibrary::getPrimerSequence(HI::GUITestOpStatus &os, const QString &name) { for (int i = 0; i < GTTableView::rowCount(os, table(os)); i++) { if (name == GTTableView::data(os, table(os), i, 0)) { return getPrimerSequence(os, i); } } GT_CHECK_RESULT(false, QString("Primer with name '%1' not found").arg(name), ""); }
QModelIndex GTUtilsSharedDatabaseDocument::getItemIndex(HI::GUITestOpStatus &os, Document *databaseDoc, const QString &itemPath, bool mustExist) { Q_UNUSED(os); GT_CHECK_RESULT(NULL != databaseDoc, "databaseDoc is NULL", QModelIndex()); GT_CHECK_RESULT(!itemPath.isEmpty(), "Folder path is empty", QModelIndex()); const QStringList folders = itemPath.split(U2ObjectDbi::PATH_SEP, QString::SkipEmptyParts); QModelIndex itemIndex = GTUtilsProjectTreeView::findIndex(os, databaseDoc->getName()); CHECK(!folders.isEmpty(), itemIndex); GTGlobals::FindOptions options; options.depth = 1; options.failIfNotFound = mustExist; foreach (const QString& folder, folders) { itemIndex = GTUtilsProjectTreeView::findIndex(os, folder, itemIndex, options); CHECK_OP_BREAK(os); CHECK_BREAK(itemIndex.isValid()); }
QPoint GTUtilsMSAEditorSequenceArea::convertCoordinates(HI::GUITestOpStatus &os, const QPoint p){ QWidget* activeWindow = GTUtilsMdi::activeWindow(os); MSAEditorSequenceArea *msaEditArea = qobject_cast<MSAEditorSequenceArea*>(GTWidget::findWidget(os, "msa_editor_sequence_area", activeWindow)); GT_CHECK_RESULT(msaEditArea != NULL, "MsaEditorSequenceArea not found",QPoint()); QWidget *msaOffsetLeft = GTWidget::findWidget(os, "msa_editor_offsets_view_widget_left", activeWindow); GT_CHECK_RESULT(msaOffsetLeft != NULL, "MsaOffset Left not found",QPoint()); QPoint shift = msaOffsetLeft->mapToGlobal(QPoint(0, 0)); if (msaOffsetLeft->isVisible()) { shift = msaOffsetLeft->mapToGlobal(QPoint(msaOffsetLeft->rect().right(), 0)); } int posX = msaEditArea->getXByColumnNum(p.x()); int posY = msaEditArea->getYBySequenceNum(p.y()); return shift+QPoint(posX, posY); }
QTreeWidgetItem* GTUtilsWorkflowDesigner::findTreeItem(HI::GUITestOpStatus &os,QString itemName, tab t, bool exactMatch, bool failIfNULL){ QTreeWidgetItem* foundItem=NULL; QTreeWidget *w; if(t==algoriths){ w=qobject_cast<QTreeWidget*>(GTWidget::findWidget(os,"WorkflowPaletteElements")); } else{ w=qobject_cast<QTreeWidget*>(GTWidget::findWidget(os,"samples")); } GT_CHECK_RESULT(w!=NULL,"WorkflowPaletteElements is null", NULL); QList<QTreeWidgetItem*> outerList = w->findItems("",Qt::MatchContains); for (int i=0;i<outerList.count();i++){ QList<QTreeWidgetItem*> innerList; for(int j=0;j<outerList.value(i)->childCount();j++ ){ innerList.append(outerList.value(i)->child(j)); } foreach(QTreeWidgetItem* item, innerList){ if(t==algoriths){ QString s = item->data(0,Qt::UserRole).value<QAction*>()->text(); if(compare(s, itemName, exactMatch)){ GT_CHECK_RESULT(foundItem==NULL,"several items have this discription",item); foundItem=item; } } else{ QString s = item->text(0); if(compare(s, itemName, exactMatch)){ GT_CHECK_RESULT(foundItem==NULL,"several items have this discription",item); foundItem=item; } } } } if(failIfNULL){ GT_CHECK_RESULT(foundItem!=NULL,"Item \"" + itemName + "\" not found in treeWidget",NULL); } return foundItem; }
bool GTUtilsMSAEditorSequenceArea::collapsingMode(HI::GUITestOpStatus &os){ QAbstractButton* collapce = GTAction::button(os, "Enable collapsing"); bool nameLists = getVisibleNames(os)==getNameList(os); if(nameLists && !collapce->isChecked()){ return false; }else if (!nameLists && collapce->isChecked()) { return true; }else{ GT_CHECK_RESULT(false, "somithing wrong with collapsing mode", false); } }
QString GTUtilsMSAEditorSequenceArea::getColor(HI::GUITestOpStatus &os, QPoint p){ MSAEditorSequenceArea *msaEditArea = qobject_cast<MSAEditorSequenceArea*>(GTWidget::findWidget(os, "msa_editor_sequence_area", GTUtilsMdi::activeWindow(os))); GT_CHECK_RESULT(msaEditArea != NULL, "MsaEditorSequenceArea not found", ""); QPoint global = convertCoordinates(os, p); global.setY(global.y() + (getRowHeight(os)/2 - 1)); QPoint local = msaEditArea->mapFromGlobal(global); QColor c = GTWidget::getColor(os, msaEditArea, local); QString name = c.name(); return name; }
QModelIndex GTTreeView::findIndex(GUITestOpStatus &os, QTreeView* treeView, QVariant data, QModelIndex parent, Qt::ItemDataRole role, const GTGlobals::FindOptions& options) { GT_CHECK_RESULT(treeView != NULL, "Tree widget is NULL", QModelIndex()); QModelIndexList foundIndexes = findIndexes(os, treeView, data, role,parent, 0, options); if (foundIndexes.isEmpty()) { if(options.failIfNotFound) { GT_CHECK_RESULT(foundIndexes.size() != 0, QString("Item whith name %1 not found").arg(data.toString()), QModelIndex()); } else { return QModelIndex(); } } GT_CHECK_RESULT(foundIndexes.size() == 1, QString("there are %1 items with name %2").arg(foundIndexes.size()).arg(data.toString()), QModelIndex()); treeView->scrollTo(foundIndexes.at(0)); return foundIndexes.at(0); }
QTreeWidgetItem * GTUtilsWorkflowDesigner::getPaletteGroup(HI::GUITestOpStatus &os, const QString &groupName) { QTreeWidget *tree = getCurrentTabTreeWidget(os); GT_CHECK_RESULT(NULL != tree, "WorkflowPaletteElements is NULL", NULL); GTGlobals::FindOptions options; options.depth = 1; options.matchPolicy = Qt::MatchExactly; return GTTreeWidget::findItem(os, tree, groupName, NULL, 0, options); }
QTreeWidgetItem* GTUtilsBookmarksTreeView::findItem(HI::GUITestOpStatus &os, const QString &itemName, const GTGlobals::FindOptions &options) { GT_CHECK_RESULT(itemName.isEmpty() == false, "Item name is empty", NULL); QTreeWidget *treeWidget = getTreeWidget(os); GT_CHECK_RESULT(treeWidget != NULL, "Tree widget is NULL", NULL); for(int i =0; i< treeWidget->topLevelItemCount(); i++) { OVTViewItem* vi = static_cast<OVTViewItem*>(treeWidget->topLevelItem(i)); if (vi->viewName == itemName) { return vi; } if (vi->isRootItem()) { QList<QTreeWidgetItem*> treeItems = GTTreeWidget::getItems(vi); foreach (QTreeWidgetItem* item, treeItems) { if (item->text(0) == itemName) { return item; } } } }
QList<QTreeWidgetItem *> GTUtilsWorkflowDesigner::getPaletteGroups(HI::GUITestOpStatus &os) { QList<QTreeWidgetItem *> groupItems; QTreeWidget *tree = getCurrentTabTreeWidget(os); GT_CHECK_RESULT(NULL != tree, "WorkflowPaletteElements is NULL", groupItems); GTGlobals::FindOptions options; options.depth = 1; options.matchPolicy = Qt::MatchContains; return GTTreeWidget::findItems(os, tree, "", NULL, 0, options); }
qint64 GTUtilsAssemblyBrowser::getReadsCount(HI::GUITestOpStatus &os) { QWidget *mdi = GTUtilsMdi::activeWindow(os); QWidget* infoOptionsPanel = GTWidget::findWidget(os, "OP_OPTIONS_WIDGET", mdi); if (!infoOptionsPanel->isVisible()) { GTWidget::click(os, GTWidget::findWidget(os, "OP_ASS_INFO", mdi)); infoOptionsPanel = GTWidget::findWidget(os, "OP_OPTIONS_WIDGET", mdi); } GT_CHECK_RESULT(NULL != infoOptionsPanel, "Information options panel wasn't found", 0); QLineEdit* leReads = qobject_cast<QLineEdit*>(GTWidget::findWidget(os, "leReads", infoOptionsPanel)); GT_CHECK_RESULT(NULL != leReads, "Length line edit wasn't found", 0); bool isConverted = false; QString readsString = leReads->text(); readsString.replace(" ", ""); qint64 value = readsString.toLongLong(&isConverted); GT_CHECK_RESULT(isConverted, QString("Can't convert reads count to number: '%1'").arg(readsString), 0); return value; }
GObjectView* GTUtilsDocument::getDocumentGObjectView(HI::GUITestOpStatus &os, Document* d) { GT_CHECK_RESULT(d != NULL, "Document* is NULL", NULL); QList<GObjectView*> gObjectViews = getAllGObjectViews(); foreach (GObjectView *view, gObjectViews) { if (view->containsDocumentObjects(d)) { return view; } } return NULL; }
QString GTUtilsAnnotationsTreeView::getAVItemName(HI::GUITestOpStatus &os, AVItem* avItem) { GT_CHECK_RESULT(avItem != NULL, "avItem is NULL", ""); switch (avItem->type) { case AVItemType_Annotation: { AVAnnotationItem* avAnnotationItem = (AVAnnotationItem*)avItem; GT_CHECK_RESULT(avAnnotationItem != NULL, "avAnnotationItem is NULL", ""); Annotation *annotation = avAnnotationItem->annotation; return annotation->getName(); } break; case AVItemType_Group: { AVGroupItem* avGroupItem = (AVGroupItem*)avItem; GT_CHECK_RESULT(avGroupItem!= NULL, "avAnnotationItem is NULL", ""); AnnotationGroup *group= avGroupItem->group; return group->getName(); } break; case AVItemType_Qualifier: { AVQualifierItem* avQualifierItem = (AVQualifierItem*)avItem; GT_CHECK_RESULT(avQualifierItem != NULL, "avQualifierItem is NULL", ""); return avQualifierItem->qName; } break; default: break; } return ""; }
QList<U2Region> GTUtilsAnnotationsTreeView::getAnnotatedRegions(HI::GUITestOpStatus &os) { QList<U2Region> res; QTreeWidget *treeWidget = getTreeWidget(os); GT_CHECK_RESULT(treeWidget != NULL, "Tree widget is NULL", res); QList<QTreeWidgetItem*> treeItems = GTTreeWidget::getItems(treeWidget->invisibleRootItem()); foreach (QTreeWidgetItem* item, treeItems) { AVAnnotationItem* annotationItem = dynamic_cast<AVAnnotationItem*>(item); CHECK_OPERATION(annotationItem != NULL, continue); Annotation *ann = annotationItem->annotation; res.append(ann->getRegions().toList()); }