Пример #1
0
    def __init__(self):
        super(TRImpEx, self).__init__()

        # - Interface
        # -- Layouts
        self.lay_base = QtGui.QGridLayout()
        self.plane_A = QtGui.QListWidget()
        self.plane_B = QtGui.QListWidget()
        self.plane_C = QtGui.QVBoxLayout()

        self.plane_A.setAlternatingRowColors(True)
        self.plane_B.setAlternatingRowColors(True)

        self.plane_A.addItems(sorted(impex_actions_db.keys()))
        self.plane_A.selectionModel().selectionChanged.connect(
            self.refresh_plane_B)
        self.plane_B.selectionModel().selectionChanged.connect(self.run_action)

        self.plane_C.addWidget(
            ImpexActions.action_empty())  # Set empty widget at start

        # - Build
        self.lay_base.addWidget(QtGui.QLabel('Import/Export type:'), 0, 1)
        self.lay_base.addWidget(QtGui.QLabel('Action:'), 0, 2)
        self.lay_base.addWidget(QtGui.QLabel('Options:'), 0, 3)
        self.lay_base.addWidget(self.plane_A, 1, 1)
        self.lay_base.addWidget(self.plane_B, 1, 2)
        self.lay_base.addLayout(self.plane_C, 1, 3)

        self.lay_base.setColumnStretch(1, 1)
        self.lay_base.setColumnStretch(2, 1)
        self.lay_base.setColumnStretch(3, 1)

        self.setLayout(self.lay_base)
Пример #2
0
	def __init__(self, dlg_name, dlg_msg, dlg_field_t, dlg_field_b, dlg_size=(300, 300, 300, 100)):
		super(TR2FieldDLG, self).__init__()
		# - Init
		self.values = (None, None)
		
		# - Widgets
		self.lbl_main = QtGui.QLabel(dlg_msg)
		self.lbl_field_t = QtGui.QLabel(dlg_field_t)
		self.lbl_field_b = QtGui.QLabel(dlg_field_b)
		
		self.edt_field_t = QtGui.QLineEdit() # Top field
		self.edt_field_b = QtGui.QLineEdit() # Bottom field

		self.btn_ok = QtGui.QPushButton('OK', self)
		self.btn_cancel = QtGui.QPushButton('Cancel', self)

		self.btn_ok.clicked.connect(self.return_values)
		self.btn_cancel.clicked.connect(self.reject)
		
		# - Build 
		main_layout = QtGui.QGridLayout() 
		main_layout.addWidget(self.lbl_main, 	0, 0, 1, 4)
		main_layout.addWidget(self.lbl_field_t,	1, 0, 1, 2)
		main_layout.addWidget(self.edt_field_t,	1, 2, 1, 2)
		main_layout.addWidget(self.lbl_field_b,	2, 0, 1, 2)
		main_layout.addWidget(self.edt_field_b,	2, 2, 1, 2)
		main_layout.addWidget(self.btn_ok,		3, 0, 1, 2)
		main_layout.addWidget(self.btn_cancel,	3, 2, 1, 2)

		# - Set 
		self.setLayout(main_layout)
		self.setWindowTitle(dlg_name)
		self.setGeometry(*dlg_size)
		self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
		self.exec_()
Пример #3
0
    def __init__(self, aux):
        super(TRLayerMultiEdit, self).__init__()

        # - Init
        self.aux = aux
        self.backup = {}
        self.contourClipboard = {}

        # -- Custom controls
        self.tr_trans_ctrl = TRTransformCtrl()

        # -- Quick Tool buttons
        self.lay_buttons = QtGui.QGridLayout()
        self.btn_transform = QtGui.QPushButton('Transform')
        self.btn_trans_res = QtGui.QPushButton('Reset')

        self.btn_transform.setToolTip('Affine transform selected layers.')
        self.btn_trans_res.setToolTip('Reset transformation fileds.')

        self.btn_transform.clicked.connect(self.layer_transform)
        self.btn_trans_res.clicked.connect(self.tr_trans_ctrl.reset)

        self.lay_buttons.addWidget(self.tr_trans_ctrl, 0, 0, 2, 8)
        self.lay_buttons.addWidget(self.btn_trans_res, 2, 0, 1, 4)
        self.lay_buttons.addWidget(self.btn_transform, 2, 4, 1, 4)

        self.tr_trans_ctrl.lay_controls.setMargin(0)

        self.addLayout(self.lay_buttons)
Пример #4
0
    def __init__(self, aux):
        super(TRNewLayerBlend, self).__init__()

        # - Init
        self.aux = aux
        self.process_array = []
        self.active_workspace = pWorkspace()
        self.active_canvas = self.active_workspace.getCanvas(True)

        # - Interface
        self.lay_buttons = QtGui.QGridLayout()

        self.chk_setAxis = QtGui.QPushButton('Set Axis')
        self.chk_swapAxis = QtGui.QPushButton('Swap')

        self.chk_setAxis.setCheckable(True)
        self.chk_swapAxis.setCheckable(True)

        self.chk_setAxis.clicked.connect(lambda: self.prepare_lerp())

        # -- Blend active layer to single selected layer
        self.mixer_dx = TRSliderCtrl('1', '1000', '0', 1)
        self.mixer_dx.sld_axis.valueChanged.connect(
            lambda: self.process_lerp())

        self.lay_buttons.addWidget(self.chk_setAxis, 0, 0, 1, 1)
        self.lay_buttons.addWidget(self.chk_swapAxis, 0, 1, 1, 1)

        self.addLayout(self.lay_buttons)
        self.addLayout(self.mixer_dx)
Пример #5
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()
Пример #6
0
    def __init__(self, parentWidget):
        super(WFontZones, self).__init__()

        # - Init
        self.grid = QtGui.QGridLayout()
        self.upperWidget = parentWidget
        self.activeFont = pFont()
        self.zoneData = {
            master: self.activeFont.zonesToTuples(master)
            for master in self.activeFont.masters()
        }

        # - Interface
        self.btn_apply = QtGui.QPushButton('Apply Changes')
        self.btn_reset = QtGui.QPushButton('Reset')
        self.btn_open = QtGui.QPushButton('Open')
        self.btn_save = QtGui.QPushButton('Save')
        self.btn_new = QtGui.QPushButton('Add New')
        self.btn_del = QtGui.QPushButton('Delete')

        self.cmb_layer = QtGui.QComboBox()
        self.cmb_layer.addItems(['All Layers'] + self.activeFont.masters())

        self.edt_pos = TRZLineEdit()
        self.edt_width = QtGui.QLineEdit()
        self.edt_name = QtGui.QLineEdit()

        self.edt_name.setPlaceholderText('Name')
        self.edt_pos.setPlaceholderText('Position')
        self.edt_width.setPlaceholderText('Width')

        self.btn_apply.clicked.connect(self.applyChanges)
        self.btn_reset.clicked.connect(self.resetChanges)
        self.btn_save.clicked.connect(self.exportZones)
        self.btn_open.clicked.connect(self.importZones)
        self.btn_new.clicked.connect(self.addZone)
        self.btn_del.clicked.connect(self.delZone)

        self.tree_fontZones = WTreeWidget(self.zoneData)

        # - Build
        lbl_name = QtGui.QLabel('Font Zones (Local)')
        lbl_name.setMaximumHeight(20)
        self.grid.addWidget(lbl_name, 0, 0, 1, 24)
        self.grid.addWidget(self.tree_fontZones, 1, 0, 15, 21)

        self.grid.addWidget(self.cmb_layer, 1, 21, 1, 3)
        self.grid.addWidget(self.edt_name, 2, 21, 1, 3)
        self.grid.addWidget(self.edt_pos, 3, 21, 1, 3)
        self.grid.addWidget(self.edt_width, 4, 21, 1, 3)
        self.grid.addWidget(self.btn_new, 5, 21, 1, 3)
        self.grid.addWidget(self.btn_del, 6, 21, 1, 3)

        self.grid.addWidget(self.btn_save, 12, 21, 1, 3)
        self.grid.addWidget(self.btn_open, 13, 21, 1, 3)
        self.grid.addWidget(self.btn_reset, 14, 21, 1, 3)
        self.grid.addWidget(self.btn_apply, 15, 21, 1, 3)
        self.setLayout(self.grid)
Пример #7
0
	def __init__(self):
		super(TRTransformCtrl, self).__init__()

		# - Combos 
		self.rad_or = QtGui.QRadioButton('ORG')
		self.rad_bl = QtGui.QRadioButton('BL')
		self.rad_tl = QtGui.QRadioButton('TL')
		self.rad_br = QtGui.QRadioButton('BR')
		self.rad_tr = QtGui.QRadioButton('TR')
		self.rad_ce = QtGui.QRadioButton('CEN')

		# - Spinboxes
		self.spb_scale_x = QtGui.QSpinBox()
		self.spb_scale_y = QtGui.QSpinBox()
		self.spb_translate_x = QtGui.QSpinBox()
		self.spb_translate_y = QtGui.QSpinBox()
		self.spb_shear = QtGui.QSpinBox()
		self.spb_rotate = QtGui.QSpinBox()

		self.spb_scale_x.setMinimum(0)
		self.spb_scale_y.setMinimum(0)
		self.spb_translate_x.setMinimum(-9999)
		self.spb_translate_y.setMinimum(-9999)
		self.spb_shear.setMinimum(-90)
		self.spb_rotate.setMinimum(-360)

		self.spb_scale_x.setMaximum(999)
		self.spb_scale_y.setMaximum(999)
		self.spb_translate_x.setMaximum(9999)
		self.spb_translate_y.setMaximum(9999)
		self.spb_shear.setMaximum(90)
		self.spb_rotate.setMaximum(360)

		self.reset()

		# - Build
		self.lay_controls = QtGui.QGridLayout()
		self.lay_controls.addWidget(QtGui.QLabel('Scale X:'),			0, 0, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Scale Y:'),			0, 1, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Trans. X:'),			0, 2, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Trans. Y:'),			0, 3, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Shear:'),				0, 4, 1, 1)
		self.lay_controls.addWidget(QtGui.QLabel('Rotate:'),			0, 5, 1, 1)
		self.lay_controls.addWidget(self.spb_scale_x,					1, 0, 1, 1)
		self.lay_controls.addWidget(self.spb_scale_y,					1, 1, 1, 1)
		self.lay_controls.addWidget(self.spb_translate_x,				1, 2, 1, 1)
		self.lay_controls.addWidget(self.spb_translate_y,				1, 3, 1, 1)
		self.lay_controls.addWidget(self.spb_shear,						1, 4, 1, 1)
		self.lay_controls.addWidget(self.spb_rotate,					1, 5, 1, 1)
		self.lay_controls.addWidget(self.rad_or,						2, 0, 1, 1)
		self.lay_controls.addWidget(self.rad_bl,						2, 1, 1, 1)
		self.lay_controls.addWidget(self.rad_tl,						2, 2, 1, 1)
		self.lay_controls.addWidget(self.rad_br,						2, 3, 1, 1)
		self.lay_controls.addWidget(self.rad_tr,						2, 4, 1, 1)
		self.lay_controls.addWidget(self.rad_ce,						2, 5, 1, 2)
				
		self.setLayout(self.lay_controls)
