def browse(fileNames=None,
           inspectorFullName=None,
           select=None,
           profile=DEFAULT_PROFILE,
           resetProfile=False,      # TODO: should probably be moved to the main program
           resetAllProfiles=False,  # TODO: should probably be moved to the main program
           resetRegistry=False):    # TODO: should probably be moved to the main program
    """ Opens the main window(s) for the persistent settings of the given profile,
        and executes the application.

        :param fileNames: List of file names that will be added to the repository
        :param inspectorFullName: The full path name of the inspector that will be loaded
        :param select: a path of the repository item that will selected at start up.
        :param profile: the name of the profile that will be loaded
        :param resetProfile: if True, the profile will be reset to it standard settings.
        :param resetAllProfiles: if True, all profiles will be reset to it standard settings.
        :param resetRegistry: if True, the registry will be reset to it standard settings.
        :return:
    """
    # Imported here so this module can be imported without Qt being installed.
    from argos.qt import QtWidgets, QtCore
    from argos.application import ArgosApplication
    from argos.repo.testdata import createArgosTestData

    try:
        QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps)
    except Exception as ex:
        logger.debug("AA_UseHighDpiPixmaps not available in PyQt4: {}".format(ex))

    # Create
    argosApp = ArgosApplication()

    if resetProfile:
        argosApp.deleteProfile(profile)
    if resetAllProfiles:
        argosApp.deleteAllProfiles()
    if resetRegistry:
        argosApp.deleteRegistries()

    # Must be called before opening the files so that file formats are auto-detected.
    argosApp.loadOrInitRegistries()

    # Load data in common repository before windows are created.
    argosApp.loadFiles(fileNames)
    if DEBUGGING:
        argosApp.repo.insertItem(createArgosTestData())

    # Create windows for this profile.
    argosApp.loadProfile(profile=profile, inspectorFullName=inspectorFullName)

    if select:
        for mainWindow in argosApp.mainWindows:
            mainWindow.trySelectRtiByPath(select)

    return argosApp.execute()
Opens the main window(s) for the persistent settings of the given profile,
        and executes the application.

        :param fileNames: List of file names that will be added to the repository
        :param inspectorFullName: The full path name of the inspector that will be loaded
        :param select: a path of the repository item that will selected at start up.
        :param profile: the name of the profile that will be loaded
        :param resetProfile: if True, the profile will be reset to it standard settings.
        :param resetAllProfiles: if True, all profiles will be reset to it standard settings.
        :param resetRegistry: if True, the registry will be reset to it standard settings.
        :return: