コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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()
コード例 #4
0
ファイル: tdExceptionView.py プロジェクト: typedev/KernTool3
	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)
コード例 #5
0
    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)
コード例 #6
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()
コード例 #7
0
    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()
コード例 #8
0
ファイル: GlyphSet.py プロジェクト: cjdunn/robo-cjk
    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)
コード例 #9
0
 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)                                                
コード例 #10
0
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
コード例 #11
0
ファイル: tdGroupViews.py プロジェクト: typedev/KernTool3
    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)
コード例 #12
0
ファイル: TextCenter.py プロジェクト: cjdunn/robo-cjk
    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()
コード例 #13
0
    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()
コード例 #14
0
ファイル: Histogram.py プロジェクト: Kryndex/RoboFont
 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()
コード例 #15
0
 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)