def apply_callback(self, sender): font = CurrentFont() _layer_name = self.w._layer_name.get() if _layer_name in font.layerOrder: print 'deleting layer %s...' % _layer_name font.removeLayer(_layer_name) print '...done.\n' font.update() else: print 'font does not have layer %s.' % _layer_name
class deleteLayerDialog(hDialog): """A dialog to delete a layer in a font. .. image:: imgs/font/delete-layer.png """ # attributes #: The font which is currently selected. font = None #: A list of all layers in the current font. layers = [] # methods def __init__(self): self.get_font() # window self.title = 'delete layers' self.height = self.button_height + (self.padding_y * 3) + (self.text_height * 8) self.w = FloatingWindow((self.width * 1.5, self.height), self.title) x = self.padding_x y = self.padding_y self.w.layers = List((x, y, -self.padding_x, self.text_height * 8), self.layers) y += self.padding_y + self.text_height * 8 self.w.button_apply = SquareButton( (x, y, -self.padding_x, self.button_height), "delete", sizeStyle=self.size_style, callback=self.apply_callback) # bind self.w.bind("became key", self.update_callback) self.w.bind("close", self.on_close_window) # observers addObserver(self, "update_callback", "fontBecameCurrent") # open self.w.open() # callbacks def get_font(self): self.font = CurrentFont() if self.font is not None: self.layers = self.font.layerOrder else: self.layers = [] def update_ui(self): self.layers = self.font.layerOrder self.w.layers.set(self.layers) def update_callback(self, sender): self.get_font() self.update_ui() def apply_callback(self, sender): # no font open if self.font is None: print(no_font_open) # delete layer else: layers_index = self.w.layers.getSelection() layers = [self.layers[i] for i in layers_index] if len(layers): print('deleting layers...\n') for layer in layers: if layer in self.font.layerOrder: print('\tdeleting %s...' % layer) self.font.removeLayer(layer) self.font.update() print() print('...done.\n') # update UI self.get_font() self.update_ui() else: print('no layer selected.') def on_close_window(self, sender): removeObserver(self, "fontBecameCurrent")
class deleteLayerDialog(hDialog): '''A dialog to delete a layer in a font. .. image:: imgs/font/delete-layer.png ''' #: The font which is currently selected. font = None #: A list of all layers in the current font. layers = [] def __init__(self): self.get_font() # window self.title = 'layers' self.height = self.button_height + (self.padding_y*3) + (self.text_height*8) self.w = HUDFloatingWindow((self.width, self.height), self.title) x = self.padding_x y = self.padding_y self.w.layers = List( (x, y, -self.padding_x, self.text_height*8), self.layers) y += self.padding_y + self.text_height*8 self.w.button_apply = SquareButton( (x, y, -self.padding_x, self.button_height), "delete", sizeStyle=self.size_style, callback=self.apply_callback) # bind self.w.bind("became key", self.update_callback) self.w.bind("close", self.on_close_window) # observers addObserver(self, "update_callback", "fontBecameCurrent") # open self.w.open() # callbacks def get_font(self): self.font = CurrentFont() if self.font is not None: self.layers = self.font.layerOrder else: self.layers = [] def update_ui(self): self.layers = self.font.layerOrder self.w.layers.set(self.layers) def update_callback(self, sender): self.get_font() self.update_ui() def apply_callback(self, sender): # no font open if self.font is None: print no_font_open # delete layer else: layers_index = self.w.layers.getSelection() layers = [self.layers[i] for i in layers_index] if len(layers): print 'deleting layers...\n' for layer in layers: if layer in self.font.layerOrder: print '\tdeleting %s...' % layer self.font.removeLayer(layer) self.font.changed() print print '...done.\n' # update UI self.get_font() self.update_ui() else: print 'no layer selected.' def on_close_window(self, sender): removeObserver(self, "fontBecameCurrent")
class deleteLayerDialog(hDialog): """A dialog to delete a layer in a font. .. image:: imgs/font/delete-layer.png """ # attributes #: The font which is currently selected. font = None #: A list of all layers in the current font. layers = [] # methods def __init__(self): self.get_font() # window self.title = 'layers' self.column_1 = 50 self.column_2 = 140 self.height = self.button_height + (self.padding_y * 3) + (self.text_height * 1) #+ 2 self.w = FloatingWindow((self.width, self.height), self.title) x = self.padding_x y = self.padding_y # self.w.layer_name_label = TextBox( # (x, y - 2, # -self.padding_x, # self.text_height), # "name", # sizeStyle=self.size_style) # y += self.text_height self.w.layers = PopUpButton( (x, y, -self.padding_x, self.text_height), self.layers, sizeStyle=self.size_style) x = self.padding_x y += self.padding_y + self.text_height self.w.button_apply = SquareButton( (x, y, -self.padding_x, self.button_height), "delete", sizeStyle=self.size_style, callback=self.apply_callback) # bind self.w.bind("became key", self.update_callback) self.w.bind("close", self.on_close_window) # observers addObserver(self, "update_callback", "fontBecameCurrent") # open self.w.open() # callbacks def get_font(self): self.font = CurrentFont() if self.font is not None: self.layers = self.font.layerOrder else: self.layers = [] def update_ui(self): self.w.layers.setItems(self.layers) def update_callback(self, sender): self.get_font() self.update_ui() def apply_callback(self, sender): # no font open if self.font is None: print no_font_open # delete layer else: layer_index = self.w.layers.get() layer_name = self.layers[layer_index] if layer_name in self.font.layerOrder: print 'deleting layer...\n' print '\t%s' % layer_name self.font.removeLayer(layer_name) print print '...done.\n' self.font.update() self.get_font() self.update_ui() else: print 'Font does not have layer %s.' % layer_name def on_close_window(self, sender): removeObserver(self, "fontBecameCurrent")
# [h] delete all layers '''Delete all layers in the current font.''' try: from mojo.roboFont import CurrentFont except ImportError: from robofab.world import CurrentFont f = CurrentFont() while len(f.layerOrder) > 0: f.removeLayer(f.layerOrder[0]) f.update()