Пример #1
0
 def run(self):
   # create and show the MapServerExport dialog
   self.dlg = MapServerExportDialog(self.iface.mainWindow())
   # attach events to inputs and buttons
   QObject.connect(self.dlg.ui.btnChooseFile, SIGNAL("clicked()"), self.setMapFile)
   QObject.connect(self.dlg.ui.txtMapFilePath, SIGNAL("textChanged(QString)"), self.mapfileChanged)
   QObject.connect(self.dlg.ui.btnChooseProjectFile, SIGNAL("clicked()"), self.setProjectFile)
   QObject.connect(self.dlg.ui.chkExpLayersOnly, SIGNAL("clicked(bool)"), self.toggleLayersOnly)
   QObject.connect(self.dlg.ui.checkBoxCurrentProject, SIGNAL("clicked(bool)"), self.toggleUseCurrentProject)
   QObject.connect(self.dlg.ui.btnChooseFooterFile, SIGNAL("clicked()"), self.setFooterFile)
   QObject.connect(self.dlg.ui.btnChooseHeaderFile, SIGNAL("clicked()"), self.setHeaderFile)
   QObject.connect(self.dlg.ui.btnChooseTemplateFile, SIGNAL("clicked()"), self.setTemplateFile)
   QObject.connect(self.dlg.ui.buttonBox, SIGNAL("accepted()"), self.ok_clicked)
   QObject.connect(self.dlg.ui.buttonBox, SIGNAL("helpRequested()"), self.helpRequested)
   # qgs-project defaults to current instance
   project = QgsProject.instance()
   self.dlg.ui.txtQgisFilePath.setText(project.fileName())
   # get some settings from former successfull exports
   # defaults are defined in ms_export.py and set in mapserverexportdialog.py
   settings = QSettings()
   # map-file name and force mapfileChanged to enable/disable ok button
   self.dlg.ui.txtMapFilePath.setText(settings.value("/MapserverExport/mapfileName", ""))
   self.mapfileChanged(self.dlg.ui.txtMapFilePath.text())
   # map width and height
   if settings.contains("/MapserverExport/mapWidth"):
     self.dlg.ui.txtMapWidth.setText(settings.value("/MapserverExport/mapWidth"))
   if settings.contains("/MapserverExport/mapHeight"):
     self.dlg.ui.txtMapHeight.setText(settings.value("/MapserverExport/mapHeight"))
   # MapServer IMAGETYPE's [gif|png|jpeg|wbmp|gtiff|swf|userdefined]
   self.dlg.ui.cmbMapImageType.addItems(QStringList(["agg","png","gif","jpeg","wbmp","gtiff","swf","userdefined"]))
   if settings.contains("/MapserverExport/imageType"):
     idx = self.dlg.ui.cmbMapImageType.findText(settings.value("/MapserverExport/imageType"))
     self.dlg.ui.cmbMapImageType.setCurrentIndex(idx)
   # MapServer URL (default value already set by dialog defaults)
   if settings.contains("/MapserverExport/mapserverUrl"):
     self.dlg.ui.txtMapServerUrl.setText(settings.value("/MapserverExport/mapserverUrl"))
   # set title or default to one if none available
   title = project.title()
   if title == "":
     title = "QGIS-MAP"
   self.dlg.ui.txtMapName.setText(title)
   # TODO: fetch units used from current project
   # QGIS: Meters, Feet, Degrees, UnknownUnit since 1.4 also: DecimalDegrees, DegreesMinutesSeconds, DegreesDecimalMinutes
   # Mapserver: UNITS [feet|inches|kilometers|meters|miles|dd]
   self.dlg.show()
