示例#1
0
    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)
示例#2
0
	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)
示例#3
0
    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)
示例#4
0
    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())
示例#5
0
    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)
示例#6
0
    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())
示例#7
0
    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()
示例#8
0
    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)
示例#9
0
文件: Corner.py 项目: hwk1984/TypeRig
	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)
示例#10
0
    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)
示例#11
0
	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)
示例#12
0
	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
示例#13
0
文件: Curve.py 项目: hwk1984/TypeRig
    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())
示例#14
0
	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())
示例#15
0
    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)
示例#16
0
文件: Guide.py 项目: hwk1984/TypeRig
    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)
示例#17
0
    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)
示例#18
0
    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)
示例#19
0
	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)
示例#20
0
    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)
示例#21
0
	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)
示例#22
0
文件: Anchor.py 项目: hwk1984/TypeRig
    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)
示例#23
0
    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)
示例#24
0
    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)
示例#25
0
    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())
示例#26
0
文件: Anchor.py 项目: hwk1984/TypeRig
    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)
示例#27
0
	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())				
示例#28
0
文件: Anchor.py 项目: hwk1984/TypeRig
    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)
示例#29
0
    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())
示例#30
0
    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)