Пример #8
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)
Пример #9
0
	def __init__(self):
		super(tool_tab, self).__init__()
	
		# - Init
		self.active_font = pFont()
		self.class_data = {}
				
		# - Widgets
		self.cmb_layer = QtGui.QComboBox()
		self.cmb_layer.addItems(['All masters'] + self.active_font.masters())

		self.btn_loadFile = QtGui.QPushButton('From File')
		self.btn_loadFont = QtGui.QPushButton('From Font')
		self.btn_saveExpr = QtGui.QPushButton('Save')
		self.btn_loadExpr = QtGui.QPushButton('Load')
		self.btn_exec = QtGui.QPushButton('Execute')
		self.btn_help = QtGui.QPushButton('Help')
		self.btn_classKern = QtGui.QPushButton('Class Kerning')

		self.btn_classKern.setCheckable(True)
		self.btn_loadFile.setCheckable(True)
		self.btn_loadFont.setCheckable(True)
		
		self.btn_loadFile.setChecked(False)
		self.btn_loadFont.setChecked(False)
		self.btn_classKern.setChecked(True)
			
		self.btn_help.clicked.connect(lambda: QtGui.QMessageBox.information(None, 'Help', str_help))
		self.btn_loadFile.clicked.connect(self.classes_fromFile)
		self.btn_loadFont.clicked.connect(self.classes_fromFont)
		self.btn_exec.clicked.connect(self.process)
		self.btn_saveExpr.clicked.connect(self.expr_toFile)
		self.btn_loadExpr.clicked.connect(self.expr_fromFile)

		self.txt_editor = QtGui.QPlainTextEdit()
		
		# - Build layouts 
		layoutV = QtGui.QGridLayout() 
		layoutV.addWidget(QtGui.QLabel('Class kerning data:'),		0, 0, 1, 4)
		layoutV.addWidget(self.btn_loadFont, 						1, 0, 1, 2)
		layoutV.addWidget(self.btn_loadFile, 						1, 2, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Process:'),					2, 0, 1, 4)
		layoutV.addWidget(self.cmb_layer,							3, 0, 1, 2)
		layoutV.addWidget(self.btn_classKern,						3, 2, 1, 2)
		layoutV.addWidget(self.txt_editor,							5, 0, 30, 4)
		layoutV.addWidget(self.btn_saveExpr, 						36, 0, 1, 2)
		layoutV.addWidget(self.btn_loadExpr, 						36, 2, 1, 2)
		layoutV.addWidget(self.btn_help,							37, 0, 1, 2)
		layoutV.addWidget(self.btn_exec, 							37, 2, 1, 2)

		# - Set Widget
		self.setLayout(layoutV)
Пример #10
0
    def __init__(self):
        super(action_empty, self).__init__()

        # - Init
        self.active_font = None
        self.file_format = None

        # - Interface
        # ...

        # - Build
        lay_wgt = QtGui.QGridLayout()
        # ...
        self.setLayout(lay_wgt)

        print 'WARN:\t Action Not Implemented...'
Пример #11
0
    def __init__(self):
        super(TRWLayerSelect, self).__init__()

        # - Init
        self.glyph = None

        # -- Head
        self.lay_head = QtGui.QHBoxLayout()
        self.edt_glyphName = QtGui.QLineEdit()
        self.btn_refresh = QtGui.QPushButton('&Refresh')
        self.btn_refresh.clicked.connect(self.refresh)

        self.lay_head.addWidget(QtGui.QLabel('G:'))
        self.lay_head.addWidget(self.edt_glyphName)
        self.lay_head.addWidget(self.btn_refresh)
        self.addLayout(self.lay_head)

        # -- Layer List
        self.lst_layers = TRWMasterTableView(init_table_dict)
        self.lst_layers.selectionModel().selectionChanged.connect(
            self.set_selected)
        self.addWidget(self.lst_layers)
        self.refresh()

        # - Mode checks
        self.lay_checks = QtGui.QGridLayout()
        self.chk_outline = QtGui.QCheckBox('Outline')
        self.chk_guides = QtGui.QCheckBox('Guides')
        self.chk_anchors = QtGui.QCheckBox('Anchors')
        self.chk_lsb = QtGui.QCheckBox('LSB')
        self.chk_adv = QtGui.QCheckBox('Advance')
        self.chk_rsb = QtGui.QCheckBox('RSB')

        # - Set States
        self.chk_outline.setCheckState(QtCore.Qt.Checked)
        self.chk_adv.setCheckState(QtCore.Qt.Checked)

        # -- Build
        self.lay_checks.addWidget(self.chk_outline, 0, 0)
        self.lay_checks.addWidget(self.chk_guides, 0, 1)
        self.lay_checks.addWidget(self.chk_anchors, 0, 2)
        self.lay_checks.addWidget(self.chk_lsb, 1, 0)
        self.lay_checks.addWidget(self.chk_adv, 1, 1)
        self.lay_checks.addWidget(self.chk_rsb, 1, 2)

        self.addLayout(self.lay_checks)
Пример #12
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)
Пример #13
0
    def __init__(self):
        super(TRContourSelect, self).__init__()

        # -- Init
        self.table_dict = {0: {0: None}}  # Empty table
        self.layer_names = []  # Empty layer list
        self.table_columns = 'N,Sh,Cn,X,Y,Type,Rel'.split(',')

        # -- Widgets
        self.lay_head = QtGui.QGridLayout()

        self.edt_glyphName = QtGui.QLineEdit()
        self.cmb_layer = QtGui.QComboBox()

        self.btn_refresh = QtGui.QPushButton('&Refresh')
        self.btn_apply = QtGui.QPushButton('&Apply')
        self.btn_apply.setEnabled(False)

        # -- Build Layout
        self.lay_head.addWidget(QtGui.QLabel('G:'), 0, 0, 1, 1)
        self.lay_head.addWidget(self.edt_glyphName, 0, 1, 1, 5)
        self.lay_head.addWidget(self.btn_refresh, 0, 6, 1, 2)
        self.lay_head.addWidget(QtGui.QLabel('L:'), 1, 0, 1, 1)
        self.lay_head.addWidget(self.cmb_layer, 1, 1, 1, 5)
        self.lay_head.addWidget(self.btn_apply, 1, 6, 1, 2)
        self.addLayout(self.lay_head)

        # -- Node List Table
        self.tab_nodes = TRTableView(self.table_dict)
        self.addWidget(self.tab_nodes)

        self.btn_refresh.clicked.connect(lambda: self.refresh())
        self.cmb_layer.currentIndexChanged.connect(lambda: self.changeLayer())

        # -- Table Styling
        self.tab_nodes.horizontalHeader().setStretchLastSection(False)
        self.tab_nodes.setSortingEnabled(True)
        self.tab_nodes.horizontalHeader().sortIndicatorChanged.connect(
            lambda: self.tab_nodes.resizeColumnsToContents())
        self.tab_nodes.verticalHeader().hide()
        self.tab_nodes.resizeColumnsToContents()
        self.tab_nodes.selectionModel().selectionChanged.connect(
            self.selectionChanged)
        self.tab_nodes.itemChanged.connect(self.valueChanged)
Пример #14
0
	def __init__(self, font=None, parent=None):
		super(TRGlyphSelect, self).__init__()

		# - Init
		self.active_font = font
		self.parentWgt = self.parent if parent is None else parent

		# - Widgets
		# -- Buttons
		self.btn_filter = QtGui.QPushButton('Refresh')
		self.btn_filter.clicked.connect(self.refresh)

		self.chk_glyphName = QtGui.QCheckBox('Name')
		self.chk_glyphMark = QtGui.QCheckBox('Mark')
		self.chk_glyphUnicode = QtGui.QCheckBox('Unicode')
		self.chk_glyphChecked = QtGui.QCheckBox('Check all')

		self.chk_glyphName.setChecked(True)
		self.chk_glyphMark.setChecked(True)
		self.chk_glyphUnicode.setChecked(True)
		self.chk_glyphChecked.setChecked(True)
		
		# -- Fileds
		self.edt_filter = QtGui.QLineEdit()
		self.edt_filter.setPlaceholderText('Filter glyphnames')
		self.edt_filter.textChanged.connect(self.__filterClicked)

		self.lst_glyphNames = QtGui.QListView(self.parentWgt)
		self.model = QtGui.QStandardItemModel(self.lst_glyphNames)
		
		if self.active_font is not None:
			self.refresh()
		
		# -- Build Layout
		self.layout = QtGui.QGridLayout()
		self.layout.addWidget(QtGui.QLabel('Destination Glyphs:'),	0,0,1,4)
		self.layout.addWidget(self.edt_filter,			1,0,1,3)
		self.layout.addWidget(self.btn_filter,			1,3,1,1)
		self.layout.addWidget(self.chk_glyphName,		2,0,1,1)
		self.layout.addWidget(self.chk_glyphUnicode,	2,1,1,1)
		self.layout.addWidget(self.chk_glyphMark,		2,2,1,1)
		self.layout.addWidget(self.chk_glyphChecked,	2,3,1,1)
		self.layout.addWidget(self.lst_glyphNames,		3,0,1,4)
Пример #15
0
    def __init__(self, parentWidget):
        super(WFontMetrics, self).__init__()

        # - Init
        self.grid = QtGui.QGridLayout()
        self.upperWidget = parentWidget
        self.activeFont = pFont()
        self.metricData = {}
        self.refresh()

        # - Interface
        self.btn_apply = QtGui.QPushButton('Apply Changes')
        self.btn_reset = QtGui.QPushButton('Reset')
        self.btn_open = QtGui.QPushButton('Open')
        self.btn_save = QtGui.QPushButton('Save')

        self.btn_apply.clicked.connect(self.applyChanges)
        self.btn_reset.clicked.connect(self.resetChanges)
        self.btn_save.clicked.connect(self.exportMetrics)
        self.btn_open.clicked.connect(self.importMetrics)

        self.tab_fontMetrics = TRTableView(self.metricData)

        # - Build
        lbl_name = QtGui.QLabel('Font Metrics (All Masters)')
        lbl_name.setMaximumHeight(20)
        self.grid.addWidget(lbl_name, 0, 0, 1, 24)
        self.grid.addWidget(self.tab_fontMetrics, 1, 0, 5, 21)
        self.grid.addWidget(self.btn_save, 1, 21, 1, 3)
        self.grid.addWidget(self.btn_open, 2, 21, 1, 3)
        self.grid.addWidget(self.btn_reset, 4, 21, 1, 3)
        self.grid.addWidget(self.btn_apply, 5, 21, 1, 3)

        for i in range(1, 6):
            self.grid.setRowStretch(i, 2)

        self.setLayout(self.grid)
Пример #16
0
    def __init__(self):
        super(typerig_Panel, self).__init__()

        # - Init ----------------------------
        #self.setStyleSheet(ss_Toolbox_none)
        self.layers_selected = []

        # - Dialogs -------------------------
        self.layer_dialog = dlg_LayerSelect(self, pMode)

        # - Layers --------------------------
        self.chk_ActiveLayer = QtGui.QCheckBox('Active')
        self.chk_Masters = QtGui.QCheckBox('Masters')
        self.chk_Masks = QtGui.QCheckBox('Masks')
        self.chk_Service = QtGui.QCheckBox('Services')
        self.chk_Selected = QtGui.QCheckBox('Selected')

        self.chk_ActiveLayer.setCheckState(QtCore.Qt.Checked)

        self.chk_ActiveLayer.stateChanged.connect(self.layers_refresh)
        self.chk_Masters.stateChanged.connect(self.layers_refresh)
        self.chk_Masks.stateChanged.connect(self.layers_refresh)
        self.chk_Service.stateChanged.connect(self.layers_refresh)
        self.chk_Selected.stateChanged.connect(self.layers_refresh)

        self.layers_refresh()

        # - Glyphs --------------------------
        self.rad_glyph = QtGui.QRadioButton('Glyph')
        self.rad_window = QtGui.QRadioButton('Window')
        self.rad_selection = QtGui.QRadioButton('Selection')
        self.rad_font = QtGui.QRadioButton('Font')

        self.rad_glyph.toggled.connect(self.mode_refresh)
        self.rad_window.toggled.connect(self.mode_refresh)
        self.rad_selection.toggled.connect(self.mode_refresh)
        self.rad_font.toggled.connect(self.mode_refresh)

        self.rad_glyph.setChecked(True)

        self.rad_glyph.setEnabled(True)
        self.rad_window.setEnabled(True)
        self.rad_selection.setEnabled(True)
        self.rad_font.setEnabled(False)

        self.rad_glyph.setToolTip('Affect current glyph')
        self.rad_window.setToolTip('Affect glyphs in active window')
        self.rad_selection.setToolTip('Affect selected glyphs')
        self.rad_font.setToolTip('Affect the entire font')

        # - Buttons ------------------------
        self.btn_layersSelect = QtGui.QPushButton('Layers')
        self.btn_fold = QtGui.QPushButton('^')
        self.btn_unfold = QtGui.QPushButton('Restore Panel')

        self.btn_fold.setFixedHeight(self.chk_ActiveLayer.sizeHint.height() *
                                     2.5)
        self.btn_fold.setFixedWidth(self.chk_ActiveLayer.sizeHint.height())
        self.btn_unfold.setFixedHeight(self.chk_ActiveLayer.sizeHint.height() +
                                       5)

        self.btn_fold.setToolTip('Fold Panel.')
        self.btn_unfold.setToolTip('Unfold Panel.')
        self.btn_layersSelect.setToolTip('Select layers for processing.')

        self.btn_fold.clicked.connect(self.fold)
        self.btn_unfold.clicked.connect(self.fold)
        self.flag_fold = False

        # - Tabs --------------------------
        panel_vers = {
            n:
            OrderedDict([('Panel', toolName),
                         ('Version', eval('Panel.%s.app_version' % toolName))])
            for n, toolName in enumerate(Panel.modules)
        }

        self.options = TRTableView(panel_vers)
        self.options.verticalHeader().hide()

        # -- Dynamically load all tabs
        self.tabs = TRVTabWidget()

        # --- Load all tabs from this directory as modules. Check __init__.py
        # --- <dirName>.modules tabs/modules manifest in list format
        for toolName in Panel.modules:
            if ignorePanel not in toolName:
                self.tabs.addTab(eval('Panel.%s.tool_tab()' % toolName),
                                 toolName)

        # --- Add options tab
        self.tabs.addTab(self.options, '...')

        # - Layouts -------------------------------
        layoutV = QtGui.QVBoxLayout()
        layoutV.setContentsMargins(0, 0, 0, 0)

        self.lay_controller = QtGui.QGridLayout()
        self.fr_controller = QtGui.QFrame()
        self.lay_controller.setContentsMargins(15, 5, 5, 3)
        self.lay_controller.setSpacing(5)

        # -- Build layouts -------------------------------
        self.lay_controller.addWidget(self.chk_ActiveLayer, 0, 0, 1, 1)
        self.lay_controller.addWidget(self.chk_Masters, 0, 1, 1, 1)
        self.lay_controller.addWidget(self.chk_Masks, 0, 2, 1, 1)
        #self.lay_controller.addWidget(self.chk_Service, 	0, 3, 1, 1)
        self.lay_controller.addWidget(self.chk_Selected, 0, 3, 1, 1)
        self.lay_controller.addWidget(self.btn_fold, 0, 4, 2, 1)
        self.lay_controller.addWidget(self.rad_glyph, 1, 0, 1, 1)
        self.lay_controller.addWidget(self.rad_window, 1, 1, 1, 1)
        self.lay_controller.addWidget(self.rad_selection, 1, 2, 1, 1)
        self.lay_controller.addWidget(self.rad_font, 1, 3, 1, 1)

        layoutV.addWidget(self.btn_unfold)
        self.fr_controller.setLayout(self.lay_controller)

        layoutV.addWidget(self.fr_controller)
        layoutV.addWidget(self.tabs)

        self.btn_unfold.hide()

        # - Set Widget -------------------------------
        self.setLayout(layoutV)
        self.setWindowTitle('%s %s' % (app_name, app_version))
        self.setGeometry(100, 100, 300, 600)
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)  # Always on top!!

        # !!! Hotfix FL7 7355
        self.setMinimumSize(330, self.sizeHint.height())

        self.show()
