Ejemplo n.º 1
0
	def __init__(self, dlg_name, dlg_msg, dlg_field_t, dlg_field_b, dlg_size=(300, 300, 300, 100)):
		super(TR2FieldDLG, self).__init__()
		# - Init
		self.values = (None, None)
		
		# - Widgets
		self.lbl_main = QtGui.QLabel(dlg_msg)
		self.lbl_field_t = QtGui.QLabel(dlg_field_t)
		self.lbl_field_b = QtGui.QLabel(dlg_field_b)
		
		self.edt_field_t = QtGui.QLineEdit() # Top field
		self.edt_field_b = QtGui.QLineEdit() # Bottom field

		self.btn_ok = QtGui.QPushButton('OK', self)
		self.btn_cancel = QtGui.QPushButton('Cancel', self)

		self.btn_ok.clicked.connect(self.return_values)
		self.btn_cancel.clicked.connect(self.reject)
		
		# - Build 
		main_layout = QtGui.QGridLayout() 
		main_layout.addWidget(self.lbl_main, 	0, 0, 1, 4)
		main_layout.addWidget(self.lbl_field_t,	1, 0, 1, 2)
		main_layout.addWidget(self.edt_field_t,	1, 2, 1, 2)
		main_layout.addWidget(self.lbl_field_b,	2, 0, 1, 2)
		main_layout.addWidget(self.edt_field_b,	2, 2, 1, 2)
		main_layout.addWidget(self.btn_ok,		3, 0, 1, 2)
		main_layout.addWidget(self.btn_cancel,	3, 2, 1, 2)

		# - Set 
		self.setLayout(main_layout)
		self.setWindowTitle(dlg_name)
		self.setGeometry(*dlg_size)
		self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
		self.exec_()
Ejemplo n.º 2
0
	def __init__(self, edt_0, edt_1, edt_pos, spb_step):
		super(TRSliderCtrl, self).__init__()
		
		# - Init
		self.initValues = (edt_0, edt_1, edt_pos, spb_step)

		self.edt_0 = QtGui.QLineEdit(edt_0)
		self.edt_1 = QtGui.QLineEdit(edt_1)
		self.edt_pos = QtGui.QLineEdit(edt_pos)

		self.spb_step = QtGui.QSpinBox()
		self.spb_step.setValue(spb_step)

		self.sld_axis = QtGui.QSlider(QtCore.Qt.Horizontal)
		self.sld_axis.valueChanged.connect(self.sliderChange)
		self.refreshSlider()
		
		self.edt_0.editingFinished.connect(self.refreshSlider)
		self.edt_1.editingFinished.connect(self.refreshSlider)
		self.spb_step.valueChanged.connect(self.refreshSlider)
		self.edt_pos.editingFinished.connect(self.refreshSlider)

		# - Layout		
		self.addWidget(self.sld_axis, 			0, 0, 1, 5)
		self.addWidget(self.edt_pos, 			0, 5, 1, 1)		
		self.addWidget(QtGui.QLabel('Min:'),	1, 0, 1, 1)
		self.addWidget(self.edt_0, 				1, 1, 1, 1)
		self.addWidget(QtGui.QLabel('Max:'), 	1, 2, 1, 1)
		self.addWidget(self.edt_1, 				1, 3, 1, 1)
		self.addWidget(QtGui.QLabel('Step:'),	1, 4, 1, 1)
		self.addWidget(self.spb_step, 			1, 5, 1, 1)
Ejemplo n.º 3
0
    def __init__(self, parentWidget):
        super(WFontZones, self).__init__()

        # - Init
        self.grid = QtGui.QGridLayout()
        self.upperWidget = parentWidget
        self.activeFont = pFont()
        self.zoneData = {
            master: self.activeFont.zonesToTuples(master)
            for master in self.activeFont.masters()
        }

        # - Interface
        self.btn_apply = QtGui.QPushButton('Apply Changes')
        self.btn_reset = QtGui.QPushButton('Reset')
        self.btn_open = QtGui.QPushButton('Open')
        self.btn_save = QtGui.QPushButton('Save')
        self.btn_new = QtGui.QPushButton('Add New')
        self.btn_del = QtGui.QPushButton('Delete')

        self.cmb_layer = QtGui.QComboBox()
        self.cmb_layer.addItems(['All Layers'] + self.activeFont.masters())

        self.edt_pos = TRZLineEdit()
        self.edt_width = QtGui.QLineEdit()
        self.edt_name = QtGui.QLineEdit()

        self.edt_name.setPlaceholderText('Name')
        self.edt_pos.setPlaceholderText('Position')
        self.edt_width.setPlaceholderText('Width')

        self.btn_apply.clicked.connect(self.applyChanges)
        self.btn_reset.clicked.connect(self.resetChanges)
        self.btn_save.clicked.connect(self.exportZones)
        self.btn_open.clicked.connect(self.importZones)
        self.btn_new.clicked.connect(self.addZone)
        self.btn_del.clicked.connect(self.delZone)

        self.tree_fontZones = WTreeWidget(self.zoneData)

        # - Build
        lbl_name = QtGui.QLabel('Font Zones (Local)')
        lbl_name.setMaximumHeight(20)
        self.grid.addWidget(lbl_name, 0, 0, 1, 24)
        self.grid.addWidget(self.tree_fontZones, 1, 0, 15, 21)

        self.grid.addWidget(self.cmb_layer, 1, 21, 1, 3)
        self.grid.addWidget(self.edt_name, 2, 21, 1, 3)
        self.grid.addWidget(self.edt_pos, 3, 21, 1, 3)
        self.grid.addWidget(self.edt_width, 4, 21, 1, 3)
        self.grid.addWidget(self.btn_new, 5, 21, 1, 3)
        self.grid.addWidget(self.btn_del, 6, 21, 1, 3)

        self.grid.addWidget(self.btn_save, 12, 21, 1, 3)
        self.grid.addWidget(self.btn_open, 13, 21, 1, 3)
        self.grid.addWidget(self.btn_reset, 14, 21, 1, 3)
        self.grid.addWidget(self.btn_apply, 15, 21, 1, 3)
        self.setLayout(self.grid)
Ejemplo n.º 4
0
    def __init__(self):
        super(shapeMovement, self).__init__()

        # - Init
        self.methodList = ['Shift', 'Scale', 'Shear']

        # - Methods
        self.cmb_methodSelector = QtGui.QComboBox()
        self.cmb_methodSelector.addItems(self.methodList)
        self.cmb_methodSelector.setToolTip('Select transformation method')

        # - Arrow buttons
        self.btn_up = QtGui.QPushButton('Up')
        self.btn_down = QtGui.QPushButton('Down')
        self.btn_left = QtGui.QPushButton('Left')
        self.btn_right = QtGui.QPushButton('Right')

        self.btn_up.setMinimumWidth(80)
        self.btn_down.setMinimumWidth(80)
        self.btn_left.setMinimumWidth(80)
        self.btn_right.setMinimumWidth(80)

        self.btn_up.clicked.connect(self.onUp)
        self.btn_down.clicked.connect(self.onDown)
        self.btn_left.clicked.connect(self.onLeft)
        self.btn_right.clicked.connect(self.onRight)

        self.edt_offX = QtGui.QLineEdit('1.0')
        self.edt_offY = QtGui.QLineEdit('1.0')
        self.edt_offX.setToolTip('X offset')
        self.edt_offY.setToolTip('Y offset')

        # - Layout
        self.lay_btn = QtGui.QGridLayout()

        self.lay_btn.addWidget(self.cmb_methodSelector, 0, 0, 1, 6)
        self.lay_btn.addWidget(QtGui.QLabel('X:'), 1, 0, 1, 1)
        self.lay_btn.addWidget(self.edt_offX, 1, 1, 1, 1)
        self.lay_btn.addWidget(self.btn_up, 1, 2, 1, 2)
        self.lay_btn.addWidget(QtGui.QLabel('Y:'), 1, 4, 1, 1)
        self.lay_btn.addWidget(self.edt_offY, 1, 5, 1, 1)
        self.lay_btn.addWidget(self.btn_left, 2, 0, 1, 2)
        self.lay_btn.addWidget(self.btn_down, 2, 2, 1, 2)
        self.lay_btn.addWidget(self.btn_right, 2, 4, 1, 2)

        self.addLayout(self.lay_btn)
