class QGISTileMillExportDialog(QtGui.QDialog):
    def __init__(self, vectorLayers):
        QtGui.QDialog.__init__(self)
        # Set up the user interface from Designer.
        self.ui = Ui_QGISTileMillExport()
        self.ui.setupUi(self)
        self.vectorLayers = vectorLayers
        QtCore.QObject.connect(self.ui.layerComboBox, QtCore.SIGNAL("currentIndexChanged(int)"), self.new_layer_selected)
        self.ui.layerComboBox.insertItems(0, [la.name() for la in self.vectorLayers])
    
    def new_layer_selected(self):
        #QtGui.QMessageBox.information(None,"TileMill Exporter","New Layer Selected: "+self.ui.layerComboBox.currentText())
        self.ui.mssTextBox.clear()
        self.ui.mssTextBox.appendPlainText(self.process_current_layer())
        self.ui.mssTextBox.selectAll()
    
    def get_current_layer(self):
        layerName = self.ui.layerComboBox.currentText()
        currentLayer = None
        for layer in self.vectorLayers:
            if layer.name() == layerName:
                currentLayer = layer
        return currentLayer
    
    def process_current_layer(self):
        return self.process_layer(self.get_current_layer())
    
    def process_layer(self, layer):
        if layer.isUsingRendererV2() and layer.rendererV2().type() == 'graduatedSymbol':
            return self.process_graduated_renderer(layer.rendererV2())
    
    def process_graduated_renderer(self, renderer):
        mss = ''
        attr = str(renderer.classAttribute())
        for i,ran in enumerate(renderer.ranges()):
            r = ran.symbol().symbolLayer(0).color().red()
            g = ran.symbol().symbolLayer(0).color().green()
            b = ran.symbol().symbolLayer(0).color().blue()
            a = ran.symbol().symbolLayer(0).color().alpha()
            if float(a) < 1:
                color = "rgba({},{},{},{})".format(r,g,b,a)
            else:
                color = "rgb({},{},{})".format(r,g,b)
            line_symbol = "line-color: {};".format(color)

            if i==0:
                mss += "[{} <= {:.5}]{{ {} }}\n".format(attr, ran.upperValue(), line_symbol)
            elif i==len(renderer.ranges())-1:
                mss+= "[{} > {:.5}]{{ {} }}\n".format(attr, ran.lowerValue(), line_symbol)
            else:
                mss += "[{attr} > {lower:.5}][{attr} <= {upper:.5}]{{ {sym} }}\n".format(attr=attr, lower=ran.lowerValue(), upper=ran.upperValue(), sym=line_symbol)
        return mss
 def __init__(self, vectorLayers):
     QtGui.QDialog.__init__(self)
     # Set up the user interface from Designer.
     self.ui = Ui_QGISTileMillExport()
     self.ui.setupUi(self)
     self.vectorLayers = vectorLayers
     QtCore.QObject.connect(self.ui.layerComboBox, QtCore.SIGNAL("currentIndexChanged(int)"), self.new_layer_selected)
     self.ui.layerComboBox.insertItems(0, [la.name() for la in self.vectorLayers])
 def __init__(self):
     QtGui.QDialog.__init__(self)
     # Set up the user interface from Designer.
     self.ui = Ui_QGISTileMillExport()
     self.ui.setupUi(self)