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