def __init__(self, posSize, interface): super(GlyphLayers, self).__init__(posSize) self.ui = interface self.storageGlyph = None self.storageGlyphName = "" self.StorageGlyphCurrentLayer = "" self.jumpTo = SearchBox((0,0,165,20), placeholder = "Char/Name", sizeStyle = "small", callback = self._jumpTo_callback ) self.displayGlyphset_settingList = ['find Char/Name', "Sort by key"] self.displaySettings = 'find Char/Name' self.displayGlyphset_setting = PopUpButton((170, 0, 200, 20), self.displayGlyphset_settingList, sizeStyle = "small", callback = self._displayGlyphset_setting_callback) self.glyphset = [] self.glyphset_List = List((0,20,165,-200), self.glyphset, columnDescriptions = [ {"title": "Char", "width" : 30}, {"title": "Name", "width" : 105}, ], drawFocusRing=False, selectionCallback = self._glyphset_List_selectionCallback, ) self.set_glyphset_List() self.layersCanvas = Canvas((165,20,-0,-200), delegate=LayersCanvas(self.ui, self), hasHorizontalScroller=False, hasVerticalScroller=False) slider = SliderListCell(minValue = 0, maxValue = 1000) self.slidersValuesList = [] self.sliderList = List((0,-190,350,-0),self.slidersValuesList, columnDescriptions = [{"title": "Layer" }, {"title": "Values", "cell": slider}], editCallback = self._sliderList_editCallback, drawFocusRing = False, allowsMultipleSelection = False) self.layersPreviewCanvas = Canvas((350,-190,-0,-0), delegate=LayersPreviewCanvas(self.ui, self), hasHorizontalScroller=False, hasVerticalScroller=False)
def buildUI(self): self.w = Window((300, 415)) self.w.currentHeightText = TextBox( (10, 10, 150, 17), "Current height: " + str(currentHeight)) self.w.currentUPM = TextBox((200, 10, -10, 17), "UPM: " + str(upm), alignment="right") self.w.targetHeightSlider = Slider((10, 40, -10, 23), minValue=currentHeight * .5, maxValue=currentHeight * 1.5, value=currentHeight, callback=self.sliderCallback) self.w.targetHeightText = TextBox((10, 82, 100, 17), "Target height:") self.w.targetHeightInput = EditText( (115, 80, 55, 21), currentHeight, callback=self.targetHeightInputCallback) self.w.okButton = Button((10, 105, -10, 40), "Scale-a-mooch!", callback=self.okButtonCallback) self.w.canvas = Canvas((0, 150, 0, 0), hasHorizontalScroller=False, hasVerticalScroller=False, delegate=self)
def __init__(self): self.f = CurrentFont() self.letters = "" self.facet = 5 self.w = FloatingWindow((1500, 600), "Preview Facet") self.w.inputText = EditText((10, 10, 500, 24), text=self.letters, callback=self.inputTextCallback) self.w.facetSlider = Slider((520, 10, 500, 24), minValue=2, maxValue=9, value=self.facet, tickMarkCount=10, stopOnTickMarks=True, callback=self.facetSliderCallback) self.w.canvas = Canvas((10, 50, -10, -10), canvasSize=(1500, 550), hasHorizontalScroller=False, hasVerticalScroller=False, delegate=self) addObserver(self, "updateFont", "fontBecameCurrent") self.setUpBaseWindowBehavior() self.w.open()
def __init__ (self, posSize, selectionCallback=None, sizeStyle='big'): xw, yw, tx, ty = posSize self.glyphsToDisplay = [] self.keyGlyph = None self.font = None self.hashKernDic = None self.direction = 'L' self.showSelected = False self.groupIsEmpty = False self.diffMarginsInGroup = False self.groupname = None self.keyGlyph = None self.keyGlyphMargin = None self.showInfo = True self.excGlyphL = None self.excGlyphR = None self.kernValue = 0 self.darkmode = KERNTOOL_UI_DARKMODE self.darkmodeWarm = KERNTOOL_UI_DARKMODE_WARMBACKGROUND self._alpha = .1 self._scalefactorUI = .045 # sizeStyle = 'regular' ty = 85 if sizeStyle == 'big': self._scalefactorUI = .065 ty = 100 elif sizeStyle == 'small': self._scalefactorUI = .035 ty = 65 elif sizeStyle == 'mini': self._scalefactorUI = .025 ty = 45 elif sizeStyle == 'micro': self._scalefactorUI = .015 ty = 30 self.heightOfControl = ty self._selectionCallback = selectionCallback self._selfHeight = ty self._setupView(self.nsViewClass, (xw, yw, tx, ty)) # (0, 0, -0, 106) self.infoLine = Canvas((0, 0, -0, -0), delegate = self, # canvasSize = (ty, ty), hasHorizontalScroller = False, hasVerticalScroller = False, autohidesScrollers = True, backgroundColor = NSColor.whiteColor(), # acceptMouseMoved = True ) self.infoLine.scrollView.getNSScrollView().setBorderType_(NSNoBorder)
def __init__(self, posSize, selectionCallback=None, window=None): xw, yw, tx, ty = posSize self._window = window self._linesToDisplay = [] # self._font = None self._fontMenu = [] self._viewArray = [] self._selectedLine = 0 self._positionYselected = 0 self._lineSize = 1800 # 1800 # 1800=1000upm; 2400=2000upm self.Ygap = 0 # - yw*2 self.shiftX = 150 self._scalefactorUI = .03 self.scaleStep = 1.2 self.lineCount = 0 self.maxX = 0 self.maxXX = 0 self._lastGlyphXpos = 0 self._selectionCallback = selectionCallback self.showselection = False self._setupView(self.nsViewClass, (xw, yw, tx, ty)) # (0, 0, -0, 106) self.canvas = Canvas( (0, 0, -0, -0), delegate=self, # canvasSize = (100, 101), hasHorizontalScroller=False, hasVerticalScroller=True, autohidesScrollers=False, backgroundColor=NSColor.whiteColor(), drawsBackground=True, # acceptsMouseMoved = True ) self.canvas.scrollView.getNSScrollView().setBorderType_(NSNoBorder) fonts = AllFonts() for font in fonts: if font.info.familyName and font.info.styleName: # print font.info.familyName # print font.info.styleName self.addMenuItem(font=font, title=font.info.familyName + ' ' + font.info.styleName) self.compileLines() # print self.w.menu._viewArray self.canvas.update() self.scrollToLine(0)
def __init__(self): self.size = 0.25 self.w = Window((400, 400)) self.w.slider = Slider((10, 5, -10, 22), minValue=0.1, maxValue=0.4, value=self.size, callback=self.sliderCallback) self.w.canvas = Canvas((10, 30, -10, -10), hasHorizontalScroller=False, hasVerticalScroller=False, delegate=self) self.w.open()
def __init__(self): self.f = CurrentFont() self.letters = "" self.facet = 5 self.scale = 0.25 self.w = FloatingWindow((1200, 600), "Preview Facet") self.w.inputText = GlyphSequenceEditText( (10, 10, 500, 24), self.f.naked(), callback=self.inputTextCallback) self.w.facetSlider = Slider((520, 10, 250, 24), minValue=2, maxValue=9, value=self.facet, tickMarkCount=10, stopOnTickMarks=True, callback=self.facetSliderCallback) self.w.scaleSlider = Slider((800, 10, 250, 24), minValue=0, maxValue=0.5, value=self.scale, callback=self.scaleSliderCallback) self.w.drawButton = Button((1070, 10, 120, 24), title="Make Glyphs", callback=self.drawButtonCallback) # self.w.canvas = DrawView((10, 50, -10, -10)) self.w.canvas = Canvas((10, 50, -10, -10), canvasSize=(1500, 550), hasHorizontalScroller=False, hasVerticalScroller=False, delegate=self) addObserver(self, "updateFont", "fontBecameCurrent") self.setUpBaseWindowBehavior() # self.updateCanvas() self.w.open()
def __init__(self, posSize, interface): super(GlyphSet, self).__init__(posSize) self.ui = interface self.jumpTo = SearchBox( (0, 0, 165, 20), placeholder="Char/Name", sizeStyle="small", callback=self._jumpTo_callback, # continuous = False, ) self.glyphset_List = List( (0, 20, 165, -0), [], columnDescriptions=[ { "title": "Char", "width": 30 }, { "title": "Name", "width": 105 }, ], drawFocusRing=False, selectionCallback=self._glyphset_List_selectionCallback, doubleClickCallback=self._glyphset_List_doubleClickCallback) self.displayGlyphset_settingList = ['find Char/Name', "Sort by key"] self.displaySettings = 'find Char/Name' self.displayGlyphset_setting = PopUpButton( (170, 0, 200, 20), self.displayGlyphset_settingList, sizeStyle="small", callback=self._displayGlyphset_setting_callback) self.set_glyphset_List() self.canvas = Canvas((165, 20, -0, -0), delegate=CurrentGlyphCanvas(self.ui, self), hasHorizontalScroller=False, hasVerticalScroller=False)
def buildUI(self): self.w = Window((500, 410), "Underline all your glyphs!") self.w.offsetText = TextBox((10, 10, -10, 20), "Offset") self.w.offsetValue = EditText((100, 8, 50, 22), self.offset, callback = self.offsetValueCallback) self.w.offsetSlider = Slider((10, 25, -10, 40), minValue = 0, maxValue = 500, value = 250, callback = self.offsetSliderCallback) self.w.thicknessText = TextBox((10, 70, -10, 20), "Thickness") self.w.thicknessValue = EditText((100, 68, 50, 22), self.thickness, callback = self.thicknessValueCallback) self.w.thicknessSlider = Slider((10, 85, -10, 40), minValue = 0, maxValue = 500, value = 250, callback = self.thicknessSliderCallback) self.w.drawButton = Button((10, 115, -10, 40), "Underline", callback = self.drawButtonCallback) self.w.canvas = Canvas((10, 160, -10, -43), hasHorizontalScroller = False, hasVerticalScroller = False, delegate = self) self.w.inputString = EditText((10, 375, -10, 24), callback = self.inputStringCallback)
def get_ui(window_controller, title): glyph_column_descriptions = [ { "title": "Layers", "cell": vanilla.CheckBoxListCell(), "width": 35, "editable": False, }, { "title": "Name", "typingSensitive": True, "editable": False, }, ] layer_column_descriptions = [ { "title": "Index", "key": "layer_index", "width": 45, "editable": True, }, { "title": "ColorIndex", "key": "layer_color_index", "width": 45, "editable": True, }, # { # "title": "Color", # "binding": "selectedValue", # "cell": vanilla.PopUpButtonListCell([]), # "width": 30, # "editable": True, # }, { "title": "Layer Glyph", "typingSensitive": True, "editable": True, }, ] palette_column_descriptions = [ { "title": "Index", # "cell": IntType, #TODO "width": 60, "typingSensitive": True, }, { "title": "Color", "cell": RFColorCell.alloc().initWithDoubleClickCallback_( window_controller.paletteEditColorCell), "typingSensitive": False, "editable": False, }, ] layer_drop_settings = { "type": NSColorPboardType, "allowDropBetweenRows": False, "allowDropOnRow": True, "callback": window_controller._callback_layer_drop, } col2 = int(round(window_width / 2)) y = 10 w = vanilla.Window((window_width, 496), "%s - RoboChrome" % title) w.preview = Canvas( (10, y, 320, 200), canvasSize=(318, 200), hasHorizontalScroller=False, hasVerticalScroller=False, delegate=window_controller, ) w.paletteswitch = vanilla.PopUpButton( (340, y, -10, 20), [], callback=window_controller._paletteSwitchCallback, ) w.colorpalette = vanilla.List( (340, y + 30, -10, 170), [], columnDescriptions=palette_column_descriptions, drawFocusRing=True, editCallback=window_controller.paletteEdit, selectionCallback=window_controller._callback_color_select_in_palette, allowsMultipleSelection=False, enableDelete=True, ) w.addPalette = vanilla.GradientButton( (340, 215, 24, 24), imagePath="../resources/iconColorFontPalette.pdf", callback=window_controller.paletteDuplicate, ) w.deletePalette = vanilla.GradientButton( (363, 215, 24, 24), imagePath="../resources/iconColorFontPaletteMinus.pdf", callback=window_controller.paletteDelete, ) w.addColorToPalette = vanilla.GradientButton( (410, 215, 24, 24), imagePath="../resources/iconColorFontPlus.pdf", callback=window_controller.addColorToPalette, ) y += 210 w.glyph_list_label = vanilla.TextBox((10, y, 120, 20), "Glyphs with layers:", sizeStyle="small") w.glyph_list_search_box = vanilla.SearchBox( (118, y - 3, 114, 20), placeholder="Filter glyphs", callback=window_controller._callback_update_ui_glyph_list, sizeStyle="small", ) w.colorChooser = vanilla.ColorWell( (240, y - 4, 40, 22), callback=window_controller._callback_color_changed_foreground, color=window_controller.color, ) w.colorbgChooser = vanilla.ColorWell( (290, y - 4, 40, 22), color=window_controller.colorbg, callback=window_controller._callback_color_changed_background) w.colorPaletteColorChooser = vanilla.ColorWell( (450, y - 4, 40, 22), callback=window_controller._callback_color_changed_layer, color=window_controller.color, ) y += 25 w.glyph_list = vanilla.List( (10, y, col2 - 10, 150), [], columnDescriptions=glyph_column_descriptions, drawFocusRing=True, #editCallback=None, doubleClickCallback=window_controller._callback_goto_glyph, selectionCallback=window_controller._callback_ui_glyph_list_selection, allowsMultipleSelection=False, ) w.layer_list = vanilla.List( (col2 + 10, y, -10, 150), [], columnDescriptions=layer_column_descriptions, drawFocusRing=True, editCallback=window_controller._callback_layer_edit, enableDelete=True, selectionCallback=window_controller._callback_layer_select, allowsMultipleSelection=False, otherApplicationDropSettings=layer_drop_settings, ) y += 160 w.show_only_glyphs_with_layers = vanilla.CheckBox( (10, y, 176, 20), "Show only glyphs with layers", callback=window_controller._callback_set_show_only_glyphs_with_layers, value=window_controller.show_only_glyphs_with_layers, sizeStyle="small") w.add_layer_button = vanilla.GradientButton( (col2 + 10, y - 10, 24, 24), imagePath="../resources/iconColorFontPlus.pdf", callback=window_controller._callback_layer_add, ) # w.add_svg_button = vanilla.Button( # (col2+43, y-10, 60, 24), # "Add SVG", # callback=window_controller._choose_svg_to_import, # sizeStyle="small" # ) y += 28 w.selectButton = vanilla.Button( (10, y, col2 - 10, 20), "Select glyphs with layers", callback=window_controller._callback_select_glyphs_in_font_window, ) w.auto_palette_button = vanilla.Button( (col2 + 10, y, 110, 20), "Mix palette", callback=window_controller._callback_auto_palette, ) w.png_button = vanilla.Button( (380, y, 110, 20), "Export PNG", callback=window_controller._choose_png_to_export, ) y += 31 w.toggleSettingsButton = vanilla.Button( (10, y, 115, 20), "Settings...", callback=window_controller._callback_toggle_settings, ) w.auto_layer_button = vanilla.Button( (135, y, 115, 20), "Auto layers", callback=window_controller._callback_auto_layers, ) w.import_button = vanilla.Button( (col2 + 10, y, 110, 20), "Import font", callback=window_controller._choose_file_to_import, ) w.export_button = vanilla.Button( (380, y, 110, 20), "Export to font", callback=window_controller._choose_file_to_export, ) return w
def __init__(self, posSize, separatePairs=True, selectionCallback=None, selectionPairCallback=None, selectionGlyphCallback=None, sizeStyle='regular', hasHorizontalScroller=True, showValues=False, showMargins=False, showNames=False): xw, yw, tx, ty = posSize # ty = 120 # self._posSize = (xw, yw, tx, 106) self.glyphsToDisplay = [] self.pairsToDisplay = None self.pairsViews = [] self._currentPairToDisplay = () self._font = None self._viewArray = [] self._selectedGlyph = None self._idxSelectedGlyph = 0 self._letterStep = 7 self._hasHorizontalScroller = hasHorizontalScroller self.hashKernDic = None self.separatorPairsWidth = 250 self.separatePairs = separatePairs self.toucheMode = False self.touchFlag = False self.lightmode = False self.valuesMode = showValues self.showMargins = showMargins self.showNames = showNames self.maxX = 0 self._mouseOver = False self.darkmode = KERNTOOL_UI_DARKMODE self.darkmodeWarm = KERNTOOL_UI_DARKMODE_WARMBACKGROUND self._scalefactorUI = .045 # sizeStyle = 'regular' ty = 85 if sizeStyle == 'extrabig': self._scalefactorUI = .090 ty = 180 if sizeStyle == 'big': self._scalefactorUI = .055 ty = 110 elif sizeStyle == 'small': self._scalefactorUI = .035 ty = 65 self.valuesMode = False self.showMargins = False self.showNames = False elif sizeStyle == 'mini': self._scalefactorUI = .027 ty = 50 self.valuesMode = False self.showMargins = False self.showNames = False elif sizeStyle == 'micro': self._scalefactorUI = .021 ty = 40 self.valuesMode = False self.showMargins = False self.showNames = False self.heightOfControl = ty self._selectedPair = None self._selectionCallback = selectionCallback self._selectionPairCallback = selectionPairCallback self._selectionGlyphCallback = selectionGlyphCallback self._selfHeight = ty self._setupView(self.nsViewClass, (xw, yw, tx, ty)) # (0, 0, -0, 106) self.infoLine = Canvas( (0, 0, -0, -0), delegate=self, # canvasSize = (100, 101), hasHorizontalScroller=hasHorizontalScroller, hasVerticalScroller=False, autohidesScrollers=True, # backgroundColor = NSColor.whiteColor() ) self.infoLine.scrollView.getNSScrollView().setBorderType_(NSNoBorder)
def __init__(self, interface): self.ui = interface self.windowWidth, self.windowHeight = 800, 600 self.w = Window((self.windowWidth, self.windowHeight), "Text Center", minSize=(200, 200)) self.inverse = 0 self.scale = .15 self.margin = 50 self.scroll = 0 self.scrollX = 0 self.scrollWheel_ZoomSensibility = .005 self.keyDown_ZoomSensibility = .05 self.glyphName2Glyph = {} self.selectedGlyph = None self.text = [] self.glyphLocation_in_Window = {} self.mainInputString = "" self.w.mainInputText_EditText = EditText( (100, 10, -100, 20), self.mainInputString, sizeStyle="small", callback=self._mainInputText_EditText_callback) self.leftInputString = "" self.w.leftInputText_EditText = EditText( (10, 10, 80, 20), self.leftInputString, sizeStyle="small", callback=self._leftInputText_EditText_callback) self.rightInputString = "" self.w.rightInputText_EditText = EditText( (-90, 10, -10, 20), self.rightInputString, sizeStyle="small", callback=self._rightInputText_EditText_callback) self.verticalMode = 0 self.w.verticalMode_checkBox = CheckBox( (10, -20, 150, -0), "Vertical Mode", value=self.verticalMode, sizeStyle="small", callback=self._verticalMode_checkBox_callback) self.lineHeight = 1000 self.w.lineHeight_Slider = Slider( (-220, -20, -120, -0), minValue=1000, maxValue=2000, value=self.lineHeight, callback=self._lineHeight_Slider_callback, sizeStyle="small") self.displayDesignFrame = 0 self.w.displayDesignFrame_checkBox = CheckBox( (-110, -20, -10, -0), "Design Frame", value=self.displayDesignFrame, sizeStyle="small", callback=self._displayDesignFrame_checkBox_callback) self.w.canvas = Canvas((0, 60, -0, -20), delegate=self, canvasSize=(10000, 10000)) Helpers.setDarkMode(self.w, self.ui.darkMode) self.w.bind('resize', self.windowDidResize) self.w.open()
def __init__(self, fonts): self.fonts = fonts if len(self.fonts) in range(4): self.min_unit_width = 350 self.p_point_size = 160 elif len(self.fonts) in range(4, 7): self.min_unit_width = 200 self.p_point_size = 120 else: self.min_unit_width = 150 self.p_point_size = 100 # by default, all checkboxes are unchecked self.checked = [0 for i in range(len(self.fonts))] self.min_w_width = len(self.fonts) * self.min_unit_width # cmb_kern_dict is an ordered dict self.cmb_kern_dict = kerningHelper.get_combined_kern_dict(fonts) self.pair_list = list(self.cmb_kern_dict.keys()) self.filtered_pairlists = self.make_filtered_pairlists( self.cmb_kern_dict) # initial value for the first pair to show initial_pair = self.pair_list[0] self.pair = initial_pair initial_value = self.cmb_kern_dict[initial_pair] self.values = initial_value self.steps = len(self.values) self.update_display(self.values) self.drag_index = None self.w = vanilla.Window( (self.min_w_width, self.min_w_height), title='Kern-A-Lytics', minSize=(self.min_w_width / 2, self.min_w_height / 2), ) _, _, self.w_width, self.w_height = self.w.getPosSize() self.graph_height = self.w_height / 3 self.graph_width = (self.w_width - 2 * self.padding) self.step_dist = self.graph_width / self.steps graph_margin = self.step_dist / 2 self.canvas_delegate = CanvasDelegate(self) self.w.c = Canvas( (self.padding, self.padding, -self.padding, self.graph_height), delegate=self.canvas_delegate, canvasSize=(self.graph_width, self.graph_height), # backgroundColor=AppKit.NSColor.orangeColor(), backgroundColor=AppKit.NSColor.clearColor(), drawsBackground=False, ) # buttons buttons = [ # button label, callback name ('Delete Pairs', 'delete_button_callback'), ('Average Pairs', 'average_button_callback'), ('Equalize Pairs', 'transfer_button_callback'), ('Interpolate Pair', 'interpolate_button_callback'), # ('Transfer Pair', 'transfer_button_callback'), ('+10', 'plus_button_callback'), ('-10', 'minus_button_callback'), ('+10%', 'dummy_button_callback'), ('-10%', 'dummy_button_callback'), ] button_top = -210 # list starts at 210 and has 10 padding at bottom # total whitespace: 200 height - 8 * 20 = 40 # individual_whitespace = 40 / (len(buttons) - 1) button_height = 20 button_space = len(buttons) * button_height button_whitespace = (abs(button_top) - self.padding) - button_space button_step_space = button_whitespace / (len(buttons) - 1) for i, (b_label, b_callback_name) in enumerate(buttons): button = vanilla.Button( (self.w_width - self.padding - self.button_width, button_top + i * button_height, self.button_width, button_height), b_label, callback=getattr(self, b_callback_name)) setattr(self.w, 'button_{}'.format(i), button) # button_top += self.padding / 2 button_top += button_step_space # graph labels with monospaced digits nsfont = AppKit.NSFont.monospacedDigitSystemFontOfSize_weight_(14, 0.0) for i, number in enumerate(self.label_values): tb_x = self.padding + graph_margin + i * self.step_dist self.tb_y = self.padding * 2 + self.graph_height self.tb_height = 20 self.tb_width = 100 tb_control = vanilla.TextBox( (tb_x - self.tb_width / 2, self.tb_y, self.tb_width, self.tb_height), number, alignment='center', sizeStyle='small', selectable=True, ) tb_control.getNSTextField().setFont_(nsfont) setattr(self.w, 'textbox_{}'.format(i), tb_control) # pair preview pp_origin_x = self.padding pp_origin_y = self.padding * 4 + self.graph_height + self.tb_height self.w.pairPreview = vanilla.Group( (pp_origin_x, pp_origin_y, self.w_width, self.p_point_size)) for f_index, f in enumerate(self.fonts): x = self.step_dist * f_index pair_preview = DrawPair((x, 0, self.step_dist, -0)) initial_pair = self.pair_list[0] kern_value = self.cmb_kern_dict.get(initial_pair)[f_index] if kern_value is None: kern_value = 0 repr_pair = kerningHelper.get_repr_pair(f, initial_pair) # XXXX the following line is problematic # if UFOs with different group structures are opened repr_glyphs = [f[g_name] for g_name in repr_pair] pair_preview.setGlyphData_kerning(repr_glyphs, kern_value) setattr(self.w.pairPreview, 'pair_{}'.format(f_index), pair_preview) # checkboxes for i, f in enumerate(self.fonts): cb_x = self.padding + graph_margin + i * self.step_dist cb_control = vanilla.CheckBox( (cb_x - 6, pp_origin_y + self.p_point_size + self.padding * 2, 22, 22), '', value=False, sizeStyle='regular', callback=self.checkbox_callback) setattr(self.w, 'checkbox_{}'.format(i), cb_control) # pop-up button for list filtering list_width = self.w_width - self.button_width - self.padding * 3 self.w.list_filter = vanilla.PopUpButton((10, -240, list_width, 20), self.filter_options, callback=self.filter_callback) # list of kerning pairs (bottom) column_pairs = self.make_columns(self.pair_list) self.w.display_list = vanilla.List( (10, -210, list_width, -10), column_pairs, columnDescriptions=[{ 'title': 'L' }, { 'title': 'R' }], allowsMultipleSelection=False, selectionCallback=self.list_callback) self.w.bind('resize', self.resize_callback) self.w.open()
def __init__(self): self.histogram_width = 608 self.histogram_height = 380 histogram_x_offset = 10 histogram_y_offset = 10 window_width = 630 window_height = 500 # how much of the em is shown? self.ems_horizontal = 1.3 # how many pixels on the canvas per letter? self.scale_vertical = 10.0 self.units = 18 self.known_units = unitization_info.get_all_units() self.system = None self.show_fixed = True self.glyphs = [] # show glyphs or lines? self.show_glyphs = True y = 10 self.w = vanilla.FloatingWindow((window_width, window_height), "Glyph Width Histogram") self.w.histogram = Canvas((histogram_x_offset, histogram_y_offset, -10, self.histogram_height), canvasSize=(self.histogram_width, self.histogram_height), hasHorizontalScroller=False, hasVerticalScroller=False, delegate=self) y += self.histogram_height + histogram_y_offset + 8 self.w.unit_label = vanilla.TextBox((histogram_x_offset, y, 90, 20), "Units per em:") self.w.unit_display = vanilla.TextBox((histogram_x_offset + 90, y, 30, 20), self.units) self.w.system_selection = vanilla.PopUpButton((histogram_x_offset + 120, y-1, 300, 20), [], callback = self._systemCallback, #sizeStyle = "small", ) self.w.show_fixed = vanilla.CheckBox((histogram_x_offset + 462, y-1, 300, 20), "Show system widths", value=self.show_fixed, callback = self._showFixedCallback, ) y += 28 self.w.unit_slider = vanilla.Slider((histogram_x_offset, y, -10, 20), minValue = 1, maxValue = 64, value = self.units, tickMarkCount = 64, callback = self._unitCallback, stopOnTickMarks = True, ) y += 33 self.w.glyph_selection_label = vanilla.TextBox((histogram_x_offset, y, 120, 20), "Analyze glyphs:") self.w.glyph_selection = vanilla.RadioGroup((histogram_x_offset + 110, y, 210, 20), ["Selected", "All", "Charset:"], isVertical = False, callback = self._glyphSelectionCallback, sizeStyle = "small", ) self.w.charset_selection = vanilla.PopUpButton((histogram_x_offset + 320, y, -110, 20), [], callback = self._charsetCallback, #sizeStyle = "small", ) self.w.update_button = vanilla.Button((-100, y, -10, 20), "Update", callback = self._updateButtonCallback ) self._unitCallback() self.w.system_selection.setItems(unitization_info.get_ui_list()) if self.units in self.known_units: self.system = unitization_info.get_systems_by_upm(self.units)[0] self.w.system_selection.set(unitization_info.get_ui_list().index(self.system.name)) else: self.system = None self.w.system_selection.set(0) self.w.glyph_selection.set(0) self.w.charset_selection.enable(False) self.update_charset_selection() self.glyphs = self.get_glyphnames_for_histogram() self.calculate_histogram() self.setUpBaseWindowBehavior() #addObserver(self, "glyphChanged", "currentGlyphChanged") #addObserver(self, "glyphChanged", "draw") #addObserver(self, "removeFontFromList", "fontWillClose") #addObserver(self, "updateFontList", "fontDidOpen") self.w.open()
def buildUI(self): x = 10 xText = 8 row1 = 10 row2 = 78 row3 = 165 row4 = 250 self.w = Window((960,590), minSize = (830,500), title = "Etch-A-Sketch: " + fontName) self.w.fontNameText = EditText((x, row1, 150, 22), fontName, callback = self.fontNameTextCallback) self.w.fontRef = CheckBox((x+160, row1, 40, 22), "Ref", callback = self.fontRefCallback) self.w.xHeightText = TextBox((xText, row2, 200, 17), "x-Height (in.)") self.w.xHeightSlider = Slider((x+2, row2+22, 194, 23), minValue = 0.5, maxValue = 2, value = self.xHeightDrawing / ppi, tickMarkCount = 7, stopOnTickMarks = True, callback = self.xHeightSliderCallback) self.w.xHeightMinVal = TextBox((xText, row2+48, 50, 17), "0.5") self.w.xHeightMidVal = TextBox((xText+85, row2+48, 50, 17), "1.25") self.w.xHeightMaxVal = TextBox((xText+177, row2+48, 50, 17), "2.0") self.w.guidesText = TextBox((xText, row3, 100, 17), "Guides") self.w.ascenderCheckbox = CheckBox((x, row3+20, 100, 22), "Ascender", callback = self.ascenderCheckboxCallback) self.w.ascenderText = EditText((x+100, row3+20, 50, 22), ascender, callback = self.ascenderTextCallback) self.w.descenderCheckbox = CheckBox((x, row3+45, 100, 22), "Descender", callback = self.descenderCheckboxCallback) self.w.descenderText = EditText((x+100, row3+45, 50, 22), descender, callback = self.descenderTextCallback) self.w.extrasText = TextBox((xText, row4, 100, 17), "Extras") self.w.blueLinesCheckbox = CheckBox((x, row4+20, 150, 22), "Non-photo blue lines", callback = self.blueLinesCheckboxCallback) self.w.grayLettersCheckbox = CheckBox((x, row4+42, 150, 22), "Gray letters", callback = self.grayLettersCheckboxCallback) self.w.printButton = SquareButton((x, 430, 200, -10), "Print!\n(cmd + p)", callback = self.printButtonCallback) self.w.printButton.bind('p', ["command"]) #self.w.canvas = DrawView((220, 10, -10, -10)) self.w.canvas = Canvas((220, 10, -10, -10), delegate=self, canvasSize=(pageWidth, pageHeight), hasHorizontalScroller=False, hasVerticalScroller=False) if f is not None: self.w.fontNameText.enable(False) self.w.inputText = GlyphSequenceEditText((x, row1+30, 200, 22), f.naked(), callback = self.inputTextCallback) self.w.ascenderText.enable(False) self.w.descenderText.enable(False) self.w.saveButton = SquareButton((x, 370, 200, 50), "Save PDF!", callback = self.saveButtonCallback) else: self.w.fontRef.enable(False) self.w.inputText = EditText((x, 40, 200, 22), "No open font") self.w.inputText.enable(False) self.w.grayLettersCheckbox.enable(False)