Ejemplo n.º 5
0
    def __init__(self):
        super(bbox_copy, self).__init__()

        # - Edit Fields
        self.edt_width = QtGui.QLineEdit()
        self.edt_height = QtGui.QLineEdit()

        self.edt_width.setPlaceholderText('Glyph Name')
        self.edt_height.setPlaceholderText('Glyph Name')

        # - Spin Box
        self.spb_bbox_percent = QtGui.QSpinBox()
        self.spb_bbox_units = QtGui.QSpinBox()

        self.spb_bbox_percent.setMaximum(200)
        self.spb_bbox_units.setMaximum(200)
        self.spb_bbox_units.setMinimum(-200)

        self.spb_bbox_percent.setSuffix('%')
        self.spb_bbox_units.setSuffix(' u')

        self.spb_bbox_percent.setMaximumWidth(50)
        self.spb_bbox_units.setMaximumWidth(50)

        self.reset_fileds()

        # - Buttons
        self.btn_copyBBox_width = QtGui.QPushButton('&Copy Width')
        self.btn_copyBBox_height = QtGui.QPushButton('&Copy Height')
        self.btn_copyBBox_width.clicked.connect(lambda: self.copy_bbox(False))
        self.btn_copyBBox_height.clicked.connect(lambda: self.copy_bbox(True))

        # - Build
        self.addWidget(QtGui.QLabel('SRC:'), 0, 0, 1, 1)
        self.addWidget(self.edt_width, 0, 1, 1, 3)
        self.addWidget(QtGui.QLabel('@'), 0, 4, 1, 1)
        self.addWidget(self.spb_bbox_percent, 0, 5, 1, 1)
        self.addWidget(QtGui.QLabel('+'), 0, 6, 1, 1)
        self.addWidget(self.spb_bbox_units, 0, 7, 1, 1)

        self.addWidget(self.btn_copyBBox_width, 2, 0, 1, 5)
        self.addWidget(self.btn_copyBBox_height, 2, 5, 1, 4)
Ejemplo n.º 6
0
    def __init__(self):
        super(TRGlyphTag, self).__init__()

        # - Widget & Layout
        self.edt_tagString = TRGLineEdit()
        self.edt_tagString.setPlaceholderText('Glyph tags')
        self.edt_tagString.setToolTip('A comma separated list of tags.')

        self.edt_tagStringNode = QtGui.QLineEdit()
        self.edt_tagStringNode.setPlaceholderText('Node name')
        self.edt_tagStringNode.setToolTip('A single node name.')

        self.btn_tagGlyph = QtGui.QPushButton('Glyph')
        self.btn_tagWindow = QtGui.QPushButton('Window')
        self.btn_tagSelection = QtGui.QPushButton('Selection')

        self.btn_tagNodes = QtGui.QPushButton('Glyph')
        self.btn_tagWindowNodes = QtGui.QPushButton('Window')
        self.btn_tagNodesClear = QtGui.QPushButton('Clear')

        self.btn_tagGlyph.clicked.connect(lambda: self.tag_glyphs('G'))
        self.btn_tagWindow.clicked.connect(lambda: self.tag_glyphs('W'))
        self.btn_tagSelection.clicked.connect(lambda: self.tag_glyphs('S'))
        self.btn_tagNodes.clicked.connect(lambda: self.tag_nodes('G'))
        self.btn_tagWindowNodes.clicked.connect(lambda: self.tag_nodes('W'))
        self.btn_tagNodesClear.clicked.connect(
            lambda: self.edt_tagStringNode.clear())

        self.btn_tagGlyph.setToolTip('Add tags to current glyph.')
        self.btn_tagWindow.setToolTip(
            'Add tags to all glyphs in current Glyph window.')
        self.btn_tagSelection.setToolTip(
            'Add tags to current selection in Font window.')
        self.btn_tagNodes.setToolTip(
            'Add name selected nodes at current glyph.')
        self.btn_tagWindowNodes.setToolTip(
            'Add name to selected nodes at all glyphs in current Glyph window.'
        )
        self.btn_tagNodesClear.setToolTip('Clear/Reset input filed.')

        # - Build
        self.addWidget(QtGui.QLabel('Glyph tagging:'), 1, 0, 1, 9)
        self.addWidget(self.edt_tagString, 2, 0, 1, 9)
        self.addWidget(self.btn_tagGlyph, 3, 0, 1, 3)
        self.addWidget(self.btn_tagWindow, 3, 3, 1, 3)
        self.addWidget(self.btn_tagSelection, 3, 6, 1, 3)
        self.addWidget(QtGui.QLabel('Node naming:'), 4, 0, 1, 9)
        self.addWidget(self.edt_tagStringNode, 5, 0, 1, 9)
        self.addWidget(self.btn_tagNodes, 6, 0, 1, 3)
        self.addWidget(self.btn_tagWindowNodes, 6, 3, 1, 3)
        self.addWidget(self.btn_tagNodesClear, 6, 6, 1, 3)
Ejemplo n.º 7
0
    def __init__(self):
        super(TRWLayerSelect, self).__init__()

        # - Init
        self.glyph = None

        # -- Head
        self.lay_head = QtGui.QHBoxLayout()
        self.edt_glyphName = QtGui.QLineEdit()
        self.btn_refresh = QtGui.QPushButton('&Refresh')
        self.btn_refresh.clicked.connect(self.refresh)

        self.lay_head.addWidget(QtGui.QLabel('G:'))
        self.lay_head.addWidget(self.edt_glyphName)
        self.lay_head.addWidget(self.btn_refresh)
        self.addLayout(self.lay_head)

        # -- Layer List
        self.lst_layers = TRWMasterTableView(init_table_dict)
        self.lst_layers.selectionModel().selectionChanged.connect(
            self.set_selected)
        self.addWidget(self.lst_layers)
        self.refresh()

        # - Mode checks
        self.lay_checks = QtGui.QGridLayout()
        self.chk_outline = QtGui.QCheckBox('Outline')
        self.chk_guides = QtGui.QCheckBox('Guides')
        self.chk_anchors = QtGui.QCheckBox('Anchors')
        self.chk_lsb = QtGui.QCheckBox('LSB')
        self.chk_adv = QtGui.QCheckBox('Advance')
        self.chk_rsb = QtGui.QCheckBox('RSB')

        # - Set States
        self.chk_outline.setCheckState(QtCore.Qt.Checked)
        self.chk_adv.setCheckState(QtCore.Qt.Checked)

        # -- Build
        self.lay_checks.addWidget(self.chk_outline, 0, 0)
        self.lay_checks.addWidget(self.chk_guides, 0, 1)
        self.lay_checks.addWidget(self.chk_anchors, 0, 2)
        self.lay_checks.addWidget(self.chk_lsb, 1, 0)
        self.lay_checks.addWidget(self.chk_adv, 1, 1)
        self.lay_checks.addWidget(self.chk_rsb, 1, 2)

        self.addLayout(self.lay_checks)
Ejemplo n.º 8
0
    def __init__(self):
        super(TRContourSelect, self).__init__()

        # -- Init
        self.table_dict = {0: {0: None}}  # Empty table
        self.layer_names = []  # Empty layer list
        self.table_columns = 'N,Sh,Cn,X,Y,Type,Rel'.split(',')

        # -- Widgets
        self.lay_head = QtGui.QGridLayout()

        self.edt_glyphName = QtGui.QLineEdit()
        self.cmb_layer = QtGui.QComboBox()

        self.btn_refresh = QtGui.QPushButton('&Refresh')
        self.btn_apply = QtGui.QPushButton('&Apply')
        self.btn_apply.setEnabled(False)

        # -- Build Layout
        self.lay_head.addWidget(QtGui.QLabel('G:'), 0, 0, 1, 1)
        self.lay_head.addWidget(self.edt_glyphName, 0, 1, 1, 5)
        self.lay_head.addWidget(self.btn_refresh, 0, 6, 1, 2)
        self.lay_head.addWidget(QtGui.QLabel('L:'), 1, 0, 1, 1)
        self.lay_head.addWidget(self.cmb_layer, 1, 1, 1, 5)
        self.lay_head.addWidget(self.btn_apply, 1, 6, 1, 2)
        self.addLayout(self.lay_head)

        # -- Node List Table
        self.tab_nodes = TRTableView(self.table_dict)
        self.addWidget(self.tab_nodes)

        self.btn_refresh.clicked.connect(lambda: self.refresh())
        self.cmb_layer.currentIndexChanged.connect(lambda: self.changeLayer())

        # -- Table Styling
        self.tab_nodes.horizontalHeader().setStretchLastSection(False)
        self.tab_nodes.setSortingEnabled(True)
        self.tab_nodes.horizontalHeader().sortIndicatorChanged.connect(
            lambda: self.tab_nodes.resizeColumnsToContents())
        self.tab_nodes.verticalHeader().hide()
        self.tab_nodes.resizeColumnsToContents()
        self.tab_nodes.selectionModel().selectionChanged.connect(
            self.selectionChanged)
        self.tab_nodes.itemChanged.connect(self.valueChanged)
