Exemple #1
0
    def __init__(self):
        super(tool_tab, self).__init__()

        # - Init
        layoutV = QtGui.QVBoxLayout()

        # - Build
        #layoutV.addWidget(QtGui.QLabel('Glyph: Adjust Metric data'))
        layoutV.addLayout(metrics_adjust())
        layoutV.addSpacing(10)
        layoutV.addWidget(QtGui.QLabel('Glyph: Copy Metric data'))
        layoutV.addLayout(metrics_copy())
        layoutV.addSpacing(10)
        layoutV.addWidget(QtGui.QLabel('Glyph: Copy BBox data'))
        layoutV.addLayout(bbox_copy())
        layoutV.addSpacing(10)
        layoutV.addWidget(QtGui.QLabel('Glyph: Set metric expressions'))
        layoutV.addLayout(metrics_expr())
        layoutV.addSpacing(10)
        layoutV.addWidget(QtGui.QLabel('\nFont: Set Font Metrics'))
        layoutV.addLayout(metrics_font())

        # - Build ---------------------------
        layoutV.addStretch()
        self.setLayout(layoutV)

        # !!! Hotfix FL7 7355
        self.setMinimumSize(300, self.sizeHint.height())
Exemple #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)
Exemple #3
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_()
Exemple #4
0
    def __init__(self):
        super(TRImpEx, self).__init__()

        # - Interface
        # -- Layouts
        self.lay_base = QtGui.QGridLayout()
        self.plane_A = QtGui.QListWidget()
        self.plane_B = QtGui.QListWidget()
        self.plane_C = QtGui.QVBoxLayout()

        self.plane_A.setAlternatingRowColors(True)
        self.plane_B.setAlternatingRowColors(True)

        self.plane_A.addItems(sorted(impex_actions_db.keys()))
        self.plane_A.selectionModel().selectionChanged.connect(
            self.refresh_plane_B)
        self.plane_B.selectionModel().selectionChanged.connect(self.run_action)

        self.plane_C.addWidget(
            ImpexActions.action_empty())  # Set empty widget at start

        # - Build
        self.lay_base.addWidget(QtGui.QLabel('Import/Export type:'), 0, 1)
        self.lay_base.addWidget(QtGui.QLabel('Action:'), 0, 2)
        self.lay_base.addWidget(QtGui.QLabel('Options:'), 0, 3)
        self.lay_base.addWidget(self.plane_A, 1, 1)
        self.lay_base.addWidget(self.plane_B, 1, 2)
        self.lay_base.addLayout(self.plane_C, 1, 3)

        self.lay_base.setColumnStretch(1, 1)
        self.lay_base.setColumnStretch(2, 1)
        self.lay_base.setColumnStretch(3, 1)

        self.setLayout(self.lay_base)
Exemple #5
0
    def __init__(self):
        super(metrics_expr, self).__init__()

        self.edt_lsb = TRMLineEdit()
        self.edt_adv = TRMLineEdit()
        self.edt_rsb = TRMLineEdit()

        self.edt_lsb.setPlaceholderText('Metric expression')
        self.edt_adv.setPlaceholderText('Metric expression')
        self.edt_rsb.setPlaceholderText('Metric expression')

        self.btn_setMetrics = QtGui.QPushButton('&Set')
        self.btn_getMetrics = QtGui.QPushButton('&Get')
        self.btn_getShapeParent = QtGui.QPushButton('&Reference')
        self.btn_delMetrics = QtGui.QPushButton('&Unlink')
        self.btn_autoBind = QtGui.QPushButton('&Auto Link')

        self.btn_getMetrics.setToolTip(
            'Get Metric expressions for current layer')
        self.btn_setMetrics.setToolTip(
            'Set Metric expressions.\n\n - Click: Set\n - SHIFT + Click: Set LSB with distance between selected two nodes removed from the expression.\n - Alt + Click: Set RSB with distance between selected two nodes removed from the expression.\n - All above + CTRL: - Negate operation (distance added)'
        )
        self.btn_autoBind.setToolTip(
            'Automatically bind metric expressions from available element references.'
        )

        self.btn_getMetrics.clicked.connect(lambda: self.getMetricEquations())
        self.btn_setMetrics.clicked.connect(
            lambda: self.setMetricEquations(False))
        self.btn_delMetrics.clicked.connect(
            lambda: self.setMetricEquations(True))
        self.btn_getShapeParent.clicked.connect(self.bindShapeParent)
        self.btn_autoBind.clicked.connect(self.autoMetricEquations)

        self.spb_shapeIndex = QtGui.QSpinBox()

        self.addWidget(QtGui.QLabel('ADV:'), 0, 0, 1, 1)
        self.addWidget(self.edt_adv, 0, 1, 1, 5)
        self.addWidget(QtGui.QLabel('LSB:'), 1, 0, 1, 1)
        self.addWidget(self.edt_lsb, 1, 1, 1, 5)
        self.addWidget(QtGui.QLabel('RSB:'), 2, 0, 1, 1)
        self.addWidget(self.edt_rsb, 2, 1, 1, 5)
        self.addWidget(self.btn_getMetrics, 3, 0, 1, 2)
        self.addWidget(self.btn_setMetrics, 3, 2, 1, 4)

        self.addWidget(QtGui.QLabel('Composite Glyph: Metric expressions'), 4,
                       0, 1, 5)
        self.addWidget(self.btn_getShapeParent, 5, 0, 1, 2)
        self.addWidget(self.spb_shapeIndex, 5, 2, 1, 1)
        self.addWidget(self.btn_autoBind, 5, 3, 1, 1)
        self.addWidget(self.btn_delMetrics, 5, 4, 1, 1)

        self.setColumnStretch(0, 0)
        self.setColumnStretch(1, 5)