Пример #17
0
	def __init__(self, parentWidget):
		super(WKernGroups, self).__init__()

		# - Init
		self.upper_widget = parentWidget
		self.active_font = pFont()
		self.application = pWorkspace()
		self.data_fontKerning = None
		self.data_clipboard = []

		# - Interface -------------------------
		# -- Conditional formatting -----------
		self.edt_formatting = QtGui.QLineEdit()
		self.edt_formatting.setPlaceholderText('Conditional formatting example: red==None; green > 0; blue < 0; yellow => 100;!hide<-50; !show==30;')
		
		self.btn_formatting_apply = QtGui.QPushButton('Format')
		self.btn_formatting_clear = QtGui.QPushButton('Clear')
		self.btn_formatting_color = QtGui.QPushButton('>')
		self.btn_formatting_color.setMaximumWidth(20)
		
		self.btn_formatting_color.clicked.connect(lambda: self.edt_formatting.setText(self.edt_formatting.text + self.cmb_select_color.currentText))
		self.btn_formatting_apply.clicked.connect(lambda: self.update_table_format(False))
		self.btn_formatting_clear.clicked.connect(lambda: self.update_table_format(True))

		self.cmb_select_color = QtGui.QComboBox()

		colorNames = QtGui.QColor.colorNames()
		for i in range(len(colorNames)):
			self.cmb_select_color.addItem(colorNames[i])
			self.cmb_select_color.setItemData(i, QtGui.QColor(colorNames[i]), QtCore.Qt.DecorationRole)

		self.cmb_select_color.setCurrentIndex(colorNames.index('red'))

		# -- Cell highlighter and search ------
		self.edt_search_pair = QtGui.QLineEdit()
		self.edt_search_regex = QtGui.QLineEdit()
		
		self.edt_search_pair.setPlaceholderText('Pair search example: A|V; @O|@A; Where A|V plain pair and @O|@A classes containing O and A.')
		self.edt_search_regex.setPlaceholderText('RegEx search example: .*.O.*.A.*; Note: Pair source is [space] separated!')

		self.btn_search_pair_under = QtGui.QPushButton('Current Pair')
		self.btn_search_pair = QtGui.QPushButton('Find Pairs')
		self.btn_search_regex = QtGui.QPushButton('Find RegEx')
		self.btn_search_hide = QtGui.QPushButton('Hide others')

		self.btn_search_hide.setCheckable(True)
		
		self.btn_search_hide.clicked.connect(lambda: self.update_table_show_all())
		self.btn_search_pair_under.clicked.connect(lambda: self.update_table_hightlights(False))
		self.btn_search_pair.clicked.connect(lambda: self.update_table_hightlights(True))
		self.btn_search_regex.clicked.connect(lambda: self.update_table_regex())

		# -- Table ----------------------------
		self.btn_fontKerning_autoupdate = QtGui.QPushButton('Auto Update')
		self.btn_fontKerning_preview = QtGui.QPushButton('Preview pairs')
		self.btn_layer_preview = QtGui.QPushButton('Preview layers')
		self.btn_fontKerning_update = QtGui.QPushButton('Update Font')
		self.tab_fontKerning = KernTableWidget(self)
		
		self.btn_fontKerning_autoupdate.setCheckable(True)
		self.btn_fontKerning_preview.setCheckable(True)
		self.btn_layer_preview.setCheckable(True)
		self.btn_fontKerning_autoupdate.setChecked(True)
		self.btn_fontKerning_update.clicked.connect(lambda: self.update_font())

		# - Menus & Actions --------------------
		# -- Main Database actions
		self.menu_data = QtGui.QMenu('Kerning Data', self)
		act_data_import = QtGui.QAction('Import Kerning', self)
		act_data_export = QtGui.QAction('Export Kerning', self)
		act_data_font = QtGui.QAction('Load from Font', self)
		act_data_reset = QtGui.QAction('Reset Font Kerning Data', self)

		act_data_import.setEnabled(False)
		act_data_export.setEnabled(False)

		self.menu_data.addAction(act_data_font)
		self.menu_data.addSeparator()
		self.menu_data.addAction(act_data_import)
		self.menu_data.addAction(act_data_export)
		self.menu_data.addSeparator()
		self.menu_data.addSeparator()
		self.menu_data.addAction(act_data_reset)

		#act_data_import.triggered.connect(lambda: self.file_load_groups(True))
		#act_data_export.triggered.connect(lambda: self.file_export_groups(True))
		act_data_font.triggered.connect(lambda: self.kerning_from_font())
		act_data_reset.triggered.connect(lambda: self.kerning_reset())

		# -- Pairs
		self.menu_pair = QtGui.QMenu('Pairs', self)
		act_pair_add = QtGui.QAction('Add new pair', self)
		act_pair_del = QtGui.QAction('Remove pair', self)
		act_pair_update = QtGui.QAction('Update from Font', self)
		act_pair_copy = QtGui.QAction('Copy value(s)', self)
		act_pair_paste = QtGui.QAction('Paste value(s)', self)
		act_pair_copy_string = QtGui.QAction('Copy pairs string', self)
		act_pair_copy_leader = QtGui.QAction('Copy pairs string as Glyph Names', self)
		act_pair_save_krn_clas = QtGui.QAction('Save CLASS pairs as KRN...', self)
		act_pair_save_krn_plain = QtGui.QAction('Save PLAIN pairs as KRN...', self)

		self.menu_pair.addAction(act_pair_add)
		self.menu_pair.addAction(act_pair_del)
		self.menu_pair.addAction(act_pair_update)
		self.menu_pair.addSeparator()
		self.menu_pair.addAction(act_pair_copy)
		self.menu_pair.addAction(act_pair_paste)
		self.menu_pair.addSeparator()
		self.menu_pair.addAction(act_pair_copy_string)
		self.menu_pair.addAction(act_pair_copy_leader)
		self.menu_pair.addSeparator()
		self.menu_pair.addAction(act_pair_save_krn_clas)
		self.menu_pair.addAction(act_pair_save_krn_plain)

		act_pair_add.setEnabled(False)
		
		#act_pair_add.triggered.connect(lambda: self.pair_add())
		act_pair_del.triggered.connect(lambda: self.pair_del())
		act_pair_update.triggered.connect(lambda: self.pair_update_from_source())
		act_pair_copy.triggered.connect(lambda: self.pair_copy_paste(False))
		act_pair_paste.triggered.connect(lambda: self.pair_copy_paste(True))
		act_pair_copy_string.triggered.connect(lambda: self.pair_copy_string(False))
		act_pair_copy_leader.triggered.connect(lambda: self.pair_copy_string(True))
		act_pair_save_krn_clas.triggered.connect(lambda: self.pair_save_krn(False))
		act_pair_save_krn_plain.triggered.connect(lambda: self.pair_save_krn(True))

		# -- Tools
		self.menu_tools = QtGui.QMenu('Tools', self)
		act_tools_fl_extend = QtGui.QAction('Extend Kerning', self)
		act_tools_fl_match = QtGui.QAction('Match Kerning', self)
		act_tools_tr_replace = QtGui.QAction('Find && Replace', self)
		act_tools_tr_round = QtGui.QAction('Quantize', self)
		act_tools_tr_scale = QtGui.QAction('Scale', self)
		act_tools_tr_filter = QtGui.QAction('Filter', self) # High-pass, low-pass, band-pass
		act_tools_tr_clean = QtGui.QAction('Cleanup', self)
		act_tools_tr_patchboard = QtGui.QAction('Patchboard', self)

		self.menu_tools.addAction(act_tools_fl_extend)
		self.menu_tools.addAction(act_tools_fl_match)
		self.menu_tools.addSeparator()
		self.menu_tools.addAction(act_tools_tr_replace)
		self.menu_tools.addSeparator()
		self.menu_tools.addAction(act_tools_tr_round)
		self.menu_tools.addAction(act_tools_tr_scale)
		self.menu_tools.addAction(act_tools_tr_filter)
		self.menu_tools.addAction(act_tools_tr_clean)
		self.menu_tools.addSeparator()
		self.menu_tools.addAction(act_tools_tr_patchboard)

		act_tools_fl_extend.setEnabled(False)
		act_tools_fl_match.setEnabled(False)
		act_tools_tr_round.setEnabled(False)
		act_tools_tr_scale.setEnabled(False)
		act_tools_tr_filter.setEnabled(False)
		act_tools_tr_clean.setEnabled(False)
		act_tools_tr_patchboard.setEnabled(False)

		act_tools_tr_replace.triggered.connect(lambda: self.tools_replace())

		# -- View
		self.menu_view = QtGui.QMenu('View', self)
		act_view_show_all = QtGui.QAction('Show hidden rows', self)
		act_view_hide_selected = QtGui.QAction('Hide selected rows', self)
		act_view_hide_matching = QtGui.QAction('Hide matching pairs', self)
		act_view_hide_nonmatching = QtGui.QAction('Hide non-matching pairs', self)
		act_view_pair_preview = QtGui.QAction('Preview selected pairs', self)

		self.menu_view.addAction(act_view_show_all)
		self.menu_view.addAction(act_view_pair_preview)
		self.menu_view.addSeparator()
		self.menu_view.addAction(act_view_hide_selected)
		self.menu_view.addAction(act_view_hide_matching)
		self.menu_view.addAction(act_view_hide_nonmatching)

		act_view_pair_preview.triggered.connect(lambda: self.pair_preview_string(self.btn_layer_preview.isChecked()))
		act_view_show_all.triggered.connect(lambda: self.update_table_show_all())
		act_view_hide_selected.triggered.connect(lambda: self.update_table_hide_selected())
		act_view_hide_matching.triggered.connect(lambda: self.update_table_hide_matching(True))
		act_view_hide_nonmatching.triggered.connect(lambda: self.update_table_hide_matching(False))

		# -- Status bar
		self.lbl_status_selection_len = QtGui.QLabel('0')
		self.lbl_status_selection_med = QtGui.QLabel('0')
		self.lbl_status_pairs_len = QtGui.QLabel('0')
		self.lbl_status_pairs_hidden = QtGui.QLabel('0')
		self.lbl_status_masters_len = QtGui.QLabel('0')

		# -- MACOS buttons menu
		self.btn_mac_data_import = QtGui.QPushButton('Import')
		self.btn_mac_data_export = QtGui.QPushButton('Export')
		self.btn_mac_data_font = QtGui.QPushButton('From Font')
		self.btn_mac_data_reset = QtGui.QPushButton('Reset Kerning')

		self.btn_mac_data_import.setEnabled(False)
		self.btn_mac_data_export.setEnabled(False)

		self.btn_mac_data_font.clicked.connect(lambda: self.kerning_from_font())

		# - Build ------------------------------------------
		self.lay_grid = QtGui.QGridLayout()
		# -- MAC buttons
		if system() == 'Darwin':
			self.lay_grid.addWidget(self.btn_mac_data_font,					0, 0, 1, 10)
			self.lay_grid.addWidget(self.btn_mac_data_import,				0, 10, 1, 5)	
			self.lay_grid.addWidget(self.btn_mac_data_export,				0, 15, 1, 5)	
			self.lay_grid.addWidget(self.btn_mac_data_reset,				0, 20, 1, 5)			

		# -- Regular interface
		
		self.lay_grid.addWidget(self.edt_search_pair,						1, 0, 1, 20)	
		self.lay_grid.addWidget(self.btn_search_pair,						1, 20, 1, 5)	
		self.lay_grid.addWidget(self.btn_search_pair_under,					1, 25, 1, 5)
		self.lay_grid.addWidget(self.btn_fontKerning_preview,				1, 30, 1, 5)
		self.lay_grid.addWidget(self.btn_search_hide,						2, 25, 1, 5)
		self.lay_grid.addWidget(self.btn_layer_preview,						2, 30, 1, 5)

		self.lay_grid.addWidget(self.edt_search_regex,						2, 0, 1, 20)	
		self.lay_grid.addWidget(self.btn_search_regex,						2, 20, 1, 5)
		
		self.lay_grid.addWidget(self.btn_fontKerning_autoupdate,			1, 35, 1, 5)
		self.lay_grid.addWidget(self.btn_fontKerning_update,				2, 35, 1, 5)
		
		self.lay_grid.addWidget(self.tab_fontKerning,						4, 0, 32, 40)

		self.lay_grid.addWidget(self.cmb_select_color,						36, 0, 1, 5)
		self.lay_grid.addWidget(self.btn_formatting_color,					36, 5, 1, 1)
		self.lay_grid.addWidget(self.edt_formatting,						36, 6, 1, 24)
		self.lay_grid.addWidget(self.btn_formatting_apply,					36, 30, 1, 5)
		self.lay_grid.addWidget(self.btn_formatting_clear,					36, 35, 1, 5)
		self.lay_grid.addWidget(self.btn_formatting_clear,					36, 35, 1, 5)
		
		self.lay_grid.addWidget(QtGui.QLabel('SELECTION:'),					37, 0, 1, 4)
		self.lay_grid.addWidget(self.lbl_status_selection_len,				37, 4, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('MEAN:'),					37, 8, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_selection_med,				37, 12, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('PAIRS:'),						37, 16, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_pairs_len,					37, 20, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('HIDDEN:'),					37, 24, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_pairs_hidden,				37, 28, 1, 4)
		self.lay_grid.addWidget(QtGui.QLabel('MASTERS:'),					37, 32, 1, 4)	
		self.lay_grid.addWidget(self.lbl_status_masters_len,				37, 36, 1, 4)

		
		self.lay_grid.setSpacing(3)
		self.setLayout(self.lay_grid)
