예제 #1
0
파일: widgets.py 프로젝트: kateliev/TypeRig
	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)
예제 #2
0
	def __init__(self):
		super(TRkernClean, self).__init__()
		# - Basic operations
		self.btn_font_refresh = QtGui.QPushButton('Refresh')
		self.btn_exceptions_report = QtGui.QPushButton('Report')
		self.btn_exceptions_remove = QtGui.QPushButton('Clear')
		self.btn_exceptions_flats = QtGui.QPushButton('Report Extendable Flat Pairs')
		self.btn_report_mismatch = QtGui.QPushButton('Report Pair Mis-match')

		self.cmb_all_fonts = QtGui.QComboBox()
		self.cmb_layers = QtGui.QComboBox()

		self.chk_exceptions_fix_groups = QtGui.QCheckBox('Fix Group Names')

		self.spn_exceptions_delta = QtGui.QSpinBox()
		self.spn_exceptions_delta.setValue(5)
		self.spn_exceptions_delta.setMaximum(1000)
		
		self.btn_exceptions_report.setToolTip('Report exceptions of class kerning within value given')
		self.btn_exceptions_remove.setToolTip('Remove exceptions of class kerning within value given')
		self.btn_report_mismatch.setToolTip('Report kerning pairs that are not present in all masters')

		self.btn_font_refresh.clicked.connect(lambda:self.fonts_refresh())
		self.cmb_all_fonts.currentIndexChanged.connect(lambda:self.fonts_changed())
		self.btn_exceptions_report.clicked.connect(lambda: self.kern_exceptions(False, False))
		self.btn_exceptions_remove.clicked.connect(lambda: self.kern_exceptions(True, False))
		self.btn_exceptions_flats.clicked.connect(lambda: self.kern_exceptions(False, True))
		self.btn_report_mismatch.clicked.connect(self.report_mismatch)

		# -- Build
		self.addWidget(QtGui.QLabel('Process Font:'),				0, 0, 1, 6)
		self.addWidget(self.cmb_all_fonts, 							1, 0, 1, 5)
		self.addWidget(self.btn_font_refresh, 						1, 5, 1, 1)
		self.addWidget(QtGui.QLabel('\nKerning: Owerview'), 		2, 0, 1, 6)
		self.addWidget(self.btn_exceptions_flats, 					3, 0, 1, 6)
		self.addWidget(self.btn_report_mismatch, 					4, 0, 1, 6)
		self.addWidget(QtGui.QLabel('\nKerning: Clean exceptions'), 6, 0, 1, 6)
		self.addWidget(QtGui.QLabel('Layer:'), 						7, 0, 1, 1)
		self.addWidget(self.cmb_layers, 							7, 1, 1, 5)
		self.addWidget(QtGui.QLabel('Delta:'),						8, 0, 1, 1)
		self.addWidget(self.spn_exceptions_delta, 					8, 1, 1, 2)
		self.addWidget(self.chk_exceptions_fix_groups, 				8, 3, 1, 3)
		self.addWidget(self.btn_exceptions_report, 					9, 0, 1, 3)
		self.addWidget(self.btn_exceptions_remove, 					9, 3, 1, 3)

		# - Init
		self.fonts_refresh()
예제 #3
0
파일: Layer.py 프로젝트: kateliev/TypeRig
    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)