Ejemplo n.º 9
0
	def __init__(self, font=None, parent=None):
		super(TRGlyphSelect, self).__init__()

		# - Init
		self.active_font = font
		self.parentWgt = self.parent if parent is None else parent

		# - Widgets
		# -- Buttons
		self.btn_filter = QtGui.QPushButton('Refresh')
		self.btn_filter.clicked.connect(self.refresh)

		self.chk_glyphName = QtGui.QCheckBox('Name')
		self.chk_glyphMark = QtGui.QCheckBox('Mark')
		self.chk_glyphUnicode = QtGui.QCheckBox('Unicode')
		self.chk_glyphChecked = QtGui.QCheckBox('Check all')

		self.chk_glyphName.setChecked(True)
		self.chk_glyphMark.setChecked(True)
		self.chk_glyphUnicode.setChecked(True)
		self.chk_glyphChecked.setChecked(True)
		
		# -- Fileds
		self.edt_filter = QtGui.QLineEdit()
		self.edt_filter.setPlaceholderText('Filter glyphnames')
		self.edt_filter.textChanged.connect(self.__filterClicked)

		self.lst_glyphNames = QtGui.QListView(self.parentWgt)
		self.model = QtGui.QStandardItemModel(self.lst_glyphNames)
		
		if self.active_font is not None:
			self.refresh()
		
		# -- Build Layout
		self.layout = QtGui.QGridLayout()
		self.layout.addWidget(QtGui.QLabel('Destination Glyphs:'),	0,0,1,4)
		self.layout.addWidget(self.edt_filter,			1,0,1,3)
		self.layout.addWidget(self.btn_filter,			1,3,1,1)
		self.layout.addWidget(self.chk_glyphName,		2,0,1,1)
		self.layout.addWidget(self.chk_glyphUnicode,	2,1,1,1)
		self.layout.addWidget(self.chk_glyphMark,		2,2,1,1)
		self.layout.addWidget(self.chk_glyphChecked,	2,3,1,1)
		self.layout.addWidget(self.lst_glyphNames,		3,0,1,4)
Ejemplo n.º 10
0
    def __init__(self):
        super(TRLayerSelect, self).__init__()

        # - Init
        self.header_names = [
            'Layer/Anchor' + ' ' * 5, 'X', 'Y', 'X Exp.', 'Y Exp.'
        ]
        self.data = OrderedDict([('Refresh', [])])

        # -- Head
        self.lay_head = QtGui.QHBoxLayout()
        self.edt_glyphName = QtGui.QLineEdit()
        self.btn_refresh = QtGui.QPushButton('&Refresh')
        self.btn_refresh.clicked.connect(self.refresh)

        self.lay_head.addWidget(QtGui.QLabel('G:'))
        self.lay_head.addWidget(self.edt_glyphName)
        self.lay_head.addWidget(self.btn_refresh)
        self.addLayout(self.lay_head)

        # -- Tree view
        self.tree_anchors = TRWAnchorTree(self.data, self.header_names)
        self.addWidget(self.tree_anchors)
Ejemplo n.º 11
0
    def __init__(self):
        super(TRStringGen, self).__init__()

        # - Init data
        val_fillerLeft, val_fillerRight = zip(*fillerList)
        self.defEncoding = 'utf-8'
        self.glyphNames = baseGlyphset
        self.font = pFont()

        # -- Init Interface
        # --- Editing fields
        self.edt_inputA = QtGui.QLineEdit()
        self.edt_inputB = QtGui.QLineEdit()
        self.edt_suffixA = QtGui.QLineEdit()
        self.edt_suffixB = QtGui.QLineEdit()

        self.edt_output = QtGui.QTextEdit()
        self.edt_sep = QtGui.QLineEdit()

        self.edt_inputA.setToolTip(
            'Manual Glyph names input. [SPACE] delimited.\nNOTE: This field overrides the input combo box!'
        )
        self.edt_inputB.setToolTip(
            'Manual Glyph names input. [SPACE] delimited.\nNOTE: This field overrides the input combo box!'
        )
        self.edt_suffixA.setToolTip('Suffix to be added to each glyph name.')
        self.edt_suffixB.setToolTip('Suffix to be added to each glyph name.')

        self.edt_sep.setText(glyphSep)

        # --- Combo boxes
        self.cmb_fillerPattern = QtGui.QComboBox()
        self.cmb_inputA = QtGui.QComboBox()
        self.cmb_inputB = QtGui.QComboBox()
        self.cmb_fillerLeft = QtGui.QComboBox()
        self.cmb_fillerRight = QtGui.QComboBox()
        self.cmb_join = QtGui.QComboBox()

        self.cmb_inputA.addItems(sorted(self.glyphNames.keys()))
        self.cmb_inputB.addItems(sorted(self.glyphNames.keys()))

        self.cmb_fillerPattern.setEditable(True)
        self.cmb_fillerLeft.setEditable(True)
        self.cmb_fillerRight.setEditable(True)

        self.cmb_join.addItems(joinOpt.keys())
        self.cmb_fillerPattern.addItems(filler_patterns)

        self.cmb_inputA.setToolTip('Glyph names list.')
        self.cmb_inputB.setToolTip('Glyph names list.')
        self.cmb_fillerLeft.setToolTip('Left Filler String.')
        self.cmb_fillerRight.setToolTip('Right Filler String.')
        self.cmb_join.setToolTip('Joining method for generated string pairs.')
        self.edt_sep.setToolTip('Glyph Separator.')
        self.cmb_fillerPattern.setToolTip(
            'Generator pattern expression.\n<< Filed names >> in any order, [SPACE] separated.'
        )

        self.cmb_fillerLeft.addItems(val_fillerLeft)
        self.cmb_fillerRight.addItems(val_fillerRight)

        # --- Buttons
        self.btn_populate = QtGui.QPushButton('&Populate lists')
        self.btn_clear = QtGui.QPushButton('&Reset')

        self.btn_generateSTR = QtGui.QPushButton('Generate')
        self.btn_generateUNI = QtGui.QPushButton('Unicode')
        self.btn_generateAMF = QtGui.QPushButton('AFM')
        self.btn_generateKRN = QtGui.QPushButton('KRN')

        self.btn_kernPairsSTR = QtGui.QPushButton('String')
        self.btn_kernPairsUNI = QtGui.QPushButton('Unicode')
        self.btn_kernPairsAFM = QtGui.QPushButton('AFM')
        self.btn_kernPairsKRN = QtGui.QPushButton('KRN')

        self.btn_kernOTGrpSTR = QtGui.QPushButton('Sring')
        self.btn_kernOTGrpCLA = QtGui.QPushButton('CLA')

        # Disabled until solution is found - Unicode problems between Py27 and 3+
        self.btn_generateUNI.setEnabled(False)
        self.btn_kernPairsUNI.setEnabled(False)

        self.btn_clear.setToolTip('Clear all manual input fields.')
        self.btn_populate.setToolTip(
            'Populate name lists with existing glyph names in active font.')

        self.btn_generateSTR.setToolTip(
            'Generate the pair string using Glyph Names and send it to the clipboard.'
        )
        self.btn_generateUNI.setToolTip(
            'Generate the pair string using Unicode Characters and send it to the clipboard.'
        )

        self.btn_kernPairsSTR.setToolTip(
            'Get string containing pairs from fonts kerning for current layer.\n SHIFT+Click discard filler - pure pairs.'
        )
        self.btn_kernPairsUNI.setToolTip(
            'Get Unicode pairs list from fonts kerning for current layer.\n SHIFT+Click use auto filler.'
        )

        self.btn_clear.clicked.connect(self.clear)
        self.btn_populate.clicked.connect(self.populate)

        self.btn_generateSTR.clicked.connect(
            lambda: self.generateSTR(False, False))
        self.btn_generateAMF.clicked.connect(
            lambda: self.generateSTR(True, False))
        self.btn_generateKRN.clicked.connect(
            lambda: self.generateSTR(False, True))
        self.btn_generateUNI.clicked.connect(lambda: self.generateUNI())

        self.btn_kernOTGrpSTR.clicked.connect(
            lambda: self.generateOTGroups(False))
        self.btn_kernOTGrpCLA.clicked.connect(
            lambda: self.generateOTGroups(True))

        self.btn_kernPairsSTR.clicked.connect(lambda: self.getKerning(False))
        self.btn_kernPairsUNI.clicked.connect(lambda: self.getKerning(True))
        self.btn_kernPairsAFM.clicked.connect(
            lambda: self.getKerningAMF(False))
        self.btn_kernPairsKRN.clicked.connect(lambda: self.getKerningAMF(True))

        # - Build
        self.addWidget(self.btn_populate, 0, 1, 1, 5)
        self.addWidget(self.btn_clear, 0, 6, 1, 3)
        self.addWidget(QtGui.QLabel('A:'), 1, 0, 1, 1)
        self.addWidget(self.cmb_inputA, 1, 1, 1, 5)
        self.addWidget(QtGui.QLabel('Suffix:'), 1, 6, 1, 1)
        self.addWidget(self.edt_suffixA, 1, 7, 1, 2)
        self.addWidget(self.edt_inputA, 2, 1, 1, 8)
        self.addWidget(QtGui.QLabel('B:'), 3, 0, 1, 1)
        self.addWidget(self.cmb_inputB, 3, 1, 1, 5)
        self.addWidget(QtGui.QLabel('Suffix:'), 3, 6, 1, 1)
        self.addWidget(self.edt_suffixB, 3, 7, 1, 2)
        self.addWidget(self.edt_inputB, 4, 1, 1, 8)
        self.addWidget(QtGui.QLabel('String from pattern:'), 5, 0, 1, 4)
        self.addWidget(QtGui.QLabel('FL:'), 6, 0, 1, 1)
        self.addWidget(self.cmb_fillerLeft, 6, 1, 1, 8)
        self.addWidget(QtGui.QLabel('FR:'), 7, 0, 1, 1)
        self.addWidget(self.cmb_fillerRight, 7, 1, 1, 8)
        self.addWidget(QtGui.QLabel('Pat.:'), 8, 0, 1, 1)
        self.addWidget(self.cmb_fillerPattern, 8, 1, 1, 8)
        self.addWidget(QtGui.QLabel('Join:'), 9, 0, 1, 1)
        self.addWidget(self.cmb_join, 9, 1, 1, 5)
        self.addWidget(QtGui.QLabel('Sep.:'), 9, 6, 1, 1)
        self.addWidget(self.edt_sep, 9, 7, 1, 2)
        self.addWidget(self.btn_generateSTR, 11, 0, 1, 6)
        self.addWidget(self.btn_generateUNI, 11, 6, 1, 3)
        self.addWidget(self.btn_generateAMF, 12, 0, 1, 6)
        self.addWidget(self.btn_generateKRN, 12, 6, 1, 3)
        self.addWidget(QtGui.QLabel('Pairs in kerning:'), 13, 0, 1, 9)
        self.addWidget(self.btn_kernPairsSTR, 14, 0, 1, 6)
        self.addWidget(self.btn_kernPairsUNI, 14, 6, 1, 3)
        self.addWidget(self.btn_kernPairsAFM, 15, 0, 1, 6)
        self.addWidget(self.btn_kernPairsKRN, 15, 6, 1, 3)
        self.addWidget(QtGui.QLabel('Gropus in kerning:'), 16, 0, 1, 9)
        self.addWidget(self.btn_kernOTGrpSTR, 17, 0, 1, 6)
        self.addWidget(self.btn_kernOTGrpCLA, 17, 6, 1, 3)
        self.addWidget(QtGui.QLabel('Output:'), 18, 0, 1, 9)
        self.addWidget(self.edt_output, 19, 0, 12, 9)

        self.setColumnStretch(0, 0)
        self.setColumnStretch(1, 2)
        self.setColumnStretch(6, 0)
        self.setColumnStretch(7, 1)