Пример #18
0
    def __init__(self):
        super(SGPreflight, self).__init__()

        # - Init
        temp = pGlyph()
        self.active_font = pFont()
        layer_names = [
            layer.name for layer in temp.layers() if '#' not in layer.name
        ]

        # - Automat
        self.auto_fl = Automat()

        # - Widgets
        # - Combo Boxes
        self.cmb_select_color = QtGui.QComboBox()
        self.color_codes = {
            name: value
            for name, value, discard in fontMarkColors
        }

        for i in range(len(fontMarkColors)):
            self.cmb_select_color.addItem(fontMarkColors[i][0])
            self.cmb_select_color.setItemData(
                i, QtGui.QColor(fontMarkColors[i][2]),
                QtCore.Qt.DecorationRole)

        # -- Boxes
        self.box_preflight = QtGui.QGroupBox('Font Preflight:')
        self.box_audit = QtGui.QGroupBox('Font Audit:')

        # -- Progress bar
        self.progress = QtGui.QProgressBar()
        self.progress.setMaximum(100)

        # -- Report Tree
        self.audit_report = OrderedDict(empty_record)
        self.header_names = ['Glyph', 'Layers']
        self.audit_tree = TRWAuditTree(self.audit_report, self.header_names)
        self.audit_tree.selectionModel().selectionChanged.connect(
            self.auto_preview)

        # -- Action Buttons
        # --- Preflight
        self.btn_preflight_info = QtGui.QPushButton('Edit Font Info')
        self.btn_preflight_audit = QtGui.QPushButton('Audit Font')
        self.btn_preflight_clean = QtGui.QPushButton(
            'Cleanup auto layers, unused tags and labels')
        self.btn_preflight_clean_flag = QtGui.QPushButton(
            'Remove glyphs marked with:')
        self.btn_preflight_actions = QtGui.QPushButton('Open Actions')
        self.btn_preflight_save = QtGui.QPushButton('Save Font')
        self.btn_preflight_export = QtGui.QPushButton('Export Font')

        self.btn_preflight_info.clicked.connect(
            lambda n: self.auto_fl.run('Font_Info'))
        self.btn_preflight_actions.clicked.connect(
            lambda n: self.auto_fl.run('Action'))
        self.btn_preflight_save.clicked.connect(
            lambda n: self.auto_fl.run('SaveFontAs'))
        self.btn_preflight_export.clicked.connect(
            lambda n: self.auto_fl.run('Export_Fonts'))
        self.btn_preflight_clean.clicked.connect(
            lambda: self.process_cleanup(mode='auto'))
        self.btn_preflight_clean_flag.clicked.connect(
            lambda: self.process_cleanup(mode='temp'))

        # --- Audit
        self.btn_audit_reset = QtGui.QPushButton('Reset Record')
        self.btn_audit_select = QtGui.QPushButton('Auto Select Glyphs')
        self.btn_audit_select.setCheckable(True)
        self.btn_audit_select.setChecked(False)
        self.btn_preflight_audit.clicked.connect(self.process_audit)
        self.btn_audit_reset.clicked.connect(self.reset)

        # - Build Layout
        lay_main = QtGui.QVBoxLayout()
        lay_preflight = QtGui.QGridLayout()
        lay_preflight.addWidget(QtGui.QLabel('1: Update font info: version.'),
                                0, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_info, 1, 0, 1, 4)
        lay_preflight.addWidget(
            QtGui.QLabel('2: Audit Font for known glyph problems.'), 2, 0, 1,
            4)
        lay_preflight.addWidget(self.btn_preflight_audit, 3, 0, 1, 4)
        lay_preflight.addWidget(QtGui.QLabel('3: Cleanup Font:'), 4, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_clean, 5, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_clean_flag, 7, 0, 1, 2)
        lay_preflight.addWidget(self.cmb_select_color, 7, 2, 1, 2)
        lay_preflight.addWidget(
            QtGui.QLabel(
                '4: All glyphs/masters: Apply rounding; Decompose; Convert to TT curves.'
            ), 8, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_actions, 9, 0, 1, 4)
        lay_preflight.addWidget(QtGui.QLabel('5: Save your work.'), 10, 0, 1,
                                4)
        lay_preflight.addWidget(self.btn_preflight_save, 11, 0, 1, 4)
        lay_preflight.addWidget(QtGui.QLabel('6: Export fonts.'), 12, 0, 1, 4)
        lay_preflight.addWidget(self.btn_preflight_export, 13, 0, 1, 4)
        self.box_preflight.setLayout(lay_preflight)

        lay_audit = QtGui.QGridLayout()
        lay_audit.addWidget(self.btn_audit_select, 0, 6, 1, 3)
        lay_audit.addWidget(self.btn_audit_reset, 0, 9, 1, 3)
        lay_audit.addWidget(QtGui.QLabel('Audit Report:'), 1, 6, 1, 6)
        lay_audit.addWidget(self.audit_tree, 2, 6, 20, 6)
        self.box_audit.setLayout(lay_audit)

        lay_split = QtGui.QHBoxLayout()
        lay_split.addWidget(self.box_preflight)
        lay_split.addWidget(self.box_audit)
        lay_main.addLayout(lay_split)
        lay_main.addWidget(self.progress)
        self.setLayout(lay_main)

        # - Finish
        self.setMinimumSize(300, self.sizeHint.height())
Пример #19
0
    def __init__(self):
        super(dlg_DeltaMachine, self).__init__()

        # - Init
        #self.setStyleSheet(ss_controls)

        self.pMode = 0
        self.active_font = pFont()
        #self.data_glyphs = getProcessGlyphs(self.pMode)
        self.data_PointArrays = {}
        self.data_stems = {}
        self.ratio_source = {}
        self.ratio_target = {}
        self.italic_angle = 0

        # - Basic Widgets
        # -- Master table
        self.tab_masters = WTableView(table_dict)
        self.table_populate()
        self.tab_masters.selectionModel().selectionChanged.connect(
            self.set_sliders)

        # -- Combos
        self.cmb_infoArrays = QtGui.QComboBox()

        # -- Buttons
        self.btn_execute = QtGui.QPushButton('Execute transformation')
        self.btn_tableRefresh = QtGui.QPushButton('Reset')
        self.chk_tableLock = QtGui.QPushButton('Lock')
        self.btn_tableSave = QtGui.QPushButton('Save')
        self.btn_tableLoad = QtGui.QPushButton('Load')
        self.btn_getVstems = QtGui.QPushButton('Get V-stems')
        self.btn_getHstems = QtGui.QPushButton('Get H-stems')
        self.btn_tableCheck = QtGui.QPushButton('Check All')
        self.btn_resetT = QtGui.QPushButton('Reset dX dY')
        self.btn_getTx = QtGui.QPushButton('Get V[dX]')
        self.btn_getTy = QtGui.QPushButton('Get H[dY]')
        self.btn_getArrays = QtGui.QPushButton('Get Master Sources')

        self.btn_getPart = QtGui.QPushButton('Get Part')
        self.btn_getWhole = QtGui.QPushButton('Get Whole')
        self.btn_pushWidthPW = QtGui.QPushButton('Eval Width')
        self.btn_pushHeightPW = QtGui.QPushButton('Eval Height')
        self.btn_pushWidth = QtGui.QPushButton('Set Width Ratio')
        self.btn_pushHeight = QtGui.QPushButton('Set Height Ratio')

        self.btn_tableCheck.clicked.connect(self.table_check_all)
        self.btn_tableRefresh.clicked.connect(self.table_populate)
        self.btn_tableSave.clicked.connect(self.file_save_deltas)
        self.btn_tableLoad.clicked.connect(self.file_load_deltas)
        self.btn_execute.clicked.connect(self.table_execute)
        self.chk_tableLock.clicked.connect(
            lambda: self.tab_masters.lockTable())

        self.btn_getPart.clicked.connect(lambda: self.get_ratio(True))
        self.btn_getWhole.clicked.connect(lambda: self.get_ratio(False))
        self.btn_pushWidthPW.clicked.connect(
            lambda: self.push_ratio(False, True))
        self.btn_pushHeightPW.clicked.connect(
            lambda: self.push_ratio(True, True))
        self.btn_pushWidth.clicked.connect(
            lambda: self.push_ratio(False, False))
        self.btn_pushHeight.clicked.connect(
            lambda: self.push_ratio(True, False))

        self.btn_getArrays.clicked.connect(lambda: self.get_PointArrays(None))
        self.btn_getVstems.clicked.connect(lambda: self.get_Stems(True))
        self.btn_getHstems.clicked.connect(lambda: self.get_Stems(False))
        self.btn_getTx.clicked.connect(lambda: self.get_Stems(True, False))
        self.btn_getTy.clicked.connect(lambda: self.get_Stems(False, False))

        # -- Check buttons
        self.chk_italic = QtGui.QPushButton('Italic')
        self.chk_single = QtGui.QPushButton('Anisotropic')
        self.chk_preview = QtGui.QPushButton('Live Preview')
        self.chk_boundry = QtGui.QPushButton('Fix Boundry')
        self.chk_single.setToolTip(
            'Active: Use X and Y to control interpolation.')
        self.chk_tableLock.setCheckable(True)
        self.chk_single.setCheckable(True)
        self.chk_italic.setCheckable(True)
        self.chk_preview.setCheckable(True)
        self.chk_boundry.setCheckable(True)
        self.chk_single.setChecked(False)
        self.chk_italic.setChecked(False)
        self.chk_preview.setChecked(False)
        self.chk_boundry.setChecked(True)

        # -- Radio
        self.rad_glyph = QtGui.QRadioButton('Glyph')
        self.rad_window = QtGui.QRadioButton('Window')
        self.rad_selection = QtGui.QRadioButton('Selection')
        self.rad_font = QtGui.QRadioButton('Font')

        self.rad_glyph.setChecked(True)
        self.rad_glyph.setEnabled(True)
        self.rad_window.setEnabled(True)
        self.rad_selection.setEnabled(True)
        self.rad_font.setEnabled(True)

        self.rad_glyph.toggled.connect(self.table_refresh)
        self.rad_window.toggled.connect(self.table_refresh)
        self.rad_selection.toggled.connect(self.table_refresh)
        self.rad_font.toggled.connect(self.table_refresh)

        # -- Sliders
        self.mixer_dx = TRSliderCtrl('1', '1000', '0', 1)
        self.mixer_dy = TRSliderCtrl('1', '1000', '0', 1)
        self.scaler_dx = TRSliderCtrl('1', '200', '100', 1)
        self.scaler_dy = TRSliderCtrl('1', '200', '100', 1)

        self.mixer_dx.sld_axis.valueChanged.connect(lambda: self.process_scale(
            eGlyph(),
            anisotropic=self.chk_single.isChecked(),
            live_update=self.chk_preview.isChecked()))
        self.mixer_dy.sld_axis.valueChanged.connect(lambda: self.process_scale(
            eGlyph(),
            anisotropic=self.chk_single.isChecked(),
            live_update=self.chk_preview.isChecked()))
        self.scaler_dx.sld_axis.valueChanged.connect(
            lambda: self.process_scale(eGlyph(),
                                       anisotropic=self.chk_single.isChecked(),
                                       live_update=self.chk_preview.isChecked(
                                       )))
        self.scaler_dy.sld_axis.valueChanged.connect(
            lambda: self.process_scale(eGlyph(),
                                       anisotropic=self.chk_single.isChecked(),
                                       live_update=self.chk_preview.isChecked(
                                       )))

        # - Build layout
        layoutV = QtGui.QGridLayout()
        layoutV.addWidget(QtGui.QLabel('Preferences:'), 0, 0, 1, 1)
        layoutV.addWidget(self.btn_tableCheck, 0, 1, 1, 2)
        layoutV.addWidget(self.chk_tableLock, 0, 3, 1, 2)
        layoutV.addWidget(self.btn_tableSave, 0, 5, 1, 1)
        layoutV.addWidget(self.btn_tableLoad, 0, 6, 1, 2)
        layoutV.addWidget(self.btn_tableRefresh, 0, 8, 1, 1)
        layoutV.addWidget(QtGui.QLabel('Source:'), 0, 10, 1, 1,
                          QtCore.Qt.AlignRight)
        layoutV.addWidget(self.btn_getVstems, 0, 11, 1, 2)
        layoutV.addWidget(self.btn_getHstems, 0, 13, 1, 2)
        layoutV.addWidget(QtGui.QLabel('Ratio BBOX:'), 0, 15, 1, 1,
                          QtCore.Qt.AlignRight)
        layoutV.addWidget(self.btn_getPart, 0, 16, 1, 1)
        layoutV.addWidget(self.btn_getWhole, 0, 17, 1, 1)
        layoutV.addWidget(self.btn_pushWidthPW, 0, 18, 1, 1)
        layoutV.addWidget(self.btn_pushHeightPW, 0, 19, 1, 1)

        layoutV.addWidget(QtGui.QLabel('Master data:'), 1, 0, 1, 1)
        layoutV.addWidget(self.cmb_infoArrays, 1, 1, 1, 4)
        layoutV.addWidget(self.btn_getArrays, 1, 5, 1, 4)
        layoutV.addWidget(QtGui.QLabel('Target:'), 1, 10, 1, 1,
                          QtCore.Qt.AlignRight)
        layoutV.addWidget(self.btn_getTx, 1, 11, 1, 2)
        layoutV.addWidget(self.btn_getTy, 1, 13, 1, 2)
        layoutV.addWidget(QtGui.QLabel('Populate:'), 1, 15, 1, 1,
                          QtCore.Qt.AlignRight)
        layoutV.addWidget(self.btn_pushWidth, 1, 16, 1, 2)
        layoutV.addWidget(self.btn_pushHeight, 1, 18, 1, 2)

        layoutV.addWidget(self.tab_masters, 2, 0, 15, 20)

        layoutV.addWidget(QtGui.QLabel('LERP [dX]:'), 23, 0, 1, 1,
                          QtCore.Qt.AlignTop)
        layoutV.addLayout(self.mixer_dx, 23, 1, 1, 4)
        layoutV.addWidget(QtGui.QLabel('[dY]:'), 23, 5, 1, 1,
                          QtCore.Qt.AlignTop | QtCore.Qt.AlignRight)
        layoutV.addLayout(self.mixer_dy, 23, 6, 1, 4)
        layoutV.addWidget(QtGui.QLabel('Width:'), 23, 10, 1, 1,
                          QtCore.Qt.AlignTop | QtCore.Qt.AlignRight)
        layoutV.addLayout(self.scaler_dx, 23, 11, 1, 4)
        layoutV.addWidget(QtGui.QLabel('Height:'), 23, 15, 1, 1,
                          QtCore.Qt.AlignTop | QtCore.Qt.AlignRight)
        layoutV.addLayout(self.scaler_dy, 23, 16, 1, 4)

        layoutV.addWidget(QtGui.QLabel('Process:'), 25, 0, 1, 1)
        layoutV.addWidget(self.rad_glyph, 25, 1, 1, 1)
        layoutV.addWidget(self.rad_window, 25, 2, 1, 1)
        layoutV.addWidget(self.rad_selection, 25, 3, 1, 1)
        layoutV.addWidget(self.rad_font, 25, 4, 1, 1)
        layoutV.addWidget(QtGui.QLabel('Mode:'), 25, 5, 1, 1)
        layoutV.addWidget(self.chk_single, 25, 6, 1, 2)
        layoutV.addWidget(self.chk_italic, 25, 8, 1, 2)
        layoutV.addWidget(self.chk_boundry, 25, 10, 1, 2)
        layoutV.addWidget(self.chk_preview, 25, 12, 1, 3)
        layoutV.addWidget(self.btn_execute, 25, 15, 1, 5)

        # - Set Widget
        self.setLayout(layoutV)
        self.setWindowTitle('%s %s' % (app_name, app_version))
        self.setGeometry(300, 300, 1150, 700)
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)  # Always on top!!

        # !!! Hotfix FL7 7355
        self.setMinimumSize(980, self.sizeHint.height())

        self.show()
