def __init__(self, iface):
        """Constructor.
		:param iface: An interface instance that will be passed to this class
			which provides the hook by which you can manipulate the QGIS
			application at run time.
		:type iface: QgisInterface
		"""
        # Save reference to the QGIS interface
        self.iface = iface
        # initialize plugin directory
        self.plugin_dir = os.path.dirname(__file__)
        # initialize locale
        locale = QSettings().value('locale/userLocale')[0:2]
        locale_path = os.path.join(self.plugin_dir, 'i18n',
                                   'CanadianWebServices_{}.qm'.format(locale))

        if os.path.exists(locale_path):
            self.translator = QTranslator()
            self.translator.load(locale_path)

            if qVersion() > '4.3.3':
                QCoreApplication.installTranslator(self.translator)

        # Create the dialogs and keep reference
        self.dlg = CanadianWebServicesDialog()
        self.dlginfo = InfoDialog()
        # Declare instance attributes
        self.actions = []
        self.menu = self.tr(u'&Canadian Web Services')
        # TODO: We are going to let the user set this up in a future iteration
        self.toolbar = self.iface.addToolBar(u'CanadianWebServices')
        self.toolbar.setObjectName(u'CanadianWebServices')
        # define the datasets used:
        self.works = True  # will be used to determine whether the list url can be reached
        self.services = self.loadServiceList()
        if self.works == True:  # only sorts when the url worked
            self.services = self.sortServices(
                self.services)  # initialize and sort the services
            self.shownServices = self.services  # will change when serch criteria change to allow for the selected dataset to be found by row number
        #enlable hidpi scaling
        QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)