Пример #2
0
 def run(self): 
   # create and show the MapServerExport dialog 
   self.dlg = MapServerExportDialog()
   # attach events to inputs and buttons
   QObject.connect(self.dlg.ui.btnChooseFile, SIGNAL("clicked()"), self.setMapFile)
   QObject.connect(self.dlg.ui.txtMapFilePath, SIGNAL("textChanged(QString)"), self.mapfileChanged)
   QObject.connect(self.dlg.ui.btnChooseProjectFile, SIGNAL("clicked()"), self.setProjectFile)
   QObject.connect(self.dlg.ui.chkExpLayersOnly, SIGNAL("clicked(bool)"), self.toggleLayersOnly)
   QObject.connect(self.dlg.ui.checkBoxCurrentProject, SIGNAL("clicked(bool)"), self.toggleUseCurrentProject)
   QObject.connect(self.dlg.ui.btnChooseFooterFile, SIGNAL("clicked()"), self.setFooterFile)
   QObject.connect(self.dlg.ui.btnChooseHeaderFile, SIGNAL("clicked()"), self.setHeaderFile)
   QObject.connect(self.dlg.ui.btnChooseTemplateFile, SIGNAL("clicked()"), self.setTemplateFile)
   QObject.connect(self.dlg.ui.buttonBox, SIGNAL("accepted()"), self.ok_clicked)
   QObject.connect(self.dlg.ui.buttonBox, SIGNAL("helpRequested()"), self.helpRequested)
   # qgs-project defaults to current instance
   project = QgsProject.instance()
   self.dlg.ui.txtQgisFilePath.setText(project.fileName())
   # get some settings from former successfull exports
   # defaults are defined in ms_export.py and set in mapserverexportdialog.py
   settings = QSettings()
   # map-file name and force mapfileChanged to enable/disable ok button
   self.dlg.ui.txtMapFilePath.setText(settings.value("/MapserverExport/mapfileName", QVariant("")).toString ()) 
   self.mapfileChanged(self.dlg.ui.txtMapFilePath.text())
   # map width and height
   if settings.contains("/MapserverExport/mapWidth"):
     self.dlg.ui.txtMapWidth.setText(settings.value("/MapserverExport/mapWidth").toString ())
   if settings.contains("/MapserverExport/mapHeight"):
     self.dlg.ui.txtMapHeight.setText(settings.value("/MapserverExport/mapHeight").toString ())
   # MapServer IMAGETYPE's [gif|png|jpeg|wbmp|gtiff|swf|userdefined]
   self.dlg.ui.cmbMapImageType.addItems(QStringList(["agg","png","gif","jpeg","wbmp","gtiff","swf","userdefined"]))
   if settings.contains("/MapserverExport/imageType"):
     idx = self.dlg.ui.cmbMapImageType.findText(settings.value("/MapserverExport/imageType").toString ())
     self.dlg.ui.cmbMapImageType.setCurrentIndex(idx)
   # MapServer URL (default value already set by dialog defaults)
   if settings.contains("/MapserverExport/mapserverUrl"):
     self.dlg.ui.txtMapServerUrl.setText(settings.value("/MapserverExport/mapserverUrl").toString())
   # set title or default to one if none available
   title = project.title()
   if title == "":
     title = "QGIS-MAP"
   self.dlg.ui.txtMapName.setText(title)
   # TODO: fetch units used from current project
   # QGIS: Meters, Feet, Degrees, UnknownUnit since 1.4 also: DecimalDegrees, DegreesMinutesSeconds, DegreesDecimalMinutes 	
   # Mapserver: UNITS [feet|inches|kilometers|meters|miles|dd]
   self.dlg.show()
Пример #3
0
  def run(self): 
    # create and show the MapServerExport dialog 
    self.dlg = MapServerExportDialog() 
    #dlg.setupUi(self)
    # fetch the last used values from settings and intialize the
    # dialog with them
    #settings = QSettings("MicroResources", "ZoomToPoint")
    #xValue = settings.value("coordinate/x")
    #dlg.ui.xCoord.setText(str(xValue.toString()))
    #yValue = settings.value("coordinate/y")
    #dlg.ui.yCoord.setText(str(yValue.toString()))
    #scale = settings.value("zoom/scale", QVariant(4))
    #dlg.ui.spinBoxScale.setValue(scale.toInt()[0])
    QObject.connect(self.dlg.ui.btnChooseFile, SIGNAL("clicked()"), self.setSaveFile)
    QObject.connect(self.dlg.ui.btnChooseProjectFile, SIGNAL("clicked()"), self.setProjectFile)
    QObject.connect(self.dlg.ui.chkExpLayersOnly, SIGNAL("clicked(bool)"), self.toggleLayersOnly)
    QObject.connect(self.dlg.ui.btnChooseFooterFile, SIGNAL("clicked()"), self.setFooterFile)
    QObject.connect(self.dlg.ui.btnChooseHeaderFile, SIGNAL("clicked()"), self.setHeaderFile)
    QObject.connect(self.dlg.ui.btnChooseTemplateFile, SIGNAL("clicked()"), self.setTemplateFile)

    self.dlg.show()
    result = self.dlg.exec_() 
    # See if OK was pressed
    if result == 1: 
      # get the settings from the dialog and export the map file
      print "Creating exporter using %s and %s" % (self.dlg.ui.txtQgisFilePath.text(), self.dlg.ui.txtMapFilePath.text())
      exporter = Qgis2Map(unicode(self.dlg.ui.txtQgisFilePath.text()), unicode(self.dlg.ui.txtMapFilePath.text()))
      print "Setting options"
      exporter.setOptions( 
          unicode(self.dlg.ui.cmbMapUnits.itemData( self.dlg.ui.cmbMapUnits.currentIndex() ).toString()),
          unicode(self.dlg.ui.cmbMapImageType.currentText()),
          unicode(self.dlg.ui.txtMapName.text()),
          unicode(self.dlg.ui.txtMapWidth.text()),
          unicode(self.dlg.ui.txtMapHeight.text()),
          unicode(self.dlg.ui.txtWebTemplate.text()),
          unicode(self.dlg.ui.txtWebFooter.text()),
          unicode(self.dlg.ui.txtWebHeader.text())
          )
      print "Calling writeMapFile"
      result = exporter.writeMapFile()
      QMessageBox.information(None, "MapServer Export Results", result)