Пример #20
0
    def __init__(self, parentWidget):
        super(WKernGroups, self).__init__()

        # - Init
        self.upper_widget = parentWidget
        self.active_font = pFont()
        self.kern_group_data = {}  #self.active_font.kerning_groups_to_dict()

        # - Interface
        lbl_name = QtGui.QLabel('Kerning classes')
        lbl_act = QtGui.QLabel('Actions (selected items):')
        lbl_name.setMaximumHeight(20)
        lbl_act.setMaximumHeight(20)

        self.cmb_layer = QtGui.QComboBox()
        self.cmb_layer.addItems(self.active_font.masters())
        self.cmb_layer.currentIndexChanged.connect(
            lambda: self.update_data(self.kern_group_data))

        self.btn_apply = QtGui.QPushButton('Apply changes')
        self.btn_write = QtGui.QPushButton('Write changes')
        self.btn_reset = QtGui.QPushButton('Clear Font classes')

        self.btn_apply.clicked.connect(lambda: self.apply_changes(False))
        self.btn_write.clicked.connect(lambda: self.apply_changes(True))
        self.btn_reset.clicked.connect(lambda: self.reset_classes())

        self.tab_groupKern = GroupTableView()

        # - Menus & Actions
        # -- Main Database actions
        self.menu_data = QtGui.QMenu('Class Data', self)
        act_data_open = QtGui.QAction('Open TypeRig Classes (JSON)', self)
        act_data_save = QtGui.QAction('Save TypeRig Classes (JSON)', self)
        act_data_import = QtGui.QAction('Import FontLab Classes (JSON)', self)
        act_data_export = QtGui.QAction('Export FontLab Classes (JSON)', self)
        act_data_import_font = QtGui.QAction('Load Classes from Font', self)
        act_data_build_composite = QtGui.QAction('Auto Build Classes', self)
        act_data_reset = QtGui.QAction('Reset Font Class Data', self)
        act_data_write = QtGui.QAction('Write class data to Font', self)

        self.menu_data.addAction(act_data_import_font)
        self.menu_data.addAction(act_data_build_composite)
        self.menu_data.addSeparator()
        self.menu_data.addAction(act_data_open)
        self.menu_data.addAction(act_data_save)
        self.menu_data.addSeparator()
        self.menu_data.addAction(act_data_import)
        self.menu_data.addAction(act_data_export)
        self.menu_data.addSeparator()
        self.menu_data.addAction(act_data_reset)
        self.menu_data.addAction(act_data_write)

        act_data_open.triggered.connect(lambda: self.file_load_groups(True))
        act_data_save.triggered.connect(lambda: self.file_save_groups(True))
        act_data_import.triggered.connect(lambda: self.file_load_groups(False))
        #act_data_export.triggered.connect()
        act_data_import_font.triggered.connect(lambda: self.from_font())
        act_data_build_composite.triggered.connect(
            lambda: self.from_composites())
        act_data_reset.triggered.connect(lambda: self.reset_classes())
        act_data_write.triggered.connect(lambda: self.apply_changes(True))

        # -- Main Class actions
        self.menu_class = QtGui.QMenu('Class Management', self)
        act_class_add = QtGui.QAction('Add new class', self)
        act_class_find = QtGui.QAction('Find and replace class names', self)
        act_class_copy = QtGui.QAction('Duplicate classes', self)
        act_class_merge = QtGui.QAction('Merge classes to new', self)
        act_class_mdel = QtGui.QAction('Merge and remove classes', self)
        act_class_del = QtGui.QAction('Remove classes', self)
        act_class_prefix = QtGui.QAction('Add prefix to class name', self)

        self.menu_class.addAction(act_class_add)
        self.menu_class.addAction(act_class_find)
        self.menu_class.addAction(act_class_copy)
        self.menu_class.addAction(act_class_merge)
        self.menu_class.addAction(act_class_prefix)
        self.menu_class.addAction(act_class_mdel)
        self.menu_class.addAction(act_class_del)

        act_class_add.triggered.connect(lambda: self.class_add_new())
        act_class_find.triggered.connect(lambda: self.class_find_replace())
        act_class_copy.triggered.connect(lambda: self.class_copy())
        act_class_merge.triggered.connect(lambda: self.class_merge(False))
        act_class_mdel.triggered.connect(lambda: self.class_merge(True))
        act_class_del.triggered.connect(lambda: self.class_del())
        act_class_prefix.triggered.connect(lambda: self.class_prefix())

        # -- Change class type
        self.menu_type = QtGui.QMenu('Class Type', self)
        act_type_Left = QtGui.QAction('Set KernLeft (1st)', self)
        act_type_Right = QtGui.QAction('Set KernRight (2nd)', self)
        act_type_Both = QtGui.QAction('Set KernBothSide (1st and 2nd)', self)
        act_type_toggle = QtGui.QAction('Toggle class type', self)

        act_type_Left.triggered.connect(lambda: self.set_type('KernLeft'))
        act_type_Right.triggered.connect(lambda: self.set_type('KernRight'))
        act_type_Both.triggered.connect(lambda: self.set_type('KernBothSide'))
        act_type_toggle.triggered.connect(lambda: self.toggle_type())

        self.menu_type.addAction(act_type_Left)
        self.menu_type.addAction(act_type_Right)
        self.menu_type.addAction(act_type_Both)
        self.menu_type.addAction(act_type_toggle)

        # -- Modify Members
        self.menu_memb = QtGui.QMenu('Class Members', self)
        act_memb_sel = QtGui.QAction('Select Glyphs', self)
        act_memb_clean = QtGui.QAction('Cleanup', self)
        act_memb_upper = QtGui.QAction('Members to uppercase', self)
        act_memb_lower = QtGui.QAction('Members to lowercase', self)
        act_memb_strip = QtGui.QAction('Strip member suffixes', self)
        act_memb_suff = QtGui.QAction('Add suffix to members', self)
        act_memb_addglyphs = QtGui.QAction('Selected glyphs to members', self)

        act_memb_sel.triggered.connect(lambda: self.memb_select())
        act_memb_clean.triggered.connect(lambda: self.memb_cleanup())
        act_memb_upper.triggered.connect(lambda: self.memb_change_case(True))
        act_memb_lower.triggered.connect(lambda: self.memb_change_case(False))
        act_memb_strip.triggered.connect(lambda: self.memb_stripSuffix())
        act_memb_suff.triggered.connect(lambda: self.memb_addSuffix())
        act_memb_addglyphs.triggered.connect(lambda: self.memb_addGlyphs())

        self.menu_memb.addAction(act_memb_sel)
        self.menu_memb.addAction(act_memb_clean)
        self.menu_memb.addAction(act_memb_upper)
        self.menu_memb.addAction(act_memb_lower)
        self.menu_memb.addAction(act_memb_strip)
        self.menu_memb.addAction(act_memb_suff)
        self.menu_memb.addAction(act_memb_addglyphs)

        # -- MACOS buttons menu
        self.btn_mac_data_open = QtGui.QPushButton('Open')
        self.btn_mac_data_save = QtGui.QPushButton('Save')
        self.btn_mac_data_import = QtGui.QPushButton('Import')
        self.btn_mac_data_export = QtGui.QPushButton('Export')
        self.btn_mac_data_import_font = QtGui.QPushButton('From Font')
        self.btn_mac_data_build_composite = QtGui.QPushButton(
            'Auto Build Classes')

        self.btn_mac_data_open.clicked.connect(
            lambda: self.file_load_groups(True))
        self.btn_mac_data_save.clicked.connect(
            lambda: self.file_save_groups(True))
        self.btn_mac_data_import.clicked.connect(
            lambda: self.file_load_groups(False))
        #self.btn_mac_data_export.clicked.connect()
        self.btn_mac_data_import_font.clicked.connect(lambda: self.from_font())
        self.btn_mac_data_build_composite.clicked.connect(
            lambda: self.from_composites())

        # - Table auto preview selection
        self.chk_preview = QtGui.QCheckBox('Auto select/preview class.')
        self.tab_groupKern.selectionModel().selectionChanged.connect(
            lambda: self.auto_preview())

        # - Build
        self.lay_grid = QtGui.QGridLayout()
        self.lay_grid.addWidget(lbl_name, 0, 0, 1, 42)
        self.lay_grid.addWidget(QtGui.QLabel('Master:'), 0, 40, 1, 2)
        self.lay_grid.addWidget(self.cmb_layer, 0, 42, 1, 6)
        self.lay_grid.addWidget(self.tab_groupKern, 1, 0, 11, 42)
        self.lay_grid.addWidget(self.btn_apply, 1, 42, 1, 6)
        self.lay_grid.addWidget(self.chk_preview, 2, 42, 1, 6)

        # -- MAC buttons
        if system() == 'Darwin':
            self.lay_grid.addWidget(self.btn_mac_data_open, 4, 42, 1, 3)
            self.lay_grid.addWidget(self.btn_mac_data_save, 4, 45, 1, 3)
            self.lay_grid.addWidget(self.btn_mac_data_import, 5, 42, 1, 3)
            self.lay_grid.addWidget(self.btn_mac_data_export, 5, 45, 1, 3)
            self.lay_grid.addWidget(self.btn_mac_data_import_font, 6, 42, 1, 6)
            self.lay_grid.addWidget(self.btn_mac_data_build_composite, 8, 42,
                                    1, 6)

        self.lay_grid.addWidget(self.btn_reset, 10, 42, 1, 6)
        self.lay_grid.addWidget(self.btn_write, 11, 42, 1, 6)

        self.setLayout(self.lay_grid)
