Ejemplo n.º 1
0
  def __init__(self, iface, commandName):
      self.iface = iface
      self.initialized = False
      self.base = BaseDialog( iface.mainWindow(), iface, self, self.windowTitle(), commandName)

      self.connect(self.base, SIGNAL("processError(QProcess::ProcessError)"), self.onError)
      self.connect(self.base, SIGNAL("processFinished(int, QProcess::ExitStatus)"), self.onFinished)

      self.connect(self.base, SIGNAL("okClicked()"), self.onRun)
      self.connect(self.base, SIGNAL("closeClicked()"), self.onClosing)
      self.connect(self.base, SIGNAL("helpClicked()"), self.onHelp)

      self.connect(self.base, SIGNAL("finished(bool)"), self.finished)
      self.connect(self.base, SIGNAL("refreshArgs()"), self.someValueChanged)
Ejemplo n.º 2
0
    def __init__(self, iface, commandName, parent=None):
        self.iface = iface
        self.initialized = False
        self.base = BaseDialog(parent, iface, self, self.windowTitle(),
                               commandName)

        self.connect(self.base, SIGNAL("processError(QProcess::ProcessError)"),
                     self.onError)
        self.connect(self.base,
                     SIGNAL("processFinished(int, QProcess::ExitStatus)"),
                     self.onFinished)

        self.connect(self.base, SIGNAL("okClicked()"), self.onRun)
        self.connect(self.base, SIGNAL("closeClicked()"), self.onClosing)
        self.connect(self.base, SIGNAL("helpClicked()"), self.onHelp)

        self.connect(self.base, SIGNAL("finished(bool)"), self.finished)