Ejemplo n.º 12
0
    def __init__(self):
        super(metrics_copy, self).__init__()

        # - Edit Fields
        self.edt_lsb = QtGui.QLineEdit()
        self.edt_adv = QtGui.QLineEdit()
        self.edt_rsb = QtGui.QLineEdit()

        self.edt_lsb.setPlaceholderText('Glyph Name')
        self.edt_adv.setPlaceholderText('Glyph Name')
        self.edt_rsb.setPlaceholderText('Glyph Name')

        # - Spin Box
        self.spb_lsb_percent = QtGui.QSpinBox()
        self.spb_adv_percent = QtGui.QSpinBox()
        self.spb_rsb_percent = QtGui.QSpinBox()
        self.spb_lsb_units = QtGui.QSpinBox()
        self.spb_adv_units = QtGui.QSpinBox()
        self.spb_rsb_units = QtGui.QSpinBox()

        self.spb_lsb_percent.setMaximum(200)
        self.spb_adv_percent.setMaximum(200)
        self.spb_rsb_percent.setMaximum(200)
        self.spb_lsb_units.setMaximum(200)
        self.spb_adv_units.setMaximum(200)
        self.spb_rsb_units.setMaximum(200)
        self.spb_lsb_units.setMinimum(-200)
        self.spb_adv_units.setMinimum(-200)
        self.spb_rsb_units.setMinimum(-200)

        self.spb_lsb_percent.setSuffix('%')
        self.spb_adv_percent.setSuffix('%')
        self.spb_rsb_percent.setSuffix('%')
        self.spb_lsb_units.setSuffix(' u')
        self.spb_adv_units.setSuffix(' u')
        self.spb_rsb_units.setSuffix(' u')

        self.spb_lsb_percent.setMaximumWidth(50)
        self.spb_adv_percent.setMaximumWidth(50)
        self.spb_rsb_percent.setMaximumWidth(50)
        self.spb_lsb_units.setMaximumWidth(50)
        self.spb_adv_units.setMaximumWidth(50)
        self.spb_rsb_units.setMaximumWidth(50)

        self.reset_fileds()

        # - Buttons
        self.btn_copyMetrics = QtGui.QPushButton('&Copy Metrics')
        self.btn_copyMetrics.clicked.connect(self.copyMetrics)

        # - Build
        self.addWidget(QtGui.QLabel('ADV:'), 0, 0, 1, 1)
        self.addWidget(self.edt_adv, 0, 1, 1, 3)
        self.addWidget(QtGui.QLabel('@'), 0, 4, 1, 1)
        self.addWidget(self.spb_adv_percent, 0, 5, 1, 1)
        self.addWidget(QtGui.QLabel('+'), 0, 6, 1, 1)
        self.addWidget(self.spb_adv_units, 0, 7, 1, 1)

        self.addWidget(QtGui.QLabel('LSB:'), 1, 0, 1, 1)
        self.addWidget(self.edt_lsb, 1, 1, 1, 3)
        self.addWidget(QtGui.QLabel('@'), 1, 4, 1, 1)
        self.addWidget(self.spb_lsb_percent, 1, 5, 1, 1)
        self.addWidget(QtGui.QLabel('+'), 1, 6, 1, 1)
        self.addWidget(self.spb_lsb_units, 1, 7, 1, 1)

        self.addWidget(QtGui.QLabel('RSB:'), 2, 0, 1, 1)
        self.addWidget(self.edt_rsb, 2, 1, 1, 3)
        self.addWidget(QtGui.QLabel('@'), 2, 4, 1, 1)
        self.addWidget(self.spb_rsb_percent, 2, 5, 1, 1)
        self.addWidget(QtGui.QLabel('+'), 2, 6, 1, 1)
        self.addWidget(self.spb_rsb_units, 2, 7, 1, 1)

        self.addWidget(self.btn_copyMetrics, 3, 0, 1, 8)