Пример #21
0
	def __init__(self):
		super(tool_tab, self).__init__()

		# - Init
		temp = pGlyph()
		self.active_font = pFont()
		layer_names = [layer.name for layer in temp.layers() if '#' not in layer.name]
		
		# - Widgets
		# -- Progress bar
		self.progress = QtGui.QProgressBar()
		self.progress.setMaximum(100)

		# -- Report Tree
		self.audit_report = OrderedDict(empty_record)
		self.header_names = ['Glyph', 'Layers']
		self.audit_tree = TRWAuditTree(self.audit_report, self.header_names)
		self.audit_tree.selectionModel().selectionChanged.connect(self.auto_preview)
		
		# -- Test List
		temp_audit_glyph = auditGlyph(temp.fg, self.active_font.fg, self.audit_report)
		audit_tests = [test.replace('_', ' ').replace('audit', '').title() for test in temp_audit_glyph.get_all_tests()]

		self.audit_list = QtGui.QListWidget()
		self.audit_list.setAlternatingRowColors(True)
		self.audit_list.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
		self.audit_list.addItems(audit_tests)

		# -- Audit Options
		self.cmb_layers = CheckableComboBox()
		self.cmb_layers.addItems(['All Masters'] + layer_names)
		
		self.cmb_reference = QtGui.QComboBox()
		self.cmb_reference.addItems(layer_names)
		
		if 'Regular' in layer_names:
			self.cmb_reference.setCurrentIndex(layer_names.index('Regular'))

		# -- Action Buttons
		self.btn_audit_run = QtGui.QPushButton('Process Entire Font')
		self.btn_audit_glyphs = QtGui.QPushButton('Process Glyph Selection')
		self.btn_audit_tests = QtGui.QPushButton('Selected tests only')
		self.btn_audit_reset = QtGui.QPushButton('Reset Record')
		self.btn_audit_save = QtGui.QPushButton('Save Record')
		self.btn_audit_select = QtGui.QPushButton('Auto Select Glyphs')
		self.btn_select_cheked = QtGui.QPushButton('Select Checked Glyphs')
		
		self.btn_audit_select.setCheckable(True)
		self.btn_audit_tests.setCheckable(True)
		self.btn_audit_select.setChecked(False)
		self.btn_audit_tests.setChecked(True)

		self.btn_audit_run.clicked.connect(lambda: self.process_audit(False))
		self.btn_audit_glyphs.clicked.connect(lambda: self.process_audit(True))
		self.btn_select_cheked.clicked.connect(lambda: self.selected_preview())

		self.btn_audit_reset.clicked.connect(self.reset)
		self.btn_audit_save.clicked.connect(self.save_audit)
		
		# - Build Layout
		lay_main = QtGui.QVBoxLayout()
		lay_audit = QtGui.QGridLayout()
		lay_audit.addWidget(self.btn_audit_tests, 				 0,  0,  1,  2)
		lay_audit.addWidget(self.btn_audit_select, 				 0,  2,  1,  2)
		lay_audit.addWidget(self.btn_select_cheked, 			 0,  4,  1,  2)
		
		lay_audit.addWidget(self.btn_audit_save, 				 0,  6,  1,  2)
		lay_audit.addWidget(self.btn_audit_reset, 				 0,  8,  1,  2)
		lay_audit.addWidget(self.btn_audit_glyphs, 				 0,  10,  1, 2) 
		lay_audit.addWidget(self.btn_audit_run, 				 0, 12,  1,  4) 
		lay_audit.addWidget(QtGui.QLabel('Audit Tests:'),		 1,  0,  1,  4)
		lay_audit.addWidget(self.audit_list, 					 2,  0, 21,  4) 
		lay_audit.addWidget(QtGui.QLabel('Audit Report:'),		 1,  4,  1, 12)
		lay_audit.addWidget(self.audit_tree, 					 2,  4, 23, 12)
		lay_audit.addWidget(QtGui.QLabel('Reference:'),			23,  0,  1,  1)
		lay_audit.addWidget(self.cmb_reference, 				23,  1,  1,  3)
		lay_audit.addWidget(QtGui.QLabel('Audit on:'),			24,  0,  1,  1)
		lay_audit.addWidget(self.cmb_layers, 					24,  1,  1,  3)
		lay_audit.addWidget(self.progress, 						25,  0,  1,  16)

		# - Finish
		lay_main.addLayout(lay_audit)
		self.setLayout(lay_main)
		self.setMinimumSize(300, self.sizeHint.height())
Пример #22
0
	def __init__(self):
		super(tool_tab, self).__init__()

		# - Init

		# - Widgets
		# - Glyph list
		self.lst_glyphName = QtGui.QListWidget()
		self.lst_glyphName.setMinimumHeight(50)
		self.lst_glyphName.setAlternatingRowColors(True)
		
		# -- Buttons
		self.btn_refresh = QtGui.QPushButton('&Refresh')
		self.btn_setAxis = QtGui.QPushButton('Set &Axis')
		self.btn_setAxis_c = QtGui.QPushButton('Set &Axis')
		self.btn_resetAxis = QtGui.QPushButton('Reset Axis')
		self.btn_getVstem = QtGui.QPushButton('Get &Vertical Stems')
		self.btn_getHstem = QtGui.QPushButton('Get &Horizontal Stems')
		self.btn_setLayer = QtGui.QPushButton('Layer changed')
		self.btn_execute = QtGui.QPushButton('Execute')
		self.btn_file_load_patchboard = QtGui.QPushButton('Load')
		self.btn_file_save_patchboard = QtGui.QPushButton('Save')
		
		# -- Options
		self.btn_opt_extrapolate = QtGui.QPushButton('Extrapolate')
		self.btn_opt_italic = QtGui.QPushButton('Italic')
		self.btn_opt_update_preview = QtGui.QPushButton('Live preview')
		self.btn_opt_keep_center = QtGui.QPushButton('Keep Center')
		self.btn_opt_metrics = QtGui.QPushButton('Metrics')
		self.btn_opt_anchors = QtGui.QPushButton('Anchors')
		self.btn_opt_target = QtGui.QPushButton('Use Target')		

		self.btn_opt_extrapolate.setCheckable(True)
		self.btn_opt_italic.setCheckable(True) 
		self.btn_opt_update_preview.setCheckable(True)
		self.btn_opt_keep_center.setCheckable(True)
		self.btn_opt_metrics.setCheckable(True)
		self.btn_opt_anchors.setCheckable(True)
		self.btn_opt_target.setCheckable(True)

		#self.btn_opt_extrapolate.setChecked(True)
		#self.btn_opt_keep_center.setChecked(True)
		#self.btn_opt_target.setChecked(True)

		self.btn_refresh.clicked.connect(self.refresh)
		self.btn_setAxis.clicked.connect(self.set_axis)
		self.btn_setAxis_c.clicked.connect(self.set_axis)
		self.btn_resetAxis.clicked.connect(self.reset_axis)
		self.btn_getVstem.clicked.connect(lambda: self.get_stem(False))
		self.btn_getHstem.clicked.connect(lambda: self.get_stem(True))
		self.btn_setLayer.clicked.connect(self.set_current_layer)
		self.btn_execute.clicked.connect(lambda: self.execute_scale(True))

		self.btn_file_save_patchboard.clicked.connect(self.file_save_patchboard)
		self.btn_file_load_patchboard.clicked.connect(self.file_load_patchboard)

		# -- Layer selector
		self.tree_layer = TRWLayerTree()

		# -- Actions (Context Menu)
		self.tree_layer.menu = QtGui.QMenu(self)
		self.tree_layer.menu.setTitle('Actions:')

		act_addItem = QtGui.QAction('Add', self)
		act_delItem = QtGui.QAction('Remove', self)
		act_dupItem = QtGui.QAction('Duplicate', self)
		act_uneItem = QtGui.QAction('Unnest', self)

		act_setItem_mask = QtGui.QAction('Set mask', self)
		act_setItem_unmask = QtGui.QAction('Remove mask', self)
		act_setItem_value = QtGui.QAction('Set value', self)

		act_setAxis = QtGui.QAction('Set Axis', self)
		act_resetAxis = QtGui.QAction('Reset Axis', self)
		act_getVstem = QtGui.QAction('Get Vertical Stems', self)
		act_getHstem = QtGui.QAction('Get Horizontal Stems', self)

		self.tree_layer.menu.addAction(act_addItem)
		self.tree_layer.menu.addAction(act_dupItem)
		self.tree_layer.menu.addAction(act_uneItem)
		self.tree_layer.menu.addAction(act_delItem)
		self.tree_layer.menu.addSeparator()	
		self.tree_layer.menu.addAction(act_setItem_mask )
		self.tree_layer.menu.addAction(act_setItem_unmask )
		self.tree_layer.menu.addAction(act_setItem_value )
		self.tree_layer.menu.addSeparator()	
		self.tree_layer.menu.addAction(act_getVstem)
		self.tree_layer.menu.addAction(act_getHstem)
		self.tree_layer.menu.addSeparator()	
		self.tree_layer.menu.addAction(act_setAxis)
		self.tree_layer.menu.addAction(act_resetAxis)

		act_addItem.triggered.connect(lambda: self.tree_layer._addItem())
		act_dupItem.triggered.connect(lambda: self.tree_layer._duplicateItems())
		act_uneItem.triggered.connect(lambda: self.tree_layer._unnestItem())
		act_delItem.triggered.connect(lambda: self.tree_layer._removeItems())
		
		act_setItem_mask.triggered.connect(lambda: self.tree_layer._setItemData('mask.', 0, 0, False))
		act_setItem_unmask.triggered.connect(lambda: self.tree_layer._setItemData('mask.', 0, 1, True))
		act_setItem_value.triggered.connect(lambda: self.tree_layer._setItemData(*TR2ComboDLG('Delta Setup', 'Please enter new value for selected columns', 'Value:', 'Column:', tree_column_names).values))
		
		act_setAxis.triggered.connect(lambda: self.set_axis())
		act_resetAxis.triggered.connect(lambda: self.reset_axis())
		
		act_getVstem.triggered.connect(lambda: self.get_stem(False))
		act_getHstem.triggered.connect(lambda: self.get_stem(True))
		
		# - Build Layout
		layoutV = QtGui.QVBoxLayout()

		# -- Layer selector
		layoutV.addWidget(self.tree_layer)

		# -- Set Glyph list
		self.fld_glyphs = TRCollapsibleBox('Process Glyphs')
		lay_glyphs = QtGui.QVBoxLayout()
		lay_glyphs_b = QtGui.QHBoxLayout()
		lay_glyphs.addWidget(self.lst_glyphName)
		lay_glyphs_b.addWidget(self.btn_refresh)
		lay_glyphs_b.addWidget(self.btn_setAxis_c)
		lay_glyphs.addLayout(lay_glyphs_b)
		self.fld_glyphs.setContentLayout(lay_glyphs)
		layoutV.addWidget(self.fld_glyphs)
		
		# -- Delta Setup controls
		self.fld_setup = TRCollapsibleBox('Delta Setup') 
		layoutG = QtGui.QGridLayout()
		layoutG.addWidget(QtGui.QLabel('Axis Setup:'),		0, 0, 1, 10)
		layoutG.addWidget(self.btn_getVstem, 				1, 0, 1, 5)
		layoutG.addWidget(self.btn_getHstem, 				1, 5, 1, 5)
		layoutG.addWidget(self.btn_resetAxis, 				2, 0, 1, 5)
		layoutG.addWidget(self.btn_setAxis, 				2, 5, 1, 5)
		layoutG.addWidget(self.btn_file_save_patchboard,	3, 0, 1, 5)
		layoutG.addWidget(self.btn_file_load_patchboard,	3, 5, 1, 5)

		layoutG.addWidget(QtGui.QLabel('Options:'),			4, 0, 1, 10)
		layoutG.addWidget(self.btn_opt_extrapolate, 		5, 0, 1, 5)
		layoutG.addWidget(self.btn_opt_italic, 				5, 5, 1, 5)
		layoutG.addWidget(self.btn_opt_anchors, 			6, 0, 1, 5)
		layoutG.addWidget(self.btn_opt_metrics, 			6, 5, 1, 5)
		layoutG.addWidget(self.btn_opt_target, 				8, 0, 1, 5)
		layoutG.addWidget(self.btn_opt_keep_center, 		8, 5, 1, 5)
		layoutG.addWidget(self.btn_opt_update_preview, 		9, 0, 1, 10)
		
		self.fld_setup.setContentLayout(layoutG)
		layoutV.addWidget(self.fld_setup)

		# -- Set Sliders
		self.fld_weight = TRCollapsibleBox('Stem Weight Control')
		self.fld_scale = TRCollapsibleBox('Compensative scaler')

		lay_weight = QtGui.QVBoxLayout()
		lay_scale = QtGui.QVBoxLayout()
		
		# --- Mixer
		lay_weight.addWidget(QtGui.QLabel('Vertical Stem Weight (X):'))
		self.mixer_dx = TRSliderCtrl('1', '1000', '0', 1)
		self.mixer_dx.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_weight.addLayout(self.mixer_dx)
		lay_weight.addSpacing(10)
		
		lay_weight.addWidget(QtGui.QLabel('Horizontal Stem Weight (Y):'))
		self.mixer_dy = TRSliderCtrl('1', '1000', '0', 1)
		self.mixer_dy.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_weight.addLayout(self.mixer_dy)
		
		self.fld_weight.setContentLayout(lay_weight)
		layoutV.addWidget(self.fld_weight)

		# --- Scaler
		lay_scale.addWidget(QtGui.QLabel('Width'))
		self.scalerX = TRSliderCtrl('1', '200', '100', 1)
		self.scalerX.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_scale.addLayout(self.scalerX)
		lay_scale.addSpacing(10)

		lay_scale.addWidget(QtGui.QLabel('Height'))
		self.scalerY = TRSliderCtrl('1', '200', '100', 1)
		self.scalerY.sld_axis.valueChanged.connect(self.execute_scale)		
		lay_scale.addLayout(self.scalerY)

		self.fld_scale.setContentLayout(lay_scale)
		layoutV.addWidget(self.fld_scale)

		# -- Tail 
		layoutE = QtGui.QHBoxLayout()
		layoutE.addWidget(self.btn_setLayer)
		layoutE.addWidget(self.btn_execute)
		layoutV.addLayout(layoutE)

		self.__lbl_warn = QtGui.QLabel('')
		layoutV.addWidget(self.__lbl_warn)
		self.__lbl_warn.hide()

		# -- Finish
		self.refresh()
		self.tree_layer.setTree(self.__init_tree(), tree_column_names)
		self.setLayout(layoutV)
		self.setMinimumSize(300, self.sizeHint.height())