Exemple #6
0
	def __init__(self):
		super(tool_tab, self).__init__()
	
		# - Init
		self.active_font = pFont()
		self.class_data = {}
				
		# - Widgets
		self.cmb_layer = QtGui.QComboBox()
		self.cmb_layer.addItems(['All masters'] + self.active_font.masters())

		self.btn_loadFile = QtGui.QPushButton('From File')
		self.btn_loadFont = QtGui.QPushButton('From Font')
		self.btn_saveExpr = QtGui.QPushButton('Save')
		self.btn_loadExpr = QtGui.QPushButton('Load')
		self.btn_exec = QtGui.QPushButton('Execute')
		self.btn_help = QtGui.QPushButton('Help')
		self.btn_classKern = QtGui.QPushButton('Class Kerning')

		self.btn_classKern.setCheckable(True)
		self.btn_loadFile.setCheckable(True)
		self.btn_loadFont.setCheckable(True)
		
		self.btn_loadFile.setChecked(False)
		self.btn_loadFont.setChecked(False)
		self.btn_classKern.setChecked(True)
			
		self.btn_help.clicked.connect(lambda: QtGui.QMessageBox.information(None, 'Help', str_help))
		self.btn_loadFile.clicked.connect(self.classes_fromFile)
		self.btn_loadFont.clicked.connect(self.classes_fromFont)
		self.btn_exec.clicked.connect(self.process)
		self.btn_saveExpr.clicked.connect(self.expr_toFile)
		self.btn_loadExpr.clicked.connect(self.expr_fromFile)

		self.txt_editor = QtGui.QPlainTextEdit()
		
		# - Build layouts 
		layoutV = QtGui.QGridLayout() 
		layoutV.addWidget(QtGui.QLabel('Class kerning data:'),		0, 0, 1, 4)
		layoutV.addWidget(self.btn_loadFont, 						1, 0, 1, 2)
		layoutV.addWidget(self.btn_loadFile, 						1, 2, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Process:'),					2, 0, 1, 4)
		layoutV.addWidget(self.cmb_layer,							3, 0, 1, 2)
		layoutV.addWidget(self.btn_classKern,						3, 2, 1, 2)
		layoutV.addWidget(self.txt_editor,							5, 0, 30, 4)
		layoutV.addWidget(self.btn_saveExpr, 						36, 0, 1, 2)
		layoutV.addWidget(self.btn_loadExpr, 						36, 2, 1, 2)
		layoutV.addWidget(self.btn_help,							37, 0, 1, 2)
		layoutV.addWidget(self.btn_exec, 							37, 2, 1, 2)

		# - Set Widget
		self.setLayout(layoutV)
Exemple #7
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)
Exemple #8
0
    def __init__(self):
        super(metrics_adjust, self).__init__()
        # - Spin Boxes
        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.resetSpinBox()

        # - Buttons
        self.btn_adjMetrics = QtGui.QPushButton('&Adjust Metrics')
        self.btn_resetSpinBox = QtGui.QPushButton('&Reset')
        self.btn_adjMetrics.clicked.connect(self.adjMetrics)
        self.btn_resetSpinBox.clicked.connect(self.resetSpinBox)

        self.addWidget(QtGui.QLabel('LSB adjust:'), 0, 0, 1, 1)
        self.addWidget(QtGui.QLabel('RSB adjust:'), 0, 1, 1, 1)
        self.addWidget(QtGui.QLabel('ADV adjust:'), 0, 2, 1, 1)
        self.addWidget(self.spb_lsb_percent, 1, 0, 1, 1)
        self.addWidget(self.spb_rsb_percent, 1, 1, 1, 1)
        self.addWidget(self.spb_adv_percent, 1, 2, 1, 1)

        self.addWidget(self.spb_lsb_units, 2, 0, 1, 1)
        self.addWidget(self.spb_rsb_units, 2, 1, 1, 1)
        self.addWidget(self.spb_adv_units, 2, 2, 1, 1)

        self.addWidget(self.btn_resetSpinBox, 3, 0, 1, 1)
        self.addWidget(self.btn_adjMetrics, 3, 1, 1, 2)
Exemple #9
0
	def __init__(self):
		super(TRkernClean, self).__init__()
		# - Basic operations
		self.btn_font_refresh = QtGui.QPushButton('Refresh')
		self.btn_exceptions_report = QtGui.QPushButton('Report')
		self.btn_exceptions_remove = QtGui.QPushButton('Clear')
		self.btn_exceptions_flats = QtGui.QPushButton('Report Extendable Flat Pairs')
		self.btn_report_mismatch = QtGui.QPushButton('Report Pair Mis-match')

		self.cmb_all_fonts = QtGui.QComboBox()
		self.cmb_layers = QtGui.QComboBox()

		self.chk_exceptions_fix_groups = QtGui.QCheckBox('Fix Group Names')

		self.spn_exceptions_delta = QtGui.QSpinBox()
		self.spn_exceptions_delta.setValue(5)
		self.spn_exceptions_delta.setMaximum(1000)
		
		self.btn_exceptions_report.setToolTip('Report exceptions of class kerning within value given')
		self.btn_exceptions_remove.setToolTip('Remove exceptions of class kerning within value given')
		self.btn_report_mismatch.setToolTip('Report kerning pairs that are not present in all masters')

		self.btn_font_refresh.clicked.connect(lambda:self.fonts_refresh())
		self.cmb_all_fonts.currentIndexChanged.connect(lambda:self.fonts_changed())
		self.btn_exceptions_report.clicked.connect(lambda: self.kern_exceptions(False, False))
		self.btn_exceptions_remove.clicked.connect(lambda: self.kern_exceptions(True, False))
		self.btn_exceptions_flats.clicked.connect(lambda: self.kern_exceptions(False, True))
		self.btn_report_mismatch.clicked.connect(self.report_mismatch)

		# -- Build
		self.addWidget(QtGui.QLabel('Process Font:'),				0, 0, 1, 6)
		self.addWidget(self.cmb_all_fonts, 							1, 0, 1, 5)
		self.addWidget(self.btn_font_refresh, 						1, 5, 1, 1)
		self.addWidget(QtGui.QLabel('\nKerning: Owerview'), 		2, 0, 1, 6)
		self.addWidget(self.btn_exceptions_flats, 					3, 0, 1, 6)
		self.addWidget(self.btn_report_mismatch, 					4, 0, 1, 6)
		self.addWidget(QtGui.QLabel('\nKerning: Clean exceptions'), 6, 0, 1, 6)
		self.addWidget(QtGui.QLabel('Layer:'), 						7, 0, 1, 1)
		self.addWidget(self.cmb_layers, 							7, 1, 1, 5)
		self.addWidget(QtGui.QLabel('Delta:'),						8, 0, 1, 1)
		self.addWidget(self.spn_exceptions_delta, 					8, 1, 1, 2)
		self.addWidget(self.chk_exceptions_fix_groups, 				8, 3, 1, 3)
		self.addWidget(self.btn_exceptions_report, 					9, 0, 1, 3)
		self.addWidget(self.btn_exceptions_remove, 					9, 3, 1, 3)

		# - Init
		self.fonts_refresh()