Ejemplo n.º 13
0
	def __init__(self, parentWidget):
		super(WKernGroups, self).__init__()

		# - Init
		self.upper_widget = parentWidget
		self.active_font = pFont()
		self.application = pWorkspace()
		self.data_fontKerning = None
		self.data_clipboard = []

		# - Interface -------------------------
		# -- Conditional formatting -----------
		self.edt_formatting = QtGui.QLineEdit()
		self.edt_formatting.setPlaceholderText('Conditional formatting example: red==None; green > 0; blue < 0; yellow => 100;!hide<-50; !show==30;')
		
		self.btn_formatting_apply = QtGui.QPushButton('Format')
		self.btn_formatting_clear = QtGui.QPushButton('Clear')
		self.btn_formatting_color = QtGui.QPushButton('>')
		self.btn_formatting_color.setMaximumWidth(20)
		
		self.btn_formatting_color.clicked.connect(lambda: self.edt_formatting.setText(self.edt_formatting.text + self.cmb_select_color.currentText))
		self.btn_formatting_apply.clicked.connect(lambda: self.update_table_format(False))
		self.btn_formatting_clear.clicked.connect(lambda: self.update_table_format(True))

		self.cmb_select_color = QtGui.QComboBox()

		colorNames = QtGui.QColor.colorNames()
		for i in range(len(colorNames)):
			self.cmb_select_color.addItem(colorNames[i])
			self.cmb_select_color.setItemData(i, QtGui.QColor(colorNames[i]), QtCore.Qt.DecorationRole)

		self.cmb_select_color.setCurrentIndex(colorNames.index('red'))

		# -- Cell highlighter and search ------
		self.edt_search_pair = QtGui.QLineEdit()
		self.edt_search_regex = QtGui.QLineEdit()
		
		self.edt_search_pair.setPlaceholderText('Pair search example: A|V; @O|@A; Where A|V plain pair and @O|@A classes containing O and A.')
		self.edt_search_regex.setPlaceholderText('RegEx search example: .*.O.*.A.*; Note: Pair source is [space] separated!')

		self.btn_search_pair_under = QtGui.QPushButton('Current Pair')
		self.btn_search_pair = QtGui.QPushButton('Find Pairs')
		self.btn_search_regex = QtGui.QPushButton('Find RegEx')
		self.btn_search_hide = QtGui.QPushButton('Hide others')

		self.btn_search_hide.setCheckable(True)
		
		self.btn_search_hide.clicked.connect(lambda: self.update_table_show_all())
		self.btn_search_pair_under.clicked.connect(lambda: self.update_table_hightlights(False))
		self.btn_search_pair.clicked.connect(lambda: self.update_table_hightlights(True))
		self.btn_search_regex.clicked.connect(lambda: self.update_table_regex())

		# -- Table ----------------------------
		self.btn_fontKerning_autoupdate = QtGui.QPushButton('Auto Update')
		self.btn_fontKerning_preview = QtGui.QPushButton('Preview pairs')
		self.btn_layer_preview = QtGui.QPushButton('Preview layers')
		self.btn_fontKerning_update = QtGui.QPushButton('Update Font')
		self.tab_fontKerning = KernTableWidget(self)
		
		self.btn_fontKerning_autoupdate.setCheckable(True)
		self.btn_fontKerning_preview.setCheckable(True)
		self.btn_layer_preview.setCheckable(True)
		self.btn_fontKerning_autoupdate.setChecked(True)
		self.btn_fontKerning_update.clicked.connect(lambda: self.update_font())

		# - Menus & Actions --------------------
		# -- Main Database actions
		self.menu_data = QtGui.QMenu('Kerning Data', self)
		act_data_import = QtGui.QAction('Import Kerning', self)
		act_data_export = QtGui.QAction('Export Kerning', self)
		act_data_font = QtGui.QAction('Load from Font', self)
		act_data_reset = QtGui.QAction('Reset Font Kerning Data', self)

		act_data_import.setEnabled(False)
		act_data_export.setEnabled(False)

		self.menu_data.addAction(act_data_font)
		self.menu_data.addSeparator()
		self.menu_data.addAction(act_data_import)
		self.menu_data.addAction(act_data_export)
		self.menu_data.addSeparator()
		self.menu_data.addSeparator()
		self.menu_data.addAction(act_data_reset)

		#act_data_import.triggered.connect(lambda: self.file_load_groups(True))
		#act_data_export.triggered.connect(lambda: self.file_export_groups(True))
		act_data_font.triggered.connect(lambda: self.kerning_from_font())
		act_data_reset.triggered.connect(lambda: self.kerning_reset())

		# -- Pairs
		self.menu_pair = QtGui.QMenu('Pairs', self)
		act_pair_add = QtGui.QAction('Add new pair', self)
		act_pair_del = QtGui.QAction('Remove pair', self)
		act_pair_update = QtGui.QAction('Update from Font', self)
		act_pair_copy = QtGui.QAction('Copy value(s)', self)
		act_pair_paste = QtGui.QAction('Paste value(s)', self)
		act_pair_copy_string = QtGui.QAction('Copy pairs string', self)
		act_pair_copy_leader = QtGui.QAction('Copy pairs string as Glyph Names', self)
		act_pair_save_krn_clas = QtGui.QAction('Save CLASS pairs as KRN...', self)
		act_pair_save_krn_plain = QtGui.QAction('Save PLAIN pairs as KRN...', self)

		self.menu_pair.addAction(act_pair_add)
		self.menu_pair.addAction(act_pair_del)
		self.menu_pair.addAction(act_pair_update)
		self.menu_pair.addSeparator()
		self.menu_pair.addAction(act_pair_copy)
		self.menu_pair.addAction(act_pair_paste)
		self.menu_pair.addSeparator()
		self.menu_pair.addAction(act_pair_copy_string)
		self.menu_pair.addAction(act_pair_copy_leader)
		self.menu_pair.addSeparator()
		self.menu_pair.addAction(act_pair_save_krn_clas)
		self.menu_pair.addAction(act_pair_save_krn_plain)

		act_pair_add.setEnabled(False)
		
		#act_pair_add.triggered.connect(lambda: self.pair_add())
		act_pair_del.triggered.connect(lambda: self.pair_del())
		act_pair_update.triggered.connect(lambda: self.pair_update_from_source())
		act_pair_copy.triggered.connect(lambda: self.pair_copy_paste(False))
		act_pair_paste.triggered.connect(lambda: self.pair_copy_paste(True))
		act_pair_copy_string.triggered.connect(lambda: self.pair_copy_string(False))
		act_pair_copy_leader.triggered.connect(lambda: self.pair_copy_string(True))
		act_pair_save_krn_clas.triggered.connect(lambda: self.pair_save_krn(False))
		act_pair_save_krn_plain.triggered.connect(lambda: self.pair_save_krn(True))

		# -- Tools
		self.menu_tools = QtGui.QMenu('Tools', self)
		act_tools_fl_extend = QtGui.QAction('Extend Kerning', self)
		act_tools_fl_match = QtGui.QAction('Match Kerning', self)
		act_tools_tr_replace = QtGui.QAction('Find && Replace', self)
		act_tools_tr_round = QtGui.QAction('Quantize', self)
		act_tools_tr_scale = QtGui.QAction('Scale', self)
		act_tools_tr_filter = QtGui.QAction('Filter', self) # High-pass, low-pass, band-pass
		act_tools_tr_clean = QtGui.QAction('Cleanup', self)
		act_tools_tr_patchboard = QtGui.QAction('Patchboard', self)

		self.menu_tools.addAction(act_tools_fl_extend)
		self.menu_tools.addAction(act_tools_fl_match)
		self.menu_tools.addSeparator()
		self.menu_tools.addAction(act_tools_tr_replace)
		self.menu_tools.addSeparator()
		self.menu_tools.addAction(act_tools_tr_round)
		self.menu_tools.addAction(act_tools_tr_scale)
		self.menu_tools.addAction(act_tools_tr_filter)
		self.menu_tools.addAction(act_tools_tr_clean)
		self.menu_tools.addSeparator()
		self.menu_tools.addAction(act_tools_tr_patchboard)

		act_tools_fl_extend.setEnabled(False)
		act_tools_fl_match.setEnabled(False)
		act_tools_tr_round.setEnabled(False)
		act_tools_tr_scale.setEnabled(False)
		act_tools_tr_filter.setEnabled(False)
		act_tools_tr_clean.setEnabled(False)
		act_tools_tr_patchboard.setEnabled(False)

		act_tools_tr_replace.triggered.connect(lambda: self.tools_replace())

		# -- View
		self.menu_view = QtGui.QMenu('View', self)
		act_view_show_all = QtGui.QAction('Show hidden rows', self)
		act_view_hide_selected = QtGui.QAction('Hide selected rows', self)
		act_view_hide_matching = QtGui.QAction('Hide matching pairs', self)
		act_view_hide_nonmatching = QtGui.QAction('Hide non-matching pairs', self)
		act_view_pair_preview = QtGui.QAction('Preview selected pairs', self)

		self.menu_view.addAction(act_view_show_all)
		self.menu_view.addAction(act_view_pair_preview)
		self.menu_view.addSeparator()
		self.menu_view.addAction(act_view_hide_selected)
		self.menu_view.addAction(act_view_hide_matching)
		self.menu_view.addAction(act_view_hide_nonmatching)

		act_view_pair_preview.triggered.connect(lambda: self.pair_preview_string(self.btn_layer_preview.isChecked()))
		act_view_show_all.triggered.connect(lambda: self.update_table_show_all())
		act_view_hide_selected.triggered.connect(lambda: self.update_table_hide_selected())
		act_view_hide_matching.triggered.connect(lambda: self.update_table_hide_matching(True))
		act_view_hide_nonmatching.triggered.connect(lambda: self.update_table_hide_matching(False))

		# -- Status bar
		self.lbl_status_selection_len = QtGui.QLabel('0')
		self.lbl_status_selection_med = QtGui.QLabel('0')
		self.lbl_status_pairs_len = QtGui.QLabel('0')
		self.lbl_status_pairs_hidden = QtGui.QLabel('0')
		self.lbl_status_masters_len = QtGui.QLabel('0')

		# -- MACOS buttons menu
		self.btn_mac_data_import = QtGui.QPushButton('Import')
		self.btn_mac_data_export = QtGui.QPushButton('Export')
		self.btn_mac_data_font = QtGui.QPushButton('From Font')
		self.btn_mac_data_reset = QtGui.QPushButton('Reset Kerning')

		self.btn_mac_data_import.setEnabled(False)
		self.btn_mac_data_export.setEnabled(False)

		self.btn_mac_data_font.clicked.connect(lambda: self.kerning_from_font())

		# - Build ------------------------------------------
		self.lay_grid = QtGui.QGridLayout()
		# -- MAC buttons
		if system() == 'Darwin':
			self.lay_grid.addWidget(self.btn_mac_data_font,					0, 0, 1, 10)
			self.lay_grid.addWidget(self.btn_mac_data_import,				0, 10, 1, 5)	
			self.lay_grid.addWidget(self.btn_mac_data_export,				0, 15, 1, 5)	
			self.lay_grid.addWidget(self.btn_mac_data_reset,				0, 20, 1, 5)			

		# -- Regular interface
		
		self.lay_grid.addWidget(self.edt_search_pair,						1, 0, 1, 20)	
		self.lay_grid.addWidget(self.btn_search_pair,						1, 20, 1, 5)	
		self.lay_grid.addWidget(self.btn_search_pair_under,					1, 25, 1, 5)
		self.lay_grid.addWidget(self.btn_fontKerning_preview,				1, 30, 1, 5)
		self.lay_grid.addWidget(self.btn_search_hide,						2, 25, 1, 5)
		self.lay_grid.addWidget(self.btn_layer_preview,						2, 30, 1, 5)

		self.lay_grid.addWidget(self.edt_search_regex,						2, 0, 1, 20)	
		self.lay_grid.addWidget(self.btn_search_regex,						2, 20, 1, 5)
		
		self.lay_grid.addWidget(self.btn_fontKerning_autoupdate,			1, 35, 1, 5)
		self.lay_grid.addWidget(self.btn_fontKerning_update,				2, 35, 1, 5)
		
		self.lay_grid.addWidget(self.tab_fontKerning,						4, 0, 32, 40)

		self.lay_grid.addWidget(self.cmb_select_color,						36, 0, 1, 5)
		self.lay_grid.addWidget(self.btn_formatting_color,					36, 5, 1, 1)
		self.lay_grid.addWidget(self.edt_formatting,						36, 6, 1, 24)
		self.lay_grid.addWidget(self.btn_formatting_apply,					36, 30, 1, 5)
		self.lay_grid.addWidget(self.btn_formatting_clear,					36, 35, 1, 5)
		self.lay_grid.addWidget(self.btn_formatting_clear,					36, 35, 1, 5)
		
		self.lay_grid.addWidget(QtGui.QLabel('SELECTION:'),					37, 0, 1, 4)
		self.lay_grid.addWidget(self.lbl_status_selection_len,				37, 4, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('MEAN:'),					37, 8, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_selection_med,				37, 12, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('PAIRS:'),						37, 16, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_pairs_len,					37, 20, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('HIDDEN:'),					37, 24, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_pairs_hidden,				37, 28, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('MASTERS:'),					37, 32, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_masters_len,				37, 36, 1, 4)

		
		self.lay_grid.setSpacing(3)
		self.setLayout(self.lay_grid)