Пример #4
0
class MapServerExport:
    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface

    def setCurrentTheme(self, theThemeName):
        # Set icons to the current theme
        self.action.setIcon(self.getThemeIcon("mapserver_export.png"))

    def getThemeIcon(self, theName):
        # get the icon from the best available theme
        myCurThemePath = QgsApplication.activeThemePath(
        ) + "/plugins/" + theName
        myDefThemePath = QgsApplication.defaultThemePath(
        ) + "/plugins/" + theName
        myQrcPath = ":/plugins/mapserver_export/" + theName
        if QFile.exists(myCurThemePath):
            return QIcon(myCurThemePath)
        elif QFile.exists(myDefThemePath):
            return QIcon(myDefThemePath)
        elif QFile.exists(myQrcPath):
            return QIcon(myQrcPath)
        else:
            return QIcon()

    def initGui(self):
        # Create action that will start plugin configuration
        self.action = QAction(self.getThemeIcon("mapserver_export.png"), \
            "MapServer Export", self.iface.mainWindow())
        # connect the action to the run method
        QObject.connect(self.action, SIGNAL("triggered()"), self.run)
        QObject.connect(self.iface, SIGNAL("currentThemeChanged ( QString )"),
                        self.setCurrentTheme)
        # Add toolbar button and menu item
        self.iface.addWebToolBarIcon(self.action)
        self.iface.addPluginToWebMenu("&MapServer Export...", self.action)

    def unload(self):
        # Remove the plugin menu item and icon
        self.iface.removePluginWebMenu("&MapServer Export...", self.action)
        self.iface.removeWebToolBarIcon(self.action)

    # run method that performs all the real work
    def run(self):
        # create and show the MapServerExport dialog
        self.dlg = MapServerExportDialog(self.iface.mainWindow())
        # attach events to inputs and buttons
        QObject.connect(self.dlg.ui.btnChooseFile, SIGNAL("clicked()"),
                        self.setMapFile)
        QObject.connect(self.dlg.ui.txtMapFilePath,
                        SIGNAL("textChanged(QString)"), self.mapfileChanged)
        QObject.connect(self.dlg.ui.btnChooseProjectFile, SIGNAL("clicked()"),
                        self.setProjectFile)
        QObject.connect(self.dlg.ui.chkExpLayersOnly, SIGNAL("clicked(bool)"),
                        self.toggleLayersOnly)
        QObject.connect(self.dlg.ui.checkBoxCurrentProject,
                        SIGNAL("clicked(bool)"), self.toggleUseCurrentProject)
        QObject.connect(self.dlg.ui.btnChooseFooterFile, SIGNAL("clicked()"),
                        self.setFooterFile)
        QObject.connect(self.dlg.ui.btnChooseHeaderFile, SIGNAL("clicked()"),
                        self.setHeaderFile)
        QObject.connect(self.dlg.ui.btnChooseTemplateFile, SIGNAL("clicked()"),
                        self.setTemplateFile)
        QObject.connect(self.dlg.ui.buttonBox, SIGNAL("accepted()"),
                        self.ok_clicked)
        QObject.connect(self.dlg.ui.buttonBox, SIGNAL("helpRequested()"),
                        self.helpRequested)
        # qgs-project defaults to current instance
        project = QgsProject.instance()
        self.dlg.ui.txtQgisFilePath.setText(project.fileName())
        # get some settings from former successfull exports
        # defaults are defined in ms_export.py and set in mapserverexportdialog.py
        settings = QSettings()
        # map-file name and force mapfileChanged to enable/disable ok button
        self.dlg.ui.txtMapFilePath.setText(
            settings.value("/MapserverExport/mapfileName",
                           QVariant("")).toString())
        self.mapfileChanged(self.dlg.ui.txtMapFilePath.text())
        # map width and height
        if settings.contains("/MapserverExport/mapWidth"):
            self.dlg.ui.txtMapWidth.setText(
                settings.value("/MapserverExport/mapWidth").toString())
        if settings.contains("/MapserverExport/mapHeight"):
            self.dlg.ui.txtMapHeight.setText(
                settings.value("/MapserverExport/mapHeight").toString())
        # MapServer IMAGETYPE's [gif|png|jpeg|wbmp|gtiff|swf|userdefined]
        self.dlg.ui.cmbMapImageType.addItems(
            QStringList([
                "agg", "png", "gif", "jpeg", "wbmp", "gtiff", "swf",
                "userdefined"
            ]))
        if settings.contains("/MapserverExport/imageType"):
            idx = self.dlg.ui.cmbMapImageType.findText(
                settings.value("/MapserverExport/imageType").toString())
            self.dlg.ui.cmbMapImageType.setCurrentIndex(idx)
        # MapServer URL (default value already set by dialog defaults)
        if settings.contains("/MapserverExport/mapserverUrl"):
            self.dlg.ui.txtMapServerUrl.setText(
                settings.value("/MapserverExport/mapserverUrl").toString())
        # set title or default to one if none available
        title = project.title()
        if title == "":
            title = "QGIS-MAP"
        self.dlg.ui.txtMapName.setText(title)
        # TODO: fetch units used from current project
        # QGIS: Meters, Feet, Degrees, UnknownUnit since 1.4 also: DecimalDegrees, DegreesMinutesSeconds, DegreesDecimalMinutes
        # Mapserver: UNITS [feet|inches|kilometers|meters|miles|dd]
        self.dlg.show()

    def helpRequested(self):
        QgsContextHelp.run("MapServerExport")

    def ok_clicked(self):
        # check if current project is saved or dirty
        if not self.checkCurrentProject():
            # abort because user apparently did not wat to save or Cancelled
            return
        if not self.checkMapFile():
            print "Failed for Map file check, try again..."
            return
        else:
            self.saveMapFile()

    def toggleUseCurrentProject(self, boolUseCurrent):
        self.dlg.ui.txtQgisFilePath.setEnabled(not boolUseCurrent)
        self.dlg.ui.btnChooseProjectFile.setEnabled(not boolUseCurrent)
        if boolUseCurrent:
            #if self.dlg.ui.txtQgisFilePath.text().size() == 0:
            # reload path of current project
            self.dlg.ui.txtQgisFilePath.setText(
                QgsProject.instance().fileName())
        else:
            # open dialog to choose project file
            self.setProjectFile()

    def saveMapFile(self):
        # get the settings from the dialog and export the map file
        print "Creating exporter using '%s' and '%s'" % (
            self.dlg.ui.txtQgisFilePath.text(),
            self.dlg.ui.txtMapFilePath.text())
        exporter = Qgis2Map(unicode(self.dlg.ui.txtMapFilePath.text()))
        # Parse qgis project file and check success
        if not (exporter.setQgsProject(self.dlg.ui.txtQgisFilePath.text())):
            QMessageBox.warning(
                self.dlg, "No Map file export!",
                "Map file not exported because no valid qgis project file was given."
            )
            return
        if exporter.projectHasNewSymbology():
            QMessageBox.information(
                self.dlg, "New Symbology layer(s) found",
                "The project you selected holds layer(s) which use 'New Symbology'.\n\nCurrently this plugin is not able to handle this.\n\nPlease change symbology of these layer(s) to 'Old Symbology'."
            )
            self.dlg.hide()
            return
        self.dlg.hide()
        print "Setting options"
        exporter.setOptions(
            unicode(self.dlg.ui.txtMapServerUrl.text()),
            unicode(
                self.dlg.ui.cmbMapUnits.itemData(
                    self.dlg.ui.cmbMapUnits.currentIndex()).toString()),
            unicode(self.dlg.ui.cmbMapImageType.currentText()),
            unicode(self.dlg.ui.txtMapName.text()),
            unicode(self.dlg.ui.txtMapWidth.text()),
            unicode(self.dlg.ui.txtMapHeight.text()),
            unicode(self.dlg.ui.txtWebTemplate.text()),
            unicode(self.dlg.ui.txtWebHeader.text()),
            unicode(self.dlg.ui.txtWebFooter.text()),
            self.dlg.ui.checkBoxDump.isChecked(),
            self.dlg.ui.checkBoxForce.isChecked(),
            self.dlg.ui.checkBoxAntiAlias.isChecked(),
            self.dlg.ui.checkBoxPartials.isChecked(),
            self.dlg.ui.chkExpLayersOnly.isChecked(),
            unicode(self.dlg.ui.txtFontsetPath.text()),
            unicode(self.dlg.ui.txtSymbolsetPath.text()))
        print "Calling writeMapFile"
        try:
            result = exporter.writeMapFile()
        except Exception, err:
            QMessageBox.information(self.dlg, "MapServer Export Error",
                                    str(err))
            return
        # ok succesfull: write some setting for a next session
        settings = QSettings()
        # mapfile name
        settings.setValue("/MapserverExport/mapfileName",
                          QVariant(self.dlg.ui.txtMapFilePath.text()))
        # map width and height
        settings.setValue("/MapserverExport/mapWidth",
                          QVariant(self.dlg.ui.txtMapWidth.text()))
        settings.setValue("/MapserverExport/mapHeight",
                          QVariant(self.dlg.ui.txtMapHeight.text()))
        # mapserver url
        settings.setValue("/MapserverExport/mapserverUrl",
                          QVariant(self.dlg.ui.txtMapServerUrl.text()))
        # map ImageType
        settings.setValue("/MapserverExport/imageType",
                          QVariant(self.dlg.ui.cmbMapImageType.currentText()))
        # show results
        QMessageBox.information(self.dlg, "MapServer Export Results", result)