Exemple #10
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)
Exemple #11
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)
Exemple #12
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)
Exemple #13
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)
Exemple #14
0
    def __init__(self, parent):
        super(glyphComposer, self).__init__()

        # - Init
        self.parentWgt = parent

        # - Widgets
        self.cmb_fontShapes = QtGui.QComboBox()
        self.btn_populateShapes = QtGui.QPushButton('Populate')
        self.btn_insertShape = QtGui.QPushButton('Insert')
        self.btn_replaceShape = QtGui.QPushButton('Replace')
        self.btn_help = QtGui.QPushButton('Help')
        self.btn_saveExpr = QtGui.QPushButton('Save')
        self.btn_loadExpr = QtGui.QPushButton('Load')
        self.btn_exec = QtGui.QPushButton('Execute')

        self.cmb_fontShapes.setEditable(True)

        self.btn_populateShapes.clicked.connect(self.populate_shapes)
        self.btn_insertShape.clicked.connect(self.shape_insert)
        self.btn_replaceShape.clicked.connect(self.shape_replace)
        self.btn_exec.clicked.connect(self.process_insert)
        self.btn_saveExpr.clicked.connect(self.expr_toFile)
        self.btn_loadExpr.clicked.connect(self.expr_fromFile)
        self.btn_help.clicked.connect(lambda: QtGui.QMessageBox.information(
            self.parentWgt, 'Help', str_help))

        self.txt_editor = TRPlainTextEdit()

        # - Build layouts
        self.addWidget(QtGui.QLabel('Insert elements:'), 0, 0, 1, 4)
        self.addWidget(self.cmb_fontShapes, 1, 0, 1, 6)
        self.addWidget(self.btn_populateShapes, 1, 6, 1, 2)
        self.addWidget(self.btn_insertShape, 2, 0, 1, 4)
        self.addWidget(self.btn_replaceShape, 2, 4, 1, 4)
        self.addWidget(QtGui.QLabel('Advanced Insert elements:'), 5, 0, 1, 4)
        self.addWidget(self.txt_editor, 7, 0, 30, 8)
        self.addWidget(self.btn_saveExpr, 37, 0, 1, 4)
        self.addWidget(self.btn_loadExpr, 37, 4, 1, 4)
        self.addWidget(self.btn_help, 38, 0, 1, 2)
        self.addWidget(self.btn_exec, 38, 2, 1, 6)
Exemple #15
0
    def __build(self):
        # - Init
        self.sliders = []
        self.process_glyphs = []

        # - Buttons
        self.btn_capture = QtGui.QPushButton('Capture Smart Angles')
        self.btn_capture.clicked.connect(lambda: self.capture())

        # - Set layout
        self.addWidget(QtGui.QLabel('\nRound: Smart corner control'))
        self.addWidget(self.btn_capture)
Exemple #16
0
    def __init__(self):
        super(tool_tab, self).__init__()

        # - Init
        layoutV = QtGui.QVBoxLayout()
        self.KeyboardOverride = False

        # - Build
        layoutV.addWidget(QtGui.QLabel('Basic Operations:'))
        layoutV.addLayout(basicOps())
        layoutV.addLayout(glyphComposer(self))

        layoutV.addStretch()
        layoutV.addWidget(QtGui.QLabel('Align Elements:'))
        self.alignShapes = alignShapes()
        layoutV.addLayout(self.alignShapes)

        layoutV.addStretch()
        layoutV.addWidget(QtGui.QLabel('Transformation:'))
        self.shapeMovement = shapeMovement()
        layoutV.addLayout(self.shapeMovement)

        # - Capture Kyaboard
        self.btn_capture = QtGui.QPushButton('Capture Keyboard')

        self.btn_capture.setCheckable(True)
        self.btn_capture.setToolTip(
            'Click here to capture keyboard arrows input.\nNote:\n+10 SHIFT\n+100 CTRL\n Exit ESC'
        )
        self.btn_capture.setStatusTip(self.btn_capture.toolTip)
        self.btn_capture.clicked.connect(lambda: self.captureKeyaboard())

        layoutV.addWidget(self.btn_capture)

        # - Build ---------------------------
        self.setLayout(layoutV)

        # !!! Hotfix FL7 7355
        self.setMinimumSize(300, self.sizeHint.height())
Exemple #17
0
	def __init__(self):
		super(TRTransformCtrl, self).__init__()

		# - Combos 
		self.rad_or = QtGui.QRadioButton('ORG')
		self.rad_bl = QtGui.QRadioButton('BL')
		self.rad_tl = QtGui.QRadioButton('TL')
		self.rad_br = QtGui.QRadioButton('BR')
		self.rad_tr = QtGui.QRadioButton('TR')
		self.rad_ce = QtGui.QRadioButton('CEN')

		# - Spinboxes
		self.spb_scale_x = QtGui.QSpinBox()
		self.spb_scale_y = QtGui.QSpinBox()
		self.spb_translate_x = QtGui.QSpinBox()
		self.spb_translate_y = QtGui.QSpinBox()
		self.spb_shear = QtGui.QSpinBox()
		self.spb_rotate = QtGui.QSpinBox()

		self.spb_scale_x.setMinimum(0)
		self.spb_scale_y.setMinimum(0)
		self.spb_translate_x.setMinimum(-9999)
		self.spb_translate_y.setMinimum(-9999)
		self.spb_shear.setMinimum(-90)
		self.spb_rotate.setMinimum(-360)

		self.spb_scale_x.setMaximum(999)
		self.spb_scale_y.setMaximum(999)
		self.spb_translate_x.setMaximum(9999)
		self.spb_translate_y.setMaximum(9999)
		self.spb_shear.setMaximum(90)
		self.spb_rotate.setMaximum(360)

		self.reset()

		# - Build
		self.lay_controls = QtGui.QGridLayout()
		self.lay_controls.addWidget(QtGui.QLabel('Scale X:'),			0, 0, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Scale Y:'),			0, 1, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Trans. X:'),			0, 2, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Trans. Y:'),			0, 3, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Shear:'),				0, 4, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Rotate:'),			0, 5, 1, 1)
		self.lay_controls.addWidget(self.spb_scale_x,					1, 0, 1, 1)
		self.lay_controls.addWidget(self.spb_scale_y,					1, 1, 1, 1)
		self.lay_controls.addWidget(self.spb_translate_x,				1, 2, 1, 1)
		self.lay_controls.addWidget(self.spb_translate_y,				1, 3, 1, 1)
		self.lay_controls.addWidget(self.spb_shear,						1, 4, 1, 1)
		self.lay_controls.addWidget(self.spb_rotate,					1, 5, 1, 1)
		self.lay_controls.addWidget(self.rad_or,						2, 0, 1, 1)
		self.lay_controls.addWidget(self.rad_bl,						2, 1, 1, 1)
		self.lay_controls.addWidget(self.rad_tl,						2, 2, 1, 1)
		self.lay_controls.addWidget(self.rad_br,						2, 3, 1, 1)
		self.lay_controls.addWidget(self.rad_tr,						2, 4, 1, 1)
		self.lay_controls.addWidget(self.rad_ce,						2, 5, 1, 2)
				
		self.setLayout(self.lay_controls)
