Exemple #1
0
	def update_table_format(self, clearTable=False):
		hidden_rows = 0
		formattig_list = parser_format(self.edt_formatting.text)
		self.tab_fontKerning.blockSignals(True)

		for row in xrange(self.tab_fontKerning.rowCount):
			for col in xrange(self.tab_fontKerning.columnCount):
				cell_item = self.tab_fontKerning.item(row, col)
				
				if cell_item is not None:	
					if not clearTable:
						for cell_rule, format_rule in formattig_list:
							if eval(cell_item.text() + cell_rule):
								if special_rule in format_rule:
									if format_rule[1:].upper() == 'HIDE':
										self.tab_fontKerning.hideRow(row)
										hidden_rows += 1
										break
									elif format_rule[1:].upper() == 'SHOW':
										self.tab_fontKerning.showRow(row)
										break
								else:
									color_rule = QtGui.QColor(format_rule)
									color_rule.setAlpha(50)
									cell_item.setBackground(color_rule)
					else:
						cell_item.setBackground(QtGui.QColor('white'))						

		self.tab_fontKerning.blockSignals(False)
		self.lbl_status_pairs_hidden.setText(hidden_rows)
Exemple #2
0
	def refresh(self):
		# - Init
		self.model.removeRows(0, self.model.rowCount())
		self.data_glyphs = getProcessGlyphs(pMode)

		# - Set Items
		for glyph in self.data_glyphs:
			glyph_name = ''

			# - GlyphName
			if self.chk_glyphUnicode.isChecked():
				try:
					glyph_name += str(hex(glyph.unicode)).upper() + '\t'
				except TypeError:
					glyph_name += ' '*6 + '\t'

			if self.chk_glyphName.isChecked():
				glyph_name += glyph.name			
			
			item = QtGui.QStandardItem(glyph_name)

			# - Set Mark
			if self.chk_glyphMark.isChecked():
				new_color = QtGui.QColor(fontMarkColors[glyph.mark])
				new_color.setAlpha(30)
				item.setBackground(QtGui.QBrush(new_color))
			
			# - Set Check
			item.setCheckable(True)
			if self.chk_glyphChecked.isChecked():
				item.setChecked(True)

			self.model.appendRow(item)
		
		self.lst_glyphNames.setModel(self.model)
Exemple #3
0
	def _addItem(self, data=None):
		new_item_data = ['New', '', '', default_sx, default_sy, _rand_hex()] if data is None else data

		root = self.selectedItems()[0].parent() if len(self.selectedItems()) else self.invisibleRootItem()
		new_item = QtGui.QTreeWidgetItem(root, new_item_data)
		color_decorator = QtGui.QColor(new_item_data[-1])
		new_item.setData(0, QtCore.Qt.DecorationRole, color_decorator)
		new_item.setFlags(new_item.flags() & ~QtCore.Qt.ItemIsDropEnabled | QtCore.Qt.ItemIsEditable)
Exemple #4
0
	def __init__(self, aux):
		super(KernTableWidget, self).__init__()

		# - Init
		self.aux = aux
		
		self.flag_valueDefault = QtGui.QColor('black')
		self.flag_valueChanged = QtGui.QColor('red')
		
		self.values_changed = []
		self.itemChanged.connect(self.kern_value_changed)
		self.selectionModel().selectionChanged.connect(self.selection_status_changed)


		# - Styling
		self.header = self.horizontalHeader()
		self.setShowGrid(True)
Exemple #5
0
    def markDiff(self):
        #!!! Ineffecient but will do
        self.blockSignals(True)
        root = self.invisibleRootItem()
        init_diff = []

        for i in range(root.childCount()):
            item = root.child(i)
            init_diff.append(
                [item.child(n).text(0) for n in range(item.childCount())])

        for i in range(root.childCount()):
            item = root.child(i)
            for n in range(item.childCount()):
                if all([item.child(n).text(0) in test for test in init_diff]):
                    item.child(n).setData(0, QtCore.Qt.DecorationRole,
                                          QtGui.QColor('LimeGreen'))
                else:
                    item.child(n).setData(0, QtCore.Qt.DecorationRole,
                                          QtGui.QColor('Crimson'))

        self.blockSignals(False)
Exemple #6
0
    def __init__(self):
        super(GroupTableView, self).__init__()

        # - Init
        self.flag_valueChanged = QtGui.QColor('powderblue')
        self.header = self.horizontalHeader()

        # - Behavior
        self.itemChanged.connect(self.markChange)

        # - Styling
        self.verticalHeader().hide()
        self.setAlternatingRowColors(True)
        self.setShowGrid(False)
        self.setSortingEnabled(True)
Exemple #7
0
	def __init__(self, data):
		super(TRTableView, self).__init__()

		# - Init
		self.flag_valueChanged = QtGui.QColor('powderblue')

		# - Set 
		if data is not None: self.setTable(data)
		self.itemChanged.connect(self.markChange)

		# - Styling
		self.horizontalHeader().setStretchLastSection(True)
		self.setAlternatingRowColors(True)
		self.setShowGrid(False)
		self.setSortingEnabled(False)
		#self.resizeColumnsToContents()
		self.resizeRowsToContents()
