def __init__(self): super(TRImpEx, self).__init__() # - Interface # -- Layouts self.lay_base = QtGui.QGridLayout() self.plane_A = QtGui.QListWidget() self.plane_B = QtGui.QListWidget() self.plane_C = QtGui.QVBoxLayout() self.plane_A.setAlternatingRowColors(True) self.plane_B.setAlternatingRowColors(True) self.plane_A.addItems(sorted(impex_actions_db.keys())) self.plane_A.selectionModel().selectionChanged.connect( self.refresh_plane_B) self.plane_B.selectionModel().selectionChanged.connect(self.run_action) self.plane_C.addWidget( ImpexActions.action_empty()) # Set empty widget at start # - Build self.lay_base.addWidget(QtGui.QLabel('Import/Export type:'), 0, 1) self.lay_base.addWidget(QtGui.QLabel('Action:'), 0, 2) self.lay_base.addWidget(QtGui.QLabel('Options:'), 0, 3) self.lay_base.addWidget(self.plane_A, 1, 1) self.lay_base.addWidget(self.plane_B, 1, 2) self.lay_base.addLayout(self.plane_C, 1, 3) self.lay_base.setColumnStretch(1, 1) self.lay_base.setColumnStretch(2, 1) self.lay_base.setColumnStretch(3, 1) self.setLayout(self.lay_base)
def __init__(self, dlg_name, dlg_msg, dlg_field_t, dlg_field_b, dlg_size=(300, 300, 300, 100)): super(TR2FieldDLG, self).__init__() # - Init self.values = (None, None) # - Widgets self.lbl_main = QtGui.QLabel(dlg_msg) self.lbl_field_t = QtGui.QLabel(dlg_field_t) self.lbl_field_b = QtGui.QLabel(dlg_field_b) self.edt_field_t = QtGui.QLineEdit() # Top field self.edt_field_b = QtGui.QLineEdit() # Bottom field self.btn_ok = QtGui.QPushButton('OK', self) self.btn_cancel = QtGui.QPushButton('Cancel', self) self.btn_ok.clicked.connect(self.return_values) self.btn_cancel.clicked.connect(self.reject) # - Build main_layout = QtGui.QGridLayout() main_layout.addWidget(self.lbl_main, 0, 0, 1, 4) main_layout.addWidget(self.lbl_field_t, 1, 0, 1, 2) main_layout.addWidget(self.edt_field_t, 1, 2, 1, 2) main_layout.addWidget(self.lbl_field_b, 2, 0, 1, 2) main_layout.addWidget(self.edt_field_b, 2, 2, 1, 2) main_layout.addWidget(self.btn_ok, 3, 0, 1, 2) main_layout.addWidget(self.btn_cancel, 3, 2, 1, 2) # - Set self.setLayout(main_layout) self.setWindowTitle(dlg_name) self.setGeometry(*dlg_size) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) self.exec_()
def __init__(self, aux): super(TRLayerMultiEdit, self).__init__() # - Init self.aux = aux self.backup = {} self.contourClipboard = {} # -- Custom controls self.tr_trans_ctrl = TRTransformCtrl() # -- Quick Tool buttons self.lay_buttons = QtGui.QGridLayout() self.btn_transform = QtGui.QPushButton('Transform') self.btn_trans_res = QtGui.QPushButton('Reset') self.btn_transform.setToolTip('Affine transform selected layers.') self.btn_trans_res.setToolTip('Reset transformation fileds.') self.btn_transform.clicked.connect(self.layer_transform) self.btn_trans_res.clicked.connect(self.tr_trans_ctrl.reset) self.lay_buttons.addWidget(self.tr_trans_ctrl, 0, 0, 2, 8) self.lay_buttons.addWidget(self.btn_trans_res, 2, 0, 1, 4) self.lay_buttons.addWidget(self.btn_transform, 2, 4, 1, 4) self.tr_trans_ctrl.lay_controls.setMargin(0) self.addLayout(self.lay_buttons)
def __init__(self, aux): super(TRNewLayerBlend, self).__init__() # - Init self.aux = aux self.process_array = [] self.active_workspace = pWorkspace() self.active_canvas = self.active_workspace.getCanvas(True) # - Interface self.lay_buttons = QtGui.QGridLayout() self.chk_setAxis = QtGui.QPushButton('Set Axis') self.chk_swapAxis = QtGui.QPushButton('Swap') self.chk_setAxis.setCheckable(True) self.chk_swapAxis.setCheckable(True) self.chk_setAxis.clicked.connect(lambda: self.prepare_lerp()) # -- Blend active layer to single selected layer self.mixer_dx = TRSliderCtrl('1', '1000', '0', 1) self.mixer_dx.sld_axis.valueChanged.connect( lambda: self.process_lerp()) self.lay_buttons.addWidget(self.chk_setAxis, 0, 0, 1, 1) self.lay_buttons.addWidget(self.chk_swapAxis, 0, 1, 1, 1) self.addLayout(self.lay_buttons) self.addLayout(self.mixer_dx)
def __init__(self): super(typerig_Manager, self).__init__() #self.setStyleSheet(ss_Toolbox_none) # - Tabs -------------------------- # -- Dynamically load all tabs self.tabs = TRHTabWidget() # --- Load all tabs from this directory as modules. Check __init__.py # --- <dirName>.modules tabs/modules manifest in list format for toolName in Manager.modules: if ignorePanel not in toolName: self.tabs.addTab(eval('Manager.%s.tool_tab()' %toolName), toolName) # - Layouts ------------------------------- layoutV = QtGui.QVBoxLayout() layoutV.setContentsMargins(0,0,0,0) self.lay_layers = QtGui.QGridLayout() self.lay_layers.setContentsMargins(15,5,5,3) # -- Build layouts ------------------------------- layoutV.addWidget(self.tabs) # - Set Widget ------------------------------- self.setLayout(layoutV) self.setWindowTitle('%s %s' %(app_name, app_version)) self.setGeometry(300, 300, 900, 440) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! #self.setMinimumWidth(300) self.show()
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(TRTransformCtrl, self).__init__() # - Combos self.rad_or = QtGui.QRadioButton('ORG') self.rad_bl = QtGui.QRadioButton('BL') self.rad_tl = QtGui.QRadioButton('TL') self.rad_br = QtGui.QRadioButton('BR') self.rad_tr = QtGui.QRadioButton('TR') self.rad_ce = QtGui.QRadioButton('CEN') # - Spinboxes self.spb_scale_x = QtGui.QSpinBox() self.spb_scale_y = QtGui.QSpinBox() self.spb_translate_x = QtGui.QSpinBox() self.spb_translate_y = QtGui.QSpinBox() self.spb_shear = QtGui.QSpinBox() self.spb_rotate = QtGui.QSpinBox() self.spb_scale_x.setMinimum(0) self.spb_scale_y.setMinimum(0) self.spb_translate_x.setMinimum(-9999) self.spb_translate_y.setMinimum(-9999) self.spb_shear.setMinimum(-90) self.spb_rotate.setMinimum(-360) self.spb_scale_x.setMaximum(999) self.spb_scale_y.setMaximum(999) self.spb_translate_x.setMaximum(9999) self.spb_translate_y.setMaximum(9999) self.spb_shear.setMaximum(90) self.spb_rotate.setMaximum(360) self.reset() # - Build self.lay_controls = QtGui.QGridLayout() self.lay_controls.addWidget(QtGui.QLabel('Scale X:'), 0, 0, 1, 1) self.lay_controls.addWidget(QtGui.QLabel('Scale Y:'), 0, 1, 1, 1) self.lay_controls.addWidget(QtGui.QLabel('Trans. X:'), 0, 2, 1, 1) self.lay_controls.addWidget(QtGui.QLabel('Trans. Y:'), 0, 3, 1, 1) self.lay_controls.addWidget(QtGui.QLabel('Shear:'), 0, 4, 1, 1) self.lay_controls.addWidget(QtGui.QLabel('Rotate:'), 0, 5, 1, 1) self.lay_controls.addWidget(self.spb_scale_x, 1, 0, 1, 1) self.lay_controls.addWidget(self.spb_scale_y, 1, 1, 1, 1) self.lay_controls.addWidget(self.spb_translate_x, 1, 2, 1, 1) self.lay_controls.addWidget(self.spb_translate_y, 1, 3, 1, 1) self.lay_controls.addWidget(self.spb_shear, 1, 4, 1, 1) self.lay_controls.addWidget(self.spb_rotate, 1, 5, 1, 1) self.lay_controls.addWidget(self.rad_or, 2, 0, 1, 1) self.lay_controls.addWidget(self.rad_bl, 2, 1, 1, 1) self.lay_controls.addWidget(self.rad_tl, 2, 2, 1, 1) self.lay_controls.addWidget(self.rad_br, 2, 3, 1, 1) self.lay_controls.addWidget(self.rad_tr, 2, 4, 1, 1) self.lay_controls.addWidget(self.rad_ce, 2, 5, 1, 2) self.setLayout(self.lay_controls)
def __init__(self, parent, mode): super(dlg_LayerSelect, self).__init__() # - Init self.parent_widget = parent # - Basic Widgets self.tab_masters = TRTableView(table_dict) self.table_populate(mode) self.tab_masters.cellChanged.connect( lambda: self.parent_widget.layers_refresh()) # -- Buttons self.btn_tableCheck = QtGui.QPushButton('Select All') self.btn_tableCheckMasters = QtGui.QPushButton('Masters') self.btn_tableCheckMasks = QtGui.QPushButton('Masks') self.btn_tableCheckServices = QtGui.QPushButton('Services') self.btn_tableCheck.setToolTip( 'Click check all.\n<ALT> + Click uncheck all.') self.btn_tableCheckMasters.setToolTip( 'Click check all.\n<ALT> + Click uncheck all.') self.btn_tableCheckMasks.setToolTip( 'Click check all.\n<ALT> + Click uncheck all.') self.btn_tableCheckServices.setToolTip( 'Click check all.\n<ALT> + Click uncheck all.') if mode != 0: self.btn_tableCheckMasters.setEnabled(False) self.btn_tableCheckMasks.setEnabled(False) self.btn_tableCheckServices.setEnabled(False) self.btn_tableCheck.clicked.connect(lambda: self.table_check_all()) self.btn_tableCheckMasters.clicked.connect( lambda: self.table_check_all('Master')) self.btn_tableCheckMasks.clicked.connect( lambda: self.table_check_all('Mask')) self.btn_tableCheckServices.clicked.connect( lambda: self.table_check_all('Service')) # - Build layout layoutV = QtGui.QGridLayout() layoutV.addWidget(self.btn_tableCheck, 0, 0, 1, 2) layoutV.addWidget(self.btn_tableCheckMasters, 0, 2, 1, 2) layoutV.addWidget(self.btn_tableCheckMasks, 1, 0, 1, 2) layoutV.addWidget(self.btn_tableCheckServices, 1, 2, 1, 2) layoutV.addWidget(self.tab_masters, 2, 0, 20, 4) # - Set Widget self.setLayout(layoutV) self.setWindowTitle('%s %s | Select Layers' % (app_name, app_version)) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! self.setGeometry(500, 200, 300, 600)
def __init__(self): super(tool_tab, self).__init__() # - Init self.active_font = pFont() self.class_data = {} # - Widgets self.cmb_layer = QtGui.QComboBox() self.cmb_layer.addItems(['All masters'] + self.active_font.masters()) self.btn_loadFile = QtGui.QPushButton('From File') self.btn_loadFont = QtGui.QPushButton('From Font') self.btn_saveExpr = QtGui.QPushButton('Save') self.btn_loadExpr = QtGui.QPushButton('Load') self.btn_exec = QtGui.QPushButton('Execute') self.btn_help = QtGui.QPushButton('Help') self.btn_classKern = QtGui.QPushButton('Class Kerning') self.btn_classKern.setCheckable(True) self.btn_loadFile.setCheckable(True) self.btn_loadFont.setCheckable(True) self.btn_loadFile.setChecked(False) self.btn_loadFont.setChecked(False) self.btn_classKern.setChecked(True) self.btn_help.clicked.connect(lambda: QtGui.QMessageBox.information(None, 'Help', str_help)) self.btn_loadFile.clicked.connect(self.classes_fromFile) self.btn_loadFont.clicked.connect(self.classes_fromFont) self.btn_exec.clicked.connect(self.process) self.btn_saveExpr.clicked.connect(self.expr_toFile) self.btn_loadExpr.clicked.connect(self.expr_fromFile) self.txt_editor = QtGui.QPlainTextEdit() # - Build layouts layoutV = QtGui.QGridLayout() layoutV.addWidget(QtGui.QLabel('Class kerning data:'), 0, 0, 1, 4) layoutV.addWidget(self.btn_loadFont, 1, 0, 1, 2) layoutV.addWidget(self.btn_loadFile, 1, 2, 1, 2) layoutV.addWidget(QtGui.QLabel('Process:'), 2, 0, 1, 4) layoutV.addWidget(self.cmb_layer, 3, 0, 1, 2) layoutV.addWidget(self.btn_classKern, 3, 2, 1, 2) layoutV.addWidget(self.txt_editor, 5, 0, 30, 4) layoutV.addWidget(self.btn_saveExpr, 36, 0, 1, 2) layoutV.addWidget(self.btn_loadExpr, 36, 2, 1, 2) layoutV.addWidget(self.btn_help, 37, 0, 1, 2) layoutV.addWidget(self.btn_exec, 37, 2, 1, 2) # - Set Widget self.setLayout(layoutV)
def __init__(self): super(action_empty, self).__init__() # - Init self.active_font = None self.file_format = None # - Interface # ... # - Build lay_wgt = QtGui.QGridLayout() # ... self.setLayout(lay_wgt) print 'WARN:\t Action Not Implemented...'
def __init__(self): super(TRWLayerSelect, self).__init__() # - Init self.glyph = None # -- Head self.lay_head = QtGui.QHBoxLayout() self.edt_glyphName = QtGui.QLineEdit() self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_refresh.clicked.connect(self.refresh) self.lay_head.addWidget(QtGui.QLabel('G:')) self.lay_head.addWidget(self.edt_glyphName) self.lay_head.addWidget(self.btn_refresh) self.addLayout(self.lay_head) # -- Layer List self.lst_layers = TRWMasterTableView(init_table_dict) self.lst_layers.selectionModel().selectionChanged.connect( self.set_selected) self.addWidget(self.lst_layers) self.refresh() # - Mode checks self.lay_checks = QtGui.QGridLayout() self.chk_outline = QtGui.QCheckBox('Outline') self.chk_guides = QtGui.QCheckBox('Guides') self.chk_anchors = QtGui.QCheckBox('Anchors') self.chk_lsb = QtGui.QCheckBox('LSB') self.chk_adv = QtGui.QCheckBox('Advance') self.chk_rsb = QtGui.QCheckBox('RSB') # - Set States self.chk_outline.setCheckState(QtCore.Qt.Checked) self.chk_adv.setCheckState(QtCore.Qt.Checked) # -- Build self.lay_checks.addWidget(self.chk_outline, 0, 0) self.lay_checks.addWidget(self.chk_guides, 0, 1) self.lay_checks.addWidget(self.chk_anchors, 0, 2) self.lay_checks.addWidget(self.chk_lsb, 1, 0) self.lay_checks.addWidget(self.chk_adv, 1, 1) self.lay_checks.addWidget(self.chk_rsb, 1, 2) self.addLayout(self.lay_checks)
def __init__(self): super(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(TRContourSelect, self).__init__() # -- Init self.table_dict = {0: {0: None}} # Empty table self.layer_names = [] # Empty layer list 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.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, font=None, parent=None): super(TRGlyphSelect, self).__init__() # - Init self.active_font = font self.parentWgt = self.parent if parent is None else parent # - Widgets # -- Buttons self.btn_filter = QtGui.QPushButton('Refresh') self.btn_filter.clicked.connect(self.refresh) self.chk_glyphName = QtGui.QCheckBox('Name') self.chk_glyphMark = QtGui.QCheckBox('Mark') self.chk_glyphUnicode = QtGui.QCheckBox('Unicode') self.chk_glyphChecked = QtGui.QCheckBox('Check all') self.chk_glyphName.setChecked(True) self.chk_glyphMark.setChecked(True) self.chk_glyphUnicode.setChecked(True) self.chk_glyphChecked.setChecked(True) # -- Fileds self.edt_filter = QtGui.QLineEdit() self.edt_filter.setPlaceholderText('Filter glyphnames') self.edt_filter.textChanged.connect(self.__filterClicked) self.lst_glyphNames = QtGui.QListView(self.parentWgt) self.model = QtGui.QStandardItemModel(self.lst_glyphNames) if self.active_font is not None: self.refresh() # -- Build Layout self.layout = QtGui.QGridLayout() self.layout.addWidget(QtGui.QLabel('Destination Glyphs:'), 0,0,1,4) self.layout.addWidget(self.edt_filter, 1,0,1,3) self.layout.addWidget(self.btn_filter, 1,3,1,1) self.layout.addWidget(self.chk_glyphName, 2,0,1,1) self.layout.addWidget(self.chk_glyphUnicode, 2,1,1,1) self.layout.addWidget(self.chk_glyphMark, 2,2,1,1) self.layout.addWidget(self.chk_glyphChecked, 2,3,1,1) self.layout.addWidget(self.lst_glyphNames, 3,0,1,4)
def __init__(self, parentWidget): super(WFontMetrics, self).__init__() # - Init self.grid = QtGui.QGridLayout() self.upperWidget = parentWidget self.activeFont = pFont() self.metricData = {} self.refresh() # - 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(typerig_Panel, self).__init__() # - Init ---------------------------- #self.setStyleSheet(ss_Toolbox_none) self.layers_selected = [] # - Dialogs ------------------------- self.layer_dialog = dlg_LayerSelect(self, pMode) # - Layers -------------------------- self.chk_ActiveLayer = QtGui.QCheckBox('Active') self.chk_Masters = QtGui.QCheckBox('Masters') self.chk_Masks = QtGui.QCheckBox('Masks') self.chk_Service = QtGui.QCheckBox('Services') self.chk_Selected = QtGui.QCheckBox('Selected') self.chk_ActiveLayer.setCheckState(QtCore.Qt.Checked) self.chk_ActiveLayer.stateChanged.connect(self.layers_refresh) self.chk_Masters.stateChanged.connect(self.layers_refresh) self.chk_Masks.stateChanged.connect(self.layers_refresh) self.chk_Service.stateChanged.connect(self.layers_refresh) self.chk_Selected.stateChanged.connect(self.layers_refresh) self.layers_refresh() # - Glyphs -------------------------- self.rad_glyph = QtGui.QRadioButton('Glyph') self.rad_window = QtGui.QRadioButton('Window') self.rad_selection = QtGui.QRadioButton('Selection') self.rad_font = QtGui.QRadioButton('Font') self.rad_glyph.toggled.connect(self.mode_refresh) self.rad_window.toggled.connect(self.mode_refresh) self.rad_selection.toggled.connect(self.mode_refresh) self.rad_font.toggled.connect(self.mode_refresh) self.rad_glyph.setChecked(True) self.rad_glyph.setEnabled(True) self.rad_window.setEnabled(True) self.rad_selection.setEnabled(True) self.rad_font.setEnabled(False) self.rad_glyph.setToolTip('Affect current glyph') self.rad_window.setToolTip('Affect glyphs in active window') self.rad_selection.setToolTip('Affect selected glyphs') self.rad_font.setToolTip('Affect the entire font') # - Buttons ------------------------ self.btn_layersSelect = QtGui.QPushButton('Layers') self.btn_fold = QtGui.QPushButton('^') self.btn_unfold = QtGui.QPushButton('Restore Panel') self.btn_fold.setFixedHeight(self.chk_ActiveLayer.sizeHint.height() * 2.5) self.btn_fold.setFixedWidth(self.chk_ActiveLayer.sizeHint.height()) self.btn_unfold.setFixedHeight(self.chk_ActiveLayer.sizeHint.height() + 5) self.btn_fold.setToolTip('Fold Panel.') self.btn_unfold.setToolTip('Unfold Panel.') self.btn_layersSelect.setToolTip('Select layers for processing.') self.btn_fold.clicked.connect(self.fold) self.btn_unfold.clicked.connect(self.fold) self.flag_fold = False # - Tabs -------------------------- panel_vers = { n: OrderedDict([('Panel', toolName), ('Version', eval('Panel.%s.app_version' % toolName))]) for n, toolName in enumerate(Panel.modules) } self.options = TRTableView(panel_vers) self.options.verticalHeader().hide() # -- Dynamically load all tabs self.tabs = TRVTabWidget() # --- Load all tabs from this directory as modules. Check __init__.py # --- <dirName>.modules tabs/modules manifest in list format for toolName in Panel.modules: if ignorePanel not in toolName: self.tabs.addTab(eval('Panel.%s.tool_tab()' % toolName), toolName) # --- Add options tab self.tabs.addTab(self.options, '...') # - Layouts ------------------------------- layoutV = QtGui.QVBoxLayout() layoutV.setContentsMargins(0, 0, 0, 0) self.lay_controller = QtGui.QGridLayout() self.fr_controller = QtGui.QFrame() self.lay_controller.setContentsMargins(15, 5, 5, 3) self.lay_controller.setSpacing(5) # -- Build layouts ------------------------------- self.lay_controller.addWidget(self.chk_ActiveLayer, 0, 0, 1, 1) self.lay_controller.addWidget(self.chk_Masters, 0, 1, 1, 1) self.lay_controller.addWidget(self.chk_Masks, 0, 2, 1, 1) #self.lay_controller.addWidget(self.chk_Service, 0, 3, 1, 1) self.lay_controller.addWidget(self.chk_Selected, 0, 3, 1, 1) self.lay_controller.addWidget(self.btn_fold, 0, 4, 2, 1) self.lay_controller.addWidget(self.rad_glyph, 1, 0, 1, 1) self.lay_controller.addWidget(self.rad_window, 1, 1, 1, 1) self.lay_controller.addWidget(self.rad_selection, 1, 2, 1, 1) self.lay_controller.addWidget(self.rad_font, 1, 3, 1, 1) layoutV.addWidget(self.btn_unfold) self.fr_controller.setLayout(self.lay_controller) layoutV.addWidget(self.fr_controller) layoutV.addWidget(self.tabs) self.btn_unfold.hide() # - Set Widget ------------------------------- self.setLayout(layoutV) self.setWindowTitle('%s %s' % (app_name, app_version)) self.setGeometry(100, 100, 300, 600) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! # !!! Hotfix FL7 7355 self.setMinimumSize(330, self.sizeHint.height()) self.show()
def __init__(self, parentWidget): super(WKernGroups, self).__init__() # - Init self.upper_widget = parentWidget self.active_font = pFont() self.application = pWorkspace() self.data_fontKerning = None self.data_clipboard = [] # - Interface ------------------------- # -- Conditional formatting ----------- self.edt_formatting = QtGui.QLineEdit() self.edt_formatting.setPlaceholderText('Conditional formatting example: red==None; green > 0; blue < 0; yellow => 100;!hide<-50; !show==30;') self.btn_formatting_apply = QtGui.QPushButton('Format') self.btn_formatting_clear = QtGui.QPushButton('Clear') self.btn_formatting_color = QtGui.QPushButton('>') self.btn_formatting_color.setMaximumWidth(20) self.btn_formatting_color.clicked.connect(lambda: self.edt_formatting.setText(self.edt_formatting.text + self.cmb_select_color.currentText)) self.btn_formatting_apply.clicked.connect(lambda: self.update_table_format(False)) self.btn_formatting_clear.clicked.connect(lambda: self.update_table_format(True)) self.cmb_select_color = QtGui.QComboBox() colorNames = QtGui.QColor.colorNames() for i in range(len(colorNames)): self.cmb_select_color.addItem(colorNames[i]) self.cmb_select_color.setItemData(i, QtGui.QColor(colorNames[i]), QtCore.Qt.DecorationRole) self.cmb_select_color.setCurrentIndex(colorNames.index('red')) # -- Cell highlighter and search ------ self.edt_search_pair = QtGui.QLineEdit() self.edt_search_regex = QtGui.QLineEdit() self.edt_search_pair.setPlaceholderText('Pair search example: A|V; @O|@A; Where A|V plain pair and @O|@A classes containing O and A.') self.edt_search_regex.setPlaceholderText('RegEx search example: .*.O.*.A.*; Note: Pair source is [space] separated!') self.btn_search_pair_under = QtGui.QPushButton('Current Pair') self.btn_search_pair = QtGui.QPushButton('Find Pairs') self.btn_search_regex = QtGui.QPushButton('Find RegEx') self.btn_search_hide = QtGui.QPushButton('Hide others') self.btn_search_hide.setCheckable(True) self.btn_search_hide.clicked.connect(lambda: self.update_table_show_all()) self.btn_search_pair_under.clicked.connect(lambda: self.update_table_hightlights(False)) self.btn_search_pair.clicked.connect(lambda: self.update_table_hightlights(True)) self.btn_search_regex.clicked.connect(lambda: self.update_table_regex()) # -- Table ---------------------------- self.btn_fontKerning_autoupdate = QtGui.QPushButton('Auto Update') self.btn_fontKerning_preview = QtGui.QPushButton('Preview pairs') self.btn_layer_preview = QtGui.QPushButton('Preview layers') self.btn_fontKerning_update = QtGui.QPushButton('Update Font') self.tab_fontKerning = KernTableWidget(self) self.btn_fontKerning_autoupdate.setCheckable(True) self.btn_fontKerning_preview.setCheckable(True) self.btn_layer_preview.setCheckable(True) self.btn_fontKerning_autoupdate.setChecked(True) self.btn_fontKerning_update.clicked.connect(lambda: self.update_font()) # - Menus & Actions -------------------- # -- Main Database actions self.menu_data = QtGui.QMenu('Kerning Data', self) act_data_import = QtGui.QAction('Import Kerning', self) act_data_export = QtGui.QAction('Export Kerning', self) act_data_font = QtGui.QAction('Load from Font', self) act_data_reset = QtGui.QAction('Reset Font Kerning Data', self) act_data_import.setEnabled(False) act_data_export.setEnabled(False) self.menu_data.addAction(act_data_font) self.menu_data.addSeparator() self.menu_data.addAction(act_data_import) self.menu_data.addAction(act_data_export) self.menu_data.addSeparator() self.menu_data.addSeparator() self.menu_data.addAction(act_data_reset) #act_data_import.triggered.connect(lambda: self.file_load_groups(True)) #act_data_export.triggered.connect(lambda: self.file_export_groups(True)) act_data_font.triggered.connect(lambda: self.kerning_from_font()) act_data_reset.triggered.connect(lambda: self.kerning_reset()) # -- Pairs self.menu_pair = QtGui.QMenu('Pairs', self) act_pair_add = QtGui.QAction('Add new pair', self) act_pair_del = QtGui.QAction('Remove pair', self) act_pair_update = QtGui.QAction('Update from Font', self) act_pair_copy = QtGui.QAction('Copy value(s)', self) act_pair_paste = QtGui.QAction('Paste value(s)', self) act_pair_copy_string = QtGui.QAction('Copy pairs string', self) act_pair_copy_leader = QtGui.QAction('Copy pairs string as Glyph Names', self) act_pair_save_krn_clas = QtGui.QAction('Save CLASS pairs as KRN...', self) act_pair_save_krn_plain = QtGui.QAction('Save PLAIN pairs as KRN...', self) self.menu_pair.addAction(act_pair_add) self.menu_pair.addAction(act_pair_del) self.menu_pair.addAction(act_pair_update) self.menu_pair.addSeparator() self.menu_pair.addAction(act_pair_copy) self.menu_pair.addAction(act_pair_paste) self.menu_pair.addSeparator() self.menu_pair.addAction(act_pair_copy_string) self.menu_pair.addAction(act_pair_copy_leader) self.menu_pair.addSeparator() self.menu_pair.addAction(act_pair_save_krn_clas) self.menu_pair.addAction(act_pair_save_krn_plain) act_pair_add.setEnabled(False) #act_pair_add.triggered.connect(lambda: self.pair_add()) act_pair_del.triggered.connect(lambda: self.pair_del()) act_pair_update.triggered.connect(lambda: self.pair_update_from_source()) act_pair_copy.triggered.connect(lambda: self.pair_copy_paste(False)) act_pair_paste.triggered.connect(lambda: self.pair_copy_paste(True)) act_pair_copy_string.triggered.connect(lambda: self.pair_copy_string(False)) act_pair_copy_leader.triggered.connect(lambda: self.pair_copy_string(True)) act_pair_save_krn_clas.triggered.connect(lambda: self.pair_save_krn(False)) act_pair_save_krn_plain.triggered.connect(lambda: self.pair_save_krn(True)) # -- Tools self.menu_tools = QtGui.QMenu('Tools', self) act_tools_fl_extend = QtGui.QAction('Extend Kerning', self) act_tools_fl_match = QtGui.QAction('Match Kerning', self) act_tools_tr_replace = QtGui.QAction('Find && Replace', self) act_tools_tr_round = QtGui.QAction('Quantize', self) act_tools_tr_scale = QtGui.QAction('Scale', self) act_tools_tr_filter = QtGui.QAction('Filter', self) # High-pass, low-pass, band-pass act_tools_tr_clean = QtGui.QAction('Cleanup', self) act_tools_tr_patchboard = QtGui.QAction('Patchboard', self) self.menu_tools.addAction(act_tools_fl_extend) self.menu_tools.addAction(act_tools_fl_match) self.menu_tools.addSeparator() self.menu_tools.addAction(act_tools_tr_replace) self.menu_tools.addSeparator() self.menu_tools.addAction(act_tools_tr_round) self.menu_tools.addAction(act_tools_tr_scale) self.menu_tools.addAction(act_tools_tr_filter) self.menu_tools.addAction(act_tools_tr_clean) self.menu_tools.addSeparator() self.menu_tools.addAction(act_tools_tr_patchboard) act_tools_fl_extend.setEnabled(False) act_tools_fl_match.setEnabled(False) act_tools_tr_round.setEnabled(False) act_tools_tr_scale.setEnabled(False) act_tools_tr_filter.setEnabled(False) act_tools_tr_clean.setEnabled(False) act_tools_tr_patchboard.setEnabled(False) act_tools_tr_replace.triggered.connect(lambda: self.tools_replace()) # -- View self.menu_view = QtGui.QMenu('View', self) act_view_show_all = QtGui.QAction('Show hidden rows', self) act_view_hide_selected = QtGui.QAction('Hide selected rows', self) act_view_hide_matching = QtGui.QAction('Hide matching pairs', self) act_view_hide_nonmatching = QtGui.QAction('Hide non-matching pairs', self) act_view_pair_preview = QtGui.QAction('Preview selected pairs', self) self.menu_view.addAction(act_view_show_all) self.menu_view.addAction(act_view_pair_preview) self.menu_view.addSeparator() self.menu_view.addAction(act_view_hide_selected) self.menu_view.addAction(act_view_hide_matching) self.menu_view.addAction(act_view_hide_nonmatching) act_view_pair_preview.triggered.connect(lambda: self.pair_preview_string(self.btn_layer_preview.isChecked())) act_view_show_all.triggered.connect(lambda: self.update_table_show_all()) act_view_hide_selected.triggered.connect(lambda: self.update_table_hide_selected()) act_view_hide_matching.triggered.connect(lambda: self.update_table_hide_matching(True)) act_view_hide_nonmatching.triggered.connect(lambda: self.update_table_hide_matching(False)) # -- Status bar self.lbl_status_selection_len = QtGui.QLabel('0') self.lbl_status_selection_med = QtGui.QLabel('0') self.lbl_status_pairs_len = QtGui.QLabel('0') self.lbl_status_pairs_hidden = QtGui.QLabel('0') self.lbl_status_masters_len = QtGui.QLabel('0') # -- MACOS buttons menu self.btn_mac_data_import = QtGui.QPushButton('Import') self.btn_mac_data_export = QtGui.QPushButton('Export') self.btn_mac_data_font = QtGui.QPushButton('From Font') self.btn_mac_data_reset = QtGui.QPushButton('Reset Kerning') self.btn_mac_data_import.setEnabled(False) self.btn_mac_data_export.setEnabled(False) self.btn_mac_data_font.clicked.connect(lambda: self.kerning_from_font()) # - Build ------------------------------------------ self.lay_grid = QtGui.QGridLayout() # -- MAC buttons if system() == 'Darwin': self.lay_grid.addWidget(self.btn_mac_data_font, 0, 0, 1, 10) self.lay_grid.addWidget(self.btn_mac_data_import, 0, 10, 1, 5) self.lay_grid.addWidget(self.btn_mac_data_export, 0, 15, 1, 5) self.lay_grid.addWidget(self.btn_mac_data_reset, 0, 20, 1, 5) # -- Regular interface self.lay_grid.addWidget(self.edt_search_pair, 1, 0, 1, 20) self.lay_grid.addWidget(self.btn_search_pair, 1, 20, 1, 5) self.lay_grid.addWidget(self.btn_search_pair_under, 1, 25, 1, 5) self.lay_grid.addWidget(self.btn_fontKerning_preview, 1, 30, 1, 5) self.lay_grid.addWidget(self.btn_search_hide, 2, 25, 1, 5) self.lay_grid.addWidget(self.btn_layer_preview, 2, 30, 1, 5) self.lay_grid.addWidget(self.edt_search_regex, 2, 0, 1, 20) self.lay_grid.addWidget(self.btn_search_regex, 2, 20, 1, 5) self.lay_grid.addWidget(self.btn_fontKerning_autoupdate, 1, 35, 1, 5) self.lay_grid.addWidget(self.btn_fontKerning_update, 2, 35, 1, 5) self.lay_grid.addWidget(self.tab_fontKerning, 4, 0, 32, 40) self.lay_grid.addWidget(self.cmb_select_color, 36, 0, 1, 5) self.lay_grid.addWidget(self.btn_formatting_color, 36, 5, 1, 1) self.lay_grid.addWidget(self.edt_formatting, 36, 6, 1, 24) self.lay_grid.addWidget(self.btn_formatting_apply, 36, 30, 1, 5) self.lay_grid.addWidget(self.btn_formatting_clear, 36, 35, 1, 5) self.lay_grid.addWidget(self.btn_formatting_clear, 36, 35, 1, 5) self.lay_grid.addWidget(QtGui.QLabel('SELECTION:'), 37, 0, 1, 4) self.lay_grid.addWidget(self.lbl_status_selection_len, 37, 4, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('MEAN:'), 37, 8, 1, 4) self.lay_grid.addWidget(self.lbl_status_selection_med, 37, 12, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('PAIRS:'), 37, 16, 1, 4) self.lay_grid.addWidget(self.lbl_status_pairs_len, 37, 20, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('HIDDEN:'), 37, 24, 1, 4) self.lay_grid.addWidget(self.lbl_status_pairs_hidden, 37, 28, 1, 4) self.lay_grid.addWidget(QtGui.QLabel('MASTERS:'), 37, 32, 1, 4) self.lay_grid.addWidget(self.lbl_status_masters_len, 37, 36, 1, 4) self.lay_grid.setSpacing(3) self.setLayout(self.lay_grid)
def __init__(self): super(SGPreflight, self).__init__() # - Init temp = pGlyph() self.active_font = pFont() layer_names = [ layer.name for layer in temp.layers() if '#' not in layer.name ] # - Automat self.auto_fl = Automat() # - Widgets # - Combo Boxes self.cmb_select_color = QtGui.QComboBox() self.color_codes = { name: value for name, value, discard in fontMarkColors } for i in range(len(fontMarkColors)): self.cmb_select_color.addItem(fontMarkColors[i][0]) self.cmb_select_color.setItemData( i, QtGui.QColor(fontMarkColors[i][2]), QtCore.Qt.DecorationRole) # -- Boxes self.box_preflight = QtGui.QGroupBox('Font Preflight:') self.box_audit = QtGui.QGroupBox('Font Audit:') # -- Progress bar self.progress = QtGui.QProgressBar() self.progress.setMaximum(100) # -- Report Tree self.audit_report = OrderedDict(empty_record) self.header_names = ['Glyph', 'Layers'] self.audit_tree = TRWAuditTree(self.audit_report, self.header_names) self.audit_tree.selectionModel().selectionChanged.connect( self.auto_preview) # -- Action Buttons # --- Preflight self.btn_preflight_info = QtGui.QPushButton('Edit Font Info') self.btn_preflight_audit = QtGui.QPushButton('Audit Font') self.btn_preflight_clean = QtGui.QPushButton( 'Cleanup auto layers, unused tags and labels') self.btn_preflight_clean_flag = QtGui.QPushButton( 'Remove glyphs marked with:') self.btn_preflight_actions = QtGui.QPushButton('Open Actions') self.btn_preflight_save = QtGui.QPushButton('Save Font') self.btn_preflight_export = QtGui.QPushButton('Export Font') self.btn_preflight_info.clicked.connect( lambda n: self.auto_fl.run('Font_Info')) self.btn_preflight_actions.clicked.connect( lambda n: self.auto_fl.run('Action')) self.btn_preflight_save.clicked.connect( lambda n: self.auto_fl.run('SaveFontAs')) self.btn_preflight_export.clicked.connect( lambda n: self.auto_fl.run('Export_Fonts')) self.btn_preflight_clean.clicked.connect( lambda: self.process_cleanup(mode='auto')) self.btn_preflight_clean_flag.clicked.connect( lambda: self.process_cleanup(mode='temp')) # --- Audit self.btn_audit_reset = QtGui.QPushButton('Reset Record') self.btn_audit_select = QtGui.QPushButton('Auto Select Glyphs') self.btn_audit_select.setCheckable(True) self.btn_audit_select.setChecked(False) self.btn_preflight_audit.clicked.connect(self.process_audit) self.btn_audit_reset.clicked.connect(self.reset) # - Build Layout lay_main = QtGui.QVBoxLayout() lay_preflight = QtGui.QGridLayout() lay_preflight.addWidget(QtGui.QLabel('1: Update font info: version.'), 0, 0, 1, 4) lay_preflight.addWidget(self.btn_preflight_info, 1, 0, 1, 4) lay_preflight.addWidget( QtGui.QLabel('2: Audit Font for known glyph problems.'), 2, 0, 1, 4) lay_preflight.addWidget(self.btn_preflight_audit, 3, 0, 1, 4) lay_preflight.addWidget(QtGui.QLabel('3: Cleanup Font:'), 4, 0, 1, 4) lay_preflight.addWidget(self.btn_preflight_clean, 5, 0, 1, 4) lay_preflight.addWidget(self.btn_preflight_clean_flag, 7, 0, 1, 2) lay_preflight.addWidget(self.cmb_select_color, 7, 2, 1, 2) lay_preflight.addWidget( QtGui.QLabel( '4: All glyphs/masters: Apply rounding; Decompose; Convert to TT curves.' ), 8, 0, 1, 4) lay_preflight.addWidget(self.btn_preflight_actions, 9, 0, 1, 4) lay_preflight.addWidget(QtGui.QLabel('5: Save your work.'), 10, 0, 1, 4) lay_preflight.addWidget(self.btn_preflight_save, 11, 0, 1, 4) lay_preflight.addWidget(QtGui.QLabel('6: Export fonts.'), 12, 0, 1, 4) lay_preflight.addWidget(self.btn_preflight_export, 13, 0, 1, 4) self.box_preflight.setLayout(lay_preflight) lay_audit = QtGui.QGridLayout() lay_audit.addWidget(self.btn_audit_select, 0, 6, 1, 3) lay_audit.addWidget(self.btn_audit_reset, 0, 9, 1, 3) lay_audit.addWidget(QtGui.QLabel('Audit Report:'), 1, 6, 1, 6) lay_audit.addWidget(self.audit_tree, 2, 6, 20, 6) self.box_audit.setLayout(lay_audit) lay_split = QtGui.QHBoxLayout() lay_split.addWidget(self.box_preflight) lay_split.addWidget(self.box_audit) lay_main.addLayout(lay_split) lay_main.addWidget(self.progress) self.setLayout(lay_main) # - Finish self.setMinimumSize(300, self.sizeHint.height())
def __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 __init__(self, parentWidget): super(WKernGroups, self).__init__() # - Init self.upper_widget = parentWidget self.active_font = pFont() self.kern_group_data = {} #self.active_font.kerning_groups_to_dict() # - Interface lbl_name = QtGui.QLabel('Kerning classes') lbl_act = QtGui.QLabel('Actions (selected items):') lbl_name.setMaximumHeight(20) lbl_act.setMaximumHeight(20) self.cmb_layer = QtGui.QComboBox() self.cmb_layer.addItems(self.active_font.masters()) self.cmb_layer.currentIndexChanged.connect( lambda: self.update_data(self.kern_group_data)) self.btn_apply = QtGui.QPushButton('Apply changes') self.btn_write = QtGui.QPushButton('Write changes') self.btn_reset = QtGui.QPushButton('Clear Font classes') self.btn_apply.clicked.connect(lambda: self.apply_changes(False)) self.btn_write.clicked.connect(lambda: self.apply_changes(True)) self.btn_reset.clicked.connect(lambda: self.reset_classes()) self.tab_groupKern = GroupTableView() # - Menus & Actions # -- Main Database actions self.menu_data = QtGui.QMenu('Class Data', self) act_data_open = QtGui.QAction('Open TypeRig Classes (JSON)', self) act_data_save = QtGui.QAction('Save TypeRig Classes (JSON)', self) act_data_import = QtGui.QAction('Import FontLab Classes (JSON)', self) act_data_export = QtGui.QAction('Export FontLab Classes (JSON)', self) act_data_import_font = QtGui.QAction('Load Classes from Font', self) act_data_build_composite = QtGui.QAction('Auto Build Classes', self) act_data_reset = QtGui.QAction('Reset Font Class Data', self) act_data_write = QtGui.QAction('Write class data to Font', self) self.menu_data.addAction(act_data_import_font) self.menu_data.addAction(act_data_build_composite) self.menu_data.addSeparator() self.menu_data.addAction(act_data_open) self.menu_data.addAction(act_data_save) self.menu_data.addSeparator() self.menu_data.addAction(act_data_import) self.menu_data.addAction(act_data_export) self.menu_data.addSeparator() self.menu_data.addAction(act_data_reset) self.menu_data.addAction(act_data_write) act_data_open.triggered.connect(lambda: self.file_load_groups(True)) act_data_save.triggered.connect(lambda: self.file_save_groups(True)) act_data_import.triggered.connect(lambda: self.file_load_groups(False)) #act_data_export.triggered.connect() act_data_import_font.triggered.connect(lambda: self.from_font()) act_data_build_composite.triggered.connect( lambda: self.from_composites()) act_data_reset.triggered.connect(lambda: self.reset_classes()) act_data_write.triggered.connect(lambda: self.apply_changes(True)) # -- Main Class actions self.menu_class = QtGui.QMenu('Class Management', self) act_class_add = QtGui.QAction('Add new class', self) act_class_find = QtGui.QAction('Find and replace class names', self) act_class_copy = QtGui.QAction('Duplicate classes', self) act_class_merge = QtGui.QAction('Merge classes to new', self) act_class_mdel = QtGui.QAction('Merge and remove classes', self) act_class_del = QtGui.QAction('Remove classes', self) act_class_prefix = QtGui.QAction('Add prefix to class name', self) self.menu_class.addAction(act_class_add) self.menu_class.addAction(act_class_find) self.menu_class.addAction(act_class_copy) self.menu_class.addAction(act_class_merge) self.menu_class.addAction(act_class_prefix) self.menu_class.addAction(act_class_mdel) self.menu_class.addAction(act_class_del) act_class_add.triggered.connect(lambda: self.class_add_new()) act_class_find.triggered.connect(lambda: self.class_find_replace()) act_class_copy.triggered.connect(lambda: self.class_copy()) act_class_merge.triggered.connect(lambda: self.class_merge(False)) act_class_mdel.triggered.connect(lambda: self.class_merge(True)) act_class_del.triggered.connect(lambda: self.class_del()) act_class_prefix.triggered.connect(lambda: self.class_prefix()) # -- Change class type self.menu_type = QtGui.QMenu('Class Type', self) act_type_Left = QtGui.QAction('Set KernLeft (1st)', self) act_type_Right = QtGui.QAction('Set KernRight (2nd)', self) act_type_Both = QtGui.QAction('Set KernBothSide (1st and 2nd)', self) act_type_toggle = QtGui.QAction('Toggle class type', self) act_type_Left.triggered.connect(lambda: self.set_type('KernLeft')) act_type_Right.triggered.connect(lambda: self.set_type('KernRight')) act_type_Both.triggered.connect(lambda: self.set_type('KernBothSide')) act_type_toggle.triggered.connect(lambda: self.toggle_type()) self.menu_type.addAction(act_type_Left) self.menu_type.addAction(act_type_Right) self.menu_type.addAction(act_type_Both) self.menu_type.addAction(act_type_toggle) # -- Modify Members self.menu_memb = QtGui.QMenu('Class Members', self) act_memb_sel = QtGui.QAction('Select Glyphs', self) act_memb_clean = QtGui.QAction('Cleanup', self) act_memb_upper = QtGui.QAction('Members to uppercase', self) act_memb_lower = QtGui.QAction('Members to lowercase', self) act_memb_strip = QtGui.QAction('Strip member suffixes', self) act_memb_suff = QtGui.QAction('Add suffix to members', self) act_memb_addglyphs = QtGui.QAction('Selected glyphs to members', self) act_memb_sel.triggered.connect(lambda: self.memb_select()) act_memb_clean.triggered.connect(lambda: self.memb_cleanup()) act_memb_upper.triggered.connect(lambda: self.memb_change_case(True)) act_memb_lower.triggered.connect(lambda: self.memb_change_case(False)) act_memb_strip.triggered.connect(lambda: self.memb_stripSuffix()) act_memb_suff.triggered.connect(lambda: self.memb_addSuffix()) act_memb_addglyphs.triggered.connect(lambda: self.memb_addGlyphs()) self.menu_memb.addAction(act_memb_sel) self.menu_memb.addAction(act_memb_clean) self.menu_memb.addAction(act_memb_upper) self.menu_memb.addAction(act_memb_lower) self.menu_memb.addAction(act_memb_strip) self.menu_memb.addAction(act_memb_suff) self.menu_memb.addAction(act_memb_addglyphs) # -- MACOS buttons menu self.btn_mac_data_open = QtGui.QPushButton('Open') self.btn_mac_data_save = QtGui.QPushButton('Save') self.btn_mac_data_import = QtGui.QPushButton('Import') self.btn_mac_data_export = QtGui.QPushButton('Export') self.btn_mac_data_import_font = QtGui.QPushButton('From Font') self.btn_mac_data_build_composite = QtGui.QPushButton( 'Auto Build Classes') self.btn_mac_data_open.clicked.connect( lambda: self.file_load_groups(True)) self.btn_mac_data_save.clicked.connect( lambda: self.file_save_groups(True)) self.btn_mac_data_import.clicked.connect( lambda: self.file_load_groups(False)) #self.btn_mac_data_export.clicked.connect() self.btn_mac_data_import_font.clicked.connect(lambda: self.from_font()) self.btn_mac_data_build_composite.clicked.connect( lambda: self.from_composites()) # - Table auto preview selection self.chk_preview = QtGui.QCheckBox('Auto select/preview class.') self.tab_groupKern.selectionModel().selectionChanged.connect( lambda: self.auto_preview()) # - Build self.lay_grid = QtGui.QGridLayout() self.lay_grid.addWidget(lbl_name, 0, 0, 1, 42) self.lay_grid.addWidget(QtGui.QLabel('Master:'), 0, 40, 1, 2) self.lay_grid.addWidget(self.cmb_layer, 0, 42, 1, 6) self.lay_grid.addWidget(self.tab_groupKern, 1, 0, 11, 42) self.lay_grid.addWidget(self.btn_apply, 1, 42, 1, 6) self.lay_grid.addWidget(self.chk_preview, 2, 42, 1, 6) # -- MAC buttons if system() == 'Darwin': self.lay_grid.addWidget(self.btn_mac_data_open, 4, 42, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_save, 4, 45, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_import, 5, 42, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_export, 5, 45, 1, 3) self.lay_grid.addWidget(self.btn_mac_data_import_font, 6, 42, 1, 6) self.lay_grid.addWidget(self.btn_mac_data_build_composite, 8, 42, 1, 6) self.lay_grid.addWidget(self.btn_reset, 10, 42, 1, 6) self.lay_grid.addWidget(self.btn_write, 11, 42, 1, 6) self.setLayout(self.lay_grid)
def __init__(self): super(tool_tab, self).__init__() # - Init temp = pGlyph() self.active_font = pFont() layer_names = [layer.name for layer in temp.layers() if '#' not in layer.name] # - Widgets # -- Progress bar self.progress = QtGui.QProgressBar() self.progress.setMaximum(100) # -- Report Tree self.audit_report = OrderedDict(empty_record) self.header_names = ['Glyph', 'Layers'] self.audit_tree = TRWAuditTree(self.audit_report, self.header_names) self.audit_tree.selectionModel().selectionChanged.connect(self.auto_preview) # -- Test List temp_audit_glyph = auditGlyph(temp.fg, self.active_font.fg, self.audit_report) audit_tests = [test.replace('_', ' ').replace('audit', '').title() for test in temp_audit_glyph.get_all_tests()] self.audit_list = QtGui.QListWidget() self.audit_list.setAlternatingRowColors(True) self.audit_list.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.audit_list.addItems(audit_tests) # -- Audit Options self.cmb_layers = CheckableComboBox() self.cmb_layers.addItems(['All Masters'] + layer_names) self.cmb_reference = QtGui.QComboBox() self.cmb_reference.addItems(layer_names) if 'Regular' in layer_names: self.cmb_reference.setCurrentIndex(layer_names.index('Regular')) # -- Action Buttons self.btn_audit_run = QtGui.QPushButton('Process Entire Font') self.btn_audit_glyphs = QtGui.QPushButton('Process Glyph Selection') self.btn_audit_tests = QtGui.QPushButton('Selected tests only') self.btn_audit_reset = QtGui.QPushButton('Reset Record') self.btn_audit_save = QtGui.QPushButton('Save Record') self.btn_audit_select = QtGui.QPushButton('Auto Select Glyphs') self.btn_select_cheked = QtGui.QPushButton('Select Checked Glyphs') self.btn_audit_select.setCheckable(True) self.btn_audit_tests.setCheckable(True) self.btn_audit_select.setChecked(False) self.btn_audit_tests.setChecked(True) self.btn_audit_run.clicked.connect(lambda: self.process_audit(False)) self.btn_audit_glyphs.clicked.connect(lambda: self.process_audit(True)) self.btn_select_cheked.clicked.connect(lambda: self.selected_preview()) self.btn_audit_reset.clicked.connect(self.reset) self.btn_audit_save.clicked.connect(self.save_audit) # - Build Layout lay_main = QtGui.QVBoxLayout() lay_audit = QtGui.QGridLayout() lay_audit.addWidget(self.btn_audit_tests, 0, 0, 1, 2) lay_audit.addWidget(self.btn_audit_select, 0, 2, 1, 2) lay_audit.addWidget(self.btn_select_cheked, 0, 4, 1, 2) lay_audit.addWidget(self.btn_audit_save, 0, 6, 1, 2) lay_audit.addWidget(self.btn_audit_reset, 0, 8, 1, 2) lay_audit.addWidget(self.btn_audit_glyphs, 0, 10, 1, 2) lay_audit.addWidget(self.btn_audit_run, 0, 12, 1, 4) lay_audit.addWidget(QtGui.QLabel('Audit Tests:'), 1, 0, 1, 4) lay_audit.addWidget(self.audit_list, 2, 0, 21, 4) lay_audit.addWidget(QtGui.QLabel('Audit Report:'), 1, 4, 1, 12) lay_audit.addWidget(self.audit_tree, 2, 4, 23, 12) lay_audit.addWidget(QtGui.QLabel('Reference:'), 23, 0, 1, 1) lay_audit.addWidget(self.cmb_reference, 23, 1, 1, 3) lay_audit.addWidget(QtGui.QLabel('Audit on:'), 24, 0, 1, 1) lay_audit.addWidget(self.cmb_layers, 24, 1, 1, 3) lay_audit.addWidget(self.progress, 25, 0, 1, 16) # - Finish lay_main.addLayout(lay_audit) self.setLayout(lay_main) self.setMinimumSize(300, self.sizeHint.height())
def __init__(self): super(tool_tab, self).__init__() # - Init # - Widgets # - Glyph list self.lst_glyphName = QtGui.QListWidget() self.lst_glyphName.setMinimumHeight(50) self.lst_glyphName.setAlternatingRowColors(True) # -- Buttons self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_setAxis = QtGui.QPushButton('Set &Axis') self.btn_setAxis_c = QtGui.QPushButton('Set &Axis') self.btn_resetAxis = QtGui.QPushButton('Reset Axis') self.btn_getVstem = QtGui.QPushButton('Get &Vertical Stems') self.btn_getHstem = QtGui.QPushButton('Get &Horizontal Stems') self.btn_setLayer = QtGui.QPushButton('Layer changed') self.btn_execute = QtGui.QPushButton('Execute') self.btn_file_load_patchboard = QtGui.QPushButton('Load') self.btn_file_save_patchboard = QtGui.QPushButton('Save') # -- Options self.btn_opt_extrapolate = QtGui.QPushButton('Extrapolate') self.btn_opt_italic = QtGui.QPushButton('Italic') self.btn_opt_update_preview = QtGui.QPushButton('Live preview') self.btn_opt_keep_center = QtGui.QPushButton('Keep Center') self.btn_opt_metrics = QtGui.QPushButton('Metrics') self.btn_opt_anchors = QtGui.QPushButton('Anchors') self.btn_opt_target = QtGui.QPushButton('Use Target') self.btn_opt_extrapolate.setCheckable(True) self.btn_opt_italic.setCheckable(True) self.btn_opt_update_preview.setCheckable(True) self.btn_opt_keep_center.setCheckable(True) self.btn_opt_metrics.setCheckable(True) self.btn_opt_anchors.setCheckable(True) self.btn_opt_target.setCheckable(True) #self.btn_opt_extrapolate.setChecked(True) #self.btn_opt_keep_center.setChecked(True) #self.btn_opt_target.setChecked(True) self.btn_refresh.clicked.connect(self.refresh) self.btn_setAxis.clicked.connect(self.set_axis) self.btn_setAxis_c.clicked.connect(self.set_axis) self.btn_resetAxis.clicked.connect(self.reset_axis) self.btn_getVstem.clicked.connect(lambda: self.get_stem(False)) self.btn_getHstem.clicked.connect(lambda: self.get_stem(True)) self.btn_setLayer.clicked.connect(self.set_current_layer) self.btn_execute.clicked.connect(lambda: self.execute_scale(True)) self.btn_file_save_patchboard.clicked.connect(self.file_save_patchboard) self.btn_file_load_patchboard.clicked.connect(self.file_load_patchboard) # -- Layer selector self.tree_layer = TRWLayerTree() # -- Actions (Context Menu) self.tree_layer.menu = QtGui.QMenu(self) self.tree_layer.menu.setTitle('Actions:') act_addItem = QtGui.QAction('Add', self) act_delItem = QtGui.QAction('Remove', self) act_dupItem = QtGui.QAction('Duplicate', self) act_uneItem = QtGui.QAction('Unnest', self) act_setItem_mask = QtGui.QAction('Set mask', self) act_setItem_unmask = QtGui.QAction('Remove mask', self) act_setItem_value = QtGui.QAction('Set value', self) act_setAxis = QtGui.QAction('Set Axis', self) act_resetAxis = QtGui.QAction('Reset Axis', self) act_getVstem = QtGui.QAction('Get Vertical Stems', self) act_getHstem = QtGui.QAction('Get Horizontal Stems', self) self.tree_layer.menu.addAction(act_addItem) self.tree_layer.menu.addAction(act_dupItem) self.tree_layer.menu.addAction(act_uneItem) self.tree_layer.menu.addAction(act_delItem) self.tree_layer.menu.addSeparator() self.tree_layer.menu.addAction(act_setItem_mask ) self.tree_layer.menu.addAction(act_setItem_unmask ) self.tree_layer.menu.addAction(act_setItem_value ) self.tree_layer.menu.addSeparator() self.tree_layer.menu.addAction(act_getVstem) self.tree_layer.menu.addAction(act_getHstem) self.tree_layer.menu.addSeparator() self.tree_layer.menu.addAction(act_setAxis) self.tree_layer.menu.addAction(act_resetAxis) act_addItem.triggered.connect(lambda: self.tree_layer._addItem()) act_dupItem.triggered.connect(lambda: self.tree_layer._duplicateItems()) act_uneItem.triggered.connect(lambda: self.tree_layer._unnestItem()) act_delItem.triggered.connect(lambda: self.tree_layer._removeItems()) act_setItem_mask.triggered.connect(lambda: self.tree_layer._setItemData('mask.', 0, 0, False)) act_setItem_unmask.triggered.connect(lambda: self.tree_layer._setItemData('mask.', 0, 1, True)) act_setItem_value.triggered.connect(lambda: self.tree_layer._setItemData(*TR2ComboDLG('Delta Setup', 'Please enter new value for selected columns', 'Value:', 'Column:', tree_column_names).values)) act_setAxis.triggered.connect(lambda: self.set_axis()) act_resetAxis.triggered.connect(lambda: self.reset_axis()) act_getVstem.triggered.connect(lambda: self.get_stem(False)) act_getHstem.triggered.connect(lambda: self.get_stem(True)) # - Build Layout layoutV = QtGui.QVBoxLayout() # -- Layer selector layoutV.addWidget(self.tree_layer) # -- Set Glyph list self.fld_glyphs = TRCollapsibleBox('Process Glyphs') lay_glyphs = QtGui.QVBoxLayout() lay_glyphs_b = QtGui.QHBoxLayout() lay_glyphs.addWidget(self.lst_glyphName) lay_glyphs_b.addWidget(self.btn_refresh) lay_glyphs_b.addWidget(self.btn_setAxis_c) lay_glyphs.addLayout(lay_glyphs_b) self.fld_glyphs.setContentLayout(lay_glyphs) layoutV.addWidget(self.fld_glyphs) # -- Delta Setup controls self.fld_setup = TRCollapsibleBox('Delta Setup') layoutG = QtGui.QGridLayout() layoutG.addWidget(QtGui.QLabel('Axis Setup:'), 0, 0, 1, 10) layoutG.addWidget(self.btn_getVstem, 1, 0, 1, 5) layoutG.addWidget(self.btn_getHstem, 1, 5, 1, 5) layoutG.addWidget(self.btn_resetAxis, 2, 0, 1, 5) layoutG.addWidget(self.btn_setAxis, 2, 5, 1, 5) layoutG.addWidget(self.btn_file_save_patchboard, 3, 0, 1, 5) layoutG.addWidget(self.btn_file_load_patchboard, 3, 5, 1, 5) layoutG.addWidget(QtGui.QLabel('Options:'), 4, 0, 1, 10) layoutG.addWidget(self.btn_opt_extrapolate, 5, 0, 1, 5) layoutG.addWidget(self.btn_opt_italic, 5, 5, 1, 5) layoutG.addWidget(self.btn_opt_anchors, 6, 0, 1, 5) layoutG.addWidget(self.btn_opt_metrics, 6, 5, 1, 5) layoutG.addWidget(self.btn_opt_target, 8, 0, 1, 5) layoutG.addWidget(self.btn_opt_keep_center, 8, 5, 1, 5) layoutG.addWidget(self.btn_opt_update_preview, 9, 0, 1, 10) self.fld_setup.setContentLayout(layoutG) layoutV.addWidget(self.fld_setup) # -- Set Sliders self.fld_weight = TRCollapsibleBox('Stem Weight Control') self.fld_scale = TRCollapsibleBox('Compensative scaler') lay_weight = QtGui.QVBoxLayout() lay_scale = QtGui.QVBoxLayout() # --- Mixer lay_weight.addWidget(QtGui.QLabel('Vertical Stem Weight (X):')) self.mixer_dx = TRSliderCtrl('1', '1000', '0', 1) self.mixer_dx.sld_axis.valueChanged.connect(self.execute_scale) lay_weight.addLayout(self.mixer_dx) lay_weight.addSpacing(10) lay_weight.addWidget(QtGui.QLabel('Horizontal Stem Weight (Y):')) self.mixer_dy = TRSliderCtrl('1', '1000', '0', 1) self.mixer_dy.sld_axis.valueChanged.connect(self.execute_scale) lay_weight.addLayout(self.mixer_dy) self.fld_weight.setContentLayout(lay_weight) layoutV.addWidget(self.fld_weight) # --- Scaler lay_scale.addWidget(QtGui.QLabel('Width')) self.scalerX = TRSliderCtrl('1', '200', '100', 1) self.scalerX.sld_axis.valueChanged.connect(self.execute_scale) lay_scale.addLayout(self.scalerX) lay_scale.addSpacing(10) lay_scale.addWidget(QtGui.QLabel('Height')) self.scalerY = TRSliderCtrl('1', '200', '100', 1) self.scalerY.sld_axis.valueChanged.connect(self.execute_scale) lay_scale.addLayout(self.scalerY) self.fld_scale.setContentLayout(lay_scale) layoutV.addWidget(self.fld_scale) # -- Tail layoutE = QtGui.QHBoxLayout() layoutE.addWidget(self.btn_setLayer) layoutE.addWidget(self.btn_execute) layoutV.addLayout(layoutE) self.__lbl_warn = QtGui.QLabel('') layoutV.addWidget(self.__lbl_warn) self.__lbl_warn.hide() # -- Finish self.refresh() self.tree_layer.setTree(self.__init_tree(), tree_column_names) self.setLayout(layoutV) self.setMinimumSize(300, self.sizeHint.height())
def __init__(self): super(tool_tab, self).__init__() # - Init self.anchorSelector = TRLayerSelect() self.types = 'Anchor PinPoint'.split(' ') self.posY = 'Coord, Expression, Keep, Shift, Above, Below, Center, Baseline, Center of mass'.split( ', ') self.posX = 'Coord, Expression, Keep, Shift, Left, Right, Center, Highest, Highest Left, Highest Right, Lowest, Lowest Left, Lowest Right, Center of mass'.split( ', ') posYvals = (None, None, 'S', 'S', 'T', 'B', 'C', None, 'W') posXvals = (None, None, 'S', 'S', 'L', 'R', 'C', 'AT', 'ATL', 'ATR', 'A', 'AL', 'AR', 'M') self.posYctrl = dict(zip(self.posY, posYvals)) self.posXctrl = dict(zip(self.posX, posXvals)) # -- Basic Tool buttons self.btn_anchorCopy = QtGui.QPushButton('Copy') self.btn_anchorPaste = QtGui.QPushButton('Paste') self.btn_clearSel = QtGui.QPushButton('Remove') self.btn_clearAll = QtGui.QPushButton('Remove All') self.btn_anchorAdd = QtGui.QPushButton('Add') self.btn_anchorMov = QtGui.QPushButton('Move') self.btn_anchorRename = QtGui.QPushButton('Rename') self.btn_anchorSuffix = QtGui.QPushButton('Suffix') self.btn_anchorCopy.setToolTip( 'Copy selected Anchors from layers chosen.') self.btn_anchorPaste.setToolTip('Paste Anchors at layers chosen.') self.btn_anchorRename.setToolTip('Rename selected anchors.') self.btn_anchorSuffix.setToolTip( 'Extend the name of selected Anchors.') self.chk_italic = QtGui.QCheckBox('Use Italic Angle') # -- Edit fields self.edt_anchorName = ALineEdit() self.edt_simpleX = ALineEdit() self.edt_simpleY = ALineEdit() self.edt_autoT = QtGui.QLineEdit() self.edt_anchorName.setPlaceholderText('New Anchor') self.edt_simpleX.setText('0') self.edt_simpleY.setText('0') self.edt_autoT.setText('5') # -- Combo box self.cmb_posX = QtGui.QComboBox() self.cmb_posY = QtGui.QComboBox() self.cmb_type = QtGui.QComboBox() self.cmb_posX.addItems(self.posX) self.cmb_posY.addItems(self.posY) self.cmb_type.addItems(self.types) self.cmb_type.setEnabled(False) # -- Constrains self.btn_clearSel.setMinimumWidth(90) self.btn_clearAll.setMinimumWidth(90) self.edt_anchorName.setMinimumWidth(50) self.edt_simpleX.setMinimumWidth(30) self.edt_simpleY.setMinimumWidth(30) # -- Link functions self.btn_clearAll.clicked.connect(lambda: self.clearAnchors(True)) self.btn_clearSel.clicked.connect(lambda: self.clearAnchors(False)) self.btn_anchorAdd.clicked.connect(lambda: self.addAnchors(False)) self.btn_anchorMov.clicked.connect(lambda: self.addAnchors(True)) self.btn_anchorCopy.clicked.connect(lambda: self.copyAnchors(False)) self.btn_anchorPaste.clicked.connect(lambda: self.copyAnchors(True)) self.btn_anchorSuffix.clicked.connect( lambda: self.renameAnchors(False)) self.btn_anchorRename.clicked.connect(lambda: self.renameAnchors(True)) self.anchorSelector.tree_anchors.itemChanged.connect( self.processChange) # - Build layout layoutV = QtGui.QVBoxLayout() layoutV.addLayout(self.anchorSelector) self.fld_actions = TRCollapsibleBox('Anchor actions:') lay_actions = QtGui.QGridLayout() lay_actions.addWidget(self.btn_anchorCopy, 0, 0, 1, 4) lay_actions.addWidget(self.btn_anchorPaste, 0, 4, 1, 4) lay_actions.addWidget(self.btn_clearSel, 1, 0, 1, 4) lay_actions.addWidget(self.btn_clearAll, 1, 4, 1, 4) self.fld_actions.setContentLayout(lay_actions) layoutV.addWidget(self.fld_actions) self.fld_addmod = TRCollapsibleBox('Add/Move anchor:') lay_addmod = QtGui.QGridLayout() lay_addmod.addWidget(QtGui.QLabel('N:'), 0, 0, 1, 1) lay_addmod.addWidget(self.edt_anchorName, 0, 1, 1, 3) lay_addmod.addWidget(self.cmb_type, 0, 4, 1, 4) lay_addmod.addWidget(QtGui.QLabel('X:'), 1, 0, 1, 1) lay_addmod.addWidget(self.cmb_posX, 1, 1, 1, 3) lay_addmod.addWidget(self.edt_simpleX, 1, 4, 1, 4) lay_addmod.addWidget(QtGui.QLabel('Y:'), 2, 0, 1, 1) lay_addmod.addWidget(self.cmb_posY, 2, 1, 1, 3) lay_addmod.addWidget(self.edt_simpleY, 2, 4, 1, 4) lay_addmod.addWidget(QtGui.QLabel('Tolerance:'), 3, 1, 1, 2) lay_addmod.addWidget(self.edt_autoT, 3, 3, 1, 1) lay_addmod.addWidget(self.chk_italic, 3, 4, 1, 1) lay_addmod.addWidget(self.btn_anchorAdd, 4, 0, 1, 4) lay_addmod.addWidget(self.btn_anchorMov, 4, 4, 1, 4) lay_addmod.addWidget(self.btn_anchorRename, 5, 0, 1, 4) lay_addmod.addWidget(self.btn_anchorSuffix, 5, 4, 1, 4) self.fld_addmod.setContentLayout(lay_addmod) layoutV.addWidget(self.fld_addmod) # - Finish self.setLayout(layoutV) self.setMinimumSize(300, self.sizeHint.height())
def __init__(self): super(dlg_BuildAxis, self).__init__() # - Init self.active_font = pFont() self.exclude_list = [] # - Widgets self.cmb_master_name = QtGui.QComboBox() self.cmb_axis_name = QtGui.QComboBox() self.cmb_axis_short = QtGui.QComboBox() self.cmb_axis_tag = QtGui.QComboBox() self.spb_italic_angle = QtGui.QSpinBox() self.spb_italic_shift = QtGui.QSpinBox() self.tab_masters = WTableView(table_dict) self.btn_exclude_file = QtGui.QPushButton('Select glyph exclude list') self.btn_populate = QtGui.QPushButton('Populate Master Table') self.btn_execute = QtGui.QPushButton('Execute') self.cmb_master_name.setEditable(True) self.cmb_axis_name.setEditable(True) self.cmb_axis_short.setEditable(True) self.cmb_axis_tag.setEditable(True) self.spb_italic_angle.setMinimum(spinbox_range[0]) self.spb_italic_shift.setMinimum(spinbox_range[0]) self.spb_italic_angle.setMaximum(spinbox_range[1]) self.spb_italic_shift.setMaximum(spinbox_range[1]) self.cmb_master_name.addItems(italic_axis_names_T[0]) self.cmb_axis_name.addItems(italic_axis_names_T[0]) self.cmb_axis_short.addItems(italic_axis_names_T[1]) self.cmb_axis_tag.addItems(italic_axis_names_T[2]) self.spb_italic_angle.setValue(italic_transform_angle) self.spb_italic_shift.setValue(italic_transform_shift) self.cmb_axis_name.currentIndexChanged.connect(self.change_axis_name) self.btn_exclude_file.clicked.connect(self.load_exclude_list) self.btn_populate.clicked.connect(self.table_populate) self.btn_execute.clicked.connect(self.table_execute) # - Build layouts layoutV = QtGui.QGridLayout() layoutV.addWidget(QtGui.QLabel('Build Axis:'), 0, 0, 1, 9, QtCore.Qt.AlignBottom) layoutV.addWidget(QtGui.QLabel('Name:'), 1, 0, 1, 1) layoutV.addWidget(self.cmb_axis_name, 1, 1, 1, 2) layoutV.addWidget(QtGui.QLabel('Short:'), 1, 3, 1, 1) layoutV.addWidget(self.cmb_axis_short, 1, 4, 1, 2) layoutV.addWidget(QtGui.QLabel('Tag:'), 1, 6, 1, 1) layoutV.addWidget(self.cmb_axis_tag, 1, 7, 1, 2) layoutV.addWidget(QtGui.QLabel('Masters:'), 2, 0, 1, 2, QtCore.Qt.AlignBottom) layoutV.addWidget(QtGui.QLabel('Transformation:'), 2, 2, 1, 3, QtCore.Qt.AlignBottom) layoutV.addWidget(QtGui.QLabel('Suffix:'), 3, 0, 1, 1) layoutV.addWidget(self.cmb_master_name, 3, 1, 1, 2) layoutV.addWidget(QtGui.QLabel('Angle:'), 3, 3, 1, 1) layoutV.addWidget(self.spb_italic_angle, 3, 4, 1, 2) layoutV.addWidget(QtGui.QLabel('Shift:'), 3, 6, 1, 1) layoutV.addWidget(self.spb_italic_shift, 3, 7, 1, 2) layoutV.addWidget(QtGui.QLabel('Glyph processing:'),5, 0, 1, 9, QtCore.Qt.AlignBottom) layoutV.addWidget(self.btn_exclude_file, 6, 0, 1, 9) layoutV.addWidget(QtGui.QLabel('Overview:'), 7, 0, 1, 9, QtCore.Qt.AlignBottom) layoutV.addWidget(self.btn_populate, 8, 0, 1, 9) layoutV.addWidget(self.tab_masters, 9, 0, 25,9) layoutV.addWidget(self.btn_execute, 34, 0, 1,9) # - Set Widget self.setLayout(layoutV) self.setWindowTitle('%s %s' %(app_name, app_version)) self.setGeometry(300, 300, 400, 600) self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!! self.show()
def __init__(self, parentWidget): super(TRSmartCorner, 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, parentWidget): super(TRAutoMetrics, self).__init__() self.upper_widget = parentWidget # -- Init self.active_font = pFont() self.active_sampler = MetricSampler(self.active_font) self.font_masters = self.active_font.masters() self.empty_preset = lambda row: OrderedDict([(row, OrderedDict([('Preset', 'Preset %s' %row)] + [(master, '0') for master in self.font_masters]))]) self.table_dict = self.empty_preset(0) self.__max_value = 10000 # -- Widgets self.edt_glyphName = QtGui.QLineEdit() self.edt_glyphName.setPlaceholderText('Glyph name') # -- Buttons self.btn_addPreset = QtGui.QPushButton('Add') self.btn_delPreset = QtGui.QPushButton('Remove') self.btn_resetPreset = QtGui.QPushButton('Reset') self.btn_loadPreset = QtGui.QPushButton('Load') self.btn_savePreset = QtGui.QPushButton('Save') self.btn_get_lsb = QtGui.QPushButton('LSB') self.btn_get_rsb = QtGui.QPushButton('RSB') self.btn_get_both = QtGui.QPushButton('Set Metrics') self.btn_advanced = QtGui.QPushButton('Use Advanced options') self.btn_advanced.setCheckable(True) self.btn_advanced.setChecked(False) self.btn_advanced.setEnabled(False) self.btn_get_lsb.clicked.connect(lambda: self.set_sidebearings('lsb')) self.btn_get_rsb.clicked.connect(lambda: self.set_sidebearings('rsb')) self.btn_get_both.clicked.connect(lambda: self.set_sidebearings('bth')) # -- Checkbox self.chk_area_draw = QtGui.QCheckBox('Draw sampled area') self.chk_area_cache = QtGui.QCheckBox('Cache sampled area') # -- Spinbox self.spb_window_min = QtGui.QSpinBox() self.spb_window_max = QtGui.QSpinBox() self.spb_depth = QtGui.QSpinBox() self.spb_mul_area = QtGui.QDoubleSpinBox() self.spb_window_min.setMaximum(self.__max_value) self.spb_window_max.setMaximum(self.__max_value) self.spb_window_min.setMinimum(-self.__max_value) self.spb_window_max.setMinimum(-self.__max_value) self.spb_depth.setMaximum(self.__max_value) self.spb_mul_area.setMaximum(20.) self.spb_mul_area.setMinimum(-20.) self.spb_mul_area.setSingleStep(0.01) self.spb_window_min.setSuffix(' u') self.spb_window_max.setSuffix(' u') self.spb_depth.setSuffix(' u') self.spb_window_min.setValue(self.active_sampler.sample_window[0]) self.spb_window_max.setValue(self.active_sampler.sample_window[1]) self.spb_depth.setValue(self.active_sampler.cutout_x) self.spb_mul_area.setValue(0.5) self.spb_window_min.valueChanged.connect(lambda: self.update_sampler_config()) self.spb_window_max.valueChanged.connect(lambda: self.update_sampler_config()) self.spb_depth.valueChanged.connect(lambda: self.update_sampler_config()) # -- Preset Table self.tab_presets = TRTableView(None) # -- Build Layout self.lay_head = QtGui.QGridLayout() self.frame_advanced = QtGui.QFrame() self.lay_advanced = QtGui.QGridLayout() self.lay_head.addWidget(QtGui.QLabel('Sampling Options:'), 0, 0, 1, 8) self.lay_head.addWidget(QtGui.QLabel('Min (Y):'), 1, 0, 1, 2) self.lay_head.addWidget(self.spb_window_min, 1, 2, 1, 2) self.lay_head.addWidget(QtGui.QLabel('Max (Y):'), 1, 4, 1, 2) self.lay_head.addWidget(self.spb_window_max, 1, 6, 1, 2) self.lay_head.addWidget(QtGui.QLabel('Depth (X):'), 2, 0, 1, 2) self.lay_head.addWidget(self.spb_depth, 2, 2, 1, 2) self.lay_head.addWidget(QtGui.QLabel('Area (mult.):'), 2, 4, 1, 2) self.lay_head.addWidget(self.spb_mul_area, 2, 6, 1, 2) self.lay_head.addWidget(self.chk_area_draw, 3, 0, 1, 4) self.lay_head.addWidget(self.chk_area_cache, 3, 4, 1, 4) self.lay_head.addWidget(self.btn_get_lsb, 4, 0, 1, 2) self.lay_head.addWidget(self.btn_get_both, 4, 2, 1, 4) self.lay_head.addWidget(self.btn_get_rsb, 4, 6, 1, 2) self.lay_head.addWidget(self.btn_advanced, 5, 0, 1, 8) self.lay_head.addWidget(self.frame_advanced, 6, 0, 15, 8) self.frame_advanced.setLayout(self.lay_advanced) #self.lay_advanced.addWidget(QtGui.QLabel('Advanced configuration:'), 0, 0, 1, 6) self.lay_advanced.addWidget(self.btn_addPreset, 1, 0, 1, 2) self.lay_advanced.addWidget(self.btn_delPreset, 1, 2, 1, 2) self.lay_advanced.addWidget(self.btn_resetPreset, 1, 4, 1, 2) self.lay_advanced.addWidget(self.tab_presets, 2, 0, 5, 6) self.lay_advanced.addWidget(self.btn_loadPreset, 10, 0, 1, 3) self.lay_advanced.addWidget(self.btn_savePreset, 10, 3, 1, 3) self.frame_advanced.setFrameStyle(1) self.frame_advanced.hide() self.btn_advanced.clicked.connect(lambda: self.frame_advanced.show() if self.btn_advanced.isChecked() else self.frame_advanced.hide()) self.addLayout(self.lay_head)