Exemple #18
0
    def __init__(self):
        super(tool_tab, self).__init__()

        # - Init
        layoutV = QtGui.QVBoxLayout()
        self.strGenerator = TRStringGen()

        # - Build ---------------------------
        layoutV.addWidget(QtGui.QLabel('Pairs generator:'))
        layoutV.addLayout(self.strGenerator)

        layoutV.addStretch()
        self.setLayout(layoutV)

        # !!! Hotfix FL7 7355
        self.setMinimumSize(300, self.sizeHint.height())
Exemple #19
0
    def __init__(self):
        super(tool_tab, self).__init__()

        # - Init
        layoutV = QtGui.QVBoxLayout()

        # - Build
        layoutV.addWidget(QtGui.QLabel('Curve: Basic tools'))
        layoutV.addLayout(curveEq())

        # - Build ---------------------------
        layoutV.addStretch()
        self.setLayout(layoutV)

        # !!! Hotfix FL7 7355
        self.setMinimumSize(300, self.sizeHint.height())
Exemple #20
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)
Exemple #21
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)
Exemple #22
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)
Exemple #23
0
    def __init__(self, parentWidget):
        super(WFontMetrics, self).__init__()

        # - Init
        self.grid = QtGui.QGridLayout()
        self.upperWidget = parentWidget
        self.activeFont = pFont()
        self.metricData = {}
        self.refresh()

        # - 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_apply.clicked.connect(self.applyChanges)
        self.btn_reset.clicked.connect(self.resetChanges)
        self.btn_save.clicked.connect(self.exportMetrics)
        self.btn_open.clicked.connect(self.importMetrics)

        self.tab_fontMetrics = TRTableView(self.metricData)

        # - Build
        lbl_name = QtGui.QLabel('Font Metrics (All Masters)')
        lbl_name.setMaximumHeight(20)
        self.grid.addWidget(lbl_name, 0, 0, 1, 24)
        self.grid.addWidget(self.tab_fontMetrics, 1, 0, 5, 21)
        self.grid.addWidget(self.btn_save, 1, 21, 1, 3)
        self.grid.addWidget(self.btn_open, 2, 21, 1, 3)
        self.grid.addWidget(self.btn_reset, 4, 21, 1, 3)
        self.grid.addWidget(self.btn_apply, 5, 21, 1, 3)

        for i in range(1, 6):
            self.grid.setRowStretch(i, 2)

        self.setLayout(self.grid)
Exemple #24
0
    def __init__(self):
        super(TRGlyphBasic, self).__init__()

        # -- Edit fileds
        self.edt_glyphName = TRGLineEdit()
        self.edt_glyphTags = TRGLineEdit()
        self.edt_glyphUnis = TRGLineEdit()

        self.edt_glyphName.setPlaceholderText('Glyph Name')
        self.edt_glyphTags.setPlaceholderText('Glyph Tags')
        self.edt_glyphUnis.setPlaceholderText('Glyph Unicodes')

        self.edt_glyphName.setToolTip(help_numeration)

        # -- Buttons
        self.btn_setName = QtGui.QPushButton('Set &Name')
        self.btn_setFlag = QtGui.QPushButton('Set &Flag')
        self.btn_setTags = QtGui.QPushButton('Set &Tags')
        self.btn_setUnis = QtGui.QPushButton('Set &Unicode')
        self.btn_setUnis.setEnabled(False)

        self.btn_setName.clicked.connect(lambda: self.glyph_setBasics('name'))
        self.btn_setFlag.clicked.connect(lambda: self.glyph_setBasics('flag'))
        self.btn_setTags.clicked.connect(lambda: self.glyph_setBasics('tags'))

        self.btn_setName.setToolTip(help_setName)

        # -- Hinting & Stems (Move to other panel later!)
        self.cmb_select_stem = QtGui.QComboBox()
        self.cmb_select_stem.addItems(['PostScript', 'TrueType'])
        self.btn_setStemV = QtGui.QPushButton('Set &V-Stem')
        self.btn_setStemH = QtGui.QPushButton('Set &H-Stem')
        self.btn_setStemV.clicked.connect(lambda: self.setStem(False))
        self.btn_setStemH.clicked.connect(lambda: self.setStem(True))

        # -- Combo box
        #fontMarkColors = [(QtGui.QColor(name).hue(), name) for name in QtGui.QColor.fontMarkColors()]
        self.cmb_select_color = QtGui.QComboBox()
        self.color_codes = {
            name: value
            for name, value, discard in fontMarkColors
        }

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

        self.cmb_select_color.setMinimumWidth(40)
        self.edt_glyphName.setMinimumWidth(40)

        # - Build
        self.addWidget(QtGui.QLabel('Glyph Basics:'), 0, 0, 1, 8)
        self.addWidget(QtGui.QLabel('Name:'), 1, 0, 1, 1)
        self.addWidget(self.edt_glyphName, 1, 1, 1, 5)
        self.addWidget(self.btn_setName, 1, 6, 1, 2)
        self.addWidget(QtGui.QLabel('Flag:'), 2, 0, 1, 1)
        self.addWidget(self.cmb_select_color, 2, 1, 1, 5)
        self.addWidget(self.btn_setFlag, 2, 6, 1, 2)
        self.addWidget(QtGui.QLabel('Tags:'), 3, 0, 1, 1)
        self.addWidget(self.edt_glyphTags, 3, 1, 1, 5)
        self.addWidget(self.btn_setTags, 3, 6, 1, 2)
        self.addWidget(QtGui.QLabel('Uni:'), 4, 0, 1, 1)
        self.addWidget(self.edt_glyphUnis, 4, 1, 1, 5)
        self.addWidget(self.btn_setUnis, 4, 6, 1, 2)
        self.addWidget(
            QtGui.QLabel('\nGlyph selection to Font Stems (Hinting):'), 5, 0,
            1, 8)
        self.addWidget(QtGui.QLabel('Type:'), 6, 0, 1, 1)
        self.addWidget(self.cmb_select_stem, 6, 1, 1, 3)
        self.addWidget(self.btn_setStemV, 6, 4, 1, 2)
        self.addWidget(self.btn_setStemH, 6, 6, 1, 2)