Ejemplo n.º 14
0
    def __init__(self):
        super(tool_tab, self).__init__()

        # - Init
        self.anchorSelector = TRLayerSelect()

        self.types = 'Anchor PinPoint'.split(' ')
        self.posY = 'Coord, Expression, Keep, Shift, Above, Below, Center, Baseline, Center of mass'.split(
            ', ')
        self.posX = 'Coord, Expression, Keep, Shift, Left, Right, Center, Highest, Highest Left, Highest Right, Lowest, Lowest Left, Lowest Right, Center of mass'.split(
            ', ')
        posYvals = (None, None, 'S', 'S', 'T', 'B', 'C', None, 'W')
        posXvals = (None, None, 'S', 'S', 'L', 'R', 'C', 'AT', 'ATL', 'ATR',
                    'A', 'AL', 'AR', 'M')
        self.posYctrl = dict(zip(self.posY, posYvals))
        self.posXctrl = dict(zip(self.posX, posXvals))

        # -- Basic Tool buttons
        self.btn_anchorCopy = QtGui.QPushButton('Copy')
        self.btn_anchorPaste = QtGui.QPushButton('Paste')
        self.btn_clearSel = QtGui.QPushButton('Remove')
        self.btn_clearAll = QtGui.QPushButton('Remove All')
        self.btn_anchorAdd = QtGui.QPushButton('Add')
        self.btn_anchorMov = QtGui.QPushButton('Move')
        self.btn_anchorRename = QtGui.QPushButton('Rename')
        self.btn_anchorSuffix = QtGui.QPushButton('Suffix')
        self.btn_anchorCopy.setToolTip(
            'Copy selected Anchors from layers chosen.')
        self.btn_anchorPaste.setToolTip('Paste Anchors at layers chosen.')
        self.btn_anchorRename.setToolTip('Rename selected anchors.')
        self.btn_anchorSuffix.setToolTip(
            'Extend the name of selected Anchors.')

        self.chk_italic = QtGui.QCheckBox('Use Italic Angle')

        # -- Edit fields
        self.edt_anchorName = ALineEdit()
        self.edt_simpleX = ALineEdit()
        self.edt_simpleY = ALineEdit()
        self.edt_autoT = QtGui.QLineEdit()

        self.edt_anchorName.setPlaceholderText('New Anchor')
        self.edt_simpleX.setText('0')
        self.edt_simpleY.setText('0')
        self.edt_autoT.setText('5')

        # -- Combo box
        self.cmb_posX = QtGui.QComboBox()
        self.cmb_posY = QtGui.QComboBox()
        self.cmb_type = QtGui.QComboBox()

        self.cmb_posX.addItems(self.posX)
        self.cmb_posY.addItems(self.posY)
        self.cmb_type.addItems(self.types)
        self.cmb_type.setEnabled(False)

        # -- Constrains
        self.btn_clearSel.setMinimumWidth(90)
        self.btn_clearAll.setMinimumWidth(90)
        self.edt_anchorName.setMinimumWidth(50)
        self.edt_simpleX.setMinimumWidth(30)
        self.edt_simpleY.setMinimumWidth(30)

        # -- Link functions
        self.btn_clearAll.clicked.connect(lambda: self.clearAnchors(True))
        self.btn_clearSel.clicked.connect(lambda: self.clearAnchors(False))
        self.btn_anchorAdd.clicked.connect(lambda: self.addAnchors(False))
        self.btn_anchorMov.clicked.connect(lambda: self.addAnchors(True))
        self.btn_anchorCopy.clicked.connect(lambda: self.copyAnchors(False))
        self.btn_anchorPaste.clicked.connect(lambda: self.copyAnchors(True))
        self.btn_anchorSuffix.clicked.connect(
            lambda: self.renameAnchors(False))
        self.btn_anchorRename.clicked.connect(lambda: self.renameAnchors(True))
        self.anchorSelector.tree_anchors.itemChanged.connect(
            self.processChange)

        # - Build layout
        layoutV = QtGui.QVBoxLayout()
        layoutV.addLayout(self.anchorSelector)

        self.fld_actions = TRCollapsibleBox('Anchor actions:')
        lay_actions = QtGui.QGridLayout()

        lay_actions.addWidget(self.btn_anchorCopy, 0, 0, 1, 4)
        lay_actions.addWidget(self.btn_anchorPaste, 0, 4, 1, 4)
        lay_actions.addWidget(self.btn_clearSel, 1, 0, 1, 4)
        lay_actions.addWidget(self.btn_clearAll, 1, 4, 1, 4)

        self.fld_actions.setContentLayout(lay_actions)
        layoutV.addWidget(self.fld_actions)

        self.fld_addmod = TRCollapsibleBox('Add/Move anchor:')
        lay_addmod = QtGui.QGridLayout()

        lay_addmod.addWidget(QtGui.QLabel('N:'), 0, 0, 1, 1)
        lay_addmod.addWidget(self.edt_anchorName, 0, 1, 1, 3)
        lay_addmod.addWidget(self.cmb_type, 0, 4, 1, 4)
        lay_addmod.addWidget(QtGui.QLabel('X:'), 1, 0, 1, 1)
        lay_addmod.addWidget(self.cmb_posX, 1, 1, 1, 3)
        lay_addmod.addWidget(self.edt_simpleX, 1, 4, 1, 4)
        lay_addmod.addWidget(QtGui.QLabel('Y:'), 2, 0, 1, 1)
        lay_addmod.addWidget(self.cmb_posY, 2, 1, 1, 3)
        lay_addmod.addWidget(self.edt_simpleY, 2, 4, 1, 4)
        lay_addmod.addWidget(QtGui.QLabel('Tolerance:'), 3, 1, 1, 2)
        lay_addmod.addWidget(self.edt_autoT, 3, 3, 1, 1)
        lay_addmod.addWidget(self.chk_italic, 3, 4, 1, 1)
        lay_addmod.addWidget(self.btn_anchorAdd, 4, 0, 1, 4)
        lay_addmod.addWidget(self.btn_anchorMov, 4, 4, 1, 4)
        lay_addmod.addWidget(self.btn_anchorRename, 5, 0, 1, 4)
        lay_addmod.addWidget(self.btn_anchorSuffix, 5, 4, 1, 4)

        self.fld_addmod.setContentLayout(lay_addmod)
        layoutV.addWidget(self.fld_addmod)

        # - Finish
        self.setLayout(layoutV)
        self.setMinimumSize(300, self.sizeHint.height())
