Ejemplo n.º 1
0
    def label_change_cb(self, *args):
        if self.layer is None or self.updating:
            return

        font = self.label_font.entry.get_chars(0, -1)
        field_name = self.label_field.entry.get_chars(0, -1)

        color = self.label_color.current_color
        color = gvogrfs.gv_to_ogr_color(color)

        ogrfs = self.layer.get_property('_gv_ogrfs_point')
        ogrfs_obj = gvogrfs.OGRFeatureStyle()
        try:
            ogrfs_obj.parse(ogrfs)
        except:
            print 'an error occurred parsing the ogrfs property:\n', ogrfs

        #remove the old label
        ogrfs_obj.remove_part('LABEL')

        if field_name != 'disabled' and len(field_name) != 0:
            ogrfs_label = gvogrfs.OGRFeatureStylePart()
            ogrfs_label.parse('LABEL(t:{%s},f:"%s",c:%s)' %
                              (field_name, font, color))
            ogrfs_obj.add_part(ogrfs_label)

        self.layer.set_property('_gv_ogrfs_point', ogrfs_obj.unparse())
        self.layer.display_change()
Ejemplo n.º 2
0
    def set_ogrfs(self, ogrfs_obj, layer=None):
        """
        set the ogr feature specification from the shape object passed,
        or from the layer if the shape has none, or provide a default
        """

        if ogrfs_obj is None:
            ogrfs_obj = gvogrfs.OGRFeatureStylePart()
            ogrfs_obj.parse('SYMBOL(id:"ogr-sym-0",c:#88FF88)')

        self.ogrfs_obj = ogrfs_obj
        self.layer = layer
        self.gui_update()
Ejemplo n.º 3
0
    def set_default_ogrfs(self, prototype):
        if prototype is None or len(prototype) == 0:
            return

        try:
            ogrfs_obj = gvogrfs.OGRFeatureStylePart()
            ogrfs_obj.parse(prototype)
        except:
            return

        text_parm = gvogrfs.OGRFeatureStyleParam()
        text_parm.parse('t:""')
        ogrfs_obj.set_parm(text_parm)

        self.default_ogrfs = ogrfs_obj.unparse()
Ejemplo n.º 4
0
    def set_ogrfs(self, ogrfs_obj, layer=None, fontlist=None, shape_obj=None):

        if layer is not None:
            self.layer = layer

        if ogrfs_obj is None:
            ogrfs_obj = gvogrfs.OGRFeatureStylePart()
            font = pgufont.XLFDFontSpec()
            default_font = gview.get_preference('default-font')
            if default_font is None:
                font.set_font_part('Family', 'fixed')
            else:
                font.parse_font_spec(default_font)
            if self.enable_offsets:
                dx = self.x_offset.get_value_as_float()
                dy = self.y_offset.get_value_as_float()
            ogrfs_obj.parse('LABEL(t:"",f:"%s",c:#88FF88)' % font)

        self.ogrfs_obj = ogrfs_obj
        self.shape_obj = shape_obj

        self.gui_update()
Ejemplo n.º 5
0
    def symbol_cb(self, widget, *args):
        """
        update the symbol.  This might have been called because the color
        changed also, so update the _point_color property too.
        """

        if self.layer is None or self.updating:
            return

        symbol = self.point_symbol.entry.get_text()

        ogrfs = self.layer.get_property('_gv_ogrfs_point')
        ogrfs_obj = gvogrfs.OGRFeatureStyle()
        try:
            ogrfs_obj.parse(ogrfs)
        except:
            print 'an error occurred parsing the ogrfs property:\n', ogrfs

        #remove the old symbol
        ogrfs_obj.remove_part('SYMBOL')

        point_sym_text = '"ogr-sym-%s"' % symbols.index(symbol)
        color = self.point_color.current_color
        #should this only be done on point layers?
        point_ogr_color = gvogrfs.gv_to_ogr_color(color)
        point_size = self.point_size.entry.get_text()
        ogr_part = 'SYMBOL(c:' + point_ogr_color + ',id:' + \
            point_sym_text + ')'
        ogrfs_sym = gvogrfs.OGRFeatureStylePart()
        ogrfs_sym.parse(ogr_part)
        ogrfs_obj.add_part(ogrfs_sym)

        self.layer.set_property('_gv_ogrfs_point', ogrfs_obj.unparse())

        prop = str(color[0]) + ' ' + str(color[1]) + \
              ' ' + str(color[2]) + ' ' + str(color[3])
        self.layer.set_property('_point_color', prop)
        self.layer.display_change()
Ejemplo n.º 6
0
    def label_change_cb(self, *args):
        if self.layer is None or self.updating:
            return

        font = self.label_font.get_font()
        field_name = self.label_field.entry.get_chars(0, -1)
        text_value = ''
        if self.text_entry is not None:
            text_value = self.text_entry.get_text()

        color = self.label_color.current_color
        color = gvogrfs.gv_to_ogr_color(color)

        import string
        x_off = ''
        y_off = ''

        if self.enable_offsets:
            #handle user editing of the values in the x and y offsets.
            #something odd happens when listening to the 'changed' signal
            #of the spin box, the text value is difference from the float
            #value, even if the values should match.  This hack forces the
            #spin buttons to update the value and exits because this
            #will be called again right away
            x = self.x_offset.get_value_as_float()
            y = self.y_offset.get_value_as_float()
            sx = self.x_offset.get_text()
            sy = self.y_offset.get_text()
            try:
                if float(sx) != x:
                    self.x_offset.set_value(float(sx))
                    return
                if float(sy) != y:
                    self.y_offset.set_value(float(sy))
                    return
            except:
                return
            if 0.0 != x:
                x_off = 'dx:%s,' % x

            if 0.0 != y:
                y_off = 'dy:%s,' % -y

        if field_name == 'disabled' or len(field_name) == 0:
            if text_value is not None:
                ogrfs = 'LABEL(%s%st:\"%s\",f:"%s",c:%s)' % \
                        (x_off, y_off, text_value,font,color)
            else:
                ogrfs = None
        else:
            ogrfs = 'LABEL(%s%st:{%s},f:"%s",c:%s)' % \
                        (x_off, y_off, field_name, font, color)

        if ogrfs is None:
            self.ogrfs_obj = None
        else:
            self.ogrfs_obj = gvogrfs.OGRFeatureStylePart()
            self.ogrfs_obj.parse(ogrfs)

        self.gui_update()

        self.notify('ogrfs-changed')