def rename_button_clicked_cb(self, button): """Rename the current brush; user is prompted for a new name""" bm = self.app.brushmanager src_brush = bm.selected_brush if not src_brush.name: dialogs.error(self, C_( 'brush settings editor: rename brush: error message', 'No brush selected!', )) return src_name_pp = src_brush.name.replace('_', ' ') dst_name = dialogs.ask_for_name( self, C_( "brush settings editor: rename brush: dialog title", "Rename Brush", ), src_name_pp, ) if not dst_name: return dst_name = dst_name.replace(' ', '_') # ensure we don't overwrite an existing brush by accident dst_deleted = None for group, brushes in bm.groups.iteritems(): for b2 in brushes: if b2.name == dst_name: if group == brushmanager.DELETED_BRUSH_GROUP: dst_deleted = b2 else: msg = C_( 'brush settings editor: rename brush: error message', 'A brush with this name already exists!', ) dialogs.error(self, msg) return logger.info("Renaming brush %r -> %r", src_brush.name, dst_name) if dst_deleted: deleted_group = brushmanager.DELETED_BRUSH_GROUP deleted_brushes = bm.get_group_brushes(deleted_group) deleted_brushes.remove(dst_deleted) bm.brushes_changed(deleted_brushes) # save src as dst src_name = src_brush.name src_brush.name = dst_name src_brush.save() src_brush.name = src_name # load dst dst_brush = brushmanager.ManagedBrush(bm, dst_name, persistent=True) dst_brush.load() # Replace src with dst, but keep src in the deleted list if it # is a stock brush self._delete_brush(src_brush, replacement=dst_brush) bm.select_brush(dst_brush)
def restore_brush_from_stroke_info(self, strokeinfo): """Restores the app brush from a stroke :param strokeinfo: Stroke details from the stroke map :type strokeinfo: lib.strokemap.StrokeShape """ mb = brushmanager.ManagedBrush(self.brushmanager) mb.brushinfo.load_from_string(strokeinfo.brush_string) self.brushmanager.select_brush(mb) self.brushmodifier.restore_context_of_selected_brush()