Ejemplo n.º 15
0
    def __init__(self):
        super(TRDropGuide, self).__init__()

        # -- Editing fields
        self.edt_guideName = QtGui.QLineEdit()
        self.edt_guideName.setPlaceholderText('New Guideline')

        self.edt_guideTag = TRGLineEdit()
        self.edt_guideTag.setPlaceholderText('Tag')

        self.edt_sourceName = QtGui.QLineEdit()
        self.edt_sourceName.setPlaceholderText('Source name / Current')
        self.edt_sourceName.setToolTip(
            'Source glyph name, or Active Glyph if Blank')

        # -- Combo box
        self.cmb_select_V = QtGui.QComboBox()
        self.cmb_select_H = QtGui.QComboBox()
        self.cmb_select_color = QtGui.QComboBox()

        self.cmb_select_V.addItems(['BBox width', 'Adv. width'])
        self.cmb_select_H.addItems([
            'BBox height', 'X-Height', 'Caps Height', 'Ascender', 'Descender',
            'Adv. height'
        ])

        colorNames = QtGui.QColor.colorNames()
        for i in range(len(colorNames)):
            self.cmb_select_color.addItem(colorNames[i])
            self.cmb_select_color.setItemData(i, QtGui.QColor(colorNames[i]),
                                              QtCore.Qt.DecorationRole)

        self.cmb_select_color.setCurrentIndex(colorNames.index('red'))

        self.cmb_select_color.setMinimumWidth(40)
        self.edt_guideName.setMinimumWidth(40)
        self.edt_guideTag.setMinimumWidth(40)

        # -- SpinBox
        self.spb_prc_V = QtGui.QSpinBox()
        self.spb_prc_V.setMaximum(300)
        self.spb_prc_V.setSuffix('%')
        self.spb_prc_V.setMinimumWidth(45)

        self.spb_prc_H = QtGui.QSpinBox()
        self.spb_prc_H.setMaximum(300)
        self.spb_prc_H.setSuffix('%')
        self.spb_prc_H.setMinimumWidth(45)

        self.spb_unit_V = QtGui.QSpinBox()
        self.spb_unit_V.setMaximum(300)
        self.spb_unit_V.setMinimum(-300)
        self.spb_unit_V.setSuffix(' U')
        self.spb_unit_V.setMinimumWidth(45)

        self.spb_unit_H = QtGui.QSpinBox()
        self.spb_unit_H.setMaximum(300)
        self.spb_unit_H.setMinimum(-300)
        self.spb_unit_H.setSuffix(' U')
        self.spb_unit_H.setMinimumWidth(45)

        # -- Button
        self.btn_dropGuide = QtGui.QPushButton('&Drop')
        self.btn_dropFlipX = QtGui.QPushButton('Drop: Flip &X')
        self.btn_dropFlipY = QtGui.QPushButton('Drop: Flip &Y')
        self.btn_dropLayer_V = QtGui.QPushButton('Vertical')
        self.btn_dropLayer_H = QtGui.QPushButton('Horizontal')
        self.btn_getName = QtGui.QPushButton('Get &Name')

        self.btn_dropGuide.setToolTip(
            'Drop guideline between any two selected nodes.\nIf single node is selected a vertical guide is\ndropped (using the italic angle if present).'
        )
        self.btn_dropFlipX.setToolTip(
            'Drop flipped guideline between any two selected nodes.')
        self.btn_dropFlipY.setToolTip(
            'Drop flipped guideline between any two selected nodes.')
        self.btn_getName.setToolTip('Get the name of the current active glyph')

        self.btn_dropGuide.clicked.connect(lambda: self.drop_guide_nodes(
            (1, 1)))
        self.btn_dropFlipX.clicked.connect(lambda: self.drop_guide_nodes(
            (-1, 1)))
        self.btn_dropFlipY.clicked.connect(lambda: self.drop_guide_nodes(
            (1, -1)))
        self.btn_getName.clicked.connect(
            lambda: self.edt_sourceName.setText(pGlyph().name))
        self.btn_dropLayer_V.clicked.connect(self.drop_guide_V)
        self.btn_dropLayer_H.clicked.connect(self.drop_guide_H)

        # - Build
        self.addWidget(QtGui.QLabel('Name:'), 1, 0, 1, 4)
        self.addWidget(QtGui.QLabel('Tag:'), 1, 4, 1, 4)
        self.addWidget(QtGui.QLabel('Color:'), 1, 8, 1, 4)
        self.addWidget(self.edt_guideName, 2, 0, 1, 4)
        self.addWidget(self.cmb_select_color, 2, 8, 1, 4)
        self.addWidget(self.edt_guideTag, 2, 4, 1, 4)
        self.addWidget(QtGui.QLabel('Selected Nodes:'), 3, 0, 1, 9)
        self.addWidget(self.btn_dropGuide, 4, 0, 1, 4)
        self.addWidget(self.btn_dropFlipX, 4, 4, 1, 4)
        self.addWidget(self.btn_dropFlipY, 4, 8, 1, 4)
        self.addWidget(QtGui.QLabel('Glyph Layer:'), 5, 0, 1, 4)
        self.addWidget(self.edt_sourceName, 6, 0, 1, 8)
        self.addWidget(self.btn_getName, 6, 8, 1, 4)
        self.addWidget(self.cmb_select_V, 7, 0, 1, 4)
        self.addWidget(self.spb_prc_V, 7, 4, 1, 2)
        self.addWidget(self.spb_unit_V, 7, 6, 1, 2)
        self.addWidget(self.btn_dropLayer_V, 7, 8, 1, 4)
        self.addWidget(self.cmb_select_H, 8, 0, 1, 4)
        self.addWidget(self.spb_prc_H, 8, 4, 1, 2)
        self.addWidget(self.spb_unit_H, 8, 6, 1, 2)
        self.addWidget(self.btn_dropLayer_H, 8, 8, 1, 4)
Ejemplo n.º 16
0
    def __init__(self, parentWidget):
        super(TRSmartCorner, self).__init__()
        self.upper_widget = parentWidget

        # -- Init
        self.active_font = pFont()
        self.builder = None
        self.font_masters = self.active_font.masters()
        self.empty_preset = lambda row: OrderedDict([(
            row,
            OrderedDict([('Preset', 'Preset %s' % row)] +
                        [(master, '0') for master in self.font_masters]))])
        self.table_dict = self.empty_preset(0)
        self.last_preset = 0

        # -- Widgets
        self.lay_head = QtGui.QGridLayout()

        self.edt_glyphName = QtGui.QLineEdit()
        self.edt_glyphName.setPlaceholderText('Glyph name')

        # -- Buttons
        self.btn_getBuilder = QtGui.QPushButton('Set &Builder')
        self.btn_findBuilder = QtGui.QPushButton('&From Font')
        self.btn_addPreset = QtGui.QPushButton('Add')
        self.btn_delPreset = QtGui.QPushButton('Remove')
        self.btn_resetPreset = QtGui.QPushButton('Reset')
        self.btn_loadPreset = QtGui.QPushButton('&Load Presets')
        self.btn_savePreset = QtGui.QPushButton('&Save Presets')
        self.btn_apply_smartCorner = QtGui.QPushButton('&Apply Smart Corner')
        self.btn_remove_smartCorner = QtGui.QPushButton('R&emove Smart Corner')
        self.btn_remove_presetCorner = QtGui.QPushButton('&Find and Remove')

        self.btn_apply_smartCorner.setToolTip(
            'Apply Smart Corner preset on SELECTED nodes.')
        self.btn_remove_smartCorner.setToolTip(
            'Remove Smart Corner on SELECTED nodes.')
        self.btn_remove_presetCorner.setToolTip(
            'Find and remove all Smart Corners that equal the currently selected preset.'
        )

        self.btn_apply_round = QtGui.QPushButton('&Round')
        self.btn_apply_mitre = QtGui.QPushButton('&Mitre')
        self.btn_apply_overlap = QtGui.QPushButton('&Overlap')
        self.btn_apply_trap = QtGui.QPushButton('&Trap')
        self.btn_rebuild = QtGui.QPushButton('Rebuild corner')

        self.btn_getBuilder.setMinimumWidth(70)
        self.btn_findBuilder.setMinimumWidth(70)
        self.btn_apply_round.setMinimumWidth(70)
        self.btn_apply_mitre.setMinimumWidth(70)
        self.btn_apply_overlap.setMinimumWidth(70)
        self.btn_apply_trap.setMinimumWidth(70)
        self.btn_rebuild.setMinimumWidth(70)

        self.btn_addPreset.setMinimumWidth(70)
        self.btn_delPreset.setMinimumWidth(70)
        self.btn_loadPreset.setMinimumWidth(140)
        self.btn_savePreset.setMinimumWidth(140)
        self.btn_apply_smartCorner.setMinimumWidth(140)
        self.btn_remove_smartCorner.setMinimumWidth(140)
        self.btn_remove_presetCorner.setMinimumWidth(140)

        self.btn_getBuilder.setCheckable(True)
        self.btn_getBuilder.setChecked(False)
        self.btn_findBuilder.setEnabled(False)
        self.btn_apply_round.setEnabled(False)

        self.btn_getBuilder.clicked.connect(lambda: self.getBuilder())
        self.btn_addPreset.clicked.connect(lambda: self.preset_modify(False))
        self.btn_delPreset.clicked.connect(lambda: self.preset_modify(True))
        self.btn_resetPreset.clicked.connect(lambda: self.preset_reset())
        self.btn_loadPreset.clicked.connect(lambda: self.preset_load())
        self.btn_savePreset.clicked.connect(lambda: self.preset_save())

        self.btn_apply_smartCorner.clicked.connect(
            lambda: self.apply_SmartCorner(False))
        self.btn_remove_smartCorner.clicked.connect(
            lambda: self.apply_SmartCorner(True))
        self.btn_remove_presetCorner.clicked.connect(
            lambda: self.remove_SmartCorner())

        #self.btn_apply_round.clicked.connect(lambda: self.apply_round())
        self.btn_apply_mitre.clicked.connect(lambda: self.apply_mitre(False))
        self.btn_apply_overlap.clicked.connect(lambda: self.apply_mitre(True))
        self.btn_apply_trap.clicked.connect(lambda: self.apply_trap())
        self.btn_rebuild.clicked.connect(lambda: self.rebuild())

        # -- Preset Table
        self.tab_presets = TRTableView(None)
        self.preset_reset()

        # -- Build Layout
        self.lay_head.addWidget(QtGui.QLabel('Value Presets:'), 0, 0, 1, 8)
        self.lay_head.addWidget(self.btn_loadPreset, 1, 0, 1, 4)
        self.lay_head.addWidget(self.btn_savePreset, 1, 4, 1, 4)
        self.lay_head.addWidget(self.btn_addPreset, 2, 0, 1, 2)
        self.lay_head.addWidget(self.btn_delPreset, 2, 2, 1, 2)
        self.lay_head.addWidget(self.btn_resetPreset, 2, 4, 1, 4)
        self.lay_head.addWidget(self.tab_presets, 3, 0, 5, 8)

        self.lay_head.addWidget(QtGui.QLabel('Corner Actions:'), 10, 0, 1, 8)
        self.lay_head.addWidget(self.btn_apply_round, 11, 0, 1, 2)
        self.lay_head.addWidget(self.btn_apply_mitre, 11, 2, 1, 2)
        self.lay_head.addWidget(self.btn_apply_overlap, 11, 4, 1, 2)
        self.lay_head.addWidget(self.btn_apply_trap, 11, 6, 1, 2)
        self.lay_head.addWidget(self.btn_rebuild, 12, 0, 1, 8)

        self.lay_head.addWidget(QtGui.QLabel('Smart Corner:'), 13, 0, 1, 8)
        self.lay_head.addWidget(QtGui.QLabel('Builder: '), 14, 0, 1, 1)
        self.lay_head.addWidget(self.edt_glyphName, 14, 1, 1, 3)
        self.lay_head.addWidget(self.btn_getBuilder, 14, 4, 1, 2)
        self.lay_head.addWidget(self.btn_findBuilder, 14, 6, 1, 2)
        self.lay_head.addWidget(self.btn_remove_smartCorner, 15, 0, 1, 4)
        self.lay_head.addWidget(self.btn_remove_presetCorner, 15, 4, 1, 4)
        self.lay_head.addWidget(self.btn_apply_smartCorner, 16, 0, 1, 8)

        self.addLayout(self.lay_head)