Ejemplo n.º 3
0
class GdalToolsBasePluginWidget:
    def __init__(self, iface, commandName):
        self.iface = iface
        self.initialized = False
        self.base = BaseDialog(iface.mainWindow(), iface, self,
                               self.windowTitle(), commandName)

        self.connect(self.base, SIGNAL("processError(QProcess::ProcessError)"),
                     self.onError)
        self.connect(self.base,
                     SIGNAL("processFinished(int, QProcess::ExitStatus)"),
                     self.onFinished)

        self.connect(self.base, SIGNAL("okClicked()"), self.onRun)
        self.connect(self.base, SIGNAL("closeClicked()"), self.onClosing)
        self.connect(self.base, SIGNAL("helpClicked()"), self.onHelp)

        self.connect(self.base, SIGNAL("finished(bool)"), self.finished)
        self.connect(self.base, SIGNAL("refreshArgs()"), self.someValueChanged)

    def someValueChanged(self):
        if self.initialized:
            self.emit(SIGNAL("valuesChanged(PyQt_PyObject)"),
                      self.getArguments())

    def onLayersChanged(self):
        pass

    def initialize(self):
        if not self.initialized:
            self.connect(Utils.LayerRegistry.instance(),
                         SIGNAL("layersChanged"), self.onLayersChanged)
            self.onLayersChanged()
            self.someValueChanged()
        self.initialized = True

    def exec_(self):
        self.initialize()
        return self.base.exec_()

    def show_(self):
        self.initialize()
        return self.base.show()

    def setCommandViewerEnabled(self, enable):
        self.base.setCommandViewerEnabled(enable)
        self.someValueChanged()

    def onRun(self):
        self.base.onRun()

    def onClosing(self):
        self.disconnect(Utils.LayerRegistry.instance(),
                        SIGNAL("layersChanged"), self.onLayersChanged)
        self.base.onClosing()
        self.initialized = False

    def onHelp(self):
        self.base.onHelp()

    def onFinished(self, exitCode, status):
        self.base.onFinished(exitCode, status)

    def onError(self, error):
        self.base.onError(error)

    def getArguments(self):
        pass

    def getInputFileName(self):
        pass

    def getOutputFileName(self):
        pass

    def addLayerIntoCanvas(self, fileInfo):
        pass

    def finished(self, load):
        outFn = self.getOutputFileName()
        if outFn == None:
            return

        if outFn == '':
            QMessageBox.warning(self, self.tr("Warning"),
                                self.tr("No output file created."))
            return

        fileInfo = QFileInfo(outFn)
        if fileInfo.exists():
            if load:
                self.addLayerIntoCanvas(fileInfo)
            QMessageBox.information(self, self.tr("Finished"),
                                    self.tr("Processing completed."))
        else:
            #QMessageBox.warning(self, self.tr( "Warning" ), self.tr( "%1 not created." ).arg( outFn ) )
            QMessageBox.warning(self, self.tr("Warning"),
                                self.tr("%s not created.") % outFn)

    # This method is useful to set up options for the command. It sets for each passed widget:
    # 1. its passed signals to connect to the BasePluginWidget.someValueChanged() slot,
    # 2. its enabler checkbox or enabled status,
    # 3. its status as visible (hide) if the installed gdal version is greater or equal (lesser) then the passed version
    #
    # wdgts_sgnls_chk_ver_list: list of wdgts_sgnls_chk_ver
    #     wdgts_sgnls_chk_ver: tuple containing widgets, signals, enabler checkbox or enabled status, required version
    def setParamsStatus(self, wdgts_sgnls_chk_ver_list):
        if isinstance(wdgts_sgnls_chk_ver_list, list):
            for wdgts_sgnls_chk_ver in wdgts_sgnls_chk_ver_list:
                self.setParamsStatus(wdgts_sgnls_chk_ver)
            return

        wdgts_sgnls_chk_ver = wdgts_sgnls_chk_ver_list
        if not isinstance(wdgts_sgnls_chk_ver, tuple):
            return

        if len(wdgts_sgnls_chk_ver) > 0:
            wdgts = wdgts_sgnls_chk_ver[0]
        else:
            wdgts = None

        if len(wdgts_sgnls_chk_ver) > 1:
            sgnls = wdgts_sgnls_chk_ver[1]
        else:
            sgnls = None

        if len(wdgts_sgnls_chk_ver) > 2:
            chk = wdgts_sgnls_chk_ver[2]
        else:
            chk = None

        if len(wdgts_sgnls_chk_ver) > 3:
            ver = wdgts_sgnls_chk_ver[3]
        else:
            ver = None

        if isinstance(wdgts, list):
            for wdgt in wdgts:
                self.setParamsStatus((wdgt, sgnls, chk, ver))
            return

        wdgt = wdgts
        if not isinstance(wdgt, QWidget):
            return

        # if check version fails, disable the widget then hide both it and its enabler checkbox
        # new check for gdal 1.10, must update all widgets for this and then remove previous check
        if ver != None and isinstance(ver, int):
            gdalVerNum = Utils.GdalConfig.versionNum()
            if ver > gdalVerNum:
                wdgt.setVisible(False)
                if isinstance(chk, QWidget):
                    chk.setVisible(False)
                    chk.setChecked(False)
                sgnls = None
                chk = False

        elif ver != None:
            if not isinstance(ver, Utils.Version):
                ver = Utils.Version(ver)
            gdalVer = Utils.GdalConfig.version()
            if ver < "0" or (gdalVer != None and ver > gdalVer):
                wdgt.setVisible(False)
                if isinstance(chk, QWidget):
                    chk.setVisible(False)
                    chk.setChecked(False)
                sgnls = None
                chk = False

        # connects the passed signals to the BasePluginWidget.someValueChanged slot
        if isinstance(sgnls, list):
            for sgnl in sgnls:
                self.setParamsStatus((wdgt, sgnl, chk))
            return

        sgnl = sgnls
        if sgnl != None:
            self.connect(wdgt, sgnl, self.someValueChanged)

        # set the passed checkbox as widget enabler
        if isinstance(chk, bool):
            wdgt.setEnabled(chk)
        if ( isinstance(chk, QAbstractButton) or isinstance(chk, QGroupBox) ) and \
             chk.isCheckable():
            wdgt.setEnabled(chk.isChecked())
            self.connect(chk, SIGNAL("toggled(bool)"), wdgt.setEnabled)
            self.connect(chk, SIGNAL("toggled(bool)"), self.someValueChanged)