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()
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()
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()
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()
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()
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')