Ejemplo n.º 17
0
	def __init__(self, parentWidget):
		super(TRAutoMetrics, self).__init__()
		self.upper_widget = parentWidget

		# -- Init
		self.active_font = pFont()
		self.active_sampler = MetricSampler(self.active_font)
		self.font_masters = self.active_font.masters()
		self.empty_preset = lambda row: OrderedDict([(row, OrderedDict([('Preset', 'Preset %s' %row)] + [(master, '0') for master in self.font_masters]))])
		self.table_dict = self.empty_preset(0)
		self.__max_value = 10000

		# -- Widgets
		self.edt_glyphName = QtGui.QLineEdit()
		self.edt_glyphName.setPlaceholderText('Glyph name')

		# -- Buttons
		self.btn_addPreset = QtGui.QPushButton('Add')
		self.btn_delPreset = QtGui.QPushButton('Remove')
		self.btn_resetPreset = QtGui.QPushButton('Reset')
		self.btn_loadPreset = QtGui.QPushButton('Load')
		self.btn_savePreset = QtGui.QPushButton('Save')
		self.btn_get_lsb = QtGui.QPushButton('LSB')
		self.btn_get_rsb = QtGui.QPushButton('RSB')
		self.btn_get_both = QtGui.QPushButton('Set Metrics')
		self.btn_advanced = QtGui.QPushButton('Use Advanced options')

		self.btn_advanced.setCheckable(True)
		self.btn_advanced.setChecked(False)
		self.btn_advanced.setEnabled(False)

		self.btn_get_lsb.clicked.connect(lambda: self.set_sidebearings('lsb'))
		self.btn_get_rsb.clicked.connect(lambda: self.set_sidebearings('rsb'))
		self.btn_get_both.clicked.connect(lambda: self.set_sidebearings('bth'))

		# -- Checkbox
		self.chk_area_draw = QtGui.QCheckBox('Draw sampled area')
		self.chk_area_cache = QtGui.QCheckBox('Cache sampled area')

		# -- Spinbox
		self.spb_window_min = QtGui.QSpinBox()
		self.spb_window_max = QtGui.QSpinBox()
		self.spb_depth = QtGui.QSpinBox()
		self.spb_mul_area = QtGui.QDoubleSpinBox()

		self.spb_window_min.setMaximum(self.__max_value)
		self.spb_window_max.setMaximum(self.__max_value)
		self.spb_window_min.setMinimum(-self.__max_value)
		self.spb_window_max.setMinimum(-self.__max_value)
		self.spb_depth.setMaximum(self.__max_value)
		self.spb_mul_area.setMaximum(20.)
		self.spb_mul_area.setMinimum(-20.)
		
		self.spb_mul_area.setSingleStep(0.01)
		
		self.spb_window_min.setSuffix(' u')
		self.spb_window_max.setSuffix(' u')
		self.spb_depth.setSuffix(' u')

		self.spb_window_min.setValue(self.active_sampler.sample_window[0])
		self.spb_window_max.setValue(self.active_sampler.sample_window[1])
		
		self.spb_depth.setValue(self.active_sampler.cutout_x)
		self.spb_mul_area.setValue(0.5)

		self.spb_window_min.valueChanged.connect(lambda: self.update_sampler_config())
		self.spb_window_max.valueChanged.connect(lambda: self.update_sampler_config())
		self.spb_depth.valueChanged.connect(lambda: self.update_sampler_config())

		# -- Preset Table
		self.tab_presets = TRTableView(None)

		# -- Build Layout
		self.lay_head = QtGui.QGridLayout()
		self.frame_advanced = QtGui.QFrame()
		self.lay_advanced = QtGui.QGridLayout()

		self.lay_head.addWidget(QtGui.QLabel('Sampling Options:'),	0, 0, 1, 8)
		self.lay_head.addWidget(QtGui.QLabel('Min (Y):'),		 	1, 0, 1, 2)
		self.lay_head.addWidget(self.spb_window_min, 				1, 2, 1, 2)
		self.lay_head.addWidget(QtGui.QLabel('Max (Y):'), 			1, 4, 1, 2)
		self.lay_head.addWidget(self.spb_window_max, 				1, 6, 1, 2)
		self.lay_head.addWidget(QtGui.QLabel('Depth (X):'), 		2, 0, 1, 2)
		self.lay_head.addWidget(self.spb_depth, 					2, 2, 1, 2)
		self.lay_head.addWidget(QtGui.QLabel('Area (mult.):'),	 	2, 4, 1, 2)
		self.lay_head.addWidget(self.spb_mul_area,					2, 6, 1, 2)
		self.lay_head.addWidget(self.chk_area_draw,					3, 0, 1, 4)
		self.lay_head.addWidget(self.chk_area_cache,				3, 4, 1, 4)
		self.lay_head.addWidget(self.btn_get_lsb,					4, 0, 1, 2)
		self.lay_head.addWidget(self.btn_get_both,					4, 2, 1, 4)
		self.lay_head.addWidget(self.btn_get_rsb,					4, 6, 1, 2)
		self.lay_head.addWidget(self.btn_advanced,					5, 0, 1, 8)
		self.lay_head.addWidget(self.frame_advanced,				6, 0, 15, 8)
		
		self.frame_advanced.setLayout(self.lay_advanced)
		#self.lay_advanced.addWidget(QtGui.QLabel('Advanced configuration:'), 0, 0, 1, 6)
		self.lay_advanced.addWidget(self.btn_addPreset,				1, 0, 1, 2)
		self.lay_advanced.addWidget(self.btn_delPreset,				1, 2, 1, 2)
		self.lay_advanced.addWidget(self.btn_resetPreset,			1, 4, 1, 2)
		self.lay_advanced.addWidget(self.tab_presets,				2, 0, 5, 6)
		self.lay_advanced.addWidget(self.btn_loadPreset,			10, 0, 1, 3)
		self.lay_advanced.addWidget(self.btn_savePreset,			10, 3, 1, 3)
		
		self.frame_advanced.setFrameStyle(1)
		self.frame_advanced.hide()
		self.btn_advanced.clicked.connect(lambda: self.frame_advanced.show() if self.btn_advanced.isChecked() else self.frame_advanced.hide())

		self.addLayout(self.lay_head)