Exemple #25
0
    def __init__(self):
        super(TRGlyphCopyTools, self).__init__()

        # -- Edit Fields
        self.edt_glyphsuffix = TRGLineEdit()
        self.edt_glyphsuffix.setPlaceholderText('Glyph Suffix')
        self.edt_glyphsuffix.setToolTip(help_numeration)

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

        # -- Buttons
        self.btn_duplicate = QtGui.QPushButton('Duplicate')
        self.chk_slot01 = QtGui.QPushButton('')
        self.chk_slot01.setCheckable(True)
        self.chk_slot02 = QtGui.QPushButton('')
        self.chk_slot02.setCheckable(True)
        self.chk_slot03 = QtGui.QPushButton('')
        self.chk_slot03.setCheckable(True)
        self.chk_slot04 = QtGui.QPushButton('')
        self.chk_slot04.setCheckable(True)

        self.btn_insert = QtGui.QPushButton('Insert')
        self.btn_insert.setToolTip(
            'Copy contents of source glyph and insert them to current active glyph(s)'
        )
        self.btn_insert.clicked.connect(lambda: self.glyph_insert(False))

        self.btn_insert_mask = QtGui.QPushButton('Mask')
        self.btn_insert_mask.setToolTip(
            'Copy contents of source glyph and insert them as MASK to current active glyph(s)'
        )
        self.btn_insert_mask.clicked.connect(lambda: self.glyph_insert(True))

        self.btn_duplicate.setToolTip(help_duplicate)
        self.btn_duplicate.clicked.connect(self.glyph_duplicate)

        # -- Spin boxes
        self.spb_duplicate = QtGui.QSpinBox()
        self.spb_duplicate.setMaximum(20)
        self.spb_duplicate.setMinimum(1)

        # -- Mode checks
        self.chk_outline = QtGui.QCheckBox('Contours')
        self.chk_references = QtGui.QCheckBox('References')
        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')
        self.chk_links = QtGui.QCheckBox('Links')
        self.chk_tags = QtGui.QCheckBox('Tags')
        self.chk_flag = QtGui.QCheckBox('Flag')

        # -- Set States
        self.chk_outline.setCheckState(QtCore.Qt.Checked)
        #self.chk_references.setCheckState(QtCore.Qt.Checked)
        self.chk_guides.setCheckState(QtCore.Qt.Checked)
        self.chk_anchors.setCheckState(QtCore.Qt.Checked)
        self.chk_lsb.setCheckState(QtCore.Qt.Checked)
        self.chk_adv.setCheckState(QtCore.Qt.Checked)
        self.chk_rsb.setCheckState(QtCore.Qt.Checked)
        self.chk_links.setCheckState(QtCore.Qt.Checked)
        self.chk_tags.setCheckState(QtCore.Qt.Checked)
        self.chk_flag.setCheckState(QtCore.Qt.Checked)

        # -- Custom controls
        self.tr_trans_ctrl = TRTransformCtrl()

        # -- Build
        self.addWidget(
            QtGui.QLabel('\nCopy and Duplicate Glyph(s) (Options): '), 0, 0, 1,
            4)
        #self.addWidget(self.chk_slot01, 				1, 0, 1, 1)
        #self.addWidget(self.chk_slot02, 				1, 1, 1, 1)
        #self.addWidget(self.chk_slot03, 				1, 2, 1, 1)
        #self.addWidget(self.chk_slot04, 				1, 3, 1, 1)
        self.addWidget(self.chk_outline, 2, 0, 1, 2)
        self.addWidget(self.chk_references, 2, 2, 1, 2)
        self.addWidget(self.chk_lsb, 3, 0, 1, 1)
        self.addWidget(self.chk_adv, 3, 1, 1, 1)
        self.addWidget(self.chk_rsb, 3, 2, 1, 1)
        self.addWidget(self.chk_links, 3, 3, 1, 1)
        self.addWidget(self.chk_anchors, 4, 0, 1, 1)
        self.addWidget(self.chk_guides, 4, 1, 1, 1)
        self.addWidget(self.chk_tags, 4, 2, 1, 1)
        self.addWidget(self.chk_flag, 4, 3, 1, 1)
        self.addWidget(self.tr_trans_ctrl, 5, 0, 1, 4)
        self.addWidget(QtGui.QLabel('\nDuplicate Glyph(s) with suffix:'), 6, 0,
                       1, 4)
        self.addWidget(self.edt_glyphsuffix, 7, 0, 1, 2)
        self.addWidget(self.spb_duplicate, 7, 2, 1, 1)
        self.addWidget(self.btn_duplicate, 7, 3, 1, 1)
        self.addWidget(QtGui.QLabel('\nInsert contents from glyph source:'), 8,
                       0, 1, 4)
        self.addWidget(self.edt_sourceName, 9, 0, 1, 2)
        self.addWidget(self.btn_insert, 9, 2, 1, 1)
        self.addWidget(self.btn_insert_mask, 9, 3, 1, 1)

        self.tr_trans_ctrl.lay_controls.setMargin(0)
