Exemple #1
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 #2
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 #3
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 #4
0
    def __init__(self):
        super(SGPreflight, self).__init__()

        # - Init
        temp = pGlyph()
        self.active_font = pFont()
        layer_names = [
            layer.name for layer in temp.layers() if '#' not in layer.name
        ]

        # - Automat
        self.auto_fl = Automat()

        # - Widgets
        # - Combo Boxes
        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)

        # -- Boxes
        self.box_preflight = QtGui.QGroupBox('Font Preflight:')
        self.box_audit = QtGui.QGroupBox('Font Audit:')

        # -- 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)

        # -- Action Buttons
        # --- Preflight
        self.btn_preflight_info = QtGui.QPushButton('Edit Font Info')
        self.btn_preflight_audit = QtGui.QPushButton('Audit Font')
        self.btn_preflight_clean = QtGui.QPushButton(
            'Cleanup auto layers, unused tags and labels')
        self.btn_preflight_clean_flag = QtGui.QPushButton(
            'Remove glyphs marked with:')
        self.btn_preflight_actions = QtGui.QPushButton('Open Actions')
        self.btn_preflight_save = QtGui.QPushButton('Save Font')
        self.btn_preflight_export = QtGui.QPushButton('Export Font')

        self.btn_preflight_info.clicked.connect(
            lambda n: self.auto_fl.run('Font_Info'))
        self.btn_preflight_actions.clicked.connect(
            lambda n: self.auto_fl.run('Action'))
        self.btn_preflight_save.clicked.connect(
            lambda n: self.auto_fl.run('SaveFontAs'))
        self.btn_preflight_export.clicked.connect(
            lambda n: self.auto_fl.run('Export_Fonts'))
        self.btn_preflight_clean.clicked.connect(
            lambda: self.process_cleanup(mode='auto'))
        self.btn_preflight_clean_flag.clicked.connect(
            lambda: self.process_cleanup(mode='temp'))

        # --- Audit
        self.btn_audit_reset = QtGui.QPushButton('Reset Record')
        self.btn_audit_select = QtGui.QPushButton('Auto Select Glyphs')
        self.btn_audit_select.setCheckable(True)
        self.btn_audit_select.setChecked(False)
        self.btn_preflight_audit.clicked.connect(self.process_audit)
        self.btn_audit_reset.clicked.connect(self.reset)

        # - Build Layout
        lay_main = QtGui.QVBoxLayout()
        lay_preflight = QtGui.QGridLayout()
        lay_preflight.addWidget(QtGui.QLabel('1: Update font info: version.'),
                                0, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_info, 1, 0, 1, 4)
        lay_preflight.addWidget(
            QtGui.QLabel('2: Audit Font for known glyph problems.'), 2, 0, 1,
            4)
        lay_preflight.addWidget(self.btn_preflight_audit, 3, 0, 1, 4)
        lay_preflight.addWidget(QtGui.QLabel('3: Cleanup Font:'), 4, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_clean, 5, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_clean_flag, 7, 0, 1, 2)
        lay_preflight.addWidget(self.cmb_select_color, 7, 2, 1, 2)
        lay_preflight.addWidget(
            QtGui.QLabel(
                '4: All glyphs/masters: Apply rounding; Decompose; Convert to TT curves.'
            ), 8, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_actions, 9, 0, 1, 4)
        lay_preflight.addWidget(QtGui.QLabel('5: Save your work.'), 10, 0, 1,
                                4)
        lay_preflight.addWidget(self.btn_preflight_save, 11, 0, 1, 4)
        lay_preflight.addWidget(QtGui.QLabel('6: Export fonts.'), 12, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_export, 13, 0, 1, 4)
        self.box_preflight.setLayout(lay_preflight)

        lay_audit = QtGui.QGridLayout()
        lay_audit.addWidget(self.btn_audit_select, 0, 6, 1, 3)
        lay_audit.addWidget(self.btn_audit_reset, 0, 9, 1, 3)
        lay_audit.addWidget(QtGui.QLabel('Audit Report:'), 1, 6, 1, 6)
        lay_audit.addWidget(self.audit_tree, 2, 6, 20, 6)
        self.box_audit.setLayout(lay_audit)

        lay_split = QtGui.QHBoxLayout()
        lay_split.addWidget(self.box_preflight)
        lay_split.addWidget(self.box_audit)
        lay_main.addLayout(lay_split)
        lay_main.addWidget(self.progress)
        self.setLayout(lay_main)

        # - Finish
        self.setMinimumSize(300, self.sizeHint.height())