def __init__(self): super(tool_tab, self).__init__() # - Build ''' main = QtGui.QVBoxLayout() scroll = QtGui.QScrollArea() scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) scroll.setWidgetResizable(True) ''' layoutV = QtGui.QVBoxLayout() splitter = QtGui.QSplitter(QtCore.Qt.Vertical) #splitter.setHandleWidth(1) self.fontMetrics = WFontMetrics(self) self.fontZones = WFontZones(self) splitter.addWidget(self.fontMetrics) splitter.addWidget(self.fontZones) splitter.setStretchFactor(0, 1) splitter.setStretchFactor(1, 2) layoutV.addWidget(splitter) # - Build --------------------------- #layoutV.addStretch() #scroll.setLayout(layoutV) #main.addWidget(scroll) self.setLayout(layoutV)
def setTable(self, data, setNotes=False): # - Init name_column = ['Class Name', 'Class Type', 'Class Members', 'Note'] self.blockSignals(True) self.setColumnCount(len(name_column)) self.setRowCount(len(data.keys())) self.setSortingEnabled(False) # Great solution from: https://stackoverflow.com/questions/7960505/strange-qtablewidget-behavior-not-all-cells-populated-after-sorting-followed-b # - Populate for row, key in enumerate(sorted(data.keys())): item_groupName = QtGui.QTableWidgetItem(str(key)) item_groupPos = QtGui.QTableWidgetItem(str(data[key][1])) item_groupMem = QtGui.QTableWidgetItem(' '.join(data[key][0])) self.setItem(row, 0, item_groupName) self.setItem(row, 1, item_groupPos) self.setItem(row, 2, item_groupMem) if setNotes: try: item_groupNote = QtGui.QTableWidgetItem(data[key][2]) self.setItem(row, 3, item_groupNote) except IndexError: pass self.setHorizontalHeaderLabels(name_column) self.header.setSectionResizeMode(0, QtGui.QHeaderView.ResizeToContents) self.header.setSectionResizeMode(1, QtGui.QHeaderView.ResizeToContents) self.header.setSectionResizeMode(2, QtGui.QHeaderView.Stretch) self.header.setSectionResizeMode(3, QtGui.QHeaderView.ResizeToContents) self.blockSignals(False) self.setSortingEnabled(True)
def __init__(self, aux): super(TRNewLayerBlend, self).__init__() # - Init self.aux = aux self.process_array = [] # - 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(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() # - Build #layoutV.addWidget(QtGui.QLabel('Glyph: Adjust Metric data')) layoutV.addLayout(metrics_adjust()) layoutV.addSpacing(10) layoutV.addWidget(QtGui.QLabel('Glyph: Copy Metric data')) layoutV.addLayout(metrics_copy()) layoutV.addSpacing(10) layoutV.addWidget(QtGui.QLabel('Glyph: Copy BBox data')) layoutV.addLayout(bbox_copy()) layoutV.addSpacing(10) layoutV.addWidget(QtGui.QLabel('Glyph: Set metric expressions')) layoutV.addLayout(metrics_expr()) layoutV.addSpacing(10) layoutV.addWidget(QtGui.QLabel('\nFont: Set Font Metrics')) layoutV.addLayout(metrics_font()) # - Build --------------------------- layoutV.addStretch() self.setLayout(layoutV) # !!! Hotfix FL7 7355 self.setMinimumSize(300, self.sizeHint.height())
def __init__(self): super(alignShapes, self).__init__() # - Init self.align_x = OrderedDict([('Left', 'L'), ('Right', 'R'), ('Center', 'C'), ('Keep', 'K')]) self.align_y = OrderedDict([('Top', 'T'), ('Bottom', 'B'), ('Center', 'E'), ('Keep', 'X')]) self.align_mode = OrderedDict([('Layer', 'CL'), ('Shape to Shape', 'CC'), ('Shape to Shape (REV)', 'RC')]) # !!! To be implemented #self.align_mode = OrderedDict([('Layer','CL'), ('Shape to Shape','CC'), ('Shape to Shape (REV)','RC'), ('Shape to Node','CN'),('Node to Node','NN')]) # - Widgets self.cmb_align_x = QtGui.QComboBox() self.cmb_align_y = QtGui.QComboBox() self.cmb_align_mode = QtGui.QComboBox() self.cmb_align_x.addItems(self.align_x.keys()) self.cmb_align_y.addItems(self.align_y.keys()) self.cmb_align_mode.addItems(self.align_mode.keys()) self.cmb_align_x.setToolTip('Horizontal Alignment') self.cmb_align_y.setToolTip('Vertical Alignment') self.cmb_align_mode.setToolTip('Alignment Mode') self.btn_align = QtGui.QPushButton('Align') self.btn_align.clicked.connect(self.alignShapes) self.addWidget(self.cmb_align_mode, 0, 0, 1, 2) self.addWidget(self.cmb_align_x, 0, 2, 1, 1) self.addWidget(self.cmb_align_y, 0, 3, 1, 1) self.addWidget(self.btn_align, 1, 0, 1, 4)
def __init__(self): super(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() #self.layerSelector = TRLayerSelect() self.layerSelector = TRWLayerSelect() self.quickTools = TRLayerTools(self.layerSelector) #self.blendTools = QlayerBlend(self.layerSelector) self.blendTools = TRNewLayerBlend(self.layerSelector) self.basicTools = TRLayerBasic(self.layerSelector) self.unfoldLayers = TRLayerMultiEdit(self.layerSelector) layoutV.addLayout(self.layerSelector) layoutV.addWidget(QtGui.QLabel('Basic Tools (Layers selected)')) layoutV.addLayout(self.basicTools) layoutV.addWidget( QtGui.QLabel('Content Tools (Active Layer to selection)')) layoutV.addLayout(self.quickTools) layoutV.addWidget( QtGui.QLabel('Layer Multi-editing (Layers selected)')) layoutV.addLayout(self.unfoldLayers) layoutV.addWidget( QtGui.QLabel('Interpolate/Blend (Selection to Active Layer)')) layoutV.addLayout(self.blendTools) # - Build --------------------------- self.setLayout(layoutV) # !!! Hotfix FL7 7355 self.setMinimumSize(300, self.sizeHint.height())
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): super(metrics_expr, self).__init__() self.edt_lsb = TRMLineEdit() self.edt_adv = TRMLineEdit() self.edt_rsb = TRMLineEdit() self.edt_lsb.setPlaceholderText('Metric expression') self.edt_adv.setPlaceholderText('Metric expression') self.edt_rsb.setPlaceholderText('Metric expression') self.btn_setMetrics = QtGui.QPushButton('&Set') self.btn_getMetrics = QtGui.QPushButton('&Get') self.btn_getShapeParent = QtGui.QPushButton('&Reference') self.btn_delMetrics = QtGui.QPushButton('&Unlink') self.btn_autoBind = QtGui.QPushButton('&Auto Link') self.btn_getMetrics.setToolTip( 'Get Metric expressions for current layer') self.btn_setMetrics.setToolTip( 'Set Metric expressions.\n\n - Click: Set\n - SHIFT + Click: Set LSB with distance between selected two nodes removed from the expression.\n - Alt + Click: Set RSB with distance between selected two nodes removed from the expression.\n - All above + CTRL: - Negate operation (distance added)' ) self.btn_autoBind.setToolTip( 'Automatically bind metric expressions from available element references.' ) self.btn_getMetrics.clicked.connect(lambda: self.getMetricEquations()) 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('ADV:'), 0, 0, 1, 1) self.addWidget(self.edt_adv, 0, 1, 1, 5) self.addWidget(QtGui.QLabel('LSB:'), 1, 0, 1, 1) self.addWidget(self.edt_lsb, 1, 1, 1, 5) self.addWidget(QtGui.QLabel('RSB:'), 2, 0, 1, 1) self.addWidget(self.edt_rsb, 2, 1, 1, 5) self.addWidget(self.btn_getMetrics, 3, 0, 1, 2) self.addWidget(self.btn_setMetrics, 3, 2, 1, 4) self.addWidget(QtGui.QLabel('Composite Glyph: Metric expressions'), 4, 0, 1, 5) self.addWidget(self.btn_getShapeParent, 5, 0, 1, 2) self.addWidget(self.spb_shapeIndex, 5, 2, 1, 1) self.addWidget(self.btn_autoBind, 5, 3, 1, 1) self.addWidget(self.btn_delMetrics, 5, 4, 1, 1) self.setColumnStretch(0, 0) self.setColumnStretch(1, 5)
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, 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 class_add_new(self): if self.tab_groupKern.rowCount > 0: self.tab_groupKern.insertRow(0) item_groupName = QtGui.QTableWidgetItem('Class_%s' %self.tab_groupKern.rowCount) item_groupPos = QtGui.QTableWidgetItem('KernLeft') item_groupMem = QtGui.QTableWidgetItem('') self.tab_groupKern.setItem(0, 0, item_groupName) self.tab_groupKern.setItem(0, 1, item_groupPos) self.tab_groupKern.setItem(0, 2, item_groupMem) else: layer = self.cmb_layer.currentText empty_table = {layer:{'Class_1':[[''], 'KernLeft']}} self.update_data(empty_table)
def update_data(self, source, updateTable=True, setNotes=False, layerUpdate=False): layer = self.cmb_layer.currentText if not layerUpdate: self.kern_group_data = source else: self.kern_group_data[layer] = source if updateTable: if self.kern_group_data.has_key(layer): self.tab_groupKern.clear() while self.tab_groupKern.rowCount > 0: self.tab_groupKern.removeRow(0) self.tab_groupKern.setTable(self.kern_group_data[layer], setNotes) print 'DONE:\t Updating classes table for master: %s' %layer else: print 'ERROR:\t Updating classes table for master: %s' %layer msg = QtGui.QMessageBox(QtGui.QMessageBox.Warning, 'TypeRig: Warning', 'There is no kerning class information for current selected layer: %s.\n\n Do you want to add a new empty table into database for layer: %s?' %(layer, layer), QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel, self) if msg.exec_() == 1024: self.kern_group_data[layer] = {'Class_1':[[''], 'KernLeft']} # ! DO: Better self.tab_groupKern.clear() while self.tab_groupKern.rowCount > 0: self.tab_groupKern.removeRow(0) self.tab_groupKern.setTable(self.kern_group_data[layer], setNotes) print 'DONE:\t Updating classes table for master: %s' %layer
def __init__(self): super(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() # - Build layoutV.addWidget(QtGui.QLabel('Curve: Optimization')) layoutV.addLayout(curveEq()) # - Build --------------------------- layoutV.addStretch() self.setLayout(layoutV) # !!! Hotfix FL7 7355 self.setMinimumSize(300, self.sizeHint.height())
def __init__(self): super(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() self.strGenerator = TRStringGen() # - Build --------------------------- layoutV.addWidget(QtGui.QLabel('Pairs generator:')) layoutV.addLayout(self.strGenerator) layoutV.addStretch() self.setLayout(layoutV) # !!! Hotfix FL7 7355 self.setMinimumSize(300,self.sizeHint.height())
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(TRGlyphTag, self).__init__() # - Widget & Layout self.edt_tagString = TRGLineEdit() 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 setTree(self, data, reset=False): self.blockSignals(True) self.clear() header_row = ['Layer/Zone', 'Position', 'Width', 'Type'] self.setHeaderLabels(header_row) for key, value in data.iteritems(): master = QtGui.QTreeWidgetItem(self, [key]) for zoneTuple in value: zoneData = QtGui.QTreeWidgetItem(master, [ zoneTuple[2], zoneTuple[0], zoneTuple[1], ('B: %s', 'T: %s')[zoneTuple[1] > 0] % zoneTuple[0] ]) zoneData.setFlags(zoneData.flags() | QtCore.Qt.ItemIsEditable) self.blockSignals(False)
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_reorderShape = QtGui.QPushButton('&Auto Reorder Layer') self.btn_roundShape = QtGui.QPushButton('R&ound transform') self.btn_ungroupAllShapes = QtGui.QPushButton('Un&group All') 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.btn_roundShape.clicked.connect(self.shape_roundTransform) self.btn_reorderShape.clicked.connect(self.shape_autoReorder) self.btn_ungroupAllShapes.clicked.connect(self.shape_ungroupAll) 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_delShape, 2, 0, 1, 3) self.addWidget(self.btn_resetShape, 2, 3, 1, 3) self.addWidget(self.btn_reorderShape, 3, 0, 1, 6) self.addWidget(self.btn_roundShape, 4, 0, 1, 3) self.addWidget(self.btn_ungroupAllShapes, 4, 3, 1, 3)
def __init__(self): super(tool_tab, self).__init__() layoutV = QtGui.QVBoxLayout() self.kernGroups = WKernGroups(self) if system() != 'Darwin': # - Menubar only on Windows self.ActionsMenu = QtGui.QMenuBar(self) self.ActionsMenu.addMenu(self.kernGroups.menu_data) self.ActionsMenu.addMenu(self.kernGroups.menu_class) self.ActionsMenu.addMenu(self.kernGroups.menu_type) self.ActionsMenu.addMenu(self.kernGroups.menu_memb) layoutV.setMenuBar(self.ActionsMenu) layoutV.addWidget(self.kernGroups) # - Build --------------------------- self.setLayout(layoutV)
def __init__(self): super(TRTextBlockSelect, 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 from_font(self): temp_dict = {} msg = QtGui.QMessageBox(QtGui.QMessageBox.Warning, 'TypeRig: Warning', 'Due to fatal class kerning bug in FontLab VI (build 6927) the classes cannot be loaded reliably from font.\n\nPress OK to continue loading class information from font without predefined mode (1st, 2nd and etc.)', QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel, self) if msg.exec_() == 1024: for layer in self.active_font.masters(): fl_kern_group_dict = self.active_font.fl_kerning_groups_to_dict(layer) temp_dict[layer] = {key: (value, 'UNKNOWN') for key,value in fl_kern_group_dict.iteritems()} self.update_data(temp_dict)
def setTree(self, data, headers): self.blockSignals(True) self.clear() self.setHeaderLabels(headers) # - Insert for key, value in data.iteritems(): master = QtGui.QTreeWidgetItem(self, [key]) for sub in value: new_item = QtGui.QTreeWidgetItem(master, sub) new_item.setFlags(new_item.flags() | QtCore.Qt.ItemIsEditable) # - Fit data for c in range(self.columnCount): self.resizeColumnToContents(c) self.expandAll() self.blockSignals(False)
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 setTable(self, data): # - Fix sorting self.clear() self.setSortingEnabled(False) self.blockSignals(True) self.model().sort(-1) self.horizontalHeader().setSortIndicator(-1, 0) # - Init name_row, name_column = [], [] self.setColumnCount(max(map(len, data.values()))) self.setRowCount(len(data.keys())) # - Populate for n, layer in enumerate(data.keys()): name_row.append(layer) for m, key in enumerate(data[layer].keys()): # -- Build name column name_column.append(key) # -- Selectively add data newitem = QtGui.QTableWidgetItem(str(data[layer][key])) if m == 0: newitem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) newitem.setData(QtCore.Qt.DecorationRole, data[layer]['Color']) newitem.setCheckState(QtCore.Qt.Unchecked) newitem.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) if data[layer]['Type']: newitem.setBackground(color_dict[data[layer]['Type']]) self.setItem(n, m, newitem) self.verticalHeader().hide() self.setVerticalHeaderLabels(name_row) self.setHorizontalHeaderLabels(name_column) self.header.setSectionResizeMode(0, QtGui.QHeaderView.Stretch) self.header.setSectionResizeMode(1, QtGui.QHeaderView.ResizeToContents) self.header.setSectionResizeMode(2, QtGui.QHeaderView.ResizeToContents) self.blockSignals(False) self.setSortingEnabled(True) self.setColumnHidden(2, True)
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.addStretch() layoutV.addWidget(QtGui.QLabel('Align Elements:')) 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.setStatusTip(self.btn_capture.toolTip) self.btn_capture.clicked.connect(lambda: self.captureKeyaboard()) layoutV.addWidget(self.btn_capture) # - Build --------------------------- self.setLayout(layoutV) # !!! Hotfix FL7 7355 self.setMinimumSize(300, self.sizeHint.height())
def markDiff(self): #!!! Ineffecient but will do self.blockSignals(True) root = self.invisibleRootItem() init_diff = [] for i in range(root.childCount()): item = root.child(i) init_diff.append( [item.child(n).text(0) for n in range(item.childCount())]) for i in range(root.childCount()): item = root.child(i) for n in range(item.childCount()): if all([item.child(n).text(0) in test for test in init_diff]): item.child(n).setData(0, QtCore.Qt.DecorationRole, QtGui.QColor('LimeGreen')) else: item.child(n).setData(0, QtCore.Qt.DecorationRole, QtGui.QColor('Crimson')) self.blockSignals(False)
def contextMenuEvent(self, event): # - Init self.tab_groupKern.menu = QtGui.QMenu(self) self.tab_groupKern.menu.setTitle('Class Actions:') # - Build menus self.tab_groupKern.menu.addMenu(self.menu_class) self.tab_groupKern.menu.addSeparator() self.tab_groupKern.menu.addMenu(self.menu_type) self.tab_groupKern.menu.addSeparator() self.tab_groupKern.menu.addMenu(self.menu_memb) self.tab_groupKern.menu.popup(QtGui.QCursor.pos())
def __init__(self): super(TRLayerSelect, self).__init__() # - Init self.header_names = ['Layer/Anchor' + ' ' * 20, 'X', 'Y'] self.data = OrderedDict([('Refresh', [])]) # -- Head self.lay_head = QtGui.QHBoxLayout() self.edt_glyphName = QtGui.QLineEdit() self.btn_refresh = QtGui.QPushButton('&Refresh') self.btn_refresh.clicked.connect(self.refresh) self.lay_head.addWidget(QtGui.QLabel('G:')) self.lay_head.addWidget(self.edt_glyphName) self.lay_head.addWidget(self.btn_refresh) self.addLayout(self.lay_head) # -- Tree view self.tree_anchors = TRtreeWidget(self.data, self.header_names) self.tree_anchors.setMinimumHeight(400) self.addWidget(self.tree_anchors)
def __init__(self): super(tool_tab, self).__init__() # - Init layoutV = QtGui.QVBoxLayout() self.outline = TRContourSelect() layoutV.addLayout(self.outline) # - Build #layoutV.addStretch() self.setLayout(layoutV) # !!! Hotfix FL7 7355 self.setMinimumSize(300, self.sizeHint.height())
def setTable(self, data, color_dict=None, enable_check=False): self.clear() self.setSortingEnabled(False) self.blockSignals(True) self.model().sort(-1) self.horizontalHeader().setSortIndicator(-1, 0) name_row, name_column = [], [] self.setColumnCount(max(map(len, data.values()))) self.setRowCount(len(data.keys())) # - Populate for n, layer in enumerate(data.keys()): name_row.append(layer) for m, key in enumerate(data[layer].keys()): # -- Build name column name_column.append(key) # -- Selectively add data newitem = QtGui.QTableWidgetItem(str(data[layer][key])) if m == 0 and enable_check: newitem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) newitem.setCheckState(QtCore.Qt.Unchecked) if color_dict is not None: try: newitem.setBackground( color_dict[data[layer]['Layer Type']]) except KeyError: pass self.setItem(n, m, newitem) self.setHorizontalHeaderLabels(name_column) self.setVerticalHeaderLabels(name_row) self.resizeColumnsToContents() self.blockSignals(False) self.setSortingEnabled(True) self.horizontalHeader().setSectionResizeMode(0, QtGui.QHeaderView.Stretch) self.horizontalHeader().setSectionResizeMode( 1, QtGui.QHeaderView.ResizeToContents)