Exemple #26
0
	def __init__(self):
		super(tool_tab, self).__init__()

		# - Init

		# - Widgets
		# - Glyph list
		self.lst_glyphName = QtGui.QListWidget()
		self.lst_glyphName.setMinimumHeight(50)
		self.lst_glyphName.setAlternatingRowColors(True)
		
		# -- Buttons
		self.btn_refresh = QtGui.QPushButton('&Refresh')
		self.btn_setAxis = QtGui.QPushButton('Set &Axis')
		self.btn_setAxis_c = QtGui.QPushButton('Set &Axis')
		self.btn_resetAxis = QtGui.QPushButton('Reset Axis')
		self.btn_getVstem = QtGui.QPushButton('Get &Vertical Stems')
		self.btn_getHstem = QtGui.QPushButton('Get &Horizontal Stems')
		self.btn_setLayer = QtGui.QPushButton('Layer changed')
		self.btn_execute = QtGui.QPushButton('Execute')
		self.btn_file_load_patchboard = QtGui.QPushButton('Load')
		self.btn_file_save_patchboard = QtGui.QPushButton('Save')
		
		# -- Options
		self.btn_opt_extrapolate = QtGui.QPushButton('Extrapolate')
		self.btn_opt_italic = QtGui.QPushButton('Italic')
		self.btn_opt_update_preview = QtGui.QPushButton('Live preview')
		self.btn_opt_keep_center = QtGui.QPushButton('Keep Center')
		self.btn_opt_metrics = QtGui.QPushButton('Metrics')
		self.btn_opt_anchors = QtGui.QPushButton('Anchors')
		self.btn_opt_target = QtGui.QPushButton('Use Target')		

		self.btn_opt_extrapolate.setCheckable(True)
		self.btn_opt_italic.setCheckable(True) 
		self.btn_opt_update_preview.setCheckable(True)
		self.btn_opt_keep_center.setCheckable(True)
		self.btn_opt_metrics.setCheckable(True)
		self.btn_opt_anchors.setCheckable(True)
		self.btn_opt_target.setCheckable(True)

		#self.btn_opt_extrapolate.setChecked(True)
		#self.btn_opt_keep_center.setChecked(True)
		#self.btn_opt_target.setChecked(True)

		self.btn_refresh.clicked.connect(self.refresh)
		self.btn_setAxis.clicked.connect(self.set_axis)
		self.btn_setAxis_c.clicked.connect(self.set_axis)
		self.btn_resetAxis.clicked.connect(self.reset_axis)
		self.btn_getVstem.clicked.connect(lambda: self.get_stem(False))
		self.btn_getHstem.clicked.connect(lambda: self.get_stem(True))
		self.btn_setLayer.clicked.connect(self.set_current_layer)
		self.btn_execute.clicked.connect(lambda: self.execute_scale(True))

		self.btn_file_save_patchboard.clicked.connect(self.file_save_patchboard)
		self.btn_file_load_patchboard.clicked.connect(self.file_load_patchboard)

		# -- Layer selector
		self.tree_layer = TRWLayerTree()

		# -- Actions (Context Menu)
		self.tree_layer.menu = QtGui.QMenu(self)
		self.tree_layer.menu.setTitle('Actions:')

		act_addItem = QtGui.QAction('Add', self)
		act_delItem = QtGui.QAction('Remove', self)
		act_dupItem = QtGui.QAction('Duplicate', self)
		act_uneItem = QtGui.QAction('Unnest', self)

		act_setItem_mask = QtGui.QAction('Set mask', self)
		act_setItem_unmask = QtGui.QAction('Remove mask', self)
		act_setItem_value = QtGui.QAction('Set value', self)

		act_setAxis = QtGui.QAction('Set Axis', self)
		act_resetAxis = QtGui.QAction('Reset Axis', self)
		act_getVstem = QtGui.QAction('Get Vertical Stems', self)
		act_getHstem = QtGui.QAction('Get Horizontal Stems', self)

		self.tree_layer.menu.addAction(act_addItem)
		self.tree_layer.menu.addAction(act_dupItem)
		self.tree_layer.menu.addAction(act_uneItem)
		self.tree_layer.menu.addAction(act_delItem)
		self.tree_layer.menu.addSeparator()	
		self.tree_layer.menu.addAction(act_setItem_mask )
		self.tree_layer.menu.addAction(act_setItem_unmask )
		self.tree_layer.menu.addAction(act_setItem_value )
		self.tree_layer.menu.addSeparator()	
		self.tree_layer.menu.addAction(act_getVstem)
		self.tree_layer.menu.addAction(act_getHstem)
		self.tree_layer.menu.addSeparator()	
		self.tree_layer.menu.addAction(act_setAxis)
		self.tree_layer.menu.addAction(act_resetAxis)

		act_addItem.triggered.connect(lambda: self.tree_layer._addItem())
		act_dupItem.triggered.connect(lambda: self.tree_layer._duplicateItems())
		act_uneItem.triggered.connect(lambda: self.tree_layer._unnestItem())
		act_delItem.triggered.connect(lambda: self.tree_layer._removeItems())
		
		act_setItem_mask.triggered.connect(lambda: self.tree_layer._setItemData('mask.', 0, 0, False))
		act_setItem_unmask.triggered.connect(lambda: self.tree_layer._setItemData('mask.', 0, 1, True))
		act_setItem_value.triggered.connect(lambda: self.tree_layer._setItemData(*TR2ComboDLG('Delta Setup', 'Please enter new value for selected columns', 'Value:', 'Column:', tree_column_names).values))
		
		act_setAxis.triggered.connect(lambda: self.set_axis())
		act_resetAxis.triggered.connect(lambda: self.reset_axis())
		
		act_getVstem.triggered.connect(lambda: self.get_stem(False))
		act_getHstem.triggered.connect(lambda: self.get_stem(True))
		
		# - Build Layout
		layoutV = QtGui.QVBoxLayout()

		# -- Layer selector
		layoutV.addWidget(self.tree_layer)

		# -- Set Glyph list
		self.fld_glyphs = TRCollapsibleBox('Process Glyphs')
		lay_glyphs = QtGui.QVBoxLayout()
		lay_glyphs_b = QtGui.QHBoxLayout()
		lay_glyphs.addWidget(self.lst_glyphName)
		lay_glyphs_b.addWidget(self.btn_refresh)
		lay_glyphs_b.addWidget(self.btn_setAxis_c)
		lay_glyphs.addLayout(lay_glyphs_b)
		self.fld_glyphs.setContentLayout(lay_glyphs)
		layoutV.addWidget(self.fld_glyphs)
		
		# -- Delta Setup controls
		self.fld_setup = TRCollapsibleBox('Delta Setup') 
		layoutG = QtGui.QGridLayout()
		layoutG.addWidget(QtGui.QLabel('Axis Setup:'),		0, 0, 1, 10)
		layoutG.addWidget(self.btn_getVstem, 				1, 0, 1, 5)
		layoutG.addWidget(self.btn_getHstem, 				1, 5, 1, 5)
		layoutG.addWidget(self.btn_resetAxis, 				2, 0, 1, 5)
		layoutG.addWidget(self.btn_setAxis, 				2, 5, 1, 5)
		layoutG.addWidget(self.btn_file_save_patchboard,	3, 0, 1, 5)
		layoutG.addWidget(self.btn_file_load_patchboard,	3, 5, 1, 5)

		layoutG.addWidget(QtGui.QLabel('Options:'),			4, 0, 1, 10)
		layoutG.addWidget(self.btn_opt_extrapolate, 		5, 0, 1, 5)
		layoutG.addWidget(self.btn_opt_italic, 				5, 5, 1, 5)
		layoutG.addWidget(self.btn_opt_anchors, 			6, 0, 1, 5)
		layoutG.addWidget(self.btn_opt_metrics, 			6, 5, 1, 5)
		layoutG.addWidget(self.btn_opt_target, 				8, 0, 1, 5)
		layoutG.addWidget(self.btn_opt_keep_center, 		8, 5, 1, 5)
		layoutG.addWidget(self.btn_opt_update_preview, 		9, 0, 1, 10)
		
		self.fld_setup.setContentLayout(layoutG)
		layoutV.addWidget(self.fld_setup)

		# -- Set Sliders
		self.fld_weight = TRCollapsibleBox('Stem Weight Control')
		self.fld_scale = TRCollapsibleBox('Compensative scaler')

		lay_weight = QtGui.QVBoxLayout()
		lay_scale = QtGui.QVBoxLayout()
		
		# --- Mixer
		lay_weight.addWidget(QtGui.QLabel('Vertical Stem Weight (X):'))
		self.mixer_dx = TRSliderCtrl('1', '1000', '0', 1)
		self.mixer_dx.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_weight.addLayout(self.mixer_dx)
		lay_weight.addSpacing(10)
		
		lay_weight.addWidget(QtGui.QLabel('Horizontal Stem Weight (Y):'))
		self.mixer_dy = TRSliderCtrl('1', '1000', '0', 1)
		self.mixer_dy.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_weight.addLayout(self.mixer_dy)
		
		self.fld_weight.setContentLayout(lay_weight)
		layoutV.addWidget(self.fld_weight)

		# --- Scaler
		lay_scale.addWidget(QtGui.QLabel('Width'))
		self.scalerX = TRSliderCtrl('1', '200', '100', 1)
		self.scalerX.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_scale.addLayout(self.scalerX)
		lay_scale.addSpacing(10)

		lay_scale.addWidget(QtGui.QLabel('Height'))
		self.scalerY = TRSliderCtrl('1', '200', '100', 1)
		self.scalerY.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_scale.addLayout(self.scalerY)

		self.fld_scale.setContentLayout(lay_scale)
		layoutV.addWidget(self.fld_scale)

		# -- Tail 
		layoutE = QtGui.QHBoxLayout()
		layoutE.addWidget(self.btn_setLayer)
		layoutE.addWidget(self.btn_execute)
		layoutV.addLayout(layoutE)

		self.__lbl_warn = QtGui.QLabel('')
		layoutV.addWidget(self.__lbl_warn)
		self.__lbl_warn.hide()

		# -- Finish
		self.refresh()
		self.tree_layer.setTree(self.__init_tree(), tree_column_names)
		self.setLayout(layoutV)
		self.setMinimumSize(300, self.sizeHint.height())