Пример #23
0
    def __init__(self):
        super(tool_tab, self).__init__()

        # - Init
        self.anchorSelector = TRLayerSelect()

        self.types = 'Anchor PinPoint'.split(' ')
        self.posY = 'Coord, Expression, Keep, Shift, Above, Below, Center, Baseline, Center of mass'.split(
            ', ')
        self.posX = 'Coord, Expression, Keep, Shift, Left, Right, Center, Highest, Highest Left, Highest Right, Lowest, Lowest Left, Lowest Right, Center of mass'.split(
            ', ')
        posYvals = (None, None, 'S', 'S', 'T', 'B', 'C', None, 'W')
        posXvals = (None, None, 'S', 'S', 'L', 'R', 'C', 'AT', 'ATL', 'ATR',
                    'A', 'AL', 'AR', 'M')
        self.posYctrl = dict(zip(self.posY, posYvals))
        self.posXctrl = dict(zip(self.posX, posXvals))

        # -- Basic Tool buttons
        self.btn_anchorCopy = QtGui.QPushButton('Copy')
        self.btn_anchorPaste = QtGui.QPushButton('Paste')
        self.btn_clearSel = QtGui.QPushButton('Remove')
        self.btn_clearAll = QtGui.QPushButton('Remove All')
        self.btn_anchorAdd = QtGui.QPushButton('Add')
        self.btn_anchorMov = QtGui.QPushButton('Move')
        self.btn_anchorRename = QtGui.QPushButton('Rename')
        self.btn_anchorSuffix = QtGui.QPushButton('Suffix')
        self.btn_anchorCopy.setToolTip(
            'Copy selected Anchors from layers chosen.')
        self.btn_anchorPaste.setToolTip('Paste Anchors at layers chosen.')
        self.btn_anchorRename.setToolTip('Rename selected anchors.')
        self.btn_anchorSuffix.setToolTip(
            'Extend the name of selected Anchors.')

        self.chk_italic = QtGui.QCheckBox('Use Italic Angle')

        # -- Edit fields
        self.edt_anchorName = ALineEdit()
        self.edt_simpleX = ALineEdit()
        self.edt_simpleY = ALineEdit()
        self.edt_autoT = QtGui.QLineEdit()

        self.edt_anchorName.setPlaceholderText('New Anchor')
        self.edt_simpleX.setText('0')
        self.edt_simpleY.setText('0')
        self.edt_autoT.setText('5')

        # -- Combo box
        self.cmb_posX = QtGui.QComboBox()
        self.cmb_posY = QtGui.QComboBox()
        self.cmb_type = QtGui.QComboBox()

        self.cmb_posX.addItems(self.posX)
        self.cmb_posY.addItems(self.posY)
        self.cmb_type.addItems(self.types)
        self.cmb_type.setEnabled(False)

        # -- Constrains
        self.btn_clearSel.setMinimumWidth(90)
        self.btn_clearAll.setMinimumWidth(90)
        self.edt_anchorName.setMinimumWidth(50)
        self.edt_simpleX.setMinimumWidth(30)
        self.edt_simpleY.setMinimumWidth(30)

        # -- Link functions
        self.btn_clearAll.clicked.connect(lambda: self.clearAnchors(True))
        self.btn_clearSel.clicked.connect(lambda: self.clearAnchors(False))
        self.btn_anchorAdd.clicked.connect(lambda: self.addAnchors(False))
        self.btn_anchorMov.clicked.connect(lambda: self.addAnchors(True))
        self.btn_anchorCopy.clicked.connect(lambda: self.copyAnchors(False))
        self.btn_anchorPaste.clicked.connect(lambda: self.copyAnchors(True))
        self.btn_anchorSuffix.clicked.connect(
            lambda: self.renameAnchors(False))
        self.btn_anchorRename.clicked.connect(lambda: self.renameAnchors(True))
        self.anchorSelector.tree_anchors.itemChanged.connect(
            self.processChange)

        # - Build layout
        layoutV = QtGui.QVBoxLayout()
        layoutV.addLayout(self.anchorSelector)

        self.fld_actions = TRCollapsibleBox('Anchor actions:')
        lay_actions = QtGui.QGridLayout()

        lay_actions.addWidget(self.btn_anchorCopy, 0, 0, 1, 4)
        lay_actions.addWidget(self.btn_anchorPaste, 0, 4, 1, 4)
        lay_actions.addWidget(self.btn_clearSel, 1, 0, 1, 4)
        lay_actions.addWidget(self.btn_clearAll, 1, 4, 1, 4)

        self.fld_actions.setContentLayout(lay_actions)
        layoutV.addWidget(self.fld_actions)

        self.fld_addmod = TRCollapsibleBox('Add/Move anchor:')
        lay_addmod = QtGui.QGridLayout()

        lay_addmod.addWidget(QtGui.QLabel('N:'), 0, 0, 1, 1)
        lay_addmod.addWidget(self.edt_anchorName, 0, 1, 1, 3)
        lay_addmod.addWidget(self.cmb_type, 0, 4, 1, 4)
        lay_addmod.addWidget(QtGui.QLabel('X:'), 1, 0, 1, 1)
        lay_addmod.addWidget(self.cmb_posX, 1, 1, 1, 3)
        lay_addmod.addWidget(self.edt_simpleX, 1, 4, 1, 4)
        lay_addmod.addWidget(QtGui.QLabel('Y:'), 2, 0, 1, 1)
        lay_addmod.addWidget(self.cmb_posY, 2, 1, 1, 3)
        lay_addmod.addWidget(self.edt_simpleY, 2, 4, 1, 4)
        lay_addmod.addWidget(QtGui.QLabel('Tolerance:'), 3, 1, 1, 2)
        lay_addmod.addWidget(self.edt_autoT, 3, 3, 1, 1)
        lay_addmod.addWidget(self.chk_italic, 3, 4, 1, 1)
        lay_addmod.addWidget(self.btn_anchorAdd, 4, 0, 1, 4)
        lay_addmod.addWidget(self.btn_anchorMov, 4, 4, 1, 4)
        lay_addmod.addWidget(self.btn_anchorRename, 5, 0, 1, 4)
        lay_addmod.addWidget(self.btn_anchorSuffix, 5, 4, 1, 4)

        self.fld_addmod.setContentLayout(lay_addmod)
        layoutV.addWidget(self.fld_addmod)

        # - Finish
        self.setLayout(layoutV)
        self.setMinimumSize(300, self.sizeHint.height())
