def __init__(self, iface, version):
        QDockWidget.__init__(self, None)
        self.iface = iface
        self.clouddb = True
        self.version = version
        # Set up the user interface from Designer.
        self.ui = Ui_QgisCloudPlugin()
        self.ui.setupUi(self)
        self.storage_exceeded = True

        myAbout = DlgAbout()
        self.ui.aboutText.setText(
            myAbout.aboutString() + myAbout.contribString() +
            myAbout.licenseString() + "<p>Versions:<ul>" +
            "<li>QGIS: %s</li>" % unicode(QGis.QGIS_VERSION).encode("utf-8") +
            "<li>Python: %s</li>" % sys.version.replace("\n", " ") +
            "<li>OS: %s</li>" % platform.platform() + "</ul></p>")
        self.ui.lblVersionPlugin.setText(self.version)

        self.ui.tblLocalLayers.setColumnCount(5)
        header = [
            "Layers", "Data source", "Table name", "Geometry type", "SRID"
        ]
        self.ui.tblLocalLayers.setHorizontalHeaderLabels(header)
        self.ui.tblLocalLayers.resizeColumnsToContents()
        self.ui.tblLocalLayers.setEditTriggers(
            QAbstractItemView.NoEditTriggers)

        self.ui.btnUploadData.setEnabled(False)
        self.ui.btnPublishMap.setEnabled(False)
        self.ui.progressWidget.hide()
        self.ui.btnLogout.hide()
        self.ui.lblLoginStatus.hide()
        self.ui.widgetServices.hide()
        self.ui.widgetDatabases.setEnabled(False)
        self.ui.labelOpenLayersPlugin.hide()

        try:
            if QGis.QGIS_VERSION_INT >= 20300:
                from openlayers_menu import OpenlayersMenu
            else:
                # QGIS 1.x - QGIS-2.2
                from openlayers_menu_compat import OpenlayersMenu
            self.ui.btnBackgroundLayer.setMenu(OpenlayersMenu(self.iface))
        except:
            self.ui.btnBackgroundLayer.hide()
            self.ui.labelOpenLayersPlugin.show()

        # map<data source, table name>
        self.data_sources_table_names = {}
        # flag to disable update of local data sources during upload
        self.do_update_local_data_sources = True

        QObject.connect(self.ui.btnLogin, SIGNAL("clicked()"),
                        self.check_login)
        QObject.connect(self.ui.btnDbCreate, SIGNAL("clicked()"),
                        self.create_database)
        QObject.connect(self.ui.btnDbDelete, SIGNAL("clicked()"),
                        self.delete_database)
        QObject.connect(self.ui.btnDbRefresh, SIGNAL("clicked()"),
                        self.refresh_databases)
        QObject.connect(self.ui.tabDatabases, SIGNAL("itemSelectionChanged()"),
                        self.select_database)
        QObject.connect(self.ui.btnPublishMap, SIGNAL("clicked()"),
                        self.publish_map)
        QObject.connect(self.ui.btnRefreshLocalLayers, SIGNAL("clicked()"),
                        self.refresh_local_data_sources)
        QObject.connect(self.iface, SIGNAL("newProjectCreated()"),
                        self.reset_load_data)
        QObject.connect(QgsMapLayerRegistry.instance(),
                        SIGNAL("layerWillBeRemoved(QString)"),
                        self.remove_layer)
        QObject.connect(QgsMapLayerRegistry.instance(),
                        SIGNAL("layerWasAdded(QgsMapLayer *)"), self.add_layer)
        QObject.connect(self.ui.cbUploadDatabase,
                        SIGNAL("currentIndexChanged(int)"),
                        lambda idx: self.activate_upload_button())
        QObject.connect(self.ui.btnUploadData, SIGNAL("clicked()"),
                        self.upload_data)

        self.ui.editServer.textChanged.connect(self.serverURL)
        self.ui.resetUrlBtn.clicked.connect(self.resetApiUrl)

        self.read_settings()
        self.api = API()
        self.db_connections = DbConnections()
        self.local_data_sources = LocalDataSources()
        self.data_upload = DataUpload(self.iface, self.statusBar(),
                                      self.ui.lblProgress, self.api,
                                      self.db_connections)

        if self.URL == "":
            self.ui.editServer.setText(self.api.api_url())
        else:
            self.ui.editServer.setText(self.URL)

        self.palette_red = QPalette(self.ui.lblVersionPlugin.palette())
        self.palette_red.setColor(QPalette.WindowText, Qt.red)
    def __init__(self, iface, version):
        QDockWidget.__init__(self, None)
        self.iface = iface
        self.version = version
        # Set up the user interface from Designer.
        self.ui = Ui_QgisCloudPlugin()
        self.ui.setupUi(self)

        self.ui.tblLocalLayers.setColumnCount(5)
        header = [
            "Layers", "Data source", "Table name", "Geometry type", "SRID"
        ]
        self.ui.tblLocalLayers.setHorizontalHeaderLabels(header)
        self.ui.tblLocalLayers.resizeColumnsToContents()
        # TODO; delegate for read only columns

        self.ui.btnUploadData.setEnabled(False)
        self.ui.uploadProgressBar.hide()
        self.ui.btnPublishMapUpload.hide()
        self.ui.lblLoginStatus.hide()

        # map<data source, table name>
        self.data_sources_table_names = {}
        self.dbs_refreshed = False
        # flag to disable update of local data sources during upload
        self.do_update_local_data_sources = True

        QObject.connect(self.ui.btnLogin, SIGNAL("clicked()"),
                        self.refresh_databases)
        QObject.connect(self.ui.btnDbCreate, SIGNAL("clicked()"),
                        self.create_database)
        QObject.connect(self.ui.btnDbDelete, SIGNAL("clicked()"),
                        self.delete_database)
        QObject.connect(self.ui.btnDbRefresh, SIGNAL("clicked()"),
                        self.refresh_databases)
        QObject.connect(self.ui.tabDatabases, SIGNAL("itemSelectionChanged()"),
                        self.select_database)
        QObject.connect(self.ui.btnPublishMap, SIGNAL("clicked()"),
                        self.publish_map)
        QObject.connect(self.ui.btnRefreshLocalLayers, SIGNAL("clicked()"),
                        self.refresh_local_data_sources)
        QObject.connect(self.iface, SIGNAL("newProjectCreated()"),
                        self.reset_load_data)
        QObject.connect(QgsMapLayerRegistry.instance(),
                        SIGNAL("layerWillBeRemoved(QString)"),
                        self.remove_layer)
        QObject.connect(QgsMapLayerRegistry.instance(),
                        SIGNAL("layerWasAdded(QgsMapLayer *)"), self.add_layer)
        QObject.connect(self.ui.cbUploadDatabase,
                        SIGNAL("currentIndexChanged(int)"),
                        self.upload_database_selected)
        QObject.connect(self.ui.btnUploadData, SIGNAL("clicked()"),
                        self.upload_data)
        QObject.connect(self.ui.btnPublishMapUpload, SIGNAL("clicked()"),
                        self.publish_map)

        self.read_settings()
        self.update_urls()
        self.api = API()
        self.db_connections = DbConnections()
        self.local_data_sources = LocalDataSources()
        self.data_upload = DataUpload(self.iface, self.statusBar(),
                                      self.ui.uploadProgressBar, self.api,
                                      self.db_connections)

        self.ui.editServer.setText(self.api.api_url())