Exemple #8
0
	def setTree(self, data, headers):
		self.blockSignals(True)
		self.clear()
		self.setHeaderLabels(headers)

		# - Insert 
		for key, value in data.items():
			master = QtGui.QTreeWidgetItem(self, [key])

			for item in value:
				new_item = QtGui.QTreeWidgetItem(master, item)
				color_decorator = QtGui.QColor(item[-1]) if not isinstance(item[-1], QtGui.QColor) else item[-1]
				new_item.setData(0, QtCore.Qt.DecorationRole, color_decorator)
				new_item.setFlags(new_item.flags() & ~QtCore.Qt.ItemIsDropEnabled | QtCore.Qt.ItemIsEditable)
				
		# - Fit data
		for c in range(self.columnCount):
			self.resizeColumnToContents(c)	

		self.invisibleRootItem().setFlags(self.invisibleRootItem().flags() & ~QtCore.Qt.ItemIsDropEnabled)
		self.expandAll()
		#self.hideColumn(5)
		self.blockSignals(False)
Exemple #9
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 #10
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 #11
0
# - Init --------------------------
app_version = '0.10'
app_name = 'TypeRig Metrics'
ignorePanel = '__'

# -- Global parameters
pMode = 0
pLayers = (True, False, False, False)

# -- Inital config for Get Layers dialog
column_names = ('Layer Name', 'Layer Type')
column_init = (None, None)
table_dict = {1: OrderedDict(zip(column_names, column_init))}
color_dict = {
    'Master': QtGui.QColor(0, 255, 0, 20),
    'Service': QtGui.QColor(0, 0, 255, 20),
    'Mask': QtGui.QColor(255, 0, 0, 20)
}

# - Style -------------------------
ss_Toolbox_none = """/* EMPTY STYLESHEET */ """


# - Interface -----------------------------
# - Widgets --------------------------------
class TRTableView(QtGui.QTableWidget):
    def __init__(self, data):
        super(TRTableView, self).__init__()

        # - Init
Exemple #12
0
from typerig.core.base.message import *

from PythonQt import QtCore
from typerig.proxy.fl.gui import QtGui
from typerig.proxy.fl.gui.widgets import *

# - Init --------------------------
global pLayers
global pMode
pLayers = None
pMode = 0
app_name, app_version = 'TypeRig | Layers', '2.10'

# -- Inital config for Get Layers dialog
column_names = ('Name', 'Type', 'Color')
column_init = (None, None, QtGui.QColor(0, 255, 0, 10))
init_table_dict = {1: OrderedDict(zip(column_names, column_init))}
color_dict = {
    'Master': QtGui.QColor(0, 255, 0, 10),
    'Service': QtGui.QColor(0, 0, 255, 10),
    'Mask': QtGui.QColor(255, 0, 0, 10)
}


# - Actions ------------------------------------------------------------------
class TRLayerActionCollector(object):
    ''' Collection of all layer based tools'''

    # - Layer: Basic tools ---------------------------------------------------
    @staticmethod
    def layer_toggle_visible(parent):
Exemple #13
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())
Exemple #14
0
	def _redecorateItem(self, item):
		color_decorator = QtGui.QColor(item.text(item.columnCount()-1))
		item.setData(0, QtCore.Qt.DecorationRole, color_decorator)
Exemple #15
0
	def markChange(self, item):
		item.setBackground(QtGui.QColor('powderblue'))
Exemple #16
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)
Exemple #17
0
import Panel 

# - Init --------------------------
app_version = '2.60'
app_name = 'TypeRig Panel'
ignorePanel = '__'

# -- Global parameters
pMode = 0
pLayers = (True, False, False, False)

# -- Inital config for Get Layers dialog
column_names = ('Layer Name', 'Layer Type')
column_init = (None, None)
table_dict = {1:OrderedDict(zip(column_names, column_init))}
color_dict = {'Master': QtGui.QColor(0, 255, 0, 20), 'Service': QtGui.QColor(0, 0, 255, 20), 'Mask': QtGui.QColor(255, 0, 0, 20)}

# - Style -------------------------
ss_Toolbox_none = """/* EMPTY STYLESHEET */ """

# - Interface -----------------------------
# - Widgets --------------------------------
class TRTableView(QtGui.QTableWidget):
	def __init__(self, data):
		super(TRTableView, self).__init__()
		
		# - Init
		self.setColumnCount(max(map(len, data.values())))
		self.setRowCount(len(data.keys()))
	
		# - Set 
Exemple #18
0
 def markChange(self, item):
     item.setText(3, ('B: %s', 'T: %s')[float(item.text(2)) > 0] %
                  item.text(1))
     for col in range(item.columnCount()):
         item.setBackground(col, QtGui.QColor('powderblue'))