예제 #4
0
    def __init__(self):
        super(TRGlyphCopyTools, self).__init__()

        # -- Edit Fields
        self.edt_glyphsuffix = TRGLineEdit()
        self.edt_glyphsuffix.setPlaceholderText('Glyph Suffix')
        self.edt_glyphsuffix.setToolTip(help_numeration)

        self.edt_sourceName = TRGLineEdit()
        self.edt_sourceName.setPlaceholderText('Source name / Current')
        self.edt_sourceName.setToolTip(
            'Source glyph name, or Active Glyph if Blank')

        # -- Buttons
        self.btn_duplicate = QtGui.QPushButton('Duplicate')
        self.chk_slot01 = QtGui.QPushButton('')
        self.chk_slot01.setCheckable(True)
        self.chk_slot02 = QtGui.QPushButton('')
        self.chk_slot02.setCheckable(True)
        self.chk_slot03 = QtGui.QPushButton('')
        self.chk_slot03.setCheckable(True)
        self.chk_slot04 = QtGui.QPushButton('')
        self.chk_slot04.setCheckable(True)

        self.btn_insert = QtGui.QPushButton('Insert')
        self.btn_insert.setToolTip(
            'Copy contents of source glyph and insert them to current active glyph(s)'
        )
        self.btn_insert.clicked.connect(lambda: self.glyph_insert(False))

        self.btn_insert_mask = QtGui.QPushButton('Mask')
        self.btn_insert_mask.setToolTip(
            'Copy contents of source glyph and insert them as MASK to current active glyph(s)'
        )
        self.btn_insert_mask.clicked.connect(lambda: self.glyph_insert(True))

        self.btn_duplicate.setToolTip(help_duplicate)
        self.btn_duplicate.clicked.connect(self.glyph_duplicate)

        # -- Spin boxes
        self.spb_duplicate = QtGui.QSpinBox()
        self.spb_duplicate.setMaximum(20)
        self.spb_duplicate.setMinimum(1)

        # -- Mode checks
        self.chk_outline = QtGui.QCheckBox('Contours')
        self.chk_references = QtGui.QCheckBox('References')
        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')
        self.chk_links = QtGui.QCheckBox('Links')
        self.chk_tags = QtGui.QCheckBox('Tags')
        self.chk_flag = QtGui.QCheckBox('Flag')

        # -- Set States
        self.chk_outline.setCheckState(QtCore.Qt.Checked)
        #self.chk_references.setCheckState(QtCore.Qt.Checked)
        self.chk_guides.setCheckState(QtCore.Qt.Checked)
        self.chk_anchors.setCheckState(QtCore.Qt.Checked)
        self.chk_lsb.setCheckState(QtCore.Qt.Checked)
        self.chk_adv.setCheckState(QtCore.Qt.Checked)
        self.chk_rsb.setCheckState(QtCore.Qt.Checked)
        self.chk_links.setCheckState(QtCore.Qt.Checked)
        self.chk_tags.setCheckState(QtCore.Qt.Checked)
        self.chk_flag.setCheckState(QtCore.Qt.Checked)

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

        # -- Build
        self.addWidget(
            QtGui.QLabel('\nCopy and Duplicate Glyph(s) (Options): '), 0, 0, 1,
            4)
        #self.addWidget(self.chk_slot01, 				1, 0, 1, 1)
        #self.addWidget(self.chk_slot02, 				1, 1, 1, 1)
        #self.addWidget(self.chk_slot03, 				1, 2, 1, 1)
        #self.addWidget(self.chk_slot04, 				1, 3, 1, 1)
        self.addWidget(self.chk_outline, 2, 0, 1, 2)
        self.addWidget(self.chk_references, 2, 2, 1, 2)
        self.addWidget(self.chk_lsb, 3, 0, 1, 1)
        self.addWidget(self.chk_adv, 3, 1, 1, 1)
        self.addWidget(self.chk_rsb, 3, 2, 1, 1)
        self.addWidget(self.chk_links, 3, 3, 1, 1)
        self.addWidget(self.chk_anchors, 4, 0, 1, 1)
        self.addWidget(self.chk_guides, 4, 1, 1, 1)
        self.addWidget(self.chk_tags, 4, 2, 1, 1)
        self.addWidget(self.chk_flag, 4, 3, 1, 1)
        self.addWidget(self.tr_trans_ctrl, 5, 0, 1, 4)
        self.addWidget(QtGui.QLabel('\nDuplicate Glyph(s) with suffix:'), 6, 0,
                       1, 4)
        self.addWidget(self.edt_glyphsuffix, 7, 0, 1, 2)
        self.addWidget(self.spb_duplicate, 7, 2, 1, 1)
        self.addWidget(self.btn_duplicate, 7, 3, 1, 1)
        self.addWidget(QtGui.QLabel('\nInsert contents from glyph source:'), 8,
                       0, 1, 4)
        self.addWidget(self.edt_sourceName, 9, 0, 1, 2)
        self.addWidget(self.btn_insert, 9, 2, 1, 1)
        self.addWidget(self.btn_insert_mask, 9, 3, 1, 1)

        self.tr_trans_ctrl.lay_controls.setMargin(0)
예제 #5
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()
예제 #6
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)
예제 #7
0
파일: Anchor.py 프로젝트: kateliev/TypeRig
    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())
예제 #8
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)