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)
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()
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(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)
def __init__(self): super(typerig_Panel, self).__init__() # - Init ---------------------------- #self.setStyleSheet(ss_Toolbox_none) self.layers_selected = [] # - Dialogs ------------------------- self.layer_dialog = dlg_LayerSelect(self, pMode) # - Layers -------------------------- self.chk_ActiveLayer = QtGui.QCheckBox('Active') self.chk_Masters = QtGui.QCheckBox('Masters') self.chk_Masks = QtGui.QCheckBox('Masks') self.chk_Service = QtGui.QCheckBox('Services') self.chk_Selected = QtGui.QCheckBox('Selected') self.chk_ActiveLayer.setCheckState(QtCore.Qt.Checked) self.chk_ActiveLayer.stateChanged.connect(self.layers_refresh) self.chk_Masters.stateChanged.connect(self.layers_refresh) self.chk_Masks.stateChanged.connect(self.layers_refresh) self.chk_Service.stateChanged.connect(self.layers_refresh) self.chk_Selected.stateChanged.connect(self.layers_refresh) self.layers_refresh() # - Glyphs -------------------------- self.rad_glyph = QtGui.QRadioButton('Glyph') self.rad_window = QtGui.QRadioButton('Window') self.rad_selection = QtGui.QRadioButton('Selection') self.rad_font = QtGui.QRadioButton('Font') self.rad_glyph.toggled.connect(self.mode_refresh) self.rad_window.toggled.connect(self.mode_refresh) self.rad_selection.toggled.connect(self.mode_refresh) self.rad_font.toggled.connect(self.mode_refresh) self.rad_glyph.setChecked(True) self.rad_glyph.setEnabled(True) self.rad_window.setEnabled(True) self.rad_selection.setEnabled(True) self.rad_font.setEnabled(False) self.rad_glyph.setToolTip('Affect current glyph') self.rad_window.setToolTip('Affect glyphs in active window') self.rad_selection.setToolTip('Affect selected glyphs') self.rad_font.setToolTip('Affect the entire font') # - Buttons ------------------------ self.btn_layersSelect = QtGui.QPushButton('Layers') self.btn_fold = QtGui.QPushButton('^') self.btn_unfold = QtGui.QPushButton('Restore Panel') self.btn_fold.setFixedHeight(self.chk_ActiveLayer.sizeHint.height() * 2.5) self.btn_fold.setFixedWidth(self.chk_ActiveLayer.sizeHint.height()) self.btn_unfold.setFixedHeight(self.chk_ActiveLayer.sizeHint.height() + 5) self.btn_fold.setToolTip('Fold Panel.') self.btn_unfold.setToolTip('Unfold Panel.') self.btn_layersSelect.setToolTip('Select layers for processing.') self.btn_fold.clicked.connect(self.fold) self.btn_unfold.clicked.connect(self.fold) self.flag_fold = False # - Tabs -------------------------- panel_vers = { n: OrderedDict([('Panel', toolName), ('Version', eval('Panel.%s.app_version' % toolName))]) for n, toolName in enumerate(Panel.modules) } self.options = TRTableView(panel_vers) self.options.verticalHeader().hide() # -- Dynamically load all tabs self.tabs = TRVTabWidget() # --- Load all tabs from this directory as modules. Check __init__.py # --- <dirName>.modules tabs/modules manifest in list format for toolName in Panel.modules: if ignorePanel not in toolName: self.tabs.addTab(eval('Panel.%s.tool_tab()' % toolName), toolName) # --- Add options tab self.tabs.addTab(self.options, '...') # - Layouts ------------------------------- layoutV = QtGui.QVBoxLayout() layoutV.setContentsMargins(0, 0, 0, 0) self.lay_controller = QtGui.QGridLayout() self.fr_controller = QtGui.QFrame() self.lay_controller.setContentsMargins(15, 5, 5, 3) self.lay_controller.setSpacing(5) # -- Build layouts ------------------------------- self.lay_controller.addWidget(self.chk_ActiveLayer, 0, 0, 1, 1) self.lay_controller.addWidget(self.chk_Masters, 0, 1, 1, 1) self.lay_controller.addWidget(self.chk_Masks, 0, 2, 1, 1) #self.lay_controller.addWidget(self.chk_Service, 0, 3, 1, 1) self.lay_controller.addWidget(self.chk_Selected, 0, 3, 1, 1) self.lay_controller.addWidget(self.btn_fold, 0, 4, 2, 1) self.lay_controller.addWidget(self.rad_glyph, 1, 0, 1, 1) self.lay_controller.addWidget(self.rad_window, 1, 1, 1, 1) self.lay_controller.addWidget(self.rad_selection, 1, 2, 1, 1) self.lay_controller.addWidget(self.rad_font, 1, 3, 1, 1) layoutV.addWidget(self.btn_unfold) self.fr_controller.setLayout(self.lay_controller) layoutV.addWidget(self.fr_controller) layoutV.addWidget(self.tabs) self.btn_unfold.hide() # - Set Widget ------------------------------- self.setLayout(layoutV) self.setWindowTitle('%s %s' % (app_name, app_version)) self.setGeometry(100, 100, 300, 600) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! # !!! Hotfix FL7 7355 self.setMinimumSize(330, self.sizeHint.height()) self.show()
def __init__(self, parentWidget): super(WKernGroups, self).__init__() # - Init self.upper_widget = parentWidget self.active_font = pFont() self.kern_group_data = {} #self.active_font.kerning_groups_to_dict() # - Interface lbl_name = QtGui.QLabel('Kerning classes') lbl_act = QtGui.QLabel('Actions (selected items):') lbl_name.setMaximumHeight(20) lbl_act.setMaximumHeight(20) self.cmb_layer = QtGui.QComboBox() self.cmb_layer.addItems(self.active_font.masters()) self.cmb_layer.currentIndexChanged.connect( lambda: self.update_data(self.kern_group_data)) self.btn_apply = QtGui.QPushButton('Apply changes') self.btn_write = QtGui.QPushButton('Write changes') self.btn_reset = QtGui.QPushButton('Clear Font classes') self.btn_apply.clicked.connect(lambda: self.apply_changes(False)) self.btn_write.clicked.connect(lambda: self.apply_changes(True)) self.btn_reset.clicked.connect(lambda: self.reset_classes()) self.tab_groupKern = GroupTableView() # - Menus & Actions # -- Main Database actions self.menu_data = QtGui.QMenu('Class Data', self) act_data_open = QtGui.QAction('Open TypeRig Classes (JSON)', self) act_data_save = QtGui.QAction('Save TypeRig Classes (JSON)', self) act_data_import = QtGui.QAction('Import FontLab Classes (JSON)', self) act_data_export = QtGui.QAction('Export FontLab Classes (JSON)', self) act_data_import_font = QtGui.QAction('Load Classes from Font', self) act_data_build_composite = QtGui.QAction('Auto Build Classes', self) act_data_reset = QtGui.QAction('Reset Font Class Data', self) act_data_write = QtGui.QAction('Write class data to Font', self) self.menu_data.addAction(act_data_import_font) self.menu_data.addAction(act_data_build_composite) self.menu_data.addSeparator() self.menu_data.addAction(act_data_open) self.menu_data.addAction(act_data_save) 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.addAction(act_data_reset) self.menu_data.addAction(act_data_write) act_data_open.triggered.connect(lambda: self.file_load_groups(True)) act_data_save.triggered.connect(lambda: self.file_save_groups(True)) act_data_import.triggered.connect(lambda: self.file_load_groups(False)) #act_data_export.triggered.connect() act_data_import_font.triggered.connect(lambda: self.from_font()) act_data_build_composite.triggered.connect( lambda: self.from_composites()) act_data_reset.triggered.connect(lambda: self.reset_classes()) act_data_write.triggered.connect(lambda: self.apply_changes(True)) # -- Main Class actions self.menu_class = QtGui.QMenu('Class Management', self) act_class_add = QtGui.QAction('Add new class', self) act_class_find = QtGui.QAction('Find and replace class names', self) act_class_copy = QtGui.QAction('Duplicate classes', self) act_class_merge = QtGui.QAction('Merge classes to new', self) act_class_mdel = QtGui.QAction('Merge and remove classes', self) act_class_del = QtGui.QAction('Remove classes', self) act_class_prefix = QtGui.QAction('Add prefix to class name', self) self.menu_class.addAction(act_class_add) self.menu_class.addAction(act_class_find) self.menu_class.addAction(act_class_copy) self.menu_class.addAction(act_class_merge) self.menu_class.addAction(act_class_prefix) self.menu_class.addAction(act_class_mdel) self.menu_class.addAction(act_class_del) act_class_add.triggered.connect(lambda: self.class_add_new()) act_class_find.triggered.connect(lambda: self.class_find_replace()) act_class_copy.triggered.connect(lambda: self.class_copy()) act_class_merge.triggered.connect(lambda: self.class_merge(False)) act_class_mdel.triggered.connect(lambda: self.class_merge(True)) act_class_del.triggered.connect(lambda: self.class_del()) act_class_prefix.triggered.connect(lambda: self.class_prefix()) # -- Change class type self.menu_type = QtGui.QMenu('Class Type', self) act_type_Left = QtGui.QAction('Set KernLeft (1st)', self) act_type_Right = QtGui.QAction('Set KernRight (2nd)', self) act_type_Both = QtGui.QAction('Set KernBothSide (1st and 2nd)', self) act_type_toggle = QtGui.QAction('Toggle class type', self) act_type_Left.triggered.connect(lambda: self.set_type('KernLeft')) act_type_Right.triggered.connect(lambda: self.set_type('KernRight')) act_type_Both.triggered.connect(lambda: self.set_type('KernBothSide')) act_type_toggle.triggered.connect(lambda: self.toggle_type()) self.menu_type.addAction(act_type_Left) self.menu_type.addAction(act_type_Right) self.menu_type.addAction(act_type_Both) self.menu_type.addAction(act_type_toggle) # -- Modify Members self.menu_memb = QtGui.QMenu('Class Members', self) act_memb_sel = QtGui.QAction('Select Glyphs', self) act_memb_clean = QtGui.QAction('Cleanup', self) act_memb_upper = QtGui.QAction('Members to uppercase', self) act_memb_lower = QtGui.QAction('Members to lowercase', self) act_memb_strip = QtGui.QAction('Strip member suffixes', self) act_memb_suff = QtGui.QAction('Add suffix to members', self) act_memb_addglyphs = QtGui.QAction('Selected glyphs to members', self) act_memb_sel.triggered.connect(lambda: self.memb_select()) act_memb_clean.triggered.connect(lambda: self.memb_cleanup()) act_memb_upper.triggered.connect(lambda: self.memb_change_case(True)) act_memb_lower.triggered.connect(lambda: self.memb_change_case(False)) act_memb_strip.triggered.connect(lambda: self.memb_stripSuffix()) act_memb_suff.triggered.connect(lambda: self.memb_addSuffix()) act_memb_addglyphs.triggered.connect(lambda: self.memb_addGlyphs()) self.menu_memb.addAction(act_memb_sel) self.menu_memb.addAction(act_memb_clean) self.menu_memb.addAction(act_memb_upper) self.menu_memb.addAction(act_memb_lower) self.menu_memb.addAction(act_memb_strip) self.menu_memb.addAction(act_memb_suff) self.menu_memb.addAction(act_memb_addglyphs) # -- MACOS buttons menu self.btn_mac_data_open = QtGui.QPushButton('Open') self.btn_mac_data_save = QtGui.QPushButton('Save') self.btn_mac_data_import = QtGui.QPushButton('Import') self.btn_mac_data_export = QtGui.QPushButton('Export') self.btn_mac_data_import_font = QtGui.QPushButton('From Font') self.btn_mac_data_build_composite = QtGui.QPushButton( 'Auto Build Classes') self.btn_mac_data_open.clicked.connect( lambda: self.file_load_groups(True)) self.btn_mac_data_save.clicked.connect( lambda: self.file_save_groups(True)) self.btn_mac_data_import.clicked.connect( lambda: self.file_load_groups(False)) #self.btn_mac_data_export.clicked.connect() self.btn_mac_data_import_font.clicked.connect(lambda: self.from_font()) self.btn_mac_data_build_composite.clicked.connect( lambda: self.from_composites()) # - Table auto preview selection self.chk_preview = QtGui.QCheckBox('Auto select/preview class.') self.tab_groupKern.selectionModel().selectionChanged.connect( lambda: self.auto_preview()) # - Build self.lay_grid = QtGui.QGridLayout() self.lay_grid.addWidget(lbl_name, 0, 0, 1, 42) self.lay_grid.addWidget(QtGui.QLabel('Master:'), 0, 40, 1, 2) self.lay_grid.addWidget(self.cmb_layer, 0, 42, 1, 6) self.lay_grid.addWidget(self.tab_groupKern, 1, 0, 11, 42) self.lay_grid.addWidget(self.btn_apply, 1, 42, 1, 6) self.lay_grid.addWidget(self.chk_preview, 2, 42, 1, 6) # -- MAC buttons if system() == 'Darwin': self.lay_grid.addWidget(self.btn_mac_data_open, 4, 42, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_save, 4, 45, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_import, 5, 42, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_export, 5, 45, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_import_font, 6, 42, 1, 6) self.lay_grid.addWidget(self.btn_mac_data_build_composite, 8, 42, 1, 6) self.lay_grid.addWidget(self.btn_reset, 10, 42, 1, 6) self.lay_grid.addWidget(self.btn_write, 11, 42, 1, 6) self.setLayout(self.lay_grid)
def __init__(self): super(tool_tab, self).__init__() # - Init self.anchorSelector = TRLayerSelect() self.types = 'Anchor PinPoint'.split(' ') self.posY = 'Coord, Expression, Keep, Shift, Above, Below, Center, Baseline, Center of mass'.split( ', ') self.posX = 'Coord, Expression, Keep, Shift, Left, Right, Center, Highest, Highest Left, Highest Right, Lowest, Lowest Left, Lowest Right, Center of mass'.split( ', ') posYvals = (None, None, 'S', 'S', 'T', 'B', 'C', None, 'W') posXvals = (None, None, 'S', 'S', 'L', 'R', 'C', 'AT', 'ATL', 'ATR', 'A', 'AL', 'AR', 'M') self.posYctrl = dict(zip(self.posY, posYvals)) self.posXctrl = dict(zip(self.posX, posXvals)) # -- Basic Tool buttons self.btn_anchorCopy = QtGui.QPushButton('Copy') self.btn_anchorPaste = QtGui.QPushButton('Paste') self.btn_clearSel = QtGui.QPushButton('Remove') self.btn_clearAll = QtGui.QPushButton('Remove All') self.btn_anchorAdd = QtGui.QPushButton('Add') self.btn_anchorMov = QtGui.QPushButton('Move') self.btn_anchorRename = QtGui.QPushButton('Rename') self.btn_anchorSuffix = QtGui.QPushButton('Suffix') self.btn_anchorCopy.setToolTip( 'Copy selected Anchors from layers chosen.') self.btn_anchorPaste.setToolTip('Paste Anchors at layers chosen.') self.btn_anchorRename.setToolTip('Rename selected anchors.') self.btn_anchorSuffix.setToolTip( 'Extend the name of selected Anchors.') self.chk_italic = QtGui.QCheckBox('Use Italic Angle') # -- Edit fields self.edt_anchorName = ALineEdit() self.edt_simpleX = ALineEdit() self.edt_simpleY = ALineEdit() self.edt_autoT = QtGui.QLineEdit() self.edt_anchorName.setPlaceholderText('New Anchor') self.edt_simpleX.setText('0') self.edt_simpleY.setText('0') self.edt_autoT.setText('5') # -- Combo box self.cmb_posX = QtGui.QComboBox() self.cmb_posY = QtGui.QComboBox() self.cmb_type = QtGui.QComboBox() self.cmb_posX.addItems(self.posX) self.cmb_posY.addItems(self.posY) self.cmb_type.addItems(self.types) self.cmb_type.setEnabled(False) # -- Constrains self.btn_clearSel.setMinimumWidth(90) self.btn_clearAll.setMinimumWidth(90) self.edt_anchorName.setMinimumWidth(50) self.edt_simpleX.setMinimumWidth(30) self.edt_simpleY.setMinimumWidth(30) # -- Link functions self.btn_clearAll.clicked.connect(lambda: self.clearAnchors(True)) self.btn_clearSel.clicked.connect(lambda: self.clearAnchors(False)) self.btn_anchorAdd.clicked.connect(lambda: self.addAnchors(False)) self.btn_anchorMov.clicked.connect(lambda: self.addAnchors(True)) self.btn_anchorCopy.clicked.connect(lambda: self.copyAnchors(False)) self.btn_anchorPaste.clicked.connect(lambda: self.copyAnchors(True)) self.btn_anchorSuffix.clicked.connect( lambda: self.renameAnchors(False)) self.btn_anchorRename.clicked.connect(lambda: self.renameAnchors(True)) self.anchorSelector.tree_anchors.itemChanged.connect( self.processChange) # - Build layout layoutV = QtGui.QVBoxLayout() layoutV.addLayout(self.anchorSelector) self.fld_actions = TRCollapsibleBox('Anchor actions:') lay_actions = QtGui.QGridLayout() lay_actions.addWidget(self.btn_anchorCopy, 0, 0, 1, 4) lay_actions.addWidget(self.btn_anchorPaste, 0, 4, 1, 4) lay_actions.addWidget(self.btn_clearSel, 1, 0, 1, 4) lay_actions.addWidget(self.btn_clearAll, 1, 4, 1, 4) self.fld_actions.setContentLayout(lay_actions) layoutV.addWidget(self.fld_actions) self.fld_addmod = TRCollapsibleBox('Add/Move anchor:') lay_addmod = QtGui.QGridLayout() lay_addmod.addWidget(QtGui.QLabel('N:'), 0, 0, 1, 1) lay_addmod.addWidget(self.edt_anchorName, 0, 1, 1, 3) lay_addmod.addWidget(self.cmb_type, 0, 4, 1, 4) lay_addmod.addWidget(QtGui.QLabel('X:'), 1, 0, 1, 1) lay_addmod.addWidget(self.cmb_posX, 1, 1, 1, 3) lay_addmod.addWidget(self.edt_simpleX, 1, 4, 1, 4) lay_addmod.addWidget(QtGui.QLabel('Y:'), 2, 0, 1, 1) lay_addmod.addWidget(self.cmb_posY, 2, 1, 1, 3) lay_addmod.addWidget(self.edt_simpleY, 2, 4, 1, 4) lay_addmod.addWidget(QtGui.QLabel('Tolerance:'), 3, 1, 1, 2) lay_addmod.addWidget(self.edt_autoT, 3, 3, 1, 1) lay_addmod.addWidget(self.chk_italic, 3, 4, 1, 1) lay_addmod.addWidget(self.btn_anchorAdd, 4, 0, 1, 4) lay_addmod.addWidget(self.btn_anchorMov, 4, 4, 1, 4) lay_addmod.addWidget(self.btn_anchorRename, 5, 0, 1, 4) lay_addmod.addWidget(self.btn_anchorSuffix, 5, 4, 1, 4) self.fld_addmod.setContentLayout(lay_addmod) layoutV.addWidget(self.fld_addmod) # - Finish self.setLayout(layoutV) self.setMinimumSize(300, self.sizeHint.height())
def __init__(self, parentWidget): super(TRAutoMetrics, self).__init__() self.upper_widget = parentWidget # -- Init self.active_font = pFont() self.active_sampler = MetricSampler(self.active_font) self.font_masters = self.active_font.masters() self.empty_preset = lambda row: OrderedDict([(row, OrderedDict([('Preset', 'Preset %s' %row)] + [(master, '0') for master in self.font_masters]))]) self.table_dict = self.empty_preset(0) self.__max_value = 10000 # -- Widgets self.edt_glyphName = QtGui.QLineEdit() self.edt_glyphName.setPlaceholderText('Glyph name') # -- Buttons self.btn_addPreset = QtGui.QPushButton('Add') self.btn_delPreset = QtGui.QPushButton('Remove') self.btn_resetPreset = QtGui.QPushButton('Reset') self.btn_loadPreset = QtGui.QPushButton('Load') self.btn_savePreset = QtGui.QPushButton('Save') self.btn_get_lsb = QtGui.QPushButton('LSB') self.btn_get_rsb = QtGui.QPushButton('RSB') self.btn_get_both = QtGui.QPushButton('Set Metrics') self.btn_advanced = QtGui.QPushButton('Use Advanced options') self.btn_advanced.setCheckable(True) self.btn_advanced.setChecked(False) self.btn_advanced.setEnabled(False) self.btn_get_lsb.clicked.connect(lambda: self.set_sidebearings('lsb')) self.btn_get_rsb.clicked.connect(lambda: self.set_sidebearings('rsb')) self.btn_get_both.clicked.connect(lambda: self.set_sidebearings('bth')) # -- Checkbox self.chk_area_draw = QtGui.QCheckBox('Draw sampled area') self.chk_area_cache = QtGui.QCheckBox('Cache sampled area') # -- Spinbox self.spb_window_min = QtGui.QSpinBox() self.spb_window_max = QtGui.QSpinBox() self.spb_depth = QtGui.QSpinBox() self.spb_mul_area = QtGui.QDoubleSpinBox() self.spb_window_min.setMaximum(self.__max_value) self.spb_window_max.setMaximum(self.__max_value) self.spb_window_min.setMinimum(-self.__max_value) self.spb_window_max.setMinimum(-self.__max_value) self.spb_depth.setMaximum(self.__max_value) self.spb_mul_area.setMaximum(20.) self.spb_mul_area.setMinimum(-20.) self.spb_mul_area.setSingleStep(0.01) self.spb_window_min.setSuffix(' u') self.spb_window_max.setSuffix(' u') self.spb_depth.setSuffix(' u') self.spb_window_min.setValue(self.active_sampler.sample_window[0]) self.spb_window_max.setValue(self.active_sampler.sample_window[1]) self.spb_depth.setValue(self.active_sampler.cutout_x) self.spb_mul_area.setValue(0.5) self.spb_window_min.valueChanged.connect(lambda: self.update_sampler_config()) self.spb_window_max.valueChanged.connect(lambda: self.update_sampler_config()) self.spb_depth.valueChanged.connect(lambda: self.update_sampler_config()) # -- Preset Table self.tab_presets = TRTableView(None) # -- Build Layout self.lay_head = QtGui.QGridLayout() self.frame_advanced = QtGui.QFrame() self.lay_advanced = QtGui.QGridLayout() self.lay_head.addWidget(QtGui.QLabel('Sampling Options:'), 0, 0, 1, 8) self.lay_head.addWidget(QtGui.QLabel('Min (Y):'), 1, 0, 1, 2) self.lay_head.addWidget(self.spb_window_min, 1, 2, 1, 2) self.lay_head.addWidget(QtGui.QLabel('Max (Y):'), 1, 4, 1, 2) self.lay_head.addWidget(self.spb_window_max, 1, 6, 1, 2) self.lay_head.addWidget(QtGui.QLabel('Depth (X):'), 2, 0, 1, 2) self.lay_head.addWidget(self.spb_depth, 2, 2, 1, 2) self.lay_head.addWidget(QtGui.QLabel('Area (mult.):'), 2, 4, 1, 2) self.lay_head.addWidget(self.spb_mul_area, 2, 6, 1, 2) self.lay_head.addWidget(self.chk_area_draw, 3, 0, 1, 4) self.lay_head.addWidget(self.chk_area_cache, 3, 4, 1, 4) self.lay_head.addWidget(self.btn_get_lsb, 4, 0, 1, 2) self.lay_head.addWidget(self.btn_get_both, 4, 2, 1, 4) self.lay_head.addWidget(self.btn_get_rsb, 4, 6, 1, 2) self.lay_head.addWidget(self.btn_advanced, 5, 0, 1, 8) self.lay_head.addWidget(self.frame_advanced, 6, 0, 15, 8) self.frame_advanced.setLayout(self.lay_advanced) #self.lay_advanced.addWidget(QtGui.QLabel('Advanced configuration:'), 0, 0, 1, 6) self.lay_advanced.addWidget(self.btn_addPreset, 1, 0, 1, 2) self.lay_advanced.addWidget(self.btn_delPreset, 1, 2, 1, 2) self.lay_advanced.addWidget(self.btn_resetPreset, 1, 4, 1, 2) self.lay_advanced.addWidget(self.tab_presets, 2, 0, 5, 6) self.lay_advanced.addWidget(self.btn_loadPreset, 10, 0, 1, 3) self.lay_advanced.addWidget(self.btn_savePreset, 10, 3, 1, 3) self.frame_advanced.setFrameStyle(1) self.frame_advanced.hide() self.btn_advanced.clicked.connect(lambda: self.frame_advanced.show() if self.btn_advanced.isChecked() else self.frame_advanced.hide()) self.addLayout(self.lay_head)