Exemple #27
0
    def __init__(self):
        super(curveEq, self).__init__()

        # - Basic operations
        self.btn_toLine = QtGui.QPushButton('To &Line')
        self.btn_toCurve = QtGui.QPushButton('To &Curve')

        self.btn_tunni = QtGui.QPushButton('&Tunni')

        self.btn_prop = QtGui.QPushButton('Set &Handles')
        self.btn_prop_30 = QtGui.QPushButton('30%')
        self.btn_prop_50 = QtGui.QPushButton('50%')
        self.btn_prop_00 = QtGui.QPushButton('Retract')

        self.btn_hobby = QtGui.QPushButton('&Set Curvature')
        self.btn_hobby_get = QtGui.QPushButton('Get')
        self.btn_hobby_swap = QtGui.QPushButton('Swap')
        self.btn_hobby_90 = QtGui.QPushButton('.90')
        self.btn_hobby_80 = QtGui.QPushButton('.80')
        self.btn_hobby_85 = QtGui.QPushButton('.85')

        self.spn_hobby0 = QtGui.QDoubleSpinBox()
        self.spn_hobby1 = QtGui.QDoubleSpinBox()
        self.spn_hobby0.setValue(0.95)
        self.spn_hobby1.setValue(0.95)
        self.spn_hobby0.setSingleStep(0.05)
        self.spn_hobby1.setSingleStep(0.05)

        self.spn_prop = QtGui.QSpinBox()
        self.spn_prop.setValue(30)
        self.spn_prop.setSuffix(' %')
        self.spn_prop.setMaximum(100)

        self.btn_tunni.setToolTip('Apply Tunni curve optimization')
        self.btn_hobby.setToolTip('Set Hobby spline curvature')
        self.btn_hobby_swap.setToolTip('Swap START, END curvatures')
        self.btn_hobby_get.setToolTip(
            'Get curvature for current selected\nsegment at active layer.')
        self.btn_prop.setToolTip(
            'Set handle length in proportion to bezier node distance')
        self.spn_hobby0.setToolTip('Curvature at the START of Bezier segment.')
        self.spn_hobby1.setToolTip('Curvature at the END of Bezier segment.')
        self.spn_prop.setToolTip(
            'Handle length in proportion to curve length.')

        self.btn_toLine.clicked.connect(lambda: self.convert_segment(False))
        self.btn_toCurve.clicked.connect(lambda: self.convert_segment(True))
        self.btn_tunni.clicked.connect(lambda: self.eqContour('tunni'))
        self.btn_prop.clicked.connect(lambda: self.eqContour('prop'))
        self.btn_prop_00.clicked.connect(
            lambda: self.eqContour('prop_value', value=0))
        self.btn_prop_30.clicked.connect(
            lambda: self.eqContour('prop_value', value=.30))
        self.btn_prop_50.clicked.connect(
            lambda: self.eqContour('prop_value', value=.50))

        self.btn_hobby_swap.clicked.connect(self.hobby_swap)
        self.btn_hobby_get.clicked.connect(self.hobby_get)
        self.btn_hobby.clicked.connect(lambda: self.eqContour('hobby'))
        self.btn_hobby_90.clicked.connect(
            lambda: self.eqContour('hobby_value', value=.90))
        self.btn_hobby_80.clicked.connect(
            lambda: self.eqContour('hobby_value', value=.80))
        self.btn_hobby_85.clicked.connect(
            lambda: self.eqContour('hobby_value', value=.85))

        # -- Build: Curve optimization
        self.addWidget(self.btn_toLine, 0, 0, 1, 2)
        self.addWidget(self.btn_tunni, 0, 2, 1, 2)
        self.addWidget(self.btn_toCurve, 0, 4, 1, 2)
        self.addWidget(QtGui.QLabel('Curve: Handles proportion (BCP length)'),
                       2, 0, 1, 6)
        self.addWidget(self.spn_prop, 3, 0, 1, 2)
        self.addWidget(self.btn_prop, 3, 2, 1, 4)
        self.addWidget(self.btn_prop_50, 4, 0, 1, 2)
        self.addWidget(self.btn_prop_00, 4, 2, 1, 2)
        self.addWidget(self.btn_prop_30, 4, 4, 1, 2)
        self.addWidget(QtGui.QLabel('Curve: Hobby curvature (Curve tension)'),
                       5, 0, 1, 6)
        self.addWidget(self.btn_hobby_get, 6, 0, 1, 2)
        self.addWidget(self.spn_hobby0, 6, 2, 1, 1)
        self.addWidget(self.spn_hobby1, 6, 3, 1, 1)
        self.addWidget(self.btn_hobby_swap, 6, 4, 1, 2)
        self.addWidget(self.btn_hobby, 7, 0, 1, 6)
        self.addWidget(self.btn_hobby_90, 8, 0, 1, 2)
        self.addWidget(self.btn_hobby_85, 8, 2, 1, 2)
        self.addWidget(self.btn_hobby_80, 8, 4, 1, 2)
