def __init__(self, parentWidget): super(WFontInstances, self).__init__() # - Init self.upperWidget = parentWidget self.gridPlane = QtGui.QGridLayout() self.axisPlane = QtGui.QVBoxLayout() # - Interface self.btn_axis_add = QtGui.QPushButton('New Axis Table') 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_apply.setEnabled(False) self.btn_reset.setEnabled(False) self.btn_open.setEnabled(False) self.btn_save.setEnabled(False) self.btn_axis_add.clicked.connect(self.add_AxisTable) # - Build # -- Main Grid self.gridPlane.addWidget(self.btn_axis_add, 0, 0, 1, 3) self.gridPlane.addWidget(self.btn_save, 0, 3, 1, 3) self.gridPlane.addWidget(self.btn_open, 0, 6, 1, 3) self.gridPlane.addWidget(self.btn_reset, 0, 9, 1, 3) self.gridPlane.addWidget(self.btn_apply, 0, 12, 1, 3) self.gridPlane.addLayout(self.axisPlane, 1, 0, 5, 15) self.setLayout(self.gridPlane)
def __init__(self): super(breakContour, self).__init__() # -- Split button self.btn_splitContour = QtGui.QPushButton('&Break') self.btn_splitContourClose = QtGui.QPushButton('&Break && Close') self.btn_splitContour.clicked.connect(self.splitContour) self.btn_splitContourClose.clicked.connect(self.splitContourClose) self.btn_splitContour.setMinimumWidth(80) self.btn_splitContourClose.setMinimumWidth(80) self.btn_splitContour.setToolTip('Break contour at selected Node(s).') self.btn_splitContourClose.setToolTip('Break contour and close open contours!\nUseful for cutting stems and etc.') # -- Extrapolate value self.edt_expand = QtGui.QLineEdit('0.0') #self.edt_expand.setMinimumWidth(30) self.edt_expand.setToolTip('Extrapolate endings.') # -- Build: Split/Break contour self.addWidget(self.btn_splitContour, 0, 0) self.addWidget(QtGui.QLabel('E:'), 0, 1) self.addWidget(self.edt_expand, 0, 2) self.addWidget(self.btn_splitContourClose, 0, 3)
def __init__(self, parentWidget): super(WFontAnchors, self).__init__() # - Init self.upperWidget = parentWidget self.activeFont = pFont() self.activeGlyph = pGlyph() self.metricData = { layer.name: self.activeFont.fontMetrics().asDict(layer.name) for layer in self.activeGlyph.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_apply.clicked.connect(self.applyChanges) self.btn_reset.clicked.connect(self.resetChanges) #self.btn_save.clicked.connect(self.exportMetrics) #self.btn_open.clicked.connect(self.importMetrics) self.tab_fontMetrics = WTableView(self.metricData) # - Build self.addWidget(self.tab_fontMetrics, 0, 1, 5, 6) self.addWidget(self.btn_save, 6, 3, 1, 1) self.addWidget(self.btn_open, 6, 4, 1, 1)
def __init__(self): super(curveEq, self).__init__() # - Basic operations self.btn_tunni = QtGui.QPushButton('&Tunni (Auto)') self.btn_hobby = QtGui.QPushButton('Set &Curvature') self.btn_hobby_get = QtGui.QPushButton('Get') self.btn_hobby_swap = QtGui.QPushButton('Swap') self.btn_prop = QtGui.QPushButton('Set &Handles') self.btn_tunni.setToolTip('Apply Tunni curve optimization') self.btn_hobby.setToolTip('Set Hobby spline curvature') self.btn_hobby_swap.setToolTip('Swap C0, C1 curvatures') self.btn_hobby_get.setToolTip( 'Get curvature for current selected\nsegment at active layer.') self.btn_prop.setToolTip( 'Set handle length in proportion to bezier node distance') self.spn_hobby0 = QtGui.QDoubleSpinBox() self.spn_hobby1 = QtGui.QDoubleSpinBox() self.spn_hobby0.setValue(0.95) self.spn_hobby1.setValue(0.95) self.spn_hobby0.setSingleStep(0.05) self.spn_hobby1.setSingleStep(0.05) self.spn_prop = QtGui.QDoubleSpinBox() self.spn_prop.setValue(0.30) self.spn_prop.setSingleStep(0.1) self.btn_tunni.clicked.connect(lambda: self.eqContour('tunni')) self.btn_hobby_swap.clicked.connect(self.hobby_swap) self.btn_hobby_get.clicked.connect(self.hobby_get) self.btn_hobby.clicked.connect(lambda: self.eqContour('hobby')) self.btn_prop.clicked.connect(lambda: self.eqContour('prop')) # -- Build: Curve optimization self.addWidget(self.btn_tunni, 0, 0, 1, 5) self.addWidget(QtGui.QLabel('Proportional handles'), 1, 0, 1, 5) self.addWidget(self.btn_prop, 2, 0, 1, 3) self.addWidget(QtGui.QLabel('P:'), 2, 3, 1, 1) self.addWidget(self.spn_prop, 2, 4, 1, 1) self.addWidget(QtGui.QLabel('Hobby curvature'), 3, 0, 1, 5) self.addWidget(self.btn_hobby_swap, 4, 0, 1, 1) self.addWidget(QtGui.QLabel('C0'), 4, 1, 1, 1) self.addWidget(self.spn_hobby0, 4, 2, 1, 1) self.addWidget(QtGui.QLabel('C1'), 4, 3, 1, 1) self.addWidget(self.spn_hobby1, 4, 4, 1, 1) self.addWidget(self.btn_hobby_get, 5, 0, 1, 1) self.addWidget(self.btn_hobby, 5, 1, 1, 4) self.setColumnStretch(0, 1) self.setColumnStretch(4, 0) self.setColumnStretch(5, 0) self.setColumnStretch(6, 0) self.setColumnStretch(7, 0)
def __init__(self, aux): super(QlayerBlend, self).__init__() # - Init self.aux = aux self.currentTime = .0 self.timeStep = .01 # - Interface # -- Blend active layer to single selected layer self.lay_blend = QtGui.QHBoxLayout() self.btn_minus = QtGui.QPushButton(' - ') self.btn_plus = QtGui.QPushButton(' + ') self.btn_minus.setMinimumWidth(75) self.btn_plus.setMinimumWidth(75) self.btn_minus.clicked.connect(self.blendMinus) self.btn_plus.clicked.connect(self.blendPlus) self.edt_timeStep = QtGui.QLineEdit() self.edt_timeStep.setText(self.timeStep) self.btn_minus.setToolTip( 'Blend Active Layer to selected Layer.\nOriginal Active layer is lost!' ) self.btn_plus.setToolTip( 'Blend Active Layer to selected Layer.\nOriginal Active layer is lost!' ) self.edt_timeStep.setToolTip('Blend time (0.0 - 1.0) Step.') self.lay_blend.addWidget(self.btn_minus) self.lay_blend.addWidget(QtGui.QLabel('T:')) self.lay_blend.addWidget(self.edt_timeStep) self.lay_blend.addWidget(self.btn_plus) self.addLayout(self.lay_blend) # -- Build Axis from current selected layers and send result to active layer self.lay_opt = QtGui.QHBoxLayout() self.chk_multi = QtGui.QCheckBox('Use Selected Layers as Axis') self.chk_multi.stateChanged.connect(self.setCurrentTime) self.chk_width = QtGui.QCheckBox('Fixed Width') self.chk_multi.setToolTip( 'Blend selected layers to Active layer.\nUSAGE:\n- Create blank new layer;\n- Select two layers to build Interpolation Axis;\n- Use [+][-] to blend along axis.\nNote:\n- Selection order is important!\n- Checking/unchecking resets the blend position!' ) self.chk_width.setToolTip('Keep current Advance Width') self.lay_opt.addWidget(self.chk_multi) self.lay_opt.addWidget(self.chk_width) self.addLayout(self.lay_opt)
def __init__(self, aux): super(advMovement, self).__init__() # - Init self.aux = aux self.methodList = ['Move', 'Simple Move', 'Interpolated Move', 'Slanted Grid Move', 'Slope walker'] # - Methods self.cmb_methodSelector = QtGui.QComboBox() self.cmb_methodSelector.addItems(self.methodList) self.cmb_methodSelector.setToolTip('Select movement method') self.chk_percent = QtGui.QCheckBox('% of BBox') self.chk_percent.setToolTip('Interpret new positional coordinates as if they were scaled by percent given in (X,Y)\nEquivalent to affine scaling of selected nodes in respect to the Layers BoundingBox') # - 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.chk_percent.clicked.connect(self.toggleInput) 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, 5) self.lay_btn.addWidget(self.chk_percent, 0, 5, 1, 1) 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): super(metrics_adjust, self).__init__() # - Spin Boxes self.spb_lsb_percent = QtGui.QSpinBox() self.spb_adv_percent = QtGui.QSpinBox() self.spb_rsb_percent = QtGui.QSpinBox() self.spb_lsb_units = QtGui.QSpinBox() self.spb_adv_units = QtGui.QSpinBox() self.spb_rsb_units = QtGui.QSpinBox() self.spb_lsb_percent.setMaximum(200) self.spb_adv_percent.setMaximum(200) self.spb_rsb_percent.setMaximum(200) self.spb_lsb_units.setMaximum(200) self.spb_adv_units.setMaximum(200) self.spb_rsb_units.setMaximum(200) self.spb_lsb_units.setMinimum(-200) self.spb_adv_units.setMinimum(-200) self.spb_rsb_units.setMinimum(-200) self.spb_lsb_percent.setSuffix('%') self.spb_adv_percent.setSuffix('%') self.spb_rsb_percent.setSuffix('%') self.spb_lsb_units.setSuffix(' u') self.spb_adv_units.setSuffix(' u') self.spb_rsb_units.setSuffix(' u') self.resetSpinBox() # - Buttons self.btn_adjMetrics = QtGui.QPushButton('&Adjust Metrics') self.btn_resetSpinBox = QtGui.QPushButton('&Reset') self.btn_adjMetrics.clicked.connect(self.adjMetrics) self.btn_resetSpinBox.clicked.connect(self.resetSpinBox) self.addWidget(QtGui.QLabel('LSB adjust:'), 0, 0, 1, 1) self.addWidget(QtGui.QLabel('RSB adjust:'), 0, 1, 1, 1) self.addWidget(QtGui.QLabel('ADV adjust:'), 0, 2, 1, 1) self.addWidget(self.spb_lsb_percent, 1, 0, 1, 1) self.addWidget(self.spb_rsb_percent, 1, 1, 1, 1) self.addWidget(self.spb_adv_percent, 1, 2, 1, 1) self.addWidget(self.spb_lsb_units, 2, 0, 1, 1) self.addWidget(self.spb_rsb_units, 2, 1, 1, 1) self.addWidget(self.spb_adv_units, 2, 2, 1, 1) self.addWidget(self.btn_resetSpinBox, 3, 0, 1, 1) self.addWidget(self.btn_adjMetrics, 3, 1, 1, 2)
def __init__(self): super(QlayerSelect, self).__init__() # - Init # -- 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 = QtGui.QListWidget() self.lst_layers.setAlternatingRowColors(True) self.lst_layers.setMinimumHeight(100) #self.lst_layers.setMaximumHeight(100) self.lst_layers.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection ) # Select multiple items call .selectedItems() to get a QList self.addWidget(self.lst_layers) self.refresh()
def __init__(self): super(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() self.KeyboardOverride = False # - Build layoutV.addWidget(QtGui.QLabel('Basic Operations:')) layoutV.addLayout(basicOps()) layoutV.addLayout(glyphComposer(self)) layoutV.addWidget(QtGui.QLabel('Align Shapes:')) self.alignShapes = alignShapes() layoutV.addLayout(self.alignShapes) layoutV.addStretch() layoutV.addWidget(QtGui.QLabel('Transformation:')) self.shapeMovement = shapeMovement() layoutV.addLayout(self.shapeMovement) # - Capture Kyaboard self.btn_capture = QtGui.QPushButton('Capture Keyboard') self.btn_capture.setCheckable(True) self.btn_capture.setToolTip( 'Click here to capture keyboard arrows input.\nNote:\n+10 SHIFT\n+100 CTRL\n Exit ESC' ) self.btn_capture.clicked.connect(self.captureKeyaboard) layoutV.addWidget(self.btn_capture) # - Build --------------------------- self.setLayout(layoutV)
def __init__(self): super(alignContours, self).__init__() from collections import OrderedDict # - 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'), ('Contour to Contour','CC'), ('Contour to Contour (REV)','RC')]) # !!! To be implemented #self.align_mode = OrderedDict([('Layer','CL'), ('Contour to Contour','CC'), ('Contour to Contour (REV)','RC'), ('Contour 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.alignContours) 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): super(QContourSelect, 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): super(metrics_expr, self).__init__() self.edt_lsb = MLineEdit() self.edt_adv = MLineEdit() self.edt_rsb = MLineEdit() self.edt_lsb.setPlaceholderText('Metric expression') self.edt_adv.setPlaceholderText('Metric expression') self.edt_rsb.setPlaceholderText('Metric expression') self.btn_setMetrics = QtGui.QPushButton('&Set expressions') self.btn_getShapeParent = QtGui.QPushButton('&Get reference') self.btn_delMetrics = QtGui.QPushButton('&Unlink') self.btn_autoBind = QtGui.QPushButton('&Auto bind Metric expressions') self.btn_autoBind.setToolTip( 'Automatically bind metric expressions from available element references.' ) self.btn_setMetrics.clicked.connect( lambda: self.setMetricEquations(False)) self.btn_delMetrics.clicked.connect( lambda: self.setMetricEquations(True)) self.btn_getShapeParent.clicked.connect(self.bindShapeParent) self.btn_autoBind.clicked.connect(self.autoMetricEquations) self.spb_shapeIndex = QtGui.QSpinBox() self.addWidget(QtGui.QLabel('LSB:'), 0, 0, 1, 1) self.addWidget(self.edt_lsb, 0, 1, 1, 5) self.addWidget(QtGui.QLabel('RSB:'), 1, 0, 1, 1) self.addWidget(self.edt_rsb, 1, 1, 1, 5) self.addWidget(QtGui.QLabel('ADV:'), 2, 0, 1, 1) self.addWidget(self.edt_adv, 2, 1, 1, 5) self.addWidget(self.btn_setMetrics, 3, 1, 1, 3) self.addWidget(self.btn_delMetrics, 3, 4, 1, 2) self.addWidget(QtGui.QLabel('E:'), 4, 0, 1, 1) self.addWidget(self.btn_getShapeParent, 4, 1, 1, 3) self.addWidget(self.spb_shapeIndex, 4, 4, 1, 2) self.addWidget(QtGui.QLabel('Composite Glyph: Metric expressions'), 5, 0, 1, 5) self.addWidget(self.btn_autoBind, 6, 0, 1, 6) self.setColumnStretch(0, 0) self.setColumnStretch(1, 5)
def __init__(self): super(mixerHead, self).__init__() self.edt_glyphName = QtGui.QLineEdit() self.edt_stemV0 = QtGui.QLineEdit('1') self.edt_stemV1 = QtGui.QLineEdit('1') self.edt_stemH0 = QtGui.QLineEdit('1') self.edt_stemH1 = QtGui.QLineEdit('1') self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_set_axis = QtGui.QPushButton('Set &Axis') self.btn_getVstem = QtGui.QPushButton('Get &V Stems') self.btn_getHstem = QtGui.QPushButton('Get &H Stems') self.spb_compV = QtGui.QDoubleSpinBox() self.spb_compH = QtGui.QDoubleSpinBox() self.spb_compV.setValue(0.) self.spb_compH.setValue(0.) self.spb_compV.setSingleStep(.01) self.spb_compH.setSingleStep(.01) self.cmb_0 = QtGui.QComboBox() self.cmb_1 = QtGui.QComboBox() self.chk_italic = QtGui.QPushButton('Italic') self.chk_single = QtGui.QPushButton('Anisotropic') self.chk_preview = QtGui.QPushButton('Live Preview') self.chk_single.setToolTip( 'Active: Use X and Y sliders to control interpolation.') self.chk_single.setCheckable(True) self.chk_italic.setCheckable(True) self.chk_preview.setCheckable(True) self.chk_single.setChecked(False) self.chk_italic.setChecked(False) self.chk_preview.setChecked(False) self.addWidget(QtGui.QLabel('Glyph:'), 0, 0, 1, 1) self.addWidget(self.edt_glyphName, 0, 1, 1, 6) self.addWidget(self.btn_refresh, 0, 7, 1, 1) self.addWidget(QtGui.QLabel('Axis:'), 1, 0, 1, 1) self.addWidget(self.cmb_0, 1, 1, 1, 3) self.addWidget(self.cmb_1, 1, 4, 1, 3) self.addWidget(self.btn_set_axis, 1, 7, 1, 1) self.addWidget(QtGui.QLabel('V Stems:'), 2, 0, 1, 1) self.addWidget(self.edt_stemV0, 2, 1, 1, 3) self.addWidget(self.edt_stemV1, 2, 4, 1, 3) self.addWidget(self.btn_getVstem, 2, 7, 1, 1) self.addWidget(QtGui.QLabel('H Stems:'), 3, 0, 1, 1) self.addWidget(self.edt_stemH0, 3, 1, 1, 3) self.addWidget(self.edt_stemH1, 3, 4, 1, 3) self.addWidget(self.btn_getHstem, 3, 7, 1, 1) self.addWidget(QtGui.QLabel('Adj.V/H:'), 4, 0, 1, 1) self.addWidget(self.spb_compV, 4, 1, 1, 3) self.addWidget(self.spb_compH, 4, 4, 1, 3) self.addWidget(self.chk_italic, 4, 7, 1, 1) self.addWidget(QtGui.QLabel('Control:'), 5, 0, 1, 1) self.addWidget(self.chk_single, 5, 1, 1, 4) self.addWidget(self.chk_preview, 5, 5, 1, 3)
def __build(self): # - Init self.sliders = [] self.process_glyphs = [] # - Buttons self.btn_capture = QtGui.QPushButton('Capture Smart Angles') self.btn_capture.clicked.connect(lambda: self.capture()) # - Set layout self.addWidget(QtGui.QLabel('\nRound: Smart corner control')) self.addWidget(self.btn_capture)
def __init__(self): super(basicOps, self).__init__() # - Widgets self.edt_shapeName = MLineEdit() self.edt_shapeName.setPlaceholderText('Element name') self.btn_setShapeName = QtGui.QPushButton('&Set Name') self.btn_unlinkShape = QtGui.QPushButton('&Unlink References') self.btn_delShape = QtGui.QPushButton('&Remove') self.btn_resetShape = QtGui.QPushButton('&Reset transform') self.btn_lockShape = QtGui.QPushButton('&Lock') self.btn_setShapeName.clicked.connect(self.shape_setname) self.btn_unlinkShape.clicked.connect(self.shape_unlink) self.btn_delShape.clicked.connect(self.shape_delete) self.btn_resetShape.clicked.connect(self.shape_resetTransform) self.addWidget(self.edt_shapeName, 0, 0, 1, 6) self.addWidget(self.btn_setShapeName, 1, 0, 1, 3) self.addWidget(self.btn_unlinkShape, 1, 3, 1, 3) self.addWidget(self.btn_resetShape, 2, 0, 1, 3) self.addWidget(self.btn_delShape, 2, 3, 1, 3)
def __init__(self): super(basicOps, self).__init__() # - Basic operations self.btn_insert = QtGui.QPushButton('&Insert') self.btn_remove = QtGui.QPushButton('&Remove') self.btn_mitre = QtGui.QPushButton('&Mitre') self.btn_knot = QtGui.QPushButton('&Overlap') self.btn_trapA = QtGui.QPushButton('&Trap') self.btn_rebuild = QtGui.QPushButton('Rebuil&d') self.btn_insert.setMinimumWidth(80) self.btn_remove.setMinimumWidth(80) self.btn_mitre.setMinimumWidth(80) self.btn_knot.setMinimumWidth(80) self.btn_trapA.setMinimumWidth(80) self.btn_rebuild.setMinimumWidth(80) self.btn_insert.setToolTip('Insert Node after Selection\nat given time T.') self.btn_remove.setToolTip('Remove Selected Nodes!\nFor proper curve node deletion\nalso select the associated handles!') self.btn_mitre.setToolTip('Mitre corner using size X.') self.btn_knot.setToolTip('Overlap corner using radius -X.') self.btn_trapA.setToolTip('Insert Angular (generic) Ink Trap at node selected') self.btn_rebuild.setToolTip('Rebuild corner from nodes selected.') self.btn_insert.clicked.connect(self.insertNode) self.btn_remove.clicked.connect(self.removeNode) self.btn_mitre.clicked.connect(lambda: self.cornerMitre(False)) self.btn_knot.clicked.connect(lambda: self.cornerMitre(True)) self.btn_trapA.clicked.connect(lambda: self.cornerTrap()) self.btn_rebuild.clicked.connect(lambda: self.cornerRebuild()) # - Edit fields self.edt_time = QtGui.QLineEdit('0.5') self.edt_radius = QtGui.QLineEdit('5') self.edt_trap = QtGui.QLineEdit('5, 30, 2') self.edt_time.setToolTip('Insertion Time.') self.edt_radius.setToolTip('Mitre size/Overlap or Round Radius.') self.edt_trap.setToolTip('Ink trap: Incision into glyphs flesh, Side depth, Trap size') # -- Build: Basic Ops self.addWidget(self.btn_insert, 0, 0) self.addWidget(QtGui.QLabel('T:'), 0, 1) self.addWidget(self.edt_time, 0, 2) self.addWidget(self.btn_remove, 0, 3) self.addWidget(self.btn_mitre, 1, 0) self.addWidget(QtGui.QLabel('X:'), 1, 1) self.addWidget(self.edt_radius, 1, 2) self.addWidget(self.btn_knot, 1, 3) self.addWidget(self.btn_trapA, 2, 0) self.addWidget(QtGui.QLabel('P:'), 2, 1) self.addWidget(self.edt_trap, 2, 2) self.addWidget(self.btn_rebuild, 2, 3)
def __init__(self, parentWidget): super(WFontMetrics, self).__init__() # - Init self.grid = QtGui.QGridLayout() self.upperWidget = parentWidget self.activeFont = pFont() self.metricData = {layer:self.activeFont.fontMetrics().asDict(layer) for layer 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_apply.clicked.connect(self.applyChanges) self.btn_reset.clicked.connect(self.resetChanges) self.btn_save.clicked.connect(self.exportMetrics) self.btn_open.clicked.connect(self.importMetrics) self.tab_fontMetrics = trTableView(self.metricData) # - Build lbl_name = QtGui.QLabel('Font Metrics (All Masters)') lbl_name.setMaximumHeight(20) self.grid.addWidget(lbl_name, 0, 0, 1, 24) self.grid.addWidget(self.tab_fontMetrics, 1, 0, 5, 21) self.grid.addWidget(self.btn_save, 1, 21, 1, 3) self.grid.addWidget(self.btn_open, 2, 21, 1, 3) self.grid.addWidget(self.btn_reset, 4, 21, 1, 3) self.grid.addWidget(self.btn_apply, 5, 21, 1, 3) for i in range(1,6): self.grid.setRowStretch(i,2) self.setLayout(self.grid)
def __init__(self): super(QlayerSelect, self).__init__() # - Init # -- Head self.columns = ('Glyph', 'Anchors') self.lay_head = QtGui.QHBoxLayout() self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_refresh.clicked.connect(self.refresh) # -- Layer List self.tree_anchors = trTreeView((self.columns, [('A', 'Dummy')])) self.addWidget(self.btn_refresh) self.addWidget(self.tree_anchors) self.refresh()
def __init__(self): super(QTextBlockSelect, self).__init__() # -- Head self.lay_head = QtGui.QHBoxLayout() self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_refresh.clicked.connect(self.refresh) self.lay_head.addWidget(self.btn_refresh) self.addLayout(self.lay_head) # -- TextBlock List self.lst_textBlocks = QtGui.QListWidget() self.lst_textBlocks.setAlternatingRowColors(True) self.lst_textBlocks.setMinimumHeight(100) self.lst_textBlocks.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) self.addWidget(self.lst_textBlocks)
def __init__(self): super(QGlyphTag, self).__init__() # - Widget & Layout self.edt_tagString = GLineEdit() self.edt_tagString.setPlaceholderText('Glyph tags') self.edt_tagString.setToolTip('A comma separated list of tags.') self.edt_tagStringNode = QtGui.QLineEdit() self.edt_tagStringNode.setPlaceholderText('Node name') self.edt_tagStringNode.setToolTip('A single node name.') self.btn_tagGlyph = QtGui.QPushButton('Glyph') self.btn_tagWindow = QtGui.QPushButton('Window') self.btn_tagSelection = QtGui.QPushButton('Selection') self.btn_tagNodes = QtGui.QPushButton('Glyph') self.btn_tagWindowNodes = QtGui.QPushButton('Window') self.btn_tagNodesClear = QtGui.QPushButton('Clear') self.btn_tagGlyph.clicked.connect(lambda: self.tag_glyphs('G')) self.btn_tagWindow.clicked.connect(lambda: self.tag_glyphs('W')) self.btn_tagSelection.clicked.connect(lambda: self.tag_glyphs('S')) self.btn_tagNodes.clicked.connect(lambda: self.tag_nodes('G')) self.btn_tagWindowNodes.clicked.connect(lambda: self.tag_nodes('W')) self.btn_tagNodesClear.clicked.connect( lambda: self.edt_tagStringNode.clear()) self.btn_tagGlyph.setToolTip('Add tags to current glyph.') self.btn_tagWindow.setToolTip( 'Add tags to all glyphs in current Glyph window.') self.btn_tagSelection.setToolTip( 'Add tags to current selection in Font window.') self.btn_tagNodes.setToolTip( 'Add name selected nodes at current glyph.') self.btn_tagWindowNodes.setToolTip( 'Add name to selected nodes at all glyphs in current Glyph window.' ) self.btn_tagNodesClear.setToolTip('Clear/Reset input filed.') # - Build self.addWidget(QtGui.QLabel('Glyph tagging:'), 1, 0, 1, 9) self.addWidget(self.edt_tagString, 2, 0, 1, 9) self.addWidget(self.btn_tagGlyph, 3, 0, 1, 3) self.addWidget(self.btn_tagWindow, 3, 3, 1, 3) self.addWidget(self.btn_tagSelection, 3, 6, 1, 3) self.addWidget(QtGui.QLabel('Node naming:'), 4, 0, 1, 9) self.addWidget(self.edt_tagStringNode, 5, 0, 1, 9) self.addWidget(self.btn_tagNodes, 6, 0, 1, 3) self.addWidget(self.btn_tagWindowNodes, 6, 3, 1, 3) self.addWidget(self.btn_tagNodesClear, 6, 6, 1, 3)
def __init__(self): super(convertHobby, self).__init__() # -- Convert button self.btn_convertNode = QtGui.QPushButton('C&onvert') self.btn_convertNode.setToolTip('Convert/Un-convert selected curve node to Hobby Knot') self.btn_convertNode.clicked.connect(self.convertHobby) #self.btn_convertNode.setFixedWidth(80) # -- Close contour checkbox #self.chk_Safe = QtGui.QCheckBox('Safe') # -- Tension value (not implemented yet) #self.edt_tension = QtGui.QLineEdit('0.0') #self.edt_tension.setDisabled(True) # -- Build self.addWidget(self.btn_convertNode)
def __init__(self): super(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() self.KeyboardOverride = False # - Build layoutV.addWidget(QtGui.QLabel('Basic Operations')) layoutV.addLayout(basicOps()) layoutV.addWidget(QtGui.QLabel('Align nodes')) self.alignNodes = alignNodes() layoutV.addLayout(self.alignNodes) #layoutV.addWidget(QtGui.QLabel('Break/Knot Contour')) #layoutV.addLayout(breakContour()) layoutV.addWidget(QtGui.QLabel('Basic Contour Operations')) layoutV.addLayout(basicContour()) layoutV.addWidget(QtGui.QLabel('Align Contours')) layoutV.addLayout(alignContours()) #layoutV.addWidget(QtGui.QLabel('Convert to Hobby')) #layoutV.addLayout(convertHobby()) layoutV.addWidget(QtGui.QLabel('Movement')) self.advMovement = advMovement(self.alignNodes) layoutV.addLayout(self.advMovement) # - Capture Kyaboard self.btn_capture = QtGui.QPushButton('Capture Keyboard') self.btn_capture.setCheckable(True) self.btn_capture.setToolTip('Click here to capture keyboard arrows input.\nNote:\n+10 SHIFT\n+100 CTRL\n Exit ESC') self.btn_capture.clicked.connect(self.captureKeyaboard) layoutV.addWidget(self.btn_capture) # - Build --------------------------- layoutV.addStretch() self.setLayout(layoutV)
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(metrics_font, self).__init__() self.btn_setAscender = QtGui.QPushButton('Asc.') self.btn_setCapsHeight = QtGui.QPushButton('Caps') self.btn_setDescender = QtGui.QPushButton('Desc.') self.btn_setXHeight = QtGui.QPushButton('X Hgt.') self.btn_togSelection = QtGui.QPushButton('Selection') self.btn_togBBOX = QtGui.QPushButton('Glyph BBOX') self.btn_togSelection.setCheckable(True) self.btn_togBBOX.setCheckable(True) #self.btn_togBBOX.setEnabled(False) self.btn_setAscender.setToolTip('Set Ascender height ') self.btn_setCapsHeight.setToolTip('Set Caps Height') self.btn_setDescender.setToolTip('Set Descender height') self.btn_setXHeight.setToolTip('Set X Height') self.btn_togSelection.setToolTip( 'Set Font metrics using the selected node') self.btn_togBBOX.setToolTip( 'Set Font metrics using the active glyph bounding box') self.btn_setAscender.setMinimumWidth(40) self.btn_setCapsHeight.setMinimumWidth(40) self.btn_setDescender.setMinimumWidth(40) self.btn_setXHeight.setMinimumWidth(40) self.btn_setAscender.clicked.connect( lambda: self.setFontMetrics('ascender')) self.btn_setCapsHeight.clicked.connect( lambda: self.setFontMetrics('capsHeight')) self.btn_setDescender.clicked.connect( lambda: self.setFontMetrics('descender')) self.btn_setXHeight.clicked.connect( lambda: self.setFontMetrics('xHeight')) self.addWidget(self.btn_togSelection, 0, 0, 1, 2) self.addWidget(self.btn_togBBOX, 0, 2, 1, 2) self.addWidget(self.btn_setAscender, 1, 0, 1, 1) self.addWidget(self.btn_setCapsHeight, 1, 1, 1, 1) self.addWidget(self.btn_setDescender, 1, 2, 1, 1) self.addWidget(self.btn_setXHeight, 1, 3, 1, 1)
def __init__(self): super(basicContour, self).__init__() self.btn_BL = QtGui.QPushButton('B L') self.btn_TL = QtGui.QPushButton('T L') self.btn_BR = QtGui.QPushButton('B R') self.btn_TR = QtGui.QPushButton('T R') self.btn_close= QtGui.QPushButton('C&lose') self.btn_CW = QtGui.QPushButton('CW') self.btn_CCW = QtGui.QPushButton('CCW') self.btn_BL.setMinimumWidth(40) self.btn_TL.setMinimumWidth(40) self.btn_BR.setMinimumWidth(40) self.btn_TR.setMinimumWidth(40) self.btn_CW.setMinimumWidth(40) self.btn_CCW.setMinimumWidth(40) self.btn_close.setToolTip('Close selected contour') self.btn_BL.setToolTip('Set start point:\nBottom Left Node') self.btn_TL.setToolTip('Set start point:\nTop Left Node') self.btn_BR.setToolTip('Set start point:\nBottom Right Node') self.btn_TR.setToolTip('Set start point:\nTop Right Node') self.btn_CW.setToolTip('Set direction:\nClockwise (TT)') self.btn_CCW.setToolTip('Set direction::\nCounterclockwise (PS)') self.btn_BL.clicked.connect(lambda : self.setStart((0,0))) self.btn_TL.clicked.connect(lambda : self.setStart((0,1))) self.btn_BR.clicked.connect(lambda : self.setStart((1,0))) self.btn_TR.clicked.connect(lambda : self.setStart((1,1))) self.btn_CW.clicked.connect(lambda : self.setDirection(False)) self.btn_CCW.clicked.connect(lambda : self.setDirection(True)) self.btn_close.clicked.connect(self.closeContour) self.addWidget(self.btn_BL, 0, 0, 1, 1) self.addWidget(self.btn_TL, 0, 1, 1, 1) self.addWidget(self.btn_BR, 0, 2, 1, 1) self.addWidget(self.btn_TR, 0, 3, 1, 1) self.addWidget(self.btn_close, 1, 0, 1, 2) self.addWidget(self.btn_CW, 1, 2, 1, 1) self.addWidget(self.btn_CCW, 1, 3, 1, 1)
def __init__(self, aux): super(QlayerBasic, self).__init__() # - Init self.aux = aux # -- Basic Tool buttons self.lay_buttons = QtGui.QGridLayout() self.btn_add = QtGui.QPushButton('Add') self.btn_del = QtGui.QPushButton('Remove') self.btn_dup = QtGui.QPushButton('Duplicate') self.btn_setServ = QtGui.QPushButton('Service') self.btn_setMask = QtGui.QPushButton('Mask') self.btn_setWire = QtGui.QPushButton('Wireframe') #self.btn_dup.setEnabled(False) self.btn_add.setToolTip('Add new layer with name') self.btn_dup.setToolTip('Duplicate selected with suffix') self.btn_del.setToolTip('Delete selected layers') self.btn_setServ.setToolTip('Set selected layers as Service') self.btn_setWire.setToolTip('Set selected layers as Wireframe') self.edt_name = QtGui.QLineEdit('New') self.edt_name.setToolTip('Name or suffix') self.btn_add.clicked.connect(self.addLayer) self.btn_dup.clicked.connect(self.duplicateLayers) self.btn_del.clicked.connect(self.deleteLayers) self.btn_setMask.clicked.connect(self.addMaskLayers) self.btn_setServ.clicked.connect(lambda: self.setLayer('Service')) self.btn_setWire.clicked.connect(lambda: self.setLayer('Wireframe')) self.lay_buttons.addWidget(QtGui.QLabel('Suffix/Name:'), 0, 0, 1, 1) self.lay_buttons.addWidget(self.edt_name, 0, 1, 1, 2) self.lay_buttons.addWidget(self.btn_add, 1, 0, 1, 1) self.lay_buttons.addWidget(self.btn_del, 1, 1, 1, 1) self.lay_buttons.addWidget(self.btn_dup, 1, 2, 1, 1) self.lay_buttons.addWidget(self.btn_setServ, 2, 0, 1, 1) self.lay_buttons.addWidget(self.btn_setMask, 2, 1, 1, 1) self.lay_buttons.addWidget(self.btn_setWire, 2, 2, 1, 1) self.addLayout(self.lay_buttons)
def __init__(self, parentWidget): super(QSmartCorner, self).__init__() self.upper_widget = parentWidget # -- Init self.active_font = pFont() self.builder = None 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.last_preset = 0 # -- Widgets self.lay_head = QtGui.QGridLayout() self.edt_glyphName = QtGui.QLineEdit() self.edt_glyphName.setPlaceholderText('Glyph name') # -- Buttons self.btn_getBuilder = QtGui.QPushButton('Set &Builder') self.btn_findBuilder = QtGui.QPushButton('&From Font') self.btn_addPreset = QtGui.QPushButton('Add') self.btn_delPreset = QtGui.QPushButton('Remove') self.btn_resetPreset = QtGui.QPushButton('Reset') self.btn_loadPreset = QtGui.QPushButton('&Load Presets') self.btn_savePreset = QtGui.QPushButton('&Save Presets') self.btn_apply_smartCorner = QtGui.QPushButton('&Apply Smart Corner') self.btn_remove_smartCorner = QtGui.QPushButton('R&emove Smart Corner') self.btn_remove_presetCorner = QtGui.QPushButton('&Find and Remove') self.btn_apply_smartCorner.setToolTip('Apply Smart Corner preset on SELECTED nodes.') self.btn_remove_smartCorner.setToolTip('Remove Smart Corner on SELECTED nodes.') self.btn_remove_presetCorner.setToolTip('Find and remove all Smart Corners that equal the currently selected preset.') self.btn_apply_round = QtGui.QPushButton('&Round') self.btn_apply_mitre = QtGui.QPushButton('&Mitre') self.btn_apply_overlap = QtGui.QPushButton('&Overlap') self.btn_apply_trap = QtGui.QPushButton('&Trap') self.btn_rebuild = QtGui.QPushButton('Rebuild corner') self.btn_getBuilder.setMinimumWidth(70) self.btn_findBuilder.setMinimumWidth(70) self.btn_apply_round.setMinimumWidth(70) self.btn_apply_mitre.setMinimumWidth(70) self.btn_apply_overlap.setMinimumWidth(70) self.btn_apply_trap.setMinimumWidth(70) self.btn_rebuild.setMinimumWidth(70) self.btn_addPreset.setMinimumWidth(70) self.btn_delPreset.setMinimumWidth(70) self.btn_loadPreset.setMinimumWidth(140) self.btn_savePreset.setMinimumWidth(140) self.btn_apply_smartCorner.setMinimumWidth(140) self.btn_remove_smartCorner.setMinimumWidth(140) self.btn_remove_presetCorner.setMinimumWidth(140) self.btn_getBuilder.setCheckable(True) self.btn_getBuilder.setChecked(False) self.btn_findBuilder.setEnabled(False) self.btn_apply_round.setEnabled(False) self.btn_getBuilder.clicked.connect(lambda: self.getBuilder()) self.btn_addPreset.clicked.connect(lambda: self.preset_modify(False)) self.btn_delPreset.clicked.connect(lambda: self.preset_modify(True)) self.btn_resetPreset.clicked.connect(lambda: self.preset_reset()) self.btn_loadPreset.clicked.connect(lambda: self.preset_load()) self.btn_savePreset.clicked.connect(lambda: self.preset_save()) self.btn_apply_smartCorner.clicked.connect(lambda: self.apply_SmartCorner(False)) self.btn_remove_smartCorner.clicked.connect(lambda: self.apply_SmartCorner(True)) self.btn_remove_presetCorner.clicked.connect(lambda: self.remove_SmartCorner()) #self.btn_apply_round.clicked.connect(lambda: self.apply_round()) self.btn_apply_mitre.clicked.connect(lambda: self.apply_mitre(False)) self.btn_apply_overlap.clicked.connect(lambda: self.apply_mitre(True)) self.btn_apply_trap.clicked.connect(lambda: self.apply_trap()) self.btn_rebuild.clicked.connect(lambda: self.rebuild()) # -- Preset Table self.tab_presets = trTableView(None) self.preset_reset() # -- Build Layout self.lay_head.addWidget(QtGui.QLabel('Value Presets:'), 0,0,1,8) self.lay_head.addWidget(self.btn_loadPreset, 1,0,1,4) self.lay_head.addWidget(self.btn_savePreset, 1,4,1,4) self.lay_head.addWidget(self.btn_addPreset, 2,0,1,2) self.lay_head.addWidget(self.btn_delPreset, 2,2,1,2) self.lay_head.addWidget(self.btn_resetPreset, 2,4,1,4) self.lay_head.addWidget(self.tab_presets, 3,0,5,8) self.lay_head.addWidget(QtGui.QLabel('Corner Actions:'),10, 0, 1, 8) self.lay_head.addWidget(self.btn_apply_round, 11, 0, 1, 2) self.lay_head.addWidget(self.btn_apply_mitre, 11, 2, 1, 2) self.lay_head.addWidget(self.btn_apply_overlap, 11, 4, 1, 2) self.lay_head.addWidget(self.btn_apply_trap, 11, 6, 1, 2) self.lay_head.addWidget(self.btn_rebuild, 12, 0, 1, 8) self.lay_head.addWidget(QtGui.QLabel('Smart Corner:'), 13,0,1,8) self.lay_head.addWidget(QtGui.QLabel('Builder: '), 14,0,1,1) self.lay_head.addWidget(self.edt_glyphName, 14,1,1,3) self.lay_head.addWidget(self.btn_getBuilder, 14,4,1,2) self.lay_head.addWidget(self.btn_findBuilder, 14,6,1,2) self.lay_head.addWidget(self.btn_remove_smartCorner, 15,0,1,4) self.lay_head.addWidget(self.btn_remove_presetCorner, 15,4,1,4) self.lay_head.addWidget(self.btn_apply_smartCorner, 16,0,1,8) self.addLayout(self.lay_head)
def __init__(self): super(typerig_filter, self).__init__() #self.setStyleSheet(ss_Toolbox_none) # - 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_ActiveLayer.setCheckState(QtCore.Qt.Checked) #self.chk_ActiveLayer.setStyleSheet('QCheckBox::indicator:checked {background-color: limegreen; border: 1px Solid limegreen;}') self.chk_ActiveLayer.stateChanged.connect(self.refreshLayers) self.chk_Masters.stateChanged.connect(self.refreshLayers) self.chk_Masks.stateChanged.connect(self.refreshLayers) self.chk_Service.stateChanged.connect(self.refreshLayers) self.refreshLayers() # - 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.refreshMode) self.rad_window.toggled.connect(self.refreshMode) self.rad_selection.toggled.connect(self.refreshMode) self.rad_font.toggled.connect(self.refreshMode) 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') # - Fold Button --------------------- 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_fold.clicked.connect(self.fold) self.btn_unfold.clicked.connect(self.fold) self.flag_fold = False # - Tabs -------------------------- # -- Dynamically load all tabs self.tabs = QtGui.QTabWidget() self.tabs.setTabPosition(QtGui.QTabWidget.East) # --- 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) # - 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) # -- 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.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(300, 300, 240, 440) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! #self.setMinimumWidth(300) self.show()
def __init__(self): super(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() layoutH = QtGui.QHBoxLayout() # - Build panel if sysReady: self.head = mixerHead() self.tail = mixerTail() self.head.btn_refresh.clicked.connect(self.refresh) self.head.btn_set_axis.clicked.connect(self.set_axis) self.head.btn_getVstem.clicked.connect(self.get_v_stems) self.head.btn_getHstem.clicked.connect(self.get_h_stems) layoutV.addLayout(self.head) layoutV.addSpacing(15) # -- Set Sliders # --- Mixer layoutV.addWidget(QtGui.QLabel('Interpolate: X (Vertical Stems)')) self.mixer_dx = trSliderCtrl('1', '1000', '0', 10) self.mixer_dx.sld_axis.valueChanged.connect( lambda: self.process_scale(self.head.chk_single.isChecked(), self.head.chk_preview.isChecked())) layoutV.addLayout(self.mixer_dx) layoutV.addWidget( QtGui.QLabel('Interpolate: Y (Horizontal Stems)')) self.mixer_dy = trSliderCtrl('1', '1000', '0', 10) self.mixer_dy.sld_axis.valueChanged.connect( lambda: self.process_scale(self.head.chk_single.isChecked(), self.head.chk_preview.isChecked())) layoutV.addLayout(self.mixer_dy) # - Constant width Button #self.btn_revWidth = QtGui.QPushButton('Constant width for weight') #self.btn_revWidth.setCheckable(True) #layoutV.addWidget(self.btn_revWidth) layoutV.addSpacing(15) # --- Scaler layoutV.addWidget(QtGui.QLabel('Compensative scaler: Width')) self.scaler_dx = trSliderCtrl('1', '200', '100', 10) self.scaler_dx.sld_axis.valueChanged.connect( lambda: self.process_scale(self.head.chk_single.isChecked(), self.head.chk_preview.isChecked())) layoutV.addLayout(self.scaler_dx) layoutV.addSpacing(15) layoutV.addWidget(QtGui.QLabel('Compensative scaler: Height')) self.scaler_dy = trSliderCtrl('1', '200', '100', 10) self.scaler_dy.sld_axis.valueChanged.connect( lambda: self.process_scale(self.head.chk_single.isChecked(), self.head.chk_preview.isChecked())) layoutV.addLayout(self.scaler_dy) layoutV.addSpacing(25) layoutV.addLayout(self.tail) # - Process Button self.btn_process = QtGui.QPushButton('Process Transformation') self.btn_process.clicked.connect(lambda: self.process_scale( self.head.chk_single.isChecked(), True, True)) layoutV.addWidget(self.btn_process) # -- Initialize self.refresh() # -- Finish layoutV.addStretch() else: # - Throw an error layoutV.addLayout(trMsgSimple(warnMessage)) # - Set panel self.setLayout(layoutV)