Пример #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
	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
    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
    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
    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
    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
    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)