def __init__(self): super(alignShapes, self).__init__() # - Init self.align_x = OrderedDict([('Left', 'L'), ('Right', 'R'), ('Center', 'C'), ('Keep', 'K')]) self.align_y = OrderedDict([('Top', 'T'), ('Bottom', 'B'), ('Center', 'E'), ('Keep', 'X')]) self.align_mode = OrderedDict([('Layer', 'CL'), ('Shape to Shape', 'CC'), ('Shape to Shape (REV)', 'RC')]) # !!! To be implemented #self.align_mode = OrderedDict([('Layer','CL'), ('Shape to Shape','CC'), ('Shape to Shape (REV)','RC'), ('Shape to Node','CN'),('Node to Node','NN')]) # - Widgets self.cmb_align_x = QtGui.QComboBox() self.cmb_align_y = QtGui.QComboBox() self.cmb_align_mode = QtGui.QComboBox() self.cmb_align_x.addItems(self.align_x.keys()) self.cmb_align_y.addItems(self.align_y.keys()) self.cmb_align_mode.addItems(self.align_mode.keys()) self.cmb_align_x.setToolTip('Horizontal Alignment') self.cmb_align_y.setToolTip('Vertical Alignment') self.cmb_align_mode.setToolTip('Alignment Mode') self.btn_align = QtGui.QPushButton('Align') self.btn_align.clicked.connect(self.alignShapes) self.addWidget(self.cmb_align_mode, 0, 0, 1, 2) self.addWidget(self.cmb_align_x, 0, 2, 1, 1) self.addWidget(self.cmb_align_y, 0, 3, 1, 1) self.addWidget(self.btn_align, 1, 0, 1, 4)
def __init__(self, parentWidget): super(WFontZones, self).__init__() # - Init self.grid = QtGui.QGridLayout() self.upperWidget = parentWidget self.activeFont = pFont() self.zoneData = { master: self.activeFont.zonesToTuples(master) for master in self.activeFont.masters() } # - Interface self.btn_apply = QtGui.QPushButton('Apply Changes') self.btn_reset = QtGui.QPushButton('Reset') self.btn_open = QtGui.QPushButton('Open') self.btn_save = QtGui.QPushButton('Save') self.btn_new = QtGui.QPushButton('Add New') self.btn_del = QtGui.QPushButton('Delete') self.cmb_layer = QtGui.QComboBox() self.cmb_layer.addItems(['All Layers'] + self.activeFont.masters()) self.edt_pos = TRZLineEdit() self.edt_width = QtGui.QLineEdit() self.edt_name = QtGui.QLineEdit() self.edt_name.setPlaceholderText('Name') self.edt_pos.setPlaceholderText('Position') self.edt_width.setPlaceholderText('Width') self.btn_apply.clicked.connect(self.applyChanges) self.btn_reset.clicked.connect(self.resetChanges) self.btn_save.clicked.connect(self.exportZones) self.btn_open.clicked.connect(self.importZones) self.btn_new.clicked.connect(self.addZone) self.btn_del.clicked.connect(self.delZone) self.tree_fontZones = WTreeWidget(self.zoneData) # - Build lbl_name = QtGui.QLabel('Font Zones (Local)') lbl_name.setMaximumHeight(20) self.grid.addWidget(lbl_name, 0, 0, 1, 24) self.grid.addWidget(self.tree_fontZones, 1, 0, 15, 21) self.grid.addWidget(self.cmb_layer, 1, 21, 1, 3) self.grid.addWidget(self.edt_name, 2, 21, 1, 3) self.grid.addWidget(self.edt_pos, 3, 21, 1, 3) self.grid.addWidget(self.edt_width, 4, 21, 1, 3) self.grid.addWidget(self.btn_new, 5, 21, 1, 3) self.grid.addWidget(self.btn_del, 6, 21, 1, 3) self.grid.addWidget(self.btn_save, 12, 21, 1, 3) self.grid.addWidget(self.btn_open, 13, 21, 1, 3) self.grid.addWidget(self.btn_reset, 14, 21, 1, 3) self.grid.addWidget(self.btn_apply, 15, 21, 1, 3) self.setLayout(self.grid)
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) # -- 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)
def __init__(self): super(dlg_cornerTool, self).__init__() # - Init self.active_font = pFont() self.pMode = 0 # - Basic Widgets self.cmb_preset = QtGui.QComboBox() self.cmb_preset.addItems(presets.keys()) self.btn_corner_in = QtGui.QPushButton('Inner Corner') self.btn_corner_in2 = QtGui.QPushButton('2 node Inner') self.btn_corner_revIn = QtGui.QPushButton('Inner Swap') self.btn_corner_revIn2 = QtGui.QPushButton('2 node Inner Swap') self.btn_corner_getIn = QtGui.QPushButton('Get User Inner') self.btn_corner_out = QtGui.QPushButton('Outer Corner') self.btn_corner_revOut = QtGui.QPushButton('Outer Swap') self.btn_corner_getOut = QtGui.QPushButton('Get User Outer') self.btn_setStart = QtGui.QPushButton('Set Start Point') self.btn_measure = QtGui.QPushButton('Measure Corner') self.btn_corner_in.clicked.connect(lambda: self.in_corner(False)) self.btn_corner_in2.clicked.connect(lambda: self.out_corner(False, 1)) self.btn_corner_out.clicked.connect(lambda: self.out_corner(False)) self.btn_corner_revIn.clicked.connect(lambda: self.in_corner(True)) self.btn_corner_revIn2.clicked.connect(lambda: self.out_corner(True, 1)) self.btn_corner_revOut.clicked.connect(lambda: self.out_corner(True)) self.btn_corner_getOut.clicked.connect(lambda: self.get_measurment(0)) self.btn_corner_getIn.clicked.connect(lambda: self.get_measurment(1)) self.btn_measure.clicked.connect(lambda: self.get_measurment(-1)) self.btn_setStart.clicked.connect(self.set_start) # - Build layouts layoutV = QtGui.QGridLayout() layoutV.addWidget(QtGui.QLabel('Preset:'), 0, 0, 1, 8, QtCore.Qt.AlignBottom) layoutV.addWidget(self.cmb_preset, 1, 0, 1, 8) layoutV.addWidget(self.btn_corner_getOut, 2, 0, 1, 4) layoutV.addWidget(self.btn_corner_getIn, 2, 4, 1, 4) layoutV.addWidget(QtGui.QLabel('Outer Corner:'), 3, 0, 1, 8, QtCore.Qt.AlignBottom) layoutV.addWidget(self.btn_corner_out, 4, 0, 1, 4) layoutV.addWidget(self.btn_corner_revOut, 4, 4, 1, 4) layoutV.addWidget(QtGui.QLabel('Inner Corner:'), 6, 0, 1, 8, QtCore.Qt.AlignBottom) layoutV.addWidget(self.btn_corner_in, 7, 0, 1, 4) layoutV.addWidget(self.btn_corner_revIn, 7, 4, 1, 4) layoutV.addWidget(self.btn_corner_in2, 8, 0, 1, 4) layoutV.addWidget(self.btn_corner_revIn2, 8, 4, 1, 4) layoutV.addWidget(QtGui.QLabel('Utils:'), 9, 0, 1, 8, QtCore.Qt.AlignBottom) layoutV.addWidget(self.btn_setStart, 10, 0, 1, 4) layoutV.addWidget(self.btn_measure, 10, 4, 1, 4) # - Set Widget self.setLayout(layoutV) self.setWindowTitle('%s %s' %(app_name, app_version)) self.setGeometry(300, 300, 300, 200) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! self.show()
def __init__(self): super(TRContourSelect, self).__init__() # -- Init self.table_dict = {0: {0: None}} # Empty table self.layer_names = [] # Empty layer list #self.table_columns = 'N,Shape,Contour,X,Y,Type,Relative'.split(',') self.table_columns = 'N,Sh,Cn,X,Y,Type,Rel'.split(',') # -- Widgets self.lay_head = QtGui.QGridLayout() self.edt_glyphName = QtGui.QLineEdit() self.cmb_layer = QtGui.QComboBox() self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_apply = QtGui.QPushButton('&Apply') self.btn_apply.setEnabled(False) # -- Build Layout self.lay_head.addWidget(QtGui.QLabel('G:'), 0, 0, 1, 1) self.lay_head.addWidget(self.edt_glyphName, 0, 1, 1, 5) self.lay_head.addWidget(self.btn_refresh, 0, 6, 1, 2) self.lay_head.addWidget(QtGui.QLabel('L:'), 1, 0, 1, 1) self.lay_head.addWidget(self.cmb_layer, 1, 1, 1, 5) self.lay_head.addWidget(self.btn_apply, 1, 6, 1, 2) self.addLayout(self.lay_head) # -- Node List Table self.tab_nodes = TRTableView(self.table_dict) self.addWidget(self.tab_nodes) #self.refresh() # Build Table self.btn_refresh.clicked.connect(lambda: self.refresh()) self.cmb_layer.currentIndexChanged.connect(lambda: self.changeLayer()) # -- Table Styling self.tab_nodes.horizontalHeader().setStretchLastSection(False) self.tab_nodes.setSortingEnabled(True) self.tab_nodes.horizontalHeader().sortIndicatorChanged.connect( lambda: self.tab_nodes.resizeColumnsToContents()) self.tab_nodes.verticalHeader().hide() self.tab_nodes.resizeColumnsToContents() self.tab_nodes.selectionModel().selectionChanged.connect( self.selectionChanged) self.tab_nodes.itemChanged.connect(self.valueChanged)
def __init__(self): super(shapeMovement, self).__init__() # - Init self.methodList = ['Shift', 'Scale', 'Shear'] # - Methods self.cmb_methodSelector = QtGui.QComboBox() self.cmb_methodSelector.addItems(self.methodList) self.cmb_methodSelector.setToolTip('Select transformation method') # - Arrow buttons self.btn_up = QtGui.QPushButton('Up') self.btn_down = QtGui.QPushButton('Down') self.btn_left = QtGui.QPushButton('Left') self.btn_right = QtGui.QPushButton('Right') self.btn_up.setMinimumWidth(80) self.btn_down.setMinimumWidth(80) self.btn_left.setMinimumWidth(80) self.btn_right.setMinimumWidth(80) self.btn_up.clicked.connect(self.onUp) self.btn_down.clicked.connect(self.onDown) self.btn_left.clicked.connect(self.onLeft) self.btn_right.clicked.connect(self.onRight) self.edt_offX = QtGui.QLineEdit('1.0') self.edt_offY = QtGui.QLineEdit('1.0') self.edt_offX.setToolTip('X offset') self.edt_offY.setToolTip('Y offset') # - Layout self.lay_btn = QtGui.QGridLayout() self.lay_btn.addWidget(self.cmb_methodSelector, 0, 0, 1, 6) self.lay_btn.addWidget(QtGui.QLabel('X:'), 1, 0, 1, 1) self.lay_btn.addWidget(self.edt_offX, 1, 1, 1, 1) self.lay_btn.addWidget(self.btn_up, 1, 2, 1, 2) self.lay_btn.addWidget(QtGui.QLabel('Y:'), 1, 4, 1, 1) self.lay_btn.addWidget(self.edt_offY, 1, 5, 1, 1) self.lay_btn.addWidget(self.btn_left, 2, 0, 1, 2) self.lay_btn.addWidget(self.btn_down, 2, 2, 1, 2) self.lay_btn.addWidget(self.btn_right, 2, 4, 1, 2) self.addLayout(self.lay_btn)
def __init__(self, parent): super(glyphComposer, self).__init__() # - Init self.parentWgt = parent # - Widgets self.cmb_fontShapes = QtGui.QComboBox() self.btn_populateShapes = QtGui.QPushButton('Populate') self.btn_insertShape = QtGui.QPushButton('Insert') self.btn_replaceShape = QtGui.QPushButton('Replace') self.btn_help = QtGui.QPushButton('Help') self.btn_saveExpr = QtGui.QPushButton('Save') self.btn_loadExpr = QtGui.QPushButton('Load') self.btn_exec = QtGui.QPushButton('Execute') self.cmb_fontShapes.setEditable(True) self.btn_populateShapes.clicked.connect(self.populate_shapes) self.btn_insertShape.clicked.connect(self.shape_insert) self.btn_replaceShape.clicked.connect(self.shape_replace) self.btn_exec.clicked.connect(self.process_insert) self.btn_saveExpr.clicked.connect(self.expr_toFile) self.btn_loadExpr.clicked.connect(self.expr_fromFile) self.btn_help.clicked.connect(lambda: QtGui.QMessageBox.information( self.parentWgt, 'Help', str_help)) self.txt_editor = TRPlainTextEdit() # - Build layouts self.addWidget(QtGui.QLabel('Insert elements:'), 0, 0, 1, 4) self.addWidget(self.cmb_fontShapes, 1, 0, 1, 6) self.addWidget(self.btn_populateShapes, 1, 6, 1, 2) self.addWidget(self.btn_insertShape, 2, 0, 1, 4) self.addWidget(self.btn_replaceShape, 2, 4, 1, 4) self.addWidget(QtGui.QLabel('Advanced Insert elements:'), 5, 0, 1, 4) self.addWidget(self.txt_editor, 7, 0, 30, 8) self.addWidget(self.btn_saveExpr, 37, 0, 1, 4) self.addWidget(self.btn_loadExpr, 37, 4, 1, 4) self.addWidget(self.btn_help, 38, 0, 1, 2) self.addWidget(self.btn_exec, 38, 2, 1, 6)
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)
def __init__(self): super(dlg_DeltaMachine, self).__init__() # - Init #self.setStyleSheet(ss_controls) self.pMode = 0 self.active_font = pFont() #self.data_glyphs = getProcessGlyphs(self.pMode) self.data_PointArrays = {} self.data_stems = {} self.ratio_source = {} self.ratio_target = {} self.italic_angle = 0 # - Basic Widgets # -- Master table self.tab_masters = WTableView(table_dict) self.table_populate() self.tab_masters.selectionModel().selectionChanged.connect( self.set_sliders) # -- Combos self.cmb_infoArrays = QtGui.QComboBox() # -- Buttons self.btn_execute = QtGui.QPushButton('Execute transformation') self.btn_tableRefresh = QtGui.QPushButton('Reset') self.chk_tableLock = QtGui.QPushButton('Lock') self.btn_tableSave = QtGui.QPushButton('Save') self.btn_tableLoad = QtGui.QPushButton('Load') self.btn_getVstems = QtGui.QPushButton('Get V-stems') self.btn_getHstems = QtGui.QPushButton('Get H-stems') self.btn_tableCheck = QtGui.QPushButton('Check All') self.btn_resetT = QtGui.QPushButton('Reset dX dY') self.btn_getTx = QtGui.QPushButton('Get V[dX]') self.btn_getTy = QtGui.QPushButton('Get H[dY]') self.btn_getArrays = QtGui.QPushButton('Get Master Sources') self.btn_getPart = QtGui.QPushButton('Get Part') self.btn_getWhole = QtGui.QPushButton('Get Whole') self.btn_pushWidthPW = QtGui.QPushButton('Eval Width') self.btn_pushHeightPW = QtGui.QPushButton('Eval Height') self.btn_pushWidth = QtGui.QPushButton('Set Width Ratio') self.btn_pushHeight = QtGui.QPushButton('Set Height Ratio') self.btn_tableCheck.clicked.connect(self.table_check_all) self.btn_tableRefresh.clicked.connect(self.table_populate) self.btn_tableSave.clicked.connect(self.file_save_deltas) self.btn_tableLoad.clicked.connect(self.file_load_deltas) self.btn_execute.clicked.connect(self.table_execute) self.chk_tableLock.clicked.connect( lambda: self.tab_masters.lockTable()) self.btn_getPart.clicked.connect(lambda: self.get_ratio(True)) self.btn_getWhole.clicked.connect(lambda: self.get_ratio(False)) self.btn_pushWidthPW.clicked.connect( lambda: self.push_ratio(False, True)) self.btn_pushHeightPW.clicked.connect( lambda: self.push_ratio(True, True)) self.btn_pushWidth.clicked.connect( lambda: self.push_ratio(False, False)) self.btn_pushHeight.clicked.connect( lambda: self.push_ratio(True, False)) self.btn_getArrays.clicked.connect(lambda: self.get_PointArrays(None)) self.btn_getVstems.clicked.connect(lambda: self.get_Stems(True)) self.btn_getHstems.clicked.connect(lambda: self.get_Stems(False)) self.btn_getTx.clicked.connect(lambda: self.get_Stems(True, False)) self.btn_getTy.clicked.connect(lambda: self.get_Stems(False, False)) # -- Check buttons self.chk_italic = QtGui.QPushButton('Italic') self.chk_single = QtGui.QPushButton('Anisotropic') self.chk_preview = QtGui.QPushButton('Live Preview') self.chk_boundry = QtGui.QPushButton('Fix Boundry') self.chk_single.setToolTip( 'Active: Use X and Y to control interpolation.') self.chk_tableLock.setCheckable(True) self.chk_single.setCheckable(True) self.chk_italic.setCheckable(True) self.chk_preview.setCheckable(True) self.chk_boundry.setCheckable(True) self.chk_single.setChecked(False) self.chk_italic.setChecked(False) self.chk_preview.setChecked(False) self.chk_boundry.setChecked(True) # -- Radio 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.setChecked(True) self.rad_glyph.setEnabled(True) self.rad_window.setEnabled(True) self.rad_selection.setEnabled(True) self.rad_font.setEnabled(True) self.rad_glyph.toggled.connect(self.table_refresh) self.rad_window.toggled.connect(self.table_refresh) self.rad_selection.toggled.connect(self.table_refresh) self.rad_font.toggled.connect(self.table_refresh) # -- Sliders self.mixer_dx = TRSliderCtrl('1', '1000', '0', 1) self.mixer_dy = TRSliderCtrl('1', '1000', '0', 1) self.scaler_dx = TRSliderCtrl('1', '200', '100', 1) self.scaler_dy = TRSliderCtrl('1', '200', '100', 1) self.mixer_dx.sld_axis.valueChanged.connect(lambda: self.process_scale( eGlyph(), anisotropic=self.chk_single.isChecked(), live_update=self.chk_preview.isChecked())) self.mixer_dy.sld_axis.valueChanged.connect(lambda: self.process_scale( eGlyph(), anisotropic=self.chk_single.isChecked(), live_update=self.chk_preview.isChecked())) self.scaler_dx.sld_axis.valueChanged.connect( lambda: self.process_scale(eGlyph(), anisotropic=self.chk_single.isChecked(), live_update=self.chk_preview.isChecked( ))) self.scaler_dy.sld_axis.valueChanged.connect( lambda: self.process_scale(eGlyph(), anisotropic=self.chk_single.isChecked(), live_update=self.chk_preview.isChecked( ))) # - Build layout layoutV = QtGui.QGridLayout() layoutV.addWidget(QtGui.QLabel('Preferences:'), 0, 0, 1, 1) layoutV.addWidget(self.btn_tableCheck, 0, 1, 1, 2) layoutV.addWidget(self.chk_tableLock, 0, 3, 1, 2) layoutV.addWidget(self.btn_tableSave, 0, 5, 1, 1) layoutV.addWidget(self.btn_tableLoad, 0, 6, 1, 2) layoutV.addWidget(self.btn_tableRefresh, 0, 8, 1, 1) layoutV.addWidget(QtGui.QLabel('Source:'), 0, 10, 1, 1, QtCore.Qt.AlignRight) layoutV.addWidget(self.btn_getVstems, 0, 11, 1, 2) layoutV.addWidget(self.btn_getHstems, 0, 13, 1, 2) layoutV.addWidget(QtGui.QLabel('Ratio BBOX:'), 0, 15, 1, 1, QtCore.Qt.AlignRight) layoutV.addWidget(self.btn_getPart, 0, 16, 1, 1) layoutV.addWidget(self.btn_getWhole, 0, 17, 1, 1) layoutV.addWidget(self.btn_pushWidthPW, 0, 18, 1, 1) layoutV.addWidget(self.btn_pushHeightPW, 0, 19, 1, 1) layoutV.addWidget(QtGui.QLabel('Master data:'), 1, 0, 1, 1) layoutV.addWidget(self.cmb_infoArrays, 1, 1, 1, 4) layoutV.addWidget(self.btn_getArrays, 1, 5, 1, 4) layoutV.addWidget(QtGui.QLabel('Target:'), 1, 10, 1, 1, QtCore.Qt.AlignRight) layoutV.addWidget(self.btn_getTx, 1, 11, 1, 2) layoutV.addWidget(self.btn_getTy, 1, 13, 1, 2) layoutV.addWidget(QtGui.QLabel('Populate:'), 1, 15, 1, 1, QtCore.Qt.AlignRight) layoutV.addWidget(self.btn_pushWidth, 1, 16, 1, 2) layoutV.addWidget(self.btn_pushHeight, 1, 18, 1, 2) layoutV.addWidget(self.tab_masters, 2, 0, 15, 20) layoutV.addWidget(QtGui.QLabel('LERP [dX]:'), 23, 0, 1, 1, QtCore.Qt.AlignTop) layoutV.addLayout(self.mixer_dx, 23, 1, 1, 4) layoutV.addWidget(QtGui.QLabel('[dY]:'), 23, 5, 1, 1, QtCore.Qt.AlignTop | QtCore.Qt.AlignRight) layoutV.addLayout(self.mixer_dy, 23, 6, 1, 4) layoutV.addWidget(QtGui.QLabel('Width:'), 23, 10, 1, 1, QtCore.Qt.AlignTop | QtCore.Qt.AlignRight) layoutV.addLayout(self.scaler_dx, 23, 11, 1, 4) layoutV.addWidget(QtGui.QLabel('Height:'), 23, 15, 1, 1, QtCore.Qt.AlignTop | QtCore.Qt.AlignRight) layoutV.addLayout(self.scaler_dy, 23, 16, 1, 4) layoutV.addWidget(QtGui.QLabel('Process:'), 25, 0, 1, 1) layoutV.addWidget(self.rad_glyph, 25, 1, 1, 1) layoutV.addWidget(self.rad_window, 25, 2, 1, 1) layoutV.addWidget(self.rad_selection, 25, 3, 1, 1) layoutV.addWidget(self.rad_font, 25, 4, 1, 1) layoutV.addWidget(QtGui.QLabel('Mode:'), 25, 5, 1, 1) layoutV.addWidget(self.chk_single, 25, 6, 1, 2) layoutV.addWidget(self.chk_italic, 25, 8, 1, 2) layoutV.addWidget(self.chk_boundry, 25, 10, 1, 2) layoutV.addWidget(self.chk_preview, 25, 12, 1, 3) layoutV.addWidget(self.btn_execute, 25, 15, 1, 5) # - Set Widget self.setLayout(layoutV) self.setWindowTitle('%s %s' % (app_name, app_version)) self.setGeometry(300, 300, 1150, 700) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! # !!! Hotfix FL7 7355 self.setMinimumSize(980, self.sizeHint.height()) self.show()
def setTable(self, data, reset=False): name_row, name_column = [], [] self.blockSignals(True) self.setColumnCount(max(map(len, data.values()))) self.setRowCount(len(data.keys())) # - Populate for n, layer in enumerate(sorted(data.keys())): name_row.append(layer) for m, key in enumerate(data[layer].keys()): # -- Build name column name_column.append(key) # -- Selectively add data if m == 0: newitem = QtGui.QTableWidgetItem(str(data[layer][key])) newitem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) newitem.setCheckState(QtCore.Qt.Unchecked) self.setItem(n, m, newitem) if 0 < m < 3: combo = QtGui.QComboBox() if m % 2: combo.setStyleSheet( 'QComboBox { background-color: rgba(255, 0, 0, 15); }' ) else: combo.setStyleSheet( 'QComboBox { background-color: rgba(0, 255, 0, 15); }' ) combo.addItems(data[layer][key]) self.setCellWidget(n, m, combo) if 2 < m < len(data[layer].keys()): spin = QtGui.QDoubleSpinBox() if m <= 6: spin.setSuffix(' u') if m % 2: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(255, 0, 0, 15); }' ) else: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(0, 255, 0, 15); }' ) spin.setMinimum(0.) spin.setMaximum(1000.) if 7 <= m <= 8: spin.setSuffix(' u') if m % 2: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(255, 200, 0, 25); }' ) else: spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(255, 200, 0, 25); }' ) spin.setMinimum(0.) spin.setMaximum(1000.) if 9 <= m <= 10: spin.setSuffix(' %') spin.setStyleSheet( 'QDoubleSpinBox { background-color: rgba(0, 0, 255, 15); }' ) spin.setMinimum(0.) spin.setMaximum(500.) if 10 < m: spin.setMinimum(0) spin.setMaximum(1) spin.setSingleStep(0.01) spin.setValue(data[layer][key]) self.setCellWidget(n, m, spin) self.setHorizontalHeaderLabels(name_column) self.setVerticalHeaderLabels(name_row) self.blockSignals(False)
def __init__(self, aux): super(TRAnchorBasic, self).__init__() # - Init self.aux = aux self.types = 'Anchor PinPoint'.split(' ') self.posY = 'Coord, Keep, Shift, Above, Below, Center, Baseline, Center of mass'.split( ', ') self.posX = 'Coord, Keep, Shift, Left, Right, Center, Highest, Highest Left, Highest Right, Lowest, Lowest Left, Lowest Right, Center of mass'.split( ', ') posYvals = (None, 'S', 'S', 'T', 'B', 'C', None, 'W') posXvals = (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 = QtGui.QLineEdit() self.edt_simpleY = QtGui.QLineEdit() 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.aux.tree_anchors.itemChanged.connect(self.processChange) # - Build layout self.lay_grid = QtGui.QGridLayout() self.lay_grid.addWidget(QtGui.QLabel('Anchor tree actions:'), 0, 0, 1, 4) self.lay_grid.addWidget(self.btn_anchorCopy, 1, 0, 1, 4) self.lay_grid.addWidget(self.btn_anchorPaste, 1, 4, 1, 4) self.lay_grid.addWidget(self.btn_clearSel, 2, 0, 1, 4) self.lay_grid.addWidget(self.btn_clearAll, 2, 4, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('\nAdd/move anchor:'), 3, 0, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('N:'), 4, 0, 1, 1) self.lay_grid.addWidget(self.edt_anchorName, 4, 1, 1, 3) self.lay_grid.addWidget(self.cmb_type, 4, 4, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('X:'), 5, 0, 1, 1) self.lay_grid.addWidget(self.cmb_posX, 5, 1, 1, 3) self.lay_grid.addWidget(self.edt_simpleX, 5, 4, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('Y:'), 6, 0, 1, 1) self.lay_grid.addWidget(self.cmb_posY, 6, 1, 1, 3) self.lay_grid.addWidget(self.edt_simpleY, 6, 4, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('Tolerance:'), 7, 1, 1, 2) self.lay_grid.addWidget(self.edt_autoT, 7, 3, 1, 1) self.lay_grid.addWidget(self.chk_italic, 7, 4, 1, 1) self.lay_grid.addWidget(self.btn_anchorAdd, 8, 0, 1, 4) self.lay_grid.addWidget(self.btn_anchorMov, 8, 4, 1, 4) self.lay_grid.addWidget(self.btn_anchorRename, 9, 0, 1, 4) self.lay_grid.addWidget(self.btn_anchorSuffix, 9, 4, 1, 4) # - Build self.addLayout(self.lay_grid)
def __init__(self, aux, upperWidget): super(TRTextBlockBasic, self).__init__() # - Init self.aux = aux #self.activeFont = pFont() self.upperWidget = upperWidget ''' self.active_workspace = pWorkspace() self.active_canvas = self.active_workspace.getCanvas() self.active_textBlock = pTextBlock(self.active_workspace.getTextBlockList()[0]) ''' # - Widgets self.chk_page = QtGui.QCheckBox('Page size:') self.chk_size = QtGui.QCheckBox('Width/Height:') self.chk_pos = QtGui.QCheckBox('Position X/Y:') self.chk_align = QtGui.QCheckBox('Text alignment:') self.chk_kegel = QtGui.QCheckBox('Font Size:') self.chk_page.setCheckState(QtCore.Qt.Checked) self.chk_size.setCheckState(QtCore.Qt.Checked) #self.chk_pos.setCheckState(QtCore.Qt.Checked) #self.chk_align.setCheckState(QtCore.Qt.Checked) self.chk_kegel.setCheckState(QtCore.Qt.Checked) self.cmb_pageSizes = QtGui.QComboBox() self.cmb_text_align = QtGui.QComboBox() self.cmb_pageSizes.addItems(sorted(page_sizes.keys())) self.cmb_text_align.addItems(text_align) self.cmb_pageSizes.currentTextChanged.connect(self.page_changed) self.cmb_text_align.currentTextChanged.connect(self.algn_changed) self.spb_font_size = QtGui.QSpinBox() self.spb_font_size.setSuffix(' pt') self.spb_font_size.setValue(12) self.spb_size_w = QtGui.QSpinBox() self.spb_size_h = QtGui.QSpinBox() self.spb_pos_x = QtGui.QSpinBox() self.spb_pos_y = QtGui.QSpinBox() self.spb_size_w.setMaximum(9999) self.spb_size_h.setMaximum(9999) self.spb_pos_x.setMaximum(9999) self.spb_pos_y.setMaximum(9999) self.spb_pos_x.setMinimum(-9999) self.spb_pos_y.setMinimum(-9999) self.spb_size_w.setValue(page_sizes[self.cmb_pageSizes.currentText][0]) self.spb_size_h.setValue(page_sizes[self.cmb_pageSizes.currentText][1]) self.btn_apply = QtGui.QPushButton('Set Text Block(s)') self.btn_clone = QtGui.QPushButton('Clone') self.btn_lock = QtGui.QPushButton('Lock') self.btn_reformat = QtGui.QPushButton('Reformat') self.btn_remove = QtGui.QPushButton('Remove') self.btn_stack_v = QtGui.QPushButton('Stack Vertically') self.btn_stack_h = QtGui.QPushButton('Stack Horizontally') #self.btn_save = QtGui.QPushButton('Save Layout') #self.btn_load = QtGui.QPushButton('Load Layout') self.btn_apply.clicked.connect(lambda: self.block_action('format')) self.btn_clone.clicked.connect(lambda: self.block_action('clone')) self.btn_remove.clicked.connect(lambda: self.block_action('remove')) self.btn_lock.clicked.connect(lambda: self.block_action('lock')) self.btn_reformat.clicked.connect( lambda: self.block_action('reformat')) self.btn_stack_v.clicked.connect(lambda: self.block_action('stack_v')) self.btn_stack_h.clicked.connect(lambda: self.block_action('stack_h')) #self.btn_save.clicked.connect(self.save) #self.btn_load.clicked.connect(self.load) # - Disable for now self.cmb_text_align.setEnabled(False) self.chk_align.setEnabled(False) # - Build layouts layoutV = QtGui.QGridLayout() layoutV.addWidget(QtGui.QLabel('Text Block: Formatting'), 0, 0, 1, 4) layoutV.addWidget(self.chk_page, 1, 0, 1, 2) layoutV.addWidget(self.cmb_pageSizes, 1, 2, 1, 2) layoutV.addWidget(self.chk_size, 2, 0, 1, 2) layoutV.addWidget(self.spb_size_w, 2, 2, 1, 1) layoutV.addWidget(self.spb_size_h, 2, 3, 1, 1) layoutV.addWidget(self.chk_pos, 3, 0, 1, 2) layoutV.addWidget(self.spb_pos_x, 3, 2, 1, 1) layoutV.addWidget(self.spb_pos_y, 3, 3, 1, 1) layoutV.addWidget(self.chk_align, 4, 0, 1, 2) layoutV.addWidget(self.cmb_text_align, 4, 2, 1, 2) layoutV.addWidget(self.chk_kegel, 5, 0, 1, 2) layoutV.addWidget(self.spb_font_size, 5, 2, 1, 2) layoutV.addWidget(self.btn_apply, 6, 0, 1, 4) layoutV.addWidget(QtGui.QLabel('Text Block: Tools'), 7, 0, 1, 4) layoutV.addWidget(self.btn_clone, 8, 0, 1, 2) layoutV.addWidget(self.btn_remove, 8, 2, 1, 2) layoutV.addWidget(self.btn_lock, 9, 0, 1, 2) layoutV.addWidget(self.btn_reformat, 9, 2, 1, 2) layoutV.addWidget(QtGui.QLabel('Text Block: Alignment'), 10, 0, 1, 4) layoutV.addWidget(self.btn_stack_h, 11, 0, 1, 2) layoutV.addWidget(self.btn_stack_v, 11, 2, 1, 2) ''' layoutV.addWidget(QtGui.QLabel('Text Block: Layout'), 12, 0, 1, 4) layoutV.addWidget(self.btn_save, 13, 0, 1, 2) layoutV.addWidget(self.btn_load, 13, 2, 1, 2) ''' # - Set Widget self.addLayout(layoutV)
def __init__(self): super(TRGlyphInfo, self).__init__() # -- Init self.table_dict = {0: {0: None}} # Empty table # -- Widgets self.lay_head = QtGui.QGridLayout() self.edt_glyphName = QtGui.QLineEdit() self.edt_glyphsSeq = QtGui.QLineEdit() self.edt_glyphName.setToolTip('Current Glyph Name.') self.edt_glyphsSeq.setToolTip( 'Manual entry for Glyph names to populate stats info. Separated by SPACE' ) self.cmb_query = QtGui.QComboBox() self.cmb_charset = QtGui.QComboBox() self.cmb_query.setToolTip('Select query type.') self.cmb_charset.setToolTip('Select character set to compare with.') # --- Add queries self.query_list = [ '(BBox) Bounding Box Width', '(BBox) Bounding Box Height', '(Metrics) Advance Width', '(Metrics) Left Side-bearing', '(Metrics) Right Side-bearing' ] self.cmb_query.addItems(self.query_list) self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_populate = QtGui.QPushButton('&Populate') self.btn_get = QtGui.QPushButton('&Window') self.btn_probe = QtGui.QPushButton('Glyph') self.btn_units = QtGui.QPushButton('Percent') self.btn_refresh.setToolTip('Refresh active glyph and table.') self.btn_populate.setToolTip( 'Populate character set selector from current font.') self.btn_get.setToolTip('Get current string from active Glyph Window.') self.btn_probe.setToolTip( 'Toggle between Row (Glyph) or Column (Layer) based comparison.') self.btn_units.setToolTip( 'Toggle the results beeing shown as (Units) or (Percent).') self.btn_probe.setCheckable(True) self.btn_units.setCheckable(True) self.btn_probe.setChecked(False) self.btn_units.setChecked(False) # !!! Disable for now self.cmb_charset.setEnabled(False) self.btn_populate.setEnabled(False) # -- Build Layout self.lay_head.addWidget(QtGui.QLabel('G:'), 0, 0, 1, 1) self.lay_head.addWidget(self.edt_glyphName, 0, 1, 1, 5) self.lay_head.addWidget(self.btn_refresh, 0, 6, 1, 2) #self.lay_head.addWidget(QtGui.QLabel('C:'), 1,0,1,1) #self.lay_head.addWidget(self.cmb_charset, 1,1,1,5) #self.lay_head.addWidget(self.btn_populate, 1,6,1,2) self.lay_head.addWidget(QtGui.QLabel('C:'), 2, 0, 1, 1) self.lay_head.addWidget(self.edt_glyphsSeq, 2, 1, 1, 5) self.lay_head.addWidget(self.btn_get, 2, 6, 1, 2) self.lay_head.addWidget(QtGui.QLabel('Q:'), 3, 0, 1, 1) self.lay_head.addWidget(self.cmb_query, 3, 1, 1, 5) self.lay_head.addWidget(self.btn_probe, 3, 6, 1, 2) self.addLayout(self.lay_head) # -- Table self.tab_stats = TRTableView(self.table_dict) #self.refresh() # -- Note/Descriotion self.addWidget(self.tab_stats) self.addWidget(self.btn_units) # -- Addons self.btn_refresh.clicked.connect(self.refresh) self.btn_populate.clicked.connect(self.populate) self.btn_get.clicked.connect(self.get_string) self.btn_probe.clicked.connect(self.toggle_query) self.btn_units.clicked.connect(self.toggle_units) self.cmb_query.currentIndexChanged.connect(self.refresh) # -- Table Styling self.tab_stats.horizontalHeader().setStretchLastSection(False) self.tab_stats.resizeColumnsToContents() self.tab_stats.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows) self.tab_stats.selectionModel().selectionChanged.connect( self.change_selection)
def __init__(self): super(TRStringGen, self).__init__() # - Init data val_fillerLeft, val_fillerRight = zip(*fillerList) self.defEncoding = 'utf-8' self.glyphNames = baseGlyphset self.font = pFont() # -- Init Interface # --- Editing fields self.edt_inputA = QtGui.QLineEdit() self.edt_inputB = QtGui.QLineEdit() self.edt_suffixA = QtGui.QLineEdit() self.edt_suffixB = QtGui.QLineEdit() self.edt_output = QtGui.QTextEdit() self.edt_sep = QtGui.QLineEdit() self.edt_inputA.setToolTip('Manual Glyph names input. [SPACE] delimited.\nNOTE: This field overrides the input combo box!') self.edt_inputB.setToolTip('Manual Glyph names input. [SPACE] delimited.\nNOTE: This field overrides the input combo box!') self.edt_suffixA.setToolTip('Suffix to be added to each glyph name.') self.edt_suffixB.setToolTip('Suffix to be added to each glyph name.') self.edt_sep.setText(glyphSep) # --- Combo boxes self.cmb_fillerPattern = QtGui.QComboBox() self.cmb_inputA = QtGui.QComboBox() self.cmb_inputB = QtGui.QComboBox() self.cmb_fillerLeft = QtGui.QComboBox() self.cmb_fillerRight = QtGui.QComboBox() self.cmb_join = QtGui.QComboBox() self.cmb_inputA.addItems(sorted(self.glyphNames.keys())) self.cmb_inputB.addItems(sorted(self.glyphNames.keys())) self.cmb_fillerPattern.setEditable(True) self.cmb_fillerLeft.setEditable(True) self.cmb_fillerRight.setEditable(True) self.cmb_join.addItems(joinOpt.keys()) self.cmb_fillerPattern.addItems(filler_patterns) self.cmb_inputA.setToolTip('Glyph names list.') self.cmb_inputB.setToolTip('Glyph names list.') self.cmb_fillerLeft.setToolTip('Left Filler String.') self.cmb_fillerRight.setToolTip('Right Filler String.') self.cmb_join.setToolTip('Joining method for generated string pairs.') self.edt_sep.setToolTip('Glyph Separator.') self.cmb_fillerPattern.setToolTip('Generator pattern expression.\n<< Filed names >> in any order, [SPACE] separated.') self.cmb_fillerLeft.addItems(val_fillerLeft) self.cmb_fillerRight.addItems(val_fillerRight) # --- Buttons self.btn_populate = QtGui.QPushButton('&Populate lists') self.btn_clear = QtGui.QPushButton('&Reset') self.btn_generateSTR = QtGui.QPushButton('Generate') self.btn_generateUNI = QtGui.QPushButton('Unicode') self.btn_generateAMF = QtGui.QPushButton('AFM') self.btn_generateKRN = QtGui.QPushButton('KRN') self.btn_kernPairsSTR = QtGui.QPushButton('String') self.btn_kernPairsUNI = QtGui.QPushButton('Unicode') self.btn_kernPairsAFM = QtGui.QPushButton('AFM') self.btn_kernPairsKRN = QtGui.QPushButton('KRN') self.btn_kernOTGrpSTR = QtGui.QPushButton('Sring') self.btn_kernOTGrpCLA = QtGui.QPushButton('CLA') self.btn_clear.setToolTip('Clear all manual input fields.') self.btn_populate.setToolTip('Populate name lists with existing glyph names in active font.') self.btn_generateSTR.setToolTip('Generate the pair string using Glyph Names and send it to the clipboard.') self.btn_generateUNI.setToolTip('Generate the pair string using Unicode Characters and send it to the clipboard.') self.btn_kernPairsSTR.setToolTip('Get string containing pairs from fonts kerning for current layer.\n SHIFT+Click discard filler - pure pairs.') self.btn_kernPairsUNI.setToolTip('Get Unicode pairs list from fonts kerning for current layer.\n SHIFT+Click use auto filler.') self.btn_clear.clicked.connect(self.clear) self.btn_populate.clicked.connect(self.populate) self.btn_generateSTR.clicked.connect(lambda: self.generateSTR(False, False)) self.btn_generateAMF.clicked.connect(lambda: self.generateSTR(True, False)) self.btn_generateKRN.clicked.connect(lambda: self.generateSTR(False, True)) self.btn_generateUNI.clicked.connect(lambda: self.generateUNI()) self.btn_kernOTGrpSTR.clicked.connect(lambda: self.generateOTGroups(False)) self.btn_kernOTGrpCLA.clicked.connect(lambda: self.generateOTGroups(True)) self.btn_kernPairsSTR.clicked.connect(lambda: self.getKerning(False)) self.btn_kernPairsUNI.clicked.connect(lambda: self.getKerning(True)) self.btn_kernPairsAFM.clicked.connect(lambda: self.getKerningAMF(False)) self.btn_kernPairsKRN.clicked.connect(lambda: self.getKerningAMF(True)) # - Build self.addWidget(self.btn_populate, 0, 1, 1, 5) self.addWidget(self.btn_clear, 0, 6, 1, 3) self.addWidget(QtGui.QLabel('A:'), 1, 0, 1, 1) self.addWidget(self.cmb_inputA, 1, 1, 1, 5) self.addWidget(QtGui.QLabel('Suffix:'), 1, 6, 1, 1) self.addWidget(self.edt_suffixA, 1, 7, 1, 2) self.addWidget(self.edt_inputA, 2, 1, 1, 8) self.addWidget(QtGui.QLabel('B:'), 3, 0, 1, 1) self.addWidget(self.cmb_inputB, 3, 1, 1, 5) self.addWidget(QtGui.QLabel('Suffix:'), 3, 6, 1, 1) self.addWidget(self.edt_suffixB, 3, 7, 1, 2) self.addWidget(self.edt_inputB, 4, 1, 1, 8) self.addWidget(QtGui.QLabel('String from pattern:'),5, 0, 1, 4) self.addWidget(QtGui.QLabel('FL:'), 6, 0, 1, 1) self.addWidget(self.cmb_fillerLeft, 6, 1, 1, 8) self.addWidget(QtGui.QLabel('FR:'), 7, 0, 1, 1) self.addWidget(self.cmb_fillerRight, 7, 1, 1, 8) self.addWidget(QtGui.QLabel('Pat.:'), 8, 0, 1, 1) self.addWidget(self.cmb_fillerPattern, 8, 1, 1, 8) self.addWidget(QtGui.QLabel('Join:'), 9, 0, 1, 1) self.addWidget(self.cmb_join, 9, 1, 1, 5) self.addWidget(QtGui.QLabel('Sep.:'), 9, 6, 1, 1) self.addWidget(self.edt_sep, 9, 7, 1, 2) self.addWidget(self.btn_generateSTR, 11, 0, 1, 6) self.addWidget(self.btn_generateUNI, 11, 6, 1, 3) self.addWidget(self.btn_generateAMF, 12, 0, 1, 6) self.addWidget(self.btn_generateKRN, 12, 6, 1, 3) self.addWidget(QtGui.QLabel('Pairs in kerning:'), 13, 0, 1, 9) self.addWidget(self.btn_kernPairsSTR, 14, 0, 1, 6) self.addWidget(self.btn_kernPairsUNI, 14, 6, 1, 3) self.addWidget(self.btn_kernPairsAFM, 15, 0, 1, 6) self.addWidget(self.btn_kernPairsKRN, 15, 6, 1, 3) self.addWidget(QtGui.QLabel('Gropus in kerning:'), 16, 0, 1, 9) self.addWidget(self.btn_kernOTGrpSTR, 17, 0, 1, 6) self.addWidget(self.btn_kernOTGrpCLA, 17, 6, 1, 3) self.addWidget(QtGui.QLabel('Output:'), 18, 0, 1, 9) self.addWidget(self.edt_output, 19, 0, 12, 9) self.setColumnStretch(0, 0) self.setColumnStretch(1, 2) self.setColumnStretch(6, 0) self.setColumnStretch(7, 1)
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('Import Classes from Font', self) act_data_build_composite = QtGui.QAction('Build Classes from References', 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_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_import_font) self.menu_data.addAction(act_data_build_composite) 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) 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_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()) # -- 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)