Пример #5
0
class MapServerExport: 

  def __init__(self, iface):
    # Save reference to the QGIS interface
    self.iface = iface

  def setCurrentTheme(self, theThemeName):
    # Set icons to the current theme
    self.action.setIcon(self.getThemeIcon("mapserver_export.png"))

  def getThemeIcon(self, theName):
    # get the icon from the best available theme
    myCurThemePath = QgsApplication.activeThemePath() + "/plugins/" + theName;
    myDefThemePath = QgsApplication.defaultThemePath() + "/plugins/" + theName;
    myQrcPath = ":/plugins/mapserver_export/" + theName;
    if QFile.exists(myCurThemePath):
      return QIcon(myCurThemePath)
    elif QFile.exists(myDefThemePath):
      return QIcon(myDefThemePath)
    elif QFile.exists(myQrcPath):
      return QIcon(myQrcPath)
    else:
      return QIcon()

  def initGui(self):  
    # Create action that will start plugin configuration
    self.action = QAction(self.getThemeIcon("mapserver_export.png"), \
        "MapServer Export", self.iface.mainWindow())
    # connect the action to the run method
    QObject.connect(self.action, SIGNAL("triggered()"), self.run) 
    QObject.connect(self.iface, SIGNAL("currentThemeChanged ( QString )"), self.setCurrentTheme)
    # Add toolbar button and menu item
    self.iface.addToolBarIcon(self.action)
    self.iface.addPluginToMenu("&MapServer Export...", self.action)

  def unload(self):
    # Remove the plugin menu item and icon
    self.iface.removePluginMenu("&MapServer Export...",self.action)
    self.iface.removeToolBarIcon(self.action)

  # run method that performs all the real work
  def run(self): 
    # create and show the MapServerExport dialog 
    self.dlg = MapServerExportDialog()
    # attach events to inputs and buttons
    QObject.connect(self.dlg.ui.btnChooseFile, SIGNAL("clicked()"), self.setMapFile)
    QObject.connect(self.dlg.ui.txtMapFilePath, SIGNAL("textChanged(QString)"), self.mapfileChanged)
    QObject.connect(self.dlg.ui.btnChooseProjectFile, SIGNAL("clicked()"), self.setProjectFile)
    QObject.connect(self.dlg.ui.chkExpLayersOnly, SIGNAL("clicked(bool)"), self.toggleLayersOnly)
    QObject.connect(self.dlg.ui.checkBoxCurrentProject, SIGNAL("clicked(bool)"), self.toggleUseCurrentProject)
    QObject.connect(self.dlg.ui.btnChooseFooterFile, SIGNAL("clicked()"), self.setFooterFile)
    QObject.connect(self.dlg.ui.btnChooseHeaderFile, SIGNAL("clicked()"), self.setHeaderFile)
    QObject.connect(self.dlg.ui.btnChooseTemplateFile, SIGNAL("clicked()"), self.setTemplateFile)
    QObject.connect(self.dlg.ui.buttonBox, SIGNAL("accepted()"), self.ok_clicked)
    QObject.connect(self.dlg.ui.buttonBox, SIGNAL("helpRequested()"), self.helpRequested)
    # qgs-project defaults to current instance
    project = QgsProject.instance()
    self.dlg.ui.txtQgisFilePath.setText(project.fileName())
    # get some settings from former successfull exports
    # defaults are defined in ms_export.py and set in mapserverexportdialog.py
    settings = QSettings()
    # map-file name and force mapfileChanged to enable/disable ok button
    self.dlg.ui.txtMapFilePath.setText(settings.value("/MapserverExport/mapfileName", QVariant("")).toString ()) 
    self.mapfileChanged(self.dlg.ui.txtMapFilePath.text())
    # map width and height
    if settings.contains("/MapserverExport/mapWidth"):
      self.dlg.ui.txtMapWidth.setText(settings.value("/MapserverExport/mapWidth").toString ())
    if settings.contains("/MapserverExport/mapHeight"):
      self.dlg.ui.txtMapHeight.setText(settings.value("/MapserverExport/mapHeight").toString ())
    # MapServer IMAGETYPE's [gif|png|jpeg|wbmp|gtiff|swf|userdefined]
    self.dlg.ui.cmbMapImageType.addItems(QStringList(["agg","png","gif","jpeg","wbmp","gtiff","swf","userdefined"]))
    if settings.contains("/MapserverExport/imageType"):
      idx = self.dlg.ui.cmbMapImageType.findText(settings.value("/MapserverExport/imageType").toString ())
      self.dlg.ui.cmbMapImageType.setCurrentIndex(idx)
    # MapServer URL (default value already set by dialog defaults)
    if settings.contains("/MapserverExport/mapserverUrl"):
      self.dlg.ui.txtMapServerUrl.setText(settings.value("/MapserverExport/mapserverUrl").toString())
    # set title or default to one if none available
    title = project.title()
    if title == "":
      title = "QGIS-MAP"
    self.dlg.ui.txtMapName.setText(title)
    # TODO: fetch units used from current project
    # QGIS: Meters, Feet, Degrees, UnknownUnit since 1.4 also: DecimalDegrees, DegreesMinutesSeconds, DegreesDecimalMinutes 	
    # Mapserver: UNITS [feet|inches|kilometers|meters|miles|dd]
    self.dlg.show()

  def helpRequested(self):
    QgsContextHelp.run( "MapServerExport" )

  def ok_clicked(self):
    # check if current project is saved or dirty
    if not self.checkCurrentProject():
      # abort because user apparently did not wat to save or Cancelled
      return
    if not self.checkMapFile():
      print "Failed for Map file check, try again..."
      return
    else:
      self.saveMapFile()

  def toggleUseCurrentProject(self, boolUseCurrent):
    self.dlg.ui.txtQgisFilePath.setEnabled(not boolUseCurrent)
    self.dlg.ui.btnChooseProjectFile.setEnabled(not boolUseCurrent)
    if boolUseCurrent:
      #if self.dlg.ui.txtQgisFilePath.text().size() == 0:
      # reload path of current project
      self.dlg.ui.txtQgisFilePath.setText(QgsProject.instance().fileName())
    else:  
      # open dialog to choose project file
      self.setProjectFile()
    

  def saveMapFile(self):   
    # get the settings from the dialog and export the map file
    print "Creating exporter using '%s' and '%s'" % (self.dlg.ui.txtQgisFilePath.text(), self.dlg.ui.txtMapFilePath.text())
    exporter = Qgis2Map(unicode(self.dlg.ui.txtMapFilePath.text()))
    # Parse qgis project file and check success
    if not(exporter.setQgsProject(self.dlg.ui.txtQgisFilePath.text())):
      QMessageBox.warning(self.dlg, "No Map file export!", "Map file not exported because no valid qgis project file was given.")
      return
    self.dlg.hide()
    print "Setting options"
    exporter.setOptions(
        unicode(self.dlg.ui.txtMapServerUrl.text()),
        unicode(self.dlg.ui.cmbMapUnits.itemData( self.dlg.ui.cmbMapUnits.currentIndex() ).toString()),
        unicode(self.dlg.ui.cmbMapImageType.currentText()),
        unicode(self.dlg.ui.txtMapName.text()),
        unicode(self.dlg.ui.txtMapWidth.text()),
        unicode(self.dlg.ui.txtMapHeight.text()),
        unicode(self.dlg.ui.txtWebTemplate.text()),
        unicode(self.dlg.ui.txtWebHeader.text()),
        unicode(self.dlg.ui.txtWebFooter.text()),
        self.dlg.ui.checkBoxDump.isChecked(),
        self.dlg.ui.checkBoxForce.isChecked(),
        self.dlg.ui.checkBoxAntiAlias.isChecked(),
        self.dlg.ui.checkBoxPartials.isChecked(),
        self.dlg.ui.chkExpLayersOnly.isChecked(),
        unicode(self.dlg.ui.txtFontsetPath.text()),
        unicode(self.dlg.ui.txtSymbolsetPath.text())
    )
    print "Calling writeMapFile"
    try:
      result = exporter.writeMapFile()
    except Exception, err:
      QMessageBox.information(self.dlg, "MapServer Export Error", str(err))
      return
    # ok succesfull: write some setting for a next session
    settings = QSettings()
    # mapfile name 
    settings.setValue("/MapserverExport/mapfileName", QVariant(self.dlg.ui.txtMapFilePath.text()))
    # map width and heigth
    settings.setValue("/MapserverExport/mapWidth", QVariant(self.dlg.ui.txtMapWidth.text()))
    settings.setValue("/MapserverExport/mapHeight", QVariant(self.dlg.ui.txtMapHeight.text()))
    # mapserver url
    settings.setValue("/MapserverExport/mapserverUrl", QVariant(self.dlg.ui.txtMapServerUrl.text()))
    # map ImageType
    settings.setValue("/MapserverExport/imageType", QVariant(self.dlg.ui.cmbMapImageType.currentText()))
    # show results
    QMessageBox.information(self.dlg, "MapServer Export Results", result)
