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)
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)
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)
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)
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)
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)
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()
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)
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)
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)
# - 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
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):
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())
def _redecorateItem(self, item): color_decorator = QtGui.QColor(item.text(item.columnCount()-1)) item.setData(0, QtCore.Qt.DecorationRole, color_decorator)
def markChange(self, item): item.setBackground(QtGui.QColor('powderblue'))
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)
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
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'))