Exemple #28
0
	def __init__(self):
		super(tool_tab, self).__init__()

		# - Init
		temp = pGlyph()
		self.active_font = pFont()
		layer_names = [layer.name for layer in temp.layers() if '#' not in layer.name]
		
		# - Widgets
		# -- Progress bar
		self.progress = QtGui.QProgressBar()
		self.progress.setMaximum(100)

		# -- Report Tree
		self.audit_report = OrderedDict(empty_record)
		self.header_names = ['Glyph', 'Layers']
		self.audit_tree = TRWAuditTree(self.audit_report, self.header_names)
		self.audit_tree.selectionModel().selectionChanged.connect(self.auto_preview)
		
		# -- Test List
		temp_audit_glyph = auditGlyph(temp.fg, self.active_font.fg, self.audit_report)
		audit_tests = [test.replace('_', ' ').replace('audit', '').title() for test in temp_audit_glyph.get_all_tests()]

		self.audit_list = QtGui.QListWidget()
		self.audit_list.setAlternatingRowColors(True)
		self.audit_list.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
		self.audit_list.addItems(audit_tests)

		# -- Audit Options
		self.cmb_layers = CheckableComboBox()
		self.cmb_layers.addItems(['All Masters'] + layer_names)
		
		self.cmb_reference = QtGui.QComboBox()
		self.cmb_reference.addItems(layer_names)
		
		if 'Regular' in layer_names:
			self.cmb_reference.setCurrentIndex(layer_names.index('Regular'))

		# -- Action Buttons
		self.btn_audit_run = QtGui.QPushButton('Process Entire Font')
		self.btn_audit_glyphs = QtGui.QPushButton('Process Glyph Selection')
		self.btn_audit_tests = QtGui.QPushButton('Selected tests only')
		self.btn_audit_reset = QtGui.QPushButton('Reset Record')
		self.btn_audit_save = QtGui.QPushButton('Save Record')
		self.btn_audit_select = QtGui.QPushButton('Auto Select Glyphs')
		self.btn_select_cheked = QtGui.QPushButton('Select Checked Glyphs')
		
		self.btn_audit_select.setCheckable(True)
		self.btn_audit_tests.setCheckable(True)
		self.btn_audit_select.setChecked(False)
		self.btn_audit_tests.setChecked(True)

		self.btn_audit_run.clicked.connect(lambda: self.process_audit(False))
		self.btn_audit_glyphs.clicked.connect(lambda: self.process_audit(True))
		self.btn_select_cheked.clicked.connect(lambda: self.selected_preview())

		self.btn_audit_reset.clicked.connect(self.reset)
		self.btn_audit_save.clicked.connect(self.save_audit)
		
		# - Build Layout
		lay_main = QtGui.QVBoxLayout()
		lay_audit = QtGui.QGridLayout()
		lay_audit.addWidget(self.btn_audit_tests, 				 0,  0,  1,  2)
		lay_audit.addWidget(self.btn_audit_select, 				 0,  2,  1,  2)
		lay_audit.addWidget(self.btn_select_cheked, 			 0,  4,  1,  2)
		
		lay_audit.addWidget(self.btn_audit_save, 				 0,  6,  1,  2)
		lay_audit.addWidget(self.btn_audit_reset, 				 0,  8,  1,  2)
		lay_audit.addWidget(self.btn_audit_glyphs, 				 0,  10,  1, 2) 
		lay_audit.addWidget(self.btn_audit_run, 				 0, 12,  1,  4) 
		lay_audit.addWidget(QtGui.QLabel('Audit Tests:'),		 1,  0,  1,  4)
		lay_audit.addWidget(self.audit_list, 					 2,  0, 21,  4) 
		lay_audit.addWidget(QtGui.QLabel('Audit Report:'),		 1,  4,  1, 12)
		lay_audit.addWidget(self.audit_tree, 					 2,  4, 23, 12)
		lay_audit.addWidget(QtGui.QLabel('Reference:'),			23,  0,  1,  1)
		lay_audit.addWidget(self.cmb_reference, 				23,  1,  1,  3)
		lay_audit.addWidget(QtGui.QLabel('Audit on:'),			24,  0,  1,  1)
		lay_audit.addWidget(self.cmb_layers, 					24,  1,  1,  3)
		lay_audit.addWidget(self.progress, 						25,  0,  1,  16)

		# - Finish
		lay_main.addLayout(lay_audit)
		self.setLayout(lay_main)
		self.setMinimumSize(300, self.sizeHint.height())
Exemple #29
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)
Exemple #30
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)