Macro Fonts Win10 PYMP
Descrizione |
---|
Questa piccola macro è dedicata agli utenti di Windows 10. I font dentro il browser per utilizzare ShapeString sono invisibili e questa piccola macro può aiutarvi a vedere il font in modo efficace. Scarica l'icona della barra degli strumenti Macro_Fonts_Win10_PYMP_00.png Version "01.00", Date "2019/05/10" Versione macro: 01.00 Ultima modifica: 2019-05-10 Autore: Mario52 |
Autore |
Mario52 |
Download |
None |
Link |
Raccolta di macro Come installare le macro Personalizzare la toolbar |
Versione macro |
01.00 |
Data ultima modifica |
2019-05-10 |
Versioni di FreeCAD |
None |
Scorciatoia |
Nessuna |
Vedere anche |
Nessuno |
Descrizione
Questa piccola macro è dedicata agli utenti di Windows 10. I font dentro explorer per utilizzare ShapeString sono invisibili e questa piccola macro può aiutarvi a vedere il font in modo efficace.
Macro Fonts Win10 PYMP
Utilizzo
Lancia la macro cerca la tua font è applica
Macro Fonts Win10 PYMP window
- Finestra per il vostro testo
- Text edit per visualizzare il camino è il vero nome della font
- Combobox per scegliere la vostra font
- OK : validate vostro testo
- Color : scegliere il colore del vostro testo
10.00
: dimensione del testo di lavoro dentro la vista 3D- CkeckBox Text : crea uno testo in modo text con il testo ShapeString
- New path : altro path per i files font
20.00
: dimensione del testo su la finestra della macro- Origin : ritorna al repertorio sistema delle font
Script
L'icona per la barra degli strumenti
Macro Macro Fonts Win10 PYMP.FCMacro
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
"""
***************************************************************************
* Copyright (c) 2019 <mario52> *
* *
* This file is a supplement to the FreeCAD CAx development system. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License (LGPL) *
* as published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* for detail see the LICENCE text file. *
* *
* This software is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this macro; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
* USA *
***************************************************************************
* WARNING! All changes in this file will be lost and *
* may cause malfunction of the program *
***************************************************************************
"""
#Macro_Fonts_Win10_PYMP 10/05/2019
#
###############################################################################################################################
#OS: Windows 10 #OS: Windows 10 #OS: Windows 10
#Word size of OS: 64-bit #Word size of OS: 64-bit #Word size of OS: 64-bit
#Word size of FreeCAD: 64-bit #Word size of FreeCAD: 64-bit #Word size of FreeCAD: 64-bit
#Version: 0.16.6706 (Git) #Version: 0.17.13541 (Git) #Version: 0.18.16093 (Git)
#Build type: Release #Build type: Release #Build type: Release
#Branch: releases/FreeCAD-0-16 #Branch: releases/FreeCAD-0-17 #Branch: releases/FreeCAD-0-18
#Hash: f86a4e411ff7848dea98d7242f43b7774bee8fa0#Hash: 9948ee4f1570df9216862a79705afb367b2c6ffb#Hash: 690774c0effe4fd7b8d2b5e2fb2b8c8d145e21ce
#Python version: 2.7.8 #Python version: 2.7.14 #Python version: 2.7.14
#Qt version: 4.8.7 #Qt version: 4.8.7 #Qt version: 4.8.7
#Coin version: 4.0.0a #Coin version: 4.0.0a #Coin version: 4.0.0a
#OCC version: 6.8.0.oce-0.17 #OCC version: 7.2.0 #OCC version: 7.2.0
###############################################################################################################################
#OS: Windows 10
#Word size of OS: 64-bit
#Word size of FreeCAD: 64-bit
#Version: 0.19.16523 (Git)
#Build type: Release
#Branch: master
#Hash: 9b3ec233c8b21e0df66fada487cd10f471d60cac
#Python version: 3.6.6
#Qt version: 5.6.2
#Coin version: 4.0.0a
#OCC version: 7.3.0
###############################################################################################################################
__title__ = "Macro_Fonts_Win10_PYMP"
__author__ = "Mario52"
__url__ = "http://www.freecadweb.org/index-fr.html"
__version__ = "01.00"
__date__ = "2019/05/10" #YYYY/MM/DD
#
#import PySide2
#from PySide2 import QtGui ,QtCore
#from PySide2.QtGui import *
#from PySide2.QtCore import *
import PySide
from PySide import QtGui ,QtCore
from PySide.QtGui import *
from PySide.QtCore import *
import Draft, Part, PartGui, FreeCADGui, FreeCAD
from FreeCAD import Base
import math
from math import sqrt, pi, sin, cos, asin
import re
import operator
from operator import itemgetter, attrgetter, methodcaller # pour sort
Gui = FreeCADGui
App = FreeCAD
import os, time, sys
import platform
#import glob
#files_TTF = glob.glob(self.pathFont + "/*.TTF")
##################################
import matplotlib
import matplotlib.font_manager
import matplotlib.font_manager as fontman
import matplotlib.font_manager as fontconfig
from matplotlib.font_manager import FontProperties
#from matplotlib.ft2font import FT2Font
##################################
global ui ; ui = ""
global newPolicePath
global PolicePath
if platform.system() == "Windows" :
PolicePath = "C:/Windows/Fonts/ARIAL.TTF"
elif platform.system() == "Linux" :
PolicePath = "/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-M.ttf"
elif platform.system() == "Darwin":
PolicePath = "/Library/Fonts/Arial.ttf"
else:
PolicePath = "C:/Windows/Fonts/ARIAL.TTF"
nomPolice = os.path.basename(PolicePath).split('.')[0]
newPolicePath = os.path.dirname(PolicePath).split('.')[0]
#### Config Begin #########################################
# # https://en.wikipedia.org/wiki/Web_colors
global setColorTTF ; setColorTTF = "blue" # .TTF color by "name" or hexa "#0000FF"
global setColorFON ; setColorFON = "orange" # .FON color by "name" or hexa "#FFA500"
global setColorOTF ; setColorOTF = "green" # .OTF color by "name" or hexa "#008000"
global setColorPOL ; setColorPOL = "black" # .OTHER color by "name" or hexa "#000000"
#####
global switchModeTextList; switchModeTextList= 1 # 0 = mode text normal (et noir) coupe le switchFontComBox
# 1 = permet le switchFontComBox 0/1
#####
global switchFontComBox ; switchFontComBox = 1 # 0 = texte (en couleur) dans liste ComboBox plus rapide
# 1 = fontFamily dans liste ComboBox plus lent mais plus beau!
#####
global setSystemFonts ; setSystemFonts = 1 # 0 = matplotlib.font_manager.findSystemFonts("C:/", "ttf")
# fait toutes les fontes (dans tous les dossiers et sous dossiers du DD) time !!
# 1 = fontman.findSystemFonts(self.pathFont)
# fait toutes les fontes du repertoire (et dans tous les sous dossiers)
#####
global seTtextAlignement ; seTtextAlignement = 0 # 0 = AlignLeft (default)
# 1 = AlignCenter
# 2 = AlignRight
#####
#### Config End ###########################################
setIconTTF = [
"16 16 6 1",
" c None",
". c #204A87",
"+ c None",
"@ c #729FCF",
"# c #CC0000",
"$ c #EDD400",
".+++++++++++@@@@",
".++++++++@+@++@@",
".++#####++++@@+@",
".+++$#$$$++@+@+@",
".++++#$+++++++@+",
".++++#$#####++++",
".++++#$+$#$$$+++",
".++++#$++#$+++++",
".@++++$++#$+###+",
".@@++++++#$+#$$$",
"..@@+++++#$+#$++",
"...@@+++++$+###+",
"....@@++++++#$$$",
".....@@+++++#$++",
"......@@+++++$++",
"................"]
setIconFON = [
"16 16 6 1",
" c None",
". c #204A87",
"+ c None",
"@ c #F57900",
"# c #CC0000",
"$ c #EDD400",
".+++++++++++@@@@",
".++++++++@+@++@@",
".++###++++++@@+@",
".++#$$$++++@+@+@",
".++#$+++++++++@+",
".++###+###++++++",
".++#$$$#$#$+++++",
".++#$++#$#$+++++",
".@++$++#$#$##+#+",
".@@++++#$#$##$#$",
"..@@+++###$#$##$",
"...@@+++$$$#$##$",
"....@@+++++#$+#$",
".....@@++++#$+#$",
"......@@++++$++$",
"................"]
setIconOTF = [
"16 16 6 1",
" c None",
". c #204A87",
"+ c None",
"@ c #4E9A06",
"# c #CC0000",
"$ c #EDD400",
".+++++++++++@@@@",
".++++++++@+@++@@",
".++###++++++@@+@",
".++#$#$++++@+@+@",
".++#$#$+++++++@+",
".++#$#$###++++++",
".++#$#$+#$$+++++",
".++###$+#$++++++",
".@++$$$+#$+###++",
".@@+++++#$+#$$$+",
"..@@++++#$+#$+++",
"...@@++++$+###++",
"....@@+++++#$$$+",
".....@@++++#$+++",
"......@@++++$+++",
"................"]
setIconPOL = [
"16 16 12 1",
" c None",
". c #204A87",
"+ c None",
"@ c #06989A",
"# c #73D216",
"$ c #000000",
"% c #75507B",
"& c #729FCF",
"* c #CC0000",
"= c #F57900",
"- c #EDD400",
"; c #4E9A06",
".+++++++++++@#$%",
".++++++++$+#++&$",
".++***++++++=@+%",
".++*-*-++++*+&+$",
".++*-*-+++++++*+",
".++***-***++++++",
".++*---*-*-+++++",
".++*-++*-*-+++++",
".$++-++*-*-*++++",
".*@++++*-*-*-+++",
"..#*+++***-*-+++",
"...;#+++---*-+++",
"....%=+++++*-+++",
".....;$++++****+",
"......@%++++----",
"................"]
def createSpace(texte): # detecte majuscule et ajoute un espace devant la lettre
# return createSpace(TexTe) = Tex Te , if createSpace(TEXTE) = TEXTE
if texte.isupper():
stringSpace = texte
else:
try:
stringSpace = texte[0]
for i in texte[1:]:
if re.search(r"[A-Z]", i): i = " " + i
stringSpace += i
except Exception:
stringSpace = texte
return stringSpace
def family(chaine):
# return family(chaine)[1] = Family , family(chaine)[2] = typeCar (form [a, b, c ...]
famille = typeCar = ""
try:
if chaine.find('-') != -1:
famille = chaine[:chaine.find('-')]
typeCar = chaine[chaine.find('-')+1:]
else:
famille = chaine
typeCar = ""
except Exception:
famille = chaine
typeCar = ""
typeCar = str(createSpace(typeCar)).split()
return [createSpace(famille), typeCar]
class Ui_MainWindow(object):
def __init__(self ):
self.window = MainWindow
##path###############################################################
#self.path = FreeCAD.ConfigGet("AppHomePath") # path FreeCAD installation
#self.path = FreeCAD.ConfigGet("UserAppData") # path FreeCAD User data
#self.path = "your path" # your directory path
param = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro")# macro path
self.path = param.GetString("MacroPath","") + "/" # macro path
self.path = self.path.replace("\\","/") # convert the "\" to "/"
#FreeCAD.Console.PrintMessage( "Path for the icons : " , self.path )#
#####################################################################
####font textEdit
self.nomPolice = "Arial"
self.FontTextSize = 20
self.fonteComp = ""
self.font = QtGui.QFont()
####font textEdit
self.FontSize = 10.0
self.red = (204.0 / 255.0)
self.green = (204.0 / 255.0)
self.blue = (204.0 / 255.0)
self.alpha = 1.0 # 1.0 = visibility max (opacity)
####global font
self.fontGlobal_08 = QtGui.QFont() #
self.fontGlobal_08.setFamily("Arial") #
self.fontGlobal_08.setPointSize(8) #
####global font
self.tableau = [] #Index (), [chemin plus nom fichier (nomPathPolice), nom sans extension (nomSimple), nomSimpleExt (nomSimple + Ext)]
self.index = 0 #Index ()
##########################
def searchFont(self,pathSearch):
global setSystemFonts
global seTtextAlignement
global switchFontComBox
global switchModeTextList
files_All_Fonts = ""
##https://matplotlib.org/_modules/matplotlib/font_manager.html
if setSystemFonts == 0:
files_All_Fonts = matplotlib.font_manager.findSystemFonts(pathSearch, "ttf") # fait toutes les fontes ? ()
else:
files_All_Fonts = fontman.findSystemFonts(pathSearch) # fait toutes les fontes (et dans tous les sous dossiers)
if len(files_All_Fonts) > 0:
self.tableau = []
self.index = 0
for fonte in files_All_Fonts:
####
nomPathPolice = nomFichier = nomSimpleExt = nomSimple = nomExtension = nameName = ""
nomPathPolice = fonte.replace("\\","/") # convert the "\" to "/"
nomFichier = nomPathPolice.split("/") # complet split
nomSimpleExt = nomFichier[-1] # nom avec extension
nomSimple = nomFichier[-1][:-4] # nom sans extension
nomExtension = nomSimpleExt[nomSimpleExt.rfind('.')+1:].upper() # extension
####
try:
# nameFamily = matplotlib.font_manager.FontProperties(fname=fonte).get_family() ##['sans-serif']
# nameStyle = matplotlib.font_manager.FontProperties(fname=fonte).get_style() #normal
# nameVariant = matplotlib.font_manager.FontProperties(fname=fonte).get_variant() #normal
# nameWeight = matplotlib.font_manager.FontProperties(fname=fonte).get_weight() #normal
# nameStretch = matplotlib.font_manager.FontProperties(fname=fonte).get_stretch() #normal
# nameFileComp = matplotlib.font_manager.FontProperties(fname=fonte).get_file() ##c:\windows\fonts\NotoNaskhArabicUI-Regular.ttf
# nameSize = matplotlib.font_manager.FontProperties(fname=fonte).get_size() #10.0
nameName = matplotlib.font_manager.FontProperties(fname=fonte).get_name() ##Noto Naskh Arabic UI
# nameSizePoint = matplotlib.font_manager.FontProperties(fname=fonte).get_size_in_points() #10.0
# nameSlant = matplotlib.font_manager.FontProperties(fname=fonte).get_slant() #normal
# namePattern = matplotlib.font_manager.FontProperties(fname=fonte).get_fontconfig_pattern() #:family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:file=c:\windows\fonts\NotoNaskhArabicUI-Regular.ttf:size=10.0
except Exception:
nameFamily = nameStyle = nameVariant = nameWeight = nameStretch = nameFileComp = nameSize = nameName = nameSizePoint = nameSlant = namePattern = ""
####
if nameName == "" :
nameName = nomSimple
self.tableau.append([0, nomPathPolice, nomSimple, nomSimpleExt.upper(), nomExtension.upper(), nameName])
self.tableau = sorted(self.tableau, key=itemgetter(3)) # sorted by nomSimple.upper()
try:
for line in range(len(self.tableau)): # enleve les doubles (bon)
if self.tableau[line][2] == self.tableau[line + 1][2]: # enleve les doubles (bon)
del(self.tableau[line + 1]) # enleve les doubles (bon)
except Exception:
None
self.comboBoxPy.clear()
for line in range(len(self.tableau)):
try:
# self.tableau[line][0] = line # ajoute le numero de ligne
if self.tableau[line][2].upper() == "ARIAL": # detecte la fonte de base
self.index = line
####Section common color and font begin ######################
model = self.comboBoxPy.model()
if switchModeTextList == 1:
if self.tableau[line][4] == "TTF":
item = QtGui.QStandardItem(QtGui.QPixmap(setIconTTF), str(line))
item.setForeground(QtGui.QColor(setColorTTF))
elif self.tableau[line][4] == "FON":
item = QtGui.QStandardItem(QtGui.QPixmap(setIconFON), str(line))
item.setForeground(QtGui.QColor(setColorFON))
elif self.tableau[line][4] == "OTF":
item = QtGui.QStandardItem(QtGui.QPixmap(setIconOTF), str(line))
item.setForeground(QtGui.QColor(setColorOTF))
else:
item = QtGui.QStandardItem(QtGui.QPixmap(setIconPOL), str(line))
item.setForeground(QtGui.QColor(setColorPOL))
else:
self.comboBoxPy.addItem(self.tableau[line][2])
if seTtextAlignement == 0:
item.setTextAlignment(QtCore.Qt.AlignLeft)
elif seTtextAlignement == 1:
item.setTextAlignment(QtCore.Qt.AlignCenter)
elif seTtextAlignement == 2:
item.setTextAlignment(QtCore.Qt.AlignRight)
####Section item color and font end ##########################
####Section setfont Family switchFontComBox begin#############
if switchFontComBox == 1:
typeCar = font = ""
font = QtGui.QFont()
#font = item.font()
typeCar = family(self.tableau[line][2])[1]
font.setBold(False)
font.setItalic(False)
if len(typeCar) > 0:
for option in typeCar:
if option == "Bold":
font.setBold(True)
if (option == "Italic") or (option == "It") or (option == "Slanted"):
font.setItalic(True)
if option == "Oblique":
font.setItalic(True)
#'Bold''Regular''Slanted''Italic''Medium''Extra''Light''Condensed''Black''It''Semibold'
font.setFamily(self.tableau[line][5])
font.setPixelSize(15)
item.setFont(font)
####Section setfont Family switchFontComBox end###############
model.appendRow(item)
self.comboBoxPy.setItemText(line, self.tableau[line][2])
####Section common color and font end#########################
except Exception:
FreeCAD.Console.PrintMessage("searchFont()")
None
#for i in self.tableau: print(i)
MainWindow.setWindowTitle(__title__ + " (" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") (" + __version__ + " : " + __date__ + ")")
self.lineEdit_NameFile.setText(self.tableau[self.index][1])
self.textEdit.setToolTip("Your text here" + "\n"
"Title (" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") = (index file, number file font)" + "\n"
"Version " + __version__ + " : " + __date__ + ") of " + __title__ + ")" + "\n\n"
"It is possible that a font is not visible in its normal design," + "\n"
"but it is normal in the 3DView, sorry !")
self.comboBoxPy.setCurrentIndex(self.index)
self.fonteComp = self.tableau[self.index][1]
####
self.textEditFont = QtGui.QFont() #
self.textEditFont.setFamily(self.tableau[self.index][5]) #
self.textEditFont.setPointSize(20) #
self.textEdit.setFont(self.textEditFont) #
####
##########################
def setupUi(self, MainWindow):
global setSystemFonts
global setColorTTF
global setColorFON
global setColorOTF
global setColorPOL
global seTtextAlignement
global switchFontComBox
global switchModeTextList
global ui
self.window = MainWindow
MainWindow.setObjectName(("MainWindow"))
MainWindow.resize(470, 250)
MainWindow.setMinimumSize(QtCore.QSize(470, 250))
# MainWindow.setMaximumSize(QtCore.QSize(470, 250))
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(("centralwidget"))
self.textEdit = QtGui.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(20, 20, 426, 90))
self.textEdit.setObjectName(("textEdit"))
self.textEdit.setText("Your text here")
# self.textEdit.setToolTip("Your text here" + "\n"
# "Title (" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") = (index file, number file font)" + "\n"
# "Version " + __version__ + " : " + __date__ + ") of " + __title__ + ")" + "\n\n"
# "It is possible that a font is not visible in its normal design," + "\n"
# "but it is normal in the 3DView, sorry !")
self.lineEdit_NameFile = QtGui.QLineEdit(self.centralwidget)
self.lineEdit_NameFile.setGeometry(QtCore.QRect(20, 125, 426, 22))
self.lineEdit_NameFile.setObjectName("lineEdit_NameFile")
# self.lineEdit_NameFile.setText(self.tableau[self.index][1])
self.lineEdit_NameFile.setToolTip("Complete path and name of Font file")
######################
self.comboBoxPy = QtGui.QComboBox(self.centralwidget)
self.comboBoxPy.setGeometry(QtCore.QRect(20, 155, 426, 22))
self.comboBoxPy.setObjectName("comboBoxPy")
self.comboBoxPy.setToolTip("Choice your Font")
####
#self.pathFont = PolicePath[:-10]
self.pathFont = PolicePath[:len(PolicePath)-(PolicePath[::-1].index("/"))-1]
####
ui.searchFont(self.pathFont)
verPython = sys.version_info
if verPython.major < 3:
self.comboBoxPy.currentIndexChanged.connect(self.on_fontComboBoxPython)
else: # Qt 5
QtCore.QObject.connect(self.comboBoxPy, QtCore.SIGNAL("currentIndexChanged(int)"), self.on_fontComboBoxPython)
self.PB_OK = QtGui.QPushButton(self.centralwidget)
self.PB_OK.setGeometry(QtCore.QRect(20, 185, 75, 23))
self.PB_OK.setToolTip("Validate")
self.PB_OK.setFont(self.fontGlobal_08)
self.PB_OK.setObjectName(("PB_OK"))
self.PB_OK.clicked.connect(self.on_PB_OK) # ""
self.PB_color = QtGui.QPushButton(self.centralwidget)
self.PB_color.setGeometry(QtCore.QRect(104, 185, 75, 23))
self.PB_color.setToolTip("Text color")
self.PB_color.setFont(self.fontGlobal_08)
self.PB_color.setObjectName(("PB_color"))
self.PB_color.clicked.connect(self.on_PB_color) # ""
self.doubleSpinBox_1 = QtGui.QDoubleSpinBox(self.centralwidget)
self.doubleSpinBox_1.setGeometry(QtCore.QRect(187, 185, 60, 23))
self.doubleSpinBox_1.setMinimum(0.0)
self.doubleSpinBox_1.setMaximum(10000.0)
self.doubleSpinBox_1.setSingleStep(1.0)
self.doubleSpinBox_1.setValue(self.FontSize)
self.doubleSpinBox_1.setFont(self.fontGlobal_08)
self.doubleSpinBox_1.setToolTip("Dimension of the Shape")
self.doubleSpinBox_1.setObjectName("doubleSpinBox_1")
self.doubleSpinBox_1.valueChanged.connect(self.on_doubleSpinBox_1_valueChanged)# ""
self.checkBox_1 = QtGui.QCheckBox(self.centralwidget)
self.checkBox_1.setGeometry(QtCore.QRect(255, 185, 50, 23))
self.checkBox_1.setFont(self.fontGlobal_08)
self.checkBox_1.setToolTip("Create text")
self.checkBox_1.setObjectName(("checkBox_1"))
self.checkBox_1.setChecked(False)
# self.checkBox_1.clicked.connect(self.on_checkBox_1_clicked)
self.doubleSpinBox_2 = QtGui.QDoubleSpinBox(self.centralwidget)
self.doubleSpinBox_2.setGeometry(QtCore.QRect(387, 185, 60, 23))
self.doubleSpinBox_2.setMinimum(0.0)
self.doubleSpinBox_2.setMaximum(10000.0)
self.doubleSpinBox_2.setSingleStep(1.0)
self.doubleSpinBox_2.setValue(self.FontTextSize)
self.doubleSpinBox_2.setFont(self.fontGlobal_08)
self.doubleSpinBox_2.setToolTip("Dimension of text in window macro")
self.doubleSpinBox_2.setObjectName("doubleSpinBox_1")
self.doubleSpinBox_2.valueChanged.connect(self.on_doubleSpinBox_2_valueChanged)#connect on def "on_doubleSpinBox_2_valueChanged"
self.PB_newPathFont = QtGui.QPushButton(self.centralwidget)
self.PB_newPathFont.setGeometry(QtCore.QRect(305, 185, 75, 23))
self.PB_newPathFont.setToolTip("New directory font")
self.PB_newPathFont.setFont(self.fontGlobal_08)
self.PB_newPathFont.setObjectName(("PB_newPathFont"))
self.PB_newPathFont.clicked.connect(self.on_PB_newPathFont) # ""
self.PB_systemPath = QtGui.QPushButton(self.centralwidget)
self.PB_systemPath.setGeometry(QtCore.QRect(305, 215, 75, 23))
self.PB_systemPath.setToolTip("Return origin font system")
self.PB_systemPath.setFont(self.fontGlobal_08)
self.PB_systemPath.setObjectName(("PB_systemPath"))
self.PB_systemPath.clicked.connect(self.on_PB_systemPath) # ""
self.line = QtGui.QFrame(self.centralwidget)
self.line.setGeometry(QtCore.QRect(20, 220, 280, 16))
self.line.setFrameShape(QtGui.QFrame.HLine)
self.line.setFrameShadow(QtGui.QFrame.Sunken)
self.line.setObjectName("line")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(__title__ + " (" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") (" + __version__ + " : " + __date__ + ")")
MainWindow.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint) # PySide cette fonction met la fenetre en avant
MainWindow.setWindowIcon(QtGui.QIcon(self.path + "Macro_Fonts_Win10_PYMP.png"))# change l'icone de la fenetre principale
print(self.path)
self.PB_OK.setText("Ok")
self.PB_color.setText("Color")
self.checkBox_1.setText("Text")
self.PB_newPathFont.setText("New path")
self.PB_systemPath.setText("Origin")
def on_doubleSpinBox_1_valueChanged(self,value): #
self.FontSize = value
def on_doubleSpinBox_2_valueChanged(self,value):
self.FontTextSize = value
self.font.setPointSize(self.FontTextSize)
self.textEdit.setCurrentFont(self.font)
self.textEdit.setFont(self.font)
def on_fontComboBoxPython(self,indeX): # 0: for fontComboBoxPython
self.index = indeX
MainWindow.setWindowTitle(__title__ + " (" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") (" + __version__ + " : " + __date__ + ")")
self.lineEdit_NameFile.setText(self.tableau[self.index][1])
famille = typeCar = self.font = ""
self.font = QtGui.QFont()
typeCar = family(self.tableau[self.index][2])[1]
self.font.setBold(False)
self.font.setItalic(False)
if len(typeCar) > 0:
for option in typeCar:
if option == "Bold":
self.font.setBold(True)
if (option == "Italic") or (option == "It") or (option == "Slanted"):
self.font.setItalic(True)
if option == "Oblique":
self.font.setItalic(True)
#'Bold''Regular''Slanted''Italic''Medium''Extra''Light''Condensed''Black''It''Semibold'#+
self.font.setFamily(self.tableau[self.index][5])
self.font.setPointSize(self.FontTextSize)
self.textEdit.setCurrentFont(self.font)
self.textEdit.setFont(self.font)
####
self.fonteComp = self.tableau[self.index][1]
# FreeCAD.Console.PrintMessage(str(self.index) + " , " + self.tableau[self.index][1] + " , " + self.tableau[self.index][2] + " , ' " + famille + "' , ' " + typeCar + " ' \n")
def on_PB_OK(self):
global PolicePath
try:
texte = unicode(self.textEdit.toPlainText()) # ori
except Exception: #Qt version: 5.6.2
texte = self.textEdit.toPlainText() # Qt 5.6.2 error unicode
if texte != "":
tx = Draft.makeShapeString(String=texte, FontFile = self.fonteComp, Size = self.FontSize, Tracking = 0.0)
tx.Label = self.tableau[self.index][2]
tx.ViewObject.ShapeColor = (self.red, self.green, self.blue) # color of ShapeString
## section Texte
if self.checkBox_1.isChecked():
tx2 = Draft.makeText([texte],point=FreeCAD.Vector(0.0,0.0,0.0))
tx2.ViewObject.FontName = self.tableau[self.index][1]
tx2.ViewObject.TextColor = (self.red, self.green, self.blue) # color of text
tx2.ViewObject.FontSize = self.FontSize
tx2.Label = self.tableau[self.index][2]
FreeCAD.Console.PrintMessage("___________________" + "\n")
FreeCAD.Console.PrintMessage(texte + "\n")
FreeCAD.Console.PrintMessage(self.tableau[self.index][1] + "\n")
FreeCAD.Console.PrintMessage(self.tableau[self.index][2] + "\n")
FreeCAD.Console.PrintMessage(str(self.FontSize) + "\n")
FreeCAD.Console.PrintMessage("___________________" + "\n")
FreeCAD.ActiveDocument.recompute()
else:
FreeCAD.Console.PrintMessage("Not string" + "\n")
def on_PB_color(self):
self.PB_color.setStyleSheet("background-color: QPalette.Base")
self.window.hide()
couleur = QtGui.QColorDialog.getColor()
if couleur.isValid():
self.red = couleur.redF()
self.green = couleur.greenF()
self.blue = couleur.blueF()
self.alpha = couleur.alphaF()
self.PB_color.setStyleSheet("background-color: " + couleur.name())
self.window.show()
def on_PB_newPathFont(self):
global ui
global newPolicePath
global setSystemFonts
newPolicePath = str(QtGui.QFileDialog.getExistingDirectory(None, "Select new font directory", newPolicePath, QtGui.QFileDialog.ShowDirsOnly))
if newPolicePath:
ui.searchFont(newPolicePath)
setSystemFonts = 1
def on_PB_systemPath(self):
global ui
global setSystemFonts
setSystemFonts = 0
ui.searchFont(self.pathFont)
#______________________________________________________________________________________
doc = FreeCAD.ActiveDocument
if doc == None:
doc = FreeCAD.newDocument()
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
Link
Il foro TTF Text Font
Le mie macro sopra mario52a gists
Version
Version = "00.01" Date = "2019/05/10"