Example #1
0
def mitral_measurement_capture():

    firstIndexMeasurements = "{container=':mMprCaptureFrame_MprCaptureListWidget' type='QModelIndex'}"
    bottomFrame = ":mMprFrame.mCoronalMprFrame_TriPlaneMprFrame"
    lineContourEmbedFrame = ":contourHandle.ToolButton-contourAction-lineRoiContour_QToolButton"
    tagMVTOLAA = ":mGroupFrame.MV to LAA_QModelIndex"

    x, y = squish.waitForObject(bottomFrame).height, squish.waitForObject(
        bottomFrame).width

    squish.mouseMove(squish.waitForObject(bottomFrame), 10, x - 20)

    squish.clickButton(squish.waitForObject(lineContourEmbedFrame))

    squish.mousePress(bottomFrame, randint(0 + 50, x - 70),
                      randint(0 + 50, y - 70), squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseRelease(bottomFrame, randint(0 + 50, x - 70),
                        randint(0 + 50, y - 70), squish.Qt.LeftButton)
    #     squish.snooze(0.5)

    # Drag and drop LVOT tag on first measurement capture image
    squish.mousePress(squish.waitForObject(tagMVTOLAA))
    #     squish.snooze(1)
    squish.mouseMove(squish.waitForObject(firstIndexMeasurements), 5, 5)
    squish.mouseRelease(squish.waitForObject(firstIndexMeasurements))

    return
Example #2
0
def export_study(study_name):

    # status bar
    status = squish.waitForObject(cvi42Objects.statusBar)

    # Searches for study, and exports
    squish.waitForObject(cvi42Objects.patientlistEditBox).setText(study_name)
    squish.openContextMenu(
        squish.waitForObjectItem(cvi42Objects.studyTreeitem, study_name), 50,
        5, 0)
    squish.activateItem(
        squish.waitForObjectItem(cvi42Objects.contextMenu, "Export Study"))

    # export dialog flow
    squish.mouseClick(
        squish.waitForObjectItem(":splitter.sidebar_QSidebar", "My Computer"),
        53, 13, 0, squish.Qt.LeftButton)
    squish.mouseClick(
        squish.waitForObjectItem(":stackedWidget.treeView_QTreeView",
                                 "DATA (D:)"), 33, 14, 0, squish.Qt.LeftButton)
    squish.doubleClick(
        squish.waitForObjectItem(":stackedWidget.treeView_QTreeView",
                                 "DATA (D:)"), 34, 11, 0, squish.Qt.LeftButton)
    squish.clickButton(squish.waitForObject(":dcmBrowser.Choose_QPushButton"))

    start = time.time()
    while True:
        if status.currentMessage() == "Export Images done":
            break
        else:
            pass
    end = time.time()

    test.log("Time to export study: %.2f" % (end - start))
Example #3
0
def mitral_define_annulus():
    mitralWindow = ":mMprFrame.mAxialMprFrame_TriPlaneMprFrame"
    annulusTab = ":cmr42MainWindow.mPageButtons[ePage::Annulus]_QToolButton"
    annulusStartButton = ":groupBox.mStartAssistedButton_QPushButton"
    topFrame = ":mMprFrame.mSagittalMprFrame_TriPlaneMprFrame"
    bottomFrame = ":mMprFrame.mCoronalMprFrame_TriPlaneMprFrame"

    # Click on start annulus
    squish.mouseClick(squish.waitForObject(mitralWindow), 180, 460, 0,
                      squish.Qt.LeftButton)

    # Switch to annulus tab and start annulus
    squish.clickButton(squish.waitForObject(annulusTab))
    squish.clickButton(squish.waitForObject(annulusStartButton))

    # Hardcoded annulus drawing
    squish.mouseClick(squish.waitForObject(topFrame), 146, 162, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(topFrame), 148, 253, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(bottomFrame), 158, 181, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(bottomFrame), 154, 252, 0,
                      squish.Qt.LeftButton)

    return
Example #4
0
def aortic_annulus():

    annulusTab = ":cmr42MainWindow.mPageButtons[ePage::Annulus]_QToolButton"
    perimeterPoints = ":cmr42MainWindow.ToolButton-contourAction-perimeterPoints_QToolButton"
    aorticWindow = ":mMprFrame.mAxialMprFrame_TriPlaneMprFrame"

    # Click on annulus tab
    squish.clickButton(squish.waitForObject(annulusTab))

    # Click on the perimeter contour button
    squish.clickButton(squish.waitForObject(perimeterPoints))

    # Hardcoded mouse clicks for drawing annulus measurement
    squish.mouseClick(squish.waitForObject(aorticWindow), 172, 153, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(aorticWindow), 101, 208, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(aorticWindow), 172, 277, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(aorticWindow), 239, 227, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.doubleClick(squish.waitForObject(aorticWindow), 175, 152, 0,
                       squish.Qt.LeftButton)

    return
Example #5
0
def save_workspace(workspace_name):

    # Grabs the status bar object to check current message
    status = squish.waitForObject(cvi42Objects.statusBar)

    # Saves workspace as name given
    squish.activateItem(
        squish.waitForObjectItem(cvi42Objects.menuBar, "Workspace"))
    squish.activateItem(
        squish.waitForObjectItem(cvi42Objects.workspaceButton,
                                 "Save Workspace As"))
    squish.waitForObject(
        cvi42Objects.workspaceWindowEdit).setText(workspace_name)
    squish.clickButton(
        squish.waitForObject(cvi42Objects.workspaceWindowOkButton))

    start = time.time()
    while True:
        if status.currentMessage() == "Save workspace done.":
            break
        else:
            pass
    end = time.time()

    test.log("Saving workspace: %.2f" % (end - start))

    return
Example #6
0
 def addServer(self, context):
     clientDetails = getClientDetails(context)
     squish.mouseClick(squish.waitForObject(self.SERVER_ADDRESS_BOX))
     squish.type(
         squish.waitForObject(self.SERVER_ADDRESS_BOX), clientDetails['server']
     )
     squish.clickButton(squish.waitForObject(self.NEXT_BUTTON))
Example #7
0
def load_series(window_given, series_num):

    series = ":scrollArea.frame-%s_SeriesThumbPreview" % (series_num - 1)

    window, x, y = find_window(window_given)

    # if series needed is bigger than 8, check if scrolling is needed to reach the series
    if object.exists(cvi42Objects.series_scrollbar):
        squish.scrollTo(squish.waitForObject(cvi42Objects.series_scrollbar),
                        -505)

        if series_num > 8:
            squish.scrollTo(
                squish.waitForObject(cvi42Objects.series_scrollbar), 855)

    # Load series into window requested

    squish.mouseMove(squish.waitForObject(series), 5, 5)
    squish.mousePress(squish.waitForObject(series))
    #     squish.snooze(1)
    squish.mouseRelease(squish.waitForObject(window))
    squish.snooze(0.2)

    if object.exists(":Load Volume.Yes_QPushButton"):
        squish.clickButton(
            squish.waitForObject(":Load Volume.Yes_QPushButton"))

    # Wait for progress bar
    time = loading_time()

    if time > 10:
        test.log("Time to load series: %.2f" % time)

    return
Example #8
0
 def enterPassword(self, password):
     try:
         squish.waitForObject(self.PASSWORD_BOX, 10000)
         squish.type(squish.waitForObject(self.PASSWORD_BOX), password)
         squish.clickButton(squish.waitForObject(self.OK_BUTTON))
     except LookupError:
         pass
Example #9
0
    def createPublicLinkWithRole(self, role):
        radioObjectName = self.getRadioObjectForPermssion(role)

        squish.clickButton(squish.waitForObject(radioObjectName))
        squish.clickButton(squish.waitForObject(self.CREATE_SHARE_BUTTON))
        squish.waitFor(lambda: (squish.findObject(
            names.linkShares_0_0_QModelIndex).displayText == "Public link"))
Example #10
0
def segment_forward():
    segmentContour = ":mContourOptions.ToolButton-segAction_QToolButton"
    forwardContour = ":mContourOptions.ToolButton-segForwardAction_QToolButton"

    squish.mousePress(squish.waitForObject(segmentContour))
    #     squish.snooze(1)
    squish.mouseRelease(squish.waitForObject(segmentContour))

    squish.clickButton(squish.waitForObject(forwardContour))

    return
Example #11
0
def add_to_report():

    addToReportButton = ":cmr42MainWindow.Add Report_QToolButton"

    # Click on the add to report button
    squish.clickButton(squish.waitForObject(addToReportButton))

    # Check report42 time
    check_report42()

    return
Example #12
0
def ml_button():

    mlButton = ":mContourDetectionTools.mlButton_SwitchingToolButton"

    squish.clickButton(squish.waitForObject(mlButton))

    # Wait for progress bar
    time = studyFunctions.loading_time()

    test.log("biplanarLAX ML %.2f" % time)

    return
Example #13
0
    def loadFile(self, model, track_time=False):
        self.click(names.mwi_btn_open_file)

        # Navigate to the correct dir first
        self.setTextFieldValue(names.fdg_input_name, self.testdata_dir)
        squish.clickButton(waitForObject(names.fdg_btn_open))

        self.setTextFieldValue(names.fdg_input_name, model)
        squish.clickButton(waitForObject(names.fdg_btn_open))

        if track_time:
            return Performance.trackFileloadTime()
Example #14
0
def reset_workspace():

    menuBar = ":cmr42MainWindow.appMenuBar_QMenuBar"
    workspaceButton = ":cmr42MainWindow.workspaceMenu_QMenu"
    resetWorkspaceButtonOk = ":Reset Workspace.Reset_QPushButton"

    squish.activateItem(squish.waitForObjectItem(menuBar, "Workspace"))
    squish.activateItem(
        squish.waitForObjectItem(workspaceButton, "Reset Workspace"))
    squish.clickButton(squish.waitForObject(resetWorkspaceButtonOk))
    #     squish.snooze(2)

    return
Example #15
0
    def removePermissions(self, permissions):
        removePermissionsList = permissions.split(",")
        (
            isEditPermissionAvailable,
            isSharePermissionAvailable,
        ) = self.getAvailablePermission()

        if 'share' in removePermissionsList and isSharePermissionAvailable:
            squish.clickButton(
                squish.waitForObject(
                    names.scrollArea_permissionShare_QCheckBox))

        if 'edit' in removePermissionsList and isEditPermissionAvailable:
            squish.clickButton(
                squish.waitForObject(
                    names.scrollArea_permissionsEdit_QCheckBox))
Example #16
0
    def selectFoldersToSync(self, context):
        self.openSyncDialog()

        # first deselect all
        squish.mouseClick(
            squish.waitForObject(self.SYNC_DIALOG_ROOT_FOLDER),
            11,
            11,
            squish.Qt.NoModifier,
            squish.Qt.LeftButton,
        )
        for row in context.table[1:]:
            squish.mouseClick(
                squish.waitForObjectItem(self.SYNC_DIALOG_FOLDER_TREE, "/." + row[0]),
                11,
                11,
                squish.Qt.NoModifier,
                squish.Qt.LeftButton,
            )
        squish.clickButton(squish.waitForObject(self.SYNC_DIALOG_OK_BUTTON))
Example #17
0
def close_cvi42():

    while True:
        process_id = [
            item.split()[1]
            for item in os.popen('tasklist').read().splitlines()[4:]
            if "cvi42.exe" in item.split()
        ]

        if len(process_id) >= 1:
            os.system("taskkill /im cvi42.exe")

            if object.exists(cvi42Objects.QuitOkButton):
                squish.clickButton(
                    squish.waitForObject(cvi42Objects.QuitOkButton))

        else:
            break

    return
Example #18
0
def click_ml(button):
    
    toolBarObject = ":cmr42MainWindow.ToolBar_QToolBar"
    contextWindow = ":cmr42MainWindow_QMenu"
    
#     # If button exists in toolbar, clicks otherwise, find button
#     children = find_children_by_text(squish.waitForObject(toolBarObject), button)
    
    contextButton = find_context_menu(button)
    squish.openContextMenu(squish.waitForObject(contextButton), 30, 20, 0)
    squish.activateItem(squish.waitForObjectItem(contextWindow, button))
#         squish.snooze(1)
    
    squish.clickButton(squish.waitForObject(contextButton))

    # Wait for progress bar 
    time = studyFunctions.loading_time()
 
    test.log("Short3d %s: %.2f "% (button, time))
    return
Example #19
0
def aortic_tricuspid():

    tricuspidButton = ":mWorkflowGroupbox.mTricuspidPushButton_QPushButton"
    aorticWindow = ":mMprFrame.mAxialMprFrame_TriPlaneMprFrame"

    # Click on the tricuspid option
    squish.clickButton(squish.waitForObject(tricuspidButton))

    # Hardcoded mouse clicks of tricuspid locations
    squish.mouseClick(squish.waitForObject(aorticWindow), 169, 195, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(aorticWindow), 197, 249, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(0.5)
    squish.mouseClick(squish.waitForObject(aorticWindow), 134, 243, 0,
                      squish.Qt.LeftButton)
    #     squish.snooze(1.5)

    return
Example #20
0
def lineContour(window_name, num=3):

    lineContourButton = ":mContourTools.ToolButton-contourAction-lineRoiContour_QToolButton"

    # Grabs Qt equivalent of given window name
    window, x, y = studyFunctions.find_window(window_name)

    # Finds and clicks on the line contour button in the toolbar
    squish.clickButton(squish.waitForObject(lineContourButton))

    counter = 0
    while counter < num:
        # Mouse press and release inside the frame of the selected window
        squish.mousePress(window, randint(0 + 50, x - 70),
                          randint(0 + 50, y - 70), squish.Qt.LeftButton)
        squish.mouseRelease(window, randint(0 + 50, x - 70),
                            randint(0 + 50, y - 70), squish.Qt.LeftButton)

        counter += 1

    return
Example #21
0
    def createPublicLink(self, context, resource, password='', permissions=''):
        radioObjectName = ''
        if permissions:
            radioObjectName = self.getRadioObjectForPermssion(permissions)

        test.compare(
            str(squish.waitForObjectExists(self.ITEM_TO_SHARE).text),
            resource.replace(context.userData['clientSyncPathUser1'], ''),
        )

        if radioObjectName:
            test.compare(str(squish.waitForObjectExists(radioObjectName).text),
                         permissions)
            squish.clickButton(squish.waitForObject(radioObjectName))

        if password:
            squish.clickButton(squish.waitForObject(self.PASSWORD_CHECKBOX))
            squish.mouseClick(
                squish.waitForObject(self.PASSWORD_CHECKBOX),
                0,
                0,
                squish.Qt.NoModifier,
                squish.Qt.LeftButton,
            )
            squish.type(
                squish.waitForObject(self.PASSWORD_CHECKBOX),
                password,
            )

        squish.clickButton(squish.waitForObject(self.CREATE_SHARE_BUTTON))
        squish.waitFor(lambda: (squish.waitForObject(
            names.linkShares_0_0_QModelIndex).displayText == "Public link"))
Example #22
0
def anonymize_study(study, anon_name):

    # If user is not in patient list page condition
    if object.exists(cvi42Objects.returnPatientlistButton) is True:
        squish.clickButton(
            squish.waitForObject(cvi42Objects.returnPatientlistButton))

    # Grabs the status bar object to check current message
    status = squish.waitForObject(cvi42Objects.statusBar)

    if "\\" in study:
        studyUpdated = study.replace("\\", "")
    else:
        studyUpdated = study

    # Searches for study, and anonymizes
    squish.waitForObject(cvi42Objects.patientlistEditBox).setText(studyUpdated)

    squish.openContextMenu(
        squish.waitForObjectItem(cvi42Objects.studyTreeitem, study), 50, 5, 0)

    squish.activateItem(
        squish.waitForObjectItem(cvi42Objects.contextMenu, "Anonymize Study"))
    squish.waitForObject(cvi42Objects.anonymizeEditBox).setText(anon_name)
    squish.clickButton(squish.waitForObject(cvi42Objects.anonymizeOkButton))

    start = time.time()
    #     squish.snooze(4)

    while True:
        if status.currentMessage() == "Import Study done":
            break
        else:
            pass
    end = time.time()

    test.log("Anonymizing %s time: %.2f" % (study, (end - start)))

    return anon_name
Example #23
0
def freehandContour(window_name):

    freehandContour = ":mContourTools.ToolButton-contourAction-freeDrawRoiContour_QToolButton"

    # Grabs Qt equivalent of given window name
    window, x, y = studyFunctions.find_window(window_name)

    # Finds and clicks on the Contour measurement button
    squish.clickButton(squish.waitForObject(freehandContour))

    # Starts drawing freehand contour by pressing the left mouse button
    squish.mousePress(squish.waitForObject(window), randint(0 + 50, x - 70),
                      randint(0 + 50, y - 70), squish.Qt.LeftButton)

    for i in range(3):
        squish.mouseMove(squish.waitForObject(window), randint(0 + 50, x - 70),
                         randint(0 + 50, y - 70))

    squish.mouseRelease(squish.waitForObject(window), randint(0 + 50, x - 70),
                        randint(0 + 50, y - 70), squish.Qt.LeftButton)

    return
Example #24
0
def curvedMeasContour(window_name, num=3):

    curvedMeasurementContour = ":mContourTools.ToolButton-contourAction-openSplinePerimeterPoints_QToolButton"

    # Grabs Qt equivalent of given window name
    window, x, y = studyFunctions.find_window(window_name)

    # Finds and clicks on the Contour measurement button
    squish.clickButton(squish.waitForObject(curvedMeasurementContour))

    counter = 0
    while counter < num - 1:
        # Mouse click inside the frame of the selected window
        squish.mouseClick(squish.waitForObject(window),
                          randint(0 + 50, x - 70), randint(0 + 50, y - 70), 0,
                          squish.Qt.LeftButton)
        counter += 1

    squish.doubleClick(squish.waitForObject(window), randint(0 + 50, x - 70),
                       randint(0 + 50, y - 70), 0, squish.Qt.LeftButton)

    return
Example #25
0
    def loadOtherTypeFiles(self, filename):
        # Navigate to the correct dir first
        self.setTextFieldValue(names.fdg_input_name, self.testdata_dir)
        squish.clickButton(waitForObject(names.fdg_btn_open))

        self.setTextFieldValue(names.fdg_input_name, filename)
        squish.clickButton(waitForObject(names.fdg_btn_open))
        squish.clickButton(waitForObject(names.mbo_btn_OK))
Example #26
0
def flowContour(window_name, contour=1):

    flowContour = ":mContourTools.ToolButton-contourAction-flow1Contour_QToolButton"

    new_contour = ":mContourTools.ToolButton-contourAction-flow%sContour_QToolButton" % contour

    # Grabs Qt equivalent of given window name
    window, x, y = studyFunctions.find_window(window_name)

    # Finds and clicks on the Contour measurement button
    squish.clickButton(squish.waitForObject(new_contour))

    # Draw a handcoded contour for now
    squish.mousePress(squish.waitForObject(window), ((x / 2) + 20),
                      ((y / 2) + 20), squish.Qt.LeftButton)
    squish.mouseMove(squish.waitForObject(window), ((x / 2) + 20),
                     ((y / 2) - 20))
    squish.mouseMove(squish.waitForObject(window), ((x / 2) - 30),
                     ((y / 2) - 20))
    squish.mouseRelease(squish.waitForObject(window), ((x / 2) - 30),
                        ((y / 2) - 20), squish.Qt.LeftButton)

    return
Example #27
0
def delete_study(study_name):

    squish.waitForObject(cvi42Objects.patientlistEditBox).setText(study_name)
    squish.openContextMenu(
        squish.waitForObjectItem(cvi42Objects.studyTreeitem, study_name), 50,
        13, 0)
    squish.activateItem(
        squish.waitForObjectItem(cvi42Objects.contextMenu, "Delete Study"))
    #     squish.snooze(1)
    squish.clickButton(squish.waitForObject(cvi42Objects.DeleteStudyOkButton))
    start = time.time()

    while True:
        if object.exists(cvi42Objects.UpdatingStudyListMessage):
            break
        else:
            pass
    end = time.time()

    #     test.log("Time to delete study: %.2f" %(end-start))

    squish.waitForObject(cvi42Objects.patientlistEditBox).setText("")

    return
Example #28
0
def measurement_capture():

    measurementCaptureButton = ":mViewerMeasurementFrame.mCameraButton_QPushButton"
    SelectAllButton = ":mCentralStack.mSelectAllButton_QPushButton"
    PushtoReportOk = ":mCentralStack.mOkButton_QPushButton"

    # Open measurement capture window and send to report
    squish.clickButton(squish.waitForObject(measurementCaptureButton))
    squish.clickButton(squish.waitForObject(SelectAllButton))
    squish.clickButton(squish.waitForObject(PushtoReportOk))

    # Check report42 time
    check_report42()

    return
Example #29
0
    def selectSyncFolder(self, context):
        clientDetails = getClientDetails(context)

        try:
            squish.clickButton(squish.waitForObject(self.ERROR_OK_BUTTON))
        except LookupError:
            pass
        squish.clickButton(squish.waitForObject(self.SELECT_LOCAL_FOLDER))
        squish.mouseClick(squish.waitForObject(self.DIRECTORY_NAME_BOX))
        squish.type(
            squish.waitForObject(self.DIRECTORY_NAME_BOX), clientDetails['localfolder']
        )
        squish.clickButton(squish.waitForObject(self.CHOOSE_BUTTON))
        test.compare(
            str(squish.waitForObjectExists(self.SELECT_LOCAL_FOLDER).text),
            self.sanitizeFolderPath(clientDetails['localfolder']),
        )
Example #30
0
    def addCollaborator(self, receiver, permissions, isGroup=False):
        self.selectCollaborator(receiver, isGroup)
        permissionsList = permissions.split(",")

        editChecked, shareChecked = self.getAvailablePermission()

        if ('edit' in permissionsList
                and editChecked == False) or ('edit' not in permissionsList
                                              and editChecked == True):
            squish.clickButton(
                squish.waitForObject(self.EDIT_PERMISSIONS_CHECKBOX))
        if ('share' in permissionsList
                and shareChecked == False) or ('share' not in permissionsList
                                               and shareChecked == True):
            squish.clickButton(
                squish.waitForObject(self.SHARE_PERMISSIONS_CHECKBOX))

        squish.clickButton(
            squish.waitForObject(self.SHARING_DIALOG_CLOSE_BUTTON))