Пример #24
0
	def __init__(self):
		super(dlg_BuildAxis, self).__init__()
	
		# - Init
		self.active_font = pFont()
		self.exclude_list = []
		
		# - Widgets
		self.cmb_master_name = QtGui.QComboBox()
		self.cmb_axis_name = QtGui.QComboBox()
		self.cmb_axis_short = QtGui.QComboBox()
		self.cmb_axis_tag = QtGui.QComboBox()
		
		self.spb_italic_angle = QtGui.QSpinBox()
		self.spb_italic_shift = QtGui.QSpinBox()
		
		self.tab_masters = WTableView(table_dict)

		self.btn_exclude_file = QtGui.QPushButton('Select glyph exclude list')	
		self.btn_populate = QtGui.QPushButton('Populate Master Table')
		self.btn_execute = QtGui.QPushButton('Execute')

		self.cmb_master_name.setEditable(True)
		self.cmb_axis_name.setEditable(True)
		self.cmb_axis_short.setEditable(True)
		self.cmb_axis_tag.setEditable(True)

		self.spb_italic_angle.setMinimum(spinbox_range[0])
		self.spb_italic_shift.setMinimum(spinbox_range[0])

		self.spb_italic_angle.setMaximum(spinbox_range[1])
		self.spb_italic_shift.setMaximum(spinbox_range[1])
		
		self.cmb_master_name.addItems(italic_axis_names_T[0])
		self.cmb_axis_name.addItems(italic_axis_names_T[0])
		self.cmb_axis_short.addItems(italic_axis_names_T[1])
		self.cmb_axis_tag.addItems(italic_axis_names_T[2])

		self.spb_italic_angle.setValue(italic_transform_angle)
		self.spb_italic_shift.setValue(italic_transform_shift)

				
		self.cmb_axis_name.currentIndexChanged.connect(self.change_axis_name)	
		self.btn_exclude_file.clicked.connect(self.load_exclude_list)
		self.btn_populate.clicked.connect(self.table_populate)
		self.btn_execute.clicked.connect(self.table_execute)
		
		# - Build layouts 
		layoutV = QtGui.QGridLayout() 
		layoutV.addWidget(QtGui.QLabel('Build Axis:'),		0, 0, 1, 9, QtCore.Qt.AlignBottom)
		layoutV.addWidget(QtGui.QLabel('Name:'),			1, 0, 1, 1)
		layoutV.addWidget(self.cmb_axis_name,				1, 1, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Short:'),			1, 3, 1, 1)
		layoutV.addWidget(self.cmb_axis_short,				1, 4, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Tag:'),				1, 6, 1, 1)
		layoutV.addWidget(self.cmb_axis_tag,				1, 7, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Masters:'),			2, 0, 1, 2, QtCore.Qt.AlignBottom)
		layoutV.addWidget(QtGui.QLabel('Transformation:'),	2, 2, 1, 3, QtCore.Qt.AlignBottom)
		layoutV.addWidget(QtGui.QLabel('Suffix:'),			3, 0, 1, 1)
		layoutV.addWidget(self.cmb_master_name,				3, 1, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Angle:'),			3, 3, 1, 1)
		layoutV.addWidget(self.spb_italic_angle,			3, 4, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Shift:'),			3, 6, 1, 1)
		layoutV.addWidget(self.spb_italic_shift,			3, 7, 1, 2)
		layoutV.addWidget(QtGui.QLabel('Glyph processing:'),5, 0, 1, 9, QtCore.Qt.AlignBottom)
		layoutV.addWidget(self.btn_exclude_file, 			6, 0, 1, 9)
		layoutV.addWidget(QtGui.QLabel('Overview:'),		7, 0, 1, 9, QtCore.Qt.AlignBottom)
		layoutV.addWidget(self.btn_populate, 				8, 0, 1, 9)
		layoutV.addWidget(self.tab_masters, 				9, 0, 25,9)
		layoutV.addWidget(self.btn_execute, 				34, 0, 1,9)

		# - Set Widget
		self.setLayout(layoutV)
		self.setWindowTitle('%s %s' %(app_name, app_version))
		self.setGeometry(300, 300, 400, 600)
		self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # Always on top!!
		self.show()
Пример #25
0
    def __init__(self, parentWidget):
        super(TRSmartCorner, self).__init__()
        self.upper_widget = parentWidget

        # -- Init
        self.active_font = pFont()
        self.builder = None
        self.font_masters = self.active_font.masters()
        self.empty_preset = lambda row: OrderedDict([(
            row,
            OrderedDict([('Preset', 'Preset %s' % row)] +
                        [(master, '0') for master in self.font_masters]))])
        self.table_dict = self.empty_preset(0)
        self.last_preset = 0

        # -- Widgets
        self.lay_head = QtGui.QGridLayout()

        self.edt_glyphName = QtGui.QLineEdit()
        self.edt_glyphName.setPlaceholderText('Glyph name')

        # -- Buttons
        self.btn_getBuilder = QtGui.QPushButton('Set &Builder')
        self.btn_findBuilder = QtGui.QPushButton('&From Font')
        self.btn_addPreset = QtGui.QPushButton('Add')
        self.btn_delPreset = QtGui.QPushButton('Remove')
        self.btn_resetPreset = QtGui.QPushButton('Reset')
        self.btn_loadPreset = QtGui.QPushButton('&Load Presets')
        self.btn_savePreset = QtGui.QPushButton('&Save Presets')
        self.btn_apply_smartCorner = QtGui.QPushButton('&Apply Smart Corner')
        self.btn_remove_smartCorner = QtGui.QPushButton('R&emove Smart Corner')
        self.btn_remove_presetCorner = QtGui.QPushButton('&Find and Remove')

        self.btn_apply_smartCorner.setToolTip(
            'Apply Smart Corner preset on SELECTED nodes.')
        self.btn_remove_smartCorner.setToolTip(
            'Remove Smart Corner on SELECTED nodes.')
        self.btn_remove_presetCorner.setToolTip(
            'Find and remove all Smart Corners that equal the currently selected preset.'
        )

        self.btn_apply_round = QtGui.QPushButton('&Round')
        self.btn_apply_mitre = QtGui.QPushButton('&Mitre')
        self.btn_apply_overlap = QtGui.QPushButton('&Overlap')
        self.btn_apply_trap = QtGui.QPushButton('&Trap')
        self.btn_rebuild = QtGui.QPushButton('Rebuild corner')

        self.btn_getBuilder.setMinimumWidth(70)
        self.btn_findBuilder.setMinimumWidth(70)
        self.btn_apply_round.setMinimumWidth(70)
        self.btn_apply_mitre.setMinimumWidth(70)
        self.btn_apply_overlap.setMinimumWidth(70)
        self.btn_apply_trap.setMinimumWidth(70)
        self.btn_rebuild.setMinimumWidth(70)

        self.btn_addPreset.setMinimumWidth(70)
        self.btn_delPreset.setMinimumWidth(70)
        self.btn_loadPreset.setMinimumWidth(140)
        self.btn_savePreset.setMinimumWidth(140)
        self.btn_apply_smartCorner.setMinimumWidth(140)
        self.btn_remove_smartCorner.setMinimumWidth(140)
        self.btn_remove_presetCorner.setMinimumWidth(140)

        self.btn_getBuilder.setCheckable(True)
        self.btn_getBuilder.setChecked(False)
        self.btn_findBuilder.setEnabled(False)
        self.btn_apply_round.setEnabled(False)

        self.btn_getBuilder.clicked.connect(lambda: self.getBuilder())
        self.btn_addPreset.clicked.connect(lambda: self.preset_modify(False))
        self.btn_delPreset.clicked.connect(lambda: self.preset_modify(True))
        self.btn_resetPreset.clicked.connect(lambda: self.preset_reset())
        self.btn_loadPreset.clicked.connect(lambda: self.preset_load())
        self.btn_savePreset.clicked.connect(lambda: self.preset_save())

        self.btn_apply_smartCorner.clicked.connect(
            lambda: self.apply_SmartCorner(False))
        self.btn_remove_smartCorner.clicked.connect(
            lambda: self.apply_SmartCorner(True))
        self.btn_remove_presetCorner.clicked.connect(
            lambda: self.remove_SmartCorner())

        #self.btn_apply_round.clicked.connect(lambda: self.apply_round())
        self.btn_apply_mitre.clicked.connect(lambda: self.apply_mitre(False))
        self.btn_apply_overlap.clicked.connect(lambda: self.apply_mitre(True))
        self.btn_apply_trap.clicked.connect(lambda: self.apply_trap())
        self.btn_rebuild.clicked.connect(lambda: self.rebuild())

        # -- Preset Table
        self.tab_presets = TRTableView(None)
        self.preset_reset()

        # -- Build Layout
        self.lay_head.addWidget(QtGui.QLabel('Value Presets:'), 0, 0, 1, 8)
        self.lay_head.addWidget(self.btn_loadPreset, 1, 0, 1, 4)
        self.lay_head.addWidget(self.btn_savePreset, 1, 4, 1, 4)
        self.lay_head.addWidget(self.btn_addPreset, 2, 0, 1, 2)
        self.lay_head.addWidget(self.btn_delPreset, 2, 2, 1, 2)
        self.lay_head.addWidget(self.btn_resetPreset, 2, 4, 1, 4)
        self.lay_head.addWidget(self.tab_presets, 3, 0, 5, 8)

        self.lay_head.addWidget(QtGui.QLabel('Corner Actions:'), 10, 0, 1, 8)
        self.lay_head.addWidget(self.btn_apply_round, 11, 0, 1, 2)
        self.lay_head.addWidget(self.btn_apply_mitre, 11, 2, 1, 2)
        self.lay_head.addWidget(self.btn_apply_overlap, 11, 4, 1, 2)
        self.lay_head.addWidget(self.btn_apply_trap, 11, 6, 1, 2)
        self.lay_head.addWidget(self.btn_rebuild, 12, 0, 1, 8)

        self.lay_head.addWidget(QtGui.QLabel('Smart Corner:'), 13, 0, 1, 8)
        self.lay_head.addWidget(QtGui.QLabel('Builder: '), 14, 0, 1, 1)
        self.lay_head.addWidget(self.edt_glyphName, 14, 1, 1, 3)
        self.lay_head.addWidget(self.btn_getBuilder, 14, 4, 1, 2)
        self.lay_head.addWidget(self.btn_findBuilder, 14, 6, 1, 2)
        self.lay_head.addWidget(self.btn_remove_smartCorner, 15, 0, 1, 4)
        self.lay_head.addWidget(self.btn_remove_presetCorner, 15, 4, 1, 4)
        self.lay_head.addWidget(self.btn_apply_smartCorner, 16, 0, 1, 8)

        self.addLayout(self.lay_head)
Пример #26
0
	def __init__(self, parentWidget):
		super(TRAutoMetrics, self).__init__()
		self.upper_widget = parentWidget

		# -- Init
		self.active_font = pFont()
		self.active_sampler = MetricSampler(self.active_font)
		self.font_masters = self.active_font.masters()
		self.empty_preset = lambda row: OrderedDict([(row, OrderedDict([('Preset', 'Preset %s' %row)] + [(master, '0') for master in self.font_masters]))])
		self.table_dict = self.empty_preset(0)
		self.__max_value = 10000

		# -- Widgets
		self.edt_glyphName = QtGui.QLineEdit()
		self.edt_glyphName.setPlaceholderText('Glyph name')

		# -- Buttons
		self.btn_addPreset = QtGui.QPushButton('Add')
		self.btn_delPreset = QtGui.QPushButton('Remove')
		self.btn_resetPreset = QtGui.QPushButton('Reset')
		self.btn_loadPreset = QtGui.QPushButton('Load')
		self.btn_savePreset = QtGui.QPushButton('Save')
		self.btn_get_lsb = QtGui.QPushButton('LSB')
		self.btn_get_rsb = QtGui.QPushButton('RSB')
		self.btn_get_both = QtGui.QPushButton('Set Metrics')
		self.btn_advanced = QtGui.QPushButton('Use Advanced options')

		self.btn_advanced.setCheckable(True)
		self.btn_advanced.setChecked(False)
		self.btn_advanced.setEnabled(False)

		self.btn_get_lsb.clicked.connect(lambda: self.set_sidebearings('lsb'))
		self.btn_get_rsb.clicked.connect(lambda: self.set_sidebearings('rsb'))
		self.btn_get_both.clicked.connect(lambda: self.set_sidebearings('bth'))

		# -- Checkbox
		self.chk_area_draw = QtGui.QCheckBox('Draw sampled area')
		self.chk_area_cache = QtGui.QCheckBox('Cache sampled area')

		# -- Spinbox
		self.spb_window_min = QtGui.QSpinBox()
		self.spb_window_max = QtGui.QSpinBox()
		self.spb_depth = QtGui.QSpinBox()
		self.spb_mul_area = QtGui.QDoubleSpinBox()

		self.spb_window_min.setMaximum(self.__max_value)
		self.spb_window_max.setMaximum(self.__max_value)
		self.spb_window_min.setMinimum(-self.__max_value)
		self.spb_window_max.setMinimum(-self.__max_value)
		self.spb_depth.setMaximum(self.__max_value)
		self.spb_mul_area.setMaximum(20.)
		self.spb_mul_area.setMinimum(-20.)
		
		self.spb_mul_area.setSingleStep(0.01)
		
		self.spb_window_min.setSuffix(' u')
		self.spb_window_max.setSuffix(' u')
		self.spb_depth.setSuffix(' u')

		self.spb_window_min.setValue(self.active_sampler.sample_window[0])
		self.spb_window_max.setValue(self.active_sampler.sample_window[1])
		
		self.spb_depth.setValue(self.active_sampler.cutout_x)
		self.spb_mul_area.setValue(0.5)

		self.spb_window_min.valueChanged.connect(lambda: self.update_sampler_config())
		self.spb_window_max.valueChanged.connect(lambda: self.update_sampler_config())
		self.spb_depth.valueChanged.connect(lambda: self.update_sampler_config())

		# -- Preset Table
		self.tab_presets = TRTableView(None)

		# -- Build Layout
		self.lay_head = QtGui.QGridLayout()
		self.frame_advanced = QtGui.QFrame()
		self.lay_advanced = QtGui.QGridLayout()

		self.lay_head.addWidget(QtGui.QLabel('Sampling Options:'),	0, 0, 1, 8)
		self.lay_head.addWidget(QtGui.QLabel('Min (Y):'),		 	1, 0, 1, 2)
		self.lay_head.addWidget(self.spb_window_min, 				1, 2, 1, 2)
		self.lay_head.addWidget(QtGui.QLabel('Max (Y):'), 			1, 4, 1, 2)
		self.lay_head.addWidget(self.spb_window_max, 				1, 6, 1, 2)
		self.lay_head.addWidget(QtGui.QLabel('Depth (X):'), 		2, 0, 1, 2)
		self.lay_head.addWidget(self.spb_depth, 					2, 2, 1, 2)
		self.lay_head.addWidget(QtGui.QLabel('Area (mult.):'),	 	2, 4, 1, 2)
		self.lay_head.addWidget(self.spb_mul_area,					2, 6, 1, 2)
		self.lay_head.addWidget(self.chk_area_draw,					3, 0, 1, 4)
		self.lay_head.addWidget(self.chk_area_cache,				3, 4, 1, 4)
		self.lay_head.addWidget(self.btn_get_lsb,					4, 0, 1, 2)
		self.lay_head.addWidget(self.btn_get_both,					4, 2, 1, 4)
		self.lay_head.addWidget(self.btn_get_rsb,					4, 6, 1, 2)
		self.lay_head.addWidget(self.btn_advanced,					5, 0, 1, 8)
		self.lay_head.addWidget(self.frame_advanced,				6, 0, 15, 8)
		
		self.frame_advanced.setLayout(self.lay_advanced)
		#self.lay_advanced.addWidget(QtGui.QLabel('Advanced configuration:'), 0, 0, 1, 6)
		self.lay_advanced.addWidget(self.btn_addPreset,				1, 0, 1, 2)
		self.lay_advanced.addWidget(self.btn_delPreset,				1, 2, 1, 2)
		self.lay_advanced.addWidget(self.btn_resetPreset,			1, 4, 1, 2)
		self.lay_advanced.addWidget(self.tab_presets,				2, 0, 5, 6)
		self.lay_advanced.addWidget(self.btn_loadPreset,			10, 0, 1, 3)
		self.lay_advanced.addWidget(self.btn_savePreset,			10, 3, 1, 3)
		
		self.frame_advanced.setFrameStyle(1)
		self.frame_advanced.hide()
		self.btn_advanced.clicked.connect(lambda: self.frame_advanced.show() if self.btn_advanced.isChecked() else self.frame_advanced.hide())

		self.addLayout(self.lay_head)