Пример #6
0
class MapServerExport: 

  def __init__(self, iface):
    # Save reference to the QGIS interface
    self.iface = iface

  def initGui(self):  
    # Create action that will start plugin configuration
    self.action = QAction(QIcon(":/plugins/mapserver_export/icon.png"), \
        "MapServer Export", self.iface.mainWindow())
    #self.action.setWhatsThis("Configuration for Zoom To Point plugin")
    # connect the action to the run method
    QObject.connect(self.action, SIGNAL("activated()"), self.run) 

    # Add toolbar button and menu item
    self.iface.addToolBarIcon(self.action)
    self.iface.addPluginToMenu("&MapServer Export...", self.action)

  def unload(self):
    # Remove the plugin menu item and icon
    self.iface.removePluginMenu("&MapServer Export...",self.action)
    self.iface.removeToolBarIcon(self.action)

  # run method that performs all the real work
  def run(self): 
    # create and show the MapServerExport dialog 
    self.dlg = MapServerExportDialog() 
    #dlg.setupUi(self)
    # fetch the last used values from settings and intialize the
    # dialog with them
    #settings = QSettings("MicroResources", "ZoomToPoint")
    #xValue = settings.value("coordinate/x")
    #dlg.ui.xCoord.setText(str(xValue.toString()))
    #yValue = settings.value("coordinate/y")
    #dlg.ui.yCoord.setText(str(yValue.toString()))
    #scale = settings.value("zoom/scale", QVariant(4))
    #dlg.ui.spinBoxScale.setValue(scale.toInt()[0])
    QObject.connect(self.dlg.ui.btnChooseFile, SIGNAL("clicked()"), self.setSaveFile)
    QObject.connect(self.dlg.ui.btnChooseProjectFile, SIGNAL("clicked()"), self.setProjectFile)
    QObject.connect(self.dlg.ui.chkExpLayersOnly, SIGNAL("clicked(bool)"), self.toggleLayersOnly)
    QObject.connect(self.dlg.ui.btnChooseFooterFile, SIGNAL("clicked()"), self.setFooterFile)
    QObject.connect(self.dlg.ui.btnChooseHeaderFile, SIGNAL("clicked()"), self.setHeaderFile)
    QObject.connect(self.dlg.ui.btnChooseTemplateFile, SIGNAL("clicked()"), self.setTemplateFile)

    self.dlg.show()
    result = self.dlg.exec_() 
    # See if OK was pressed
    if result == 1: 
      # get the settings from the dialog and export the map file
      print "Creating exporter using %s and %s" % (self.dlg.ui.txtQgisFilePath.text(), self.dlg.ui.txtMapFilePath.text())
      exporter = Qgis2Map(unicode(self.dlg.ui.txtQgisFilePath.text()), unicode(self.dlg.ui.txtMapFilePath.text()))
      print "Setting options"
      exporter.setOptions( 
          unicode(self.dlg.ui.cmbMapUnits.itemData( self.dlg.ui.cmbMapUnits.currentIndex() ).toString()),
          unicode(self.dlg.ui.cmbMapImageType.currentText()),
          unicode(self.dlg.ui.txtMapName.text()),
          unicode(self.dlg.ui.txtMapWidth.text()),
          unicode(self.dlg.ui.txtMapHeight.text()),
          unicode(self.dlg.ui.txtWebTemplate.text()),
          unicode(self.dlg.ui.txtWebFooter.text()),
          unicode(self.dlg.ui.txtWebHeader.text())
          )
      print "Calling writeMapFile"
      result = exporter.writeMapFile()
      QMessageBox.information(None, "MapServer Export Results", result)

  def setSaveFile(self):
    mapFile = QFileDialog.getSaveFileName(self.dlg, "Name for the map file", \
      ".", "MapServer map files (*.map);;All files (*.*)","Filter list for selecting files from a dialog box")
    self.dlg.ui.txtMapFilePath.setText(mapFile)

  def setProjectFile(self):
    qgisProjectFile = QFileDialog.getOpenFileName(self.dlg, "Choose the QGIS Project file", \
        ".", "QGIS Project Files (*.qgs);;All files (*.*)", "Filter list for selecting files from a dialog box")
    self.dlg.ui.txtQgisFilePath.setText(qgisProjectFile)

  def setTemplateFile(self):
    templateFile = QFileDialog.getOpenFileName(self.dlg, 
        "Choose the MapServer template file", 
        ".", 
        "All files (*.*)", 
        "Filter list for selecting files from a dialog box")
    self.dlg.ui.txtWebTemplate.setText(templateFile)

  def setHeaderFile(self):
    headerFile = QFileDialog.getOpenFileName(self.dlg, 
        "Choose the MapServer header file", 
        ".", 
        "All files (*.*)", 
        "Filter list for selecting files from a dialog box")
    self.dlg.ui.txtWebHeader.setText(headerFile)

  def setFooterFile(self):
    footerFile = QFileDialog.getOpenFileName(self.dlg, 
        "Choose the MapServer footer file", 
        ".", 
        "All files (*.*)", 
        "Filter list for selecting files from a dialog box")
    self.dlg.ui.txtWebFooter.setText(footerFile)

  def apply(self):
    # create the map file
    foo = 'bar'
  
  def toggleLayersOnly(self, isChecked):
    # disable other sections if only layer export is desired
    self.dlg.ui.txtMapName.setEnabled(not isChecked)
    self.dlg.ui.txtMapWidth.setEnabled(not isChecked)
    self.dlg.ui.txtMapHeight.setEnabled(not isChecked)
    self.dlg.ui.cmbMapUnits.setEnabled(not isChecked)
    self.dlg.ui.cmbMapImageType.setEnabled(not isChecked)
    self.dlg.ui.txtWebTemplate.setEnabled(not isChecked)
    self.dlg.ui.txtWebHeader.setEnabled(not isChecked)
    self.dlg.ui.txtWebFooter.setEnabled(not isChecked)
    self.dlg.ui.btnChooseFooterFile.setEnabled(not isChecked)
    self.dlg.ui.btnChooseHeaderFile.setEnabled(not isChecked)
    self.dlg.ui.btnChooseTemplateFile.setEnabled(not isChecked)